house rules - xopherdeep/do-it-for-the-xp GitHub Wiki

House rules for every Project Towers builder (read after your brief)

Where you work

  • ONLY in the worktree /home/xopher/www/x/do-it-for-the-xp/.claude/worktrees/feat+project-towers (branch feat/project-towers). Never cd to /home/xopher/www/x/do-it-for-the-xp itself: 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.md only when your brief leaves a question open; your brief is your requirements.

chemx the whole ride (the owner's rule)

  • Read with chemx read <file> --outline, chemx read <file> --symbol <name>, chemx read <file> --lines A-B. Search with chemx q <symbol> and chemx 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). Never chemx typecheck, chemx verify, chemx lint, a build, bare chemx test, or any raw pnpm/npx/jest command: 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> (set CHEMX_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.

Git

  • 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 status to read your own changes are fine.
  • Your plan brief's "Lead commits" step is the lead's, not yours.

Code

  • 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 with copyFor(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) from src/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.

Your report

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.

⚠️ **GitHub.com Fallback** ⚠️