From cairn
Answer a named open question in the current milestone requirements document, updating the document to reflect the decision and its downstream implications.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cairn:answer-open-questionThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Resolves a named open question or deferred entry in the current milestone's `requirements.md` by recording the user's answer and propagating its implications through the document — then chains into `try-capture-answer-principle` so a reusable rule behind the call can be learned for future autonomous sweeps.
Resolves a named open question or deferred entry in the current milestone's requirements.md by recording the user's answer and propagating its implications through the document — then chains into try-capture-answer-principle so a reusable rule behind the call can be learned for future autonomous sweeps.
/answer-open-question <Short Title>. <answer text>
The <Short Title> must match (case-insensitive) the title of an existing Open question or Deferred entry. The . character is the separator. Everything after the first . is the answer.
Example:
/answer-open-question Arc drive technique. Use approach B — two Cinemachine virtual cameras per rail axis, blended by Cinemachine's built-in blend system. RailCameraSnapper will activate the appropriate virtual camera on rail switch rather than calling ForceCameraPosition.
Split the skill args on the first . character:
If no . is found, report a parse error and show the expected format.
Read and follow the shared answer-recording procedure at ${CLAUDE_PLUGIN_ROOT}/shared/answer-procedure.md (run echo "$CLAUDE_PLUGIN_ROOT" if you need to resolve the path), carrying out every step yourself, in this conversation. Pass it the Short Title and answer text parsed in step 1 as its SHORT TITLE and ANSWER inputs.
That procedure owns resolving the current milestone, locating the matching block, analysing the answer's implications, removing the block, folding the decision into ## Implementation decisions, and cascading to any entries the answer moots. Do not restate those steps here. If the Short Title matches no entry, the procedure stops without changes and reports the mismatch — relay that to the user so they can retry.
After the procedure finishes, briefly state:
After recording, always invoke /try-capture-answer-principle with no argument. This chain-off is unconditional — answer-open-question does not judge whether the decision generalizes. Capture runs inline in this same conversation, where the full deliberation is in context; it anchors on the answer just recorded, analyses whether a reusable answering principle lies behind it, and exits quietly on its own when nothing generalizes. So the chain is always taken; the decision about whether a principle is worth recording belongs entirely to capture.
. only — Short Title before, answer text after.${CLAUDE_PLUGIN_ROOT}/shared/answer-procedure.md; never duplicate or restate its locate / analyse / remove / fold / cascade steps here./try-capture-answer-principle after recording — unconditionally, never gated on your own judgment of whether the decision is reusable.Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub uhappylogic/cairn --plugin cairn