用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/meridian-online/orbit --skill card命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | card |
| description | Write a feature card — capture who needs what, why, and expected behaviours as scenarios |
| argument-hint | [card-id] |
| allowed-tools | Bash Read Edit Write AskUserQuestion |
Interactively write a feature card that captures a user need with expected behaviours.
/orb:card [topic]
A card captures a feature: who needs it, why it matters, and what they'd expect to see. It follows a Gherkin-inspired structure — a feature description with scenarios — expressed in YAML.
Cards are NOT specs. They don't prescribe solutions. "The step name is visible immediately" doesn't say "flush stdout" — it says what the user observes. The how comes during the interview.
Before writing anything, classify the request. Cards and choices are different artefacts and choosing the wrong one is the most common mistake at this entry point.
.orbit/choices/NNNN-<slug>.yaml instead — see .orbit/choices/0001-progressive-spec-review.yaml for the shape.Worked example of the trap. "Should orbit spec promote live in rust as a verb instead of bash?" is choice-shape — the promote capability already exists, the question is implementation surface. File as a choice, not a card.
If unsure, ask the user explicitly: "Is this a new capability or a decision about how an existing one is implemented?" before proceeding.
Read the .orbit/cards/ directory. Find the highest existing NNNN-*.yaml number and increment by 1. If no cards exist, start at 0001.
Use AskUserQuestion to gather:
true, the scenario describes a sequencing checkpoint — the corresponding bead AC blocks all subsequent ACs by declaration order. orbit spec promote propagates this into the bead acceptance field as a [gate] marker. Use sparingly — only for scenarios that name a decision or prerequisite that must complete before later scenarios can begin.so_that says why the capability matters (timeless); the goal says what you're driving toward right now. Goals evolve as the capability matures — git history tracks the progression.established — built and workingemerging — partially built, some specs have addressed itplanned — not yet built (default for new cards)Save as .orbit/cards/NNNN-<slug>.yaml:
feature: "<short feature name>"
as_a: "<role>"
i_want: "<desired outcome>"
so_that: "<reason/benefit>"
scenarios:
- name: "<scenario name>"
given: "<precondition>"
when: "<action or event>"
then: "<observable outcome>"
# gate: true # optional — propagates to bead AC as [gate] via `orbit spec promote`
- name: "<scenario name>"
given: "<precondition>"
when: "<action or event>"
then: "<observable outcome>"
goal: "<current measurable target>" # optional — what success looks like right now
maturity: "planned" # planned | emerging | established
specs: [] # specs that have addressed this capability
references: # optional — prior art and inspiration
- "<tool/approach>: <what's relevant about it>"
Before finalising, run a keyword scan (see /orb:keyword-scan) against .orbit/cards/ and .orbit/specs/ using terms from the feature name and scenarios. If an existing card already describes this capability, surface it — the author may want to update the existing card rather than create a new one.
After authoring a card and pointing the author at it (via orbit card show <slug>), suggest orbit card tree <slug> as the natural next step — it shows the local relations subgraph (depth 2 default) so the author can see how the new card sits in the existing knowledge tree without grepping.
Verify the card against INVEST criteria:
Cards describe capabilities, not work items. When a capability evolves, update the card in place — git history is the audit trail. Cards are never "closed" or "delivered"; they are the current description of what the product does for its users.
The relationship between cards and work is mediated by specs: a spec references a card and prescribes how to implement or extend the capability. Multiple specs may reference the same card over time as the capability matures.
Some cards sit at maturity: planned with empty specs: not because they're undesigned, but because you've deliberately decided to hold them — waiting on a second use-case to confirm the pattern, on a related cluster to crystallise, or on a calendar date. The conformance audit can't tell the difference between undesigned and deliberately held, so by default it nags about both.
To declare a card parked, add a park: block:
maturity: planned
park:
reason: awaiting third use-case forcing
until: N=2 evidence
Both subfields are free-form prose:
reason: — why the card is held. One short sentence. Examples: "awaiting third use-case forcing", "blocked on upstream choice 0021", "observation window after substrate-engagement rally closes".until: — the unhold condition. Free-form too. Examples: "N=2 evidence", "cluster synthesis on cards 0037 + 0038 + 0042", "2026-08-01", "hydrofoil consumer hits the pattern".When the card is parked, conformance's card-state finding family skips it silently — no ready_for_tabletop finding, no envelope trace. The carve-out applies only to that family; aggregated drift, topology drift, memo staleness, and plugin-canonical-file findings continue to fire normally if the card or its surroundings warrant them.
To unpark, remove the park: block from the card YAML. The card returns to the audit's view on the next conformance run.
v1 limitation. until: is free-form text only — there is no automated unpark. The audit will not fire when a date passes or when a referenced spec closes. Treat parking as a quarterly-or-so review discipline: scan parked cards, decide whether the hold still applies, and remove the block when it doesn't. Structured triggers may land in a future spec; today, the human is the parser.
Specs get completed — progress.md marks all ACs done, /orb:review-pr verifies the work, and the PR merges. That's the closure unit. The card persists because the capability persists.
When a spec produces a NO-GO or invalidates an assumption:
progress.md with evidencegoal to reflect what was learnedmaturity based on current stateThe card lives on. Its goal may change, its maturity may shift, but it still describes what the product does — which now includes what you learned.
Next step: Refine this card with /orb:tabletop to work out the technical approach.