Three paths, depending on what you're customizing and how you want it shared.
| Path | When | Effort | Shareable? |
|---|---|---|---|
| A — Project-local | Per-project rules, agents, skills | 5 minutes — no fork | No (lives in your project) |
| B — Fork | Cross-project customization, contributing back | 30 minutes — fork + dev mode | Yes (PR upstream) |
| C — Corpus | Cross-project sharing without going public | One-time setup per corpus | Within your team / org |
If unsure, start with Path A. It's the lowest commitment and the easiest to graduate later.
Author bundles directly inside your project under .aiwg/{type}/{name}/.
No fork, no clone, no rebuild — just files in your repo. Discovered
automatically by aiwg use.
aiwg new-bundle my-team-rules --type extension --starter rule
# edit .aiwg/extensions/my-team-rules/rules/my-team-rules.md
aiwg use my-team-rules
aiwg doctor --project-localThe bundle deploys alongside upstream artifacts to whatever providers
your project targets (.claude/, .cursor/, .codex/, etc.). It
shadows upstream artifacts with the same id, with safety-critical
denylist enforcement so you can't accidentally override the wrong thing.
Graduate to upstream or to a private corpus when ready:
aiwg promote my-team-rules # → upstream
aiwg promote my-team-rules --to corpus ~/my-corpus/ # → private corpusThe graduate operation is a hash-verified copy — no rewrite, no migration (identical-form ADR).
See:
- Quickstart — first bundle in 5 minutes
- Lifecycle reference — full operator surface
- Type disambiguation — pick the right type
- Troubleshooting — common failures
- From-fork migration — moving existing fork-based work
When you're building something you might contribute to AIWG itself, or you want to live on the bleeding edge with custom branches, fork AIWG on GitHub and run in dev mode. The Steward agent handles the setup.
"Set up AIWG customization mode for me — I want to fork and contribute back"
What you get:
- Your own copy of AIWG on GitHub that you control
- Upstream sync via
"sync my AIWG"— pulls new releases without overwriting your edits - One command to PR a change back upstream
Use Path B when:
- You're modifying AIWG core (TypeScript source, build scripts, deploy pipeline)
- Your customization is generally useful and you want it merged
- You want bleeding-edge AIWG features before they're released
If you're "just" customizing rules / skills / agents, Path A is simpler — you can always graduate to Path B later by promoting your project-local bundles to upstream and PRing them.
See: Fork workflow — how the fork/upstream sync works under the hood.
When you have customizations to share across many of your own projects without making them public:
- Create a corpus directory:
mkdir ~/my-corpus - Author bundles there directly, or promote project-local bundles into it:
aiwg promote my-team-rules --to corpus ~/my-corpus/ - Other projects pick up corpus bundles via
aiwg.configregistration (setsource: 'corpus'paths in the project's installed config)
The corpus is byte-identical to both project-local and upstream forms — same manifest, same layout — so a bundle moves between any of the three locations by copy.
Use Path C when:
- You have several private repos that all need the same customizations
- The customization isn't public-marketplace-suitable but it isn't per-project either
- You want versioned, audited shared bundles without managing your own AIWG fork
Are you modifying AIWG core (TS source, build, deploy pipeline)?
│
├─ Yes ──→ Path B (fork)
│
└─ No ──→ Are you sharing this across many of your projects?
│
├─ Yes, privately ──→ Path C (corpus)
├─ Yes, publicly ──→ Path A first, then aiwg promote → Path B
└─ No, single project ──→ Path A (project-local)
The three paths compose:
- A project on Path A can later promote a bundle to upstream (Path B) or to a corpus (Path C).
- A Path B fork can deploy alongside Path A project-local bundles —
the project's
.aiwg/extensions/foo/shadows the fork'sagentic/code/addons/foo/cleanly. - A corpus (Path C) is just another
sourcein the registry — your project pulls bundled, project-local, and corpus artifacts together.
You don't have to commit to one path forever. Start where you are; move when you outgrow it.
| You want to... | Use |
|---|---|
| Add one rule for one project | aiwg new-bundle my-rule --starter rule (Path A) |
| Add a feature pack of related skills | aiwg new-bundle my-pack --type addon (Path A) |
| Share customizations across your repos privately | aiwg promote my-pack --to corpus ~/corpus/ (Path C) |
| Contribute a customization back to AIWG | aiwg promote my-pack (Path A → Path B + PR) |
| Modify AIWG itself (CLI, deploy, build) | Steward sets up a fork (Path B) |
- Project-local quickstart — start here
- Type disambiguation — extension vs addon vs framework vs plugin
- Customization examples — real scenarios people customize
- Fork workflow — Path B details
- Plugin marketplace guide — public distribution (different from the three paths above)