Agent skill

Flow Next Sync

by gmickel in gmickel/flow-next

Manually trigger plan-sync to update downstream task specs after implementation drift.

MITAuto-check passed

Install Flow Next Sync

skills CLI
$ npx skills add gmickel/flow-next --skill flow-next-sync -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install gmickel/flow-next flow-next-sync --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
flow-next-sync
GitHub stars
707
Token cost
~2.4k tokens
SKILL.md length
902 words
Files
1
Skills in repo
43
Repo updated
First seen
Licence
MIT

At a glance

Manually trigger plan-sync to update downstream task specs after implementation drift.

  • Works in 7 steps: Parse Arguments → Validate Environment → Validate ID Exists → …
  • Plan-sync to update downstream task specs after implementation drift
  • SKILL.md covers Preamble, Input, Workflow and Error Messages, plus 1 more section
  • Calls git and jq

What it does

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.

When your agent uses it

  • Plan-sync to update downstream task specs after implementation drift
  • Code changes outpace specs

Example prompts

  • “/flow-next-sync”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Parse Arguments
  2. Validate Environment
  3. Validate ID Exists
  4. Find Downstream Tasks
  5. Gather glossary + decisions + strategy context
  6. Spawn Plan-Sync Agent
  7. Report Results

What it can do on your machine

Read from SKILL.md and the folder at commit 09e291e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • jq

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~35
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from gmickel/flow-next at commit 09e291e, republished under its MIT licence (© gmickel). 902 words, ~2,352 tokens.

Download SKILL.mdSave it as .claude/skills/flow-next-sync/SKILL.md (or your agent's skills folder).
name
flow-next-sync
description
Manually trigger plan-sync to update downstream task specs after implementation drift. Use when code changes outpace specs.
user-invocable
false

Manual Plan-Sync

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.

Preamble

CRITICAL: flowctl is BUNDLED - NOT installed globally. Define once; subsequent blocks use $FLOWCTL:

bash
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"

Input

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 writing

Workflow

Step 1: Parse Arguments
bash
REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"

Parse $ARGUMENTS for:

  • First positional arg = ID
  • --dry-run flag = DRY_RUN (true/false)

Validate ID first (handle-recognition rule):

  • The id is resolved by 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.
  • If no ID provided: "Usage: /flow-next:sync <id> [--dry-run]"
  • If the arg does not resolve via 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):

  • Contains . (e.g., fn-1.2, fn-1-add-oauth.2, wor-17.2) -> task ID
  • No . (e.g., fn-1, fn-1-add-oauth, wor-17) -> spec ID
Step 2: Validate Environment
bash
test -d .flow || { echo "No .flow/ found. Run flowctl init first."; exit 1; }

If .flow/ missing, output error and stop.

Step 3: Validate ID Exists
bash
$FLOWCTL show <ID> --json

If command fails:

  • For task ID: "Task <id> not found. Run flowctl list to see available."
  • For spec ID: "Spec <id> not found. Run flowctl specs to see available."

Stop on failure.

Step 4: Find Downstream Tasks

For task ID input:

bash
# 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" --json

Filter to status: todo or status: blocked. Exclude the source task itself.

For spec ID input:

bash
$FLOWCTL tasks --spec "<spec-id>" --json
  1. First, find a source task to anchor drift detection (agent requires COMPLETED_TASK_IDS):

    • Prefer most recently updated task with status: done
    • Else: most recently updated task with status: in_progress
    • Else: error "No completed or in-progress tasks to sync from. Complete a task first."
  2. Then 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 when
  • A source task is anchored — the input task in task mode, or the most recently updated 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.
Step 5: Gather glossary + decisions + strategy context

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.

bash
# 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.

Show full SKILL.md (332 more words)Show less
Done when
  • All three files exist, preserving the empty defaults on failure.
  • The dispatch carries file paths, never embedded glossary, decision, or strategy JSON.
Step 6: Spawn Plan-Sync Agent

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:

bash
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.

Done when
  • CROSS_SPEC was read from planSync.crossSpec and passed to the agent as the literal string true or false.
  • The downstream task-spec edits are made by the spawned flow-next:plan-sync agent. A session that edits downstream task specs directly has broken this.
  • Under --dry-run the agent is told to report drift without using Edit, and Step 7 closes with "No files modified."
Step 7: Report Results

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.

Error Messages

CaseMessage
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)."

Rules

  • Ignores config - planSync.enabled setting is for auto-trigger only; manual always runs
  • Any source status - source task can be todo, in_progress, done, or blocked
  • Includes blocked - downstream set includes both todo and blocked tasks
  • Reuses agent - spawns existing plan-sync agent, no duplication

© gmickel, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in plugins/flow-next/skills/flow-next-sync of gmickel/flow-next.

Open the folder on GitHubat commit 09e291e

Compare with similar skills

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.

Flow Next Sync compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Flow Next Sync this skillgmickel/flow-next707—~2.4kAutomated safety check: PassMIT
Spec Writergarrytan/gstack136k—~14kAutomated safety check: NotesMIT
Openspec Sync Specstsedio/tsed3.1k6 repos~3.9kAutomated safety check: PassMIT
Sync Specsnexu-io/nexu3.3k—~1.2kAutomated safety check: PassMIT
Specgarden-co/classic-jazz2.5k—~1.3kAutomated safety check: PassMIT
React Syncvercel/next.js143k—~486Automated safety check: PassMIT

Similar skills

  • 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.

    136k GitHub stars~14k tokensUpdated yesterday
    DevelopmentAuto-check: notes
  • Sync delta specs from an OpenSpec change to main specs. An agent skill from tsedio/tsed.

    3.1k GitHub starsUsed in 6 repos~3.9k tokens
    Auto-check passed
  • Sync Specs

    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.

    3.3k GitHub stars~1.2k tokensUpdated 5 mo ago
    DevelopmentAuto-check passed
  • Spec

    garden-co/classic-jazz

    Implement features using Spec Driven Development (SDD) workflow.

    2.5k GitHub stars~1.3k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • React Sync

    vercel/next.js

    Official

    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.

    143k GitHub stars~486 tokensUpdated yesterday
    Auto-check passed
  • Spec Driven Workflow

    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…

    28k GitHub stars~3.9k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed

More from gmickel/flow-next

All 43 skills in this repo
  • Flow Next Resolve PR

    gmickel/flow-next

    Resolve PR review feedback. An agent skill from gmickel/flow-next.

    707 GitHub stars~1.1k tokensUpdated yesterday
    Auto-check passed
  • Flow Next Resolve PR

    gmickel/flow-next

    Resolve PR review feedback — fetch unresolved threads, triage, dispatch per-thread resolver agents, validate, commit, reply + resolve via GraphQL.

    707 GitHub stars~1.1k tokensUpdated yesterday
    Auto-check passed
  • Flow Next

    gmickel/flow-next

    Manage .flow/ tasks and specs. An agent skill from gmickel/flow-next.

    707 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed
  • Flow Next Audit

    gmickel/flow-next

    Audit .flow/memory/ entries against the current codebase and decide Keep / Update / Consolidate / Replace / Delete / Harden per entry.

    707 GitHub stars~3.1k tokensUpdated yesterday
    Auto-check: notes
  • Flow Next Capture

    gmickel/flow-next

    Save the current conversation as a source-tagged flow-next spec, then offer review or editing.

    707 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check: notes
  • Flow Next Chart

    gmickel/flow-next

    Decision-map discovery for one oversized unclear idea before capture.

    707 GitHub stars~2.7k tokensUpdated yesterday
    Auto-check: notes

Questions about Flow Next Sync

What does Flow Next Sync do?

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.

When should I use Flow Next Sync?

Flow Next Sync fits situations like: plan-sync to update downstream task specs after implementation drift; code changes outpace specs.

How do I install Flow Next Sync in Claude Code?

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.

How do I install Flow Next Sync in Codex?

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.

Can I use Flow Next Sync in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Flow Next Sync need to run?

Going by SKILL.md and its folder, Flow Next Sync needs the command-line tools its instructions call (git and jq).

Does Flow Next Sync access the network?

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.

Is Flow Next Sync safe to install?

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.

What licence does Flow Next Sync use?

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.

How many tokens does Flow Next Sync use?

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.

What are the alternatives to Flow Next Sync?

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.

Who maintains Flow Next Sync?

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.