docs: add README
Author:
Chris Tusa <chris.tusa@leafscale.com>
Date:
May 03, 2026 16:22
Changeset:
f97dbfc1a63f1e64a68db30dc75dd5ff38e99c36
Branch:
default
Changed files:
Diff
diff -r 395808495a8a -r f97dbfc1a63f README.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README.md Sun May 03 16:22:27 2026 -0500 @@ -0,0 +1,76 @@ +# isurus-hg + +A Claude Code plugin that teaches Claude to work fluently in **Mercurial 7.x**, with an **Isurus-conventions overlay** for the Isurus forge codebase, and a **PreToolUse hook** that prevents accidental `git` commands inside `.hg` repositories. + +Built because Claude's general competence is uneven on Mercurial — bookmarks, named branches, phases, and Isurus's house conventions are easy to get wrong without explicit guidance — and because "never use `git`" is more reliable as a hook than as a memorized instruction. + +## What it includes + +**Skills** (auto-loaded by Claude when relevant): +- `mercurial-basics` — `status`, `diff`, `log`, `add`, `commit`, message format, phase awareness. +- `mercurial-bookmarks-and-prs` — bookmark workflow as the unit of feature work and PRs. +- `mercurial-sync-and-merge` — pull, update, multiple heads, merge, conflict resolution. +- `mercurial-history-rewriting` — `amend`, `uncommit`, the draft-vs-public phase rule, recovery patterns. +- `mercurial-finishing-a-branch` — pre-PR checklist + push flow (the hg counterpart to superpowers' `finishing-a-development-branch`). +- `isurus-conventions` — overlay skill that activates in the Isurus repo; supplies project-specific values (URLs, branches, `make` targets) that the generic skills' procedures plug into. + +**Hook:** +- `block-git-in-hg.sh` — fires on every `Bash` tool call. If the command starts with `git` and the working directory is inside an `.hg` repository (and not inside a closer `.git` repo or a bare git repo), the call is blocked with a message suggesting the `hg` equivalent. + +## Install + +Until the plugin is published to a marketplace, install via a path entry in `~/.claude/settings.json`: + +```json +{ + "plugins": { + "isurus-hg": { + "path": "/absolute/path/to/isurus-claude-plugin" + } + } +} +``` + +Then restart Claude Code. The skills become available; the hook is registered automatically via `hooks/hooks.json`. + +**Requirements:** +- Mercurial 7.x (the skills assume modern command behavior). +- `jq` on `PATH` (the hook uses it to parse tool-call JSON; if missing, the hook fails open with a warning). +- Bash 4+. + +## Hook behavior + +The hook intercepts `Bash` tool calls. Decision tree: + +1. Command doesn't start with `git` → allow. +2. Working directory is a bare git repository (contains `HEAD`, `refs/`, `objects/` at top level) → allow. +3. Closest VCS ancestor is `.git/` → allow. +4. Closest VCS ancestor is `.hg/` → **block** with exit code 2 and a stderr message suggesting the `hg` equivalent. +5. No VCS context → allow (e.g., `git --version` outside any repo). + +Documented limitation: only the leading token of the command is inspected, so `cd /tmp && git init` from inside an `.hg` repo is allowed (intended escape valve). Override the hook by commenting out the entry in `hooks/hooks.json`. + +## Development + +This plugin is developed in **Mercurial** (eating its own dogfood). To work on it: + +```sh +hg clone <repo-url> +cd isurus-claude-plugin + +# Validate skills +./scripts/check-skills.sh + +# Run hook tests +./hooks/test/run.sh + +# Walk manual scenarios after meaningful changes +cat tests/MANUAL.md +``` + +Design spec: `docs/superpowers/specs/2026-05-01-isurus-hg-plugin-design.md` +Implementation plan: `docs/superpowers/plans/2026-05-02-isurus-hg-plugin.md` + +## License + +MIT — see [LICENSE](LICENSE).