The plugin is broken because:
- Command delegates to skill that isn't loaded:
/create-agentcommand just says "invoke create-agent skill" - Skills were removed from plugin.json: We removed
"agents"field to fix validation error - No actual copy logic in command: The command is just a spec, not implementation
- Files ready but never copied:
.claude/files-to-install/has everything, but nothing uses it
.claude/skills/create-agent/SKILL.md- 572 lines of detailed workflow orchestration- Contains all 6 phases with detailed instructions
- Has file copying logic in Phase 0 (lines 22-65)
- Has interview process, architecture design, implementation guide
- This is the crown jewel - must preserve
.claude/files-to-install/- Complete directory structure:commands/- review.md, save.mdskills/- 4 skill directories with SKILL.md filesagents/- 5 review agent markdown filesknowledge/- templates directorytemplates/- File templates (CLAUDE, README, config, etc.)
.claude/knowledge/- Reference docs:- workflow-patterns.md
- component-decision-guide.md
- mcp-integration.md
- setup-command-guide.md
.claude-plugin/plugin.json- Plugin manifest (needs fixing)README.md,LICENSE, docs/ - Documentation
Plugin Distribution Model:
- Plugin itself: Minimal - only provides
/create-agentcommand - Command's job: Copy tools from plugin into user's working directory
- Why: Avoid polluting non-workflow projects with agent-builder tools
- Benefit: Users can customize tools per-project after installation
Merge skill content into command file
Pros:
- Single file, easier to maintain
- No plugin.json "agents" field needed
- Command is self-contained
- Clearer for users reading the command
Cons:
- Large command file (~600 lines)
- Loses separation of command (interface) vs skill (implementation)
- Can't reuse skill elsewhere
Implementation:
- Copy entire
.claude/skills/create-agent/SKILL.mdcontent into.claude/commands/create-agent.md - Remove "invoke skill" wrapper language
- Make it direct instructions to Claude
- Keep plugin.json as-is (commands only, no agents)
Keep command/skill separation, fix plugin.json
Pros:
- Maintains separation of concerns
- Command stays simple (entry point)
- Skill contains complex orchestration
- Follows "wrapper pattern" for commands
- More modular/reusable
Cons:
- Need to fix plugin.json to load skills correctly
- More files to maintain
- Plugin.json validation was failing (but we can fix)
Implementation:
- Fix
.claude-plugin/plugin.jsonto correctly reference skills - According to docs, we need the skills as individual .md files or in proper directory structure
- Current structure:
.claude/skills/create-agent/SKILL.md - Need to verify this matches plugin schema requirements
Reasoning:
- Preserves original architecture: Command as entry point, skill as implementation
- Already built this way: Both files exist and work together
- Better separation: Interface vs implementation
- Original intent: You built it this way for a reason
- Minimal changes: Just fix plugin.json schema
- Read Claude Code plugin docs on
agentsfield - Understand what structure is required for skills
- Current structure:
.claude/skills/create-agent/SKILL.md(subdirectory with SKILL.md) - Determine if this matches schema or needs flattening
Based on schema understanding, either:
-
Option 2a: Add
agentsfield pointing to skills correctly"agents": "./.claude/skills/"
Problem: Schema said "must end with .md" - maybe needs to point to SKILL.md files directly?
-
Option 2b: Flatten skills to root-level .md files
- Move
.claude/skills/create-agent/SKILL.md→.claude/skills/create-agent.md - Update plugin.json:
"agents": ["./.claude/skills/create-agent.md"]
- Move
-
Option 2c: Use different field name
- Check if plugin.json supports "skills" vs "agents"
- May be semantic difference in Claude Code
- Test plugin installation from GitHub
- Verify skill is available when
/create-agentis invoked - Ensure no validation errors
- Run
/create-agentin fresh directory - Verify Phase 0 copies files from
.claude/files-to-install/ - Verify interview questions come one at a time (fix Issue #1)
- Complete workflow and verify all files created
From dogfooding-notes.md:
- Issue #1: Questions one at a time (update skill instructions)
- Issue #2:
/reviewcommand purpose mismatch (check what's in files-to-install) - Issue #3: Commands not copied (should be fixed by Step 4)
- Issue #4: Skill not found (should be fixed by Steps 2-3)
If Option B fails (can't get plugin.json to validate with skills):
- Fallback to Option A: Inline skill into command
- Delete
.claude/skills/directory - Merge skill content into command
- Simple, works, just larger file
.claude-plugin/plugin.json- Add agents/skills field correctly- Possibly
.claude/skills/create-agent/SKILL.md- Flatten if needed
.claude/skills/create-agent/SKILL.md(lines 67-83) - Change to one question at a time- Verify
.claude/files-to-install/commands/review.md- Check if it's workflow review or PR review
- ✅
.claude/files-to-install/- Already complete - ✅
.claude/knowledge/- Already complete - ✅ Templates - Already complete
- ✅ Documentation - Already complete
- ✅ User installs plugin from GitHub (no validation errors)
- ✅ User runs
/create-agentin fresh directory - ✅ Files copy from plugin's
files-to-install/to user's.claude/ - ✅ Interview asks questions one at a time
- ✅ Workflow completes all 6 phases
- ✅ User has working commands:
/review,/save, custom workflow command - ✅ User can customize installed tools per-project
-
Option B (Fix plugin): 30-60 minutes
- Research schema: 15 min
- Fix plugin.json: 5 min
- Test installation: 10 min
- Fix dogfooding issues: 20 min
- End-to-end test: 10 min
-
Option A (Inline skill): 20-30 minutes
- Merge files: 10 min
- Fix dogfooding issues: 10 min
- Test: 10 min
- What is the correct plugin.json schema for including skills?
- Do skills need to be at
.claude/skills/*.md(flat) or.claude/skills/*/SKILL.md(nested)? - Is there a difference between "agents" and "skills" fields in plugin.json?
- Should the command copy the create-agent skill itself, or should it stay plugin-only?
Ready for your decision:
- Do you want to proceed with Option B (fix plugin.json for skills)?
- Or fallback to Option A (inline everything into command)?
Once decided, I'll execute the plan and get this working.