Files
nixos-config/home/terminal/software/opencode/_skills.nix
T
2026-03-31 16:53:11 +02:00

138 lines
3.5 KiB
Nix

{pkgs}: let
fetchSkill = {
name,
owner,
repo,
rev,
path,
hash,
}:
pkgs.stdenv.mkDerivation {
name = "opencode-skill-${name}";
src = pkgs.fetchFromGitHub {
inherit owner repo rev hash;
};
installPhase = ''
mkdir -p $out
cp ${path} $out/SKILL.md
'';
};
fetchSkillDir = {
name,
owner,
repo,
rev,
basePath,
hash,
}:
pkgs.stdenv.mkDerivation {
name = "opencode-skill-${name}";
src = pkgs.fetchFromGitHub {
inherit owner repo rev hash;
};
installPhase = ''
mkdir -p $out
cp -r ${basePath}/* $out/
'';
};
localSkill = {
name,
path,
}:
pkgs.stdenv.mkDerivation {
name = "opencode-skill-${name}";
src = path;
installPhase = ''
mkdir -p $out
cp SKILL.md $out/SKILL.md
'';
};
skills = {
technical-writing = fetchSkill {
name = "technical-writing";
owner = "proffesor-for-testing";
repo = "agentic-qe";
rev = "990aee4a6a747f2db0ef77a2f67d58462f61e608";
path = ".claude/skills/technical-writing/SKILL.md";
hash = "sha256-PdIVhLp5/quigz325ZeG4NaWUgPsD3PgykSD61FFjLo=";
};
blog-post-writer = fetchSkillDir {
name = "blog-post-writer";
owner = "nicknisi";
repo = "dotfiles";
rev = "f1be3f2b669c8e3401b589141f9a56651e45a1a7";
basePath = "home/.claude/skills/blog-post-writer";
hash = "sha256-U1GqtQMgzimGbbDJpqIGrBnu5HiSTZDETAKFhijMU9s=";
};
frontend-design = fetchSkill {
name = "frontend-design";
owner = "anthropics";
repo = "claude-code";
rev = "d213a74fc8e3b6efded52729196e0c2d4c3abb3e";
path = "plugins/frontend-design/skills/frontend-design/SKILL.md";
hash = "sha256-SleLxTUjM7HNHc78YklikuFwix2DPaTDIACUnsSQCrA=";
};
flutter-development = fetchSkill {
name = "flutter-development";
owner = "aj-geddes";
repo = "useful-ai-prompts";
rev = "ce8c39c22df0e0e64c853817a7f8d79f0ea331e2";
path = "skills/flutter-development/SKILL.md";
hash = "sha256-BCvO+P2URoTiUOSV8PTq62ckyxXLEHtIml0EkZGRbK8=";
};
writing-documentation = fetchSkillDir {
name = "writing-documentation";
owner = "dhruvbaldawa";
repo = "ccconfigs";
rev = "451b604718d39fcc2c008d22e550bdf60c7115da";
basePath = "essentials/skills/writing-documentation";
hash = "sha256-7V1xG2FmzqWdnWmVV6WWKBAvY6QHWo+UKzh0Uu/Xg/w=";
};
changelog-generator = fetchSkill {
name = "changelog-generator";
owner = "composioHQ";
repo = "awesome-claude-skills";
rev = "362d35428562ad05d1faa1767abaf39d6e3a8e7a";
path = "changelog-generator/SKILL.md";
hash = "sha256-tSEO0h9J3lPVePFoy7A7c1K6umNNE/21/2RbaJD4Abc=";
};
readme-generator = fetchSkill {
name = "readme-generator";
owner = "Shpigford";
repo = "skills";
rev = "bdd6f84e38e460246079dd44755c587522ddf60e";
path = "readme/SKILL.md";
hash = "sha256-M6ZSxwrq9tGkxJi6BVoSRh6+fPlQPUmZVg595wldsNI=";
};
memory-aware-architect = localSkill {
name = "memory-aware-architect";
path = ./skills/memory-aware-architect;
};
};
allSkills = pkgs.runCommand "opencode-skills" {} ''
mkdir -p $out/skill
${pkgs.lib.concatStringsSep "\n" (pkgs.lib.mapAttrsToList (name: skill: ''
mkdir -p $out/skill/${name}
cp -r ${skill}/* $out/skill/${name}/
'')
skills)}
'';
in {
packages = [];
skillsSource = allSkills;
}