@chankov/agent-skills 0.2.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/{doctor.md → doctor-agent-skills.md} +1 -1
- package/.pi/extensions/agent-skills-update-check/README.md +4 -4
- package/.pi/prompts/{doctor.md → doctor-agent-skills.md} +1 -1
- package/.versions/0.2.0/.claude/commands/{doctor.md → doctor-agent-skills.md} +1 -1
- package/.versions/0.2.0/.pi/extensions/agent-skills-update-check/README.md +4 -4
- package/.versions/0.2.0/.pi/prompts/{doctor.md → doctor-agent-skills.md} +1 -1
- package/.versions/0.2.0/skills/guided-workspace-setup/SKILL.md +40 -2
- package/.versions/0.3.0/.claude/commands/build.md +18 -0
- package/.versions/0.3.0/.claude/commands/code-simplify.md +22 -0
- package/.versions/0.3.0/.claude/commands/design-agent.md +14 -0
- package/.versions/0.3.0/.claude/commands/doctor-agent-skills.md +13 -0
- package/.versions/0.3.0/.claude/commands/plan.md +16 -0
- package/.versions/0.3.0/.claude/commands/prime.md +22 -0
- package/.versions/0.3.0/.claude/commands/review.md +16 -0
- package/.versions/0.3.0/.claude/commands/setup-agent-skills.md +19 -0
- package/.versions/0.3.0/.claude/commands/ship.md +17 -0
- package/.versions/0.3.0/.claude/commands/spec.md +15 -0
- package/.versions/0.3.0/.claude/commands/test.md +19 -0
- package/.versions/0.3.0/.opencode/commands/as-build.md +17 -0
- package/.versions/0.3.0/.opencode/commands/as-code-simplify.md +16 -0
- package/.versions/0.3.0/.opencode/commands/as-design-agent.md +15 -0
- package/.versions/0.3.0/.opencode/commands/as-doctor-agent-skills.md +11 -0
- package/.versions/0.3.0/.opencode/commands/as-plan.md +16 -0
- package/.versions/0.3.0/.opencode/commands/as-prime.md +22 -0
- package/.versions/0.3.0/.opencode/commands/as-review.md +15 -0
- package/.versions/0.3.0/.opencode/commands/as-setup-agent-skills.md +11 -0
- package/.versions/0.3.0/.opencode/commands/as-ship.md +16 -0
- package/.versions/0.3.0/.opencode/commands/as-spec.md +16 -0
- package/.versions/0.3.0/.opencode/commands/as-test.md +21 -0
- package/.versions/0.3.0/.pi/agents/agent-chain.yaml +49 -0
- package/.versions/0.3.0/.pi/agents/bowser.md +19 -0
- package/.versions/0.3.0/.pi/agents/pi-pi/agent-expert.md +98 -0
- package/.versions/0.3.0/.pi/agents/pi-pi/cli-expert.md +41 -0
- package/.versions/0.3.0/.pi/agents/pi-pi/config-expert.md +63 -0
- package/.versions/0.3.0/.pi/agents/pi-pi/ext-expert.md +43 -0
- package/.versions/0.3.0/.pi/agents/pi-pi/keybinding-expert.md +134 -0
- package/.versions/0.3.0/.pi/agents/pi-pi/pi-orchestrator.md +57 -0
- package/.versions/0.3.0/.pi/agents/pi-pi/prompt-expert.md +70 -0
- package/.versions/0.3.0/.pi/agents/pi-pi/skill-expert.md +42 -0
- package/.versions/0.3.0/.pi/agents/pi-pi/theme-expert.md +40 -0
- package/.versions/0.3.0/.pi/agents/pi-pi/tui-expert.md +85 -0
- package/.versions/0.3.0/.pi/agents/teams.yaml +31 -0
- package/.versions/0.3.0/.pi/damage-control-rules.yaml +278 -0
- package/.versions/0.3.0/.pi/extensions/agent-skills-update-check/README.md +58 -0
- package/.versions/0.3.0/.pi/extensions/agent-skills-update-check/index.ts +161 -0
- package/.versions/0.3.0/.pi/extensions/agent-skills-update-check/package.json +6 -0
- package/.versions/0.3.0/.pi/extensions/chrome-devtools-mcp/README.md +39 -0
- package/.versions/0.3.0/.pi/extensions/chrome-devtools-mcp/index.ts +61 -0
- package/.versions/0.3.0/.pi/extensions/chrome-devtools-mcp/package.json +6 -0
- package/.versions/0.3.0/.pi/extensions/compact-and-continue/README.md +42 -0
- package/.versions/0.3.0/.pi/extensions/compact-and-continue/index.ts +120 -0
- package/.versions/0.3.0/.pi/extensions/compact-and-continue/package.json +6 -0
- package/.versions/0.3.0/.pi/extensions/mcp-bridge/README.md +46 -0
- package/.versions/0.3.0/.pi/extensions/mcp-bridge/index.ts +206 -0
- package/.versions/0.3.0/.pi/extensions/mcp-bridge/package.json +6 -0
- package/.versions/0.3.0/.pi/extensions/package-lock.json +1143 -0
- package/.versions/0.3.0/.pi/extensions/package.json +9 -0
- package/.versions/0.3.0/.pi/harnesses/agent-chain/README.md +37 -0
- package/.versions/0.3.0/.pi/harnesses/agent-chain/index.ts +795 -0
- package/.versions/0.3.0/.pi/harnesses/agent-chain/package.json +6 -0
- package/.versions/0.3.0/.pi/harnesses/agent-team/README.md +38 -0
- package/.versions/0.3.0/.pi/harnesses/agent-team/index.ts +732 -0
- package/.versions/0.3.0/.pi/harnesses/agent-team/package.json +6 -0
- package/.versions/0.3.0/.pi/harnesses/coms/README.md +36 -0
- package/.versions/0.3.0/.pi/harnesses/coms/index.ts +1595 -0
- package/.versions/0.3.0/.pi/harnesses/coms/package.json +6 -0
- package/.versions/0.3.0/.pi/harnesses/coms-net/README.md +46 -0
- package/.versions/0.3.0/.pi/harnesses/coms-net/index.ts +1637 -0
- package/.versions/0.3.0/.pi/harnesses/coms-net/package.json +6 -0
- package/.versions/0.3.0/.pi/harnesses/damage-control/README.md +38 -0
- package/.versions/0.3.0/.pi/harnesses/damage-control/index.ts +207 -0
- package/.versions/0.3.0/.pi/harnesses/damage-control/package.json +6 -0
- package/.versions/0.3.0/.pi/harnesses/damage-control-continue/README.md +37 -0
- package/.versions/0.3.0/.pi/harnesses/damage-control-continue/index.ts +234 -0
- package/.versions/0.3.0/.pi/harnesses/damage-control-continue/package.json +6 -0
- package/.versions/0.3.0/.pi/harnesses/minimal/README.md +27 -0
- package/.versions/0.3.0/.pi/harnesses/minimal/index.ts +32 -0
- package/.versions/0.3.0/.pi/harnesses/minimal/package.json +6 -0
- package/.versions/0.3.0/.pi/harnesses/package-lock.json +35 -0
- package/.versions/0.3.0/.pi/harnesses/package.json +9 -0
- package/.versions/0.3.0/.pi/harnesses/pi-pi/README.md +39 -0
- package/.versions/0.3.0/.pi/harnesses/pi-pi/index.ts +631 -0
- package/.versions/0.3.0/.pi/harnesses/pi-pi/package.json +6 -0
- package/.versions/0.3.0/.pi/harnesses/purpose-gate/README.md +27 -0
- package/.versions/0.3.0/.pi/harnesses/purpose-gate/index.ts +82 -0
- package/.versions/0.3.0/.pi/harnesses/purpose-gate/package.json +6 -0
- package/.versions/0.3.0/.pi/harnesses/session-replay/README.md +28 -0
- package/.versions/0.3.0/.pi/harnesses/session-replay/index.ts +214 -0
- package/.versions/0.3.0/.pi/harnesses/session-replay/package.json +6 -0
- package/.versions/0.3.0/.pi/harnesses/subagent-widget/README.md +36 -0
- package/.versions/0.3.0/.pi/harnesses/subagent-widget/index.ts +479 -0
- package/.versions/0.3.0/.pi/harnesses/subagent-widget/package.json +6 -0
- package/.versions/0.3.0/.pi/harnesses/system-select/README.md +39 -0
- package/.versions/0.3.0/.pi/harnesses/system-select/index.ts +165 -0
- package/.versions/0.3.0/.pi/harnesses/system-select/package.json +6 -0
- package/.versions/0.3.0/.pi/harnesses/tilldone/README.md +35 -0
- package/.versions/0.3.0/.pi/harnesses/tilldone/index.ts +724 -0
- package/.versions/0.3.0/.pi/harnesses/tilldone/package.json +6 -0
- package/.versions/0.3.0/.pi/harnesses/tool-counter/README.md +31 -0
- package/.versions/0.3.0/.pi/harnesses/tool-counter/index.ts +100 -0
- package/.versions/0.3.0/.pi/harnesses/tool-counter/package.json +6 -0
- package/.versions/0.3.0/.pi/harnesses/tool-counter-widget/README.md +27 -0
- package/.versions/0.3.0/.pi/harnesses/tool-counter-widget/index.ts +66 -0
- package/.versions/0.3.0/.pi/harnesses/tool-counter-widget/package.json +6 -0
- package/.versions/0.3.0/.pi/prompts/build.md +24 -0
- package/.versions/0.3.0/.pi/prompts/code-simplify.md +22 -0
- package/.versions/0.3.0/.pi/prompts/doctor-agent-skills.md +13 -0
- package/.versions/0.3.0/.pi/prompts/plan.md +16 -0
- package/.versions/0.3.0/.pi/prompts/review.md +16 -0
- package/.versions/0.3.0/.pi/prompts/setup-agent-skills.md +19 -0
- package/.versions/0.3.0/.pi/prompts/ship.md +17 -0
- package/.versions/0.3.0/.pi/prompts/spec.md +15 -0
- package/.versions/0.3.0/.pi/prompts/test.md +19 -0
- package/.versions/0.3.0/.pi/skills/bowser/SKILL.md +114 -0
- package/.versions/0.3.0/.version +1 -0
- package/.versions/0.3.0/agents/builder.md +6 -0
- package/.versions/0.3.0/agents/code-reviewer.md +93 -0
- package/.versions/0.3.0/agents/documenter.md +6 -0
- package/.versions/0.3.0/agents/plan-reviewer.md +22 -0
- package/.versions/0.3.0/agents/planner.md +6 -0
- package/.versions/0.3.0/agents/scout.md +6 -0
- package/.versions/0.3.0/agents/security-auditor.md +97 -0
- package/.versions/0.3.0/agents/test-engineer.md +89 -0
- package/.versions/0.3.0/hooks/SIMPLIFY-IGNORE.md +90 -0
- package/.versions/0.3.0/hooks/hooks.json +14 -0
- package/.versions/0.3.0/hooks/session-start.sh +74 -0
- package/.versions/0.3.0/hooks/simplify-ignore-test.sh +247 -0
- package/.versions/0.3.0/hooks/simplify-ignore.sh +302 -0
- package/.versions/0.3.0/references/accessibility-checklist.md +159 -0
- package/.versions/0.3.0/references/performance-checklist.md +121 -0
- package/.versions/0.3.0/references/prompting-patterns.md +380 -0
- package/.versions/0.3.0/references/security-checklist.md +134 -0
- package/.versions/0.3.0/references/testing-patterns.md +236 -0
- package/.versions/0.3.0/skills/api-and-interface-design/SKILL.md +294 -0
- package/.versions/0.3.0/skills/browser-testing-with-devtools/SKILL.md +335 -0
- package/.versions/0.3.0/skills/ci-cd-and-automation/SKILL.md +390 -0
- package/.versions/0.3.0/skills/code-review-and-quality/SKILL.md +347 -0
- package/.versions/0.3.0/skills/code-simplification/SKILL.md +331 -0
- package/.versions/0.3.0/skills/context-engineering/SKILL.md +291 -0
- package/.versions/0.3.0/skills/debugging-and-error-recovery/SKILL.md +300 -0
- package/.versions/0.3.0/skills/deprecation-and-migration/SKILL.md +206 -0
- package/.versions/0.3.0/skills/designing-agents/SKILL.md +394 -0
- package/.versions/0.3.0/skills/designing-agents/pi-harness-authoring.md +213 -0
- package/.versions/0.3.0/skills/documentation-and-adrs/SKILL.md +278 -0
- package/.versions/0.3.0/skills/frontend-ui-engineering/SKILL.md +322 -0
- package/.versions/0.3.0/skills/git-workflow-and-versioning/SKILL.md +316 -0
- package/.versions/0.3.0/skills/guided-workspace-setup/SKILL.md +331 -0
- package/.versions/0.3.0/skills/idea-refine/SKILL.md +178 -0
- package/.versions/0.3.0/skills/idea-refine/examples.md +238 -0
- package/.versions/0.3.0/skills/idea-refine/frameworks.md +99 -0
- package/.versions/0.3.0/skills/idea-refine/refinement-criteria.md +113 -0
- package/.versions/0.3.0/skills/idea-refine/scripts/idea-refine.sh +15 -0
- package/.versions/0.3.0/skills/incremental-implementation/SKILL.md +279 -0
- package/.versions/0.3.0/skills/performance-optimization/SKILL.md +350 -0
- package/.versions/0.3.0/skills/planning-and-task-breakdown/SKILL.md +237 -0
- package/.versions/0.3.0/skills/security-and-hardening/SKILL.md +349 -0
- package/.versions/0.3.0/skills/shipping-and-launch/SKILL.md +309 -0
- package/.versions/0.3.0/skills/source-driven-development/SKILL.md +194 -0
- package/.versions/0.3.0/skills/spec-driven-development/SKILL.md +237 -0
- package/.versions/0.3.0/skills/test-driven-development/SKILL.md +379 -0
- package/.versions/0.3.0/skills/using-agent-skills/SKILL.md +176 -0
- package/.versions/0.3.2/.claude/commands/build.md +18 -0
- package/.versions/0.3.2/.claude/commands/code-simplify.md +22 -0
- package/.versions/0.3.2/.claude/commands/design-agent.md +14 -0
- package/.versions/0.3.2/.claude/commands/doctor-agent-skills.md +13 -0
- package/.versions/0.3.2/.claude/commands/plan.md +16 -0
- package/.versions/0.3.2/.claude/commands/prime.md +22 -0
- package/.versions/0.3.2/.claude/commands/review.md +16 -0
- package/.versions/0.3.2/.claude/commands/setup-agent-skills.md +19 -0
- package/.versions/0.3.2/.claude/commands/ship.md +17 -0
- package/.versions/0.3.2/.claude/commands/spec.md +15 -0
- package/.versions/0.3.2/.claude/commands/test.md +19 -0
- package/.versions/0.3.2/.opencode/commands/as-build.md +17 -0
- package/.versions/0.3.2/.opencode/commands/as-code-simplify.md +16 -0
- package/.versions/0.3.2/.opencode/commands/as-design-agent.md +15 -0
- package/.versions/0.3.2/.opencode/commands/as-doctor-agent-skills.md +11 -0
- package/.versions/0.3.2/.opencode/commands/as-plan.md +16 -0
- package/.versions/0.3.2/.opencode/commands/as-prime.md +22 -0
- package/.versions/0.3.2/.opencode/commands/as-review.md +15 -0
- package/.versions/0.3.2/.opencode/commands/as-setup-agent-skills.md +11 -0
- package/.versions/0.3.2/.opencode/commands/as-ship.md +16 -0
- package/.versions/0.3.2/.opencode/commands/as-spec.md +16 -0
- package/.versions/0.3.2/.opencode/commands/as-test.md +21 -0
- package/.versions/0.3.2/.pi/agents/agent-chain.yaml +49 -0
- package/.versions/0.3.2/.pi/agents/bowser.md +19 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/agent-expert.md +98 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/cli-expert.md +41 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/config-expert.md +63 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/ext-expert.md +43 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/keybinding-expert.md +134 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/pi-orchestrator.md +57 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/prompt-expert.md +70 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/skill-expert.md +42 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/theme-expert.md +40 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/tui-expert.md +85 -0
- package/.versions/0.3.2/.pi/agents/teams.yaml +31 -0
- package/.versions/0.3.2/.pi/damage-control-rules.yaml +278 -0
- package/.versions/0.3.2/.pi/extensions/agent-skills-update-check/README.md +58 -0
- package/.versions/0.3.2/.pi/extensions/agent-skills-update-check/index.ts +161 -0
- package/.versions/0.3.2/.pi/extensions/agent-skills-update-check/package.json +6 -0
- package/.versions/0.3.2/.pi/extensions/chrome-devtools-mcp/README.md +39 -0
- package/.versions/0.3.2/.pi/extensions/chrome-devtools-mcp/index.ts +61 -0
- package/.versions/0.3.2/.pi/extensions/chrome-devtools-mcp/package.json +6 -0
- package/.versions/0.3.2/.pi/extensions/compact-and-continue/README.md +42 -0
- package/.versions/0.3.2/.pi/extensions/compact-and-continue/index.ts +120 -0
- package/.versions/0.3.2/.pi/extensions/compact-and-continue/package.json +6 -0
- package/.versions/0.3.2/.pi/extensions/mcp-bridge/README.md +46 -0
- package/.versions/0.3.2/.pi/extensions/mcp-bridge/index.ts +206 -0
- package/.versions/0.3.2/.pi/extensions/mcp-bridge/package.json +6 -0
- package/.versions/0.3.2/.pi/extensions/package-lock.json +1143 -0
- package/.versions/0.3.2/.pi/extensions/package.json +9 -0
- package/.versions/0.3.2/.pi/harnesses/agent-chain/README.md +37 -0
- package/.versions/0.3.2/.pi/harnesses/agent-chain/index.ts +795 -0
- package/.versions/0.3.2/.pi/harnesses/agent-chain/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/agent-team/README.md +38 -0
- package/.versions/0.3.2/.pi/harnesses/agent-team/index.ts +732 -0
- package/.versions/0.3.2/.pi/harnesses/agent-team/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/coms/README.md +36 -0
- package/.versions/0.3.2/.pi/harnesses/coms/index.ts +1595 -0
- package/.versions/0.3.2/.pi/harnesses/coms/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/coms-net/README.md +46 -0
- package/.versions/0.3.2/.pi/harnesses/coms-net/index.ts +1637 -0
- package/.versions/0.3.2/.pi/harnesses/coms-net/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/damage-control/README.md +38 -0
- package/.versions/0.3.2/.pi/harnesses/damage-control/index.ts +207 -0
- package/.versions/0.3.2/.pi/harnesses/damage-control/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/damage-control-continue/README.md +37 -0
- package/.versions/0.3.2/.pi/harnesses/damage-control-continue/index.ts +234 -0
- package/.versions/0.3.2/.pi/harnesses/damage-control-continue/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/minimal/README.md +27 -0
- package/.versions/0.3.2/.pi/harnesses/minimal/index.ts +32 -0
- package/.versions/0.3.2/.pi/harnesses/minimal/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/package-lock.json +35 -0
- package/.versions/0.3.2/.pi/harnesses/package.json +9 -0
- package/.versions/0.3.2/.pi/harnesses/pi-pi/README.md +39 -0
- package/.versions/0.3.2/.pi/harnesses/pi-pi/index.ts +631 -0
- package/.versions/0.3.2/.pi/harnesses/pi-pi/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/purpose-gate/README.md +27 -0
- package/.versions/0.3.2/.pi/harnesses/purpose-gate/index.ts +82 -0
- package/.versions/0.3.2/.pi/harnesses/purpose-gate/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/session-replay/README.md +28 -0
- package/.versions/0.3.2/.pi/harnesses/session-replay/index.ts +214 -0
- package/.versions/0.3.2/.pi/harnesses/session-replay/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/subagent-widget/README.md +36 -0
- package/.versions/0.3.2/.pi/harnesses/subagent-widget/index.ts +479 -0
- package/.versions/0.3.2/.pi/harnesses/subagent-widget/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/system-select/README.md +39 -0
- package/.versions/0.3.2/.pi/harnesses/system-select/index.ts +165 -0
- package/.versions/0.3.2/.pi/harnesses/system-select/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/tilldone/README.md +35 -0
- package/.versions/0.3.2/.pi/harnesses/tilldone/index.ts +724 -0
- package/.versions/0.3.2/.pi/harnesses/tilldone/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/tool-counter/README.md +31 -0
- package/.versions/0.3.2/.pi/harnesses/tool-counter/index.ts +100 -0
- package/.versions/0.3.2/.pi/harnesses/tool-counter/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/tool-counter-widget/README.md +27 -0
- package/.versions/0.3.2/.pi/harnesses/tool-counter-widget/index.ts +66 -0
- package/.versions/0.3.2/.pi/harnesses/tool-counter-widget/package.json +6 -0
- package/.versions/0.3.2/.pi/prompts/build.md +24 -0
- package/.versions/0.3.2/.pi/prompts/code-simplify.md +22 -0
- package/.versions/0.3.2/.pi/prompts/doctor-agent-skills.md +13 -0
- package/.versions/0.3.2/.pi/prompts/plan.md +16 -0
- package/.versions/0.3.2/.pi/prompts/review.md +16 -0
- package/.versions/0.3.2/.pi/prompts/setup-agent-skills.md +19 -0
- package/.versions/0.3.2/.pi/prompts/ship.md +17 -0
- package/.versions/0.3.2/.pi/prompts/spec.md +15 -0
- package/.versions/0.3.2/.pi/prompts/test.md +19 -0
- package/.versions/0.3.2/.pi/skills/bowser/SKILL.md +114 -0
- package/.versions/0.3.2/.version +1 -0
- package/.versions/0.3.2/agents/builder.md +6 -0
- package/.versions/0.3.2/agents/code-reviewer.md +93 -0
- package/.versions/0.3.2/agents/documenter.md +6 -0
- package/.versions/0.3.2/agents/plan-reviewer.md +22 -0
- package/.versions/0.3.2/agents/planner.md +6 -0
- package/.versions/0.3.2/agents/scout.md +6 -0
- package/.versions/0.3.2/agents/security-auditor.md +97 -0
- package/.versions/0.3.2/agents/test-engineer.md +89 -0
- package/.versions/0.3.2/hooks/SIMPLIFY-IGNORE.md +90 -0
- package/.versions/0.3.2/hooks/hooks.json +14 -0
- package/.versions/0.3.2/hooks/session-start.sh +74 -0
- package/.versions/0.3.2/hooks/simplify-ignore-test.sh +247 -0
- package/.versions/0.3.2/hooks/simplify-ignore.sh +302 -0
- package/.versions/0.3.2/references/accessibility-checklist.md +159 -0
- package/.versions/0.3.2/references/performance-checklist.md +121 -0
- package/.versions/0.3.2/references/prompting-patterns.md +380 -0
- package/.versions/0.3.2/references/security-checklist.md +134 -0
- package/.versions/0.3.2/references/testing-patterns.md +236 -0
- package/.versions/0.3.2/skills/api-and-interface-design/SKILL.md +294 -0
- package/.versions/0.3.2/skills/browser-testing-with-devtools/SKILL.md +335 -0
- package/.versions/0.3.2/skills/ci-cd-and-automation/SKILL.md +390 -0
- package/.versions/0.3.2/skills/code-review-and-quality/SKILL.md +347 -0
- package/.versions/0.3.2/skills/code-simplification/SKILL.md +331 -0
- package/.versions/0.3.2/skills/context-engineering/SKILL.md +291 -0
- package/.versions/0.3.2/skills/debugging-and-error-recovery/SKILL.md +300 -0
- package/.versions/0.3.2/skills/deprecation-and-migration/SKILL.md +206 -0
- package/.versions/0.3.2/skills/designing-agents/SKILL.md +394 -0
- package/.versions/0.3.2/skills/designing-agents/pi-harness-authoring.md +213 -0
- package/.versions/0.3.2/skills/documentation-and-adrs/SKILL.md +278 -0
- package/.versions/0.3.2/skills/frontend-ui-engineering/SKILL.md +322 -0
- package/.versions/0.3.2/skills/git-workflow-and-versioning/SKILL.md +316 -0
- package/.versions/0.3.2/skills/guided-workspace-setup/SKILL.md +345 -0
- package/.versions/0.3.2/skills/idea-refine/SKILL.md +178 -0
- package/.versions/0.3.2/skills/idea-refine/examples.md +238 -0
- package/.versions/0.3.2/skills/idea-refine/frameworks.md +99 -0
- package/.versions/0.3.2/skills/idea-refine/refinement-criteria.md +113 -0
- package/.versions/0.3.2/skills/idea-refine/scripts/idea-refine.sh +15 -0
- package/.versions/0.3.2/skills/incremental-implementation/SKILL.md +279 -0
- package/.versions/0.3.2/skills/performance-optimization/SKILL.md +350 -0
- package/.versions/0.3.2/skills/planning-and-task-breakdown/SKILL.md +237 -0
- package/.versions/0.3.2/skills/security-and-hardening/SKILL.md +349 -0
- package/.versions/0.3.2/skills/shipping-and-launch/SKILL.md +309 -0
- package/.versions/0.3.2/skills/source-driven-development/SKILL.md +194 -0
- package/.versions/0.3.2/skills/spec-driven-development/SKILL.md +237 -0
- package/.versions/0.3.2/skills/test-driven-development/SKILL.md +379 -0
- package/.versions/0.3.2/skills/using-agent-skills/SKILL.md +176 -0
- package/CHANGELOG.md +108 -0
- package/README.md +5 -5
- package/bin/cli.js +100 -24
- package/bin/lib/bootstrap.js +309 -0
- package/bin/lib/doctor.js +1 -1
- package/docs/getting-started.md +2 -2
- package/docs/npm-install.md +64 -11
- package/package.json +1 -1
- package/skills/guided-workspace-setup/SKILL.md +56 -4
- /package/.claude/commands/{setup.md → setup-agent-skills.md} +0 -0
- /package/.opencode/commands/{as-doctor.md → as-doctor-agent-skills.md} +0 -0
- /package/.opencode/commands/{as-setup.md → as-setup-agent-skills.md} +0 -0
- /package/.pi/prompts/{setup.md → setup-agent-skills.md} +0 -0
- /package/.versions/0.2.0/.claude/commands/{setup.md → setup-agent-skills.md} +0 -0
- /package/.versions/0.2.0/.opencode/commands/{as-doctor.md → as-doctor-agent-skills.md} +0 -0
- /package/.versions/0.2.0/.opencode/commands/{as-setup.md → as-setup-agent-skills.md} +0 -0
- /package/.versions/0.2.0/.pi/prompts/{setup.md → setup-agent-skills.md} +0 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
// bootstrap.js — drop the minimum installer artifacts a coding agent needs
|
|
2
|
+
// to recognize `/setup-agent-skills` and `/doctor-agent-skills`.
|
|
3
|
+
//
|
|
4
|
+
// The CLI's `init` calls this before the handoff message. Without it, a
|
|
5
|
+
// fresh workspace has no `.claude/commands/setup-agent-skills.md`, `.pi/prompts/setup-agent-skills.md`,
|
|
6
|
+
// etc., so the agent has no idea what `/setup-agent-skills` is and the whole hand-off
|
|
7
|
+
// breaks silently.
|
|
8
|
+
//
|
|
9
|
+
// What we bootstrap (per agent):
|
|
10
|
+
// - The `setup` slash command (so the user can invoke it)
|
|
11
|
+
// - The `doctor` slash command (same)
|
|
12
|
+
// - The `guided-workspace-setup` skill body (the slash command says
|
|
13
|
+
// "load this skill" — the skill must be present somewhere the agent
|
|
14
|
+
// auto-discovers)
|
|
15
|
+
//
|
|
16
|
+
// What we do NOT bootstrap:
|
|
17
|
+
// - Any of the user-facing skills (spec-driven-development,
|
|
18
|
+
// test-driven-development, …). Those are picked by the user inside
|
|
19
|
+
// /setup-agent-skills, by design. The CLI never decides the workspace's catalogue
|
|
20
|
+
// for the user.
|
|
21
|
+
//
|
|
22
|
+
// Method:
|
|
23
|
+
// `copy` — safe default; works for npx caches that may be cleaned
|
|
24
|
+
// `symlink` — leaner; only safe when the source root is stable
|
|
25
|
+
// (global install / git clone). Warning printed if the
|
|
26
|
+
// source path looks like an npx cache.
|
|
27
|
+
|
|
28
|
+
import { existsSync, mkdirSync, copyFileSync, symlinkSync, unlinkSync, lstatSync, rmSync, readdirSync, rmdirSync, writeFileSync, readFileSync } from "node:fs";
|
|
29
|
+
import { dirname, join, relative } from "node:path";
|
|
30
|
+
|
|
31
|
+
// Marker file the skill reads to find the authoritative source root. Written
|
|
32
|
+
// by bootstrap, deleted by cleanupInstaller. Without this, the skill would
|
|
33
|
+
// have to guess the source root from its own SKILL.md location — but bootstrap
|
|
34
|
+
// copies SKILL.md into the workspace, so that heuristic always lies.
|
|
35
|
+
const BOOTSTRAP_MARKER = join(".ai", ".agent-skills-bootstrap.json");
|
|
36
|
+
|
|
37
|
+
function writeMarker({ workspace, sourceRoot, agent, method }) {
|
|
38
|
+
const path = join(workspace, BOOTSTRAP_MARKER);
|
|
39
|
+
const version = readPackageVersion(sourceRoot);
|
|
40
|
+
const payload = {
|
|
41
|
+
sourceRoot,
|
|
42
|
+
version,
|
|
43
|
+
agent,
|
|
44
|
+
method,
|
|
45
|
+
bootstrappedAt: new Date().toISOString(),
|
|
46
|
+
_comment: "Written by `npx @chankov/agent-skills init`. Read by the guided-workspace-setup skill to locate the source package. Safe to delete; will be regenerated on next init.",
|
|
47
|
+
};
|
|
48
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
49
|
+
writeFileSync(path, JSON.stringify(payload, null, 2) + "\n", "utf8");
|
|
50
|
+
return path;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function readPackageVersion(sourceRoot) {
|
|
54
|
+
try {
|
|
55
|
+
const pkg = JSON.parse(readFileSync(join(sourceRoot, "package.json"), "utf8"));
|
|
56
|
+
return pkg.version;
|
|
57
|
+
} catch { return null; }
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// (agent → list of {kind, src, dest}) — kind is just for the report.
|
|
61
|
+
//
|
|
62
|
+
// All installer slash commands are namespaced with `-agent-skills` so they
|
|
63
|
+
// don't collide with workspace-defined or other-tool slash commands. The
|
|
64
|
+
// short names (setup, doctor, as-setup, as-doctor) were used in 0.2.0 and
|
|
65
|
+
// earlier — cleanupLegacyNames() removes those if found.
|
|
66
|
+
function plan({ agent, sourceRoot, workspace }) {
|
|
67
|
+
const skillSrc = join(sourceRoot, "skills", "guided-workspace-setup", "SKILL.md");
|
|
68
|
+
|
|
69
|
+
switch (agent) {
|
|
70
|
+
case "claude-code":
|
|
71
|
+
return [
|
|
72
|
+
{ kind: "command", src: join(sourceRoot, ".claude/commands/setup-agent-skills.md"),
|
|
73
|
+
dest: join(workspace, ".claude/commands/setup-agent-skills.md") },
|
|
74
|
+
{ kind: "command", src: join(sourceRoot, ".claude/commands/doctor-agent-skills.md"),
|
|
75
|
+
dest: join(workspace, ".claude/commands/doctor-agent-skills.md") },
|
|
76
|
+
{ kind: "skill", src: skillSrc,
|
|
77
|
+
dest: join(workspace, ".claude/skills/guided-workspace-setup/SKILL.md") },
|
|
78
|
+
];
|
|
79
|
+
|
|
80
|
+
case "pi":
|
|
81
|
+
return [
|
|
82
|
+
{ kind: "prompt", src: join(sourceRoot, ".pi/prompts/setup-agent-skills.md"),
|
|
83
|
+
dest: join(workspace, ".pi/prompts/setup-agent-skills.md") },
|
|
84
|
+
{ kind: "prompt", src: join(sourceRoot, ".pi/prompts/doctor-agent-skills.md"),
|
|
85
|
+
dest: join(workspace, ".pi/prompts/doctor-agent-skills.md") },
|
|
86
|
+
// pi auto-discovers skills from .pi/skills/ and .agents/skills/ —
|
|
87
|
+
// we use .pi/skills/ to avoid polluting a shared .agents/ dir if
|
|
88
|
+
// the user has other tools there.
|
|
89
|
+
{ kind: "skill", src: skillSrc,
|
|
90
|
+
dest: join(workspace, ".pi/skills/guided-workspace-setup/SKILL.md") },
|
|
91
|
+
];
|
|
92
|
+
|
|
93
|
+
case "opencode":
|
|
94
|
+
// OpenCode discovers skills + commands from ~/.config/opencode/ (global)
|
|
95
|
+
// and references AGENTS.md. A project-local bootstrap is awkward — we
|
|
96
|
+
// drop the command file into .opencode/commands/ (which OpenCode does
|
|
97
|
+
// load from the project) and the skill alongside it, then flag the
|
|
98
|
+
// AGENTS.md gap for the user.
|
|
99
|
+
return [
|
|
100
|
+
{ kind: "command", src: join(sourceRoot, ".opencode/commands/as-setup-agent-skills.md"),
|
|
101
|
+
dest: join(workspace, ".opencode/commands/as-setup-agent-skills.md") },
|
|
102
|
+
{ kind: "command", src: join(sourceRoot, ".opencode/commands/as-doctor-agent-skills.md"),
|
|
103
|
+
dest: join(workspace, ".opencode/commands/as-doctor-agent-skills.md") },
|
|
104
|
+
{ kind: "skill", src: skillSrc,
|
|
105
|
+
dest: join(workspace, ".opencode/skills/guided-workspace-setup/SKILL.md") },
|
|
106
|
+
];
|
|
107
|
+
|
|
108
|
+
default:
|
|
109
|
+
throw new Error(`bootstrap: unknown agent "${agent}"`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Files that were the bootstrap targets in 0.2.0 and earlier (pre-rename).
|
|
114
|
+
// Removed during bootstrap so a workspace upgraded from 0.2.0 doesn't end
|
|
115
|
+
// up with both the old and new slash commands.
|
|
116
|
+
function legacyPaths({ agent, workspace }) {
|
|
117
|
+
switch (agent) {
|
|
118
|
+
case "claude-code":
|
|
119
|
+
return [
|
|
120
|
+
join(workspace, ".claude/commands/setup.md"),
|
|
121
|
+
join(workspace, ".claude/commands/doctor.md"),
|
|
122
|
+
];
|
|
123
|
+
case "pi":
|
|
124
|
+
return [
|
|
125
|
+
join(workspace, ".pi/prompts/setup.md"),
|
|
126
|
+
join(workspace, ".pi/prompts/doctor.md"),
|
|
127
|
+
];
|
|
128
|
+
case "opencode":
|
|
129
|
+
return [
|
|
130
|
+
join(workspace, ".opencode/commands/as-setup.md"),
|
|
131
|
+
join(workspace, ".opencode/commands/as-doctor.md"),
|
|
132
|
+
];
|
|
133
|
+
default:
|
|
134
|
+
return [];
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Run the bootstrap.
|
|
140
|
+
*
|
|
141
|
+
* @param {object} opts
|
|
142
|
+
* @param {string} opts.agent claude-code | opencode | pi
|
|
143
|
+
* @param {string} opts.sourceRoot Absolute path to the installed package
|
|
144
|
+
* @param {string} opts.workspace Absolute path to the target workspace
|
|
145
|
+
* @param {"copy"|"symlink"} opts.method
|
|
146
|
+
* @param {boolean} [opts.dryRun]
|
|
147
|
+
* @returns {{written:Array, skipped:Array, warnings:Array}}
|
|
148
|
+
*/
|
|
149
|
+
export function bootstrap({ agent, sourceRoot, workspace, method, dryRun = false }) {
|
|
150
|
+
const items = plan({ agent, sourceRoot, workspace });
|
|
151
|
+
const written = [], skipped = [], removed = [], warnings = [];
|
|
152
|
+
|
|
153
|
+
// Warn if the user asked for symlink against an unstable source.
|
|
154
|
+
if (method === "symlink" && /\/\.npm\/_npx\//.test(sourceRoot)) {
|
|
155
|
+
warnings.push(
|
|
156
|
+
"--method symlink against an npx cache path: links will break when " +
|
|
157
|
+
"the cache is cleaned. Consider --method copy or install globally " +
|
|
158
|
+
"with `npm install -g @chankov/agent-skills`.",
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Clean up pre-0.3.0 file names if present — they were renamed to
|
|
163
|
+
// *-agent-skills so they don't collide with other slash commands.
|
|
164
|
+
for (const oldPath of legacyPaths({ agent, workspace })) {
|
|
165
|
+
if (!existsSync(oldPath) && !isSymlink(oldPath)) continue;
|
|
166
|
+
if (dryRun) {
|
|
167
|
+
removed.push(oldPath);
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
try {
|
|
171
|
+
unlinkSync(oldPath);
|
|
172
|
+
removed.push(oldPath);
|
|
173
|
+
} catch (err) {
|
|
174
|
+
warnings.push(`could not remove legacy file ${relative(workspace, oldPath)}: ${err.message}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
for (const item of items) {
|
|
179
|
+
if (!existsSync(item.src)) {
|
|
180
|
+
warnings.push(`missing source: ${relative(sourceRoot, item.src)} (skipping ${item.kind})`);
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (dryRun) {
|
|
185
|
+
written.push({ ...item, method });
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
try {
|
|
190
|
+
mkdirSync(dirname(item.dest), { recursive: true });
|
|
191
|
+
|
|
192
|
+
// Always replace — the bootstrap is installer scaffolding, not user
|
|
193
|
+
// data. If we left it stale, an upgraded package would still hand off
|
|
194
|
+
// to the old /setup-agent-skills command. Step 6 of guided-workspace-setup explicitly
|
|
195
|
+
// never offers these files in the install menu, so we are the only
|
|
196
|
+
// mechanism that refreshes them.
|
|
197
|
+
if (existsSync(item.dest) || isSymlink(item.dest)) {
|
|
198
|
+
unlinkSync(item.dest);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
if (method === "symlink") {
|
|
202
|
+
symlinkSync(item.src, item.dest);
|
|
203
|
+
} else {
|
|
204
|
+
// copyFileSync handles plain files; for the SKILL.md case the source
|
|
205
|
+
// may have sibling support files in some skills — but
|
|
206
|
+
// guided-workspace-setup is a single-file skill, so copyFileSync is
|
|
207
|
+
// fine. Switch to cpSync if that ever changes.
|
|
208
|
+
copyFileSync(item.src, item.dest);
|
|
209
|
+
}
|
|
210
|
+
written.push({ ...item, method });
|
|
211
|
+
} catch (err) {
|
|
212
|
+
skipped.push({ ...item, error: err.message });
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// Write the marker file as the LAST step — only after all the bootstrap
|
|
217
|
+
// files landed successfully. If the marker exists, the skill trusts it
|
|
218
|
+
// absolutely; if it does not, the skill falls back to safer paths.
|
|
219
|
+
if (!dryRun && written.length > 0) {
|
|
220
|
+
try {
|
|
221
|
+
const markerPath = writeMarker({ workspace, sourceRoot, agent, method });
|
|
222
|
+
written.push({ kind: "marker", dest: markerPath, method: "write" });
|
|
223
|
+
} catch (err) {
|
|
224
|
+
warnings.push(`could not write bootstrap marker: ${err.message}`);
|
|
225
|
+
}
|
|
226
|
+
} else if (dryRun) {
|
|
227
|
+
written.push({ kind: "marker", dest: join(workspace, BOOTSTRAP_MARKER), method: "write" });
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
return { written, skipped, removed, warnings };
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Remove every bootstrap artifact this module knows how to write. Called
|
|
235
|
+
* by guided-workspace-setup at the end of Step 10 unless the user chose
|
|
236
|
+
* to keep the installer commands. After cleanup, the only way back to
|
|
237
|
+
* /setup-agent-skills is to re-run `npx @chankov/agent-skills init`.
|
|
238
|
+
*
|
|
239
|
+
* The same `agent` value must be supplied that was used at bootstrap time —
|
|
240
|
+
* we don't have a tracking file, so we delete based on the plan map.
|
|
241
|
+
*
|
|
242
|
+
* @param {object} opts
|
|
243
|
+
* @param {string} opts.agent
|
|
244
|
+
* @param {string} opts.workspace
|
|
245
|
+
* @param {boolean} [opts.dryRun]
|
|
246
|
+
* @returns {{removed:string[], kept:string[], warnings:string[]}}
|
|
247
|
+
*/
|
|
248
|
+
export function cleanupInstaller({ agent, workspace, dryRun = false }) {
|
|
249
|
+
const planned = plan({ agent, sourceRoot: workspace, workspace });
|
|
250
|
+
const removed = [], kept = [], warnings = [];
|
|
251
|
+
|
|
252
|
+
// Marker file goes too — it pointed at a source root that no longer
|
|
253
|
+
// matters once the install is done.
|
|
254
|
+
const markerPath = join(workspace, BOOTSTRAP_MARKER);
|
|
255
|
+
if (existsSync(markerPath)) {
|
|
256
|
+
if (dryRun) {
|
|
257
|
+
removed.push(markerPath);
|
|
258
|
+
} else {
|
|
259
|
+
try { unlinkSync(markerPath); removed.push(markerPath); }
|
|
260
|
+
catch (err) { warnings.push(`could not remove ${relative(workspace, markerPath)}: ${err.message}`); }
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
for (const item of planned) {
|
|
265
|
+
if (!existsSync(item.dest) && !isSymlink(item.dest)) {
|
|
266
|
+
kept.push(item.dest); // already gone — count it as a no-op, not an error
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
if (dryRun) {
|
|
270
|
+
removed.push(item.dest);
|
|
271
|
+
continue;
|
|
272
|
+
}
|
|
273
|
+
try {
|
|
274
|
+
const lst = lstatSync(item.dest);
|
|
275
|
+
if (lst.isDirectory() && !lst.isSymbolicLink()) {
|
|
276
|
+
rmSync(item.dest, { recursive: true });
|
|
277
|
+
} else {
|
|
278
|
+
unlinkSync(item.dest);
|
|
279
|
+
}
|
|
280
|
+
removed.push(item.dest);
|
|
281
|
+
|
|
282
|
+
// If we removed the only file in a parent directory we created
|
|
283
|
+
// (.claude/skills/guided-workspace-setup/), prune the directory too.
|
|
284
|
+
pruneEmptyDirsUpTo(dirname(item.dest), workspace);
|
|
285
|
+
} catch (err) {
|
|
286
|
+
warnings.push(`could not remove ${relative(workspace, item.dest)}: ${err.message}`);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
return { removed, kept, warnings };
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
function pruneEmptyDirsUpTo(dir, workspace) {
|
|
294
|
+
// Walk upward removing empty parent dirs until we hit a non-empty one or
|
|
295
|
+
// the workspace root. Never delete the workspace itself.
|
|
296
|
+
try {
|
|
297
|
+
while (dir !== workspace && dir.startsWith(workspace)) {
|
|
298
|
+
const entries = readdirSync(dir);
|
|
299
|
+
if (entries.length > 0) return;
|
|
300
|
+
rmdirSync(dir);
|
|
301
|
+
dir = dirname(dir);
|
|
302
|
+
}
|
|
303
|
+
} catch { /* prune is best-effort */ }
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
function isSymlink(path) {
|
|
307
|
+
try { return lstatSync(path).isSymbolicLink(); }
|
|
308
|
+
catch { return false; }
|
|
309
|
+
}
|
package/bin/lib/doctor.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Doctor scan — deterministic preflight extracted from
|
|
2
2
|
// guided-workspace-setup Step 5. Both `agent-skills doctor` (CLI) and the
|
|
3
|
-
// `/doctor` slash command call into this so behaviour cannot drift.
|
|
3
|
+
// `/doctor-agent-skills` slash command call into this so behaviour cannot drift.
|
|
4
4
|
//
|
|
5
5
|
// Two classes of findings:
|
|
6
6
|
// 1. Broken symlinks — links whose source has been moved, renamed, or deleted
|
package/docs/getting-started.md
CHANGED
|
@@ -14,7 +14,7 @@ Each skill is a Markdown file (`SKILL.md`) that describes a specific engineering
|
|
|
14
14
|
|---|---|---|
|
|
15
15
|
| **Most users** — you want to use the skills in your projects | `npx @chankov/agent-skills init` | One command; semver updates; cross-platform; no source dir to babysit. See [docs/npm-install.md](npm-install.md). |
|
|
16
16
|
| **Claude Code users** — you live in Claude Code and want plugin-managed updates | `/plugin marketplace add chankov/agent-skills` | Best UX inside Claude Code; marketplace handles the lifecycle. |
|
|
17
|
-
| **Skill authors / contributors** — you want to edit the skills and have changes flow into every connected workspace | `git clone` + `symlink` mode in `/setup` | Edit-in-place; every connected workspace sees the change instantly. |
|
|
17
|
+
| **Skill authors / contributors** — you want to edit the skills and have changes flow into every connected workspace | `git clone` + `symlink` mode in `/setup-agent-skills` | Edit-in-place; every connected workspace sees the change instantly. |
|
|
18
18
|
|
|
19
19
|
All three converge on the same `guided-workspace-setup` skill — they only differ in how the source files reach your workspace. None is being deprecated.
|
|
20
20
|
|
|
@@ -124,7 +124,7 @@ The `.claude/commands/` directory contains slash commands for Claude Code:
|
|
|
124
124
|
|
|
125
125
|
| Command | Skill Invoked |
|
|
126
126
|
|---------|---------------|
|
|
127
|
-
| `/setup` | guided-workspace-setup |
|
|
127
|
+
| `/setup-agent-skills` | guided-workspace-setup |
|
|
128
128
|
| `/spec` | spec-driven-development |
|
|
129
129
|
| `/plan` | planning-and-task-breakdown |
|
|
130
130
|
| `/build` | incremental-implementation + test-driven-development |
|
package/docs/npm-install.md
CHANGED
|
@@ -31,18 +31,71 @@ So:
|
|
|
31
31
|
# In the workspace you want to configure:
|
|
32
32
|
npx @chankov/agent-skills init
|
|
33
33
|
# Then open your coding agent in this directory and run:
|
|
34
|
-
# /setup
|
|
34
|
+
# /setup-agent-skills
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
That's it. `npx` fetches the package, the CLI detects your coding agent and
|
|
38
|
-
prints the next-step command, and `/setup` runs the full guided install
|
|
38
|
+
prints the next-step command, and `/setup-agent-skills` runs the full guided install
|
|
39
39
|
inside your agent.
|
|
40
40
|
|
|
41
41
|
## Commands
|
|
42
42
|
|
|
43
43
|
### `npx @chankov/agent-skills init`
|
|
44
44
|
|
|
45
|
-
Materializes the package
|
|
45
|
+
Materializes the package, **bootstraps the installer artifacts** into the
|
|
46
|
+
workspace (so the agent has a `/setup-agent-skills` and `/doctor-agent-skills` command to invoke),
|
|
47
|
+
and hands off to `/setup-agent-skills`.
|
|
48
|
+
|
|
49
|
+
What `init` writes per agent:
|
|
50
|
+
|
|
51
|
+
| Agent | Files written to the workspace |
|
|
52
|
+
|---|---|
|
|
53
|
+
| `claude-code` | `.claude/commands/setup-agent-skills.md`, `.claude/commands/doctor-agent-skills.md`, `.claude/skills/guided-workspace-setup/SKILL.md` |
|
|
54
|
+
| `pi` | `.pi/prompts/setup-agent-skills.md`, `.pi/prompts/doctor-agent-skills.md`, `.pi/skills/guided-workspace-setup/SKILL.md` |
|
|
55
|
+
| `opencode` | `.opencode/commands/as-setup-agent-skills.md`, `.opencode/commands/as-doctor-agent-skills.md`, `.opencode/skills/guided-workspace-setup/SKILL.md` |
|
|
56
|
+
|
|
57
|
+
These are **just the plumbing** — the slash commands, plus the skill they
|
|
58
|
+
invoke. The actual catalogue (spec-driven-development, code-reviewer,
|
|
59
|
+
test-engineer, pi extensions, …) is picked by you inside `/setup-agent-skills`. Re-run
|
|
60
|
+
`init` to refresh the plumbing after a package upgrade; bootstrap files
|
|
61
|
+
are always overwritten because they're scaffolding, not user data.
|
|
62
|
+
|
|
63
|
+
After `/setup-agent-skills` finishes its install pass, **the bootstrap files
|
|
64
|
+
are removed by default** so they don't clutter your agent's slash-command
|
|
65
|
+
list. Re-run `npx @chankov/agent-skills init` whenever you want
|
|
66
|
+
`/setup-agent-skills` back. To keep them in place across runs, reply `keep`
|
|
67
|
+
to the Step 9 confirmation prompt — the skill will record
|
|
68
|
+
`keep-installer: true` in `.ai/agent-skills-setup.md`.
|
|
69
|
+
|
|
70
|
+
### How the skill finds the source package
|
|
71
|
+
|
|
72
|
+
`init` writes one extra file alongside the bootstrap: `.ai/.agent-skills-bootstrap.json`.
|
|
73
|
+
This is the **authoritative** record of where the npm package lives:
|
|
74
|
+
|
|
75
|
+
```json
|
|
76
|
+
{
|
|
77
|
+
"sourceRoot": "/home/you/.npm/_npx/<hash>/node_modules/@chankov/agent-skills",
|
|
78
|
+
"version": "0.3.0",
|
|
79
|
+
"agent": "pi",
|
|
80
|
+
"method": "copy",
|
|
81
|
+
"bootstrappedAt": "2026-05-24T..."
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
When `/setup-agent-skills` runs inside your agent, it reads this marker
|
|
86
|
+
*first* to find the source package. This matters on dev machines where you
|
|
87
|
+
may also have a git clone of `agent-skills` elsewhere — the marker prevents
|
|
88
|
+
the skill from accidentally using that clone instead of the version the
|
|
89
|
+
user just installed via npm.
|
|
90
|
+
|
|
91
|
+
If the marker is missing or its `sourceRoot` no longer exists (e.g. npx
|
|
92
|
+
cleaned its cache), the skill **asks you explicitly** for the path. It
|
|
93
|
+
never scans your filesystem for other agent-skills repos — that would
|
|
94
|
+
silently pick up forks, stale checkouts, or dev clones that aren't what
|
|
95
|
+
you installed.
|
|
96
|
+
|
|
97
|
+
The marker is removed by the same Step 10b cleanup that removes the
|
|
98
|
+
slash commands.
|
|
46
99
|
|
|
47
100
|
| Flag | Default | Purpose |
|
|
48
101
|
|------|---------|---------|
|
|
@@ -60,7 +113,7 @@ npx @chankov/agent-skills init --workspace ~/projects/foo --method symlink
|
|
|
60
113
|
|
|
61
114
|
Deterministic preflight scan — walks every install-target directory, lists
|
|
62
115
|
broken symlinks and stale persona references, and offers fixes. Same scan
|
|
63
|
-
that `/doctor` runs inside the agent.
|
|
116
|
+
that `/doctor-agent-skills` runs inside the agent.
|
|
64
117
|
|
|
65
118
|
| Flag | Default | Purpose |
|
|
66
119
|
|------|---------|---------|
|
|
@@ -78,13 +131,13 @@ npx @chankov/agent-skills doctor -y
|
|
|
78
131
|
Reads the workspace's `.ai/agent-skills-setup.md`, compares the recorded
|
|
79
132
|
package version against the installed package version, and prints the next
|
|
80
133
|
step. The actual diff-aware refresh runs inside the coding agent via
|
|
81
|
-
`/setup`.
|
|
134
|
+
`/setup-agent-skills`.
|
|
82
135
|
|
|
83
136
|
```bash
|
|
84
137
|
# Upgrade the package itself first, then check the delta:
|
|
85
138
|
npm install -g @chankov/agent-skills@latest
|
|
86
139
|
npx agent-skills update --workspace .
|
|
87
|
-
# Then open your agent and run /setup to review per-artifact diffs.
|
|
140
|
+
# Then open your agent and run /setup-agent-skills to review per-artifact diffs.
|
|
88
141
|
```
|
|
89
142
|
|
|
90
143
|
## Versioning
|
|
@@ -137,7 +190,7 @@ npm is the recommended path for most users. The other two stay supported:
|
|
|
137
190
|
- **[Claude Code plugin marketplace](../README.md#quick-start)** — best UX
|
|
138
191
|
inside Claude Code. Same skills, marketplace-managed updates.
|
|
139
192
|
- **Git clone + symlinks** — best for skill authors and contributors. Clone
|
|
140
|
-
the repo, run `/setup` from there, choose `symlink` in Step 8. Updates
|
|
193
|
+
the repo, run `/setup-agent-skills` from there, choose `symlink` in Step 8. Updates
|
|
141
194
|
flow through `git pull`. Symlinks need Developer Mode on Windows.
|
|
142
195
|
|
|
143
196
|
All three paths converge on the same `guided-workspace-setup` skill — the
|
|
@@ -153,7 +206,7 @@ npx --yes @chankov/agent-skills@latest init --agent claude-code --method copy --
|
|
|
153
206
|
```
|
|
154
207
|
|
|
155
208
|
`doctor` accepts `--yes` for non-interactive repair. Note that the
|
|
156
|
-
LLM-driven `/setup` flow is not CI-runnable by design — confirmation gates
|
|
209
|
+
LLM-driven `/setup-agent-skills` flow is not CI-runnable by design — confirmation gates
|
|
157
210
|
exist precisely so a human approves every write.
|
|
158
211
|
|
|
159
212
|
## Receiving update notifications
|
|
@@ -182,15 +235,15 @@ If the cache is stale, a detached background process refreshes it for the
|
|
|
182
235
|
|
|
183
236
|
### 2. Claude Code session-start hook
|
|
184
237
|
|
|
185
|
-
When `hooks/session-start.sh` is installed (offered in Group 18 of `/setup`),
|
|
238
|
+
When `hooks/session-start.sh` is installed (offered in Group 18 of `/setup-agent-skills`),
|
|
186
239
|
every new Claude Code session runs the check with a 3-second wall-clock cap.
|
|
187
240
|
If an upgrade is available, the banner is injected into the session context
|
|
188
241
|
so Claude can mention it on its first turn — e.g. *"Note: agent-skills 0.2.0
|
|
189
|
-
is available; want me to apply it via `/setup`?"*
|
|
242
|
+
is available; want me to apply it via `/setup-agent-skills`?"*
|
|
190
243
|
|
|
191
244
|
### 3. pi extension (`agent-skills-update-check`)
|
|
192
245
|
|
|
193
|
-
When installed (offered in Group 10 of `/setup`), the extension fires on the
|
|
246
|
+
When installed (offered in Group 10 of `/setup-agent-skills`), the extension fires on the
|
|
194
247
|
first `agent_start` event of each pi session and emits a `ctx.ui.notify`
|
|
195
248
|
message in the pi UI if a newer version is published. Reads the same cache
|
|
196
249
|
as the CLI — no double-fetching.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chankov/agent-skills",
|
|
3
|
-
"version": "0.2
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Production-grade engineering skills for AI coding agents. Ships skills, agent personas, slash commands, and pi extensions, with a thin CLI that hands off to the LLM-driven guided setup.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -34,9 +34,16 @@ Determine which interaction mode this runtime supports, in order of preference:
|
|
|
34
34
|
|
|
35
35
|
### 2. Resolve inputs
|
|
36
36
|
|
|
37
|
-
Resolve four things. Accept any already supplied in the invocation (the `npx agent-skills init` CLI passes the first three as flags); otherwise ask.
|
|
37
|
+
Resolve four things. Accept any already supplied in the invocation (the `npx @chankov/agent-skills init` CLI passes the first three as flags); otherwise ask.
|
|
38
|
+
|
|
39
|
+
- **Source root** — the agent-skills package. **Resolution priority (use the first that works; never fall through silently):**
|
|
40
|
+
|
|
41
|
+
1. **Bootstrap marker** — read `<workspace>/.ai/.agent-skills-bootstrap.json` if present. Its `sourceRoot` field is authoritative; the CLI wrote it during `init` and it points at the exact package the user's install came from (npm cache, global install, or symlinked clone). Verify the path still exists and contains a `package.json` whose `name` is `@chankov/agent-skills`; if so, use it and **stop**. If the path no longer exists (e.g. npx cache was cleaned), warn the user and continue to step 2.
|
|
42
|
+
2. **SKILL.md realpath** — only if the marker is missing. If this `SKILL.md` is a symlink, follow it with `readlink`/`realpath` and use the resolved package root. **Do not** use the SKILL.md's *workspace* location (e.g. `.pi/skills/guided-workspace-setup/`) — bootstrap copies the file there, so that path is the workspace, not the source. The realpath only helps in symlink mode.
|
|
43
|
+
3. **Ask the user explicitly.** Print: *"Source root not found. Run `npx @chankov/agent-skills@latest init` to bootstrap, or paste an absolute path to the package."* Verify the answer is a directory whose `package.json#name` is `@chankov/agent-skills`. **Do not scan the user's filesystem** for other agent-skills repos — that is invasive and produces wrong answers (it will pick up dev clones, forks, or stale copies).
|
|
44
|
+
|
|
45
|
+
The install record's `## install-status` may *also* mention an older source root from a previous setup pass; ignore it for resolution. The bootstrap marker overrides it because it reflects what the user just ran. Note the divergence in the Step 9 summary so the user sees the change.
|
|
38
46
|
|
|
39
|
-
- **Source root** — the agent-skills package. Derive it from this `SKILL.md`'s own location: `skills/guided-workspace-setup/` sits two levels below the package root. When installed via npm, the package root is `node_modules/agent-skills/` or the `npx` cache.
|
|
40
47
|
- **Workspace path** — the target project to configure. Confirm the path exists and is a directory; stop and ask again if it does not.
|
|
41
48
|
- **Coding agent** — `claude-code`, `opencode`, or `pi`. Detect the running agent from the runtime, show it to the user, and let them choose a different one.
|
|
42
49
|
- **Package version** — read `version` from the source root's `package.json`. This is the version that will be stamped into the install record in Step 10, and the right-hand side of every version-aware diff in Step 6.
|
|
@@ -108,7 +115,7 @@ Present findings in a single table:
|
|
|
108
115
|
|
|
109
116
|
Then ask, multi-select: which fixes to apply now. Apply only the picked ones; record skipped items so the install menu can surface them again. Append a `## doctor-runs` line to `.ai/agent-skills-setup.md` with the date, agent, phase (`preflight`), and `repaired` / `deleted` / `skipped` counts.
|
|
110
117
|
|
|
111
|
-
The doctor scan is also exposed standalone as `/doctor` — running it outside a setup pass is this same scan-and-repair flow without the rest of the install menu.
|
|
118
|
+
The doctor scan is also exposed standalone as `/doctor-agent-skills` — running it outside a setup pass is this same scan-and-repair flow without the rest of the install menu.
|
|
112
119
|
|
|
113
120
|
### 6. Present the install menu
|
|
114
121
|
|
|
@@ -207,6 +214,8 @@ Ask `copy` or `symlink` for this run.
|
|
|
207
214
|
|
|
208
215
|
Present the full set as one summary table — artifacts to add, update, and remove; their resolved target paths; the chosen install method; and the changes to both `.ai/` files. When the version delta from Step 4 is non-empty, lead the summary with a one-line "Changes since `v<recorded>` → `v<current>`" block sourced from `CHANGELOG.md` (only the entries between the two versions, not the full file). Ask the user to confirm, and write nothing until they do.
|
|
209
216
|
|
|
217
|
+
**Installer cleanup line.** The summary always ends with one line stating that the installer slash commands (`/setup-agent-skills`, `/doctor-agent-skills` — or `/as-*-agent-skills` for OpenCode — plus the `guided-workspace-setup` skill body) will be removed after apply, so they do not pollute the user's slash-command list. Add the verbatim suffix: *"Reply `keep` to leave them in place; re-run `npx @chankov/agent-skills init` later if removed."* If the user replies `keep`, record `keep-installer: true` in `## workspace-summary` and skip Step 10b. Otherwise the default is to remove them.
|
|
218
|
+
|
|
210
219
|
### 10. Apply the setup
|
|
211
220
|
|
|
212
221
|
Apply the changes: create directories, add or update selected artifacts, and remove deselected ones — **bound by the removal-scope rule from Step 6**. Before deleting any target, verify both conditions: (a) the name is in the agent-skills inventory and (b) the item is either listed in `## install-status` or is a symlink resolving into the source repo. If either check fails, skip the deletion silently and log the path under a "Skipped — not owned by agent-skills" line in the final report.
|
|
@@ -217,10 +226,36 @@ For settings files (`.claude/settings.json` and equivalents), edit only the agen
|
|
|
217
226
|
|
|
218
227
|
Then write both `.ai/` files: the agreed override sections from Step 7 into `.ai/agent-skills-overrides.md`, and the install record — artifacts, target paths, method, **package version**, date — into `.ai/agent-skills-setup.md`. The `version:` line in `## workspace-summary` is set to the package version from Step 2; this is what the next re-run will compare against to compute the version delta.
|
|
219
228
|
|
|
229
|
+
### 10b. Remove the installer artifacts (unless the user said `keep`)
|
|
230
|
+
|
|
231
|
+
After Step 10 has written the catalogue + the `.ai/` files, the installer files dropped by `npx @chankov/agent-skills init` — the `setup-agent-skills` / `doctor-agent-skills` slash commands and the `guided-workspace-setup` skill body itself — are no longer needed in the workspace. They were bootstrap plumbing, not part of the user's permanent install. Leaving them in place pollutes the agent's slash-command list and confuses re-runs (which should always go through `init`, not a stale local copy).
|
|
232
|
+
|
|
233
|
+
Default behaviour:
|
|
234
|
+
|
|
235
|
+
- **`keep-installer: true` in `## workspace-summary`** → skip this step. The files stay.
|
|
236
|
+
- **Otherwise** → run the cleanup. Delete every file the bootstrap wrote for the chosen agent:
|
|
237
|
+
|
|
238
|
+
| Agent | Files removed |
|
|
239
|
+
|---|---|
|
|
240
|
+
| `claude-code` | `.claude/commands/setup-agent-skills.md`, `.claude/commands/doctor-agent-skills.md`, `.claude/skills/guided-workspace-setup/SKILL.md` |
|
|
241
|
+
| `pi` | `.pi/prompts/setup-agent-skills.md`, `.pi/prompts/doctor-agent-skills.md`, `.pi/skills/guided-workspace-setup/SKILL.md` |
|
|
242
|
+
| `opencode` | `.opencode/commands/as-setup-agent-skills.md`, `.opencode/commands/as-doctor-agent-skills.md`, `.opencode/skills/guided-workspace-setup/SKILL.md` |
|
|
243
|
+
|
|
244
|
+
After deleting, prune any directories that were created solely for these files (e.g. `.claude/skills/guided-workspace-setup/`) — never prune a directory that contains other files.
|
|
245
|
+
|
|
246
|
+
Note: the skill body file you are removing here is the same file the agent is *currently executing*. Filesystem removal does not interrupt the in-memory copy — finish this step, then Step 11, then return as normal.
|
|
247
|
+
|
|
248
|
+
If `cleanupInstaller` is available via the CLI (`npx @chankov/agent-skills cleanup-installer --agent <agent> --workspace <path>`), invoking it is equivalent to the manual deletions above; either path is acceptable. Failures (permission denied, file already gone) are logged but do not abort the apply.
|
|
249
|
+
|
|
220
250
|
### 11. Verify and report
|
|
221
251
|
|
|
222
252
|
Re-scan the install-target directories one more time and confirm: every selected artifact exists at its target path, every deselected one is gone, and zero broken symlinks remain. Also re-read `.ai/agent-skills-setup.md` and verify the `version:` line matches the package version from Step 2 — a mismatch here means the apply pass did not stamp the new version, and must be corrected before the next re-run computes the wrong delta. If the post-apply scan surfaces any new breakage, treat it as a doctor finding and offer the same repair options as Step 5, then append a second `## doctor-runs` line with `phase: postflight`. List what changed, point the user at `.ai/agent-skills-overrides.md` and `.ai/agent-skills-setup.md`, and suggest loading `using-agent-skills` first in their next session.
|
|
223
253
|
|
|
254
|
+
Close the report with one line explaining the installer-cleanup outcome:
|
|
255
|
+
|
|
256
|
+
- If Step 10b ran: *"Installer slash commands removed from your workspace. Re-run `npx @chankov/agent-skills init` if you need `/setup-agent-skills` back."*
|
|
257
|
+
- If Step 10b was skipped (`keep-installer: true`): *"Installer slash commands kept in place per your choice. `/setup-agent-skills` and `/doctor-agent-skills` remain available."*
|
|
258
|
+
|
|
224
259
|
## Common Rationalizations
|
|
225
260
|
|
|
226
261
|
| Rationalization | Reality |
|
|
@@ -237,10 +272,15 @@ Re-scan the install-target directories one more time and confirm: every selected
|
|
|
237
272
|
| "I'll record the full install detail in the overrides file too — one place is simpler." | Other skills load the overrides file on every run. Install detail belongs only in `agent-skills-setup.md`; padding the overrides file taxes every later session. |
|
|
238
273
|
| "There's an unfamiliar skill in `.claude/skills/` — the user must have forgotten to uncheck it, I'll remove it." | The removal scope rule exists exactly to prevent this. If the name is not in the agent-skills inventory or not in `## install-status`, it is user-owned; leave it alone and log it as skipped. |
|
|
239
274
|
| "The user wants a clean workspace — I'll prune custom hooks and unrelated MCP entries from `settings.json` too." | Setting-file edits are limited to agent-skills' own hook registrations. Touching anything else silently deletes work that does not belong to this skill. |
|
|
240
|
-
| "`/setup` and `/doctor` are useful — I'll install them
|
|
275
|
+
| "`/setup-agent-skills` and `/doctor-agent-skills` are useful — I'll re-install them at the end of apply so the user can re-run them locally." | They are installer commands that the CLI bootstraps and the skill itself cleans up in Step 10b by default. Keeping them is opt-in via `keep` in Step 9. Re-installing them silently undoes the cleanup the user implicitly chose. |
|
|
276
|
+
| "The bootstrap marker is missing — I'll search the user's `~/repos/`, `~/projects/`, and `/media/` for any clone of `agent-skills` to use as the source root." | Scanning the user's filesystem picks up dev clones, forks, half-edited working trees, and stale checkouts that are NOT the package the user installed from. The npm-installed copy is the only authoritative source after `init`. Without the marker, ask the user explicitly — never guess. |
|
|
277
|
+
| "This `SKILL.md` is two levels below the workspace's `.pi/skills/`, so the workspace root must be the source root." | Bootstrap copies `SKILL.md` into the workspace precisely so the slash command can load it. The workspace is the *target* of the install, not the source. Use the marker file to find the real source; resolving from `SKILL.md`'s workspace location always lies. |
|
|
241
278
|
| "The recorded version differs from the current — I'll just refresh everything to the new source without showing the diff." | Conflicting upgrades (user-modified copy + source changed upstream) require the three-way diff to be shown in Step 6, with the row pre-unchecked. Refreshing silently overwrites work the user did between versions. |
|
|
242
279
|
| "The `.versions/<recorded>/` snapshot is missing — I'll pretend the installed copy matches the recorded source and refresh anyway." | A missing snapshot means we cannot compute the three-way diff. The skill must fall back to "treat installed copy as canonical" and surface the missing snapshot in the row's status so the user can decide — never pretend a diff exists. |
|
|
243
280
|
| "The workspace has no `version:` line — I'll silently stamp the current version and move on." | A pre-versioning workspace must be flagged in Step 4 and the user prompted: stamp the current version (assume copies match) or wipe and reinstall. Silent stamping hides a real decision. |
|
|
281
|
+
| "The user didn't say anything about the installer cleanup line — I'll leave the installer files in place to be safe." | The default is to remove. Step 9's confirmation line explicitly states the cleanup will happen unless the user replies `keep`. Silence is consent for the default, not opt-out from it. |
|
|
282
|
+
| "I'll add `setup-agent-skills` and `doctor-agent-skills` to the install menu so the user can pick whether to keep them." | They are still installer-only and excluded from the menu. The keep-vs-remove choice is the single Step 9 line, not a menu group — adding them to the menu re-opens the pollution we just fixed. |
|
|
283
|
+
| "The skill is currently executing; deleting its own file in Step 10b will crash mid-run." | The agent loads the skill into memory at the start of execution. Removing the file on disk does not unload the in-memory copy — Steps 10b and 11 complete normally before control returns. |
|
|
244
284
|
|
|
245
285
|
## Red Flags
|
|
246
286
|
|
|
@@ -265,6 +305,13 @@ Re-scan the install-target directories one more time and confirm: every selected
|
|
|
265
305
|
- A `conflicting upgrade` row pre-checked, or the three-way diff omitted for it.
|
|
266
306
|
- A pre-versioning workspace stamped with the current version without prompting the user first.
|
|
267
307
|
- The post-apply `version:` line not matching the package version from Step 2.
|
|
308
|
+
- Step 9 summary missing the installer-cleanup line, or the line stated `keep` as the default.
|
|
309
|
+
- Source root resolved by scanning the filesystem for `agent-skills` repos (`find`, `fd`, `grep -r`, …) instead of using `.ai/.agent-skills-bootstrap.json` or asking the user.
|
|
310
|
+
- Source root resolved by treating `SKILL.md`'s workspace location (`.pi/skills/...` or `.claude/skills/...`) as the package root.
|
|
311
|
+
- The bootstrap marker file (`.ai/.agent-skills-bootstrap.json`) ignored when present, or trusted blindly when the path it names no longer exists.
|
|
312
|
+
- Installer files (`setup-agent-skills`, `doctor-agent-skills`, the `guided-workspace-setup` skill body) left in place without a recorded `keep-installer: true`.
|
|
313
|
+
- `setup-agent-skills` or `doctor-agent-skills` shown as install-menu rows.
|
|
314
|
+
- Step 11 report omitting the one-line installer-cleanup outcome.
|
|
268
315
|
|
|
269
316
|
## Verification
|
|
270
317
|
|
|
@@ -287,6 +334,11 @@ After completing the workflow, confirm:
|
|
|
287
334
|
- [ ] When the version delta was non-empty, Step 9's summary led with the "Changes since v<recorded> → v<current>" block sourced from `CHANGELOG.md`.
|
|
288
335
|
- [ ] Every `conflicting upgrade` row was rendered with its three-way diff in Step 6 and was not pre-checked.
|
|
289
336
|
- [ ] A pre-versioning workspace was flagged in Step 4 and the user was prompted to stamp or wipe — not silently stamped.
|
|
337
|
+
- [ ] Source root was resolved from `.ai/.agent-skills-bootstrap.json` if present, or from `SKILL.md`'s realpath (symlink mode), or by asking the user — **never** by scanning the filesystem.
|
|
338
|
+
- [ ] If the bootstrap marker named a path that no longer exists, the user was warned and asked for a new path — not silently ignored.
|
|
339
|
+
- [ ] Step 9 summary ended with the installer-cleanup line: states remove-by-default and offers `keep` as the opt-out.
|
|
340
|
+
- [ ] Step 10b ran (or was explicitly skipped because `keep-installer: true`); the installer files are absent from the workspace unless the user opted to keep them.
|
|
341
|
+
- [ ] Step 11 report includes the one-line installer-cleanup outcome.
|
|
290
342
|
- [ ] No broken symlinks remain in any of the scanned install-target directories.
|
|
291
343
|
- [ ] No YAML config references a removed persona name.
|
|
292
344
|
- [ ] No secrets were written to either `.ai/` file.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|