Native database clients with a native UI per platform: apple/ holds the macOS and iOS apps (Swift), linux/ the Linux app (Rust, GTK 4), windows/ the Windows app (C#, WinUI 3), and core/ the shared Rust core the Linux and Windows apps build on and the Swift app will move to. Read apple/AGENTS.md, linux/AGENTS.md, windows/AGENTS.md or core/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.windows/: the Windows app's .NET solution. Today it holds the interop library over the core's FFI crate,core/crates/ffi, and its tests.core/: the shared Rust core's crates, its architecture and its cross-platform decisions.Cargo.toml,Cargo.lock,rust-toolchain.toml,rustfmt.toml,clippy.toml,deny.tomland.config/nextest.tomlat the top are its Cargo workspace, which also holds the Linux app's crates.windows/: the Windows app's decisions and its toolchain install script. The app is not in the tree yet..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.