apexyard

me2reshMIT活跃维护

给 AI 编码代理套上工程治理的编排层,让代理写出的代码经过审查与流程管控后安全上线,适合团队把多代理开发纳入 SDLC。

Your AI engineering org, governed. Ship agent-built code safely to production.

v5.10.1发布于 2026-10-24 17:03 UTC544star +2 / 7 天328fork同步于 2026-11-10 17:58 UTC

怎么上手

由 README 提炼,执行前请确认
gh repo clone your-org/apexyard
cd apexyard
git remote add upstream https://github.com/me2resh/apexyard.git
硬件要求按 README 说明

README 未说明,无需运行服务或运行时,只需 Claude Code 等 AI 编码工具与 git、gh 命令行

支持 Apple Silicon
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

给 AI 生成的代码加上流程管控的纯文本运维仓库,让 agent 写的代码安全上线

给 AI 编码代理套上工程治理的编排层,让代理写出的代码经过审查与流程管控后安全上线,适合团队把多代理开发纳入 SDLC。

核心能力

  • 用 60 个 shell 钩子机械执行工单优先、合并门禁与迁移门禁
  • 由 Rex 等 23 个子代理独立审查 PR 与安全设计
  • 用 Agent Decision Records 留存技术决策记录
  • 69 个斜杠命令覆盖 setup、handover、code-review、launch-check
  • 通过适配器让 opencode、pi、Codex、Cursor 复用同一套规则

容易踩的坑

需先 fork 仓库并作为 ops 仓库使用,不是直接安装的包;真实配置写在被 gitignore 的 onboarding.yaml,需运行 /setup 或手动复制示例文件;非 Claude Code 工具需先安装对应适配器(如 bash bin/install-opencode-adapter.sh)才能生效;Windows 下规则是 bash 脚本,需用 Git Bash 或 WSL

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v5.10.1
  1. v5.10.1最新正式版2026-10-24 · 2026-10-24 17:03 UTC

    Patch release — 4 improvements.

    Changed (refactor / chore / docs)

    • (#1873) harden the terraform-ci golden-path template — ce979c5c
    • (#1872) state the hook threat model in SECURITY.md — 953d4501
    • (#1868) add an after-the-release checklist to /release — f9fd80df
    • (#1869) credit five missing issue authors — 0024f0f6

    Thanks

    • @SecFathy (Mohammed Fathy) reported the problems that #1872 and #1873 fix.

    Migration script

    • A no-op migration script .claude/migrations/v5.10.0-to-v5.10.1.sh is included, and docs/upgrading.md's "What each migration does" table has a matching row. See .claude/migrations/README.md.

    Testing

    1. After merge, confirm CI creates tag v5.10.1 on main (check the auto-tag-on-release-pr-merge workflow run)
    2. Verify git describe --tags --abbrev=0 upstream/main returns v5.10.1
    3. Run /release-sync v5.10.1 to sync main→dev and prevent squash divergence
    4. Verify the squash commit's message carries the trailer: git log -1 --pretty=format:'%(trailers:key=Released-From,valueonly)' v5.10.1

    Refs #1874

    🤖 Generated with Claude Code


    Glossary

    TermDefinition
    Squash mergeGitHub merges all commits on the PR branch into a single commit on main; the branch HEAD is discarded and the resulting main tip has a new SHA
    Auto-tagThe auto-tag-on-release-pr-merge.yml workflow fires on pull_request → closed + merged for release/v* branches, tags github.sha (the squash commit), and creates a GitHub Release
    Ancestry guardgit merge-base --is-ancestor <sha> main — fails if the tag would not be reachable from main, preventing a mis-placed tag like v2.3.0
    /release-syncThe mandatory follow-up skill that merges main→dev after a squash-merge release, preventing SHA divergence accumulation
    Released-From trailerA git trailer (Key: value in the commit message's final paragraph) recording the exact dev SHA this release was cut from — bin/release-changelog.sh reads it back for the next release's changelog range (AgDR-0094)

    Released-From: ce979c5c63805a5f7d61a12e7a7ff3c04e8fa98f

  2. v5.10.02026-10-22 · 2026-10-22 15:23 UTC
    查看更新说明

    Minor release — 4 features, 34 fixes, 27 improvements.

    Added (feat)

    • (#1797) gate review depth with a trusted tier script and add the Rex delta corpus — 7ba8c564
    • (#1794) warn when the ticket marker belongs to another session or branch — b4080e3b
    • (#1770) key the bootstrap, issue-skill and role-fired markers on the session id — 64e6e103
    • (#1767) add the /preflight skill and apexyard doctor — 1ac23c1f

    Fixed (fix)

    • (#1861) detect the curl combined short-option output form as a file write — 8d17671b
    • (#1862) narrow the pin-tree token and close three tamper-gate gaps — 6c5dfff4
    • (#1850) route a continued verb and a variable verb after a redirection — 8b491660
    • (#1847) let review agents write their review body through a scoped Write tool — ab6034db
    • (#1851) accept a heredoc substitution commit message as a data sink — 8df77d5b
    • (#1852) read the commit message past a redirection — 615ac764
    • (#1849) treat a quoted heredoc that writes a file as data in commit-format — 569578bd
    • (#1844) strip a quoted heredoc body before push and commit routing — 2cbc0eaa
    • (#1841) read the push destination past a redirection — fa4d7464
    • (#1838) route git's dashed push and commit programs to the gates — 0f08be87
    • (#1835) route a git verb after a redirection to the push and commit gates — defd0597
    • (#1827) close the merge-gate scan classes found by the shape search — 0344451f
    • (#1804) block git aliases that run push or commit — 5eb65c0f
    • (#1807) block split merge phrases and the >& and >! redirect targets — 7f82bd5e
    • (#1811) let a valid worktree start its ticket and hash the warn claim — 61de7f75
    • (#1802) accept an ancestor merge-base when the plan records are unchanged — a9ecd9af
    • (#1795) share PR metadata across the merge gates in one dispatch — d970c194
    • (#1788) tell a forge auth or network error apart from a missing branch — a791285d
    • (#1793) stop an inherited Claude Code session id overriding the adapter id — 9f3ff671
    • (#1765) fix three merge-gate matcher bugs (#1757, #1758, #1760) — 4ef5feea
    • (#1778) handle a missing forge branch and cover printed commands — 1ba0c1fd
    • (#1769) restore the framework model when a routing override is removed — d63bb611
    • (#1771) let the operator make the portfolio first push — dd2065bf
    • (#1764) lay out laned BPMN on a grid and make lint fail on errors — afdcb067
    • (#1756) check or block five git option forms in the gates — 23d8387f
    • (#1755) skip apexyard body rules for external contributions — 27df313f
    • (#1754) make the shipped ORBIT example pass records-lint — 11114117
    • (#1753) resolve Git Bash mount paths with cygpath — 8cdb26fc
    • (#1750) resolve the push branch in the cd target repo — 2529becc
    • (#1752) report unsupported manifests as not scanned — 4a7283ee
    • (#1751) read commit checks when gh pr checks returns no result — 5713599c
    • (#1747) make push and commit gates read git global options — 7381e0f9
    • (#1746) make fork CI pass on upstream sync PRs — 46638333
    • (#1740) accept Windows path forms in POSIX gates — 9ba947d2

    Changed (refactor / chore / docs)

    • (#1860) stop duplicate PR check runs cancelling each other — c206a7a8
    • (#1848) record that shell-text gates are guardrails — 98417717
    • (#1839) harden settings, hooks and pin against in-session tampering — 1200b6df
    • (#1843) pre-filter segments before write-target extraction — 7c6964a3
    • (#1826) test the Rex recount check with read-only source access — 088f48c4
    • (#1809) batch the carry-over walk and limit each gh call — cd52f975
    • (#1823) add shape-probe and recount checks to the Rex prompt — 7fbc265c
    • (#1820) make the local mawk command use mawk as awk — 4300e902
    • (#1821) fix the advisory review items from PR 1797 and PR 1799 — 98d9a39d
    • (#1817) remove macOS runners and cap CI run volume — b3236f8f
    • (#1799) add a runbook for more than one session on one project — 41cc7c28
    • (#1791) make a fresh spawn the default and draft the harness requests — 663161f7
    • (#1800) clear three small review findings — 9e4f75af
  3. v5.9.02026-10-15 · 2026-10-15 14:55 UTC
    查看更新说明

    Minor release — 25 features, 6 fixes, 41 improvements.

    Behaviour change: the active ticket now lives in each working tree's git dir (#1576, AgDR-0222). /start-ticket writes apexyard-ticket into the git dir of the tree you run it in. Each linked worktree needs its own /start-ticket. git worktree remove deletes the marker with the worktree.

    Upgrade notes

    • After you run /update, read /start-ticket again. It now writes two markers.
    • Nothing that passed the ticket gate before this release is blocked by it. Old markers under .claude/session/ are still read wherever they were read before. A marker in a tree's git dir wins over them.
    • /start-ticket and /fan-out still write the old markers too. A rollback to the previous release, or a session that still runs the old hooks after /update, keeps its ticket.
    • A SessionStart notice lists the old markers it finds. It is information, not an error.
    • A stale <git dir>/apexyard-ticket outranks a newer old-layout file in two cases. One is a rollback followed by a second /update. The other is a session that follows the old /start-ticket text and writes only the old marker. Run /start-ticket again in each tree, or delete the stale marker. A staleness check is a follow-up (follow-up: to be filed).
    • The SessionStart notice lists only old markers that no marker in the same tree's git dir shadows.
    • A later, explicitly breaking release stops reading and writing the old markers. Its upgrade notes will say so.

    Added

    • The optional apexyard-bootcamp pane guides students through nine Corner Shop modules (#1680). Commands control navigation. Matching tool calls tick checkpoints. The store keeps progress across restarts.
    • The Bash dispatcher and the ticket-first gate fail closed (#1623, AgDR-0228). The dispatch-bash.sh and require-active-ticket.sh entries in .claude/settings.json set onFailure to block with timeouts of 20 and 10 seconds, taken from the profile in docs/perf/hook-fail-closed-profile-2026-10.md. onFailure needs Claude Code 2.1.295 or later. An older client ignores the field. docs/hooks-fail-closed.md describes the behavior, the claude --settings '{"disableAllHooks": true}' escape hatch, and the version finding. bin/hook-timing-profile.py measures hook timing. bin/check-escape-hatch.sh tests the escape hatch. A new workflow runs claude plugin validate --strict on the marketplace with a pinned Claude Code version.
    • bin/token-cost.py reports the token and time cost of a session (#1624). It has a session view, a reviewer view and a forge view of me2resh/apexyard PRs. docs/perf/token-cost.md gives the usage and the counting rules. The 2026-10-10 baseline is in docs/perf/token-cost-baseline-2026-10-10.md.
    • apexyard-explainer shows one plain sentence for each tool call in a pane (#1661). It uses templates and keeps the last five lines in session memory. /explainer-toggle opens or closes the pane.

    Changed

    • Inside dispatch-bash.sh, a crashed or killed require-active-ticket.sh now blocks the Bash call, as the merge gates do. It warned before. block-reviewer-ci-wait.sh stays fail open on purpose, because it is a cost guard (#1623).
    • The ticket gate, the migration gate, the AgDR spike exemptions, the tracker-repo guard and /status read the marker through one resolver. It finds a marker in a validated tree's git dir without a git process, so GIT_DIR and git config cannot redirect that lookup. The old-layout resolution keeps its old git calls until the breaking release.
    • A marker in a git dir counts only for the ops fork and registered clones. A registered clone sits under the workspace dir, or at the workspace: path of its registry entry. Other trees use the old markers, as before.
    • The marker's repo must belong to its tree. A project clone takes only a ticket of its own registry entry, and the ops fork takes no ticket of a registered project. /start-ticket stops when the project's clone does not e
  4. v5.8.02026-10-08 · 2026-10-08 23:50 UTC
    查看更新说明

    Minor release — 14 features, 50 fixes, 26 improvements.

    Behaviour changes:

    • The optional search MCP integration is removed (#1537). grep and Read are the one documented search path. Any mcp_search keys in your config are now unused; the migration script lists them.
    • Edits under .claude/worktrees/ now need an active ticket, like any other source edit (#1531).
    • With ORBIT on, slice tickets need a slice record first (#1565), and a run warns about outcomes with unmet criteria and no slice (#1570).
    • The merge gate blocks a fork PR whose workflow runs wait for approval (#1519), and checks the head workflow runs on every merge (#1536).
    • Pushes are scanned for private project references (#1528).
    • ORBIT default_planning in the registry now accepts the YAML spellings True, yes and On as on. An unknown value warns and uses the global default. Before, those values turned the slice gate off.

    Added (feat)

    • (#1574) warn about ORBIT outcomes with unmet criteria and no slice — accc5111
    • (#1451) exempt repos you contribute to but do not govern from the PR-title gate — e0429d0d
    • (#1571) require an ORBIT slice record before slice tickets — 226b7741
    • (#1450) tell a fork owner when the hook that blocked them is stale — b48db2f6
    • (#1442) add a Rex MISS corpus entry for PR #1289 — 6c05fcb8
    • (#1444) report tracker_list completeness so a short read is never zero — 7544b9e1
    • (#1500) check PR bodies, Tariq reviews and AgDRs for completeness — 483639ae
    • (#1499) add a build.isolation setting and keep worktrees as the default — 1c09d097
    • (#1498) offer a QA run after Rex approves and before merge — 12a319af
    • (#1469) audit Python dependencies alongside npm — 449a6ef7
    • (#1463) present operator choices through the AskUserQuestion wizard — 8c6f52cd
    • (#1454) add /orbit handoff for one issue per slice — 250c9b99
    • (#1443) carry Rex approval across a clean base merge, skip refresh when nothing overlaps — 9ac9d9eb
    • (#1429) add an advisory writing-profile check to the pre-push hook — 6a4b89e7

    Fixed (fix)

    • (#1581) accept GitHub Enterprise host/owner/repo values in the red-CI gate — 70e80b40
    • (#1581) pass a raw 0x1E byte through the legacy JSON-escape decoder — 70e80b40
    • (#1581) read YAML boolean spellings for ORBIT default_planning — bb6e36a1
    • (#1580) pass the #1182 parity case when the parent hook predates #1182 — 21808e5a
    • (#1575) scan for private references at push time — b312ca86
    • (#1573) gate worktree source writes under .claude/worktrees/ — a83d5c1f
    • (#1569) read the PR target from the continuation-joined command — edff499e
    • (#1567) isolate hook tests from the live session pin and caches — 259344bf
    • (#1566) join backslash-newline continuations on the jq-failure path — 27f75650
    • (#1554) decode merge-gate fallback escapes in one awk pass — cc6aaa90
    • (#1557) process long commands linearly in the write detector and PR gate — fa095d0a
    • (#1560) block a partial runs page even when validation fails — a9a87b9c
    • (#1548) join dispatcher continuations with awk under bash 3.2 — 29a97791
    • (#1546) detect argv-list merges and align the merge variable check — 7548833f
    • (#1545) check head workflow runs on every merge — ae7f4dee
    • (#1544) keep the badge test out of the real global git config — 196c16e8
    • (#1520) block the merge when a fork PR's workflow is waiting for approval — 837b0c40
    • (#1530) route push and commit gates for compound commands — dc0ee1dc
    • (#1524) match the whole no-checks message in the red-CI gate — e901e2fc
    • (#1522) close split-word and comment-join gaps in the tracker-repo gate — 6342331b
    • (#1518) allow a literal reviewer worktree add outside governed trees — b7c78296
    • (#1516) see versioned Python writes and fail closed when a here-doc cannot be read — 3956e92f
    • (#1493) read a repository flag on a continued line in the tracker gate — 339dd4a1
    • (#1485) detect --output, sort -o, yq -i and bundled python -c writes — e119968c
    • (#1487) match a relative migrations/ path with or without a lea
  5. v5.7.02026-09-27 · 2026-09-27 11:28 UTC
    查看更新说明

    Minor release — 2 features, 9 fixes, 1 improvement.

    Behaviour change: /approve-merge now stops a merge when the PR is behind its base branch (#1406). The check is on by default. Set merge.require_up_to_date to false in .claude/project-config.json to turn it off.

    Added (feat)

    • (#1420) make reviews faster with a severity bar, delta re-reviews and CI-first testing — 020fbab
    • (#1351) add opt-in ORBIT planning adapter — 6d8f24b

    Fixed (fix)

    • (#1419) block a merge when a merge gate cannot load a library — cdb57f1
    • (#1406) stop a merge when the PR is behind its base, and make /release-sync keep main-only changes — c16860e
    • (#1404) honor the active ticket for unparsed write targets, and document a reviewer test path — 9d46ee2
    • (#1400) scope the active-reviewer marker per session and stop owner-name leak false blocks — 5c12554
    • (#1397) cover .astro in the design gate, exempt Alembic env.py, and warn when config overrides drop defaults — d60a0d4
    • (#1399) validate Mermaid in every diagram-producing skill and align the DFD template with threat-model — 5be9ecb
    • (#1355) stop Claude Code always-loading rule bodies — 6870a8b
    • (#1373) skip CodeQL analysis outside the upstream repository — c66d7c5
    • (#1353) pass Orbit record root to validation — 7e561ec

    Changed (refactor / chore / docs)

    • (#1398) load the writing rule in every agent, add a no-search-MCP fallback, and make Rex verify acceptance criteria — 2b6ed42

    Closes

    • Closes #1350
    • Closes #1354
    • Closes #1370
    • Closes #1376
    • Closes #1385
    • Closes #1386
    • Closes #1390
    • Closes #1396

    Migration script

    • The release needs a per-adopter note, but no file move. .claude/migrations/v5.6.3-to-v5.7.0.sh prints it and exits 0. docs/upgrading.md has a matching row.

    Testing

    The changelog range is 020fbab..upstream/dev from the v5.6.3 Released-From trailer. It has 18 commits and 12 changelog entries. The 6 other commits are release, sync, and merge commits, which the generator excludes by design.

    • bash .claude/migrations/v5.6.3-to-v5.7.0.sh: prints the note, exit 0.
    • test_update_chain.sh: 0 failed.
    • test_release_changelog.sh: all 91 tests passed.
    • test_v54_migration.sh: PASS=6 FAIL=0.
    • markdownlint-cli2 on CHANGELOG.md and docs/upgrading.md: 0 issues.

    After merge:

    1. Confirm the auto-tag-on-release-pr-merge workflow creates tag v5.7.0 on main.
    2. Confirm git describe --tags --abbrev=0 upstream/main returns v5.7.0.
    3. Confirm the squash commit carries the trailer: git log -1 --pretty=format:'%(trailers:key=Released-From,valueonly)' v5.7.0.
    4. Run /release-sync v5.7.0.

    Refs #1421

    Glossary

    TermDefinition
    Squash mergeGitHub combines the PR's commits into one new commit on main. The new commit has a new SHA.
    Auto-tagThe auto-tag-on-release-pr-merge.yml workflow. It tags the squash commit and creates the GitHub Release after a release/v* PR merges.
    Behind-base checkThe step in /approve-merge that stops a merge when the PR's head is behind its base branch (#1406).
    /release-syncThe follow-up skill that merges main back into dev after a release, so the next release has no squash divergence.
    Released-From trailerA commit trailer with the dev SHA this release was cut from. The next release reads it to find its changelog range (AgDR-0094).

    🤖 Generated with Claude Code

    https://claude.ai/code/session_01KGvb2ba4gyT3TN8L2uMLTn

    Released-From: 020fbab0b0ade92b3dbbef2d863f84e1fed05d2d

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    AI can build quickly. Shipping safely needs a system.

    AI can produce a working prototype in a weekend. Teams still need a way to track decisions, review changes, run checks, and approve a release.

    ApexYard provides that system. Every change starts with a ticket. An independent reviewer checks the change. A merge gate stays closed until a named human approves the exact commit.

    ApexYard is a multi-project ops repo. You fork it, register your projects, and manage the portfolio from one place. Shared rules, project records, and shell hooks keep the workflow consistent.

    Claude Code is the default driver. The rules, hooks, and templates are plain Markdown and shell, so you can use another coding tool through an adapter. There is no service to run and no hosted lock-in.

    The workflow has been used with TypeScript and AWS Lambda backends, Next.js apps, Chrome extensions, and native Swift macOS apps.

    What makes it different

    AreaWithout ApexYardWith ApexYard
    Code reviewAd-hoc promptsRex reviews every pull request.
    Technical decisionsLost in chatAgent Decision Records preserve them.
    Quality gatesManual memoryShell hooks block unsafe actions.
    Merge approvalInformal “LGTM”Rex and a named human approve the exact commit.
    Database migrationsHigh-risk editsA migration ticket and rollback plan are required.
    ArchitectureScattered notesC4 templates and the /c4 skill create a shared model.
    Portfolio viewSeveral GitHub tabs/inbox, /status, and /tasks read one registry.
    Upstream updatesEasy to forget/update reports drift and guides the sync.
    RolesRepeated contextRole files activate from clear triggers.
    OnboardingManual setup/setup collects the required configuration.

    What's inside

    ApexYard is a set of plain-text files. Claude Code reads them from the repo root. No runtime or service is required.

    • 20 roles across 6 departments (engineering, product, design, security, data, architecture) that activate on triggers
    • 60 shell hooks that mechanically enforce the SDLC — ticket-first edits, a two-marker merge gate, migration gates, secrets scanning, and more
    • 69 slash-command skills — from /setup, /handover, and /scaffold to /decide, /code-review, /migration, and /launch-check
    • 23 sub-agents — Rex (code review), Hakim (security), Tariq (design review), plus the department personas
    • 22 rule files, workflow docs, and document templates (PRD, tech design, ADR, AgDR, C4 diagrams)

    See docs/whats-inside.md for the full directory and component list.

    Marketing site: the site that was previously bundled here has moved to its own repo (me2resh/apexyard-site) and is deployed independently at apexyard.ai.

    Built for Claude Code first. opencode, pi, and Codex use the same rules through small adapters. Cursor loads .claude/ natively in the IDE. See Using another AI coding tool?.

    For AI coding agents: AGENTS.md is the universal entry document for tools that do not load CLAUDE.md. See docs/harnesses/pi.md.

    Quick Start — fork and go

    ApexYard governs a portfolio of repos as one organisation. Fork and clone the repository. Use that fork as your ops repo. Register each project you want to manage. The fork is the ops repo, so no nested installation is needed.

    Using opencode, pi, or Codex? Steps 1–3 use plain git and gh. Install your tool's adapter before steps 4–6. Each step also gives a manual file option. The enforced rules are the same in both paths.

    1. Star + Fork on GitHub

    Visit github.com/me2resh/apexyard. Star it, then fork it into your organisation. Keep the name apexyard, or use a name such as your-org/ops.

    2. Clone your fork locally

    gh repo clone your-org/apexyard
    cd apexyard
    

    Or with plain git:

    git clone https://github.com/your-org/apexyard.git
    cd apexyard
    

    3. Add upstream for future updates

    git remote add upstream https://github.com/me2resh/apexyard.git
    

    Later, run /update to bring upstream changes into your fork. The skill previews the diff, uses a sync branch, and guides any version migrations.

    4. Configure the framework — run /setup

    Run /setup in Claude Code. The skill asks about your company, team, technology, and quality bar. It shows the proposed defaults before it writes the configuration.

    /setup
    

    Your real config lives in the gitignored onboarding.yaml. It stays local. /setup copies the tracked onboarding.example.yaml placeholder and fills it in. A commit-time guard blocks the real file if you try to add it.

    No /setup on your tool? Copy the example and fill it in by hand: cp onboarding.example.yaml onboarding.yaml. The gates read the file, not the skill.

    5. Register your projects — run /handover

    Projects join the portfolio through a skill. For each repo you want to manage:

    /handover <repo-url-or-local-path>
    

    /handover clones the repo, scores five harnessability dimensions, seeds the project docs, and registers the repo in apexyard.projects.yaml. It creates the registry on first use. /setup can register your first project.

    The registry it maintains looks like this — you rarely touch it by hand:

    version: 1
    projects:
      - name: example-app
        repo: your-org/example-app
        docs: projects/example-app
        status: active
    

    Register a single repo too. The portfolio skills (/projects, /inbox, and /status) read the same registry. No /handover on your tool? Copy apexyard.projects.yaml.example and add the repos by hand.

    6. Start working

    /projects          # list managed projects and status
    /inbox             # show PRs, issues, and comments that need attention
    /status            # show the git and CI state for each project
    /decide            # record a technical decision
    

    Hooks run on git and gh commands. Portfolio skills read the registry. Run /code-review <pr> to invoke the Code Reviewer agent.

    Full setup guide with directory layout, daily workflow, and FAQ: docs/multi-project.md.

    Keeping a fork current — upgrade in place, when to re-fork instead, and how to preserve your portfolio data either way: docs/upgrading.md.

    Optional: status band above the prompt

    The apexyard-status plugin draws one line above the Claude Code prompt. The line shows the active ticket, the PRs that wait for your /approve-merge, and the reviewer lock of the session. The plugin only reads data. It checks the open PRs with one cached, read-only gh pr list call for each repo. It does not replace a hook or a gate.

    /setup asks if you want the band. If you skipped that question, run these two commands from the ops-fork root:

    claude plugin marketplace add ./ --scope local
    claude plugin install apexyard-status@apexyard --scope local
    

    The band is on only for you, on this machine. After /update, run /reload-plugins to load the new version. Details and settings: plugins/apexyard-status/README.md.

    Using another AI coding tool?

    ApexYard was built for Claude Code. Its slash commands are native Claude Code skills. The enforcement layer is plain Bash, so other tools can use the same rules through an adapter.

    As of 2026-07-09, opencode, pi, and Codex have passed real enforcement checks. Each tool needs one setting so its commands reach the rules. Cursor IDE native exec was observed later (2026-09-16) when third-party configs are on. You can always use the manual configuration files from Quick Start when a skill is unavailable.

    ToolEnforces your rules?SetupGood to know
    Claude Code✅ Yes — natively. Built in; the rules fire on every command.Nothing to install — /setup and you're done.On Windows, use Git Bash or WSL (the rules are bash).
    opencode✅ Yes — proven. A real agent's git add -A was blocked by the same rule.bash bin/install-opencode-adapter.shRun opencode with --auto so the agent's command reaches the rule.
    pi✅ Yes — proven. Same, in a real pi session.bash bin/install-pi-adapter.shRun pi with -a (auto-approve). pi is deliberately bare-bones — ApexYard is the governance it leaves to you.
    Codex✅ Yes — proven. Same, in a real Codex session.bash bin/sync-codex-adapter.shCodex has to trust the rules once — /hooks, a one-off flag, or a user-level install. Details: docs/codex-adapter.md.
    Cursor✅ Yes — native in the IDE. Cursor loads .claude/ when third-party configs are on. A real Write call was refused by the ticket-first rule (2026-09-16).Enable third-party configs. Then bash bin/install-cursor-adapter.sh for the session-pin overlay.IDE only. The command-line cursor-agent ignores hooks. A leftover full adapter can lock the session.

    Under the hood: your rules stay one set of portable bash scripts, and every tool reads the same ones — never a separate copy that can drift out of sync. A daily, credentialed Conformance CI job re-verifies opencode, pi, and Codex. Cursor has no headless path in that matrix. Full per-tool setup, limits, and how to add a new tool → docs/harnesses/README.md.

    Roles, workflows & templates

    ApexYard ships 20 roles across 6 departments that activate on triggers, a full SDLC (Planning → Design → Build → Review → QA → Deploy → Monitor) with a dedicated migration sub-workflow, and reusable document templates (PRD, technical design, ADR, AgDR, migration AgDR, C4 diagrams).

    The full role roster, workflow detail, and template catalogue live in docs/whats-inside.md. The canonical entry point Claude Code reads is CLAUDE.md.

    Show you're governed by ApexYard

    Running your repo under ApexYard? Add a badge to its README. Every adopter repo that carries one is a backlink and a bit of social proof — and /handover will offer to drop it into the repos it onboards.

    Governed by — for a repo managed under an ApexYard ops fork:

    [![Governed by ApexYard](https://img.shields.io/badge/governed_by-ApexYard-2F6DF6?style=flat-square)](https://github.com/me2resh/apexyard)
    

    Governed by ApexYard

    Built with — for a project built out through the ApexYard workflow:

    [![Built with ApexYard](https://img.shields.io/badge/built_with-ApexYard-2F6DF6?style=flat-square)](https://github.com/me2resh/apexyard)
    

    Built with ApexYard

    Customization

    ApexYard is designed to be customized. Every role, workflow, and template can be modified to fit your team:

    1. Add roles: Create new .md files in roles/your-department/
    2. Modify workflows: Edit files in workflows/
    3. Add templates: Drop new templates in templates/
    4. Override anything: The stack is just markdown files -- edit freely

    Contributing

    Read CONTRIBUTING.md for the fork, branch, PR, and review flow. Open a Bug report or Feature request issue. The Code of Conduct applies to all participation. Report security issues in SECURITY.md. Do not open a public issue for those.

    Contributors

    Thanks to everyone who contributes code, documentation, bug reports, ideas, and feedback.

    Issue contributors

    Thank you to everyone who opened issues, including bug reports, feature requests, questions, and documentation feedback.

    When updating these credits, include new issue authors as well as pull-request contributors. Use public GitHub handles and links. Describe each contribution accurately.

    License

    MIT License. See LICENSE for details.


    Built with real-world experience shipping software with Claude Code.