Skill Provenance: Bootstrap
Add provenance tracking to an existing unversioned skill bundle. This is
a one-time operation that creates the initial manifest, version headers,
and changelog.
When to use
Run /skill-provenance:bootstrap when you have a skill directory that
contains a SKILL.md but lacks MANIFEST.yaml. This is the entry point
for adopting Skill Provenance on an existing project.
If the bundle already has a MANIFEST.yaml, use /skill-provenance:open
instead.
Protocol
Inventory all files. Read the directory structure yourself — do not
ask the user to list files. Identify:
SKILL.md (required — if missing, this isn't a skill bundle)
- Evals files (e.g.,
evals.json)
- Scripts (e.g.,
generate.js, validate.sh)
- Output artifacts (
.docx, .pdf)
- Source material provided by the user
- Any other files present
Propose version numbers. Ask the user what version to assign. If
there's a handoff note, git history, or other context suggesting prior
versions, propose a number based on that history. Default to 1.0.0
for the bundle and 1 for individual files if no history exists.
Add internal version headers to files that can safely carry YAML
frontmatter. Use the metadata block pattern for SKILL.md:
---
name: skill-name
description: What the skill does.
metadata:
skill_bundle: skill-name
file_role: skill
version: 1
version_date: 2026-04-11
previous_version: null
change_summary: Initial versioned release.
---
For files that cannot safely carry frontmatter (.json, .sh,
binaries), the manifest tracks their version — no modification needed.
Determine frontmatter mode. Maintain the canonical source in
frontmatter_mode: metadata when richer provenance is useful. For Codex,
Gemini CLI, or another strict loader, derive a minimal-frontmatter install
copy rather than weakening the canonical source in place. If the user
explicitly wants one strict-only bundle, minimal is valid.
Generate MANIFEST.yaml. Include:
bundle, bundle_version, bundle_date, description
compatibility section based on user's target platforms
- Exactly one top-level
files: list using unquoted normalized relative
paths and a sha256: hash or explicit hash: null for every entry
- Leave
deployments empty unless the user mentions existing installs.
Generate CHANGELOG.md. Create a single entry summarizing known
history. If the user has context about prior changes, incorporate it.
Otherwise:
# Changelog
## 1.0.0 — 2026-04-11
- Initial versioned release. All files inventoried and hashed.
- SKILL.md: [brief description of current state]
- evals.json: [N evals covering X]
Deliver the versioned bundle. Provide all new and modified files.
Summarize what was created and any decisions for the user to confirm.
File roles
Assign these roles in the manifest based on file type:
| Role |
Files |
skill |
SKILL.md |
evals |
evals.json, evals-*.json |
script |
.js, .py, .sh scripts |
output |
.docx, .pdf rendered artifacts |
handoff |
handoff notes |
source |
user-provided material (tracked, not versioned) |
reference |
documentation in references/ |
asset |
templates, images, fonts in assets/ |
Conventions referenced
- Version identity lives inside files when their format allows it,
and always in the manifest.
- MANIFEST.yaml is not self-listed. It tracks other files only.
- Per-file versions are integers. Bundle version is semver.
- Hashes are SHA-256 of file contents.
- Filenames never contain version numbers. Version lives in metadata
and the manifest, not in
SKILL_v5.md.
For the full spec: https://skillprovenance.dev
1---2name: bootstrap3description: Add version tracking to an existing unversioned skill bundle. Use when you have a skill project with SKILL.md but no MANIFEST.yaml, no version headers, and no changelog. Creates the initial manifest, adds version metadata to files, and generates the first changelog entry. Triggers on: "bootstrap this skill", "add versioning", "start tracking versions", "create a manifest", "this skill has no versioning".4license: MIT5---67# Skill Provenance: Bootstrap89Add provenance tracking to an existing unversioned skill bundle. This is10a one-time operation that creates the initial manifest, version headers,11and changelog.1213## When to use1415Run `/skill-provenance:bootstrap` when you have a skill directory that16contains a `SKILL.md` but lacks `MANIFEST.yaml`. This is the entry point17for adopting Skill Provenance on an existing project.1819If the bundle already has a `MANIFEST.yaml`, use `/skill-provenance:open`20instead.2122## Protocol23241. **Inventory all files.** Read the directory structure yourself — do not25 ask the user to list files. Identify:26 - `SKILL.md` (required — if missing, this isn't a skill bundle)27 - Evals files (e.g., `evals.json`)28 - Scripts (e.g., `generate.js`, `validate.sh`)29 - Output artifacts (`.docx`, `.pdf`)30 - Source material provided by the user31 - Any other files present32332. **Propose version numbers.** Ask the user what version to assign. If34 there's a handoff note, git history, or other context suggesting prior35 versions, propose a number based on that history. Default to `1.0.0`36 for the bundle and `1` for individual files if no history exists.37383. **Add internal version headers** to files that can safely carry YAML39 frontmatter. Use the `metadata` block pattern for SKILL.md:4041 ```yaml42 ---43 name: skill-name44 description: What the skill does.45 metadata:46 skill_bundle: skill-name47 file_role: skill48 version: 149 version_date: 2026-04-1150 previous_version: null51 change_summary: Initial versioned release.52 ---53 ```5455 For files that cannot safely carry frontmatter (`.json`, `.sh`,56 binaries), the manifest tracks their version — no modification needed.57584. **Determine frontmatter mode.** Maintain the canonical source in59 `frontmatter_mode: metadata` when richer provenance is useful. For Codex,60 Gemini CLI, or another strict loader, derive a minimal-frontmatter install61 copy rather than weakening the canonical source in place. If the user62 explicitly wants one strict-only bundle, `minimal` is valid.63645. **Generate MANIFEST.yaml.** Include:65 - `bundle`, `bundle_version`, `bundle_date`, `description`66 - `compatibility` section based on user's target platforms67 - Exactly one top-level `files:` list using unquoted normalized relative68 paths and a `sha256:` hash or explicit `hash: null` for every entry69 - Leave `deployments` empty unless the user mentions existing installs.70716. **Generate CHANGELOG.md.** Create a single entry summarizing known72 history. If the user has context about prior changes, incorporate it.73 Otherwise:7475 ```markdown76 # Changelog7778 ## 1.0.0 — 2026-04-1179 - Initial versioned release. All files inventoried and hashed.80 - SKILL.md: [brief description of current state]81 - evals.json: [N evals covering X]82 ```83847. **Deliver the versioned bundle.** Provide all new and modified files.85 Summarize what was created and any decisions for the user to confirm.8687## File roles8889Assign these roles in the manifest based on file type:9091| Role | Files |92|------|-------|93| `skill` | SKILL.md |94| `evals` | evals.json, evals-*.json |95| `script` | .js, .py, .sh scripts |96| `output` | .docx, .pdf rendered artifacts |97| `handoff` | handoff notes |98| `source` | user-provided material (tracked, not versioned) |99| `reference` | documentation in references/ |100| `asset` | templates, images, fonts in assets/ |101102## Conventions referenced103104- **Version identity lives inside files** when their format allows it,105 and always in the manifest.106- **MANIFEST.yaml is not self-listed.** It tracks other files only.107- **Per-file versions are integers.** Bundle version is semver.108- **Hashes are SHA-256** of file contents.109- **Filenames never contain version numbers.** Version lives in metadata110 and the manifest, not in `SKILL_v5.md`.111112For the full spec: https://skillprovenance.dev