Help us improve
Share bugs, ideas, or general feedback.
From rhdh
Creates, audits, and consolidates Claude Code agent skills following the Agent Skills open standard. Interviews for intent, scope, and edge cases before drafting.
npx claudepluginhub redhat-developer/rhdh-skill --plugin rhdhHow this skill is triggered — by the user, by Claude, or both
Slash command
/rhdh:skill-makerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<intake>
references/anti-patterns.mdreferences/api-skill-patterns.mdreferences/architecture-patterns.mdreferences/consolidation-guide.mdreferences/description-guide.mdreferences/scripts-guide.mdreferences/spec-guide.mdreferences/xml-structure-guide.mdtemplates/router-skill-xml.mdtemplates/router-skill.mdtemplates/simple-skill.mdCreates, fixes, analyzes, and validates skills for AI agents. Includes scripts for structure checks, quality analysis, and character budget management.
Creates, modifies, improves, tests, and benchmarks Claude Code skills using category-aware design, gotchas-driven development, eval prompts, and performance analysis.
Creates new Claude Code skills from scratch following best practices for structure, naming, frontmatter, progressive disclosure, reference organization, and tool scoping. Use for building skills or converting slash commands.
Share bugs, ideas, or general feedback.
Create agent skills following the Agent Skills open standard.
What do you need to do?
Wait for response before proceeding.
| Response | Workflow |
|---|---|
| 1, "audit", "review", "check", "fix", "improve" | Audit Workflow (Step 1–4 in this file) |
| 2, "create", "write", "build", "new", "draft" | Phases 1–5 (Interview → Draft → Description → Scripts → Review) in this file |
| 3, "consolidate", "merge", "combine" | references/consolidation-guide.md — return to Phase 5 for final checklist |
Use this workflow when reviewing, improving, or debugging an existing skill.
Read the full SKILL.md and list all files in the skill directory (references/, scripts/, templates/, assets/).
Check each category. Note issues as you go.
Frontmatter:
name matches the directory name, lowercase+hyphens, max 64 charsdescription is under 1024 chars, non-empty, third persondescription includes trigger phrases (not just a summary of what the skill does)description covers edge phrasings users would actually sayStructure:
Content quality:
Router pattern (if applicable):
references/xml-structure-guide.md)Scripts (if present):
--help, and structured outputRead references/anti-patterns.md for the full catalog of common failures.
Present findings grouped by severity:
For each finding, state the issue, cite the specific line or section, and recommend a fix.
Ask the user which findings to fix. Apply changes surgically — don't rewrite sections that aren't broken. Run the Phase 5 review checklist on the modified skill before finishing.
Interview the user about every aspect of this skill until reaching shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.
Ask one question at a time. Wait for the answer before asking the next. Adapt follow-ups based on what you learn. Each question should provide clear benefit toward building a better skill — cut questions the codebase can answer for you.
If a question can be answered by exploring the codebase, explore the codebase instead of asking.
Focus areas, roughly in order:
references/api-skill-patterns.md — it covers credential handling, schema discovery, instance-specific values, and error placement.After the interview questions above, decide the architecture. Most skills are simple — only escalate when the answers demand it.
Question 1: How many distinct things can a user want to do?
Question 2: Is there shared domain knowledge across those operations?
references/)Question 3: Does it cover a full lifecycle (build, debug, test, ship)?
| What you're building | Pattern |
|---|---|
| "A skill that commits with a conventional message" | Simple |
| "A skill that manages PRs — create, review, merge, close" | Router |
| "A skill for building and shipping macOS apps" | Domain expertise |
| "A skill that audits other skills" | Simple (upgrade to Router if it grows) |
For Router and Domain expertise patterns, also ask:
Read references/architecture-patterns.md for implementation details of each pattern.
Consolidation signal check: If the interview reveals the new skill overlaps significantly with existing skills (shared scripts, cross-references, linear pipeline), consider consolidating instead of creating. Read references/consolidation-guide.md for the signals and workflow.
Do not proceed to Phase 2 until the user confirms the scope is complete.
Write the skill following the spec. Read references/spec-guide.md for the full format reference before drafting.
Starter templates: Use templates/simple-skill.md for single-purpose skills, templates/router-skill.md for multi-command skills using markdown headings, or templates/router-skill-xml.md for multi-command skills using XML structure. Copy the template as a starting point, then customize.
---
name: skill-name # lowercase, hyphens, max 64 chars
description: | # max 1024 chars — this is the ONLY triggering mechanism
What the skill does. Use when [specific triggers].
Also use when [additional triggers].
---
The description must be slightly "pushy" — agents tend to undertrigger. Include both what the skill does AND specific phrases/contexts that should activate it.
Follow progressive disclosure — three loading levels:
name and description loaded at startup for all skillsreferences/, scripts/, assets/ loaded only when requiredKeep the SKILL.md body under 500 lines. If approaching this limit, split domain-specific content into references/ files with clear pointers about when to read them.
Before writing domain knowledge into a new reference file, check if it already exists in another reference. Shared data (exit criteria, field mappings, workflow rules) must live in exactly one file. New references should point to the existing source — not embed a copy.
Common trap: a new sub-command reference duplicates tables from an existing reference because it "needs them for context." Instead, add a one-line pointer: "Load references/workflows.md for exit criteria per status."
Exception: intentional duplication. When two sub-commands need the same query pattern but referencing each other would create a transitive loading chain (A → B → C), duplicate the pattern and add a note: "Same query pattern as X.md Step N — duplicated here to avoid transitive loading." This is cheaper than forcing the agent to load an unrelated file.
references/api-errors.md if the API returns a non-200 status code" — not "see references/ for details"Read references/anti-patterns.md during drafting to avoid known pitfalls.
Agents parse XML tags more reliably than markdown headings when a skill has semantically distinct sections (principles, intake, routing, references). XML tags create unambiguous containers; markdown headings blend together in long prompts.
Read references/xml-structure-guide.md for suggested patterns and anti-patterns.
When XML helps:
When markdown is enough:
For skills with multiple distinct operations, use a router table in SKILL.md.
<intake>
## What would you like to do?
1. **Craft a feature** — Build end-to-end
2. **Audit code** — Technical quality checks
**Wait for response before proceeding.**
</intake>
<routing>
| Response | Workflow |
|----------|----------|
| 1, "craft", "build" | `references/craft.md` |
| 2, "audit", "check" | `references/audit.md` |
</routing>
Back the router with a scripts/command-metadata.json as the single source of truth:
{
"craft": {
"description": "Full build flow. Use when building a new feature end-to-end.",
"argumentHint": "[feature description]"
}
}
Non-negotiable checks before any file edits. Gates prevent generic output from missing context.
## Setup (non-optional)
| Gate | Required check | If fail |
|---|---|---|
| Context | Project config loaded via `python scripts/load_context.py` | Run the loader first |
| Config | Config file exists and is valid | Run `skill-name setup` |
| Command | Sub-command reference is loaded | Load the reference |
| Mutation | All gates above pass | Do not edit project files |
When behavior varies by task type, classify first, then load different references:
## Register
Every task is **library** (published, API-stable) or **application** (internal, can break).
Identify before acting. Load the matching reference: [references/library.md] or [references/application.md].
Steps that depend on optional environment capabilities (browser automation, specific CLI tools) must degrade gracefully:
### Automated Scan (Capability-Gated)
Run the automated scanner when ALL of these are true:
- The target files exist and are readable
- The required CLI tool is installed
If unavailable, state in one line that the step is skipped and why. Do not ask the user to install tooling.
When one command produces output that another consumes, define the artifact structure explicitly. The producing command's reference defines the format; the consuming command's reference says what it expects:
### Plan Structure
**1. Summary** (2-3 sentences)
**2. Primary Goal**
**3. Approach**
...
For build/implementation commands, mandate inspect-and-fix passes with explicit exit bars:
### Critique and fix loop
After the first pass, write a short self-critique and patch. Repeat until no material issues remain:
1. Does it match the requirements?
2. Does it pass the [quality test]?
3. Check every expected scenario.
4. Check edge cases.
The exit bar is not "it works." It is: [explicit quality threshold].
The description is the only thing agents see at startup. Read references/description-guide.md for the full optimization process.
Quick validation:
For skills with sub-commands, the main description covers the skill broadly. Each sub-command's description in command-metadata.json is optimized separately for auto-trigger keyword matching.
Read references/scripts-guide.md for the full guide.
Bias toward scripts. Every deterministic operation should be a script, not an instruction. Scripts are cheaper (no LLM tokens), faster (no reasoning), and more reliable (no hallucination).
For each piece of the skill's workflow, ask: "Could a script do this?" If yes, write the script.
Should be scripts:
Should stay as instructions:
Key patterns:
argparse for CLI parsinguv run--helpFor skills that need project-level context, write a loader script:
The script should follow all standard patterns: argparse with --help, structured JSON output (pretty when interactive, compact when piped), clear exit codes (0 = found, 1 = missing), pathlib for cross-platform paths, and stdlib-only imports. See the "Context File System" section in references/architecture-patterns.md for a skeleton.
The SKILL.md references it: "Load context via python scripts/load_context.py. Consume the full JSON output. Never pipe through head, tail, or grep."
Before presenting the final skill, verify against this checklist:
name is lowercase, hyphens only, max 64 charsdescription is under 1024 chars and includes trigger phrasesdescription is slightly pushy — covers edge phrasings that should activate the skillcommand-metadata.json is the single source of truth for command descriptionsreferences/xml-structure-guide.md)references/ with clear "when to read" pointersspec-guide.md → Reference Architecture)--helpgrep -rn the entire repo)--help text reference the new skill name, not the old onesreferences/references/ nesting)spec-guide.md → Fake Data in Examples<reference_index>
| Reference | Load when... |
|---|---|
references/spec-guide.md | Drafting a SKILL.md (Phase 2) — full format reference |
references/description-guide.md | Optimizing the description (Phase 3) |
references/scripts-guide.md | Writing scripts (Phase 4) |
references/anti-patterns.md | Drafting or auditing — common failures to avoid |
references/architecture-patterns.md | Choosing between simple, router, and domain expertise patterns |
references/api-skill-patterns.md | Skill calls external APIs or services |
references/consolidation-guide.md | Merging multiple skills into fewer |
references/xml-structure-guide.md | Deciding on XML vs markdown structure |
</reference_index>