Native database clients that share no code: apple/ holds the macOS and iOS apps (Swift), linux/ the Linux app (Rust, GTK 4). Read apple/AGENTS.md or linux/AGENTS.md before working in that folder. Claude Code loads it through the folder's CLAUDE.md, Codex only when started there.
apple/,linux/: each app with its scripts and changelog..github/: workflows, actions, the PR template andplugin-registry.json..claude/: the path-scoped rules and thefix-issueandreleaseskills, which Codex sees through.agents/skills/.scripts/:banned-words.txtwithcheck-banned-words.sh, the PR title and changed-path checks inscripts/ci, and the towncrier pin inscripts/release.appcast.xml: the legacy feed apps up to 0.81 read frommain(apple/RELEASING.md, Channels)..oss-scanner/: the build image and threat model for Anthropic's OSS Scanner. Renaming a TableProCore target that.oss-scanner/swift/Package.swiftlists updates it there too.- Docs site: TableProApp/docs, cloned beside this repo as
../tablepro-docs, under its ownAGENTS.md.
- Tests define behavior. When a test fails, fix the code, never the test. A test that pins behavior the PR changes on purpose is updated in the same PR and named in its description.
- Verify with
.claude/skills/fix-issue/scripts/verify.shfrom the repository root. It printsPASS,FAILorINCONCLUSIVE;INCONCLUSIVEis never a pass. - Writing: short sentences, plain words, no em dash, no term from
scripts/banned-words.txt. Code comments say why, never what. - One home per fact; other docs point to it by path and section.
- The PR title is the squash commit subject,
type(scope): description. The body follows.github/pull_request_template.md. - A rename or signature change updates every caller and test in the same commit.
- Agents merge on green with
gh pr merge <N> --auto --squash. They create arelease/*branch or a tag only when the maintainer says to release, and use--adminonly on the maintainer's word.
A PR merges once its required checks pass: .claude/rules/ci.md, or gh api repos/TableProApp/TablePro/rules/branches/main for the live list. Read why a check failed before any re-run.
Before editing a file, read each .claude/rules/*.md whose paths: header matches it. Claude Code loads them itself.