Install & init (v7)
Install
One-line installer:
curl -fsSL https://quint.codes/install.sh | bash
The installer fetches the latest tagged release for your platform, places the
binary at ~/.haft/bin/haft, and links it onto your PATH. It also
installs the packaged Open-Sleigh runtime under
~/.haft/runtimes/open-sleigh/current so haft harness run
works without a local Open-Sleigh checkout.
From source (Go ≥ 1.23):
git clone https://github.com/m0n0x41d/haft
cd haft
task install Initialize a project
Inside the repository you want to onboard:
cd path/to/your/project
haft init This creates:
.haft/directory with project identity (.haft/project.yaml), workflow policy (.haft/workflow.md), and placeholder spec carriers..haft/specs/target-system.md— placeholder TargetSystemSpec with one parseable draft section..haft/specs/enabling-system.md— placeholder EnablingSystemSpec..haft/specs/term-map.md— empty TermMap awaiting load-bearing terms.- MCP server config for the chosen host agent (default: Claude Code in
.mcp.json;--codexfor Codex;--allfor both).
The placeholders are intentionally status: draft. They reserve a parseable
structure without claiming active product authority. Onboarding promotes them as
the human approves load-bearing claims.
Init flags
haft init # Claude Code, global commands (~/.claude/commands/)
haft init --local # Claude Code, project-local commands (.claude/commands/)
haft init --codex # Codex skills under ~/.agents/skills/
haft init --codex --local # Codex skills under .agents/skills/ in this project
haft init --all # All supported hosts
haft init --opencode # Experimental: OpenCode (sst/opencode), opencode.json + ~/.config/opencode/
haft init --opencode --local # Experimental: OpenCode under .opencode/ in this project Verify readiness
Right after init the project is needs_onboard — the harness will refuse
broad runtime execution until you produce active spec sections.
haft spec check
# spec_sections: 2
# active_spec_sections: 0
# term_map_entries: 0
# Findings: spec_carrier_no_active_sections (target + enabling),
# term_map_missing_term That's expected. Drive onboarding next:
haft spec onboard --json # see the next typed phase
# In Claude Code / Codex with the haft MCP plugin loaded:
/h-onboard See Spec onboarding for the typed flow.
Supported host agents
v7 product support targets Claude Code and Codex. Cursor, Gemini CLI, OpenCode
(sst/opencode), JetBrains Air, and generic MCP clients remain protocol-compatible
carriers — they will receive tool calls, but the bundled prompts and skills are
tested against Claude Code and Codex specifically. haft init --opencode
writes opencode.json with an mcp.haft block and installs
the same command/skill files used by Claude Code.
Upgrade from v6
Existing v6 .haft/ data is forward-compatible. Re-run haft init
in your existing project to pick up the new prompt files in
~/.claude/commands/ (or .claude/commands/ if you used
--local) and to add the placeholder spec carriers if absent.
Existing .haft/decisions/*, problems/*, and notes/*
survive untouched.
After re-init, restart your host agent so it re-reads the MCP tools/list response.