llm-security cut v7.8.0 (TRG/SIG/AST deep-scan scanners) and tagged `v7.8.0` (commit 6d3c4b5) in its repo. Sync the marketplace coordinator: - .claude-plugin/marketplace.json: source.ref v7.7.2 → v7.8.0 (installs track the real release; version-consistency gate → OK for llm-security). - README.md: version label v7.7.2 → v7.8.0; scanner count 23 → 26 (+3: TRG/SIG/AST) in both the "Deterministic scanning" bullet and the stat line; tests 1822 → 1863. - docs/state-version-rollout.md: mark llm-security STATE.md row DONE (it is tracked, not gitignored), add the missing playground-design-system row, and refresh the Workstream B run note (8 OK / 2 WARN; llm-security resolved this day). Gate: `node scripts/check-versions.mjs` → 8 OK, 2 WARN (linkedin-studio, ms-ai-architect — pre-existing, operator decision), 0 ERROR. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V3s6WnubSSrFjAQTLQdVbG
4.7 KiB
Brief — STATE.md tracking + version-consistency rollout (marketplace-wide)
Coordination brief for two cross-cutting changes across all marketplace plugins. Lives in catalog (the marketplace coordinator). This is the plan — execution happens per repo, each needing its own operator GO (cross-repo edits). Status verified 2026-06-20.
Goal
- STATE.md tracked in every repo — the updated global continuity rule
(
~/.claude/CLAUDE.md): STATE.md is tracked and committed, never gitignored; pushed to private Forgejo, never GitHub/public. - Version-consistency green — every plugin passes
catalog/scripts/check-versions.mjs(no ERROR; ideally no WARN).
These two workstreams are independent and can be done in any order.
Workstream A — STATE.md tracking
Status (verified 2026-06-20)
| Repo | har STATE.md | tracked | gitignored | Action | .gitignore line* |
|---|---|---|---|---|---|
| config-audit | yes | yes | no | ✅ DONE | — |
| ms-ai-architect | yes | yes | no | ✅ DONE | — |
| voyage | yes | yes | no | ✅ DONE | — |
| llm-security | yes | yes | no | ✅ DONE (2026-06-20) | — |
| linkedin-studio | yes | no | yes | avgitignore + track | :62 |
| claude-design | yes | no | yes | avgitignore + track | :3 |
| graceful-handoff | no | no | yes | avgitignore (file made later) | :3 |
| ai-psychosis | no | no | yes | avgitignore (file made later) | :21 |
| okr | no | no | yes | avgitignore (file made later) | :28 |
| human-friendly-style | no | no | yes | avgitignore (file made later) | :3 |
| playground-design-system | no | no | yes | avgitignore (file made later) | :3 |
| catalog | no | no | yes | avgitignore (file made later) | :5 |
* Line numbers as of 2026-06-20 — they drift. At execution time, resolve the exact source with
git -C <repo> check-ignore -v STATE.md rather than trusting the number.
Per-repo steps (for each non-DONE repo)
git -C <repo> check-ignore -v STATE.md→ confirm the exact.gitignoreline.- Remove the
STATE.mdentry from.gitignore. Replace the section comment with a tracked-state note, mirroring config-audit / ms-ai-architect (e.g. "session/local state — STATE.md is TRACKED continuity (per ~/.claude; overrides the polyrepo convention); the rest stays local"). - If a
STATE.mdfile already exists (voyage / linkedin-studio / claude-design):git add STATE.md. If not (the 6 "file made later"): de-gitignoring is enough — the file is tracked the first time a session writes it at session-end. Optionally seed a minimal stub now; not required. - Commit
chore: track STATE.md per global continuity rule(+ standard footer).chore:/docs:pass any docs-gate freely. - Push within the window (weekday 20:00–23:00, weekend anytime).
Verification (testable)
git -C <repo> check-ignore STATE.md→ exits non-zero (no longer ignored).- If a file exists:
git -C <repo> ls-files STATE.md→ printsSTATE.md(tracked). grep -n STATE <repo>/.gitignore→ no bareSTATE.mdignore line remains.
Workstream B — Version-consistency
Run from catalog: node scripts/check-versions.mjs (add --strict to fail on WARN too).
Current run (2026-06-20): 8 OK, 2 WARN, 0 ERROR. llm-security was resolved this day —
v7.8.0 released + tagged v7.8.0 (commit 6d3c4b5), catalog ref + README version/stats
bumped 7.7.2 → 7.8.0; gate → OK. The 2 WARN below are unchanged.
The 2 WARN — require an operator decision
| Plugin | plugin.json | catalog ref | tag for plugin.json version? |
|---|---|---|---|
| linkedin-studio | 0.5.0 | v0.4.0 | no (v0.5.0 does not exist) |
| ms-ai-architect | 1.16.0 | v1.15.0 | no (v1.16.0 does not exist) |
For each, pick one:
- Bump is unreleased → no action. The gate WARNs correctly; catalog rightly points at the last released tag. (Leave as-is.)
- Bump is meant to be released → in the plugin repo: tag
vX.Y.Zon the release commit + push; in catalog: bump theref+ the README version/stat line; re-run the gate (expect that plugin → OK).
Only the operator knows which case applies — the gate cannot infer release intent.
Verification (testable)
node scripts/check-versions.mjs→0 ERROR(hard requirement).- After resolving both WARNs:
node scripts/check-versions.mjs --strict→ exit 0.
Scope fence
- Each repo edit is a separate cross-repo change → its own operator GO.
- This brief is the plan; nothing in the 9 non-catalog repos is touched until GO per piece.
- Push window applies to every push (weekday 20:00–23:00, weekend anytime).