CLAUDE.md · git:20260908.ab222d4 · 2026-09-08 · sha256 e5a8d63aed8e1509

CLAUDE.md git:20260908.ab222d4A

Immutable. This exact content is served forever at /api/v1/blob/e5a8d63aed8e1509.

# x-md

Read [`AGENTS.md`](AGENTS.md) first — it holds the conventions for this repo (build order, design tokens,
landing copy frame, the error module, versioned routes, quotas, discovery documents, and the checks to run
before pushing). This file only adds what is specific to working here with Claude Code.

- **Open work lives in [`TODO.md`](TODO.md).** Read it at the start of a session. Right now it tracks the
  agent-readiness push (getting x.pcstyle.dev to 100/100 on is-agentic): what is already on the branch, what
  needs a human, and what was deliberately left undone with the reasoning. Update it when you finish or
  change one of those items rather than letting it rot.
- Checks before pushing: `bun run test` and `bun run build` (the build starts with `tsc`, so a separate run is
  redundant). After touching `lib/openapi.ts`, run `bun run openapi:build` and **commit** the regenerated
  `public/openapi.json` — `bun run build` rewrites that file in place, so `openapi:check` can never fail
  straight after a build; it is the CI guard against a stale committed copy.
- `main` takes a PR. Its ruleset requires the `build` and `CodeRabbit` checks, a deployment to the `Preview`
  environment, **signed commits**, and the branch up to date with `main`. No approvals are required, and
  merges must be squash or merge — rebase is disabled. An unsigned commit blocks the merge no matter how
  green everything else is. Repo admins hold an always-on bypass; other contributors do not.
- The `CodeQL` check is red on the open PR and that is expected: three alerts are knowingly open, one of them
  pre-existing and flagged critical. CodeQL is not a required check. Read TODO.md before "fixing" any of them —
  the two that are ours are false positives, and the obvious fixes would corrupt JSON bodies or clobber the
  `problem+json` content type.