vibesubin 0.7.0
TL;DR — mutates frontmatter contract on every skill, 5 new validator checks, MAINTENANCE.md becomes the canonical operational policy, language READMEs reorganized under docs/i18n/, CLAUDE.md gitignored.
New — safety contract
mutates: [<tokens>]frontmatter on all 11 SKILL.md + umbrella. Tokens drawn from{direct, external}. Empty list[]for the three pure-diagnosis workers and the umbrella.[direct]for the six editable sweep workers.[direct, external]for the two direct-call-only skills (ship-cycle,codex-fix). The umbrella reads this field at sweep launch and refuses to include any worker carryingexternal; the validator enforces the same contract statically.- 5 new validator checks. Frontmatter schema (
name,description,mutates,allowed-tools).mutatestoken validity + category consistency (sweep specialists cannot includeexternal; pure-diagnosis must be[]; editable workers must includedirect). Per-references/*.md500-line cap (same cap asSKILL.md— content can no longer hide in references to dodge the cap)./<skill-name>backtick references must resolve to a real skill in the pack.descriptionmust be 1–1024 chars;namemust match directory. - 11 new pytest cases covering each new validator behavior. Total suite: 21 tests, all green.
New — ship-cycle hardening
- Mutation contract — every external mutation (
gh issue create,gh api,gh release create,git tag -a,git push) follows preview → confirm (approve/proceed/yes) → mutate. Created resources carry<!-- ship-cycle:vX.Y.Z -->idempotency markers. Deterministic branch names (<type>/issue-<N>-<slug>) and milestone titles (vX.Y.Z) make re-runs noop. - Rollback table — every mutation maps to its inverse
ghcommand (gh issue close,gh api ... state=closed,gh release delete,git push --delete,gh pr close). Published tags and releases are never rewritten — cut a follow-up patch instead. dry-runmode — operator saysdry-runat Step 7 (or Step 1.5 override) to skip every Mutate step.
New — per-skill output schema
audit-security— secret fingerprint output rule. Findings print file:line + length + first 4 chars (or 7 for known prefixes likesk-,ghp_,xoxb-) + provider guess. Raw secret values are never echoed back into chat logs, PR bodies, or screenshots.fight-repo-rot— Path exclusions section.node_modules/,vendor/,target/,.venv/,dist/,build/,out/,.next/,__pycache__/, schema migrations, test fixtures, snapshot files,// @generatedheaders, and Storybook stories are excluded from dead-code analysis before confidence tagging.project-conventions— Repo type section.app | library | monorepo | template | docs-onlywith detection signals. Each repo type maps to a different pinning strategy: app uses exact pin + lockfile; library uses semver range + compatibility matrix; monorepo uses per-package strategy with shared root lockfile.manage-assets— fixed-taxonomy classification field on every finding (artifact | source | media | database | secret-shaped | generated). Replaces ad-hoc prose grouping; umbrella consumes the token directly.refactor-verify— Review-driven fix mode (~103 lines) extracted toreferences/review-driven-fix.md. Stale-snapshot handling, the four-way triage, and the resolution-report template move to references; SKILL.md keeps a 13-line summary + pointer.vibesubin— Sweep contract enforcement paragraph in Step 2 launch block. Umbrella now reads each worker's frontmattermutatesbefore adding to the parallel sweep.
Changed — MAINTENANCE.md becomes the policy home
The (now gitignored) CLAUDE.md is no longer the operational source of truth. MAINTENANCE.md absorbs:
- 🛑 Never do — 9 items (added: never put
externalin a sweep specialist'smutates). - ✅ Always do — 8 items (added: run
pytest tests/; declaremutates). - 🚀 Release process — 10 steps from finalize CHANGELOG to
gh release view. - 📋 Change type → file matrix — adapted for
docs/i18n/paths and the validator+pytest verification command. - 🔒 Load-bearing invariants — 10-row table with an "Enforced by" column citing validator check numbers.
- 🎭 Recently decided — 12 entries preserving the v0.3.0–v0.7.0 decision log.
Changed — repo housekeeping
- Language READMEs moved to
docs/i18n/.git mvofREADME.{ko,ja,zh}.md→docs/i18n/README.{ko,ja,zh}.md. Inter-language links and the rootREADME.mdswitcher updated. Root file count: 10 → 7. CLAUDE.mdgitignored +git rm --cached. Project-wide rules redistributed acrossMAINTENANCE.md(operational),docs/PHILOSOPHY.md(invariants),docs/ADDING-A-SKILL.md(skill-authoring mechanics),CONTRIBUTING.md(contribution model). Local maintainer copies — and AI tools auto-loadingCLAUDE.mdfrom the working directory — continue to work; the file just isn't shipped to forks.AGENTS.mdalso gitignored for symmetry. Cross-references indocs/ADDING-A-SKILL.md,ship-cycle/references/issue-body-template.md,ship-cycle/references/release-pipeline.md, andvalidate_skills.pycomments updated to point atMAINTENANCE.md.
Verification
python3 scripts/validate_skills.py→ OK across 12 skills, every promise resolves, frontmattermutatescontract enforced, every SKILL.md and references file ≤500 lines, manifests synced.pytest tests/→ 21 passed.
Full diff: 28 files changed, +874 / −268.
See CHANGELOG.md for the complete entry.