v0.1.0
First release. One rule file, enforced in Claude Code and in Codex CLI through
each harness's own hook mechanism.
Added
- Rules as markdown files: the matcher in the frontmatter, the message the agent
reads in the body. - Three tiers, most specific first: project-personal
.handrail/local/,
project-shared.handrail/, and global~/.config/handrail/. A rule replaces
a lower one of the same filename outright, and a stub carrying
enabled: falseswitches an inherited rule off. handrail checkvalidates every tier and prints the effective ruleset,
annotated with tier, shadowing, and disabling.handrail test <event>dry-runs one synthetic event against the rules and
exits 2 when the outcome is block.handrail syncwrites handrail's hook entries into every detected harness.
Where a harness cannot do what a rule asks, it substitutes the strongest
action that harness supports and reports the substitution rather than
degrading the rule silently.handrail advisereports which rules also translate into a native harness
entry, such as a Claude Code permission deny.handrail trustgrants a repo's committed.handrail/rules permission to
take effect.handrail import hookifyconverts hookify rule files into personal rules and
reports anything the format cannot express.handrail doctordiagnoses the install offline.handrail versionprints the version, commit, and build date.handrail hookis the entry point the harnesses call. Sync installs it.- Plugins for Claude Code and Codex CLI from the repo's own marketplace,
carrying theaddskill. The plugin downloads the pinned binary on the next
session start, verifies its checksum, and syncs once. - Prebuilt binaries for macOS and Linux on amd64 and arm64, and a Homebrew cask
atsvyatov/tap/handrail. There is no Windows build.