hone is a development model where a human writes a short Plan and an automated loop then builds, verifies, consolidates, reviews, and lands each change unattended in a git worktree; a scheduled garden loop (/hone:garden) cuts staleness between changes. The repo keeps only durable truth that cannot go stale, and every cycle deletes something. Enforced by a PreToolUse guard, a Stop-hook gate and nag, two fault-finding critics, and default-on land gates for irreversible changes (authority) and real-environment proof.
Consolidation critic for a finished hone change. Runs once, in constructed context, over the diff and what the change left behind in docs, types, and tests. Prompted to argue for deletion: a Decision restating code, a Note drifting into a spec, a redundant test, an abstraction not earning its keep. Read-only.
Gatekeeper for a hone Plan. Runs once at the end of /hone:plan, in constructed context, before the Plan is handed to /hone:run. Prompted to find fault; it hunts placeholders, contradictions, ambiguity, wrong scope, and collision with an open change, and returns structured findings. Read-only.
Run hone's continuous-maintenance loop: scan the whole repo for staleness that built up between changes (orphan/oversized Notes, broken Governs links, redundant tests, dead code, stale open questions), then land the safe cuts one at a time through the same worktree loop. Deletion-only: every garden change removes something and the suite proves the cut safe. Escalates judgment calls instead of forcing them. Invoke with /hone:garden, or on a schedule.
Author the temporary Plan for one change: .plans/<change>.md, the only hand-written artifact. Guides sizing a change to the smallest unit worth its own review gate, states what, why, and how you'll know it works, then submits it to the plan-critic for approval while the human is still present to revise. Does not write code, tests, or docs. Invoke with /hone:plan <change-name-or-sketch>.
Execute one or more Plans unattended through the hone loop: worktree, build (test-first), verify, consolidate, /code-review, land. Confirms each step by its artifacts, never a subagent's report; proceeds without checking in and stops only when blocked-unresolvable, genuinely ambiguous, or done, leaving the worktree as evidence. Invoke with /hone:run [change | --all].
Executes bash commands
Hook triggers when Bash tool is used
Modifies files
Hook triggers on file write and edit operations
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
A Claude Code plugin that refines a codebase by cutting. A human writes a short Plan; an automated loop then builds, verifies, consolidates, reviews, and lands each change unattended, working in an isolated git worktree. The repo keeps only truth that cannot go stale, and every cycle deletes something.
To hone is to sharpen a blade by grinding material away: refinement through removal.
The full model (artifacts, the loop, the checkers, the invariants) lives in
docs/model.md. This README covers install and use.
Add the plugin and enable it in your project's .claude/settings.json:
{
"enabledPlugins": { "hone@hone": true },
"permissions": {
"allow": ["Bash(claude -p:*)"],
"deny": [
"Write(./scripts/run-tests.sh)", "Edit(./scripts/run-tests.sh)",
"Write(./scripts/typecheck.sh)", "Edit(./scripts/typecheck.sh)",
"Write(./scripts/lint.sh)", "Edit(./scripts/lint.sh)",
"Write(./.claude/settings.json)", "Edit(./.claude/settings.json)"
]
}
}
The permissions.allow entry lets run's review step invoke the native
/code-review in a nested headless Claude Code. Claude Code now disables model
invocation of that command, so hone runs it as a print-mode user turn
(claude -p "/code-review …"); without the rule that nested call is gated and
run can't stay unattended.
The permissions.deny entries are the file-tool half of hone's tamper
resistance (see Tamper resistance below). The bash-guard only closes the
shell routes around the gate; the guard protects src/, tests/, docs/,
and db/ but not the gate's own machinery. These rules stop Write/Edit
from mutating the test adapter or settings directly. Extend the list to any
other adapter or config your project treats as protected.
Then, once per project, install the test adapter and the durable-docs skeleton:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/setup.sh"
setup.sh picks a test-adapter template for your ecosystem, gitignores the
temporary artifacts (.worktrees/ and the markers, though Plans are tracked), and creates
docs/decisions/, docs/notes/, docs/open-questions.md, and src/. Add the
optional scripts/typecheck.sh and scripts/lint.sh where your language has
them; the gate runs each when present. The adapter contract is
templates/run-tests/README.md.
hone assumes a src/<area>/ layout: the guard requires a failing test before new
code under src/, the nag maps each Note to a src/<area>/, and the gate watches
src/ and tests/ for work in flight. Keep production code under src/ (Python
packages too: src/<pkg>/ is a supported layout), or that enforcement silently
does nothing.
/hone:plan <change>: author .plans/<change>.md, the one hand-written
artifact (what, why, how you'll know it works), and commit it. It is tracked,
and the change's landing merge later removes it (git history keeps it)./hone:run <change>: execute that Plan through the loop and land it green.
/hone:run --all runs every ready Plan, landed one at a time. It first checks
the set for independence: disjoint Plans run in parallel worktrees, overlapping
ones sequentially./hone:garden: the continuous-maintenance loop. Scans the whole repo for
durable-layer drift between changes (orphan Notes, broken Governs: links,
redundant tests, dead code, stale open questions) and lands the safe cuts
(deletion-only, each proven safe by the suite) through the same worktree loop.
Meant to run often and small, on whatever schedule the project already has (a
print-mode claude -p "/hone:garden").Everything after the Plan is automatic. run proceeds unattended and stops only
when blocked with no resolution, genuinely ambiguous, or done. On a stop it leaves
the worktree as evidence and escalates, and never disables a gate to proceed.
Three hooks run the laws, from hooks/:
PreToolUse): no production code without a failing test, and no direct
edits to src/, tests/, docs/, or db/ in the primary tree (that work
belongs in a worktree, landed by a merge). .hone-durable-paths adds
project-specific paths to the protected set.Stop): the test suite, plus type-check and lint where present, stay
green. A failure blocks the turn.Stop, advisory): a leftover Plan, an oversized Note, a Note with no
matching src/ area, a Decision/Note whose Governs: path no longer exists, a
merged hone/* branch land forgot to delete, or a change about to land that
deletes nothing.Two critics, each prompted to find fault rather than approve, fill the judgment
slots: plan-critic (checks the Plan at the end of /hone:plan, with the human
present to revise a rejection) and consolidate-critic (checks what a change
leaves behind in docs and tests). Review reuses Claude Code's built-in
/code-review.
Spec and test driven development for Claude Code. Enforces spec-first, one-test-at-a-time TDD via slash commands, a PreToolUse guard hook, a git pre-commit gate, and a Stop-hook coverage audit.
Bun + TypeScript stack rules: TS conventions, formatting, bun:test testing, security, Bun-first tooling, and Bun runtime / built-in API guidance.
Language-agnostic baseline rules for Claude Code: minimal-change principle, Conventional Commits, documentation conventions, and Context7 MCP guidance for library lookups.
npx claudepluginhub dominik-rehse/hone --plugin honeHarness-native ECC plugin for engineering teams - 67 agents, 279 skills, 94 legacy command shims, reusable hooks, rules, MCP conventions, and operator workflows for Claude Code plus adjacent agent harnesses
Comprehensive skill pack with 66 specialized skills for full-stack developers: 12 language experts (Python, TypeScript, Go, Rust, C++, Swift, Kotlin, C#, PHP, Java, SQL, JavaScript), 10 backend frameworks, 6 frontend/mobile, plus infrastructure, DevOps, security, and testing. Features progressive disclosure architecture for 50% faster loading.
Lazy senior dev mode. Forces the simplest, shortest solution that actually works: YAGNI, stdlib first, no unrequested abstractions.
Develop, test, build, and deploy Godot 4.x games with Claude Code. Includes GdUnit4 testing, web/desktop exports, CI/CD pipelines, and deployment to Vercel/GitHub Pages/itch.io.
Consult multiple AI coding agents (Gemini, OpenAI, Grok, Perplexity, plus codex, antigravity, and grok CLIs when installed) to get diverse perspectives on coding problems
Matt Pocock's agent skills for real engineering — grilling, spec/ticket flows, TDD, code review, domain modelling and more. Plug-and-play, not vibe coding.