kevglynn/house-rules
Versioned engineering playbook for AI coding agents: skills for code review, over-engineering audits, prose voice, planning, and TDD discipline.
Changelog
Release semantics live in docs/versioning.md. From 0.4.0 onward, any release that breaks synced repos — removed or renamed rules, doctor SUMMARY-key changes, profile schema breaks, core-manifest removals — leads its entry with a Breaking for synced repos section: what changes in your repo on the next sync, and what to do about it.
0.3.0 — 2026-08-07
Brand cohesion: the tooling layer stops speaking the retired "playbook" brand. One dispatcher, renamed machine state, re-rendered field — no artifact generation mixes the two brands. Decisions in docs/decisions/0002; full narrative: docs/releases/v0.3.0.md.
Added
scripts/house-rulesdispatcher — the sole documented entry point (init | doctor | sync), forwarding to the implementation scripts unchanged;hrandhouse-rulesshell aliases replacepbi/pbd. A missing or unknown subcommand is a usage error (exit 64).- Content-aware rc-block refresh:
install-aliases.shnow detects a present-but-stale source block (the body changed at this cut — the sourced filename moved) and rewrites it in place, with the malformed-marker guards intact. - Fixture coverage: the profile-distribution suite is a blocking CI gate (process-kit-b3m); both suites run on bd-less runners via a no-op shim (process-kit-4ma); new cases pin rendered-section content (playbook-free, dispatcher-form), CRLF rc blocks, stale-stamp refresh, and the nested-BEGIN guard below — 55 assertions total.
Changed
- Script renames:
playbook-init.sh→init.sh,playbook-doctor.sh→doctor.sh(independently runnable behind the dispatcher); internalPLAYBOOK_ROOT→KIT_ROOT; init lock →.house-rules-init.lock. Doctor exit codes,SUMMARY:keys, and the marker grammar are unchanged. - Machine-state renames, clean break:
~/.playbook-sync-targets→~/.house-rules-sync-targets,~/.playbook-aliases.sh→~/.house-rules-aliases.sh, the documented ignore file →~/.house-rules-ignore. No legacy-name recognition ships in code (decision 0002 A2). - Renderers and docs: the AGENTS.md section and the global-safety-net blocks emit dispatcher-form commands only; active docs and rules swept of the tooling-brand "playbook" (dated records and the generic
graybeard-playbookname exempt per 0002 A4).PROCESS_KIT, the~/process-kitclone path, and theprocess-kit-*bead prefix deliberately keep their names as documented history (A3). - Legacy
ai-dev-playbook:marker recognition sunset (process-kit-26b) after a field sweep showed zero old-marker artifacts; the 0.2.0 in-place migration machinery is removed.
Fixed
- Data-loss guard (Tier 1 review Critical): an orphan BEGIN above a well-formed marker block made all three installers' rewrite scanners silently delete the user content between them — newly reachable from install mode via the refresh path. A BEGIN seen while a block is open now refuses the rewrite; fixed test-first at every scanner (commit 3eeacc8, ledger red/green).
- Honest refusal exits: malformed-marker refusals in the installers exited 0 behind success banners ("Installed aliases", "Nothing to remove"); they now exit 1 with explicit warnings across install and uninstall in both installers and in init's section refresh.
- Doctor fix strings taught the retired direct-script invocation at 8 sites — swept to dispatcher form;
sync-rules.shshed dead migration machinery (derive_repo_root, the removed~/.cursor-sync-targetsfallback's scaffolding, the v1.0-eraclaude/rulesmigration) and--show-versionnow says house-rules.
0.2.0 — 2026-08-06
First public release, under the final name house-rules (renamed from the working name process-kit; old GitHub URLs redirect). Full narrative: docs/releases/v0.2.0.md.
Added
- Profile-driven conventions (flagship):
profiles/conventions.tomlis the machine-readable source for the Tier 1 convention sets — commit types and branch grammar, close-evidence shape, defer-comment grammar, the banned-token catalog, and TDD obligations by bead type.scripts/conventionsprojects it into rule prose (render-rule) and answers verdicts (check-commit/check-branch/check-close); the affected rule sections are generated fragments byte-checked against the profile render by a CI regen gate with a seeded-drift self-test. - Checker CLI suite:
tdd-ledger(durable red-then-green evidence),defer-lint,close-reason-lint,banned-token-scan— stdlib-only single-file CLIs distributed to targets via one manifest (scripts/distributed-clis.list) and drift-checked by the doctor. The conventions profile ships alongside them and drift-checks byte-for-byte (SUMMARY keyprofile_drift). In targets everything runs advisory; blocking enforcement stays in the kit's CI. - Refinement framework: the
refinementskill, concepts doc, and proposal template — the rule-topology split below was its pilot. - Apache-2.0
LICENSE;CONTRIBUTINGrefreshed to match; the Agentic Covenant ships asCODE_OF_CONDUCT.md. - Kit CI self-enforcement: projection-drift gate (generated
claude/rules/vscursor/rules/canon), shellcheck at warning severity, fragment-regen gate, the three checker test suites, and the marker-migration fixture suite — each drift gate with a seeded self-test.
Changed
- Rule topology: heavyweight rules split into thin always-on law plus on-demand skills (
operating-model+graph-planning,bead-completion/beads-quality+bead-authoring,pragmatic-tddrule + skill,multi-agent-review+tier1-review/tier2-handoff,defer-convention+ thedefer-lintchecker). - Marker migration: installer marker blocks renamed from the legacy
ai-dev-playbook:prefix tohouse-rules:, with in-place migration of already-installed blocks and malformed-marker guards (orphaned or CRLF markers warn instead of truncating). graybeard-*rename: the lazy-senior-dev skill family (formerlyponytail-*) renamed with credit to DietrichGebert/ponytail (MIT), which it was adapted from.- Neutrality: per-user voice parameters moved out of the public core into overlay files (
.agents/overlay.md, machine-global~/.agents/overlay.md); README rewritten as the public front door with deep operational content moved todocs/operations.md. - Maintenance subagents in
.cursor/agents/rewritten for the kit (no predecessor/org-specific references); org-neutral Agentic Covenant blog draft added atdocs/blog-agentic-covenant.md.
Fixed
- packet skill:
render.py --verify's divergence-strip check scanned a fixed 1800 characters past the grid heading, false-WARNing template-conformant packets whose grid rows carry rich linked evidence. The window is now structural and accepts the strip above or below the grid; behavioral tests added atskills/packet/tests/test_render_verify.py.
0.1.0 — 2026-07-15
Initial extraction. This repo starts with fresh git history; the content was carried from a private predecessor playbook at its v1.2.0, with all organization-specific material removed.
Carried over
- 12 canonical Cursor rules (
cursor/rules/*.mdc) and the generated Claude Code format (claude/rules/*.md, regenerated to full parity —defer-conventionandponytail-playbookwere missing from the predecessor's generated set) - Scripts:
playbook-init.sh,playbook-doctor.sh,sync-rules.sh,install-global-safety-net.sh,install-aliases.sh,setup-worktree.sh - Global safety net block sources (
global-safety-net/*.md) - Skills: brainstorming, systematic-debugging, ponytail family (audit/debt/gain/help/review)
- Onboarding: WELCOME.md, QUICKSTART.md, sandbox exercise, core docs (concepts, FAQ, glossary, governance, adoption guide, rule-effectiveness scorecard)
- Claude Code hooks (
.claude/hooks/) and settings template - Templates: PR template with Assisted-by disclosure
New
- Migrated
councilandworkspace-kickoffskills from user-level (~/.cursor/skills/) into the versionedskills/library - Standalone identity: README, PLAN, AGENTS, CLAUDE rewritten for the kit under the working name
process-kit PROCESS_KITenv var replacesAI_DEV_PLAYBOOKin fresh installs (installer marker strings keep the legacy prefix for in-place update compatibility; seedefer:comments)
Removed (relative to the predecessor)
- Organization-specific decks, examples, integration docs, and internal audit subagents
- The deprecated
sync-cursor-rules.shshim