Skill maker
Practical Claude Code skills as installable plugins — research & teardowns, web build/deploy, image search, repo audit, disk cleanup, outreach, email broadcasts, and a skill generator.
npx -y skills add adamjali/claude-skills --skill skill-makerAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Create new Claude Code skills (or slash-commands) in a clean, consistent house style — XML phases, rolling-window state files, saved rules, checkpoint resumption, attribution conventions, and 14 compaction-with-preservation patterns. Use when the user asks to "make a skill", "create a skill", "build a skill", "scaffold a skill", "new skill", "skill for X", "make this a skill", "turn this into a skill", "make a slash command", "create a command", "wrap this workflow", "automate this", "add to my library", "another skill like X", or any phrasing implying turning a workflow into a reusable, well-structured skill. Single point of entry — loads the full style guide + all 14 compaction patterns + canonical scaffold.
SKILL.md
13.4 KB, as published. Nobody here has run it
<execution_context>
- Auto-load the style guide + compaction patterns at start (via
<context>injection above) - Auto-execute scaffolding (mkdir + boilerplate writes) — these are reversible
- ASK before writing the actual SKILL.md body — preview must be approved
- ASK before deferring to Anthropic
skill-creatorfor eval iteration — only if user opts in - Saved Rules: accumulate per-user-style preferences (e.g., "always wants Phase 5.5 deep-clean for stateful skills") in
state.md - Rolling window: keep last 10 generated-skill entries full, compact older to one-line in archive section </execution_context>
TaskCreateone task per phase (8 phases).- Read
state.mdif exists; check forIN_PROGRESSmarker. - If IN_PROGRESS found →
AskUserQuestion:- Resume from last checkpoint
- Start fresh (archive previous as ABORTED)
- Show full history (abort, let the user review)
- Otherwise → record current generation as IN_PROGRESS with
checkpoint: INITIALIZED. - Read
references/skill-style.md+references/compaction-patterns.mdinto context (loaded via@in<context>block above, but verify accessible).
TaskUpdate Phase 0 → completed.
</phase>
If the user provided a skill name + description in their initial message → skip to Phase 2.
Otherwise, free-form prompt:
"What should this skill do? In 1-2 sentences, describe the workflow you want to capture."
Record their answer → intent field.
Update checkpoint: INTENT_CAPTURED.
TaskUpdate Phase 1 → completed.
</phase>
ONE AskUserQuestion call with up to 4 questions covering the highest-leverage decisions. Use the question set in references/intake-questions.md as the canonical source.
The 4 batched questions (4 is the max per AskUserQuestion call):
- Skill name + form — what's the name (kebab-case)? Skill in
~/.claude/skills/<name>/or slash-command in~/.claude/commands/<name>.mdor both? - Stateful? No (stateless) / Yes-simple (one history file) / Yes-checkpointed (sync-style with IN_PROGRESS recovery) / Yes-multi-actor (with attribution suffixes)
- State location (if stateful) — skill dir / current repo / external repo (multi-device sync) /
.planning/ - Compaction pattern (if stateful) — pick one of 14 from
references/compaction-patterns.md(default: "rolling-window-saved-rules" for most cases)
Then a SECOND AskUserQuestion for follow-ups depending on Q1-4 answers:
- Autonomy matrix — auto-fix-safe / ask-on-medium / never-touch — with examples
- Hard invariants — what should NEVER be done regardless of context (free-form)
- References needed? (templates, schemas, long docs to offload from SKILL.md)
- Scripts needed? (shell helpers, generators, validators)
For each answer, record to intake/ block in current state entry.
Update checkpoint: INTAKE_COMPLETE.
TaskUpdate Phase 2 → completed.
</phase>
Based on intake, pick from references/examples/:
| Template | When |
|---|---|
01-stateless.md | No state, single-purpose (e.g. a one-shot search/fetch tool) |
02-stateful-simple.md | One history file, rolling-N + archive (e.g. a send-and-log workflow) |
03-stateful-checkpointed.md | IN_PROGRESS recovery + saved rules (e.g. a long resumable sync) |
04-stateful-multi-actor.md | Multiple state files + attribution suffixes (e.g. a shared bot/human workflow) |
05-slash-command-router.md | One-line delegate to a subagent |
06-information-display.md | Read-only output, zero context bloat (e.g. a help/status command) |
07-multi-phase-feature.md | Multi-artifact per-feature dirs (e.g. a feature-development workflow) |
Show user the picked template + ask "looks right?" before generating.
Update checkpoint: TEMPLATE_SELECTED.
TaskUpdate Phase 3 → completed.
</phase>
- Run
bash scripts/generate-skill.sh <name> <template>— creates the directory, writes initial SKILL.md from chosen template + intake answers, scaffoldsreferences/andscripts/subdirs if specified. - Substitute placeholders:
{{SKILL_NAME}},{{DESCRIPTION}},{{TRIGGER_PHRASES}},{{COMPACTION_PATTERN}}, etc. - Compose SKILL.md sections per the canonical scaffold:
- Frontmatter (pushy
>description,paths:glob if path-scoped,when_to_use:if it adds clarity,argument-hint:only if$ARGUMENTSused,allowed-tools:only if restricting) <objective><context>with@injections for state file + relevant references<execution_context>with autonomy matrix<process>with numbered<phase name="N_named">blocks<saved_rules_format>(if stateful)<recovery_protocol>(if stateful with checkpoints)<error_handling>(always)<success_criteria>(always)
- Frontmatter (pushy
- Generate compaction section per chosen pattern using
bash scripts/compaction-template.sh <pattern>.
Update checkpoint: GENERATED.
TaskUpdate Phase 4 → completed.
</phase>
Show the FULL generated SKILL.md content in the chat — no surprises before write.
Ask via AskUserQuestion:
- Approve → write files (Phase 6)
- Modify → which section/field/wording? (free-form, then re-generate that section)
- Abort → archive current entry as ABORTED, exit cleanly
Update checkpoint: PREVIEWED.
TaskUpdate Phase 5 → completed.
</phase>
Only after Phase 5 approval:
WriteSKILL.md to~/.claude/skills/<name>/SKILL.md(or~/.claude/commands/<name>.mdfor slash-command form).- Write any reference files specified in intake to
references/. - Write any script files specified to
scripts/(withchmod +x). - Write initial state file scaffolding if stateful (with header + format docs + empty section).
- If user wants slash-command shortcut → create
~/.claude/commands/<name>.mdwith one-lineSkill(<name>)delegate.
Update checkpoint: WRITTEN.
TaskUpdate Phase 6 → completed.
</phase>
- Run
bash scripts/validate-skill.sh <name>— checks:- Frontmatter
description≤ 1,536 chars (combined withwhen_to_use) - Required tags present per
<execution_context>'s skill-class - SKILL.md size — warn if > 500 lines or > ~5K tokens (auto-compaction truncation risk)
- References referenced in
<context>actually exist - Scripts referenced are executable
- Frontmatter
- Optionally run a deeper structure audit if you have a skill-auditor command available.
- Surface findings:
- 🔴 must-fix (description too long, missing required tags, broken
@references) - 🟡 should-fix (style inconsistencies, missing optional tags)
- 🟢 nice-to-have (suggestions for improvement)
- 🔴 must-fix (description too long, missing required tags, broken
- Optionally defer to Anthropic
skill-creator@claude-plugins-officialfor eval iteration (offer to user — only if they want quantitative test prompts).
Update state.md: append COMPLETED entry with skill name + template chosen + audit results + summary. Apply rolling-window pruning if > 10 entries (compact older to one-liners in archive section).
Update checkpoint: COMPLETED.
TaskUpdate Phase 7 → completed.
</phase>
<saved_rules_format>
Saved Rules
Stored in state.md "Saved Rules" section. Surfaced on every /skill-maker run as:
"Previous rule found: '{rule_text}'. Apply this? (Yes / No / Delete rule)"
Format per rule:
- {topic}: {rule} — set {YYYY-MM-DD}
Examples (auto-discovered by observing the user's choices over time):
- naming: prefer kebab-case, prefix with category if part of a family (e.g.,
myproject-*) - compaction-default: rolling-window-saved-rules (5 full + saved rules)
- attribution: only add
— [actor <time>]suffix when ≥2 actors - token-budget: keep SKILL.md under 500 lines (a common convention; not a hard cap) </saved_rules_format>
<recovery_protocol>
If state.md shows IN_PROGRESS when this skill starts:
- Identify last completed checkpoint from state entry (
INITIALIZED/INTENT_CAPTURED/INTAKE_COMPLETE/TEMPLATE_SELECTED/GENERATED/PREVIEWED/WRITTEN). - Map checkpoint → next phase:
- INITIALIZED → resume Phase 1
- INTENT_CAPTURED → resume Phase 2
- INTAKE_COMPLETE → resume Phase 3
- TEMPLATE_SELECTED → resume Phase 4
- GENERATED → resume Phase 5
- PREVIEWED → resume Phase 6
- WRITTEN → resume Phase 7
- Offer the user: Resume / Start fresh (archive previous as ABORTED) / Show full history.
- On resume, append to existing entry; do NOT create new entry.
- Update
updated_attimestamp andcheckpoint:field. </recovery_protocol>
<error_handling>
- Skill name conflicts with existing in
~/.claude/skills/<name>/→ ask: rename / overwrite / abort. Default: rename with-v2suffix. AskUserQuestiontimes out → treat as Skip; mark current entry as ABORTED in state.md.- Validation script fails → log warning, complete generation anyway, recommend running the audit manually.
- Template not found in references/examples/ → fall back to
02-stateful-simple.md(most common case). - State.md corrupted → back up to
state.md.bak.<ts>, create freshstate.md, warn user. - Description exceeds 1,536 char cap → re-prompt for shorter version OR auto-truncate (preferring trigger phrases over prose).
- Body exceeds 500 lines at write time → suggest moving content to
references/files (progressive disclosure). </error_handling>
<success_criteria>
- New skill exists at
~/.claude/skills/<name>/SKILL.mdwith all required frontmatter fields - All chosen XML tags present per skill-class (stateless / stateful-simple / stateful-checkpointed / stateful-multi-actor)
- References specified in intake actually written to
references/ - Scripts specified are written + executable
- State file scaffolded if stateful (with format docs + empty section)
- Validation returns 0 🔴 findings
-
state.mdhas new COMPLETED entry with chosen template + audit results - Saved Rules accumulated if new patterns detected from this run
- The user can
/{new-skill-name}and the skill loads + responds quickly </success_criteria>
Direct actions the user can ask for
If the user explicitly requests something (not full skill creation), handle accordingly:
- "Audit my skill X" → run
bash scripts/validate-skill.sh X(and a deeper auditor if available); show findings with fix suggestions - "Standardize skill X" → read existing skill, diff against canonical scaffold, propose changes via
AskUserQuestion - "Convert command to skill" → migrate
~/.claude/commands/X.md→~/.claude/skills/X/SKILL.mdpreserving content + restructuring - "Show me the style guide" → display
references/skill-style.md - "Show compaction patterns" → display
references/compaction-patterns.md - "Show frontmatter fields" → display
references/frontmatter-fields.md - "List my skills" →
ls ~/.claude/skills/+ structured table with status - "Add Phase X to skill Y" → augment existing skill with new phase, validate
What this skill deliberately does NOT do
- Never modifies a skill without showing diff + getting Phase 5 preview approval
- Never auto-publishes (no auto-commit beyond the local skill dir; you commit when ready)
- Never modifies global
~/.claude/CLAUDE.mdwithout explicit ask - Never deletes a skill (only archives by adding
.disabledsuffix at the user's explicit request)