AGENTS.md · git:20261002.e4f1880 · 2026-10-02 · sha256 1dd2f9b5494f5405

AGENTS.md git:20261002.e4f1880A

Immutable. This exact content never changes and is served at /api/v1/blob/1dd2f9b5494f5405.

# AGENTS.md

Instructions for AI agents (Claude Code, Codex, Gemini, etc.) working in
this repo.

This is a **content-only** repo. The skills here are markdown documentation
that pairs with the `compose-preview` CLI and Gradle plugin published from
[yschimke/compose-ai-tools](https://github.com/yschimke/compose-ai-tools).
The CLI lives there; consumer guidance lives here.

**Two upstream repos, not one.** The CLI, the Gradle plugin, the renderers and
the local daemon MCP ship from `compose-ai-tools`. The preview *server* —
everything behind `compose-preview serve`, including its catalog MCP endpoint,
the UI builder and the playground — ships from
[yschimke/compose-preview-server](https://github.com/yschimke/compose-preview-server),
on its own release line. When a skill cites `serve` source or a server-side
design doc, it belongs to that repo. (Its operator-facing manual,
`docs/public-preview-server.md`, still lives in `compose-ai-tools` — cite it
where it actually is rather than where the code is.)

## When adding, renaming, or removing a skill

1. **Update `README.md`** — keep the skills list in sync. Each entry links
   to the skill's `SKILL.md` and summarises what it covers. If you add a
   skill and don't update the README, the change is incomplete.
2. **Put it in one bundle and regenerate.** Add the skill to exactly one entry
   of `BUNDLES` in `scripts/generate-bundles.py`, then run
   `python3 scripts/generate-bundles.py`. CI fails while `plugins/` is stale.
3. **Do not bump the plugin version unless explicitly asked.** When you
   are asked for a release, edit `.claude-plugin/plugin.json` using
   semver: patch for wording/docs, minor for a new skill or new triggers,
   major for removals or breaking renames.

## Skill layout

- Skills live at `skills/<skill-name>/SKILL.md`. **Flat** — never nest by
  topic. Encode the topic in the directory name (e.g.
  `compose-preview-review`, not `compose-preview/review`).
- The `name:` in the SKILL.md frontmatter **must match the directory
  name** exactly. Use lowercase kebab-case for both.
- Supporting files (design notes, scripts) sit alongside `SKILL.md` in
  the skill dir.
- `plugins/<bundle>/` holds **generated copies** of skills, grouped so a
  harness can install the default pair (`compose-skills`: `compose-preview`
  and `compose-ui-builder`, matching `install.sh`'s defaults) without the
  review (`compose-review-skills`) and design (`compose-design-skills`)
  skills. Never edit them; edit `skills/` and regenerate.

## Manifests

- `.claude-plugin/marketplace.json` and `.claude-plugin/plugin.json` are
  both JSON (not JSONC). Validate with `jq . <file>` before committing.
- The plugin `name` in both manifests must stay `yschimke-skills`.
- The bundle entries in `marketplace.json`, and every file under `plugins/`,
  are written by `scripts/generate-bundles.py`; don't hand-edit them.

## Cross-repo references

The `compose-preview` skill documents the CLI shipped from the
`compose-ai-tools` repo, so it cites release tags (e.g.
`v1.79.0`) and links into that repo. Keep those links stable. When the
CLI gets a new version, update referenced version strings here; do not
introduce a release-please marker in this repo — versions in skill text
track the upstream CLI, not this plugin.

## What not to do

- Don't add CI, build tooling, or Gradle config here — this is a content
  repo. The one exception is `scripts/generate-bundles.py` (stdlib Python)
  and its `--check` step in CI. CI, packaging, and the renderer live in `compose-ai-tools`.
- Don't rename existing skill directories "for consistency" without a
  concrete reason; renames break user references and bundled installs.