Take agent-built code the last mile — safely to production.
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.
| Area | Without ApexYard | With ApexYard |
|---|---|---|
| Code review | Ad-hoc prompts | Rex reviews every pull request. |
| Technical decisions | Lost in chat | Agent Decision Records preserve them. |
| Quality gates | Manual memory | Shell hooks block unsafe actions. |
| Merge approval | Informal “LGTM” | Rex and a named human approve the exact commit. |
| Database migrations | High-risk edits | A migration ticket and rollback plan are required. |
| Architecture | Scattered notes | C4 templates and the /c4 skill create a shared model. |
| Portfolio view | Several GitHub tabs | /inbox, /status, and /tasks read one registry. |
| Upstream updates | Easy to forget | /update reports drift and guides the sync. |
| Roles | Repeated context | Role files activate from clear triggers. |
| Onboarding | Manual setup | /setup collects the required configuration. |
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
- 66 slash-command skills — from
/setupand/handoverto/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.mdis the universal entry document for tools that do not loadCLAUDE.md. Seedocs/harnesses/pi.md.
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
gitandgh. 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.
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.
gh repo clone your-org/apexyard
cd apexyardOr with plain git:
git clone https://github.com/your-org/apexyard.git
cd apexyardgit remote add upstream https://github.com/me2resh/apexyard.gitLater, run /update to bring upstream changes into your fork. The skill
previews the diff, uses a sync branch, and guides any version migrations.
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.
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: activeRegister 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.
/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.
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.
| Tool | Enforces your rules? | Setup | Good 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.sh |
Run 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.sh |
Run 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.sh |
Codex 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.
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.
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:
[](https://github.com/me2resh/apexyard)Built with — for a project built out through the ApexYard workflow:
[](https://github.com/me2resh/apexyard)ApexYard is designed to be customized. Every role, workflow, and template can be modified to fit your team:
- Add roles: Create new
.mdfiles inroles/your-department/ - Modify workflows: Edit files in
workflows/ - Add templates: Drop new templates in
templates/ - Override anything: The stack is just markdown files -- edit freely
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.
Thanks to everyone who contributes code, documentation, bug reports, ideas, and feedback.
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.
MIT License. See LICENSE for details.
Built with real-world experience shipping software with Claude Code.

























































