feat(home-manager): place skills for Pi
This commit is contained in:
@@ -87,15 +87,38 @@ let
|
||||
programs.agents.skills = [ skillAlpha ];
|
||||
};
|
||||
|
||||
# Claude Code disabled, with a skill still selected.
|
||||
claudeCodeOff = homeFiles {
|
||||
programs.claude-code.enable = false;
|
||||
# Pi enabled and Claude Code disabled.
|
||||
piOnly = homeFiles {
|
||||
programs.pi-coding-agent.enable = true;
|
||||
programs.agents.skills = [ skillAlpha ];
|
||||
};
|
||||
|
||||
# An empty selection with Claude Code enabled.
|
||||
# Both supported harnesses enabled.
|
||||
bothHarnesses = homeFiles {
|
||||
programs.claude-code.enable = true;
|
||||
programs.pi-coding-agent.enable = true;
|
||||
programs.agents.skills = [ skillAlpha ];
|
||||
};
|
||||
|
||||
# A non-default Pi `configDir`, so the assertions can prove placement follows it
|
||||
# rather than a hardcoded `.pi/agent`.
|
||||
customPiConfigDir = homeFiles {
|
||||
programs.pi-coding-agent.enable = true;
|
||||
programs.pi-coding-agent.configDir = "/home/operator/.config/pi/agent";
|
||||
programs.agents.skills = [ skillAlpha ];
|
||||
};
|
||||
|
||||
# No compatible harness enabled, with a skill still selected.
|
||||
agentsOff = homeFiles {
|
||||
programs.claude-code.enable = false;
|
||||
programs.pi-coding-agent.enable = false;
|
||||
programs.agents.skills = [ skillAlpha ];
|
||||
};
|
||||
|
||||
# An empty selection with both supported harnesses enabled.
|
||||
emptySelection = homeFiles {
|
||||
programs.claude-code.enable = true;
|
||||
programs.pi-coding-agent.enable = true;
|
||||
programs.agents.skills = [ ];
|
||||
};
|
||||
in
|
||||
@@ -107,7 +130,10 @@ pkgs.runCommandLocal "skills-home-manager-module-check"
|
||||
attrSetSkills
|
||||
wholeDirSkills
|
||||
customConfigDir
|
||||
claudeCodeOff
|
||||
piOnly
|
||||
bothHarnesses
|
||||
customPiConfigDir
|
||||
agentsOff
|
||||
emptySelection
|
||||
;
|
||||
}
|
||||
@@ -142,13 +168,35 @@ pkgs.runCommandLocal "skills-home-manager-module-check"
|
||||
test ! -e "$customConfigDir/.claude/skills/sample-alpha" \
|
||||
|| fail "skill was placed under a hardcoded .claude, ignoring configDir"
|
||||
|
||||
echo "Claude Code disabled: no skill entry is written despite a selection"
|
||||
test ! -e "$claudeCodeOff/.claude/skills/sample-alpha" \
|
||||
|| fail "a skill was placed with claude-code disabled"
|
||||
echo "Pi enabled: selected skills land in Pi's global skills directory"
|
||||
test -f "$piOnly/.pi/agent/skills/sample-alpha/SKILL.md" \
|
||||
|| fail "selected skill did not land under Pi's configDir"
|
||||
test ! -e "$piOnly/.claude/skills/sample-alpha" \
|
||||
|| fail "a skill was placed for Claude Code when only Pi was enabled"
|
||||
|
||||
echo "both harnesses enabled: selected skills land in both global skills directories"
|
||||
test -f "$bothHarnesses/.claude/skills/sample-alpha/SKILL.md" \
|
||||
|| fail "selected skill did not land under Claude Code when both harnesses were enabled"
|
||||
test -f "$bothHarnesses/.pi/agent/skills/sample-alpha/SKILL.md" \
|
||||
|| fail "selected skill did not land under Pi when both harnesses were enabled"
|
||||
|
||||
echo "custom Pi configDir: placement follows configDir rather than a hardcoded .pi/agent"
|
||||
test -f "$customPiConfigDir/.config/pi/agent/skills/sample-alpha/SKILL.md" \
|
||||
|| fail "skill was not placed under Pi's configured configDir"
|
||||
test ! -e "$customPiConfigDir/.pi/agent/skills/sample-alpha" \
|
||||
|| fail "skill was placed under a hardcoded .pi/agent, ignoring configDir"
|
||||
|
||||
echo "agents disabled: no skill entry is written despite a selection"
|
||||
test ! -e "$agentsOff/.claude/skills/sample-alpha" \
|
||||
|| fail "a skill was placed with Claude Code disabled"
|
||||
test ! -e "$agentsOff/.pi/agent/skills/sample-alpha" \
|
||||
|| fail "a skill was placed with Pi disabled"
|
||||
|
||||
echo "empty selection: nothing is installed"
|
||||
test ! -e "$emptySelection/.claude/skills/sample-alpha" \
|
||||
|| fail "an unselected skill was placed"
|
||||
|| fail "an unselected skill was placed for Claude Code"
|
||||
test ! -e "$emptySelection/.pi/agent/skills/sample-alpha" \
|
||||
|| fail "an unselected skill was placed for Pi"
|
||||
|
||||
touch "$out"
|
||||
''
|
||||
|
||||
Reference in New Issue
Block a user