This is the canonical agent context file. CLAUDE.md is a symlink to it. Keep repository-wide invariants here; put scoped deltas in the nearest AGENTS.md. This monorepo publishes portable agent-context packs—skills, subagents, commands, hooks, and seed documents—and the agentbundle Python CLI that builds, installs, and verifies them across Claude Code, Codex, Cursor, Copilot, and Gemini CLI. The repository self-hosts the packs it publishes. These rules apply to chat, questions, status notes, final replies, files, backlog items, agent rules, skills, code, and…
Applies to docs-site/. Inherits the root AGENTS.md. Scope-specific deltas only. docs-site/ is the technical documentation site. tools/build-site.py generates much of src/content/docs/ from guides/* and packs/*, and the field references under src/content/docs/reference/ from contracts/pack.schema.json and contracts/skill.schema.json, and spec/ from contracts/catalogue-spec.toml plus spec-src/catalogue/overview.md. Edit sources, not generated content. Package manifests own dependency versions. Build order is load-bearing: web/ cleans repository build/, so build it before this site writes build/docs/. - Anchor a reader or navigation decision on the prime journey, not a…
Applies to guides/. Inherits the root AGENTS.md. Scope-specific deltas only. guides/ is adopter-facing; docs/guides/ is maintainer material. This tree is published by tools/build-site.py: writing a valid file is all publication and navigation require. Use the author-product-docs skill for authoring work. contracts/guide.schema.json owns frontmatter; additionalProperties: false means new fields belong there first. Keep title and the leading body H1 identical: _shared guides ship without rendered frontmatter, so no H1 leaves adopters without a page heading. When deleting or renaming a page,…
Applies to packages/. Inherits the root AGENTS.md. Scope-specific deltas only. Non-cosmetic package changes update both version.py and pyproject.toml. Whether a change also needs a release, and how to cut one, is in cut-a-package-release.md. - Text reads and writes must pass encoding="utf-8". - Use list-form subprocess calls only: never shell=True or shell out to grep, sed, or make from portable package code. - Tests isolating a user root must set AGENTBUNDLEUSERROOT with HOME: Windows expanduser() ignores monkeypatched environment variables. - Do…
Applies to packs/. Inherits the root AGENTS.md. Scope-specific deltas only. The pack owns its runtime export and test boundary. .apm/ is source material projected into installed adapters; tests and pack documentation are not projected. Design packs around the user intent, journey, and capability they provide. The runtime export boundary is .apm/: .apm/adapter-root-bins/, .apm/agents/, .apm/commands/, .apm/hook-wiring/, .apm/hooks/, .apm/kiro-ide-hooks/, .apm/shared-libs/, .apm/skills/, and .apm/user-libs/. Do not put tests in .apm/; edit skill sources and use the canonical catalogue authoring standards. pack.toml fields belong…
Applies to profiles/. Inherits the root AGENTS.md. Scope-specific deltas only. A profile is a hand-authored profiles/<id>.toml that composes an ordered, single-scope set of existing packs; it introduces no primitives. The filename stem is its identifier. Reserved _ children are authoring assets, not active profiles. profile.schema.json owns fields and semantic validation. Read it with agentbundle catalogue contracts show profile.schema.json. Profile TOML is the source; profiles are scaffold sources but are not projected by catalogue self-host. Start from profiles/_example/profile.toml.
Applies to tests/. Inherits the root AGENTS.md. Scope-specific deltas only. packages/AGENTS.md owns the table of which assertion belongs in which tree. This file owns what living here obliges you to do, and why the boundary is not merely a convention. packages/agentbundle/tests/ is packaged into the agentbundle sdist and re-run against an extracted workspace holding only the package — no contracts/, no packs/, no docs/, no catalogue.toml. A test there that reads a repository path passes locally and fails the sdist…
Applies to tools/. Inherits the root AGENTS.md. Scope-specific deltas only. - New additions to tools/ must be pure-stdlib Python .py files. Existing .sh files stay; this rule applies forward. - Path triggers in .github/workflows/docs.yml must invoke matching scripts as python3 <script>. - The repo-only hook implementation and wiring guide is tools/hooks/README.md. Keep this pointer out of shipped pack content because adopters do not receive the maintainer guide. - A hyphenated tools/test-lint-*.py is a standalone entry point. A directory sweep collects…
Applies to web/. Inherits the root AGENTS.md. Scope-specific deltas only. web/ is the marketing site served at /. Package manifests own dependencies; tools/build-site.py --journeys-only generates the committed journeys this site uses. The .generated.json renderer inputs are gitignored, not committed: a pre hook regenerates them, so npm scripts here need python3 as well as Node. Use npm run <script> — a direct npx astro build skips npm's lifecycle, so it skips generation and fails on an unresolved import. Never hand-edit a…