with one click
upgrade-boop
// Pull upstream Boop changes into a customized fork. Previews, backs up, merges with conflict-aware resolution, validates, and surfaces breaking changes.
// Pull upstream Boop changes into a customized fork. Previews, backs up, merges with conflict-aware resolution, validates, and surfaces breaking changes.
Pull upstream Boop changes into a customized fork. Previews, backs up, merges with conflict-aware resolution, validates, and surfaces breaking changes.
Write a tight, retention-focused YouTube script from a topic, outline, or research brief. Use when the user asks for a video script, wants to turn notes or research into a YouTube video, needs a hook/intro rewritten, or wants to plan a video end-to-end with pacing, visual beats, and CTAs.
| name | upgrade-boop |
| description | Pull upstream Boop changes into a customized fork. Previews, backs up, merges with conflict-aware resolution, validates, and surfaces breaking changes. |
Your Boop fork drifts from upstream as you customize it — system prompts tweaked, new automations, tuned memory thresholds, etc. This skill brings upstream changes in without blowing away those edits.
Run /upgrade-boop inside the repo from Codex. This is the supported upgrade path: the agent previews the diff, creates rollback points, performs the merge, resolves conflicts when needed, and runs referenced migration skills.
Preflight: refuses to touch anything with a dirty working tree. If the upstream remote is missing, adds it (default: https://github.com/raroque/boop-agent.git — the skill will ask).
Backup: creates a timestamped rollback branch + tag before doing anything. Printed at the end so you can git reset --hard back.
Preview: buckets upstream changes into categories so you know what's about to land:
server/) — the dispatcher, executor, memory, automations. High conflict risk if you edited your prompts.server/composio*, server/integrations/) — Composio wiring.debug/) — debug dashboard.convex/) — Convex tables + functions. Pushes happen on next convex dev.scripts/, package.json, tsconfig.json, .env.example) — env vars + deps might need attention.README.md, ARCHITECTURE.md, INTEGRATIONS.md, CHANGELOG.md).Choice: you pick merge (one-pass), cherry-pick (specific commits), rebase (linear history), or abort.
Conflict preview: dry-run merge to show which files would conflict before you commit.
Validation: npm install + npm run typecheck after the merge.
Breaking changes: parses the CHANGELOG.md diff for [BREAKING] entries and surfaces each one. Many breaking changes will reference a migration skill (/<skill-name>) — the skill offers to run those for you.
Summary: prints rollback tag, new/upstream HEADs, and any env-var additions from .env.example you should copy into .env.local.
git status, git log, git diff, and only open files that actually have conflicts.Run:
git status --porcelainIf output is non-empty:
Confirm remotes with git remote -v. If upstream is missing:
https://github.com/raroque/boop-agent.git).git remote add upstream <url>git fetch upstream --pruneDetect the upstream branch:
git branch -r | grep upstream/upstream/main. Fall back to upstream/master. If neither, ask.UPSTREAM_BRANCH. All commands below that reference upstream/main use upstream/$UPSTREAM_BRANCH instead.Fetch fresh:
git fetch upstream --pruneHASH=$(git rev-parse --short HEAD)
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
git branch backup/pre-upgrade-$HASH-$TIMESTAMP
git tag pre-upgrade-$HASH-$TIMESTAMP
Save the tag name. You'll print it in Step 7 for rollback.
Compute base:
BASE=$(git merge-base HEAD upstream/$UPSTREAM_BRANCH)Show what's coming:
git log --oneline $BASE..upstream/$UPSTREAM_BRANCHShow local drift:
git log --oneline $BASE..HEADFile-level impact:
git diff --name-only $BASE..upstream/$UPSTREAM_BRANCHBucket files into the categories listed in How it works (Core, Integrations, UI, Schema, Scripts/config, Docs). Call out high-risk buckets specifically.
Large-drift check: if upstream has many commits and the user has heavy local drift, mention that starting fresh and reapplying customizations might be cleaner than merging. Don't push — offer.
Ask the user with the active agent's user-question mechanism:
If Abort: print rollback info and stop.
If Full update or Rebase, dry-run:
git merge --no-commit --no-ff upstream/$UPSTREAM_BRANCH; git diff --name-only --diff-filter=U; git merge --abort
Show the conflict list. If empty, say "clean" and proceed. If non-empty, let the user bail.
git merge upstream/$UPSTREAM_BRANCH --no-editIf conflicts:
git status → list conflicted files.git add <file>git commit --no-edit (if merge didn't auto-commit).git log --oneline $BASE..upstream/$UPSTREAM_BRANCHgit cherry-pick <hash1> <hash2> …On conflict:
git add, git cherry-pick --continue.git cherry-pick --abort to stop.git rebase upstream/$UPSTREAM_BRANCHOn conflict: resolve, git add, git rebase --continue. If > 3 rounds of conflicts, git rebase --abort and recommend merge.
Run in order:
npm install — picks up any new deps.npm run typecheck — this repo's typecheck. If it fails with errors outside the merge delta, flag it but don't block.Note: Convex schema changes (convex/schema.ts, convex/*.ts) take effect the next time convex dev runs. Mention this to the user — they need to restart npm run dev for the schema to push.
Note: If .env.example changed, diff it against .env.local:
diff <(grep -o '^[A-Z_]*=' .env.example | sort) <(grep -o '^[A-Z_]*=' .env.local | sort).env.local.Read the CHANGELOG delta:
git diff pre-upgrade-$HASH-$TIMESTAMP..HEAD -- CHANGELOG.mdParse new lines containing [BREAKING]. Format is:
[BREAKING] <description>. Run `/<skill-name>` to <action>.
If none: proceed silently.
If any:
[BREAKING] line in full.Print:
pre-upgrade-<HASH>-<TIMESTAMP>git rev-parse --short HEADgit rev-parse --short upstream/$UPSTREAM_BRANCHTell the user:
git reset --hard pre-upgrade-<HASH>-<TIMESTAMP>backup/pre-upgrade-<HASH>-<TIMESTAMP>npm run dev to pick up code + Convex schema changes.