Skip to content
Agentmart
Submit a tool

kanban-agent

Drive a single kanban card all the way to a MERGED PR — a card only reaches `done` when its code is actually in the repo and its outcome is proven.

Skill by EdgeVector

IndexedMIT
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/edgevector-kanban-agent

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Drive a single kanban card all the way to a MERGED PR — a card only reaches `done` when its code is actually in the repo and its outcome is proven. Three entry modes: WORK (you were pointed at one card slug — implement it, open a PR, then DRIVE THE PR TO MERGED, unless an async post-merge END STATE still needs validation), RECONCILE (a sweep routine woke you — advance in-flight PRs), and VALIDATE (run one bounded post-merge validation and close or surface it). Triggered when the user or a spawn/wake prompt says "follow the kanban-agent skill", names a kanban card to work, or says "reconcile the kanban board".

Use cases: agent-building

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/kanban-agent

What's inside

Skill name
kanban-agent
Description
Drive a single kanban card all the way to a MERGED PR — a card only reaches `done` when its code is actually in the repo and its outcome is proven. Three entry modes: WORK (you were pointed at one card slug — implement it, open a PR, then DRIVE THE PR TO MERGED, unless an async post-merge END STATE still needs validation), RECONCILE (a sweep routine woke you — advance in-flight PRs), and VALIDATE (run one bounded post-merge validation and close or surface it). Triggered when the user or a spawn/wake prompt says "follow the kanban-agent skill", names a kanban card to work, or says "reconcile the kanban board".
License
MIT
Instructions
776 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Agent Skills spec issues

  • body: 776 lines (spec recommends under 500)
  • body: contains an absolute path from the author's machine

Files (1)

  • SKILL.md

SKILL.md (first lines)

No-tests policy: `instructions/no-tests.md`; Situation
`no-tests-all-repos-20261009`. Remove stale test and test coverage requirements
from any card or instruction you use. Keep non-test product proof and gates.


## NO REVIEW COLUMN (Tom 2026-07-16 — won't-undo)

There is **no `review` column**. Board columns are only:
`backlog → todo → doing → done`.

- Incomplete work: stay in `todo` or `doing`
- Complete work: `done` only with merge/END-STATE proof
- Intentional holds: `block_status=needs_human|deferred|design_first` + reason
  in **`backlog`** (default `todo` is the pickup claim lane and rejects deferred /
  human-gated holds — see the kanban skill "Default todo is the pickup claim lane")

Never `kanban move <slug> review`. The live board rejects it. Do not invent
a review lane on custom boards either.


# kanban — agent handbook

kanban is a kanban over LastDB (CLI + MCP, `bun run src/cli.ts` in the kanban
repo, board on your LastDB node). It does **not** spawn agents. This skill makes
the agent **own a card through merge**: it implements the card, opens the PR, and
then drives that PR to MERGED before exiting — it does not hand a green-but-
unmerged PR off and walk away. A card reaches `done` only when its PR is verified
merged. **PR/CR opened is not done, and there is no separate background driver
watching it for you.** The WORK-mode agent that opens the review artifact must
record it on the card and keep driving it in this same turn until merged or
genuinely blocked.

> ⚠️ **Route repo review artifacts before opening or reconciling one.** After
> resolving the concrete checkout, run
> `"$last_stack/bin/last-stack-pr-venue" --json <owner/repo> "$target_repo"` and
> branch on `.venue`. Since 2026-09-30 every EdgeVector repo except
> `EdgeVector/lastgit` is on **GitHub** (brain
> `decision-2026-09-29-retire-lastgit-all-repos-to-github`): open PRs with
> `gh pr create`, arm auto-merge with
> `gh pr merge <n> -R EdgeVector/<repo> --auto --squash`, and watch the
> required `ci-required` check with `gh pr checks <n> -R EdgeVector/<repo>`. If
> `gh pr merge` fails with a GraphQL 502, merge with
> `gh api -X PUT repos/EdgeVector/<repo>/pulls/<n>/merge -f merge_method=squash`.
> LastGit is retired. The venue `lastgit` must not occur; if it does, stop and
> file a brain papercut. Store secrets only as LastSecrets locators; never put
> raw secret values in Brain/Kanban/logs/PR text.
>
> ⚠️ **Only `EdgeVector/lastgit` stays on the local Forgejo forge.** For that
> repo, and no other, use the Forgejo API equivalent of each `gh` command
> against `http://localhost:3300`. Full command map and auth:
> `brain get sop-forge-pr-workflow`. Use
> `$HOME/.last-stack/bin/last-stack-forge-api` for the API calls and
> `$HOME/.last-stack/bin/last-stack-forge-git -C <repo> <git-args...>` when
> plain `git fetch` / `push` cannot read credentials. Create a PR with
> `last-stack-forge-api --method POST --data @body.json repos/EdgeVector/lastgit/pulls`.
> Arm auto-merge with
> `last-stack-forge-api --method POST --data '{"Do":"merge","merge_when_checks_succeed":true,"delete_branch_after_merge":true}' repos/EdgeVector/lastgit/pulls/<n>/merge`.
> Read PR state with `last-stack-forge-api repos/EdgeVector/lastgit/pulls/<n>`
> (`.merged`, `.mergeable`, `.draft`) and CI with
> `last-stack-forge-api repos/EdgeVector/lastgit/commits/<head-sha>/status`.
> Update a BEHIND branch with
> `last-stack-forge-pr-update-branch --repo EdgeVector/lastgit --pr <n> --apply`
> (never POST `pulls/<n>/update` raw). If `commits/<sha>/status` is the empty
> envelope and `actions/tasks` has no run for the head, the CI trigger is dead:
> run `last-stack-forge-dead-trigger probe` then `supersede`. Arm auto-merge
> when you open the PR, or write `proof in flight — do not arm` in the body.
> If an armed PR is green but open, run
> `last-stack-pipeline-forge-pr-ledger merge-green --repo EdgeVector/lastgit --pr <n> --apply --wait-sec 900`.
> Keepside_Desktop is GitHub-primary and hands-off.

> **Drive to merge, but never idle-park or sleep-loop.** The rule that prevents
> wedged/runaway agents is **no `sleep`-to-wait, ever**: you wait for CI/the
> merge process only with a *sleepless* foreground watcher (the `/wait-merge`
> skill, or `gh -R <repo> pr checks <n> --watch`), which returns when state actually
> changes and is bounded by GitHub's check timeout. While waiting you take
> *action* on state changes (re-arm dropped auto-merge, update-branch a BEHIND
> PR, rebase a DIRTY one) rather than spinning. You exit when the PR is **MERGED**
> (move card → `done`) or when you hit a **genuine human-only blocker** (move
> card → `review` with a `BLOCKED:`/`STALLED:` note). You do NOT exit just
> because the PR is open and queued — that fire-and-forget hand-off is exactly
> what lets PRs pile up stranded.
>
> **"Spawn a watcher and come to rest" is NOT "drive to merge."** Do not start a
> background CI-watcher process and then end your turn expecting to be re-woken
> when it finishes — that re-wake is not reliable, and it leaves the PR with
> nobody driving it (it strands exactly as before, one step later). Hold THIS
> turn open with a *foreground* sleepless `--watch` until the PR reaches a
> terminal state. Holding one turn on a foreground watcher is the allowed,
> bounded thing; resting while a detached watcher runs is not.

## Columns

`backlog → todo → doing → done`

| Column | Meaning |
|---|---|
| `backlog` / `todo` | not yet picked up |
| `doing` | an agent is implementing, OR is driving its open PR to merge |
| *(no review)* | use `todo` + `block_status` for human gates; never park incomplete work |
| `done` | PR is **merged** AND the card's outcome was validated, or a non-PR card's `DONE-WHEN` predicate is satisfied |

### Outcome validation — at the CARD level, not in PR bodies

**PR-body `## Proof` blocks are NOT required** (Tom removed the requirement and
its `proof-block` CI gate 2026-07-03 — the check failed on ~30% of fleet PRs and
silently stalled auto-merge into rerun churn). Do not write them, and never treat
a missing one as a blocker.

Validation lives on the **card** instead: run the card's `VERIFY:` line before
closing, and honor its `## END STATE`. For user-visible/stateful cards (auth,
passwords, settings, data writes, sync, UI), that still means a real-app
acceptance check: run the real binary/node on a **throwaway** data dir
(`mktemp -d`, `FOLDDB_DISABLE_KEYCHAIN=1`) — NEVER `~/.lastdb`, `~/.folddb`, or the primary
brain/keyring; **cross a process boundary** (restart / re-open) between the write
and the read; include a **negative case**. Anchor it to the user story, not the
diff ("a user can set a password and later unlock with it"). A card whose
merged PR fails its
VERIFY/END STATE goes in `todo` with a `PROOF:` note — not `done`. This is what
stops "password sets but the app won't unlock with it" (incident 2026-06-30) from

From EdgeVector/last-stack, MIT.

More from EdgeVector/last-stack

Signals

Stars
0
Forks
0
Open issues
0
Last commit (this folder)
Oct 10, 2026 (19 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from EdgeVector

Cite this page

kanban-agent skill. Agent Mart. https://agentmart.dev/skills/edgevector-kanban-agent (last updated 2026-10-24)