Skip to content
Back to skills

Brainstormer Staying Current

ASecurity

Keep a long-lived brainstorm branch current without landing it into the merge target. Every git write in this skill (commit, merge, revert, push) stays with you — never delegate a git write to a subagent. Every `fetch` also stays with you, the acting agent, per Preserve and Bind freshness below. If you delegate the read-only merge-base/status analysis, load `choosing-subagent-models` first and fence the subagent to `show`, `log`, `diff`, `grep`, `rev-parse`, `merge-base`, `status` — the same rea

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
testingbashgit

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add thrum-team/thrum-pro --skill brainstormer-staying-current --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Brainstormer Staying Current?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Brainstormer Staying Current
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/thrum-team-brainstormer-staying-current-thrum-pro/badge)](https://www.skillsdirectory.com/skills/thrum-team-brainstormer-staying-current-thrum-pro)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: brainstormer-staying-current
description:
  "Use when a long-lived brainstormer worktree may be behind its configured
  merge target, before review or handoff, or when asked to merge-forward and
  leave the worktree clean. Resolves the target and merge owner from Thrum
  config, preserves local work, and verifies freshness after the merge."
# source: claude-plugin/skills/brainstormer-staying-current/SKILL.md
---

## Brainstormer: Stay Current with the Merge Target

Keep a long-lived brainstorm branch current without landing it into the merge
target. Every git write in this skill (commit, merge, revert, push) stays with
you — never delegate a git write to a subagent. Every `fetch` also stays with
you, the acting agent, per Preserve and Bind freshness below. If you delegate
the read-only merge-base/status analysis, load `choosing-subagent-models` first
and fence the subagent to `show`, `log`, `diff`, `grep`, `rev-parse`,
`merge-base`, `status` — the same read-only git surface CLAUDE.md requires for
every sub-agent — never `stash`, `reset`, `rebase`, `restore`, `clean`,
`commit`, `push`, or `checkout`.

### Resolve authority from config

Locate the canonical config from the current worktree:

```bash
CONFIG=.thrum/config.json
[ -f .thrum/redirect ] && CONFIG="$(cat .thrum/redirect)/config.json"
test -f "$CONFIG"
TARGET=$(jq -er '.orchestration.merge_target | select(type == "string" and length > 0)' "$CONFIG")
MERGE_KING=$(jq -r --arg target "$TARGET" '.orchestration.merge_kings[$target] // "unset"' "$CONFIG")
```

Treat an absent config or target as a blocker — merge-forward has nowhere to
target without them. A merge-forward only brings `origin/$TARGET` into the
brainstorm branch; it never grants permission to merge the brainstorm branch
into `$TARGET`, so it needs no landing authority to run and an `unset`
`MERGE_KING` never blocks it.

`orchestration.merge_kings` may not be populated for every target yet: `unset`
does NOT mean "nobody owns landing, proceed however" — it means the map hasn't
caught up (same gap `coordinator-merging-code/SKILL.md` documents for
branch-keyed lookups). `MERGE_KING` matters only when a conflict needs routing
or at final report. With it `unset` at either point, fall back to whichever
coordinator has actually been the merge authority for `$TARGET` in practice
(check with your team, or the project's operational convention) and route/report
to them the same as if the map had named them explicitly.

### Preserve before merging

Record the current branch, HEAD, status, and ahead/behind counts. Require an
attached non-target feature branch. Fetch the target branch explicitly:

```bash
git fetch origin "refs/heads/$TARGET:refs/remotes/origin/$TARGET"
git rev-list --left-right --count HEAD..."origin/$TARGET"
```

If the worktree is dirty, preserve tracked and untracked changes as a WIP commit
and record its SHA — never `git stash`. `stash` is a single shared stack across
every worktree on this box, not scoped to this worktree or to you; a stash push
or pop here can silently destroy or restore another agent's uncommitted work,
with no reflog entry and no recoverable blob for unstaged content. A commit is
yours alone and fully recoverable.

```bash
git add -A
git commit -m "wip: preserve <branch> before merge-forward <timestamp>"
git rev-parse HEAD
git status --short
```

Do not squash, drop, or revert the WIP commit when the requested outcome is a
clean worktree — it is real history now, not something to discard.

Stop if the worktree is still dirty after the WIP commit. Never use `stash`,
reset, rebase, force checkout, clean, or force push to obtain a clean state —
`stash` is banned here exactly like the others, with no worktree-scoped
exception.

### Merge-forward

Merge the remote-tracking target into the brainstorm branch:

```bash
git merge --no-edit "origin/$TARGET"
```

Resolve a conflict only when the correct result is supported by current source
and the branch's intended work. Otherwise stop with the conflict intact and send
the branch, worktree, target, and conflicted paths to the user or `$MERGE_KING`
for direction — falling back to the operational-convention authority per above
if `$MERGE_KING` is `unset`.

After a successful merge, run validation relevant to every resolved file and
always run `git diff --check origin/$TARGET..HEAD`.

### Bind freshness to handoff

Immediately before reporting success, fetch the target branch explicitly again
and verify the fetched target is an ancestor of HEAD:

```bash
git fetch origin "refs/heads/$TARGET:refs/remotes/origin/$TARGET"
git rev-list --left-right --count HEAD..."origin/$TARGET"
git merge-base --is-ancestor "origin/$TARGET" HEAD
git status --short
```

If the target advanced, repeat the merge-forward and verification, up to three
merge cycles in one run. After three moving-target results, stop and report the
new target SHA instead of claiming the branch is current.

Report the branch and target SHAs, ahead/behind counts, `$MERGE_KING` (or the
fallback authority if `unset`), validation, clean status, and the WIP commit SHA
if one was made. Do not push, squash, or drop the WIP commit unless the user
separately asks.

Files in this skill

  • SKILL.md5.1 KB
  • agents/openai.yaml683 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.