ignition-update
Update the Ignition library dependency to the latest release, re-vendor, and fix any breakage
Source facts
- Repository
- coreos/ign-converter
- Last source activity
- April 8, 2026 at 18:37
- Detected SKILL.md language
- English
- Stars
- 10
- Forks
- 19
Install options
The review-first prompt is selected by default. You can switch to a direct command or download a local copy.
Review the source files
Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.
Showing SKILL.md
SKILL.md
Source instructions · Read-only preview- name
- ignition-update
- description
- Update the Ignition library dependency to the latest release, re-vendor, and fix any breakage
# Ignition Library Update
## What it does
1. Discovers the current Ignition version from `go.mod` and the latest release from GitHub
2. Updates `go.mod` to the latest Ignition version
3. Runs `go mod tidy && go mod vendor`
4. Runs `go test ./...` to verify existing translations still work
5. Fixes any compilation or lint issues caused by the update
## Prerequisites
- Go toolchain installed
- `gh` CLI available (for querying latest release), or internet access for `go list -m -versions`
## Usage
```bash
# Fully automatic - discovers latest version from GitHub
/ignition-update
```
No arguments required.
## Workflow
### Step 1: Discover Versions
**1a. Read the current Ignition version from go.mod:**
```bash
grep 'coreos/ignition/v2' go.mod
```
Extract the current version (e.g., `v2.20.0`).
**1b. Find the latest Ignition release:**
```bash
gh release list --repo coreos/ignition --limit 10
```
Or:
```bash
go list -m -versions github.com/coreos/ignition/v2 | tr ' ' '\n' | tail -5
```
Pick the latest stable release (not a pre-release/RC).
**1c. Compare versions:**
If the current version is already the latest, inform the user and stop:
> "go.mod already has the latest Ignition version (vX.Y.Z). Nothing to update."
**1d. Confirm with user:**
> "Current: vX.Y.Z -> Latest: vA.B.C. Proceed with update?"
### Step 2: Update go.mod
Edit `go.mod` to change the `github.com/coreos/ignition/v2` version to the latest.
Only change the version in the `require` block, for example:
```
github.com/coreos/ignition/v2 v2.20.0
```
becomes:
```
github.com/coreos/ignition/v2 v2.26.0
```
Do NOT manually edit indirect dependencies - `go mod tidy` handles those.
### Step 3: Re-vendor
```bash
go mod tidy
go mod vendor
```
If `go mod tidy` fails, it usually means:
- The version doesn't exist yet (check the tag exists on GitHub)
- A transitive dependency conflict (read the error, may need to update the Go version in `go.mod`)
If the Go version in `go.mod` needs bumping (the new Ignition version requires a newer Go), update the `go` directive as well. Check what Go version the Ignition release requires:
```bash
# After vendoring, check what Ignition's go.mod requires
cat vendor/github.com/coreos/ignition/v2/go.mod | head -5
```
### Step 4: Run Tests
```bash
go test ./...
```
If tests pass, proceed to Step 6.
### Step 5: Fix Breakage (if tests fail)
Common causes of breakage after an Ignition update:
**5a. Type definition changes in existing specs**
Ignition sometimes adds new fields, validation, or changes types in existing spec versions. If a translation module references a field that changed:
- Read the compilation error to identify which file and type
- Compare the vendored type definition before and after
- Update the translation code to match the new type structure
**5b. New validation in existing specs**
Ignition may add stricter validation to existing spec versions. Test configs that were previously valid may now fail validation:
- Read the test failure to identify which config is rejected
- Update the test config to satisfy the new validation
- Or update the translation to handle the validation change
**5c. Transitive dependency API changes**
If a transitive dependency (e.g., `go-systemd`, `go-json`) changed its API:
- Read the compilation error
- Update the affected code to use the new API
After fixing, re-run:
```bash
go test ./...
```
Repeat until all tests pass.
### Step 6: Check Formatting
```bash
gofmt -l .
```
If any files are listed, format them:
```bash
gofmt -w .
```
### Step 7: Summarize Changes
After completion, summarize what changed for the user:
- Ignition version: old -> new
- Go version bumped (if applicable)
- New spec types introduced (if any new `v3_X` directories appeared in vendor)
- Transitive dependencies updated
- Any fixes applied to existing translations
- Test results
Suggest a commit message following the repo convention:
```
go.mod: update to Ignition vX.Y.Z
```
## Checklist Coverage
- [x] Latest version discovery from GitHub / Go module registry
- [x] Current version detection from go.mod
- [x] go.mod update
- [x] Re-vendoring with `go mod tidy && go mod vendor`
- [x] Test verification
- [x] Breakage diagnosis and fix
- [x] Format check
## What's NOT covered
- [ ] Adding a new spec translation (use `/add-spec-translation` for that)
- [ ] Creating a GitHub PR
- [ ] Updating CI workflow Go versions (if the new Ignition requires a newer Go than CI tests)
## Example Output
```
Discovering Ignition versions...
Current (go.mod): v2.20.0
Latest (GitHub): v2.26.0
Update Ignition v2.20.0 -> v2.26.0? (y/n)
Updating go.mod...
Running go mod tidy && go mod vendor...
New spec types detected:
- v3_6 (cex, clevis, config, device, directory, disk, ...)
Transitive dependencies updated:
- aws-sdk-go -> aws-sdk-go-v2
- go-systemd/v22: v22.5.0 -> v22.6.0
- testify: v1.9.0 -> v1.11.1
Running go test ./...
PASS
gofmt check: clean
Suggested commit message:
go.mod: update to Ignition v2.26.0
```
## References
- Design document: `.opencode/skills/ignition-update/DESIGN.md`
- Related skill: `.opencode/skills/add-spec-translation/SKILL.md`
- Example commits: `04f5d8a`, `fc3acd6`, `dc5d7d4`, `9b0adda`
View on GitHub