$npx -y skills add deepklarity/harness-kit --skill hk-skill-creatorCreate new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's descr
| 1 | # /hk-skill-creator — Create and Improve Skills |
| 2 | |
| 3 | Create new skills and iteratively improve existing ones through a structured draft-test-evaluate-improve loop. |
| 4 | |
| 5 | ## Context |
| 6 | |
| 7 | <skill_context> $ARGUMENTS </skill_context> |
| 8 | |
| 9 | If the context above describes what skill to create or improve, proceed. If empty or unclear, ask the user what they want the skill to do. |
| 10 | |
| 11 | ## The Core Loop |
| 12 | |
| 13 | The process of creating a skill: |
| 14 | |
| 15 | 1. **Understand** what the skill should do, with concrete examples |
| 16 | 2. **Draft** the SKILL.md and any bundled resources |
| 17 | 3. **Test** by running Claude-with-the-skill on realistic prompts |
| 18 | 4. **Evaluate** outputs qualitatively (does it do what the user wants?) and quantitatively (assertions) |
| 19 | 5. **Improve** based on feedback — generalize, don't overfit |
| 20 | 6. **Repeat** until the user is satisfied |
| 21 | 7. **Optimize** the description for reliable triggering |
| 22 | |
| 23 | Figure out where the user is in this process and help them progress. Maybe they want a skill from scratch — help narrow intent, draft, test. Maybe they already have a draft — go straight to eval/iterate. Maybe they just want to vibe — be flexible. |
| 24 | |
| 25 | ## Communication Style |
| 26 | |
| 27 | Skills are used by people across a wide range of technical familiarity. Pay attention to context cues: |
| 28 | |
| 29 | - "evaluation" and "benchmark" are borderline but OK to use without explanation |
| 30 | - For "JSON", "assertion", "frontmatter" — look for cues the user knows these before using them without a brief definition |
| 31 | - When in doubt, briefly explain terms inline |
| 32 | - Match the user's register — if they're casual, be casual back |
| 33 | |
| 34 | ## Step 1: Capture Intent |
| 35 | |
| 36 | Start by understanding what the skill should enable. The conversation might already contain a workflow to capture (e.g., "turn this into a skill"). If so, extract answers from context first — tools used, sequence of steps, corrections made, input/output formats. The user fills gaps, then confirms before proceeding. |
| 37 | |
| 38 | Questions to resolve: |
| 39 | - What should this skill enable Claude to do? |
| 40 | - When should this skill trigger? (what user phrases/contexts) |
| 41 | - What's the expected output format or behavior? |
| 42 | - Are there concrete examples of input/output? |
| 43 | |
| 44 | ### Interview and Research |
| 45 | |
| 46 | Proactively ask about edge cases, input/output formats, example files, success criteria, and dependencies. Check existing skills in `.claude/skills/` — spawn a haiku subagent to scan for overlapping or related skills. Come prepared with context to reduce burden on the user. |
| 47 | |
| 48 | Do not proceed to drafting until the functionality is clearly understood. |
| 49 | |
| 50 | ## Step 2: Plan Resources |
| 51 | |
| 52 | For each concrete example from Step 1, analyze: |
| 53 | 1. How to execute from scratch (what steps, what tools) |
| 54 | 2. What scripts, references, or assets would help when executing repeatedly |
| 55 | |
| 56 | Build a list of reusable resources to include. Common signals: |
| 57 | - If all test cases would independently write similar helper scripts, bundle that script in `scripts/` |
| 58 | - If the skill needs detailed reference docs (API schemas, large examples), put them in `references/` |
| 59 | - If the skill produces output from templates, put templates in `assets/` |
| 60 | |
| 61 | ## Step 3: Initialize or Locate the Skill |
| 62 | |
| 63 | ### New skill |
| 64 | |
| 65 | Scaffold with: |
| 66 | |
| 67 | ```bash |
| 68 | python ${CLAUDE_SKILL_DIR}/scripts/init_skill.py <skill-name> |
| 69 | ``` |
| 70 | |
| 71 | This creates the directory structure at `.claude/skills/<skill-name>/` with a template SKILL.md. Follow `hk-` prefix convention for this project. |
| 72 | |
| 73 | ### Existing skill |
| 74 | |
| 75 | Read the existing SKILL.md and understand its current structure before making changes. |
| 76 | |
| 77 | ## Step 4: Write the Skill |
| 78 | |
| 79 | The skill is written for another instance of Claude to use. Focus on non-obvious procedural knowledge — things the model wouldn't know or would get wrong without guidance. |
| 80 | |
| 81 | ### Implementation order |
| 82 | |
| 83 | 1. Bundled resources first (scripts/, references/, assets/) |
| 84 | 2. Delete unused example files from initialization |
| 85 | 3. Complete SKILL.md last (it references the resources) |
| 86 | |
| 87 | ### SKILL.md Structure |
| 88 | |
| 89 | Read `references/writing_guide.md` for the complete writing guide including all frontmatter fields, dynamic context injection, and subagent execution patterns. Key points: |
| 90 | |
| 91 | **Frontmatter** — The `description` is the primary triggering mechanism. Descriptions longer than 250 characters get truncated in the skill listing, so front-load the key use case. Include both what the skill does AND specific trigger |