Spec Writer
garrytan/gstack
Converts a vague idea into a precise, executable spec in five phases, files it as an issue and can start an agent on it in a fresh worktree.
Manually trigger plan-sync to update downstream task specs after implementation drift.
$ npx skills add gmickel/flow-next --skill flow-next-sync -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install gmickel/flow-next flow-next-sync --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/gmickel/flow-next.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/flow-next/skills/flow-next-sync .claude/skills/flow-next-sync && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "flow-next-sync" agent skill from https://github.com/gmickel/flow-next/tree/main/plugins/flow-next/skills/flow-next-sync into .claude/skills/flow-next-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "flow-next-sync", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/gmickel/flow-next/tree/main/plugins/flow-next/skills/flow-next-syncType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add gmickel/flow-next --skill flow-next-sync -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install gmickel/flow-next flow-next-sync --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gmickel/flow-next.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/flow-next/skills/flow-next-sync .agents/skills/flow-next-sync && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "flow-next-sync" agent skill from https://github.com/gmickel/flow-next/tree/main/plugins/flow-next/skills/flow-next-sync into .agents/skills/flow-next-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "flow-next-sync", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gmickel/flow-next --skill flow-next-sync -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install gmickel/flow-next flow-next-sync --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gmickel/flow-next.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/flow-next/skills/flow-next-sync .cursor/skills/flow-next-sync && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "flow-next-sync" agent skill from https://github.com/gmickel/flow-next/tree/main/plugins/flow-next/skills/flow-next-sync into .cursor/skills/flow-next-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "flow-next-sync", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/gmickel/flow-next.git --path plugins/flow-next/skills/flow-next-sync--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add gmickel/flow-next --skill flow-next-sync -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install gmickel/flow-next flow-next-sync --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gmickel/flow-next.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/flow-next/skills/flow-next-sync .gemini/skills/flow-next-sync && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "flow-next-sync" agent skill from https://github.com/gmickel/flow-next/tree/main/plugins/flow-next/skills/flow-next-sync into .gemini/skills/flow-next-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "flow-next-sync", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install gmickel/flow-next flow-next-syncInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add gmickel/flow-next --skill flow-next-sync -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/gmickel/flow-next.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/flow-next/skills/flow-next-sync .github/skills/flow-next-sync && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "flow-next-sync" agent skill from https://github.com/gmickel/flow-next/tree/main/plugins/flow-next/skills/flow-next-sync into .github/skills/flow-next-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "flow-next-sync", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gmickel/flow-next --skill flow-next-sync -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install gmickel/flow-next flow-next-sync --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gmickel/flow-next.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/flow-next/skills/flow-next-sync .opencode/skills/flow-next-sync && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "flow-next-sync" agent skill from https://github.com/gmickel/flow-next/tree/main/plugins/flow-next/skills/flow-next-sync into .opencode/skills/flow-next-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "flow-next-sync", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
flow-next-syncManually trigger plan-sync to update downstream task specs after implementation drift.
Flow Next Sync is an agent skill from gmickel/flow-next. Manually trigger plan-sync to update downstream task specs after implementation drift. Use when code changes outpace specs.
Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: Faster than your agent alone. And better. A workflow plugin that takes a bug, idea or ticket to a verified pull request: specs, cross-model review by risk, live QA, receipts in… The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 09e291e. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitjqFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Flow Next Sync loads about 2.4k tokens when it runs. Until then it costs about 35 tokens; SKILL.md has 902 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from gmickel/flow-next at commit 09e291e, republished under its MIT licence (© gmickel). 902 words, ~2,352 tokens.
.claude/skills/flow-next-sync/SKILL.md (or your agent's skills folder).Manually trigger plan-sync to update downstream task specs.
Read working-rules.md first unless you already have this run; it holds for every step of this skill.
CRITICAL: flowctl is BUNDLED - NOT installed globally. Define once; subsequent blocks 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"Arguments: $ARGUMENTS
Format: <id> [--dry-run]
<id> - task ID fn-N-slug.M (or legacy fn-N.M, fn-N-xxx.M) or spec ID fn-N-slug (or legacy fn-N, fn-N-xxx), or a resolvable tracker handle (wor-17 / wor-17.M) that flowctl show maps to the linked spec/task--dry-run - show changes without writingREPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"Parse $ARGUMENTS for:
ID--dry-run flag = DRY_RUN (true/false)Validate ID first (handle-recognition rule):
flowctl show, not by a prefix check. A session that rejects a resolvable tracker handle as an unknown id — because it gated on "must start with fn-" — has broken this. Route the arg through $FLOWCTL show <ID> --json (Step 3); flowctl's widened resolver maps a tracker key (wor-17 / wor-17.M) to its linked spec/task, so a resolvable handle is the existing spec/task, never a new id. /flow-next:sync wor-17 therefore resolves the linked spec.<id> [--dry-run]"flowctl show (Step 3): "Unknown ID. Use fn-N-slug (spec) / fn-N-slug.M (task), a tracker handle (wor-17), or legacy fn-N, fn-N-xxx."Detect ID type (use the canonical id from flowctl show):
. (e.g., fn-1.2, fn-1-add-oauth.2, wor-17.2) -> task ID. (e.g., fn-1, fn-1-add-oauth, wor-17) -> spec IDtest -d .flow || { echo "No .flow/ found. Run flowctl init first."; exit 1; }If .flow/ missing, output error and stop.
$FLOWCTL show <ID> --jsonIf command fails:
<id> not found. Run flowctl list to see available."<id> not found. Run flowctl specs to see available."Stop on failure.
For task ID input:
# Extract spec from task ID (remove .N suffix)
SPEC=$(echo "<task-id>" | sed 's/\.[0-9]*$//')
# Get all tasks in spec
$FLOWCTL tasks --spec "$SPEC" --jsonFilter to status: todo or status: blocked. Exclude the source task itself.
For spec ID input:
$FLOWCTL tasks --spec "<spec-id>" --jsonFirst, find a source task to anchor drift detection (agent requires COMPLETED_TASK_IDS):
status: donestatus: in_progressThen filter remaining tasks to status: todo or status: blocked (these are downstream).
If no downstream tasks:
No downstream tasks to sync (all done or none exist).Stop here (success, nothing to do).
done (else in_progress) task in spec mode — or the run stopped with the documented refusal because neither exists.DOWNSTREAM_TASK_IDS holds the spec's todo and blocked tasks with the source task excluded. An empty downstream set stops the run here. A session that spawns the agent with nothing downstream has broken this.Three extra context types help the agent catch drift the spec text alone can't reveal: project-glossary terms (renames where the old spec used a term whose _Avoid_ alias now appears in code), active decision constraints (current code may touch files mentioned in a decision's Consequences section), and strategic-intent drift (completed task contradicts an active STRATEGY.md track or approach).
Write the three inputs to files; dispatch only their paths. Empty or failed reads use the same defaults as an absent source.
# fence:plan-sync-inputs — FLOWCTL is the resolved executable path
mkdir -p .flow/tmp
SYNC_CONTEXT=$(mktemp -d "$(pwd)/.flow/tmp/plan-sync.XXXXXX") || exit 2
GLOSSARY_JSON_FILE="$SYNC_CONTEXT/glossary.json"
DECISIONS_JSON_FILE="$SYNC_CONTEXT/decisions.json"
STRATEGY_CONTENT_FILE="$SYNC_CONTEXT/strategy.json"
if ! "$FLOWCTL" glossary list --json > "$GLOSSARY_JSON_FILE" 2>/dev/null || [ ! -s "$GLOSSARY_JSON_FILE" ]; then
printf '%s\n' '{"groups":[],"file_count":0,"total_terms":0}' > "$GLOSSARY_JSON_FILE"
fi
if ! "$FLOWCTL" memory list --track knowledge --category decisions --json > "$DECISIONS_JSON_FILE" 2>/dev/null || [ ! -s "$DECISIONS_JSON_FILE" ]; then
printf '%s\n' '{"entries":[],"legacy":[],"count":0,"status":"active"}' > "$DECISIONS_JSON_FILE"
fi
if ! "$FLOWCTL" strategy read --json > "$STRATEGY_CONTENT_FILE" 2>/dev/null || [ ! -s "$STRATEGY_CONTENT_FILE" ]; then
printf '%s\n' '{}' > "$STRATEGY_CONTENT_FILE"
fi
printf '%s\n' "$GLOSSARY_JSON_FILE" "$DECISIONS_JSON_FILE" "$STRATEGY_CONTENT_FILE"Record the printed absolute paths for the dispatch; variables do not persist across shell calls. The agent reads the files and applies its Phase 3b husk short-circuit. Keep all three files through the agent's return.
Read the cross-spec flag first — the same single config-leaf read /flow-next:work performs, so a repo that opted into cross-spec propagation (planSync.crossSpec=true) gets the same behavior from a manual /flow-next:sync as from the work-loop auto-trigger. Without this, CROSS_SPEC is unset and plan-sync skips the cross-spec phase entirely — the tool you reach for after big drift silently checks only same-spec tasks:
CROSS_SPEC=$($FLOWCTL config get planSync.crossSpec --json | jq -r '.value')Build context and spawn via Task tool:
Sync task specs from <source> to downstream tasks.
COMPLETED_TASK_IDS: <source task id - the input task, or selected source for spec mode>
FLOWCTL: <resolved executable path from the preamble>
SPEC_ID: <spec id>
DOWNSTREAM_TASK_IDS: <comma-separated list from step 4>
DRY_RUN: <true|false>
CROSS_SPEC: <the $CROSS_SPEC value read below — literal "true" or "false", NOT "true|false">
GLOSSARY_JSON_FILE: <absolute glossary.json path from step 5>
DECISIONS_JSON_FILE: <absolute decisions.json path from step 5>
STRATEGY_CONTENT_FILE: <absolute strategy.json path from step 5>
<if DRY_RUN is true>
DRY RUN MODE: Report what would change but do NOT use Edit tool. Only analyze and report drift.
</if>Use Task tool with subagent_type: flow-next:plan-sync.
Note: COMPLETED_TASK_IDS is always provided - for task-mode it's the input task, for spec-mode it's the source task selected in Step 4.
CROSS_SPEC was read from planSync.crossSpec and passed to the agent as the literal string true or false.flow-next:plan-sync agent. A session that edits downstream task specs directly has broken this.--dry-run the agent is told to report drift without using Edit, and Step 7 closes with "No files modified."After agent returns, format output:
Normal mode:
Plan-sync: <source> -> downstream tasks
Scanned: N tasks (<list>)
<agent summary>Dry-run mode:
Plan-sync: <source> -> downstream tasks (DRY RUN)
<agent summary>
No files modified.| Case | Message |
|---|---|
| No ID provided | "Usage: /flow-next:sync <id> [--dry-run]" |
No .flow/ | "No .flow/ found. Run flowctl init first." |
| Unknown ID (does not resolve) | "Unknown ID. Use fn-N-slug (spec) / fn-N-slug.M (task), a tracker handle (wor-17), or legacy fn-N, fn-N-xxx." |
| Task not found | "Task <id> not found. Run flowctl list to see available." |
| Spec not found | "Spec <id> not found. Run flowctl list to see available." |
| No source (spec mode) | "No completed or in-progress tasks to sync from. Complete a task first." |
| No downstream | "No downstream tasks to sync (all done or none exist)." |
planSync.enabled setting is for auto-trigger only; manual always runstodo and blocked tasks© gmickel, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugins/flow-next/skills/flow-next-sync of gmickel/flow-next.
Open the folder on GitHubat commit 09e291e
Flow Next Sync next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Flow Next Sync this skillgmickel/flow-next | 707 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Spec Writergarrytan/gstack | 136k | — | ~14k | Automated safety check: Notes | MIT | |
| Openspec Sync Specstsedio/tsed | 3.1k | 6 repos | ~3.9k | Automated safety check: Pass | MIT | |
| Sync Specsnexu-io/nexu | 3.3k | — | ~1.2k | Automated safety check: Pass | MIT | |
| Specgarden-co/classic-jazz | 2.5k | — | ~1.3k | Automated safety check: Pass | MIT | |
| React Syncvercel/next.js | 143k | — | ~486 | Automated safety check: Pass | MIT |
garrytan/gstack
Converts a vague idea into a precise, executable spec in five phases, files it as an issue and can start an agent on it in a fresh worktree.
tsedio/tsed
Sync delta specs from an OpenSpec change to main specs. An agent skill from tsedio/tsed.
nexu-io/nexu
A skill your agent uses when code changes may have made documentation outdated, when reviewing docs for consistency, or when the user asks to sync or audit documentation.
garden-co/classic-jazz
Implement features using Spec Driven Development (SDD) workflow.
vercel/next.js
Build local React changes in the bundle variants consumed by Next.js, sync them into a local Next.js checkout, and test the resulting integration.
alirezarezvani/claude-skills
A skill your agent uses when the user asks to write specs before code, define acceptance criteria, plan features before implementation, generate tests from specifications, or follow spec-first…
gmickel/flow-next
Resolve PR review feedback. An agent skill from gmickel/flow-next.
gmickel/flow-next
Resolve PR review feedback — fetch unresolved threads, triage, dispatch per-thread resolver agents, validate, commit, reply + resolve via GraphQL.
gmickel/flow-next
Manage .flow/ tasks and specs. An agent skill from gmickel/flow-next.
gmickel/flow-next
Audit .flow/memory/ entries against the current codebase and decide Keep / Update / Consolidate / Replace / Delete / Harden per entry.
gmickel/flow-next
Save the current conversation as a source-tagged flow-next spec, then offer review or editing.
gmickel/flow-next
Decision-map discovery for one oversized unclear idea before capture.
Manually trigger plan-sync to update downstream task specs after implementation drift. Flow Next Sync is an agent skill from gmickel/flow-next. Manually trigger plan-sync to update downstream task specs after implementation drift.
Flow Next Sync fits situations like: plan-sync to update downstream task specs after implementation drift; code changes outpace specs.
Run `npx skills add gmickel/flow-next --skill flow-next-sync -a claude-code`. Or copy the skill folder (plugins/flow-next/skills/flow-next-sync in gmickel/flow-next) into .claude/skills/flow-next-sync in your project. Claude Code loads it when a task matches its description.
Run `npx skills add gmickel/flow-next --skill flow-next-sync -a codex`. Or copy the skill folder (plugins/flow-next/skills/flow-next-sync in gmickel/flow-next) into .agents/skills/flow-next-sync in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add gmickel/flow-next --skill flow-next-sync -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/flow-next-sync, .gemini/skills/flow-next-sync, .github/skills/flow-next-sync and .opencode/skills/flow-next-sync in your project.
Going by SKILL.md and its folder, Flow Next Sync needs the command-line tools its instructions call (git and jq).
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Flow Next Sync is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.4k tokens (SKILL.md is roughly 9.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Flow Next Sync: Spec Writer (garrytan/gstack, 136k stars), Openspec Sync Specs (tsedio/tsed, 3.1k stars), Sync Specs (nexu-io/nexu, 3.3k stars) and Spec (garden-co/classic-jazz, 2.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
gmickel (a GitHub user) maintains it in gmickel/flow-next, which has 707 GitHub stars. The repository holds 43 skills in this directory. The repository was last updated on October 7, 2026.
Source: gmickel/flow-next on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.