From marketplace-ops
Guided creation of ACP components -- skills, agents, commands, and full plugins. Walks through requirements gathering, generates production-ready files with real content (not placeholders), registers in marketplace.json, and bumps versions. Also trigger on "new skill", "new agent", "new plugin", "add a skill", "add an agent", "skills-creator", "skills-hammer". Also helps decide skill vs agent architecture when reorganizing plugins. DO NOT TRIGGER for editing or updating existing components -- only for new creation or architectural decisions (skill vs agent). TRIGGER WHEN: the user asks to create, add, scaffold, or build a new skill, agent, command, or plugin DO NOT TRIGGER WHEN: the task is outside the specific scope of this component.
npx claudepluginhub acaprino/alfio-claude-plugins --plugin marketplace-opsThis skill uses the workspace's default tool permissions.
Create new ACP components with proper conventions and real content.
Guides strict Test-Driven Development (TDD): write failing tests first for features, bugfixes, refactors before any production code. Enforces red-green-refactor cycle.
Guides systematic root cause investigation for bugs, test failures, unexpected behavior, performance issues, and build failures before proposing fixes.
Guides A/B test setup with mandatory gates for hypothesis validation, metrics definition, sample size calculation, and execution readiness checks.
Create new ACP components with proper conventions and real content.
Determine what the user wants to create:
1. "new skill" --> Skill Creation workflow
2. "new agent" --> Agent Creation workflow
3. "new command" --> Command Creation workflow
4. "new plugin" --> Full Plugin workflow (combines above)
If unclear, ask: "What do you want to create -- a skill, agent, command, or full plugin?"
Before gathering requirements, help the user decide the right component type.
Key question: "Does this need its own context/tools/isolation, or is it knowledge that any agent should access?"
See references/skills-vs-agents.md for the full decision table, real restructure examples, and anti-patterns.
The description field is the single most important line in any skill or agent. It determines whether the component activates at all. Passive descriptions achieve ~50-77% activation; directive descriptions with negative constraints achieve 97-100%.
<Domain> expert. ALWAYS invoke this skill when the user <trigger actions>.
Do not <alternative action> directly.
TRIGGER WHEN: <specific triggers, comma-separated>
DO NOT TRIGGER WHEN: <exclusions>
# BAD (50-77% activation) -- passive, suggestion-style
description: "Helps with Docker containerization tasks"
# GOOD (97-100% activation) -- directive with negative constraint
description: >
Docker containerization expert. ALWAYS invoke this skill when the user
asks about Docker, containers, Dockerfiles, or docker-compose.
Do not run Docker commands or write Dockerfiles directly.
TRIGGER WHEN: building containers, writing Dockerfiles, debugging Docker issues
DO NOT TRIGGER WHEN: the task is not about containerization.
Each skill/agent costs ~100 tokens at idle (just name + description in system prompt). All descriptions combined share a 15,000 character budget by default. When total description text exceeds this limit, skills may be silently dropped from the system prompt.
Before writing any files, gather enough context to produce real content.
Ask (adapt based on what's already known):
Ask (adapt based on what's already known):
Ask (adapt based on what's already known):
Ask (adapt based on what's already known):
Do not ask more than 3-4 questions per message. Start with the most important, follow up as needed.
Generate production-ready files with real content -- not [FILL] placeholders.
plugins/<plugin>/skills/<skill-name>/SKILL.md following these rules:
name (kebab-case, max 64 chars) and description (max 1024 chars)TRIGGER WHEN: and DO NOT TRIGGER WHEN: linescontext: fork (isolates in subagent), allowed-tools (restricts tool access), disable-model-invocation: true (prevents auto-triggering)!command syntax for dynamic context injection (shell commands that execute before content reaches Claude)references/, scripts/, assets/ subdirs only if neededplugins/<plugin>/agents/<agent-name>.mdname, description (use YAML > for multiline), model: opus, color, optionally toolsTRIGGER WHEN: and DO NOT TRIGGER WHEN: lines"Expert X. TRIGGER WHEN: user needs Y. DO NOT TRIGGER WHEN: task is Z."# ROLE, # CAPABILITIES or # CORE CAPABILITIES, # CONVENTIONS, # OUTPUT FORMATplugins/<plugin>/commands/<command-name>.mddescription, argument-hintAfter files are created:
.claude-plugin/marketplace.jsonagents, skills, or commands arrays
"./agents/<name>.md""./skills/<name>""./commands/<name>.md"plugins[] with all required fields (name, source, description, version 1.0.0, author, license, keywords, category, strict)After registration:
| Scenario | Wrong | Right |
|---|---|---|
| Writing descriptions | Passive: "Helps with Docker" (50% activation) | Directive: "ALWAYS invoke when user asks about Docker. Do not run Docker commands directly." (97%+ activation) |
| Description tone | "Can be used for...", "Use when..." | "ALWAYS invoke this skill when...", "Do not X directly" |
| Missing exclusions | No DO NOT TRIGGER WHEN clause | Always specify what should NOT trigger the component |
| Writing agent prompts | Verbose prose paragraphs | Terse keyword-list style |
| Skill body length | 800+ lines in SKILL.md | Split into references/ at ~300 lines |
| Skill body content | Repeating what Claude already knows | Only add context Claude lacks; trust built-in knowledge |
| Creating resources | Empty placeholder dirs | Only create dirs that have files |
| Choosing a plugin | Always create a new one | Prefer adding to existing plugin if domain fits |
| Agent description | First/second person | Third person: "Processes X when Y" |
| Token budget | Long verbose descriptions on all components | Keep descriptions under 300 chars when possible; total budget is 15k chars |
- or double hyphen --opusname fieldname field