Getting started
One checkout serves every surface. Install Hatsu on yours, let the warm-up bind Nen, and run a first request.
Three things are the same everywhere: nen (installed and bound by the warm-up), git and gh authenticated as you, and a nen/contract.json in the repository you point Hatsu at. That contract is the only thing Hatsu asks of your project. A python3 on the host is a prerequisite on the installed plugin path.
Read from the repositories at commit: hatsu 3c582c18a4 (v0.159.0) · nen d7a720ddcd (v0.29.0) · handbooks 39b8e06d3c (v0.13) · 2026-11-04
1. A checkout you keep
Every surface is served from one git checkout of the Hatsu repository. Claude Code links it in place, Antigravity links its generated plugin, Codex copies it per version through its plugin install, and Cursor links each skill into it. Keep the checkout on main: whatever it holds is what every session serves.
2. Install on your surface
Claude Code
git clone https://github.com/zheref/hatsu.git ~/Code/Agents/hatsu # or wherever you keep it
~/Code/Agents/hatsu/scripts/hatsu_surface_link.sh --surface claude-code --root ~/Code/Agents/hatsusource: hatsu:docs/using/claude-code.md § 2 · Setup
Then open a new session, or type /reload-plugins in one that is running, and summon the lead persona with /kurapika. /kurapika <request> runs the warm-up and takes the request as the first turn of the loop.
/kurapika Add a "Clear all" action to the notifications list, with a confirmation sheetsource: hatsu:docs/using/claude-code.md § 3 · Usage
Codex
"$HATSU_PLUGIN_ROOT/scripts/hatsu_surface_link.sh" --surface codex --root "$HATSU_PLUGIN_ROOT"
# = git archive HEAD into $CODEX_HOME/hatsu-marketplace-snapshots/<commit>,
# codex plugin marketplace add <snapshot> && codex plugin add hatsu@hatsu, read backsource: hatsu:docs/using/codex.md § 2 · Setup
$hatsu:ten # once per session: verify Nen and place this repo's personas
$hatsu:ren Add a "Clear all" action to the notifications list, with a confirmation sheet
$hatsu:aka
$hatsu:mukaisource: hatsu:docs/using/codex.md § 3 · Usage
Cursor
Check the version first: below 2026.01 the install succeeds and the surface sees nothing.
cursor-agent -v # 2026.09.08-6caf4ff on the host these records were made onsource: hatsu:docs/using/cursor.md § 2 · Setup
/ten # once per session: links .cursor/skills and .cursor/agents (the links persist), verifies nen and cursor-agent's version
/ren Add a "Clear all" action to the notifications list, with a confirmation sheet
/aka
/mukaisource: hatsu:docs/using/cursor.md § 3 · Usage
Antigravity
"$HATSU_PLUGIN_ROOT/scripts/hatsu_surface_link.sh" --surface antigravity --root "$HATSU_PLUGIN_ROOT"
# = ln -s "$HATSU_PLUGIN_ROOT/surfaces/antigravity" ~/.gemini/config/plugins/hatsu, then agy plugin validatesource: hatsu:docs/using/antigravity.md § 2 · Setup
/ten # once per session: verify nen, read the plugin back
/ren Add a "Clear all" action to the notifications list, with a confirmation sheet
/aka
/mukaisource: hatsu:docs/using/antigravity.md § 3 · Usage
3. Nen, at the version Hatsu pins
Hatsu's warm-up installs the pinned Nen for you, checksum-verified, and links it at ~/.local/bin/nen so your terminal and the agent run the same build. By hand, the same bootstrap at the ref Hatsu's contract pins:
curl -fsSL https://raw.githubusercontent.com/zheref/nen/v0.28.0/bootstrap/nen.sh -o nen-bootstrap.sh
bash nen-bootstrap.sh --ref v0.28.0source: nen:README.md § Install, with the ref hatsu pins (nen/contract.json dependency.pinned_ref = v0.28.0)
The pin, read from nen/contract.json in the Hatsu repository:
dependency.source:zheref/nendependency.minimum:0.28dependency.pinned_ref:v0.28.0dependency.bootstrap.url:https://raw.githubusercontent.com/zheref/nen/v0.28.0/bootstrap/nen.shdependency.bootstrap.scriptSha256:abf2bde0ebc207588bd078acbf861377d4755562514aec26d070aafd1267ba70
The latest Nen release, from Nen's own README:
curl -fsSL https://raw.githubusercontent.com/zheref/nen/v0.29.0/bootstrap/nen.sh -o nen-bootstrap.sh
bash nen-bootstrap.sh --ref v0.29.0source: nen:README.md § Install (the latest release)
4. The first request, and what happens next
A request runs the loop in an isolated effort worktree and commits locally; nothing is pushed. When you decide the branch goes up, call the push phase; then the PR phase runs review, impacted tests, coverage and opens one PR, and the readiness watch drives it to Ready. The merge is yours, in GitHub. The Concepts page explains the loop and the gates; the Hatsu guide lists every skill.