update
Bring this marketing folder up to date with the latest skills and templates from the Compound Marketing starter kit, keeping your own changes. Trigger with /update or when the user mentions 'update co
SKILL.md.claude/skills/update/SKILL.md
GitHubUpdate
Pull the latest starter kit and apply its changes to this folder. Every file gets a three-way comparison: the kit version this folder was built from, the kit now, and the file here. Files you never touched take the new version. Files you changed (including Learnings that /reflect added) get the kit's changes merged in around your edits. When you and the kit changed the same lines, you decide.
Brain content (truth.md, personas.md, and the rest) is never modified. New brain files are added.
The script lives next to this file. Call it $UPDATE: .claude/skills/update/update.sh, or .agents/skills/update/update.sh when .compound-marketing.yml says primary_runtime: codex. Run it from the folder root.
Workflow
Step 1: Save current work
Run git status --porcelain. If anything is uncommitted, show it and offer to commit it first ("Save work before update"). The update needs a clean folder so it can be undone in one step. If .update-conflicts/ is there, a previous update wasn't finished. Go to Step 4 and resolve it before anything else.
Step 2: Preview
Run $UPDATE plan. It pulls the latest starter kit, then lists what would change without touching anything.
If it can't find the starter kit, ask where the user downloaded compound-marketing, then rerun with the path: $UPDATE plan /path/to/compound-marketing. Pass the same path to apply. After this update, the path is saved and won't be needed again.
Explain the plan in plain language, grouped:
| Line | Meaning |
|---|---|
NEW |
New skill or file from the kit |
UPDATED |
You never changed it; it takes the new version |
MERGED |
You both changed it in different places; both sets of changes kept |
CONFLICT |
You both changed the same lines; you'll choose |
REMOVED |
The kit dropped it and you never changed it |
KEPT |
The kit dropped it, but you changed it, so it stays |
SKIPPED |
You deleted it; it stays deleted |
For new skills, read each new SKILL.md description and say in a line what it does. If the output starts with BASE guessed, mention that this folder predates version tracking, so the tool estimated its starting point from the folder's creation date. If no change lines appear, say the folder is up to date and stop.
Ask: "Apply these updates?"
Step 3: Apply
Run $UPDATE apply. It makes the changes, rebuilds the Codex/Claude mirror (AGENTS.md/CLAUDE.md and the second skills folder), and records the new starter kit version.
Step 4: Resolve conflicts
For each CONFLICT, the script left the real file alone and wrote a marked-up version to .update-conflicts/<same path>. Between <<<<<<< yours and ======= is this folder's version; between ======= and >>>>>>> starter-kit is the kit's.
For each one:
- Explain both versions in plain words: what the user's edit does, what the kit's change does.
- Recommend a resolution. Usually that keeps the user's intent and takes the kit's new content.
- On approval, write the resolved text to the real file and delete its conflict copy.
When .update-conflicts/ is empty, delete it. If any skill files were edited here, run /sync-skills so the second runtime's copy matches.
Step 5: Review and commit
Show git status --short and a one-line summary per changed area. Commit with the message Update Compound Marketing to <first 7 characters of starter_kit_version>. Tell the user they can undo the whole update with git reset --hard HEAD~1.
Rules
- Never commit while
.update-conflicts/exists. The recorded version has already moved forward, so the next update won't flag those files again. - Never edit the starter kit folder. If the pull fails because it has local changes, tell the user and stop.
- Never hand-edit brain content during an update. New brain files only.
- Don't add the
setupskill. It belongs to the starter kit only; the script skips it.