Architecture
In plain English: ApexYard is one place that holds the rules, the tools, and the history for every product you build. The diagram below shows the five layers that make that work — useful if you want the technical detail; you don't need it to start. If you'd rather see a day with it, read how it works.
What is it? ApexYard governs a portfolio of repos as one organisation: 5 layers (governance, capability, framework defaults, customisation overlay, per-project data) plus an optional split-portfolio private-sibling repo. What can it do? One ops fork holds the registry, hooks, rules, skills, agents, templates, and handbooks; managed projects clone in as gitignored workspace dirs. What's needed to start? Fork apexyard, register your projects, and read this page if you're deciding how to lay out the fork for your team. The diagram below is the canonical mental model.
What is the ApexYard architecture?
The 5-layer model
Governance declares what's true (registry, onboarding) and what's enforced (hooks, rules). Capability is what the agent can DO — skills + sub-agents. Framework defaults ship with the fork: templates and handbooks. Customisation is your overrides; the red border in the diagram is the override semantic. Per-project data lives at the bottom — one entry per row in the registry.
Customisation overlay
The framework ships defaults; custom-templates/, custom-skills/, and custom-handbooks/ let you override them per file (templates), add proprietary slash commands (skills), or layer company-confidential coding standards alongside the public ones (handbooks).
Path-mirroring is the convention — drop your version at the same relative path as the framework default, and it wins on collision.
How does the portfolio model work?
One fork, every project
You fork ApexYard once and treat the fork as your ops repo. Every project you want
governed gets a row in apexyard.projects.yaml and a folder under
projects/<name>/. Skills like /inbox,
/status, and /tasks aggregate across the registry — one
command surveys the whole portfolio.
Live working copies (workspace/<name>/) are gitignored from the fork
itself; each is a real clone of the managed repo with its own branches, PRs, and CI.
Optional private sibling repo
The dashed box on the right is opt-in. Adopters on GitHub Free who don't want
portfolio names on a public fork put the registry, onboarding, projects/, workspace/,
and the custom-* trees in a sibling private repo. Skills resolve paths via the
portfolio.* keys in .claude/project-config.json — the public
fork stays slim, the private data never leaks upstream.
Full setup walkthrough lives in
docs/multi-project.md ↗.
Convinced this is the shape your fork needs?
Three steps and you're configured — under five minutes.