From 3b0ce7d0870692b1012b260d201a29f300249f7d Mon Sep 17 00:00:00 2001 From: Steven Presti Date: Thu, 12 Feb 2026 10:41:12 -0500 Subject: [PATCH 1/2] opencode/skills/stabilize-spec: add skill for spec stabilization --- .opencode/skills/stabilize-spec/SKILL.md | 139 +++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 .opencode/skills/stabilize-spec/SKILL.md diff --git a/.opencode/skills/stabilize-spec/SKILL.md b/.opencode/skills/stabilize-spec/SKILL.md new file mode 100644 index 000000000..8a4b4ab94 --- /dev/null +++ b/.opencode/skills/stabilize-spec/SKILL.md @@ -0,0 +1,139 @@ +--- +name: stabilize-spec +description: Automate the Ignition config spec stabilization process +--- + +# Ignition Spec Stabilization + +This skill automates the complete Ignition config spec stabilization process following the exact 8-commit structure from [PR #2202](https://github.com/coreos/ignition/pull/2202). + +## What it does + +Performs a complete spec stabilization by creating 8 atomic commits that: + +1. Rename the experimental package to stable (e.g., `v3_6_experimental` → `v3_6`) +2. Stabilize the spec (remove PreRelease, update tests, update Accept header) +3. Copy the stable spec to a new experimental version (e.g., `v3_6` → `v3_7_experimental`) +4. Adapt the new experimental spec +5. Update all imports across the codebase (72+ files) +6. Update blackbox tests +7. Update documentation generation +8. Update docs and regenerate schemas + +## Prerequisites + +Before running this skill, ensure: + +```bash +# Install schematyper (required for regenerating schemas) +cd /tmp +git clone https://github.com/idubinskiy/schematyper.git +cd schematyper +go mod init github.com/idubinskiy/schematyper +echo 'replace gopkg.in/alecthomas/kingpin.v2 => github.com/alecthomas/kingpin/v2 v2.4.0' >> go.mod +go mod tidy +go install . + +# Install build dependencies (Fedora/RHEL) +sudo dnf install -y libblkid-devel +``` + +## Usage + +When invoked, provide the version information: + +``` +Current experimental version: 3.6.0-experimental +Target stable version: 3.6.0 +Next experimental version: 3.7.0-experimental +``` + +The skill will then: + +1. ✅ Perform all code changes across the repository +2. ✅ Create 8 properly structured commits +3. ✅ Run `./generate` to regenerate schemas and docs +4. ✅ Run `./build` to verify compilation +5. ✅ Run `./test` to verify all tests pass +6. ✅ Provide a summary of what was done + +## Checklist Coverage + +This skill completes all items from the [stabilization checklist](https://github.com/coreos/ignition/blob/main/.github/ISSUE_TEMPLATE/stabilize-checklist.md): + +### Making the experimental package stable ✅ +- Rename `config/vX_Y_experimental` to `config/vX_Y` +- Drop `_experimental` from all imports +- Update `MaxVersion` to delete the `PreRelease` field +- Update `config.go` comment block +- Update `config_test.go` to test stable version valid, experimental invalid +- Update Accept header in `internal/resource/url.go` + +### Creating the new experimental package ✅ +- Copy `config/vX_Y` into `config/vX_(Y+1)_experimental` +- Update all imports to `config/vX_(Y+1)_experimental` +- Update `MaxVersion` with `PreRelease = "experimental"` +- Update `config.go` prev import to stable package +- Update `config_test.go` for new experimental version +- Simplify `translate.go` to only `translateIgnition` and `Translate` +- Update `translate_test.go` old import to stable version +- Update `config/config.go` imports to experimental version +- Update `config/config_test.go` to add new experimental version +- Update `generate` script + +### Update all relevant places ✅ +- Update all imports from `vX_Y_experimental` to `vX_(Y+1)_experimental` +- Add import `config/vX_Y/types` to `tests/register/register.go` +- Update import to `vX_(Y+1)_experimental` in `tests/register/register.go` +- Add `vX_Y/types` to `configVersions` in `Register()` + +### Update the blackbox tests ✅ +- Bump invalid `-experimental` version in `VersionOnlyConfig` test +- Change all `X.Y.0-experimental` to `X.Y.0` in tests +- Update Accept header checks in `tests/servers/servers.go` + +### Update docs ✅ +- Update `internal/doc/main.go` +- Run `generate` to regenerate schemas and docs +- Add section to `docs/migrating-configs.md` +- Update `docs/specs.md` +- Note stabilization in `docs/release-notes.md` + +## What's NOT covered + +The following sections from the checklist require external repos and are NOT automated: + +- External tests (`.cci.jenkinsfile`, fedora-coreos-config) +- Other packages (ignition-config-rs, coreos-installer, ign-converter, Butane, FCOS docs, coreos-assembler, MCO) + +These must be done manually after the PR is merged. + +## Example Output + +After running the skill, you'll see: + +``` +✨ Stabilization complete! + +Created 8 commits: + ceb03d33 docs: update for spec stabilization + e5cac5c1 docs: shuffle for spec stabilization + 2aca7225 tests: update for new experimental spec + 3252aa50 *: update to v3_7_experimental spec + 0e5a3297 config/v3_7_experimental: adapt for new experimental spec + 21d51407 config: copy v3_6 to v3_7_experimental + 57d4d86e config/v3_6: stabilize + 8a071635 config: rename v3_6_experimental to v3_6 + +Next steps: +1. Review commits: git log --oneline -8 +2. Create PR to main branch +3. Update issue checkboxes (see checklist above) +4. After merge, handle external tests and packages +``` + +## Reference + +- [Issue #2200 - Stabilization Checklist](https://github.com/coreos/ignition/issues/2200) +- [PR #2202 - Example Stabilization (3.6.0)](https://github.com/coreos/ignition/pull/2202) +- [Stabilization Template](https://github.com/coreos/ignition/blob/main/.github/ISSUE_TEMPLATE/stabilize-checklist.md) From f2749a6f1d0e4440d2da4f179b77ac12c7d92fb7 Mon Sep 17 00:00:00 2001 From: Steven Presti Date: Tue, 17 Feb 2026 14:47:27 -0500 Subject: [PATCH 2/2] opencode/skills/release_note_update: add skill for release note update during release --- .opencode/skills/release_note_update/SKILL.md | 175 ++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 .opencode/skills/release_note_update/SKILL.md diff --git a/.opencode/skills/release_note_update/SKILL.md b/.opencode/skills/release_note_update/SKILL.md new file mode 100644 index 000000000..03aa696ef --- /dev/null +++ b/.opencode/skills/release_note_update/SKILL.md @@ -0,0 +1,175 @@ +--- +name: release_note_update:stage Notes +description: Automate release notes update and offer tagging. +--- + +# Ignition Release + +This skill automates the Ignition release process, handling version bumps and release notes updates following the established conventions from [PR #2181](https://github.com/coreos/ignition/pull/2181). + +## What it does + +Performs a complete release preparation by: + +1. Moving unreleased items from the "Unreleased" section to a new version section in `docs/release-notes.md` +2. Formatting the release notes with the proper date and version +3. Converting release note items to imperative mood (e.g., "Fixed" → "Fix") +4. Creating a properly formatted commit following the naming convention +5. Optionally creating a GitHub release and tag + +## Release Types + +The skill supports different types of releases: + +- **Patch release** (e.g., 2.25.0 → 2.25.1): Bug fixes only +- **Minor release** (e.g., 2.25.0 → 2.26.0): New features and changes +- **Major release** (e.g., 2.25.0 → 3.0.0): Breaking changes + +## Usage + +When invoked, the skill will: + +1. Analyze the current "Unreleased" section in `docs/release-notes.md` +2. Ask you to confirm the new version number (or you can provide it upfront) +3. Ask you to confirm the release date (defaults to today) +4. Move all unreleased items to a new version section +5. Format items in imperative mood +6. Create a commit with the format: `docs/release-notes: update for ` + +### Example invocation + +``` +/release 2.26.0 +``` + +or simply: + +``` +/release +``` + +The skill will detect the appropriate next version based on the unreleased items. + +## Release Notes Format + +The skill follows this structure: + +```markdown +## Upcoming Ignition (unreleased) + +### Breaking changes + +### Features + +### Changes + +### Bug fixes + +## Ignition () + +### Breaking changes +- Fix/Add/Update + +### Features +- Add + +### Changes +- Update + +### Bug fixes +- Fix +``` + +### Formatting Rules + +1. **Version header format**: `## Ignition ()` +2. **Date format**: ISO format (YYYY-MM-DD) +3. **Item format**: Imperative mood + - Use "Fix" not "Fixed" + - Use "Add" not "Added" + - Use "Update" not "Updated" +4. **Sections**: Include only non-empty sections (Breaking changes, Features, Changes, Bug fixes) +5. **Empty sections**: The "Unreleased" section should have empty subsections after release + +## Commit Format + +The skill creates a commit with this exact format: + +``` +docs/release-notes: update for +``` + +Example: `docs/release-notes: update for 2.26.0` + +## What the skill does step-by-step + +1. ✅ Read current `docs/release-notes.md` +2. ✅ Parse the "Unreleased" section +3. ✅ Determine the new version (provided or auto-detect) +4. ✅ Get the release date (provided or use today) +5. ✅ Convert all items to imperative mood +6. ✅ Create new version section with formatted date +7. ✅ Move all items from "Unreleased" to the new version section +8. ✅ Leave "Unreleased" section with empty subsections +9. ✅ Update `docs/release-notes.md` +10. ✅ Create commit with proper naming convention +11. ✅ Provide summary of changes + +## Example Output + +After running the skill, you'll see: + +``` +✨ Release preparation complete! + +Version: 2.26.0 +Date: 2026-02-17 + +Release notes updated: + - 1 breaking change + - 2 features + - 0 changes + - 1 bug fix + +Created commit: + docs/release-notes: update for 2.26.0 + +Next steps: +1. Review the changes: git show +2. Push the commit if everything looks good +3. Create a GitHub release/tag if needed +``` + +## Optional: Creating GitHub Release + +The skill can optionally: + +1. Create a git tag for the version +2. Create a GitHub release with the release notes + +To enable this, confirm when prompted or pass the `--create-release` flag. + +## Reference + +- [PR #2181 - Example Release (2.25.1)](https://github.com/coreos/ignition/pull/2181) +- [Release Notes Documentation](https://github.com/coreos/ignition/blob/main/docs/release-notes.md) + +## Checklist Coverage + +This skill automates: + +- ✅ Moving unreleased items to versioned section +- ✅ Formatting version header with date +- ✅ Converting items to imperative mood +- ✅ Creating properly named commit +- ✅ Optionally creating git tag and GitHub release + +## What's NOT covered + +The following tasks are NOT automated and must be done manually: + +- Updating version numbers in code files (e.g., `version.go`, `package.json`) +- Running tests before release +- Building and publishing release artifacts +- Updating external documentation +- Announcing the release