跳到正文
cccskills
免费在 GitHub 公开

moo-authoring

Use when adding or changing a skill, hook, or runtime file in this repo — including deciding which unit a new capability should be.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(1)

  • SKILL.md5.5 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Doctrine for authoring moo's own surfaces.

Frontmatter

A skill's frontmatter carries name and description; read any shipped SKILL.md for the current key set. The description is one line, and Claude Code caps it at 1024 characters.

No when_to_use. Claude Code reads that key and renders it dash-joined onto the description, but every other agent copies SKILL.md verbatim and never reads it, so the text deciding when a skill fires would be invisible wherever it is installed outside Claude Code.

A condition that follows what the skill does is marked Use when <condition>. — a finite clause, never a bare noun phrase or a bare dash. The key name was what marked the condition as a condition; in one string nothing else does, and an unmarked trailing clause reads as more of what the skill produces. A description may also open with the condition and stop there, where naming the capability would discriminate nothing.

A skill that stays in this repo declares metadata.internal: true. The skills.sh installer walks the tree and offers every SKILL.md it finds; that flag is what it filters on.

Version lives in plugin.json only (DRY). The official Claude Code spec does not allow version in SKILL.md frontmatter.

Sizing

  • Size a skill by a deletion pass, never a numeric cap.
  • Put branch-specific content in files the skill opens when the branch is taken, and name them where they are needed.
  • Decision tables > prose explanations.

Token Efficiency

  • Challenge every sentence: "Does Claude need this?"
  • Bullets for enumerable items; a paragraph when the point is one connected argument.
  • No vague terminology; pick one term per concept.

Skill Design

Phrase design decisions as "X over Y: reason".

Unit choice — behavior inlines at build, data references at runtime; a skill's firing is probabilistic, so behavior that must run every time is a hook:

The new thing is...Unit
Data selected per use (catalog, profile, corpus)Runtime file
A trigger + procedure that stands aloneSkill
A trigger only the human perceivesSkill with disable-model-invocation: true
Behavior that must run every time, deterministicallyFunction hook
An unproven ideahunch skill + HYPOTHESIS.md; graduates or dies
Doctrine for this repo's own surfacesRepo-local skill in .claude/skills/; never ships

Composition — name-calls, never imports:

  • Skills compose by name: a composer names a move and invokes it with the Skill tool; a body never inlines another body.
  • New skill when the cognitive mode changes (clarify WHAT ≠ decide HOW ≠ judge unsupervised work; find ≠ fix). One skill = one mode + one gate.
  • Two skills over one when triggers differ; a shared explanation the pair needs lives in this file, which owns skill-design reasoning, not in either skill.
  • A body names a sibling in exactly two places: a refusal, and a route — wherever in the body those sit. There the name is the refusal's or the route's content, and a reader without it is stranded.
  • Ending over hand-off: a finished run states what is now settled and what is still open, in its own words. Naming who handles it next hardcodes the graph n², so one trigger change edits every sibling.

Output form — bound by what the skill hands back, never by one shared sentence. Plain words is the only part that holds across all three:

The Output hands backBound it by
Something the agent restated in its own wordsAs short as it goes with nothing the skill can't afford to drop lost — name that thing, it differs per skill
The user's own words — a record, an amended proposalPreserving them. A compression clause here destroys the result
A structure the reader navigates — verdict then evidence, a case set then a ruleBounding each part where a reader would pad it, never the whole

A cap counted in lines is a compression budget on a handed-back artifact — replace it. A cap on one turn of a loop is pacing, and the rest arrives on the user's next pull — keep it.

Hook Design

Every hook is a function hook: it reaches the human with no model turn. The API is early access; plugin-authoring and /plugin-types are the reference for every event and call.

  • A hook never starts a turn the human didn't ask for: no wake, no $.prompt.submit of its own.
  • What a hook finds waits where the human looks next, the band above the prompt, and appears there only while it holds something. Detail unfolds on a press and folds back.
  • A hook hands to Claude only on the human's Enter: $.prompt.fill a sentence start they finish, with any bulk added as prompt.submit context.
  • Work longer than one dispatch runs unawaited, so the turn's end is never held.
  • State lives in $.state (this session) or $.store (across sessions), never in temp files or module variables. A hot reload drops module variables.
  • A failure shows once, as a toast, and the event passes on.
  • A pane or band is verified on events copied from real session transcripts, one per shape it renders; a synthetic event alone never verifies it.
  • One hooks module per plugin; a second part composes into it. A second registration on the same event and matcher in one plugin is dropped silently.

A hook that spawns headless claude -p copies its flag set from hope/hooks/judge.sh, where each flag is commented at the point of use.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

anchor

免费

Rewrite a rule so anyone applies it the same way. Use when a stated rule or claim takes the reader's judgment to apply.

中文简介正在准备中。当前显示原文说明。

saadshahd/moo.md382026年10月17日 更新

clarify

免费

Turn words with two readings into one confirmed ask. Use when the user's words admit two readings that would build different things.

中文简介正在准备中。当前显示原文说明。

saadshahd/moo.md382026年10月17日 更新

compose

免费

Plan the skills an ask needs, invoke each as its condition arrives. Use when the ask has multiple aspects that different skills carry, or the user named multiple skills.

中文简介正在准备中。当前显示原文说明。

saadshahd/moo.md382026年10月17日 更新

consult

免费

Bring how named experts would think about the question. Use when the user wants expert thinking on a tradeoff, choice, or stuck problem — not a verdict.

中文简介正在准备中。当前显示原文说明。

saadshahd/moo.md382026年10月17日 更新

deepen

免费

Hold an ask to the bar a top professional in its field would set — a deeper ask, never a bigger one. Use when an ask is clear but nothing yet names the sources, methods, target, or outside check the work will meet.

中文简介正在准备中。当前显示原文说明。

saadshahd/moo.md382026年10月17日 更新

draft

免费

Build the thing the user can't specify, choices surfaced. Use when the user needs something to react to before they can choose.

中文简介正在准备中。当前显示原文说明。

saadshahd/moo.md382026年10月17日 更新

查看 saadshahd 的全部技能

报告此技能的问题