skill-creator
Create a skill or bring an existing one up to the same standard (validate + asm eval fix loop); run evals, tune triggering.
Skill by Luong NGUYEN <luongnv89@gmail.com>
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/luongnv89-skill-creator
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: writing, agent-building, prompt-engineering
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/skill-creator
What's inside
- Skill name
skill-creator- Description
- Create a skill or bring an existing one up to the same standard (validate + asm eval fix loop); run evals, tune triggering. Use when authoring, fixing, or retrofitting a skill. Don't use for invoking skills, writing prose, or Python scaffolds.
- License
- MIT
- Compatibility
- Python 3 for scripts/quick_validate.py; `asm` on PATH for the Gate 2 score check
- Metadata
- author: Luong NGUYEN <luongnv89@gmail.com> · version: 2.1.0
- Instructions
- 228 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (45)
- LICENSE.txt
- SKILL.md
- analyzer.md · agents/
- comparator.md · agents/
- grader.md · agents/
- eval_review.html · assets/
- README.md · docs/
- generate_review.py · eval-viewer/
- viewer.html · eval-viewer/
- category-playbook.md · references/
- cross-gate-tradeoffs.md · references/
- delegation-conversion.md · references/
- dependency-preflight.md · references/
- description-guide.md · references/
- description-optimization.md · references/
- environment-modes.md · references/
- eval-loop.md · references/
- exemplars.md · references/
- frontmatter-rules.md · references/
- human-review-audit.md · references/
- human-review.md · references/
- improving-existing.md · references/
- intent-interview.md · references/
- iteration.md · references/
- predictability-audit.md · references/
- predictability-rubric.md · references/
- readme-template.md · references/
- report-template.md · references/
- retrofit-loop.md · references/
- run-stats.md · references/
- schemas.md · references/
- skill-standard.md · references/
- subagent-patterns.md · references/
- validation-prompts.md · references/
- writing-guide.md · references/
- __init__.py · scripts/
- aggregate_benchmark.py · scripts/
- generate_report.py · scripts/
- improve_description.py · scripts/
- init_skill.py · scripts/
- package_skill.py · scripts/
- quick_validate.py · scripts/
- run_eval.py · scripts/
- run_loop.py · scripts/
- utils.py · scripts/
SKILL.md (first lines)
# Skill Creator
A skill for creating new skills and iteratively improving them. The agent's context budget is the primary constraint, so this SKILL.md links out to focused reference files.
The core loop:
1. Decide what the skill should do and how it should do it
2. Write a draft
3. Run test prompts against claude-with-access-to-the-skill
4. Evaluate results with the user (qualitative review via `eval-viewer/generate_review.py`, plus quantitative evals)
5. Revise the skill based on feedback and benchmarks
6. Repeat until satisfied; expand the test set and try again at scale
Identify where the user is in this loop and jump in there. New skill from scratch → start at step 1. Existing draft → jump to step 3 or 4. User wants to vibe-iterate without formal evals → support that. After the skill stabilizes, optionally run the description improver to optimize triggering.
## Two entry paths
The skill supports two distinct workflows. **Identify which one the user is on before you do anything else** — they don't share a starting step.
- **Path A — Create a new skill from scratch.** The user wants to capture a workflow, codify a pattern, or build a new capability. Start at **"Creating a skill"** below (Capture Intent → Interview → Write SKILL.md → Test → Eval).
- **Path B — Improve an existing skill.** The user points to a skill that already exists and wants it brought up to standard, fixed, optimized, or iterated based on eval feedback. **Do not start with Capture Intent** — the intent is already encoded in the existing SKILL.md. Start at **"Improving an existing skill"** below.
If the request is ambiguous ("can you look at this skill?"), assume **Path B** and confirm before interviewing as if it were new. Path B also fires when `/skill-creator` is invoked on a skill directory or file.
Both paths share the mandatory rules below: **Repo Sync Before Edits**, **Dependency Preflight**, **Version Management**, **YAML Frontmatter Safety**, and **Frontmatter Audit on Review/Evaluation**. Both close with the **Run stats** block. Both paths end at the same skill standard.
## The skill standard (both paths)
One bar for a created skill and an updated one — `references/skill-standard.md` holds the detail:
- **Gate 1 — must-pass floor.** `quick_validate.py` clean, the Frontmatter Audit, body under 500 lines and 3000 words, a negative-trigger clause, version and author, the README notice, script errors, dependency preflight when another skill is invoked, and the five human-review checks.
- **Gate 2 — asm-eval floor.** `overallScore > 85` AND `min(categories) >= 8`.
PASS only when both gates pass; anything else after the loop caps is a BLOCKER naming each failing check. Without `asm` on PATH, Gate 2 is **not measured** and the run never reports PASS. The predictability rubric stays advisory on both paths.
## Step Completion Reports
After each major step, print a compact status block — `√` pass, `×` fail, `—` context, a `Criteria` line, and a `Result: PASS | FAIL | PARTIAL` line — with checks tied to commands, file states, or counts. The block format and the per-phase checks (Intent Capture, Skill Writing, Testing, Iteration, Closing check) are in `references/writing-guide.md` → _Step Completion Reports_.
## Run stats (mandatory)
Every run that creates or updates a skill closes its summary with a run-stats block — the last thing printed, after the final Step Completion Report. It reports what the run **cost**, and nothing the run already reported.
Capture `run_started_epoch` **once**, in the same shell as the skill's first command — `cmd; ec=$?; date +%s >&2; exit "$ec"` — reading the epoch off stderr so stdout and the exit code stay intact. Set it there, not later: without the anchor `elapsed` prints `n/a`, and the block still has to print on an early stop.
```
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
Run stats elapsed 6m 04s · tokens 128,400 · cost $0.42
agents 3 · skills 1 · tool calls 47
```
Fields are fixed and in this order — never reordered, renamed, or added to: `elapsed`, `tokens`, `cost`, `agents`, `skills`, `tool calls`. Per-field formatting: `references/run-stats.md`.
- **`tokens` and `cost` are omitted entirely when the host reported no figure** — no dangling `·`, no placeholder. Never estimate one, and never reconstruct one from host transcripts or logs.
- **`elapsed`, `agents`, `skills`, and `tool calls` always print.** A value that cannot be determined prints the literal `n/a`; `0` is a determined value and is correct where it is true (a run that spawned no subagents prints `agents 0`).
- A missing optional figure never suppresses the rest of the block.
Print it on **every** path that finishes a create or update — Path A, Subpath B1, Subpath B2, and Subpath B3 — and at **every** terminal outcome: a PASS, a BLOCKER, the Phase 0 early exit, a failed prerequisite, an aborted run. Only a run that produced no output at all has no block.
## Communicating with the user
Users span a wide range of technical familiarity. Match jargon to context cues — terms like "JSON" or "assertion" need evidence the user knows them; briefly define terms when in doubt.
---
## Mandatory Rule for Repo-Mutating Skills
When creating or updating any skill that changes files in a git repository (code, docs, config, commits, publishing), include this rule in that skill's SKILL.md:
- Add a **"Repo Sync Before Edits (mandatory)"** section near the top requiring `branch="$(git rev-parse --abbrev-ref HEAD)"; git fetch origin && git pull --rebase origin "$branch"` before modifications.
- If the working tree is dirty: stash, sync, then pop.
- If `origin` is missing or conflicts occur: stop and ask the user before continuing.
Do not ship repo-mutating skills without this pre-sync guardrail.
## Mandatory Rule for Skills That Invoke Other Skills
Establish, for every skill you author or retrofit, whether it invokes, delegates to, or reads **another skill**. Ask it in the interview — _Does this skill invoke other skills?_ is Capture Intent question 6 — and confirm the answer against the draft: prose naming `/another-skill`, or a read under `~/.claude/skills/`, is a dependency even when the author said there were none.
- **It does** → declare each optional dependency in the frontmatter `dependencies` list and ship a `## Dependency Preflight (mandatory)` section above the first step that changes anything. The main agent acquires only a dependency whose branch it reaches with `asm deps acquire ... --session <caller-session-id>`, uses the returned path directly, and releases the session in caller-owned `finally`/shutdown handling.
- **It does not** → add nothing. No empty preflight section, no "no dependencies" placeholder.
Read `references/dependency-preflight.md` for the copyable template and the on-miss behavior. The skill standard's Gate 1 checks this same rule on both paths, so a skill that ships without a required gate fails its closing check.
## Frontmatter rules (mandatory)
Read `references/frontmatter-rules.md` for the full mandatory rules:
- **Version Management** — set `metadata.version: 1.0.0` on creation; bump patch/minor/major on every edit.
- **YAML Frontmatter Safety** — double-quote any string value containing YAML-special characters (full list in the reference).
- **Frontmatter Audit on Review/Evaluation** — required-field check, name/dir match, allowed top-level keys, `metadata.version`, `metadata.author`, YAML safety, and consistency with `docs/README.md`. Run `python scripts/quick_validate.py <skill-path>` first; it catches mechanical issues without LLM reasoning.
These rules apply on every write. Always confirm them before saving.
## Creating a skill
### Capture Intent
Read `references/intent-interview.md` and work it top to bottom. It carries:
- **The gate** — a skill earns its place only when the workflow is repeated, non-obvious, and stable. Recommend against creating it otherwise; the user can override.
- **The seven interview questions** — purpose, triggers, the expected output format, test cases, subagents (including per-step context delegation), skill dependencies, and model-invoked vs. user-invoked (`/skill-name` is orchestration the user runs deliberately — a pipeline, or an expensive or destructive action they confirm first).
- **Interview and research** — edge cases, example files, success criteria, available MCPs.
- **Branch mapping before drafting** — name the distinct modes the skill runs in, so branch-specific material is disclosed only on the branch that uses it.
Extract what the conversation already answers before asking the user anything; they fill the gaps and confirm.
### Write the SKILL.md
Before drafting, skim `references/exemplars.md` and imitate the archetype closest to this skill — workflow, knowledge, or orchestrator. Then, based on the user interview, fill in:
- **name**: 1-64 chars, lowercase letters/digits/hyphens, no consecutive hyphens, exactly matches parent directory. Enforced by `scripts/quick_validate.py`.
- **description**: When to trigger and what it does. Primary triggering mechanism. Single line, no newlines. Claude tends to _undertrigger_ — make descriptions a little "pushy", with negative triggers.
- **effort** (optional): `low | medium | high | xhigh | max`. Defaults to `high`.
- **metadata.version**: Semver string (see frontmatter rules).
- **compatibility**: Required tools or dependencies (rare).
#### Writing a good descriptionFrom luongnv89/asm, MIT.
More from luongnv89/asm
- 0.824score
refresh-index
luongnv89
Sync every enabled repo in the curated skill index and open a confirmation-gated PR.
SkillAFreshness: A★ 959Claude Code +9 - 0.824score
skill-index-updater
luongnv89
Add GitHub skill repos to the ASM index: clone, audit, eval, regenerate index, rebuild catalog, open PR.
SkillAFreshness: A★ 959Claude Code - 0.824score
find-me-skills
Luong NGUYEN <luongnv89@gmail.com>
Find Agent Skills for a goal the user cannot name yet, then export an installable bundle.
SkillAFreshness: A★ 959Claude Code +9 - 0.821score
skill-upstream-pr
luongnv89
Improve an open-source GitHub skill and open a friendly suggestion PR upstream: fork, run skill-creator's retrofit, attach asm eval before/after metrics.
SkillAFreshness: A★ 959Claude Code +9 - 0.821score
skill-install-improved
luongnv89
Install an improved variant of one named skill: resolve it by local path, repo, or name, run skill-creator's retrofit on a throwaway copy, then install the…
SkillAFreshness: A★ 959Claude Code +9 - 0.821score
skill-shortener
luongnv89
Refactor a too-long SKILL.md by progressive disclosure: measure token cost, classify every section KEEP/CUT/MOVE, shorten the body into references/ and…
SkillAFreshness: A★ 959Claude Code +9 - 0.807score
well-formed
luongnv89
Review pull request diffs for code smells, style issues, and safety problems before merging.
SkillAFreshness: A★ 959Claude Code +9 - 0.679score
runtime-budget-fail
Test
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA…
SkillAFreshness: A★ 959Claude Code +9 - 0.676score
runtime-budget-pass
Test
Short description that names a clear trigger.
SkillAFreshness: A★ 959Claude Code +9 - 0.673score
metadata-author-present-fail
luongnv89
Validate a skill.
SkillAFreshness: A★ 959Claude Code +9 - 0.673score
metadata-version-present-pass
Test
Validate a skill.
SkillAFreshness: A★ 959Claude Code +9 - 0.673score
metadata-version-semver-fail
Test
Validate a skill.
SkillAFreshness: A★ 959Claude Code +9
Compare and alternatives
Featured in
Signals
- Stars
- 959
- Forks
- 83
- Open issues
- 17
- Last commit (this folder)
- Oct 6, 2026 (20 days ago)
- Last release
- Oct 20, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 2.1.0
- License
- MIT
- Repository
- github.com/luongnv89/asm
- Website
- luongnv.com/asm
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Luong NGUYEN <luongnv89@gmail.com>
Cite this page
skill-creator. Agent Mart. https://agentmart.dev/skills/luongnv89-skill-creator (last updated 2026-10-24)