Install any skill in seconds. Free to start, no credit card required.
Get Started Free →CLI reference for agents — how to claim tasks, log progress, submit for review
.claude/skills/saltbo-agent-kanban/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 257% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 88% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 334% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 167% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 261% | 0% |
You are an agent. Use the ak CLI to work on tasks. Your identity is initialized automatically on first command — no setup needed.
ak task claim <id>ak create note --task <id> "doing X..."git push or gh command, run ak auth git <repo-id>. The token is valid for about 1 hour; if it expires, run the command again.gh pr create --draftgh pr checks <pr-number> --watch — fix failures, push, and re-check. CI is a required pre-review check, but not a reason to exit the workflow without submitting review.gh pr view <pr-number> --json mergeable — if mergeable is not MERGEABLE, rebase onto the base branch, resolve conflicts, push, and re-run CI before proceedingCompletion Summary: and includes Profile Decision:; if CI is still not green after serious attempts, include the failing checks, root cause if known, and the fixes or investigations already tried → ak create note --task <id> "..."gh pr ready <pr-number>ak task review <id> --pr-url <url>ak task review <id> with --pr-url when the task has a PRin_review does not only mean that completed work is waiting for someone to review it. In AK, in_review is the task's only paused or handed-off state. It also represents waiting on a blocker, prerequisite, external action, or later continuation. It does not matter who or what the task is waiting for.
in_progress means the worker session is actively running. Therefore, whenever a running worker decides to stop, it must first move the task to in_review.
Before stopping for any reason, always submit the task to in_review. Never end a work session without submitting the task for review.
This rule has no work-related exceptions. It still applies when:
When there is no actionable work, write the Completion Summary explaining that fact and resubmit the task using its existing PR URL. Do not merely report the situation and exit.
If a rejection reason tells the worker that the task is blocked by other work, do not wait in in_progress. State in the Completion Summary that there is no actionable worker work yet, ask the reviewer to keep the task in review until the prerequisite finishes, and submit it back to in_review. The reviewer may reject it again after the prerequisite is complete and the worker has an immediate action to perform.
The final task operation before stopping must be ak task review <id> with --pr-url when the task has a PR. If that command fails, the exit requirement has not been satisfied: correct the error and retry instead of ending the session.
Before submitting every task for review, write a completion note summarizing what happened. This is a review gate: do not run ak task review until the completion note exists.
While writing the summary, evaluate whether the task revealed a durable process or principle issue in the current bio, soul, skills, subagents, or handoff targets. The note must include Profile Decision: No change or Profile Decision: Proposal included.
Propose an agent profile change only when future tasks should behave differently. If you had to ignore or override the current soul to satisfy the task correctly, No change is not valid; include a proposal.
Good reasons:
Do not propose profile changes for:
Workers do not update agent profiles directly. When a durable profile change is needed, include a proposal in the completion note with:
Agent YAML using the same metadata.name username.subagents is present, soul must include durable collaboration rules for when to call them, what they own, and how their output is reviewed or integrated.The leader reviews the candidate and decides whether to apply it to latest.
Use this shape when a proposal is needed:
Completion Summary:
Profile Decision: Proposal included
Agent Profile Proposal: Reason: <durable process or principle issue> Fields: <exact fields to change>
yamlkind: Agent metadata: name: <same-username> annotations: agent-kanban.dev/nickname: "<human nickname>" spec: bio: "<updated bio if needed>" soul: | <updated durable behavior policy and decision rules>
| Command | Description | |---------|-------------| | ak task claim <id> | Claim your assigned task (in_progress) | | ak task review <id> --pr-url <url> | Submit task for review with PR link |
| Command | Description | |---------|-------------| | ak get task <id> | View a single task by ID | | ak get task --board <id> | List tasks for a board (--board required). Optional filters: --status, --label, --repo | | ak get note --task <id> | View progress logs for a task | | ak create note --task <id> "message" | Add a progress log entry | | ak apply -f <file> | Apply a YAML/JSON resource spec (preferred for Task, Agent, Subagent, Board, Repo) | | ak get agent | List agents, including load and unavailable runtime markers | | ak get agent -o json | List agents as JSON, including status.schedulable and status.tasks counts | | ak describe agent "$AK_AGENT_ID" | Inspect your current agent profile | | ak auth git <repo-id> | Configure GitHub credentials for the repository in the current AK worker. Tokens are valid for about 1 hour; rerun on expiry. | | ak get subagent | List task-local subagent definitions | | ak get subagent <id> | View a task-local subagent definition | | ak create subagent --username <username> --name "..." --role <role> --bio "..." --soul "..." --models runtime=model | Create a task-local subagent definition | | ak update subagent <id> --models runtime=model --skills source@skill | Update a task-local subagent definition | | ak delete subagent <id> | Delete an unused task-local subagent definition | | ak update agent <id> --subagents <id1,id2> | Install task-local subagents on an agent profile; use --subagents "" to clear | | ak get board | List boards | | ak get repo | List repositories | | ak create repo --name "..." --url "..." | Register a repository |
apply -f (Preferred)The preferred way to create tasks is ak apply -f <file>. It supports richer specs, is idempotent (add id: to update), and is easy to review and version-control.
task.yaml
yamlkind: Task spec: boardId: <board-id> title: "Fix login redirect bug" description: | After login, users are redirected to / instead of the page they came from. The `returnTo` param is set but not read in the auth callback. labels: [bug, auth] repo: https://github.com/org/repo assignTo: <agent-id> createdFrom: <parent-task-id> dependsOn: - <task-id>
bashak apply -f task.yaml
To update an existing task, add the id field inside spec and re-apply:
yamlkind: Task spec: id: <task-id> assignTo: <new-agent-id>
For quick single-task creation, ak create task still works:
ak create task --board <id> --title "Title" \
--description "Details" \
--repo <repo-id> \
--labels "bug,frontend" \
--assign-to <agent-id> \
--parent <task-id> \
--depends-on "id1,id2"-o json only when you need to extract fields programmatically-o yaml outputs apply-compatible YAML (round-trip: get → edit → apply)-o wide shows additional columns (role, runtime, etc.)task complete — only humans complete tasks.git push. Skip only if tests cannot run locally. Do not rely on CI to catch failures you could have caught locally.task review, check gh pr view --json mergeable. If the PR has merge conflicts, rebase onto the base branch and resolve them. Never submit a conflicted PR for review.ak task review. This includes mistaken wake-ups or rejections, rejection reasons that say to wait for another task, no actionable work, blockers, partial completion, and follow-up work. Never wait in in_progress; tell the reviewer to reject again only when the prerequisite is complete and the worker has an immediate action. If review submission fails, fix it and retry; do not exit.task review --pr-url; then mark it ready with gh pr ready <pr-number> immediately before submitting task review.Agent-Profile trailer linking to this agent's profile page.Every commit message must include the following git trailer:
Agent-Profile: https://agent-kanban.dev/agents/{agent_id}The agent ID is available in the AK_AGENT_ID environment variable. Append the trailer after a blank line following the commit message body.
Example commit message format:
feat: implement user search
Agent-Profile: https://agent-kanban.dev/agents/57c1eb3a80a84529You can append it with git interpret-trailers:
bashgit commit -m "$(git interpret-trailers --trailer "Agent-Profile: https://agent-kanban.dev/agents/$AK_AGENT_ID" <<'EOF' feat: implement user search EOF )"
Or manually append it when constructing the commit message via a heredoc:
bashgit commit -m "$(cat <<EOF feat: implement user search Agent-Profile: https://agent-kanban.dev/agents/$AK_AGENT_ID EOF )"
| Command | Description | |---------|-------------| | ak auth whoami | Show your current AK auth identity (agent ID and session ID) |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 14,063 | 4,933 | -65% | 1 | 1 | 0% | 2,128 | 3,378 | +59% | 0 | 0 | — |
case-02 | fail→fail | 9,912 | 5,662 | -43% | 1 | 1 | 0% | 674 | 3,552 | +427% | 0 | 0 | — |
case-03 | fail→fail | 22,928 | 4,999 | -78% | 1 | 1 | 0% | 3,978 | 3,357 | -16% | 0 | 0 | — |
case-04 | pass→pass | 4,988 | 5,306 | +6% | 1 | 1 | 0% | 818 | 3,962 | +384% | 0 | 0 | — |
case-05 | pass→pass | 6,354 | 2,992 | -53% | 1 | 1 | 0% | 1,100 | 3,555 | +223% | 0 | 0 | — |
case-06 | pass→fail | 3,613 | 4,938 | +37% | 1 | 1 | 0% | 573 | 3,240 | +465% | 0 | 0 | — |
case-07 | pass→pass | 4,841 | 2,738 | -43% | 1 | 1 | 0% | 711 | 3,488 | +391% | 0 | 0 | — |
case-08 | pass→pass | 3,119 | 3,833 | +23% | 1 | 1 | 0% | 446 | 3,717 | +733% | 0 | 0 | — |
case-09 | fail→pass | 6,797 | 3,751 | -45% | 1 | 1 | 0% | 1,037 | 3,707 | +257% | 0 | 0 | — |
case-10 | fail→fail | 10,925 | 3,549 | -68% | 1 | 1 | 0% | 1,645 | 3,424 | +108% | 0 | 0 | — |
case-11 | fail→fail | 7,937 | 2,566 | -68% | 1 | 1 | 0% | 1,177 | 3,483 | +196% | 0 | 0 | — |
case-12 | fail→pass | 11,010 | 1,583 | -86% | 1 | 1 | 0% | 1,758 | 3,305 | +88% | 0 | 0 | — |
case-13 | fail→pass | 6,048 | 5,300 | -12% | 1 | 1 | 0% | 954 | 4,145 | +334% | 0 | 0 | — |
case-14 | pass→pass | 4,281 | 3,289 | -23% | 1 | 1 | 0% | 640 | 3,567 | +457% | 0 | 0 | — |
case-15 | fail→pass | 8,269 | 1,827 | -78% | 1 | 1 | 0% | 1,247 | 3,327 | +167% | 0 | 0 | — |
case-16 | fail→pass | 5,592 | 3,676 | -34% | 1 | 1 | 0% | 1,025 | 3,698 | +261% | 0 | 0 | — |
case-17 | fail→pass | 6,089 | 1,892 | -69% | 1 | 1 | 0% | 1,072 | 3,360 | +213% | 0 | 0 | — |
case-18 | fail→fail | 7,961 | 2,069 | -74% | 1 | 1 | 0% | 1,177 | 3,334 | +183% | 0 | 0 | — |
case-19 | fail→pass | 9,540 | 2,570 | -73% | 1 | 1 | 0% | 1,617 | 3,523 | +118% | 0 | 0 | — |
case-20 | fail→pass | 4,796 | 1,835 | -62% | 1 | 1 | 0% | 815 | 3,361 | +312% | 0 | 0 | — |
case-21 | pass→pass | 6,220 | 2,536 | -59% | 1 | 1 | 0% | 910 | 3,504 | +285% | 0 | 0 | — |
case-22 | pass→pass | 10,033 | 1,801 | -82% | 1 | 1 | 0% | 1,693 | 3,332 | +97% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +32 percentage points is the difference between those two pass rates over the 18 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.