house rules - xopherdeep/do-it-for-the-xp GitHub Wiki
- ONLY in the worktree
/home/xopher/www/x/do-it-for-the-xp/.claude/worktrees/feat+project-towers(branchfeat/project-towers). Never cd to/home/xopher/www/x/do-it-for-the-xpitself: other sessions share that checkout. - The worktree's
docs/submodule is empty. Read the spec at/home/xopher/www/x/do-it-for-the-xp/docs/superpowers/specs/2026-10-23-project-towers-design.mdonly when your brief leaves a question open; your brief is your requirements.
- Read with
chemx read <file> --outline,chemx read <file> --symbol <name>,chemx read <file> --lines A-B. Search withchemx q <symbol>andchemx q -g "<literal>". Avoid cat/grep floods. - Tests: run ONLY the specs your brief names (and the spec you create):
chemx test tests/unit/<Name>.spec.ts(add-t "name"for one test). Neverchemx typecheck,chemx verify,chemx lint, a build, barechemx test, or any rawpnpm/npx/jestcommand: the lead gates once after the last task. - The board: first
chemx team task claim <BOARD_ID> --as <YOUR_HANDLE>; lock each existing file before you edit it:CHEMX_AGENT_ID=<YOUR_HANDLE> chemx team lock acquire <path>(setCHEMX_AGENT_ID=<YOUR_HANDLE>on every chemx call so the locks stay yours); when done,chemx team task comment <BOARD_ID> "<one-paragraph result>" --as <YOUR_HANDLE>. Do not mark the task done; the lead does after review.
- No git commands that change anything (no add, commit, stash, checkout, reset, rebase). The lead commits your work by path after you report.
git diff/git statusto read your own changes are fine. - Your plan brief's "Lead commits" step is the lead's, not yours.
- Game rules live in pure modules (no Vue, no storage) with jest specs; screens and composables stay thin. New components use
<script setup lang="ts">. - Name compound booleans (
const isX = a && b;): the repo's audit flags inline compound conditions. Keep functions small (cyclomatic complexity 12 or under). - Match the surrounding style: short comments that say why; names that read as English.
- In-world copy goes through the copy catalogue (
src/lib/services/copy/catalog/) in three voices (simple, adventure, classic) read withcopyFor(key, voice, vars); no em dashes in new copy; no hex colour literals in .vue/.scss (use the--gs-*theme tokens; a ratchet spec counts them). - Rewards:
rewardsFor(d)fromsrc/lib/services/core/packs/packCommon.ts(xp d100, gp d10, ap d). Bands (heroBandFor): little 1-2, kid 2-5, grown-up 5-13. - Never wipe family data; storage writes merge.
Write the full report (what you built, TDD evidence RED and GREEN with the command and output lines, files changed, self-review, concerns) to the report file the dispatch names. Reply with only: Status (DONE | DONE_WITH_CONCERNS | BLOCKED | NEEDS_CONTEXT), the files changed, a one-line test summary, concerns, and the report path. You never dispatch subagents.