-
Notifications
You must be signed in to change notification settings - Fork 0
Plugin Anatomy
A crickets plugin is a functional group of primitives — skills, agents, commands, hooks — authored once under src/<group>/ and generated into a native host plugin at dist/<host>/plugins/<group>/, which the host's plugin manager installs. The group folder is the plugin, and its name is the plugin slug. crickets doesn't redefine the host plugin format — it generates into it; this page is the crickets-side anatomy: what's in a plugin and how plugins relate. For why it's built this way see the v3 design; for host coverage see Compatibility.
A generated plugin — dist/<host>/plugins/<group>/:
.claude-plugin/plugin.json # the plugin manifest (Antigravity: plugin.json at the plugin root)
skills/<name>/SKILL.md # skills
agents/<name>.md # agents
commands/<name>.md # commands
hooks/hooks.json # the hook manifest (Antigravity: hooks.json at the plugin root)
hooks/<name>/ # per hook: <name>.sh + <name>.ps1 + hook.md + settings-fragment-{bash,pwsh}.json
rules/<name>.md # Antigravity only — emitted from snippets (Claude has no instruction-file primitive)
scripts/<name> # group-level helper scripts, copied verbatim (both hosts)
Customization types covers what each kind is; Per-host paths the exact path per host.
Each src/<group>/group.yaml describes the plugin — what per-primitive frontmatter does for a single primitive:
| Field | Meaning |
|---|---|
name · description · category
|
marketplace display |
standalone |
independently installable (⟺ requires: []) |
requires |
other groups this plugin hard-depends on |
enhances |
groups this plugin augments when both are installed (soft) |
capabilities |
named capabilities that other plugins' enhances can target |
See Manifest schema for the full contract + validation rules.
Three relationships, in increasing coupling:
-
standalone — works on its own, depends on nothing (
requires: []). -
requires— a hard dependency. On Claude Code the manifest's nativedependenciesauto-installs the base; on Antigravity the plugin ships thin and the docs say "install the base first." -
enhances— soft: the plugin works alone and augments a target when both are installed, engaged by a capability probe rather than a hard link.
The six shipped plugins:
| Plugin | Standalone? | Relation to the base |
|---|---|---|
developer-workflows |
✅ (base) | declares the capabilities others target (setup … documentation) |
developer-safety |
✅ | enhances developer-workflows
|
code-review |
✅ | enhances developer-workflows' review
|
wiki-maintenance |
✅ | enhances developer-workflows' documentation
|
pii |
✅ | independent |
github-ci |
❌ requires developer-workflows
|
hard dependency |
src/<group>/ → python3 scripts/generate.py build → committed dist/<host>/plugins/<group>/ → the host installs the whole plugin. The generated dist/ is committed, so the marketplace serves static files and a CI gate proves it stays in sync with src/. Edit and dogfood via Modify a plugin; install via Install crickets plugins.
- Customization types — the primitive kinds a plugin holds.
- Per-host paths — where each kind lands, per host.
-
Manifest schema —
group.yaml+ primitive frontmatter. -
Modify a plugin — edit
src/, regenerate, dogfood. - Crickets v3.0 — native plugins — the design + rationale.
🔧 How-to
- Plugin anatomy
- Repo layout
- Compatibility
- CI gates
- Troubleshooting
- Customization Types
- Manifest Schema
- Per-Host Paths
- Hooks
- Evaluator
- Antigravity Limitations
- Wiki Watch Config
- Style-learning loop
- Modify a plugin
- Add a skill
- Add a plugin
- Named plans
- Coordinator roles (pending)
- Obsidian vault backend (pending)
- GitHub Projects
- Testing Conventions
- Releasing Conventions
- Design Docs