Install ank

Two separate acts: the binary, which is the tool, and the skills, which teach your agent to use it. Pick the line for your machine, then run the second one.

1The binary

  • npm

    Any machine with node. The route that gets through a firewall that blocks a bare executable but lets a registry through.

    npm install -g @haksolot/ank
    
  • curl | sh

    Linux and macOS. Fetches the archive and its .sha256, and refuses before unpacking if the two disagree.

    curl -fsSL https://raw.githubusercontent.com/haksolot/ank/main/install.sh | sh
    
  • PowerShell

    Windows, in Windows PowerShell 5.1 or PowerShell 7. Same check, and it can replace an ank.exe that is still running.

    irm https://raw.githubusercontent.com/haksolot/ank/main/install.ps1 | iex
    

2The skills

One command for every agent. It detects the ones you run (Claude Code, Codex, Cursor, OpenCode and some thirty more) and links each to a single copy of the six skills.

npx skills add haksolot/ank

What you need

Two things, and a third only if you build from source.

git 2.34 or newer
Not a convenience: claims live in git refs, and ank checks the version at startup.
sh
Verifiers run under sh -c on all three systems. On Windows it comes with Git for Windows, so requiring git makes it free.
Rust 1.95 or newer
Only to build from source, with a C compiler beside it.

Check it answers

Whichever route you took, ask the binary what it is.

~
ank --version
ank 0.8.0 (8310e75, skill 0d916cc3d9a5)

ank update --check
running  0.8.0
latest   0.8.0
up to date

Three components, each the answer to a question you will ask one day:

The version0.8.0
What you installed. It is 0.x on purpose: the loop and the exit codes are specified, the storage format is not yet.
The commit8310e75
What it was built from. It matters the first time you suspect the binary in your hand is older than the behaviour you are reading about.
The skill revisionskill 0d916cc3d9a5
The skill it was built alongside. An agent that loaded the skill can compare that string with the one its tool prints, and see for itself that its instructions predate its binary.

Updating

ank update --check reads the latest release and installs nothing. ank update installs it through the route that placed the binary you run, and prints that command first. It never touches the skills: when their revision changes, it says so and leaves the reinstall to you. No other verb reaches the network for this.

Platforms

Linux, macOS and Windows. Exactly which route covers which machine:

Install routes by platform
Platformnpmcurl | shPowerShell
Linux x64
Linux arm64
macOS, Apple silicon
macOS, Intel
Windows x64

Where the npm package carries no binary, the wrapper exits 9 and names cargo install. Where no release carries one, curl | sh refuses by name and lists what does exist. Neither ends in silence.

When none of the three fits

The releases page carries the archives the two installers fetch, one per target with its .sha256 beside it: unpacking one by hand is what the installers do for you. And the tree builds:

cargo install --git https://github.com/haksolot/ank ank-cli

Releases page

No package manager ships ank. Homebrew, Scoop, apt, winget and the AUR each carried a channel or an attempt at one, and every one was withdrawn. Three routes, each served from the repository and derived from a published release.

The skills

Six plain markdown files. The first is the one an agent loads by default and it stands alone; the other five carry one activity each and are loaded when the work calls for them.

ank
The contract: why ank is shaped as it is, the verbs by the moment you use them, the rules that are not negotiable.
ank-plan
Interview a goal into ADRs, specs and tasks.
ank-drift
Audit the decisions against the code.
ank-loop
Work the backlog autonomously.
ank-tdd
Drive an implementation test-first.
ank-diagnose
Work a defect back to its cause.

Other ways in

Every route points at the same six files in git. None holds a copy somebody keeps in step by hand.

  • Claude Code

    As a plugin: six skills and nothing else. No agent, no hook, no server, so nothing of it runs unless you call ank.

    /plugin marketplace add haksolot/ank
    /plugin install ank@ank
    
  • pi

    The npm package carries the skill beside the binary. pi loads resources and does not put ank on your PATH: install the binary as well.

    pi install npm:@haksolot/ank
    
  • By hand

    Copy skill/SKILL.md wherever your harness loads it. Each skill is one file with nothing generated in it, so you lose nothing.

The full install guide

Install ank

Two commands. Linux, macOS and Windows, with git 2.34 or newer.

npm install -g @haksolot/ank
npx skills add haksolot/ank