smithery/gmickel

flow-next-opencode-sync

Manually trigger plan-sync to update downstream task specs after implementation drift. Use when code changes outpace specs.

Installation

$ npx skills add smithery/gmickel --skill flow-next-opencode-sync

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery/gmickel · top by installs.

npx skills add smithery/gmickel

Browse all from smithery/gmickel

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Declared

Skill metadata

Parsed from SKILL.md frontmatter.

Declared agents opencode

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,114 B
  • docs SUMMARY.md 154 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

Manual Plan-Sync

Manually trigger plan-sync to update downstream task specs.

CRITICAL: flowctl is BUNDLED — NOT installed globally. Always use:

ROOT="$(git rev-parse --show-toplevel)"
OPENCODE_DIR="$ROOT/.opencode"
FLOWCTL="$OPENCODE_DIR/bin/flowctl"

Input

Arguments: $ARGUMENTS Format: <id> [--dry-run]

  • <id> - task ID (fn-N.M) or epic ID (fn-N)
  • --dry-run - show changes without writing

Workflow

Step 1: Parse Arguments

ROOT="$(git rev-parse --show-toplevel)"
OPENCODE_DIR="$ROOT/.opencode"
FLOWCTL="$OPENCODE_DIR/bin/flowctl"

Parse $ARGUMENTS for:

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

Get cross-epic config (defaults to false):

CROSS_EPIC="$($FLOWCTL config get planSync.crossEpic --json 2>/dev/null | jq -r '.value // empty')"
if [[ -z "$CROSS_EPIC" || "$CROSS_EPIC" == "null" ]]; then
  CROSS_EPIC="false"
fi

Validate ID format:

  • Must start with fn-
  • If no ID: "Usage: /flow-next:sync <id> [--dry-run]"
  • If invalid: "Invalid ID format. Use fn-N (epic) or fn-N.M (task)."

Detect ID type:

  • Contains . (e.g., fn-1.2) → task ID
  • No . (e.g., fn-1) → epic ID

Step 2: Validate Environment

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

$FLOWCTL show <ID> --json

If fails:

  • Task: "Task <id> not found. Run flowctl list to see available."
  • Epic: "Epic <id> not found. Run flowctl epics to see available."

Stop on failure.

Step 4: Find Downstream Tasks

For task ID input:

# Extract epic from task ID
EPIC=$(echo "<task-id>" | sed 's/\.[0-9]*$//')

# Get all tasks in epic
$FLOWCTL tasks --epic "$EPIC" --json

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

For epic ID input:

$FLOWCTL tasks --epic "<epic-id>" --json
  1. Find source task (agent requires COMPLETEDTASKID):

- Prefer most recently updated task with status: done - Else: most recently updated with status: in_progress - Else: error "No completed or in-progress tasks to sync from."

  1. Filter remaining to status: todo or status: blocked (downstream).

If no downstream tasks:

No downstream tasks to sync (all done or none exist).

Stop (success).

Step 5: Spawn Plan-Sync Agent

Build context and spawn via Task tool:

Sync task specs from <source> to downstream tasks.

COMPLETED_TASK_ID: <source task id>
FLOWCTL: $OPENCODE_DIR/bin/flowctl
EPIC_ID: <epic id>
DOWNSTREAM_TASK_IDS: <comma-separated list>
DRY_RUN: <true|false>
CROSS_EPIC: <true|false>

<if DRY_RUN>
DRY RUN MODE: Report changes but do NOT edit files.
</if>

Use Task tool with subagent_type: flow-next:plan-sync

Step 6: Report Results

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

Case Message
No ID "Usage: /flow-next:sync <id> [--dry-run]"
No .flow/ "No .flow/ found. Run flowctl init first."
Invalid format "Invalid ID format. Use fn-N (epic) or fn-N.M (task)."
Task not found "Task <id> not found. Run flowctl list to see available."
Epic not found "Epic <id> not found. Run flowctl epics to see available."
No source "No completed or in-progress tasks to sync from."
No downstream "No downstream tasks to sync (all done or none exist)."

Rules

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