Skip to content

Customization Types

github-actions[bot] edited this page Jun 4, 2026 · 11 revisions

Customization types reference

The 12 primitive types crickets recognizes via its kind field. Each maps to a subdirectory in the repo and a destination path per host.

⚡ Quick Reference

Kind Subdir What it is Hosts that consume it
bundle bundles/ Multi-primitive package; manifest enumerates contents (dispatches per content kind)
skill skills/ Agent-invoked helper (SKILL.md body + optional scripts dir) claude-code, antigravity
command commands/ User-invokable slash command claude-code
agent agents/ Specialized sub-agent for fan-out work claude-code, antigravity
hook hooks/ Pre/post tool-call shell script (e.g. kill-switch, steer, commit-on-stop) claude-code (today)
mcp-server mcp-servers/ MCP server config + launcher claude-code (Antigravity: TBD)
status-line status-line/ Custom status line display claude-code
output-style output-styles/ Output formatting template claude-code
workflow workflows/ Antigravity multi-step workflow antigravity
rule rules/ Antigravity always-on rule antigravity
snippet snippets/ Instruction fragment → emitted as an Antigravity rules/ file; dropped on Claude Code (no instruction-file primitive) antigravity (effective); claude-code (declared but dropped)
settings-fragment settings-fragments/ JSON fragment merged into host settings.json claude-code (Antigravity: TBD)

Note

Group-level scripts/ is not a kind. A src/<group>/scripts/ directory holds verbatim helper scripts (e.g. code-review/scripts/cross-review.sh, developer-workflows/scripts/capability_probe.py) — no frontmatter, no kind, not discovered as a primitive. The generator copies the whole directory wholesale (excluding __pycache__) into the emitted plugin at dist/<host>/plugins/<group>/scripts/, host-agnostic (both hosts). A primitive references a bundled script via the host plugin-root path (${CLAUDE_PLUGIN_ROOT}/scripts/<name> on Claude Code). See src/SCHEMA.md § Group-level assets.

Note

Gemini CLI host removed in v0.9.0 per ROADMAP item #15. Standalone Gemini CLI is no longer a supported host. Antigravity (Gemini-in-IDE) stays as a supported host — different surface. See ADR 0006 for the host-scope-reduction rationale.

Implementation status

Kind Installer support Notes
bundle ✅ (dispatches to inner primitives) skill, agent, and hook kinds inside bundles are wired as of v0.7.0
skill ✅ (v0.5.0; gemini-cli destination removed in v0.9.0) Full dispatch to .claude/skills/<name>/, .agents/skills/<name>/
agent ✅ (v0.6.0; gemini-cli destination removed in v0.9.0) Full dispatch to .claude/agents/<name>.md, .agents/skills/<name>/SKILL.md (sub-agent-as-skill wrap for Antigravity)
hook ✅ (v0.7.0, claude-code only) Full dispatch to .claude/hooks/<name>.{sh,ps1} plus idempotent deep-merge of the hook's settings-fragment-{bash,pwsh}.json into .claude/settings.json via scripts/merge-settings-fragment.py. Other hosts have no first-class hook surface today.
All others ⚠️ Warning "not yet supported — skipped" Future toolkit versions add them as the catalog grows

When a customization with an unsupported kind is encountered, the installer logs a warning and continues. The manifest still passes validation — the kind enum recognizes the value, the dispatch logic just doesn't have a handler yet.

What goes where

When to use a skill vs. command vs. agent

You want… Use
An agent-triggered helper that runs on a keyword or context match (e.g. pii-scrubber; design and memory skills live in Agent M since v2.0.0) skill
A user-typed /something slash command command
A specialized agent for a specific kind of task (e.g. evaluator, explorer) agent

A single concept can ship as multiple primitives — e.g. an evaluator agent + a quality-gates bundle that references it from a skill that auto-invokes it.

When to use a bundle vs. multiple standalone primitives

You want… Use
One coherent unit with multiple primitive types (e.g. skill + hook + agent that work together) bundle
Multiple independent customizations Multiple standalone primitives

A bundle is right when the primitives depend on each other — installing one without the others would break the design. If the primitives are independently useful, ship them standalone.

Bundle directory layout

bundles/<bundle-name>/
├── bundle.md                                # manifest + bundle-level doc
├── skills/<inner-name>/SKILL.md             # one inner skill (kind: skill)
├── hooks/<inner-name>.sh                    # one inner hook (kind: hook)  
└── agents/<inner-name>.md                   # one inner agent (kind: agent)

The bundle's contents: list enumerates each inner primitive:

contents:
  - skill: <inner-name>
  - hook: <inner-name>
  - agent: <inner-name>

The installer resolves each entry by walking the bundle's matching subdir and dispatching to the right host destinations.

Related

  • Manifest Schema — the YAML frontmatter contract.
  • Per-Host Paths — destination paths per kind per host.
  • Add a Skill — practical recipe. Plugin authoring lives in Agent M since v2.0.0. (kind: bundle is reserved-future in v2.0.0; no bundles ship.)

Clone this wiki locally