$npx -y skills add WrathZA/skillforge --skill skill-forge-createCreate a new SKILL.md via discovery recap, pattern selection, WebFetch spec fetch, knowledge delta discipline, skill-forge-judge + skill-forge-hitl quality gate. Triggers: create a skill, write a skill, new skill, SKILL.md, build a skill.
| 1 | # Skill Forge Create |
| 2 | |
| 3 | Write skills that score ≥B on skill-forge-judge out of the box. Every section must earn its tokens. |
| 4 | |
| 5 | --- |
| 6 | |
| 7 | ## Phase 1 — Discovery |
| 8 | |
| 9 | Build understanding through a running recap. Ask questions to fill gaps; after each exchange, show the current recap: |
| 10 | |
| 11 | ``` |
| 12 | ## Discovery Recap |
| 13 | |
| 14 | **Domain:** [what the skill covers, or "unknown"] |
| 15 | **Decisions:** [non-obvious choices the agent must make, or "unknown"] |
| 16 | **Failure modes:** [what breaks without this skill, or "unknown"] |
| 17 | **Audience:** [fragile/creative output, or "inferred: ..."] |
| 18 | **Size:** [reference files needed, or "inferred: self-contained"] |
| 19 | ``` |
| 20 | |
| 21 | Then ask: `(a)ccept / (r)evise / (q)uit` |
| 22 | |
| 23 | - `a` — recap is complete; proceed to Phase 2 |
| 24 | - `r` — user adds or corrects; update recap and loop |
| 25 | - `q` — abort |
| 26 | |
| 27 | Do not proceed to Phase 2 until the user accepts the recap. Domain, decisions, and failure modes must be filled before accepting — do not accept a recap with "unknown" in those three fields. |
| 28 | |
| 29 | --- |
| 30 | |
| 31 | ## Phase 2 — Pattern Selection |
| 32 | |
| 33 | **MANDATORY — READ [`references/pattern-selection.md`](references/pattern-selection.md)** before selecting a pattern. Do NOT load this file during Phase 1, Phase 3, or later phases. |
| 34 | |
| 35 | Select one pattern. State your choice and the one-line reason before drafting. |
| 36 | |
| 37 | --- |
| 38 | |
| 39 | ## Phase 3 — Draft |
| 40 | |
| 41 | **MANDATORY — WebFetch `https://agentskills.io/specification`** before writing the description. Use the live spec to verify current frontmatter requirements and description field constraints. If unreachable, proceed with the spec knowledge already in context; note it in the draft. |
| 42 | |
| 43 | Write the description before the body. Draft the body around what the description promises. |
| 44 | |
| 45 | Write to earn tokens. For every paragraph, ask: **"Does Claude already know this?"** |
| 46 | |
| 47 | - If yes → delete it |
| 48 | - If "it's a useful reminder" → one line max, then move on |
| 49 | - If no → expand it; this is the value |
| 50 | |
| 51 | Before writing each section, ask: **"What failure mode does this prevent?"** If you can't answer, you haven't earned the paragraph. |
| 52 | |
| 53 | **Description requirements** (THE most critical field): |
| 54 | - Answers WHAT (what does it do?) |
| 55 | - Answers WHEN (trigger scenarios — "Use when...", "Trigger phrases:") |
| 56 | - Contains searchable KEYWORDS (domain terms, file extensions, action verbs) |
| 57 | - Max ~200 chars for the core sentence; trigger phrases can follow |
| 58 | |
| 59 | **NEVER rules format** — every NEVER must have: |
| 60 | ``` |
| 61 | - **NEVER [specific construct/pattern]** |
| 62 | **Instead:** [concrete alternative] |
| 63 | **Why:** [non-obvious failure mode this avoids] |
| 64 | ``` |
| 65 | |
| 66 | Vague warnings ("be careful", "avoid errors") are prohibited. |
| 67 | |
| 68 | **Progressive disclosure thresholds**: |
| 69 | - Body > 300 lines → move heavy content to `references/` |
| 70 | - Any section with a decision tree of 4+ branches → extract to `references/` regardless of total line count |
| 71 | - Add MANDATORY READ triggers at the exact workflow step that needs it |
| 72 | - Add "Do NOT load" guidance for files irrelevant to the current scenario |
| 73 | |
| 74 | --- |
| 75 | |
| 76 | ## Phase 4 — Self-Evaluate |
| 77 | |
| 78 | Invoke `/skill-forge-judge` on the draft. (Requires skill-forge-judge to be installed — if missing, ask the user to install it before continuing.) |
| 79 | |
| 80 | Target: ≥B (80%+). For a SKILL.md with no bash guidance → U + S (120 pts max) → ≥96 pts. |
| 81 | |
| 82 | Always invoke `/skill-forge-hitl` on the numbered improvements list skill-forge-judge produced, regardless of grade. Do not apply fixes manually — that's /skill-forge-hitl's job. |
| 83 | |
| 84 | If the /skill-forge-hitl loop stalls on a dimension (same item rejected after 3 revisions), surface it to the user: "Stuck on [dimension] — here's what I tried. Options: accept the current draft, revise the scope, or skip." |
| 85 | |
| 86 | --- |
| 87 | |
| 88 | ## NEVER |
| 89 | |
| 90 | - **NEVER write a section that restates Claude defaults** ("write clean code", "handle errors", "be helpful") |
| 91 | **Instead:** Ask: "Would Claude do this without being told?" If yes, delete it. |
| 92 | **Why:** Default restatements dilute expert signal and train authors that padding is acceptable. |
| 93 | |
| 94 | - **NEVER add a NEVER rule without WHY and INSTEAD** |
| 95 | **Instead:** Complete the three-part format before moving on. |
| 96 | **Why:** A prohibition without an alternative gets violated when the obvious path is blocked. |
| 97 | |
| 98 | - **NEVER dump all content in SKILL.md** |
| 99 | **Instead:** Keep body under 300 lines; move detail to `references/` with MANDATORY READ triggers. |
| 100 | **Why:** A 700-line SKILL.md loads all at once on every invocation — the agent drowns in irrelevant content. |
| 101 | |
| 102 | - **NEVER skip Phase 4** (skill-forge-judge self-eval) |
| 103 | **Instead:** Run it even if the draft feels good. |
| 104 | **Why:** Skills that skip self-eval consistently have U1 or U3 gaps that aren't obvious to the author. |
| 105 | |
| 106 | - **NEVER manually apply skill-forge-judge findings one-by-one** |
| 107 | **Instead:** Invoke `/skill-forge-hitl` on the numbered improvements list s |