Skill Provenance: Close
Update all version-tracking artifacts when finishing a skill editing session. This ensures the bundle leaves the session in a consistent, verifiable state.
When to use
Run /skill-provenance:close after you've finished editing files in a skill
bundle and before committing, packaging, or handing off.
Protocol
Validate before mutation. Run verify-only
validate.shfirst when available. Resolve structural grammar, unsafe or duplicate paths, symlink components, and missing files before updating hashes. Hash mismatches and missing or malformed hashes may then be repaired with an explicitvalidate.sh --updateworkflow;hash: nullremains an intentional opt-out.Update internal version headers. For each changed file that carries YAML frontmatter with version metadata:
- Increment
versionby 1. - Set
version_dateto today. - Set
previous_versionto the old version number. - Write a
change_summary(1-3 sentences describing what changed, not just that something changed).
- Increment
Update MANIFEST.yaml. For every changed versioned file:
- Update
versionto match the new internal version. - Recompute and update
hash. - For files that don't carry internal headers (JSON, scripts, binaries),
the manifest
versionfield is authoritative — increment it there. - Bump
bundle_version(semver): PATCH for fixes/docs, MINOR for new features, MAJOR for breaking changes. - Update
bundle_dateto today. - If the user deployed or reinstalled the skill this session, update
relevant
deploymentsmetadata.
- Update
Update CHANGELOG.md. Add a new entry at the top:
- Use the new
bundle_versionand today's date as the heading. - Name every file that changed and what changed in it.
- Flag staleness explicitly. If a versioned file was changed but a dependent file was not updated (e.g., SKILL.md changed but evals.json wasn't updated to match), say so in the entry.
- Use the new
Final validation. Run verify-only validation after all version, changelog, and hash updates. Do not package or commit a failing bundle.
Deliver. Provide the user with the changed files plus updated
MANIFEST.yamlandCHANGELOG.md.Git commit message. If the bundle is in a git repo, provide a ready-to-use commit message:
bundle-name MAJOR.MINOR.PATCH: one-line summary - file1.md: what changed - file2.json: what changed - Stale: file3.js (not updated this session)Return the message inline. Only write a
git_commit.txtfile if the user explicitly asks for one.
Conventions referenced
- Per-file versions are integers. Bundle version is semver.
- change_summary is required for every version after v1. Describe what changed, not just that something changed.
- previous_version creates a chain so any session can trace lineage.
- MANIFEST.yaml is not self-listed. It tracks other files only.
- Hashes are SHA-256 of file contents.
For the full spec: https://skillprovenance.dev