Dev Environment & Conventions¶
Home / Guides & Runbooks / Dev Environment & Conventions
How to set up a local development environment and the conventions we follow once you're in the code. New engineers should pair this with Accounts & Access and the Developer Workstations spec.
Per-repo specifics live in the repo
This page captures the cross-cutting conventions. Repo-specific build steps belong in each repo's README and CLAUDE.md; link the canonical ones from Key Repositories. New repos get this baseline from the new-repo-bootstrap skill.
Local Setup¶
- Get provisioned — see Accounts & Access.
- Clone from the
anvil-coGitHub organization. - Follow the repo
READMEfor language toolchain and build steps; a repo'sCLAUDE.mdlists the canonical install / test / run commands. - Set up your agent tooling once — skills and MCP connectors — per Claude Code & AI Tooling.
- For ModuleWorks / Windows-only builds, use the Shared Windows Debug Machine.
Branching & Pull Requests¶
- Base branch is
main. Branch off it and open a PR back into it;mainstays releasable. - Branch naming:
you/AREA-short-slug. Include the Linear issue identifier when there is one (avnish/ENG-123-fix-toolpath) — Linear then auto-links the branch and PR to the issue. Thelinear-link-prskill adds the link when a branch predates its issue. - Size PRs by what the change needs. We don't require artificially small or single-purpose PRs — land a complete, coherent change rather than splitting it just to keep the diff small.
- Open your PR with the
pr-describeskill. It writes the PR description from your branch's diff and commits, follows the repo's PR template, and links the Linear issue when the branch names one. Use it instead of hand-writing the body — invoke it by describing the task or with/pr-describe. - Review: every PR needs at least one human approval before merge. Use the
@claudereview workflow for a fast first pass — comment@claude /review-all(or a specific/review-*) on the PR. Apply feedback with thepr-address-commentsskill. - Merge: squash-merge so
mainkeeps one commit per PR with a clean, conventional-commit-style subject. Delete the branch after merge.
Coding Standards¶
- Match the surrounding code. Each repo sets its own formatter and linter (e.g.
prettier/eslint,ruff/black,rustfmt,clang-format); run them before pushing — CI enforces them. - The repo's
CLAUDE.md/AGENTS.mdare the source of truth for style, structure, and commands. Update them when a convention changes. - Never commit secrets. Use environment variables, GitHub Actions secrets, or the shared password manager — see the security basics in Accounts & Access.
CI / CD¶
- CI runs in GitHub Actions.
- Required checks must pass before merge — lint, tests, and build. A PR that goes red blocks merge until it's green.
- A failed build: open the failing job's logs from the PR's Checks tab, fix locally, and push again to re-run; or re-run a flaky job from the Actions UI. Re-running does not need a new commit.
Release Flow¶
- Production release flow is still WIP — nothing ships to production yet. Once it does, the plan is tag-based releases off
main, versioned with semver (vMAJOR.MINOR.PATCH). - Generate release notes from the merged PRs since the last tag with the
release-notesskill, then publish the GitHub release. - Cadence is per artifact — services release when a meaningful change lands; libraries and SDKs cut a tagged release consumers can pin to.