Work a defect back to its cause before changing anything, and close it with a regression test. Use when a claimed task's criterion names a defect in a repository with a .ank/ directory.
日本語の概要は準備中です。原文の説明を表示しています。
Read a repository's tasks and binding constraints, claim work, and finish it with proof. Use when working in a repo that has a .ank/ directory.
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
Tasks and architecture decisions live as files in .ank/, attached to the code
they constrain and reached through one CLI.
Constraints and work are two planes, joined only by scope. A decision is a rule with a glob, not the parent of a task: it binds work that did not exist when it was written, and a glob is confronted with the filesystem, where a label is only ever confronted with somebody remembering it.
Nothing is trusted, everything is anchored. The criterion you have to meet
is frozen by hash the moment you claim it, done runs the declared verifiers
itself instead of believing a report, and a proof records the route by which it
arrived. None of that is a wall: you can edit any file. Every freeze is
anchored where the editor cannot reach, so an edit becomes visible rather than
effective.
So the tool is not a gatekeeper and never pretends to be one. It refuses on state, never on who is asking, and every refusal names the exact command that resolves it.
This file is the contract. One skill per activity carries the policy:
ank-plan interview a goal into ADRs, specs and tasks
ank-drift audit accepted decisions against the code, report findings
ank-loop work the backlog autonomously, one claim at a time
ank-tdd drive an implementation test-first against a frozen criterion
ank-diagnose work a defect back to its cause, and close it with a regression test
ank-herdr orchestrate several agents in parallel from a herdr pane
Load them when the activity calls for them. A claimed task may name its method,
the one to load before the first edit, and ank context prints it beneath the
criterion. Everything below suffices on its own to execute work.
One line each, grouped by the moment they are used. Flags and refusals live in
ank help, loaded when you need them.
Orient first:
ank context <path> what binds this perimeter, what is claimable; run it first, always;
ank context --since, once you hold a claim, names by id what moved
since your last work on it
ank scope <path> every entity covering a path: why is this file constrained, and by what
ank status where am I: branch and the default branch, drift, identity,
the claim held and when it expires, the claims other agents
hold, the perimeter, the queue, the corpus's faults and signals
ank find <query> titles, scopes and criteria; ank find --type spec reaches the
specification, ank find --status open lists what remains
ank log <id> the read form, no claim needed: what previous holders tried and
why they stopped, read before repeating them
ank check [path] what is already known to be wrong, before you add to it
Execute:
ank claim <id> takes the task and freezes its done_criteria by hash
ank show <id> the entity whole; the body is where the reasoning lives, read it
before the first edit
ank log "<message>" what you learned, logged when you learn it; renews the claim
ank done runs the verifiers itself and records the proof; never edit status
by hand, an agent that grades itself can simply be wrong
ank release --reason "<why>" stuck or wrong about the approach: say so, never let a
claim lapse in silence
Shape:
ank new task a scope is mandatory; a discovered subtask is a new task with
blocked_by, never a softened criterion. Point the edge the way
the work runs: if the new task carries part of your criterion,
yours waits on it and never the reverse. Backwards, neither
moves, and `graph` reports no cycle because the dependency is
in the criterion's prose and not in an edge
ank new adr a decision the corpus is held to afterwards, not a thing to do
now; lands proposed, binding nobody until ratified
ank amend <id> blocked_by, scope and criteria, added and removed explicitly;
refuses a criterion a live claim has frozen
ank review the ratification queue, and the scopes gone dead
ank graph the blocked_by DAG: what is genuinely a root
ank check the mechanical invariants; findings are for reading, not silencing
ank archive moves what check calls cold into .ank/archive/entities/ and commits
nothing; --dry-run first, and the move lands by pull request
accept is not yours to run. It turns a proposed decision into a binding one, and it is a human act: signed, on the default branch, with no way around it. Propose, then say it is waiting. Knowing where your authority ends is part of planning well.
check reports the
divergence. If it is wrong, release --reason and say why.constraint in an ADR is binding, not advice. Read the ones covering the
files you are about to touch: that is what context hands you..ank/ is opaque, like .git/. Never read or write those files
directly. ank show <id> gives you an entity whole, ank find lists,
ank context binds: the CLI knows the budget, the freeze and who holds what;
the files do not.git worktree, each on a branch cut fresh from the default one: the drift
status names is entity files differing from the default branch, never the
code, so a base stale in code is git's to tell you and not status's. Set
ANK_AGENT per session; it falls back to <user>@<hostname>, so two
sessions in one tree are one agent to the refs, sharing a claim instead of
arbitrating over it, a degraded mode rather than the design. ank commits
nothing but accept: one branch per task, and the default branch is where
work arrives.status says what
another agent holds; claim names a live claim whose scope intersects yours
and takes the task anyway, a fact to read and not an error to refuse;
graph shows what blocked_by orders. Read all three first. When nothing
open is both unblocked and clear, take nothing and say so: an idle session
is cheaper than two agents rewriting one perimeter.--json, so the bytes reaching you
are plain: there is nothing to configure and no second surface to prefer.Exit codes carry meaning, and errors always name the exact next command:
1 generic
2 no such entity, or a prefix matching several
3 the entity moved under you: redo `context`
4 not yours to take: held by another agent, or finished elsewhere
5 a proof missing, malformed or refused, or a declared verifier that failed
6 the state forbids the act: a frozen field diverged, or no claim is held
7 a prerequisite is missing: blocked, no criterion, a mandatory flag absent,
or you already hold a live claim
8 `check` or `review` found a fault; a signal alone exits `0`
9 an environment to repair rather than work that failed
npx skills add haksolot/ank
The skill says how to use ank; it does not install the binary. Releases carry one for Linux, macOS and Windows.
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Work a defect back to its cause before changing anything, and close it with a regression test. Use when a claimed task's criterion names a defect in a repository with a .ank/ directory.
日本語の概要は準備中です。原文の説明を表示しています。
Audit the decisions in .ank/ against the current code and report what no longer holds. Use when asked whether ADRs, specs, or tasks are still accurate, after a milestone, or when the corpus and the code seem to disagree.
日本語の概要は準備中です。原文の説明を表示しています。
Orchestrate several ank agents in parallel, each on its own task, worktree and branch. Use only inside a herdr pane, when asked to fan ank tasks out across agents in a repository with a .ank/ directory.
日本語の概要は準備中です。原文の説明を表示しています。
Work through the open tasks in .ank/ without supervision, one claim at a time. Use when asked to work the backlog, chain tasks, or run autonomously in a repository with a .ank/ directory.
日本語の概要は準備中です。原文の説明を表示しています。
Interview a goal into decisions and tasks recorded in .ank/. Use when someone brings a feature, change, or problem to plan before implementation in a repository with a .ank/ directory.
日本語の概要は準備中です。原文の説明を表示しています。
Drive an implementation test-first, red before green, against a claimed task's frozen criterion. Use when implementing a task in a repository with a .ank/ directory.
日本語の概要は準備中です。原文の説明を表示しています。