When to invoke
Invoke when the user says "I decided X", "let's go with Y", "the answer is Z", "go ahead with", "approved", or otherwise resolves a parked card. The Andon-cord lowering action — pull-card raises the gate; this skill is the human's one-action handoff so pull-card can resume.
Decide a card
The Andon-cord loop: the pull-card skill raises human_gate
(none → decision / session) when it hits a question only a human
can answer; this skill lowers the gate back to none in one cheap
action. Status stays open, so the next pull-card claims and
implements per the recorded decision. Humans resolve the cause;
agents wield the wrench — and an agent that can cite the project
rubric MAY decide on its own behalf (lazy Andon, below).
Edge cases live in reference.md — a sibling file in this
skill's directory. Read the named section only when the situation
actually applies:
| Situation | reference.md section |
|---|---|
| Presenting labeled options via AskUserQuestion | Mirroring labeled options |
| The decision reverses / re-scopes a stated verdict | Re-scope reconciliation |
| An agent recorded a decision it shouldn't have | Rewinding an agent decision |
| Why the cord must be cheap to lower | Rationale |
What this skill does to the card
Body. Replaces the
## Decision requiredsection (or appends a fresh## Decisionsection) with:## Decision *Resolved YYYY-MM-DD:* <one-line decision> *Reasoning:* <one-line why>log.md. Appends up to two entries, timeline-ordered: first an archive of the prior
## Decision requiredcontent (the options and trade-offs the README rewrite would otherwise lose), then the resolution (<decision> — <reason>. Gate <prior> → none.).Frontmatter. Flips
human_gate: decision(orsession) →none. Status is unchanged (openstaysopen).Refuses if the gate is already
noneor the title doesn't exist.
Workflow
Read the card body (
goc show <title>). Confirm the decision actually answers the parked question: if## Decision requiredenumerates options A/B/C, the user's free-text decision should map onto one (or explicitly reject all and propose D). When eliciting the pick with AskUserQuestion, mirror the body's option labels and order verbatim — do not reorder or rephrase (reference.md§ Mirroring labeled options).Then check
advanced_byfor unclosed prerequisites, and read any you find before recording. Anadvancesedge does not record whether it is strict, so the only way to learn that a prerequisite reframes this card is to open it. Lowering the gate is what makes the card autonomously pullable, so a decision taken over an unread prerequisite is one an unattended worker may act on before any human sees the card again.goc decideprints the same advisory (non-blocking — it names the prerequisites and lowers the gate anyway), but it prints it as the decision lands, which is too late to inform it.Run the CLI.
goc decide <title> \ --decision "<one-line what>" \ --because "<one-line why>"Commit follows repo policy.
goc decidehonors.game-of-cards/config.yamlworkflow.auto_commit(defaulttrue), committing body + log + gate flip asdecide: <title> — <decision>. Override per invocation with--no-commit/--commit.
If the decision reverses or re-scopes a verdict the card already
states, goc decide only writes the ## Decision block — every
other surface still asserting the old verdict is now stale. Reconcile
by hand: the summary: frontmatter, any > ⚠ body banner, DoD
wording, and mentions in neighbor cards. The CLI prints a reminder on
re-scope language and goc validate flags
DECISION_CONTRADICTS_VERDICT. For a true re-scope, prefer
supersede + create over an in-place rewrite. Full checklist:
reference.md § Re-scope reconciliation.
When an agent invokes this skill (lazy Andon)
An agent may decide on its own only after consulting the consuming repo's project-specific rubric:
cat .game-of-cards/hooks/decide-card.md 2>/dev/null || true
- Cite the rubric.
--becauseMUST start with a clause naming the rubric consulted and what it returned (citation form per the hook above). - Cite the primary source when the answer rests on literature: DOI/PMID, textbook chapter, or project-doc section.
- No agent-decide for human-judgement questions — resource allocation, scope splits, deadlines, stakeholder alignment, taste calls. Raise the gate instead.
- Default to human when ambiguous. If the rubric doesn't give a clean answer, raise the gate; don't guess.
A decision recorded in violation of this contract can be rewound —
reference.md § Rewinding an agent decision.
When NOT to use this skill
- Card needs implementation, not a decision. If you're ready to do the work yourself, just do the work.
- Decision changes scope. "Scope this differently / split /
reframe" is not a resolution — use
the
advance-cardskill (with<title> superseded) + thecreate-cardskill for the replacement. - Gate is
sessionand the session never happened. Capturing a real session's outcome is valid; shortcutting a session that never took place is not — schedule the session instead.
What this skill does NOT do
- Does NOT implement the card (that's
pull-card's next round). - Does NOT close the card (that's the
finish-cardskill's DoD-gated contract). - Does NOT mutate
status— the card staysopen.
Cross-references
reference.md(this skill's directory) — edge cases routed above.- the
scan-deckskill — surfaces parked cards; its "decisions to make" Q&A calls this skill per card. - the
advance-cardskill — status machine +waiting_onoverlay; gate ≠ status. - the
card-schemaskill —human_gateenum and the## Decision requiredbody convention.
Sibling files on this host
This skill ships reference.md alongside its body. If a direct file read fails (sandboxed sessions cannot see the plugin install path), fetch the file through the goc tool: {verb: "skill", args: ["decide-card", "<file>"]}.