gmickel/flow-next/plugins/flow-next/skills/flow-next-make-pr/SKILL.md
flow-next-make-pr
Render a cognitive-aid PR body from flow-next state and open via gh. Triggers on /flow-next:make-pr with optional spec id and flags (--draft, --ready, --no-mermaid, --base <ref>, --memory, --dry-run). Auto-detects spec from current branch when no id given. NOT Ralph-blocked — autonomous loops can surface a draft PR for human review.
- Source repository stars
- 689
- Declared platforms
- 0
- Static risk flags
- 1
- Last source update
- 2026-08-28
- Source checked
- 2026-08-28
Decision brief
What it does: where it fits
A reviewable PR body is itself an artefact: it lets a human decide where to focus before skimming the diff. flow-next already collects every input that body needs — the spec with R-IDs, per-task done summaries and evidence commits, decisions / bug / architecture-patterns memory…
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/gmickel/flow-next --skill "plugins/flow-next/skills/flow-next-make-pr"Inspect the Agent Skill "flow-next-make-pr" from https://github.com/gmickel/flow-next/blob/efe60be268df748bdfbfc546a38751f8cf26c912/plugins/flow-next/skills/flow-next-make-pr/SKILL.md at commit efe60be268df748bdfbfc546a38751f8cf26c912. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Secondary signal: process-level autonomous driver (env survives only
Review the “Secondary signal: process-level autonomous driver (env survives only” section in the pinned source before continuing.
Review and apply the “Secondary signal: process-level autonomous driver (env survives only” source section. - 02
within one process tree; the token is the primary, prose-safe carrier).
if [[ "${FLOWAUTONOMOUS:-}" == "1" ]]; then AUTONOMOUS=1 fi
Ask one question at a time via AskUserQuestion (call ToolSearch with select:AskUserQuestion first if its schema isn't loaded). Fall back to a numbered options prompt only if the tool is unreachable. Never silently skip…Lead with the recommended option and a one-sentence rationale.No confirm gate. make-pr opens the PR without asking. Phase 0 asks only to resolve info it cannot derive (no --base and no detection match; no spec detected) — never "do you want to create it?". Not-all-tasks-done warns… - 03
Workflow
Execute the phases in workflow.md in order:
Pre-flight — gh installed + authenticated; resolve spec id (arg or branch-match); base-branch detection cascade; branch validity (HEAD ahead of base); all tasks done (warn + proceed as draft if not — no prompt; Ralph ex…Gather inputs — single call to flowctl spec export-cognitive-aid --base --json; parse the structured payload (spec / tasks / memory / glossary / strategy / diff / reviews).Render body — TL;DR, R-ID coverage table, Critical changes, How to review this PR (trust-calibration coaching block), Review plan (risk-ranked Must review / Spot-check / Safe to skim with a ≤30% focus budget), Decisions… - 04
Preamble
CRITICAL: flowctl is BUNDLED — NOT installed globally. which flowctl will fail (expected). Define once; subsequent blocks (here and in workflow.md) use $FLOWCTL:
CRITICAL: flowctl is BUNDLED — NOT installed globally. which flowctl will fail (expected). Define once; subsequent blocks (here and in workflow.md) use $FLOWCTL:Inline skill (no context: fork) — AskUserQuestion must stay reachable for the Phase 0 info prompts (resolve a missing base ref / undetected spec id — never a confirm gate). Subagents can't call blocking question tools (… - 05
Mode Detection
Parse $ARGUMENTS as a flag list. Recognized flags: --draft, --ready, --no-mermaid, --memory, --dry-run, --base (consumes the next token), and the literal token mode:autonomous. Strip recognized tokens; the remainder (if any) is the optional spec id.
Parse $ARGUMENTS as a flag list. Recognized flags: --draft, --ready, --no-mermaid, --memory, --dry-run, --base (consumes the next token), and the literal token mode:autonomous. Strip recognized tokens; the remainder (if…bash RAWARGS="$ARGUMENTS" DRAFTFORCE="auto" auto | draft | ready NOMERMAID=0 WRITEMEMORY=0 DRYRUN=0 BASEREF="" SPECID="" AUTONOMOUS=0
Permission review
Static risk signals and limitations
Runs scripts
The documentation asks the agent to run terminal commands or scripts.
# bash positional parameters here — the host's argument interpolation rewritesEvidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 94/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 689 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- gmickel/flow-next
- Skill path
- plugins/flow-next/skills/flow-next-make-pr/SKILL.md
- Commit
- efe60be268df748bdfbfc546a38751f8cf26c912
- License
- MIT
- Collected
- 2026-08-28
- Default branch
- main
View the original SKILL.md
/flow-next:make-pr — PR-as-cognitive-aid
A reviewable PR body is itself an artefact: it lets a human decide where to focus before skimming the diff. flow-next already collects every input that body needs — the spec with R-IDs, per-task done summaries and evidence commits, decisions / bug / architecture-patterns memory entries, glossary changes, strategy alignment, deferred review findings, the git diff itself. This skill stitches those into a structured body, optionally adds mermaid diagrams for module-boundary changes, and pushes via gh pr create.
The host agent (Claude Code / Codex / Droid) reads the structured payload from flowctl spec export-cognitive-aid and synthesizes the body directly. Every claim in the body must trace to a structured field in the export payload — never fabricate file paths, SHAs, R-ID attributions, or "why" reasoning. Unknown attribution is honest ("uncovered" / "unclear") rather than invented. The host is competent at "what looks important here?" given the rich input; no second-model review pass is needed (the structured payload does the heavy lifting).
flowctl provides only thin plumbing: flowctl spec export-cognitive-aid <spec-id> --base <ref> --json aggregates the inputs into a single JSON payload (Task 1 of this spec). The skill renders the body, then pushes and creates the PR directly — no confirm prompt (invoking make-pr is the intent; the body is deterministic; the default is a reversible draft). --dry-run prints the body without creating; --ready/--draft set draft state.
Read workflow.md for Phases 0–3 (pre-flight → gather → render body → mermaid) + the §4.0 --dry-run short-circuit — each phase ends with its inline ### Done when checklist. You MUST also read pr-cognitive-aid.md before composing any body — it IS Phase 1.5 (compose → flowctl pr-cognitive-aid validate/write → deterministic render), runs on EVERY invocation including --dry-run, and its rendered walkthrough supersedes the legacy Verification section, and the legacy R-ID coverage section when coverage is fully evidenced (with any unevidenced or undeclared criterion that table renders beside the walkthrough - pr-cognitive-aid.md §4 owns the rule); a body composed without executing it is a contract violation, not a style choice. Phase 1.5b additionally loads html-lens.md only when HTML artifacts are enabled and the run is not --dry-run. The post-render create + finalize machinery (§4.1 title → §4.6 gh pr create/--update → Phase 5 receipt/footer) lives in create-and-finalize.md, read ONLY on a real create (after §4.0 does not short-circuit) — a --dry-run preview never loads it. Read mermaid-rules.md before emitting any mermaid codefence — it defines reserved words, escape patterns, shape selection, the hard caps + allocation rule, the prose-summary rule, the pre-emission validation checklist, the Phase-3 hallucination guardrails, and the diff-fenced structural sketch alternate emission (§8); the --no-mermaid / no-trigger / skip-rule paths never load it. Phase 2's §2.11b Live QA section is likewise gated: references/live-qa-section.md is read only when the spec's qa_verdict receipt is present (the uncommon case).
Preamble
CRITICAL: flowctl is BUNDLED — NOT installed globally. which flowctl will fail (expected). Define once; subsequent blocks (here and in workflow.md) use $FLOWCTL:
FLOWCTL="${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/flowctl"
[ -x "$FLOWCTL" ] || FLOWCTL="<plugin-root>/scripts/flowctl" # <plugin-root> = the directory two levels above this skill's SKILL.md file (the harness gave you that file's absolute path when the skill loaded); substitute it literally
[ -x "$FLOWCTL" ] || FLOWCTL=".flow/bin/flowctl"
Inline skill (no context: fork) — AskUserQuestion must stay reachable for the Phase 0 info prompts (resolve a missing base ref / undetected spec id — never a confirm gate). Subagents can't call blocking question tools (Claude Code issues #12890, #34592). There is no Phase 4 confirm prompt — make-pr creates the PR directly. (sync-codex.sh rewrites any remaining AskUserQuestion to a plain-text numbered prompt in the Codex mirror.)
Mode Detection
Parse $ARGUMENTS as a flag list. Recognized flags: --draft, --ready, --no-mermaid, --memory, --dry-run, --base <ref> (consumes the next token), and the literal token mode:autonomous. Strip recognized tokens; the remainder (if any) is the optional spec id.
RAW_ARGS="$ARGUMENTS"
DRAFT_FORCE="auto" # auto | draft | ready
NO_MERMAID=0
WRITE_MEMORY=0
DRY_RUN=0
BASE_REF=""
SPEC_ID=""
AUTONOMOUS=0
# Tokenize and walk the argument list. The loop handles both `--base=<ref>`
# and space-separated `--base <ref>` via a PREV token holder. Deliberately NO
# bash positional parameters here — the host's argument interpolation rewrites
# positional tokens inside skill code blocks (pilot dogfood finding, 1.13.0).
PREV=""
for ARG in $RAW_ARGS; do
case "$PREV" in
--base) BASE_REF="$ARG"; PREV=""; continue ;;
esac
case "$ARG" in
--draft) DRAFT_FORCE="draft" ;;
--ready) DRAFT_FORCE="ready" ;;
--no-mermaid) NO_MERMAID=1 ;;
--memory) WRITE_MEMORY=1 ;;
--dry-run) DRY_RUN=1 ;;
--base) PREV="$ARG" ;;
--base=*) BASE_REF="${ARG#--base=}" ;;
mode:autonomous) AUTONOMOUS=1 ;;
-*) echo "Unknown flag: $ARG" >&2; exit 2 ;;
*) SPEC_ID="$ARG" ;;
esac
done
[[ -n "$PREV" ]] && { echo "Flag $PREV given without a value" >&2; exit 2; }
# Secondary signal: process-level autonomous driver (env survives only
# within one process tree; the token is the primary, prose-safe carrier).
if [[ "${FLOW_AUTONOMOUS:-}" == "1" ]]; then
AUTONOMOUS=1
fi
| Flag | Effect |
|---|---|
--draft | Force draft PR regardless of open-items count or Ralph context. |
--ready | Force non-draft PR. Conflicts with --draft (last flag wins; surface the conflict). |
--no-mermaid | Skip Phase 3 entirely. Mermaid prose summaries are also skipped. |
--memory | After PR creation, write a knowledge/architecture-patterns/ memory entry summarizing what shipped. Idempotent — rerun adds no second entry for the same spec id. |
--dry-run | Skip Phase 4 entirely. Render body to stdout. Useful for inspection or … --dry-run | pbcopy. |
--base <ref> | Override base-branch detection cascade. Useful when the team's default branch is develop, etc. |
mode:autonomous | Autonomous mode: Phase 0 info prompts hard-error instead of asking; draft forced. Sets AUTONOMOUS=1 only — NEVER RALPH. Also derived from FLOW_AUTONOMOUS=1. |
Ralph mode (FLOW_RALPH=1 or REVIEW_RECEIPT_PATH set) is detected separately in workflow.md §0.0 — the skill is not Ralph-blocked. Under Ralph the skill hard-errors instead of asking the Phase 0 info prompts, forces --draft, and emits the PR URL to stdout. (The PR is created directly in both modes — the only difference is forced-draft + no Phase 0 prompts under Ralph.) Autonomous mode is a SEPARATE flag: AUTONOMOUS=1 derives only from the mode:autonomous token or FLOW_AUTONOMOUS=1 and never sets RALPH. Under RALPH || AUTONOMOUS the Phase 0 info prompts hard-error and --draft is forced (--ready ignored with a note); the PR_URL= stdout contract and all receipt/harness semantics remain Ralph-only.
Interaction Principles
- Ask one question at a time via
AskUserQuestion(callToolSearchwithselect:AskUserQuestionfirst if its schema isn't loaded). Fall back to a numbered options prompt only if the tool is unreachable. Never silently skip the question. - Lead with the recommended option and a one-sentence rationale.
- No confirm gate. make-pr opens the PR without asking. Phase 0 asks only to resolve info it cannot derive (no
--baseand no detection match; no spec detected) — never "do you want to create it?". Not-all-tasks-done warns and proceeds (the open items make it a draft). Skip questions when context resolves cleanly. - Ralph and autonomous modes skip all questions. Detect both once at Phase 0 and route deterministically; a genuinely unanswerable gap hard-errors with a clear message (NEEDS_HUMAN-style) instead of hanging on a prompt.
Hallucination guardrails
The body is synthesized from the export payload. Every claim must trace to a structured field. The skill explicitly forbids:
- Inventing file paths. Only paths returned by
git diff --name-status(via thediff.filesarray) appear in Critical Changes / Review plan. No "I think there's also a config file" content. - Inventing risk or verification claims. Every "must review because…" clause in the Review plan traces to a
diff_summaryrisk signal (churn / public export / security path / cross-module edge / user-facing surface); every "the pipeline verified…" line in the How-to-review block traces totasks[].evidence/ R-ID coverage /reviews.*. No narrated risk and no claimed verification without a payload anchor — absent verification is stated honestly ("no cross-model review recorded on this PR"). - Fabricating commit SHAs. SHAs come from
tasks[].evidence[].commitsandgit log --oneline base..HEADonly. - Guessing R-ID coverage. Coverage is computed from task
satisfiesfrontmatter. Declared and evidenced are distinct: an R-ID no task claims (undeclared_r_ids) gets a ⚠️ flag; one claimed by a task that is not done yet renders as⏳ claimed, not yet evidenced. Never a confident attribution either way. - Inventing "why" reasoning. Decision context comes from
memory.decisions[]entries' bodies. If no decision entry exists for a change, the body says so explicitly rather than narrating a plausible-sounding rationale. - Quoting raw diff content. The body talks ABOUT the diff (paths, churn, modules). Never includes code snippets — privacy + secret-leakage risk; GitHub renders the actual diff below the body.
- Synthesizing review findings. Findings come from
reviews.deferred[]andreviews.suppressed_count. The body never editorializes severity or fabricates findings. - Generating fictitious memory IDs. When the body references memory entries (decisions / bugs / patterns), the IDs come from the export payload — never interpolated.
- Synthesizing strategy alignment. Strategy section content comes verbatim from
strategy.tracks[]and the spec's## Strategy Alignmentblock. The body never invents alignment claims. - Inventing glossary terms. Glossary section content comes from
glossary.changes[]. New terms / renamed terms are surfaced only if the export reports them. - Hallucinating mermaid relationships. Diagram nodes + edges come from real cross-module imports detected via
git diffanalysis (Phase 3 details in the mermaid-rules.md ref file). The skill never adds "I think module X also imports Y" edges.
When data is missing, the body says so honestly (e.g. *No decision-track memory entries for this spec. Surface decisions in PR review comments if needed.*) rather than confabulating content. Honest "unclear" beats plausible "wrong".
Forbidden
- Ralph-blocking the skill. This skill is the autonomous-loop terminus per spec R24. Detect Ralph but proceed (with
--draftforced). AFLOW_RALPH/REVIEW_RECEIPT_PATHexit-2 guard at the top of the skill has broken this. - Re-adding a confirm gate. make-pr creates the PR without prompting. A run that asks "do you want to create it?" before push has broken this — the escape hatch is
--dry-run, not a question. - Pushing or creating PRs in
--dry-runmode. Phase 4 short-circuits before anygit pushorgh pr create. The body lands on stdout only. - Squashing the existing-PR check. A bare
gh pr view --json url 2>/dev/nullreturns rc=0 for CLOSED and MERGED PRs as readily as OPEN. Filter.state == "OPEN"viajq(validated empirically during fn-42 spike). Closed/merged PRs on a reused branch must NOT trigger refusal. - Manual
git pushworkflows whenghis missing. Whenghisn't installed or authenticated, surface the install /gh auth logininstructions and exit. Don't try to fall back to half-baked PR creation. - Writing memory entries without
--memory. Default off. The user opts in for structurally-significant specs — every-PR memory inflation is the failure mode this gate prevents. - Quoting raw diff content in the body. See hallucination guardrails — the body describes the diff, never copies code.
- Calling
gh pr merge. Out of scope. The skill creates and exits; merge is a human decision. git add -A(or any broad stage) for a legacy PR-artifact commit. A supported current v1 lens stays local-only so it cannot stale its own head-bound input. The fallback committed path stages exactly.flow/artifacts/<spec-id>/pr.htmlwith the fixed messagechore(flow): pr artifact <spec-id>— unrelated working-tree changes are not make-pr's concern.- Opening a Lavish session or running
lavish-axi pollfrom make-pr. The PR artifact is a read-only review instrument — no annotate loop, interactive or autonomous. Review conversation belongs to the code host. - Emitting an artifact blob link that can 404. Gitignored
.flow/artifacts/→ local-open guidance only; committed mode links only after the narrow artifact commit landed on the branch being pushed.
Workflow
Execute the phases in workflow.md in order:
- Pre-flight —
ghinstalled + authenticated; resolve spec id (arg or branch-match); base-branch detection cascade; branch validity (HEAD ahead of base); all tasksdone(warn + proceed as draft if not — no prompt; Ralph exits 2); existing-PR refusal filtered on.state == "OPEN". Detects Ralph environment for downstream phases. - Gather inputs — single call to
flowctl spec export-cognitive-aid <spec-id> --base <ref> --json; parse the structured payload (spec / tasks / memory / glossary / strategy / diff / reviews). 1.5. Structured PR cognitive aid (ALWAYS — read pr-cognitive-aid.md and execute it) — the existing host composes one grounded v1 walkthrough from the export-time head. flowctl validates/persists/selects/renders it before optional HTML and final body creation. Not optional and not HTML-gated — only 1.5b is opt-in. No extra model call. Supported current artifacts render compact/full deterministically; stale/invalid artifacts select the existing fallback without mixing fields. The post-creationmakePrtracker facade remains unchanged. 1.5b. HTML render lens (opt-in) — only whenartifacts.html.enabledis true AND not--dry-run: generate.flow/artifacts/<spec-id>/pr.html(read-only review instrument per the shared disclosure referenceplugins/flow-next/references/html-artifacts.md§5 — diff-derived, R-ID-verified with flagged mismatch rows). A supported current v1 object is embedded as the exact HTML-safe semantic carrier and stays local-only soHEADremains equal to itsheadSha; only the visibly labeled legacy fallback may use the narrow committed-artifact path. Record the render-lens line for the body summary block. Never opens a Lavish session or polls (interactive AND autonomous). Failure is non-fatal — one stderr note, PR proceeds. With the mode off/unset there is zero artifact-related behavior or output beyond the single config read. - Render body — TL;DR, R-ID coverage table, Critical changes, How to review this PR (trust-calibration coaching block), Review plan (risk-ranked Must review / Spot-check / Safe to skim with a ≤~30% focus budget), Decisions made, Memory left behind, Glossary/strategy notes, Open items, footer breadcrumb. Sections without content are omitted (never empty placeholder headings).
- Mermaid generation — gated by 5 trigger conditions (cross-module imports, public interface changes, new/removed top-level dirs, high fan-out spec). Hard caps: 3 diagrams, 12 nodes, 25 edges, 12K characters. Each codefence preceded by a 3-5 sentence plain-language prose summary (load-bearing for forges that don't render mermaid). Validates each codefence against the
mermaid-rules.md§6 checklist (reserved words, escape patterns, no emoji / MathJax, no inheritance cycles) before emitting. Skipped under--no-mermaidor when no triggers fire / a skip rule applies (pure-additive single-module diff <50 LOC, flat-layout repo). - Push + create PR —
git push -u origin HEAD, thengh pr create --title --body. Draft whenOPEN_ITEMS_COUNT > 0OR Ralph OR--draft; ready when--ready.--dry-runshort-circuits before push. - Output + footer — emit PR URL on success; print breadcrumb (
Generated by /flow-next:make-pr from <spec-id> against <base>) plus the invisible machine marker<!-- flow-next:make-pr spec=<spec-id> base=<base-ref> -->land's authorship probe keys on (issue #274); optionally writeknowledge/architecture-patterns/memory entry under--memory.
Frequently asked questions
What to verify before installation and use
What does the flow-next-make-pr source document cover?
A reviewable PR body is itself an artefact: it lets a human decide where to focus before skimming the diff. flow-next already collects every input that body needs — the spec with R-IDs, per-task done summaries and evidence commits, decisions / bug / architecture-patterns memory…
How do I install flow-next-make-pr?
The source record exposes this install command: npx skills add https://github.com/gmickel/flow-next --skill "plugins/flow-next/skills/flow-next-make-pr". Inspect the command and pinned source before running it.
Which permission-related actions were detected?
Static rules flagged exec-script in the source; the page lists the matching lines and excerpts.
Alternatives
Compare before choosing
gmickel/flow-next
flow-next-make-pr
Render a cognitive-aid PR body from flow-next state and open via gh. Triggers on /flow-next:make-pr with optional spec id and flags (--draft, --ready, --no-mermaid, --base <ref>, --memory, --dry-run). Auto-detects spec from current branch when no id given. NOT Ralph-blocked — autonomous loops can surface a draft PR for human review.
gmickel/flow-next
flow-next-make-pr
Open a PR with a cognitive-aid body rendered from flow-next spec state via gh. Use whenever asked to make or open a PR in a flow-next repo.
garrytan/gbrain
bulk-ingestion
End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.
alirezarezvani/claude-skills
app-store-optimization
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist