[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DHVT94VNM458TM4PBMT0XC":3,"skill-same:01M6DHVT94VNM458TM4PBMT0XC":279},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":16,"sourceHtmlUrl":17,"categories":18,"keywords":32,"publishedAt":59,"linkOnly":60,"markdownContent":61,"markdownBody":62,"frontMatter":63,"refName":68,"commitSha":69,"skillDirectory":70,"forksCount":71,"repositoryHtmlUrl":72,"repositoryHomepageUrl":73,"ownerHtmlUrl":74,"ownerBlogUrl":75,"ownerDescription":76,"updatedAt":77,"install":78,"resources":91},"01M6DHVT94VNM458TM4PBMT0XC","skill-creator",null,"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.","luongnv89\u002Fasm","luongnv89","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F3288457?v=4","01M6DHVDRYW79PQVAJZBW4V18N","Luong NGUYEN","01M6DHVDYJK5E6GDHG3EQ0NCBH",975,"MIT","https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002FSKILL.md",[19,24,27],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":25,"categoryName":26,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":28,"categoryName":29,"taxonomyType":30,"taxonomyTypeDesc":31},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58],"skill creator","creator","when","writing","for","path","bring","quick","scripts","authoring","prose","max","gate","evals","up","use","fix","check","eval","loop","run","create","validate","run evals","python","gmail","2026-11-10 10:12:30",false,"---\nname: \"skill-creator\"\ndescription: \"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.\"\nlicense: MIT\ncompatibility: \"Python 3 for scripts\u002Fquick_validate.py; `asm` on PATH for the Gate 2 score check\"\neffort: max\nmetadata:\n  version: 2.2.0\n  author: \"Luong NGUYEN \u003Cluongnv89@gmail.com>\"\n---\n\n# Skill Creator\n\nA 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.\n\nThe core loop:\n\n1. Decide what the skill should do and how it should do it\n2. Write a draft\n3. Run test prompts against claude-with-access-to-the-skill\n4. Evaluate results with the user (qualitative review via `eval-viewer\u002Fgenerate_review.py`, plus quantitative evals)\n5. Revise the skill based on feedback and benchmarks\n6. Repeat until satisfied; expand the test set and try again at scale\n\nIdentify 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.\n\n## Two entry paths\n\nThe skill supports two distinct workflows. **Identify which one the user is on before you do anything else** — they don't share a starting step.\n\n- **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).\n- **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.\n\nIf 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 `\u002Fskill-creator` is invoked on a skill directory or file.\n\nBoth paths share the mandatory rules below: **Repo Sync Before Edits**, **Dependency Preflight**, **Self-Improve**, **Version Management**, **YAML Frontmatter Safety**, and **Frontmatter Audit on Review\u002FEvaluation**. Both close with the **Run stats** block.\n\n## The skill standard (both paths)\n\nOne bar for a created skill and an updated one — `references\u002Fskill-standard.md` holds the detail:\n\n- **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, a `## Self-Improve` section, and the five human-review checks.\n- **Gate 2 — asm-eval floor.** `overallScore > 85` AND `min(categories) >= 8`.\n\nPASS 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.\n\n## Step Completion Reports\n\nAfter 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\u002Fwriting-guide.md` → _Step Completion Reports_.\n\n## Run stats (mandatory)\n\nEvery 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.\n\nCapture `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\u002Fa`, and the block still has to print on an early stop.\n\n```\n  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄\n  Run stats   elapsed 6m 04s · tokens 128,400 · cost $0.42\n              agents 3 · skills 1 · tool calls 47\n```\n\nFields are fixed and in this order — never reordered, renamed, or added to: `elapsed`, `tokens`, `cost`, `agents`, `skills`, `tool calls`. Per-field formatting: `references\u002Frun-stats.md`.\n\n- **`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.\n- **`elapsed`, `agents`, `skills`, and `tool calls` always print.** A value that cannot be determined prints the literal `n\u002Fa`; `0` is a determined value and is correct where it is true (a run that spawned no subagents prints `agents 0`).\n- A missing optional figure never suppresses the rest of the block.\n\nPrint 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.\n\n## Communicating with the user\n\nUsers 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.\n\n---\n\n## Mandatory Rule for Repo-Mutating Skills\n\nWhen 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:\n\n- 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.\n- If the working tree is dirty: stash, sync, then pop.\n- If `origin` is missing or conflicts occur: stop and ask the user before continuing.\n\nDo not ship repo-mutating skills without this pre-sync guardrail.\n\n## Mandatory Rule for Skills That Invoke Other Skills\n\nEstablish, 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 `\u002Fanother-skill`, or a read under `~\u002F.claude\u002Fskills\u002F`, is a dependency even when the author said there were none.\n\n- **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 \u003Ccaller-session-id>`, uses the returned path directly, and releases the session in caller-owned `finally`\u002Fshutdown handling.\n- **It does not** → add nothing. No empty preflight section, no \"no dependencies\" placeholder.\n\nRead `references\u002Fdependency-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.\n\n## Mandatory Rule for Every Skill: Self-Improve\n\nEvery skill you create or update carries a `## Self-Improve` section after its final step: a closing check that may propose one edit fitting the skill to the user's style, environment, and behavior — optional, and applied only on approval. Copy the template in `references\u002Fself-improve.md` and tailor its three signal bullets. Add the section when it is missing; keep an existing one, opt-out included, as it is.\n\n## Frontmatter rules (mandatory)\n\nRead `references\u002Ffrontmatter-rules.md` for the full mandatory rules:\n\n- **Version Management** — set `metadata.version: 1.0.0` on creation; bump patch\u002Fminor\u002Fmajor on every edit.\n- **YAML Frontmatter Safety** — double-quote any string value containing YAML-special characters (full list in the reference).\n- **Frontmatter Audit on Review\u002FEvaluation** — required-field check, name\u002Fdir match, allowed top-level keys, `metadata.version`, `metadata.author`, YAML safety, and consistency with `docs\u002FREADME.md`. Run `python scripts\u002Fquick_validate.py \u003Cskill-path>` first; it catches mechanical issues without LLM reasoning.\n\nThese rules apply on every write. Always confirm them before saving.\n\n## Creating a skill\n\n### Capture Intent\n\nRead `references\u002Fintent-interview.md` and work it top to bottom. It carries:\n\n- **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.\n- **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 (`\u002Fskill-name` is orchestration the user runs deliberately — a pipeline, or an expensive or destructive action they confirm first).\n- **Interview and research** — edge cases, example files, success criteria, available MCPs.\n- **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.\n\nExtract what the conversation already answers before asking the user anything; they fill the gaps and confirm.\n\n### Write the SKILL.md\n\nBefore drafting, skim `references\u002Fexemplars.md` and imitate the archetype closest to this skill — workflow, knowledge, or orchestrator. Then, based on the user interview, fill in:\n\n- **name**: 1-64 chars, lowercase letters\u002Fdigits\u002Fhyphens, no consecutive hyphens, exactly matches parent directory. Enforced by `scripts\u002Fquick_validate.py`.\n- **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.\n- **effort** (optional): `low | medium | high | xhigh | max`. Defaults to `high`.\n- **metadata.version**: Semver string (see frontmatter rules).\n- **compatibility**: Required tools or dependencies (rare).\n\n#### Writing a good description\n\nRead `references\u002Fdescription-guide.md` for the full guide: the pushy + negative-triggers pattern (a \"Don't use for ...\" clause naming 2–3 adjacent domains), one trigger per branch, and the three length limits. The rule that bites first: **target ≤250 characters** — Claude Code's `\u002Fskills` listing truncates tail-first beyond that, chopping the negative-trigger clause. `scripts\u002Fquick_validate.py` warns (non-fatal) when the negative clause looks missing.\n\n### Skill Writing Guide\n\nRead `references\u002Fwriting-guide.md`: anatomy, progressive disclosure, the Principle of Lack of Surprise, writing and workflow patterns, bundled-script errors, Step Completion Reports, writing style, `docs\u002FREADME.md` generation (`references\u002Freadme-template.md`), the 5-prompt test floor in `evals\u002Fevals.json` (`references\u002Fschemas.md`), and the pre-eval validation phases (`references\u002Fvalidation-prompts.md`).\n\n### Write for execution and human review\n\nApply the controlled-language rules in `references\u002Fwriting-guide.md` → _Controlled instructions_ when drafting or revising instructions. Define a human-review output contract for every skill using `references\u002Fhuman-review.md`. Read that reference when choosing the output format or evaluating whether the user can understand the result. Apply these standards on both creation and improvement paths.\n\nFor skill-creator's own final response, state the skill changes, checks actually run, untested behavior, and any decision requiring approval. If no approval is needed, say so. Keep this concise; retain the Step Completion Reports and final Run stats block.\n\n### Make it predictable (publish-ready by construction)\n\nThe goal of creating a skill here is a **predictable process** — the agent follows the same reliable path every run — and a skill that ships **publish-ready** and clears the skill standard (below) on its first closing check. Read `references\u002Fpredictability-rubric.md` for the full standard and its checkable pass\u002Ffail bar. The hooks you apply _while writing_:\n\n- **Demanding completion criteria.** End every major step with a bar the agent can _check_, not vibe — tied to a command, file state, or count. The Step Completion Reports format above is the vehicle. Strong criteria are what stop the agent declaring success early.\n- **Progressive disclosure for non-universal material.** Anything branch-specific, long, or not needed on every run goes to `references\u002F` behind a one-line pointer — this keeps context load low and SKILL.md under the caps. Its step-level analogue is **per-step context delegation**: a delegable step names the slice of `references\u002F` its worker needs and hands that slice over as the worker's `Input`, so the main agent never holds the whole tree (`references\u002Fsubagent-patterns.md` → _Per-Step Context Delegation_, which also says when the slice isn't worth taking).\n- **Leading words.** Name a recurring concept once with a short load-bearing term (\"atomic commit\", \"fail-soft\", \"publish-ready\") and reuse the term, rather than re-explaining it at each use.\n- **Pruning pass — run before finishing.** One explicit pass to cut duplication, stale sediment, sprawl, and no-op instructions (\"be careful\", \"use good judgment\"). This pass is what most often separates a skill that clears the standard first time from one that loops in the retrofit.\n\nBefore finishing, **walk all 7 rubric items** (the four hooks above plus invocation choice, branch mapping, and publish-ready) and emit the result as the `Predictability pass` row of the Skill Writing Step Completion Report. This makes the rubric walk visible instead of silent — a `×` is a fix-before-publish signal, not a blocker.\n\n### Adversarial review (mandatory before evals)\n\nThe drafting context cannot review its own draft — it fills every gap from memory instead of from the page. After the rubric walk, spawn a **fresh subagent** with the draft skill and phases 1–3 of `references\u002Fvalidation-prompts.md` (discovery, logic walk, edge-case attack); it returns trigger misses, ambiguous steps, and breaking prompts. Fix the real findings before running evals; carry the rest into the test set. If no Agent tool is available, run the phases yourself in a fresh session (see `references\u002Fenvironment-modes.md`).\n\n### Close with the skill standard (mandatory)\n\nAfter the adversarial review and evals, run `references\u002Fretrofit-loop.md` Phase 0 on the new skill. If both gates pass, finish. Otherwise continue that same loop from Phase 1 under the same caps, then report PASS or BLOCKER (`references\u002Fskill-standard.md`).\n\n## Running and evaluating test cases\n\nRead `references\u002Feval-loop.md` for the full 5-step sequence: spawn with-skill and baseline runs, draft assertions, capture timing, grade\u002Faggregate\u002Fview with `generate_review.py`, read `feedback.json`.\n\nDo NOT use `\u002Fskill-test` or any other testing skill — the flow in `references\u002Feval-loop.md` is the one this skill expects.\n\n## Improving an existing skill\n\nThis is **Path B**. Read `references\u002Fimproving-existing.md` and choose the subpath before Phase 0 — they don't share an opening move. Every subpath ends at `references\u002Fskill-standard.md`.\n\n- **Subpath B1 — retrofit to the standard (default).** \"Fix this skill,\" \"improve,\" \"bring up to standard,\" any ambiguous request. Follow `references\u002Fretrofit-loop.md`: Phases 0–7 measure both gates, apply `asm eval --fix`, repair Gate 1, then lift the lowest categories, capped at 8 iterations, 3 with no movement, or 2 regressions. Artifacts land in `.asm-improver\u002F` (`baseline.json`, `iter-N.json`, `report.md`). **Do not interview the user** — purpose and triggers are already encoded. Review-only: run Phase 0 and report, no edits.\n- **Subpath B2 — iterate on eval feedback.** The user has eval results or wants to run them. The opening move is the **eval loop**, not interviewing: `evals\u002Fmisfires.jsonl` first, then results and `feedback.json`, revise per `references\u002Fiteration.md`, audit frontmatter alongside, bump the version, re-run evals into a new `iteration-\u003CN+1>\u002F` directory.\n- **Subpath B3 — delegation conversion (opt-in).** Restructure heavy steps onto per-step context delegation via `references\u002Fdelegation-conversion.md` — only on a target that clears Gate 1, after user confirmation, outside the Phase 6 loop.\n\n## Description Optimization\n\nAfter creating or improving a skill, offer to optimize the description for better triggering accuracy. Read `references\u002Fdescription-optimization.md` for the full 4-step flow: generate trigger eval queries, review with the user via the HTML template, run the optimization loop with `run_loop.py`, apply the best description.\n\n### Package and Present (only if `present_files` tool is available)\n\nPackage the skill and present the resulting `.skill` file path so the user can install it:\n\n```bash\npython -m scripts.package_skill \u003Cpath\u002Fto\u002Fskill-folder>\n```\n\n## Environment-specific notes\n\nIf you're on Claude.ai (no subagents) or in Cowork (subagents but no browser), some mechanics change. Read `references\u002Fenvironment-modes.md` for the adapted flow.\n\n## Self-Improve\n\nOptional and propose-only. Before the Run stats block, check how skill-creator itself worked — feedback on the target skill is the task, not a signal. Look for a lasting mismatch: report or interview shape the user corrected (style), `asm`, Python, or a path that failed before a workaround worked (environment), a step the user skips or always answers the same way (behavior). Found → follow the template in `references\u002Fself-improve.md` from step 2; any edit goes to skill-creator's own files.\n\n---\n\n## Reference files\n\n`agents\u002F` holds instructions for specialized subagents — read one when you spawn that subagent:\n\n- `agents\u002Fgrader.md` — evaluate assertions against outputs\n- `agents\u002Fcomparator.md` — blind A\u002FB comparison between two outputs\n- `agents\u002Fanalyzer.md` — analyze why one version beat another\n\n`references\u002F` holds the material this SKILL.md links out to:\n\n| File                          | Contents                                                                |\n| ----------------------------- | ----------------------------------------------------------------------- |\n| `skill-standard.md`           | The two gates both paths end at; PASS\u002FBLOCKER; missing-`asm` rule       |\n| `retrofit-loop.md`            | Subpath B1 and the Path A closing check: Phases 0–7, caps, artifacts    |\n| `improving-existing.md`       | Path B selector: Subpaths B1, B2, B3                                    |\n| `frontmatter-rules.md`        | Version Management, YAML Safety, Frontmatter Audit, `--fix` normalizing |\n| `dependency-preflight.md`     | When a preflight gate is required and the template to emit              |\n| `self-improve.md`             | The Self-Improve template, tailoring, applying an approved change       |\n| `predictability-rubric.md`    | The 7-item predictability standard (advisory)                           |\n| `predictability-audit.md`     | The rubric as the retrofit loop's Phase 2b checklist                    |\n| `human-review.md`             | Output contract, format selection, interactive reports, understanding   |\n| `human-review-audit.md`       | Gate 1 detect\u002Frepair\u002Fre-check table for the five human-review checks    |\n| `category-playbook.md`        | Per-category Gate 2 fix patterns                                        |\n| `cross-gate-tradeoffs.md`     | Body length across the two gates; link out, don't inline                |\n| `delegation-conversion.md`    | Subpath B3 procedure                                                    |\n| `report-template.md`          | `.asm-improver\u002Freport.md` layouts: PASS, BLOCKER, B3                    |\n| `intent-interview.md`         | Path A opening: the gate, the 7 questions, branch mapping               |\n| `description-guide.md`        | Pushy + negative-trigger descriptions, length budget                    |\n| `exemplars.md`                | Three annotated exemplar skills to imitate                              |\n| `writing-guide.md`            | Anatomy, disclosure, patterns, errors, Step Completion Reports, tests   |\n| `schemas.md`                  | JSON structures for `evals.json`, `grading.json`, etc.                  |\n| `subagent-patterns.md`        | Agent tool use, per-step context delegation                             |\n| `validation-prompts.md`       | The 4 validation phases; 1–3 script the adversarial review              |\n| `eval-loop.md`                | The 5-step eval run \u002F grade \u002F viewer flow                               |\n| `iteration.md`                | Revising from feedback; blind comparison                                |\n| `description-optimization.md` | 4-step description-tuning workflow                                      |\n| `environment-modes.md`        | Claude.ai and Cowork adaptations                                        |\n| `readme-template.md`          | AI-skip notice and template for `docs\u002FREADME.md`                        |\n| `run-stats.md`                | Run-stats field definitions and the start-epoch capture                 |\n\n---\n\nIn any task list, include \"Create evals JSON and run `eval-viewer\u002Fgenerate_review.py` for human review\" — especially in Cowork, where it's easy to skip.\n","# Skill Creator\n\nA 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.\n\nThe core loop:\n\n1. Decide what the skill should do and how it should do it\n2. Write a draft\n3. Run test prompts against claude-with-access-to-the-skill\n4. Evaluate results with the user (qualitative review via `eval-viewer\u002Fgenerate_review.py`, plus quantitative evals)\n5. Revise the skill based on feedback and benchmarks\n6. Repeat until satisfied; expand the test set and try again at scale\n\nIdentify 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.\n\n## Two entry paths\n\nThe skill supports two distinct workflows. **Identify which one the user is on before you do anything else** — they don't share a starting step.\n\n- **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).\n- **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.\n\nIf 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 `\u002Fskill-creator` is invoked on a skill directory or file.\n\nBoth paths share the mandatory rules below: **Repo Sync Before Edits**, **Dependency Preflight**, **Self-Improve**, **Version Management**, **YAML Frontmatter Safety**, and **Frontmatter Audit on Review\u002FEvaluation**. Both close with the **Run stats** block.\n\n## The skill standard (both paths)\n\nOne bar for a created skill and an updated one — `references\u002Fskill-standard.md` holds the detail:\n\n- **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, a `## Self-Improve` section, and the five human-review checks.\n- **Gate 2 — asm-eval floor.** `overallScore > 85` AND `min(categories) >= 8`.\n\nPASS 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.\n\n## Step Completion Reports\n\nAfter 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\u002Fwriting-guide.md` → _Step Completion Reports_.\n\n## Run stats (mandatory)\n\nEvery 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.\n\nCapture `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\u002Fa`, and the block still has to print on an early stop.\n\n```\n  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄\n  Run stats   elapsed 6m 04s · tokens 128,400 · cost $0.42\n              agents 3 · skills 1 · tool calls 47\n```\n\nFields are fixed and in this order — never reordered, renamed, or added to: `elapsed`, `tokens`, `cost`, `agents`, `skills`, `tool calls`. Per-field formatting: `references\u002Frun-stats.md`.\n\n- **`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.\n- **`elapsed`, `agents`, `skills`, and `tool calls` always print.** A value that cannot be determined prints the literal `n\u002Fa`; `0` is a determined value and is correct where it is true (a run that spawned no subagents prints `agents 0`).\n- A missing optional figure never suppresses the rest of the block.\n\nPrint 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.\n\n## Communicating with the user\n\nUsers 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.\n\n---\n\n## Mandatory Rule for Repo-Mutating Skills\n\nWhen 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:\n\n- 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.\n- If the working tree is dirty: stash, sync, then pop.\n- If `origin` is missing or conflicts occur: stop and ask the user before continuing.\n\nDo not ship repo-mutating skills without this pre-sync guardrail.\n\n## Mandatory Rule for Skills That Invoke Other Skills\n\nEstablish, 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 `\u002Fanother-skill`, or a read under `~\u002F.claude\u002Fskills\u002F`, is a dependency even when the author said there were none.\n\n- **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 \u003Ccaller-session-id>`, uses the returned path directly, and releases the session in caller-owned `finally`\u002Fshutdown handling.\n- **It does not** → add nothing. No empty preflight section, no \"no dependencies\" placeholder.\n\nRead `references\u002Fdependency-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.\n\n## Mandatory Rule for Every Skill: Self-Improve\n\nEvery skill you create or update carries a `## Self-Improve` section after its final step: a closing check that may propose one edit fitting the skill to the user's style, environment, and behavior — optional, and applied only on approval. Copy the template in `references\u002Fself-improve.md` and tailor its three signal bullets. Add the section when it is missing; keep an existing one, opt-out included, as it is.\n\n## Frontmatter rules (mandatory)\n\nRead `references\u002Ffrontmatter-rules.md` for the full mandatory rules:\n\n- **Version Management** — set `metadata.version: 1.0.0` on creation; bump patch\u002Fminor\u002Fmajor on every edit.\n- **YAML Frontmatter Safety** — double-quote any string value containing YAML-special characters (full list in the reference).\n- **Frontmatter Audit on Review\u002FEvaluation** — required-field check, name\u002Fdir match, allowed top-level keys, `metadata.version`, `metadata.author`, YAML safety, and consistency with `docs\u002FREADME.md`. Run `python scripts\u002Fquick_validate.py \u003Cskill-path>` first; it catches mechanical issues without LLM reasoning.\n\nThese rules apply on every write. Always confirm them before saving.\n\n## Creating a skill\n\n### Capture Intent\n\nRead `references\u002Fintent-interview.md` and work it top to bottom. It carries:\n\n- **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.\n- **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 (`\u002Fskill-name` is orchestration the user runs deliberately — a pipeline, or an expensive or destructive action they confirm first).\n- **Interview and research** — edge cases, example files, success criteria, available MCPs.\n- **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.\n\nExtract what the conversation already answers before asking the user anything; they fill the gaps and confirm.\n\n### Write the SKILL.md\n\nBefore drafting, skim `references\u002Fexemplars.md` and imitate the archetype closest to this skill — workflow, knowledge, or orchestrator. Then, based on the user interview, fill in:\n\n- **name**: 1-64 chars, lowercase letters\u002Fdigits\u002Fhyphens, no consecutive hyphens, exactly matches parent directory. Enforced by `scripts\u002Fquick_validate.py`.\n- **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.\n- **effort** (optional): `low | medium | high | xhigh | max`. Defaults to `high`.\n- **metadata.version**: Semver string (see frontmatter rules).\n- **compatibility**: Required tools or dependencies (rare).\n\n#### Writing a good description\n\nRead `references\u002Fdescription-guide.md` for the full guide: the pushy + negative-triggers pattern (a \"Don't use for ...\" clause naming 2–3 adjacent domains), one trigger per branch, and the three length limits. The rule that bites first: **target ≤250 characters** — Claude Code's `\u002Fskills` listing truncates tail-first beyond that, chopping the negative-trigger clause. `scripts\u002Fquick_validate.py` warns (non-fatal) when the negative clause looks missing.\n\n### Skill Writing Guide\n\nRead `references\u002Fwriting-guide.md`: anatomy, progressive disclosure, the Principle of Lack of Surprise, writing and workflow patterns, bundled-script errors, Step Completion Reports, writing style, `docs\u002FREADME.md` generation (`references\u002Freadme-template.md`), the 5-prompt test floor in `evals\u002Fevals.json` (`references\u002Fschemas.md`), and the pre-eval validation phases (`references\u002Fvalidation-prompts.md`).\n\n### Write for execution and human review\n\nApply the controlled-language rules in `references\u002Fwriting-guide.md` → _Controlled instructions_ when drafting or revising instructions. Define a human-review output contract for every skill using `references\u002Fhuman-review.md`. Read that reference when choosing the output format or evaluating whether the user can understand the result. Apply these standards on both creation and improvement paths.\n\nFor skill-creator's own final response, state the skill changes, checks actually run, untested behavior, and any decision requiring approval. If no approval is needed, say so. Keep this concise; retain the Step Completion Reports and final Run stats block.\n\n### Make it predictable (publish-ready by construction)\n\nThe goal of creating a skill here is a **predictable process** — the agent follows the same reliable path every run — and a skill that ships **publish-ready** and clears the skill standard (below) on its first closing check. Read `references\u002Fpredictability-rubric.md` for the full standard and its checkable pass\u002Ffail bar. The hooks you apply _while writing_:\n\n- **Demanding completion criteria.** End every major step with a bar the agent can _check_, not vibe — tied to a command, file state, or count. The Step Completion Reports format above is the vehicle. Strong criteria are what stop the agent declaring success early.\n- **Progressive disclosure for non-universal material.** Anything branch-specific, long, or not needed on every run goes to `references\u002F` behind a one-line pointer — this keeps context load low and SKILL.md under the caps. Its step-level analogue is **per-step context delegation**: a delegable step names the slice of `references\u002F` its worker needs and hands that slice over as the worker's `Input`, so the main agent never holds the whole tree (`references\u002Fsubagent-patterns.md` → _Per-Step Context Delegation_, which also says when the slice isn't worth taking).\n- **Leading words.** Name a recurring concept once with a short load-bearing term (\"atomic commit\", \"fail-soft\", \"publish-ready\") and reuse the term, rather than re-explaining it at each use.\n- **Pruning pass — run before finishing.** One explicit pass to cut duplication, stale sediment, sprawl, and no-op instructions (\"be careful\", \"use good judgment\"). This pass is what most often separates a skill that clears the standard first time from one that loops in the retrofit.\n\nBefore finishing, **walk all 7 rubric items** (the four hooks above plus invocation choice, branch mapping, and publish-ready) and emit the result as the `Predictability pass` row of the Skill Writing Step Completion Report. This makes the rubric walk visible instead of silent — a `×` is a fix-before-publish signal, not a blocker.\n\n### Adversarial review (mandatory before evals)\n\nThe drafting context cannot review its own draft — it fills every gap from memory instead of from the page. After the rubric walk, spawn a **fresh subagent** with the draft skill and phases 1–3 of `references\u002Fvalidation-prompts.md` (discovery, logic walk, edge-case attack); it returns trigger misses, ambiguous steps, and breaking prompts. Fix the real findings before running evals; carry the rest into the test set. If no Agent tool is available, run the phases yourself in a fresh session (see `references\u002Fenvironment-modes.md`).\n\n### Close with the skill standard (mandatory)\n\nAfter the adversarial review and evals, run `references\u002Fretrofit-loop.md` Phase 0 on the new skill. If both gates pass, finish. Otherwise continue that same loop from Phase 1 under the same caps, then report PASS or BLOCKER (`references\u002Fskill-standard.md`).\n\n## Running and evaluating test cases\n\nRead `references\u002Feval-loop.md` for the full 5-step sequence: spawn with-skill and baseline runs, draft assertions, capture timing, grade\u002Faggregate\u002Fview with `generate_review.py`, read `feedback.json`.\n\nDo NOT use `\u002Fskill-test` or any other testing skill — the flow in `references\u002Feval-loop.md` is the one this skill expects.\n\n## Improving an existing skill\n\nThis is **Path B**. Read `references\u002Fimproving-existing.md` and choose the subpath before Phase 0 — they don't share an opening move. Every subpath ends at `references\u002Fskill-standard.md`.\n\n- **Subpath B1 — retrofit to the standard (default).** \"Fix this skill,\" \"improve,\" \"bring up to standard,\" any ambiguous request. Follow `references\u002Fretrofit-loop.md`: Phases 0–7 measure both gates, apply `asm eval --fix`, repair Gate 1, then lift the lowest categories, capped at 8 iterations, 3 with no movement, or 2 regressions. Artifacts land in `.asm-improver\u002F` (`baseline.json`, `iter-N.json`, `report.md`). **Do not interview the user** — purpose and triggers are already encoded. Review-only: run Phase 0 and report, no edits.\n- **Subpath B2 — iterate on eval feedback.** The user has eval results or wants to run them. The opening move is the **eval loop**, not interviewing: `evals\u002Fmisfires.jsonl` first, then results and `feedback.json`, revise per `references\u002Fiteration.md`, audit frontmatter alongside, bump the version, re-run evals into a new `iteration-\u003CN+1>\u002F` directory.\n- **Subpath B3 — delegation conversion (opt-in).** Restructure heavy steps onto per-step context delegation via `references\u002Fdelegation-conversion.md` — only on a target that clears Gate 1, after user confirmation, outside the Phase 6 loop.\n\n## Description Optimization\n\nAfter creating or improving a skill, offer to optimize the description for better triggering accuracy. Read `references\u002Fdescription-optimization.md` for the full 4-step flow: generate trigger eval queries, review with the user via the HTML template, run the optimization loop with `run_loop.py`, apply the best description.\n\n### Package and Present (only if `present_files` tool is available)\n\nPackage the skill and present the resulting `.skill` file path so the user can install it:\n\n```bash\npython -m scripts.package_skill \u003Cpath\u002Fto\u002Fskill-folder>\n```\n\n## Environment-specific notes\n\nIf you're on Claude.ai (no subagents) or in Cowork (subagents but no browser), some mechanics change. Read `references\u002Fenvironment-modes.md` for the adapted flow.\n\n## Self-Improve\n\nOptional and propose-only. Before the Run stats block, check how skill-creator itself worked — feedback on the target skill is the task, not a signal. Look for a lasting mismatch: report or interview shape the user corrected (style), `asm`, Python, or a path that failed before a workaround worked (environment), a step the user skips or always answers the same way (behavior). Found → follow the template in `references\u002Fself-improve.md` from step 2; any edit goes to skill-creator's own files.\n\n---\n\n## Reference files\n\n`agents\u002F` holds instructions for specialized subagents — read one when you spawn that subagent:\n\n- `agents\u002Fgrader.md` — evaluate assertions against outputs\n- `agents\u002Fcomparator.md` — blind A\u002FB comparison between two outputs\n- `agents\u002Fanalyzer.md` — analyze why one version beat another\n\n`references\u002F` holds the material this SKILL.md links out to:\n\n| File                          | Contents                                                                |\n| ----------------------------- | ----------------------------------------------------------------------- |\n| `skill-standard.md`           | The two gates both paths end at; PASS\u002FBLOCKER; missing-`asm` rule       |\n| `retrofit-loop.md`            | Subpath B1 and the Path A closing check: Phases 0–7, caps, artifacts    |\n| `improving-existing.md`       | Path B selector: Subpaths B1, B2, B3                                    |\n| `frontmatter-rules.md`        | Version Management, YAML Safety, Frontmatter Audit, `--fix` normalizing |\n| `dependency-preflight.md`     | When a preflight gate is required and the template to emit              |\n| `self-improve.md`             | The Self-Improve template, tailoring, applying an approved change       |\n| `predictability-rubric.md`    | The 7-item predictability standard (advisory)                           |\n| `predictability-audit.md`     | The rubric as the retrofit loop's Phase 2b checklist                    |\n| `human-review.md`             | Output contract, format selection, interactive reports, understanding   |\n| `human-review-audit.md`       | Gate 1 detect\u002Frepair\u002Fre-check table for the five human-review checks    |\n| `category-playbook.md`        | Per-category Gate 2 fix patterns                                        |\n| `cross-gate-tradeoffs.md`     | Body length across the two gates; link out, don't inline                |\n| `delegation-conversion.md`    | Subpath B3 procedure                                                    |\n| `report-template.md`          | `.asm-improver\u002Freport.md` layouts: PASS, BLOCKER, B3                    |\n| `intent-interview.md`         | Path A opening: the gate, the 7 questions, branch mapping               |\n| `description-guide.md`        | Pushy + negative-trigger descriptions, length budget                    |\n| `exemplars.md`                | Three annotated exemplar skills to imitate                              |\n| `writing-guide.md`            | Anatomy, disclosure, patterns, errors, Step Completion Reports, tests   |\n| `schemas.md`                  | JSON structures for `evals.json`, `grading.json`, etc.                  |\n| `subagent-patterns.md`        | Agent tool use, per-step context delegation                             |\n| `validation-prompts.md`       | The 4 validation phases; 1–3 script the adversarial review              |\n| `eval-loop.md`                | The 5-step eval run \u002F grade \u002F viewer flow                               |\n| `iteration.md`                | Revising from feedback; blind comparison                                |\n| `description-optimization.md` | 4-step description-tuning workflow                                      |\n| `environment-modes.md`        | Claude.ai and Cowork adaptations                                        |\n| `readme-template.md`          | AI-skip notice and template for `docs\u002FREADME.md`                        |\n| `run-stats.md`                | Run-stats field definitions and the start-epoch capture                 |\n\n---\n\nIn any task list, include \"Create evals JSON and run `eval-viewer\u002Fgenerate_review.py` for human review\" — especially in Cowork, where it's easy to skip.\n",{"name":5,"effort":44,"license":15,"metadata":64,"description":7,"compatibility":67},{"author":65,"version":66},"Luong NGUYEN \u003Cluongnv89@gmail.com>","2.2.0","Python 3 for scripts\u002Fquick_validate.py; `asm` on PATH for the Gate 2 score check","main","65fbfb16db2df92eeabe0d8aa36a3ca9c97f81cc","skills\u002Fskill-creator",87,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm","https:\u002F\u002Fluongnv.com\u002Fasm","https:\u002F\u002Fgithub.com\u002Fluongnv89","https:\u002F\u002Fluongnv.com","Agentic AI & Security Engineer, Paris. Tools and guides for AI coding agents: claude-howto, asm, IDD. Learn, build, share, connect.","2026-11-14 21:37:38",{"source":8,"skillName":5,"commands":79,"prompt":89,"zipAvailable":90},[80,83,86],{"tool":81,"command":82},"npx","npx skills add luongnv89\u002Fasm --skill skill-creator",{"tool":84,"command":85},"bunx","bunx skills add luongnv89\u002Fasm --skill skill-creator",{"tool":87,"command":88},"pnpm","pnpm dlx skills add luongnv89\u002Fasm --skill skill-creator","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002FSKILL.md",true,[92,98,102,106,112,116,122,126,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191,195,199,203,207,211,215,219,223,227,231,235,239,243,247,251,255,259,263,267,271,275],{"path":93,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":96,"sourceHtmlUrl":97},"agents\u002Fanalyzer.md","REFERENCE","参考文档",10545,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Fagents\u002Fanalyzer.md",{"path":99,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":100,"sourceHtmlUrl":101},"agents\u002Fcomparator.md",7567,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Fagents\u002Fcomparator.md",{"path":103,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":104,"sourceHtmlUrl":105},"agents\u002Fgrader.md",10616,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Fagents\u002Fgrader.md",{"path":107,"resourceType":108,"resourceTypeDesc":109,"sizeBytes":110,"sourceHtmlUrl":111},"assets\u002Feval_review.html","ASSET","资产文件",8502,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Fassets\u002Feval_review.html",{"path":113,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":114,"sourceHtmlUrl":115},"docs\u002FREADME.md",6818,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Fdocs\u002FREADME.md",{"path":117,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":120,"sourceHtmlUrl":121},"eval-viewer\u002Fgenerate_review.py","SCRIPT","脚本",16365,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Feval-viewer\u002Fgenerate_review.py",{"path":123,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":124,"sourceHtmlUrl":125},"eval-viewer\u002Fviewer.html",56019,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Feval-viewer\u002Fviewer.html",{"path":127,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":130,"sourceHtmlUrl":16},"LICENSE.txt","LICENSE","许可证",11358,{"path":132,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":133,"sourceHtmlUrl":134},"references\u002Fcategory-playbook.md",9585,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fcategory-playbook.md",{"path":136,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":137,"sourceHtmlUrl":138},"references\u002Fcross-gate-tradeoffs.md",1497,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fcross-gate-tradeoffs.md",{"path":140,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":141,"sourceHtmlUrl":142},"references\u002Fdelegation-conversion.md",7574,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fdelegation-conversion.md",{"path":144,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":145,"sourceHtmlUrl":146},"references\u002Fdependency-preflight.md",4584,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fdependency-preflight.md",{"path":148,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":149,"sourceHtmlUrl":150},"references\u002Fdescription-guide.md",2676,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fdescription-guide.md",{"path":152,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":153,"sourceHtmlUrl":154},"references\u002Fdescription-optimization.md",5645,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fdescription-optimization.md",{"path":156,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":157,"sourceHtmlUrl":158},"references\u002Fenvironment-modes.md",4463,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fenvironment-modes.md",{"path":160,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":161,"sourceHtmlUrl":162},"references\u002Feval-loop.md",10612,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Feval-loop.md",{"path":164,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":165,"sourceHtmlUrl":166},"references\u002Fexemplars.md",13470,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fexemplars.md",{"path":168,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":169,"sourceHtmlUrl":170},"references\u002Ffrontmatter-rules.md",7895,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Ffrontmatter-rules.md",{"path":172,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":173,"sourceHtmlUrl":174},"references\u002Fhuman-review-audit.md",12135,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fhuman-review-audit.md",{"path":176,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":177,"sourceHtmlUrl":178},"references\u002Fhuman-review.md",7896,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fhuman-review.md",{"path":180,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":181,"sourceHtmlUrl":182},"references\u002Fimproving-existing.md",3540,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fimproving-existing.md",{"path":184,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":185,"sourceHtmlUrl":186},"references\u002Fintent-interview.md",4496,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fintent-interview.md",{"path":188,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":189,"sourceHtmlUrl":190},"references\u002Fiteration.md",6671,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fiteration.md",{"path":192,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":193,"sourceHtmlUrl":194},"references\u002Fpredictability-audit.md",9178,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fpredictability-audit.md",{"path":196,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":197,"sourceHtmlUrl":198},"references\u002Fpredictability-rubric.md",10241,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fpredictability-rubric.md",{"path":200,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":201,"sourceHtmlUrl":202},"references\u002Freadme-template.md",3547,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Freadme-template.md",{"path":204,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":205,"sourceHtmlUrl":206},"references\u002Freport-template.md",10990,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Freport-template.md",{"path":208,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":209,"sourceHtmlUrl":210},"references\u002Fretrofit-loop.md",16707,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fretrofit-loop.md",{"path":212,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":213,"sourceHtmlUrl":214},"references\u002Frun-stats.md",2065,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Frun-stats.md",{"path":216,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":217,"sourceHtmlUrl":218},"references\u002Fschemas.md",14503,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fschemas.md",{"path":220,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":221,"sourceHtmlUrl":222},"references\u002Fself-improve.md",9010,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fself-improve.md",{"path":224,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":225,"sourceHtmlUrl":226},"references\u002Fskill-standard.md",7808,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fskill-standard.md",{"path":228,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":229,"sourceHtmlUrl":230},"references\u002Fsubagent-patterns.md",20857,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fsubagent-patterns.md",{"path":232,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":233,"sourceHtmlUrl":234},"references\u002Fvalidation-prompts.md",6887,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fvalidation-prompts.md",{"path":236,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":237,"sourceHtmlUrl":238},"references\u002Fwriting-guide.md",16509,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Freferences\u002Fwriting-guide.md",{"path":240,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":241,"sourceHtmlUrl":242},"scripts\u002F__init__.py",0,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Fscripts\u002F__init__.py",{"path":244,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":245,"sourceHtmlUrl":246},"scripts\u002Faggregate_benchmark.py",14420,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Fscripts\u002Faggregate_benchmark.py",{"path":248,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":249,"sourceHtmlUrl":250},"scripts\u002Fgenerate_report.py",12847,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Fscripts\u002Fgenerate_report.py",{"path":252,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":253,"sourceHtmlUrl":254},"scripts\u002Fimprove_description.py",10722,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Fscripts\u002Fimprove_description.py",{"path":256,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":257,"sourceHtmlUrl":258},"scripts\u002Finit_skill.py",14613,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Fscripts\u002Finit_skill.py",{"path":260,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":261,"sourceHtmlUrl":262},"scripts\u002Fpackage_skill.py",4414,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Fscripts\u002Fpackage_skill.py",{"path":264,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":265,"sourceHtmlUrl":266},"scripts\u002Fquick_validate.py",8484,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Fscripts\u002Fquick_validate.py",{"path":268,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":269,"sourceHtmlUrl":270},"scripts\u002Frun_eval.py",11464,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Fscripts\u002Frun_eval.py",{"path":272,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":273,"sourceHtmlUrl":274},"scripts\u002Frun_loop.py",13685,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Fscripts\u002Frun_loop.py",{"path":276,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":277,"sourceHtmlUrl":278},"scripts\u002Futils.py",1661,"https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Fscripts\u002Futils.py",[280,302,311,333,351,360],{"skillNo":281,"name":282,"nameZh":6,"description":283,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":284,"categories":285,"keywords":286,"publishedAt":59},"01M6DHXQFRH26RCJBCFGCWKCF2","well-formed","Review pull request diffs for code smells, style issues, and safety problems before merging.","https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fwell-formed\u002FSKILL.md",[],[287,288,289,37,290,291,292,293,294,295,296,297,298,299,300,301],"well formed","read","style","request","fixtures","review pull request","review","code smells","grep","diffs","pull request","code","issues","pull","Safety",{"skillNo":303,"name":304,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":305,"categories":306,"keywords":307,"publishedAt":59},"01M6DHXN16BAWWPQZM7RQ6GPKC","missing-frontmatter","https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fmissing-frontmatter\u002FSKILL.md",[],[308,309,310],"missing","missing frontmatter","frontmatter",{"skillNo":312,"name":313,"nameZh":6,"description":314,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":315,"categories":316,"keywords":320,"publishedAt":59},"01M6WQBQGDN448GBBCPHFZQQAZ","hello-world","A minimal test skill that greets the user and demonstrates the ASM publish workflow.","https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fhello-world\u002FSKILL.md",[317],{"categoryNo":318,"categoryName":319,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000008","测试与质量",[321,322,323,324,325,326,298,327,328,329,330,331,332],"hello world","hello","world","workflow","test","Test Skill","demo","publish","user","minimal","test, demo","minimal test skill",{"skillNo":334,"name":335,"nameZh":6,"description":336,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":337,"categories":338,"keywords":342,"publishedAt":59},"01M6DHXJV89CFQT467DJXHYG3Z","runtime-budget-pass","Short description that names a clear trigger. Don't use for unrelated docs.","https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fsrc\u002Feval\u002Fproviders\u002Fskill-best-practice\u002Fv1\u002Ffixtures\u002Fruntime-budget-pass\u002FSKILL.md",[339],{"categoryNo":340,"categoryName":341,"taxonomyType":30,"taxonomyTypeDesc":31},"01JBSEEDCAT000000000000040","财务",[343,344,345,346,347,325,348,48,349,350,37],"runtime budget pass","runtime","Budget","unrelated","docs","short","clear","trigger",{"skillNo":352,"name":353,"nameZh":6,"description":354,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":355,"categories":356,"keywords":358,"publishedAt":59},"01M6DHXGJ8Q1C5W2WGY47K8MGJ","runtime-budget-fail","AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fsrc\u002Feval\u002Fproviders\u002Fskill-best-practice\u002Fv1\u002Ffixtures\u002Fruntime-budget-fail\u002FSKILL.md",[357],{"categoryNo":340,"categoryName":341,"taxonomyType":30,"taxonomyTypeDesc":31},[344,359,345,325],"runtime budget fail",{"skillNo":361,"name":362,"nameZh":6,"description":363,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":364,"categories":365,"keywords":366,"publishedAt":59},"01M6DHXDJ2SJ6R8AJPXCW6GMN8","metadata-version-semver-pass","Validate a skill. Don't use for unrelated docs.","https:\u002F\u002Fgithub.com\u002Fluongnv89\u002Fasm\u002Fblob\u002Fmain\u002Fsrc\u002Feval\u002Fproviders\u002Fskill-best-practice\u002Fv1\u002Ffixtures\u002Fmetadata-version-semver-pass\u002FSKILL.md",[],[367,368,369,370,325,55,48,346,37,347],"metadata version semver pass","version","metadata","semver"]