SuperAPI AI Directory

zmm-skillify

General & other

View repository

Updated 10-15 22:16

About this skill

zmm-skillify: solidifying a proven approach into a skill

First read config.yaml(if it cannot be read → state plainly that the configuration is missing and stop; do not use sample values to pretend they are the user's settings), then read zmm/references/交互规范.md(🔴 It is not read once and done: when wrapping up, follow §4's three-piece set — Recap · Before/After · next step gives numbered options; if information is missing, follow §4 and usemultiple-choice questionsto ask,only one at a time; for cases where it does not apply, see §5), then read zmm/references/家族公约.md, then read memory {config.paths.memory}/zmm-skillify/ + _通用/。

This skill's built-in criteria are in references/规则卡.md(criteria / why / how to check / strength); read it once before starting;{vault} when there is a corresponding rule file in the vault, the vault takes precedence and the rule card is the base.


🔴 Gatekeeper: if it has not been proven, it must not be solidified

This skill distills only from "a process that has already produced correct results." When entering, first check three things; if any is missing → explain what is missing and stop:

What to check When not satisfied
Has something really been completed in this session Only discussion, no output → "there is nothing to solidify yet; finish this thing first"
Has the result been verified(user approval / data / an inspectable output) Not verified → "this approach has not yet been proven effective; solidifying it is equivalent to writing unverified experience into a rule"
Will it happen again One-time → "this thing is unlikely to recur, and the benefit of solidifying it is negative" — you may keep only a record, and not make it a skill

⚠️ Do not skip the gatekeeper just because the user says "turn it into a skill." What the user wants is to save effort next time, not to have one more inaccurate skill.


Where to distill from: three sources, ordered by credibility

  1. The actual process of this session — the most credible. It was really done, there was output, and there was feedback.
  2. {config.paths.memory} The skill memory in — corrections and effective methods accumulated previously.
  3. The user's spoken "what I usually do" —— 🔴 Least credible. People's descriptions of their own processes and their actual practices are often different. They can only be used as clues; you must go back to ① or ② to find evidence; if none can be found, mark it as "unverified" in the finished product.

When the three conflict, ① takes precedence, and write the conflict itself into the skill ("what he said is X, what he actually did is Y, and Y takes precedence" is often the most valuable rule).


Five steps

Step 1 · Write out the problem contract

反复出现的问题:
什么情境下会遇到:
这次是怎么解决的(按实际发生的顺序,不是理想顺序):
产出物是什么:
凭什么算做完了(可检查的证据,不是「感觉good」):
明确不处理的邻近问题:

🔴 "What counts as done" cannot be written as inspectable evidence → stop. A skill without a completion criterion means no one will know next time whether it ran correctly.

Step 2 · Translate "good to use" into observable behavior

Users will say "it needs to be written naturally" or "the judgment needs to be accurate."These cannot go into a skill.They must be translated into something checkable:

必须做到(可观察):
禁止出现(可观察):
允许它自己发挥的部分:
最容易出的那个错:
出错时应该怎样(停下问 / 降级 / 明说做不到):

Compare: "Judges accurately" ❌ → "Candidates must be chosen from the actually listed set; anything not listed must not be invented" ✅

Step 3 · Set the credibility level of the criteria

The family convention requires every conclusion to be labeled with its source.Every rule in the new skill must carry a level:

Level When to use it How to write it
🟢 Empirically tested There is a concrete case backing it from this session or history State the cost clearly: "Empirical cost: a full rewrite"
🟡 Inferred Derived from empirical testing, but not directly verified Must add one sentence: "If this is wrong, where is it most likely to be wrong"
⚪ Guess It just sounds right By default, do not write it into the skill. If you insist on writing it, mark it clearly, and it must not be used as a criterion

🔴 Do not write 🟡 and ⚪ in the tone of 🟢. This is the easiest mistake to make in the family.

Step 4 · Generate the skill directory and self-check

zmm-<名字>/
  SKILL.md          入口:门禁 + 主流程 + 停止条件 + 红线
  references/       条件性细节(只在某些情况下才读的)
  scripts/          重复且确定的活(能用脚本就别让模型算)

Keep the main entry light: SKILL.md only contains what must be followed every time; branch details go into references/。

Self-check list, go through item by item:

  • frontmatter has name(ASCII slug, consistent with the directory name),description(including Chinese trigger words),version
  • The description clearly stateswhen it should be used, not just what it can do
  • Has gates: under what circumstances itshould notbe used and should stop
  • Every rule carries a 🟢🟡⚪ level
  • Has stop conditions: how far counts as done
  • Has read the family convention and interaction spec, and ends with numbered options
  • With the existing 20 skills,no overlap in responsibilities — if there is overlap, modify that one instead of creating a new one

🔴 The last item is the easiest to miss. First run bash zmm/scripts/list-skills.sh to look at the existing ones, and explicitly state "what is the boundary between it and zmm-xxx ". If you cannot state it clearly → you should not create a new one.

Step 5 · Let it run once before delivery (passing self-check does not mean it works)

The checklist above is all static items: files exist, fields are complete, rules have levels.If a skill is written and enters the skill directory without ever being run, you will only discover next time you actually use it that the gates cannot be run through — this is the same discipline as "people who write code cannot approve their own code." So before delivery, climb the ladder below; whichever level you reach, you may only speak at that level:

Level What was done What may be said
0 Static self-check passed "The files are complete."You may not say "it works"
1 Take a real input and, ina newly opened context , run through it according to SKILL.md; the output meets the completion evidence of the problem contract "The main scenario ran through"
2 Ran a set of samples (see below), including at least onenear-neighbor counterexample, and the executor had not seen the answer "It can distinguish what should be done from what should not"
3 After revising a version, rerun the same sample set; the hit count must be no lower than the previous version "This version didn't regress"

How to build samples(Put them in the skill directory evals/, so they travel with the skill):

  • sample-NN-<描述>.md: input given to the executor.sample-NN-答案.md: given only to the grader; list two tables, "must catch" and "must not false-positive", 1 point each
  • A set needs at least three categories:positive examples(should trigger and should be caught) · boundary(right on the gate) · near-neighbor counterexamples(looks similar but belongs to the skill next door, or looks like a problem but actually isn't) —— the trigger words of 22 skills overlap with each other, and near-neighbor counterexamples are what prevent false triggers
  • Record results to evals/results/sample-NN-v<版本>.md,evals/README.md as one table: sample · version · hits / full score · false positives · conclusion.The version number points to the versionin SKILL.md, and it must not be called "latest version"
  • Run by hand first; don't write a runner. Three samples run by hand for ten minutes is enough

When a run fails, classify it first, then fix(if you don't classify, you'll just keep adding rules to SKILL.md, making it longer and longer):

Where it fails What it looks like Where to change
Instruction The rule is there; the executor understood it as something else Reword that rule; add a counterexample
Trigger Should have entered but didn't / shouldn't have entered but did Change the trigger words in description and the "should not use it for"
Input The sample itself is missing something; no one could do it Change the sample, or add "stop if X is missing" to the gate
Criterion The answer itself is disputed First align on the answer with the user, then touch the skill
Fluctuation The same input gives different results twice The rule gave room but no criterion; add a criterion

🔴 If the same failure has survived three revisions and you're still relying on "add one more rule for this sample", stop: that's not a missing rule; the boundary of this skill is drawn wrong. Go back to Step 1.

Ready-made examples:zmm-flow/evals/(run one version before and after the redesign; results for both v0.1.0 and v0.2.0 are there),zmm-resonate/evals/、zmm-review/evals/(created 2026-09-06).


Delivery boundary

By default, only make it work locally: generate the directory, put it in the user's skill directory, and tell him how to invoke it.

🔴 Publishing is a separate matter and must be done only when the user explicitly asks. This includes: pushing to a public repository, publishing to ClawHub / SkillHub, adding it to the packaged version. If the user didn't say "publish it", don't touch these —— once a freshly formed skill enters public channels, the cost of changing it is much higher than keeping it local.


Stopping conditions

Stop when any of the following is done; don't keep adding:

  • The skill runs throughin a new contextthe scenario in the problem contract, and the deliverable meets the completion evidence (Step 5, level 1 or above)
  • The user says it's enough
  • You find it overlaps with an existing skill → change that one, don't create a new one
  • You find the gate isn't passed → explain why, don't force it

Wrap-up

According to 〈Interaction Specification · IV〉: Recap (what has been solidified) · Before/After (if this skill is not done, what will need to be rethought next time) · Next step, provide numbered options.

Conveniently write a memory entry to {config.paths.memory}/zmm-skillify/: what was solidified this time, how the gatekeeping was passed, and whether any overlap was encountered.Check for duplicates first。