release-statuslisted
Install: claude install-skill gtapps/claude-code-hermit
# Release Status
Read-only diagnostic — `git status` for the release pipeline. No mutations.
## Steps
### 1. Collect plugin data
Glob `plugins/*/.claude-plugin/plugin.json`. For each slug:
```bash
# version
jq -r .version plugins/<slug>/.claude-plugin/plugin.json
# last tag (double-dash format)
git tag --list "<slug>--v*" | sort -V | tail -1
# commits since last tag, scoped to this plugin's directory
# use HEAD as base if no tag exists
git rev-list <last-tag-or-HEAD>..HEAD --count -- plugins/<slug>/
# non-empty [Unreleased] section
awk '/^## \[Unreleased\]/{flag=1; next} /^## \[/{flag=0} flag && NF' \
plugins/<slug>/CHANGELOG.md
```
For plugins with no `plugin.json` version or no recognizable tags: mark as `unstructured (skip)` and stop collecting data for that plugin.
### 2. Get latest core reference
```bash
git tag --list "claude-code-hermit--v*" | sort -V | tail -1
```
Extract just the version number (strip `claude-code-hermit--v`). Call it `latest_core_version`.
### 3. Read dependency constraints (domain plugins only)
For each plugin that has `plugins/<slug>/.claude-plugin/hermit-meta.json`:
```bash
jq -r .required_core_version plugins/<slug>/.claude-plugin/hermit-meta.json
```
### 4. Determine status per plugin
| Condition | Status |
|-----------|--------|
| `plugin.json` version > last tag version | `awaiting-tag` |
| `[Unreleased]` section is non-empty | `prep-needed` |
| version matches last tag, no `[Unreleased]` | `up-to-date` |
| no version or no