CLAUDE.md · git:20260504.c704c26 · 2026-05-04 · sha256 9b98acaf98643996

CLAUDE.md git:20260504.c704c26A

Immutable. This exact content is served forever at /api/v1/blob/9b98acaf98643996.

# AI-Driven Development — Development Guide

This repo is a single-plugin marketplace and a cross-agent skill collection in one. The same `skills/` directory at the repo root is read by both `npx skills add` (the cross-agent CLI) and Claude Code's plugin install (`/plugin marketplace add` + `/plugin install …@ai-driven-development`). The plugin sees the repo root as itself via `source: "./"` in `marketplace.json` — no nesting, no symlinks, no duplication.

## When to create tags and releases

**Only create git tags and GitHub releases when skill, hook, or plugin files change.**

### Requires a new tag/release

- `skills/*/` — any skill file changes (SKILL.md, scripts, references, assets)
- `hooks/*/` — any hook source changes (Go code, install scripts, hook configs)
- `.claude-plugin/plugin.json` — plugin manifest changes
- `.claude-plugin/marketplace.json` — marketplace catalogue changes
- `LICENSE` — licence changes

Examples:

- Adding a new skill or hook
- Updating skill instructions in SKILL.md
- Modifying skill scripts
- Changing plugin metadata or version

### Does NOT require a new tag/release

Documentation-only changes don't need tagging:

- `README.md` — documentation and use-case updates
- `CLAUDE.md` — this file
- Commit messages
- GitHub-specific files (`.github/*`)

**Rationale:** users install specific commits via SHA. Documentation updates don't affect functionality, so they don't need version bumps. This keeps the release history clean.

## README maintenance

The repo ships **English-only**. When you add or remove a skill, or change a skill description:

- Update the relevant section table in `README.md`
- Update the skill's own `SKILL.md` (agent-facing) and `README.md` (human-facing, optional)
- Update `.claude-plugin/plugin.json` and `.claude-plugin/marketplace.json` versions

## Versioning

Follow semver:

- **MAJOR** (x.0.0) — breaking changes to skill interfaces, removals, layout overhauls
- **MINOR** (X.x.0) — new skills, new hooks, backward-compatible features
- **PATCH** (X.X.x) — bug fixes, prompt tweaks, doc fixes that ship in skills

## Release process

When skill/hook/plugin files change:

1. Bump version in `.claude-plugin/plugin.json` AND `.claude-plugin/marketplace.json` (keep them in sync).
2. Commit changes.
3. Create and push tag: `git tag -a vX.Y.Z -m "Version X.Y.Z" && git push origin vX.Y.Z`
4. Create GitHub release: `gh release create vX.Y.Z --title "vX.Y.Z — Title" --notes "Release notes"`

The bash-guard hook ships its own pre-built binary release with a separate tag (`bash-guard-vX.Y.Z`) — see [hooks/balanced-safety-hooks/](hooks/balanced-safety-hooks/) for that release flow.

## Repository structure

```
ai-driven-development/
├── .claude-plugin/
│   ├── marketplace.json    ← single-plugin marketplace, source: "./"
│   └── plugin.json
├── skills/                  ← canonical Agent Skills layout (npx skills add)
│   └── <skill-name>/SKILL.md (+ optional README.md, references/, scripts/, assets/)
├── hooks/
│   └── <hook-name>/         ← Claude Code hooks (Go binary + install scripts)
├── README.md
├── CLAUDE.md
└── LICENSE
```

## Adding a new skill

1. Create `skills/<skill-name>/SKILL.md` with YAML frontmatter (`name`, `description`).
2. Add optional `README.md`, `references/`, `scripts/`, `assets/` as needed.
3. Update the relevant section table in the root `README.md`.
4. Bump `version` in both `.claude-plugin/*.json` files (minor bump for new skill).
5. Commit, tag, release.

## Adding a new hook

1. Create `hooks/<hook-name>/` with the hook implementation, `install.sh`, and `README.md`.
2. If the hook ships pre-built binaries, add a release flow (see `hooks/balanced-safety-hooks/` as the canonical example: cross-platform Go build via `make build-all`, GitHub release with `SHA256SUMS`, `install-prebuilt.sh` that pins by tag).
3. Update the Hooks section in the root `README.md`.
4. Bump `version` in both `.claude-plugin/*.json` files.
5. Commit, tag, release.