---
description: Pull the highest-leverage `human_gate: none` open card off the queue, claim it, work it, close it, commit. AUTO-INVOKE when the user says "drain the queue", "pull a card", "let the agents work", "autonomous mode", "make progress", or when invoked via /loop or /schedule.
---

# Pull a card

Kanban's foundational principle (Anderson) is **pull-based work
intake**: a worker takes the next item when capacity exists, rather
than having work pushed at them. This skill is the autonomous worker —
it pulls one card off the queue, works it end-to-end, commits.

The pull principle is what makes autonomous operation *safe*. Work
isn't shoved at agents on a timer; agents pull on their own terms,
filtered to `human_gate: none`. The human steers by curating WHAT'S
in the queue and at what gate.

## What to do

Check for already-claimed work first:

!`.claude/skills/_goc-bootstrap.sh --status active -v 2>&1 | head -20`

Treat any listed active card as a soft lock. Do not claim the same card,
or adjacent/conflicting work, unless the user explicitly asks to continue
that active card.

Pick the highest-contribution `human_gate: none` open card:

!`.claude/skills/_goc-bootstrap.sh --status open --human-gate none -v 2>&1 | head -20`

Then:

1. `Skill(advance-card) <title> active` to claim. (The status flip is
   the soft lock against parallel sessions.)
2. Read the body, the DoD, and any referenced files.
3. Implement.
4. `Skill(finish-card) <title>` to close + commit.

The card body is the briefing the original filer wrote. Trust it.

## When to stop without finishing

- **Queue empty.** No `human_gate: none` open cards. Invoke
  `Skill(extend-deck)` to file one new card from emergent codebase
  observations, then exit. The next invocation can work it.

- **Decision-class question — try the project-specific consultation
  BEFORE raising the gate.** The body reveals the card needs a
  judgement call (mechanism choice, convention, default value, scope
  reframing, lit-anchored default). The Andon cord is lazy: agents
  try the project-local consultation first, then pull.

  !`cat .game-of-cards/hooks/pull-card.md 2>/dev/null || true`

  1. If the consuming repo defined a consultation skill or rubric in
     the hook above, follow it. **If it answers confidently:** record
     the resulting decision via `Skill(decide-card) <title>
     --decision "<choice>" --because "<consultation-name>:
     <one-line>"` (the `--because` should cite whatever rubric the
     hook prescribes). Then continue working the card from the
     decision: implement, close, commit.
  2. If no hook is defined, OR the consultation is ambiguous, OR the
     question is non-substantive in nature (resource allocation,
     scope split, deadline, multi-stakeholder alignment, taste call,
     missing primary evidence): raise the gate to `decision` or
     `session`, write a `## Decision required` body section, commit
     the gate-and-body update. The human will see the parked card.

  This keeps the human out of the loop when project-specific
  reasoning is decisive. The cord still gets pulled — just not for
  questions the project's own rubric already answers.

- **Fix fails verification.** Revert the work, append
  `## Disproved fix attempt YYYY-MM-DD` to log.md, leave the card
  open with new evidence.
- **Pre-commit refuses + research-impacting issue.** Pause for the
  human.

## What to report

Whatever happened, in one line of plain fact:

```
closed <title>: <one-line what-changed>
```

or

```
parked <title>: gate raised to <decision|session> — <reason>
```

or

```
queue empty; filed <new-title>
```

Don't narrate context — no "round N", no "via /loop", no "picked
because impact:high". The commit message and closure log already say
what happened. The report is the index, not the story.

## Pairs naturally with

- `/loop pull-card 30m` — drains the queue while the user works in
  another session.
- `/schedule pull-card weekday 09:00` — opens the day with one card
  closed.
- `/schedule extend-deck weekly` — keeps the queue fed; the
  pull-principle requires something to pull.
- `/schedule improve-deck monthly` — hygiene pass.
