/update-gaia
/update-gaia pulls the latest GAIA release into your project using a three-way merge strategy. It compares your file, the baseline tarball your project was installed from, and the latest tarball — applying updates where GAIA owns content and surfacing conflicts where you do. It is wired to the statusline: when a new release is available, the statusline shows a Run /update-gaia indicator that loads the skill when clicked.
When to use it
Section titled “When to use it”Run /update-gaia when the statusline signals a new release is available, or any time you want to pull in the latest GAIA improvements.
How to invoke
Section titled “How to invoke”Click the Run /update-gaia statusline indicator, or trigger by phrasing:
- “update GAIA”
- “pull the latest GAIA”
- “apply the new GAIA release”
Ownership classes
Section titled “Ownership classes”The three-way merge is governed by ownership classes defined in .gaia/manifest.json:
| Class | Who controls it | On drift |
|---|---|---|
owned | GAIA fully. Overwritten silently when unchanged from baseline. | Prompts if you have local changes. |
shared | GAIA seeds, you customize. | Emits a .gaia-merge/<path>.patch for manual resolution. |
wiki-owned | GAIA-seeded wiki pages (concepts, decisions, modules). Same as shared. | Emits a patch for manual resolution. |
| adopter-owned (implicit) | Anything not in the manifest, plus sentinels like wiki/hot.md, wiki/log.md, CHANGELOG.md, .gaia/VERSION, .gaia/manifest.json. | Never touched. |
What it does
Section titled “What it does”- Reads
.gaia/VERSIONto determine the baseline. - Resolves the latest release tag via
gh release list --repo gaia-react/gaia(falls back to the GitHub API). - Shows the release notes and asks you to confirm.
- Downloads the baseline and latest tarballs into
.gaia/cache/(gitignored). - Runs
gaia update mergeto compute the three-way diff per file. - Walks any conflicts with you one at a time; reads
.gaia-merge/<path>.patchfor each. - Prompts before deleting any file that the latest release removed.
- Writes the new version to
.gaia/VERSIONand copies the latest manifest into.gaia/manifest.json. - Prints a summary with counts (overwritten, added, skipped, conflicts, deleted, backed up).
Backups land in .gaia-backup/<timestamp>/. Conflict patches land in .gaia-merge/.
After the run
Section titled “After the run”Review patches in .gaia-merge/, run the quality gate, and inspect git diff before committing. The skill does not auto-commit. When satisfied:
git commit -m "chore: update GAIA to <tag>"Gotchas
Section titled “Gotchas”- Must run from the main checkout, not a linked worktree. The skill rejects worktree invocations early.
- Must run from
mainormaster, or from an existing chore branch. If onmain, the skill createschore/update-gaia-<timestamp>. - Refuses to downgrade. If
.gaia/VERSIONis ahead of the latest release, the skill warns and exits. - Requires a baseline tarball. If your installed version predates the manifest mechanism, the skill stops and tells you to cherry-pick manually.
Source: .claude/skills/update-gaia/SKILL.md.