feat: add separate skill lists per target (claudeCodeSkills, openCodeSkills)
This commit is contained in:
parent
ec5386cf57
commit
35a357eb9d
|
|
@ -4,15 +4,9 @@ with lib;
|
|||
|
||||
let
|
||||
cfg = config.services.ai-skills;
|
||||
in {
|
||||
options.services.ai-skills = {
|
||||
enable = mkEnableOption "AI agent skills for Claude Code and OpenCode";
|
||||
|
||||
skills = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
description = ''
|
||||
List of skills to deploy. Available skills:
|
||||
skillsList = ''
|
||||
Available skills:
|
||||
- niri-window-capture: Invisibly capture window screenshots
|
||||
- screenshot-latest: Find latest screenshots
|
||||
- tufte-press: Generate study card JSON
|
||||
|
|
@ -22,8 +16,9 @@ in {
|
|||
- web-search: Search the web via Claude
|
||||
- web-research: Deep web research with multiple backends
|
||||
'';
|
||||
example = [ "worklog" "web-search" ];
|
||||
};
|
||||
in {
|
||||
options.services.ai-skills = {
|
||||
enable = mkEnableOption "AI agent skills for Claude Code and OpenCode";
|
||||
|
||||
skillsPath = mkOption {
|
||||
type = types.path;
|
||||
|
|
@ -31,24 +26,26 @@ in {
|
|||
description = "Path to skills repository (e.g., ~/proj/skills/skills)";
|
||||
};
|
||||
|
||||
enableClaudeCode = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Deploy skills to Claude Code (~/.claude/skills/)";
|
||||
# Per-target skill lists
|
||||
claudeCodeSkills = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
description = "Skills to deploy to Claude Code (~/.claude/skills/). ${skillsList}";
|
||||
example = [ "worklog" "niri-window-capture" ];
|
||||
};
|
||||
|
||||
enableOpenCode = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Deploy skills to OpenCode (~/.config/opencode/skills/)";
|
||||
openCodeSkills = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
description = "Skills to deploy to OpenCode (~/.config/opencode/skills/). ${skillsList}";
|
||||
example = [ "worklog" "web-search" ];
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
# Deploy skills to Claude Code
|
||||
home.file = mkMerge [
|
||||
# Claude Code skills
|
||||
(mkIf cfg.enableClaudeCode (
|
||||
(mkIf (cfg.claudeCodeSkills != []) (
|
||||
builtins.listToAttrs (
|
||||
map (skillName: {
|
||||
name = ".claude/skills/${skillName}";
|
||||
|
|
@ -56,12 +53,12 @@ in {
|
|||
source = "${cfg.skillsPath}/${skillName}";
|
||||
recursive = true;
|
||||
};
|
||||
}) cfg.skills
|
||||
}) cfg.claudeCodeSkills
|
||||
)
|
||||
))
|
||||
|
||||
# OpenCode skills
|
||||
(mkIf cfg.enableOpenCode (
|
||||
(mkIf (cfg.openCodeSkills != []) (
|
||||
builtins.listToAttrs (
|
||||
map (skillName: {
|
||||
name = ".config/opencode/skills/${skillName}";
|
||||
|
|
@ -69,7 +66,7 @@ in {
|
|||
source = "${cfg.skillsPath}/${skillName}";
|
||||
recursive = true;
|
||||
};
|
||||
}) cfg.skills
|
||||
}) cfg.openCodeSkills
|
||||
)
|
||||
))
|
||||
];
|
||||
|
|
|
|||
Loading…
Reference in a new issue