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
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.
About
Use cases: agent-building
Reviews
Write a reviewNo 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) fromFrom EdgeVector/last-stack, MIT.
More from EdgeVector/last-stack
- 0.565score
kanban
EdgeVector
Manage the kanban board — a kanban over LastDB.
SkillAFreshness: AClaude Code +9 - 0.565score
kanban-metrics-dashboard
EdgeVector
Build or refresh an ad-hoc metrics/benchmark view over kanban or LastDB ops data — velocity, throughput, write-timeout benchmarks, board-column funnels…
SkillAFreshness: AClaude Code +9 - 0.565score
board-closeout
EdgeVector
Drain stuck kanban doing cards — merged PRs/CRs to done, true zombies to todo — via the zero-LLM last-stack-board-closeout-sweep.
SkillAFreshness: AClaude Code +9 - 0.565score
factory-health
EdgeVector
Hourly Kanban Factory health check — ship rate, todo depth, doing age vs baselines; ra notify Tom when out of band.
SkillAFreshness: AClaude Code +9 - 0.560score
fix-it
EdgeVector
Find and land the permanent fix for a defect, papercut, failing signal, or leftover temporary repair.
SkillAFreshness: AClaude Code +9 - 0.560score
app-identity-dogfood
EdgeVector
Run the App Identity app-creation flow end-to-end against the DEV environment, autonomously.
SkillAFreshness: AClaude Code +9 - 0.560score
brain-doctor
EdgeVector
Read-only triage of the LastDB brain (Tom's primary brain/kanban daily-driver node — the desktop fold-app process or Mini daemon, reached over the Unix socket…
SkillAFreshness: AClaude Code +9 - 0.560score
diagram
EdgeVector
Draw a diagram in Tom's preferred style — technical black-and-white line drawings (thin uniform geometric strokes, hatch for solid/stored things, dimension…
SkillAFreshness: AClaude Code +9 - 0.551score
close-out
EdgeVector
Run the full close-out loop after finishing a substantive change — worktree PR + auto-merge, file session papercuts, write a full brain report of what was…
SkillAFreshness: AClaude Code +9 - 0.524score
kanban-grooming
EdgeVector
Use when auditing or grooming Kanban board health: dependency-stub reconciliation, stale generated blockers, malformed Repo/Base/Kind headers, stale…
SkillBFreshness: BClaude Code +9 - 0.524score
last-stack-machine-leak-scan
EdgeVector
Scan Last Stack for host-machine identity leaks (usernames, home paths, emails, private IPs) that must not ship in the public installable product.
SkillBFreshness: BClaude Code +9 - 0.524score
app-safe-upgrade
EdgeVector
REQUIRED path for upgrading any installed EdgeVector app (kanban, brain, situations, last-stack, search, …).
SkillBFreshness: BClaude Code +9
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
- Repository
- github.com/EdgeVector/last-stack
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from EdgeVector
- 0.565score
board-closeout
EdgeVector
Drain stuck kanban doing cards — merged PRs/CRs to done, true zombies to todo — via the zero-LLM last-stack-board-closeout-sweep.
SkillAFreshness: AClaude Code +9 - 0.565score
kanban-metrics-dashboard
EdgeVector
Build or refresh an ad-hoc metrics/benchmark view over kanban or LastDB ops data — velocity, throughput, write-timeout benchmarks, board-column funnels…
SkillAFreshness: AClaude Code +9 - 0.565score
factory-health
EdgeVector
Hourly Kanban Factory health check — ship rate, todo depth, doing age vs baselines; ra notify Tom when out of band.
SkillAFreshness: AClaude Code +9 - 0.565score
kanban
EdgeVector
Manage the kanban board — a kanban over LastDB.
SkillAFreshness: AClaude Code +9 - 0.560score
fix-it
EdgeVector
Find and land the permanent fix for a defect, papercut, failing signal, or leftover temporary repair.
SkillAFreshness: AClaude Code +9 - 0.560score
app-identity-dogfood
EdgeVector
Run the App Identity app-creation flow end-to-end against the DEV environment, autonomously.
SkillAFreshness: AClaude Code +9
Cite this page
kanban-agent skill. Agent Mart. https://agentmart.dev/skills/edgevector-kanban-agent (last updated 2026-10-24)