CLAUDE.md · git:20260705.db7c1d2 · 2026-07-05 · sha256 21c59e955a58d598

CLAUDE.md git:20260705.db7c1d2A

Immutable. This exact content is served forever at /api/v1/blob/21c59e955a58d598.

# Claude Code Plugins Collection

This is a Claude Code plugin marketplace repository.

## Repository Structure

```
.claude-plugin/
  marketplace.json      # Marketplace manifest, declares all available plugins
plugins/
  <plugin-name>/        # Self-developed plugin directory
    .claude-plugin/
      plugin.json       # Plugin metadata
    commands/            # User-invokable slash commands
    agents/              # Subagent definitions
    skills/              # Skill modules
    hooks/               # Hook configurations
scripts/
  sync-plugins.sh       # Sync plugin.json metadata to marketplace.json and README.md
  validate-plugins.sh   # Validate plugin structure and metadata (plugin.json, frontmatter, naming)
  verify-sync.sh        # Detect drift between plugin.json and marketplace.json (--run-sync to fix)
  lark-rebuild.py       # Rebuild the lark plugin from lark-cli skill sources
tests/
  run-tests.sh          # Automated test runner
  *-manual-tests.md     # Manual test checklists per plugin
.github/workflows/
  ci.yml                # CI: validate-plugins + verify-sync + tests
```

## Plugin Management

- **Self-developed plugins** — Source code lives directly under `plugins/<name>/`
- **Curated plugins** — Referenced in `marketplace.json` via GitHub source pointing to external repos

## Development Guidelines

### Adding a Self-developed Plugin

1. Create a plugin directory under `plugins/`
2. Create `.claude-plugin/plugin.json` with metadata (this is the single source of truth)
3. Add an entry to the `plugins` array in `marketplace.json` with a relative path as source
4. Run `bash scripts/sync-plugins.sh` to auto-sync metadata to `marketplace.json` and `README.md`

> **Note:** `plugin.json` is the single source of truth for self-developed plugins. Do NOT manually edit plugin metadata in `marketplace.json` or `README.md` — run the sync script instead. The sync covers the `description`, `version`, `author`, `keywords`, and `license` fields; other fields are not propagated.

### Maintenance Scripts

- `bash scripts/sync-plugins.sh` — run after changing any `plugin.json` to propagate metadata to `marketplace.json` and the README plugin table
- `bash scripts/validate-plugins.sh` — run before committing to validate plugin structure and metadata
- `bash scripts/verify-sync.sh` — run before committing to detect metadata drift (add `--run-sync` to fix it)
- `bash tests/run-tests.sh` — run the automated tests; manual checklists live in `tests/*-manual-tests.md`

CI (`.github/workflows/ci.yml`) runs validate-plugins, verify-sync, and the tests.

### Adding a Curated Plugin

Add an entry to the `plugins` array in `marketplace.json` using the GitHub source format:
```json
{
  "name": "plugin-name",
  "source": { "source": "github", "repo": "owner/repo" },
  "description": "Description"
}
```

### Component Naming Conventions

- Commands: `commands/<command-name>.md`
- Agents: `agents/<agent-name>.md`
- Skills: `skills/<skill-name>/SKILL.md`
- Hooks: `hooks/hooks.json`

### plugin.json Template

```json
{
  "name": "plugin-name",
  "description": "Plugin description",
  "version": "0.1.0",
  "author": {
    "name": "Tiger",
    "url": "https://github.com/DropFan"
  },
  "license": "MIT"
}
```