ワンクリックで
bip-ms-poll
Quick poll of tracked EPICs and code repos for new manuscript-relevant results
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Quick poll of tracked EPICs and code repos for new manuscript-relevant results
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | bip-ms-poll |
| description | Quick poll of tracked EPICs and code repos for new manuscript-relevant results |
Lightweight mid-session update for a manuscript session. Checks what
changed in tracked code repos and EPICs since last check and fetches new
artifacts from remote, so you can react to new results as a scientific
discussant: judge what each result means and orchestrate what happens next
(through issues and PRs). Per /bip-ms, the paper itself is updated when a
thread of research completes, not on every incremental result surfaced here.
For continuous monitoring, prefer the persistent result monitor
started by /bip-ms (Step 5) — it uses SSH polling to detect new
result files on remote servers in real time. Use /bip-ms-poll for:
fetch_cmds to pull results locally after the monitor flags themFor periodic auto-polling: /loop 10m /bip-ms-poll
Never modify remote server state. Do not run snakemake (even
dry-run), zig build, git pull, snakemake --unlock, or any
write command via SSH on remote servers (ermine, quokka, orca, etc.).
Other agents are actively running experiments there. SSH is fine for
read-only inspection (ls, cat, head, grep, checking file
dates/sizes), but never run anything that modifies files, locks, or
builds. Local git pull and make remote-fetch (which uses rsync
to copy FROM remote) are fine — they only modify the local clone.
Fan out one general-purpose subagent per entry in tracked_repos —
single message, multiple Agent calls in parallel. Follow the
dispatch pattern in SUBAGENT-SCAN.md (bipartite repo root). Per-repo
granularity avoids racing on git pull when one repo has multiple
EPICs.
Brief for each subagent:
Lightweight delta poll for repo
<org/repo>since the previous manuscript poll. Local path:<local_path>. EPIC numbers:<epics>. Fetch commands:<fetch_cmds>. Last-seen EPICupdatedAt:<timestamps>(from primary's memory; if unknown, compare against the last 24h).Tasks:
- For each EPIC,
gh issue view <N> --repo <org/repo> --json body,updatedAt. IfupdatedAtis unchanged from baseline, skip body parsing. Otherwise extract newly checked items, new key findings, and changes to active clone assignments.gh pr list --repo <org/repo> --search "is:merged sort:updated-desc" --limit 5 --json number,title,body,mergedAt. Report only PRs newer than the last poll.git -C <local_path> fetch origin(read-only — nevergit pull), then reportmainvsorigin/mainfromgit -C <local_path> rev-list --left-right --count main...origin/main(local-ahead / remote-ahead). Clones are often checked out on a feature branch, so do NOTpull --ff-only origin main: that fast-forwards the current branch and fails whenever it isn't main — a failure that is NOT main diverging. Call main "diverged" only when both counts are nonzero; "0 / N" is a clean fast-forward. Then run each fetch_cmd from<local_path>(idempotent; safe to re-run).find <local_path> \( -name "*.svg" -o -name "*.html" \) -mmin -60. For each new file, identify the producing EPIC or PR.gh pr list --repo <org/repo> --json number,title,headRefName,state. Note any PRs approaching merge that will produce results soon.Return under 300 words, structured per
SUBAGENT-SCAN.md:
changes_since_baseline: EPIC deltas, new merges, new findingsactive_items: PRs approaching merge with brief statusnew_artifacts: paths to new SVGs/notebooks with source EPIC/PRaction_candidates: import figure X, open notebook Y, draft text for finding Zsurprises: anything else, includingRECOMMEND DEEPER LOOKflagsUse Read (not grep excerpts) for PR bodies or finding text you cite. Do not paste full bodies.
If every subagent reports zero changes_since_baseline and zero
surprises, the poll output is one line: "All quiet across tracked
repos." Otherwise compose the "React to new artifacts" sections below
from the structured reports.
When new SVGs are found after a fetch:
Show the user what's new:
**New SVG**: peak-origins/experiments/benchmark/results/fig3.svg (fetched just now)
Ask if it should be imported to prep-figures/:
PREP_DIR=$(jq -r .prep_figures_dir .ms-config.json)
cp "<source>" "$PREP_DIR/"
make pdf-figures
If imported, check if the manuscript already references it. If not,
suggest placement and draft the \includegraphics block.
When new .html notebooks are found after fetch:
open -a "Google Chrome" "<path-to-notebook.html>"
Tell the user what notebook was opened and which EPIC/issue produced it. After they review, ask which plots or findings to incorporate.
When an EPIC body has new findings (numbered items in the Key Findings section that weren't there before), react as a discussant first, not as a transcriber:
@scientific-tex-editor agent on the
new text, and present the edited draft for final approval.If during polling you notice gaps — an experiment that should be run, a comparison that's missing, a figure variant that would strengthen the paper — propose raising an issue on the tracked repo:
/bip-issue-next targeting the tracked repoNew results (lead with this): Figures, notebooks, or findings that arrived since last poll. One line each with source and age.
Active work: Which EPICs have active clones, brief status. Only mention if something changed.
Approaching completion: PRs close to merge that will produce results soon.
Proposed actions: Concrete list — import figure X, open notebook Y, draft text for finding Z, raise issue for gap W.
Ring the terminal bell and send a phone notification if a major new result arrives (new figure or quantitative finding):
printf '\a'
NTFY_TOPIC=$(grep ntfy_topic ~/.config/bip/config.yml | awk '{print $2}')
[ -n "$NTFY_TOPIC" ] && curl -s -H "Title: bip ms" -d "New result: <description>" "ntfy.sh/$NTFY_TOPIC" > /dev/null
When mentioning any PR or issue in the poll output, always verify its
current state programmatically (gh pr view --json state, gh issue view --json state) rather than relying on earlier poll results or
conversation memory. Stale state leads to confusing reports (e.g.,
reporting a merged PR as "open").
When a claim rests on a PR/issue body or comments — especially an
absence claim ("reports no result", "no mention of Y") — read the full
text. Do not pipe gh ... --json body through head/tail: Results
and conclusions usually sit at the bottom, which is exactly what a
truncated read drops. To narrow, grep -n -i -A30 for the section
rather than chopping at a line count; never assert absence from output
you truncated yourself.
This is a poll, not a cold start. Only report what changed. If nothing changed, say so in one line:
All quiet across tracked repos. No new results since last check.
updatedAt timestamps for EPICs to detect changes efficientlySame as /bip-ms: iN/pN prefixes, full URLs on first mention.
Check remote server CPU, memory, and GPU availability via SSH
Cold-start into a worktree/clone from a fresh conversation — read the PR, issue, and any status files, figure out where things stand, then STOP and ask the user what to do next. Use for a fresh conversation dropped into a bip-spawn or bip-epic-spawn worktree/clone that already has history (a PR, an in-progress phase, or a stalled worker).
Persist manuscript session state before context reset
Cold-start for a manuscript session — the paper is the source of truth and shared context; discuss results, orchestrate research through issues/PRs, and update the paper as threads complete
Spawn a Claude session in a clone for an EPIC issue
Worker self-spawns a follow-up issue and hands off to a new slot