/flow-define
Multi-AI requirements scoping using available external providers (Double Diamond Define phase). Priority triggers: octo define, octo scope, co-define, co-scope. DO NOT use for implementation, research, review/validation, or built-in commands.
Claude Code
$ npx -y skills add nyldn/claude-octopus --skill flow-define --agent claude-code
Codex
$ npx skills add nyldn/claude-octopus --skill flow-define -a codex -y
Cursor
$ npx skills add nyldn/claude-octopus --skill flow-define -a cursor -y
Gemini CLI
$ npx skills add nyldn/claude-octopus --skill flow-define -a gemini-cli -y
GitHub Copilot
$ npx skills add nyldn/claude-octopus --skill flow-define -a github-copilot -y
OpenCode
$ npx skills add nyldn/claude-octopus --skill flow-define -a opencode -y
Windsurf
$ npx skills add nyldn/claude-octopus --skill flow-define -a windsurf -y
SKILL.md
flow-define.SKILL.mdname: flow-define
description: "Multi-AI requirements scoping using available external providers (Double Diamond Define phase). Priority triggers: octo define, octo scope, co-define, co-scope. DO NOT use for implementation, research, review/validation, or built-in commands."
disable-model-invocation: true
> **Host: Codex CLI** — This skill was designed for Claude Code and adapted for Codex. > Cross-reference commands use installed skill names in Codex rather than `/octo:*` slash commands. > Use the active Codex shell and subagent tools. Do not claim a provider, model, or host subagent is available until the current session exposes it. > For host tool equivalents, see `skills/blocks/codex-host-adapter.md`.
{{PREAMBLE}}
Load `skills/blocks/engineering-method-selection.md` from the installed plugin and apply only the methods relevant to this task. Preserve this entry point's execution contract and output format. Read referenced skills as instructions; do not invoke the current command recursively or add provider calls from a seat.
Shared definitions
Load the project's existing glossary and decisions when they apply. If none exists, use `skills/blocks/domain-modeling.md` and add a short definitions section to the current design artifact. Do not create a parallel context or memory file. Keep installation, authentication, entitlement, readiness, billing, quota, seat, contribution, and vote distinct.
Pre-Definition: State Check
Before starting definition: 1. Read `.octo/STATE.md` to verify Discover phase complete 2. Update STATE.md:
- current_phase: 2
- phase_position: "Definition"
- status: "in_progress"
# Verify Discover phase is complete
if [[ -f ".octo/STATE.md" ]]; then
discover_status=$("${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}/scripts/octo-state.sh" get_phase_status 1)
if [[ "$discover_status" != "complete" ]]; then
echo "⚠️ Warning: Discover phase not marked complete. Consider running discovery first."
fi
fi
# Update state for Definition phase
"${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}/scripts/octo-state.sh" update_state \
--phase 2 \
--position "Definition" \
--status "in_progress"Execution Contract
This skill uses **ENFORCED execution mode**. You MUST follow this exact sequence.
STEP 1: Display Visual Indicators
**MANDATORY: You MUST use the native shell command tool to run this provider check BEFORE displaying the banner. Do NOT skip it. Do NOT assume availability.**
provider_check_output=$(bash "${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}/scripts/helpers/check-providers.sh")
provider_status_lines=$(printf '%s\n' "$provider_check_output" | awk '
/^PROVIDER_CHECK_START$/ { capture=1; next }
/^PROVIDER_CHECK_END$/ { capture=0 }
capture && /^[a-z0-9-]+:(available|missing|degraded)$/ { print }
')
if [[ -z "$provider_status_lines" ]]; then
echo "Provider availability check returned no usable status lines."
exit 1
fi
# Exclude providers intentionally disabled by environment, session, or global
# allowlist policy; show every allowed provider, including missing/degraded.
source "${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}/scripts/lib/provider-allowlist.sh"
provider_availability=""
available_provider_count=0
while IFS=: read -r provider status; do
octo_provider_allowed "$provider" || continue
case "$status" in
available)
provider_availability="${provider_availability}🟢 ${provider}: Available ✓"$'\n'
available_provider_count=$((available_provider_count + 1))
;;
degraded)
provider_availability="${provider_availability}🟠 ${provider}: Degraded ⚠"$'\n'
;;
missing)
provider_availability="${provider_availability}🔴 ${provider}: Missing/unavailable ✗"$'\n'
;;
esac
done <<< "$provider_status_lines"
if [[ "$available_provider_count" -eq 0 ]]; then
printf '%s' "$provider_availability"
echo "No external provider is available. Run /octo:setup and retry."
exit 1
fi
# Task status for the banner's Tasks line, if the session has one.
task_status=$("${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}/scripts/orchestrate.sh" get-task-status 2>/dev/null || echo "")List every provider the check reports, not only Claude. A banner showing one seat when several ran misrepresents what the user is paying for.
If `OCTO_ALLOWED_PROVIDERS` is set, treat it as the source of truth for which providers may participate. Providers filtered out by that allowlist are intentionally reported as unavailable; do not invoke or recommend them in the workflow.
**Display this banner BEFORE orchestrate.sh execution:**
🐙 **CLAUDE OCTOPUS ACTIVATED** - Multi-provider definition mode
🎯 Define Phase: [Brief description of what you're defining/scoping]
📋 Session: ${CLAUDE_SESSION_ID}
📝 Tasks: ${task_status}
Provider Availability:
${provider_availability}
🔵 Claude: Available ✓ - Consensus building and synthesis
💰 Estimated Cost: 0.01-0.05 USD
⏱️ Estimated Time: 2-5 minutes**DO NOT PROCEED TO STEP 2 until banner displayed.** The banner shows users which providers will run and what costs they'll incur — starting API calls without this visibility violates cost transparency.
STEP 2: Read Prior State
**Before executing the workflow, read any prior context:**
# Initialize state if needed
"${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}/scripts/state-manager.sh" init_state
# Set current workflow
"${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}/scripts/state-manager.sh" set_current_workflow "flow-define" "define"
# Get prior decisions (if any)
prior_decisions=$("${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}/scripts/state-manager.sh" get_decisions "all")
# Get context from discover phase
discover_context=Read more
name: flow-define description: "Multi-AI requirements scoping using available external providers (Double Diamond Define phase). Priority triggers: octo define, octo scope, co-define, co-scope. DO NOT use for implementation, research, review/validation, or built-in commands." disable-model-invocation: true
> **Host: Codex CLI** — This skill was designed for Claude Code and adapted for Codex. > Cross-reference commands use installed skill names in Codex rather than `/octo:*` slash commands. > Use the active Codex shell and subagent tools. Do not claim a provider, model, or host subagent is available until the current session exposes it. > For host tool equivalents, see `skills/blocks/codex-host-adapter.md`.
{{PREAMBLE}}
Load `skills/blocks/engineering-method-selection.md` from the installed plugin and apply only the methods relevant to this task. Preserve this entry point's execution contract and output format. Read referenced skills as instructions; do not invoke the current command recursively or add provider calls from a seat.
Shared definitions
Load the project's existing glossary and decisions when they apply. If none exists, use `skills/blocks/domain-modeling.md` and add a short definitions section to the current design artifact. Do not create a parallel context or memory file. Keep installation, authentication, entitlement, readiness, billing, quota, seat, contribution, and vote distinct.
Pre-Definition: State Check
Before starting definition: 1. Read `.octo/STATE.md` to verify Discover phase complete 2. Update STATE.md:
- current_phase: 2
- phase_position: "Definition"
- status: "in_progress"
# Verify Discover phase is complete
if [[ -f ".octo/STATE.md" ]]; then
discover_status=$("${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}/scripts/octo-state.sh" get_phase_status 1)
if [[ "$discover_status" != "complete" ]]; then
echo "⚠️ Warning: Discover phase not marked complete. Consider running discovery first."
fi
fi
# Update state for Definition phase
"${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}/scripts/octo-state.sh" update_state \
--phase 2 \
--position "Definition" \
--status "in_progress"Execution Contract
This skill uses **ENFORCED execution mode**. You MUST follow this exact sequence.
STEP 1: Display Visual Indicators
**MANDATORY: You MUST use the native shell command tool to run this provider check BEFORE displaying the banner. Do NOT skip it. Do NOT assume availability.**
provider_check_output=$(bash "${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}/scripts/helpers/check-providers.sh")
provider_status_lines=$(printf '%s\n' "$provider_check_output" | awk '
/^PROVIDER_CHECK_START$/ { capture=1; next }
/^PROVIDER_CHECK_END$/ { capture=0 }
capture && /^[a-z0-9-]+:(available|missing|degraded)$/ { print }
')
if [[ -z "$provider_status_lines" ]]; then
echo "Provider availability check returned no usable status lines."
exit 1
fi
# Exclude providers intentionally disabled by environment, session, or global
# allowlist policy; show every allowed provider, including missing/degraded.
source "${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}/scripts/lib/provider-allowlist.sh"
provider_availability=""
available_provider_count=0
while IFS=: read -r provider status; do
octo_provider_allowed "$provider" || continue
case "$status" in
available)
provider_availability="${provider_availability}🟢 ${provider}: Available ✓"$'\n'
available_provider_count=$((available_provider_count + 1))
;;
degraded)
provider_availability="${provider_availability}🟠 ${provider}: Degraded ⚠"$'\n'
;;
missing)
provider_availability="${provider_availability}🔴 ${provider}: Missing/unavailable ✗"$'\n'
;;
esac
done <<< "$provider_status_lines"
if [[ "$available_provider_count" -eq 0 ]]; then
printf '%s' "$provider_availability"
echo "No external provider is available. Run /octo:setup and retry."
exit 1
fi
# Task status for the banner's Tasks line, if the session has one.
task_status=$("${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}/scripts/orchestrate.sh" get-task-status 2>/dev/null || echo "")List every provider the check reports, not only Claude. A banner showing one seat when several ran misrepresents what the user is paying for.
If `OCTO_ALLOWED_PROVIDERS` is set, treat it as the source of truth for which providers may participate. Providers filtered out by that allowlist are intentionally reported as unavailable; do not invoke or recommend them in the workflow.
**Display this banner BEFORE orchestrate.sh execution:**
🐙 **CLAUDE OCTOPUS ACTIVATED** - Multi-provider definition mode
🎯 Define Phase: [Brief description of what you're defining/scoping]
📋 Session: ${CLAUDE_SESSION_ID}
📝 Tasks: ${task_status}
Provider Availability:
${provider_availability}
🔵 Claude: Available ✓ - Consensus building and synthesis
💰 Estimated Cost: 0.01-0.05 USD
⏱️ Estimated Time: 2-5 minutes**DO NOT PROCEED TO STEP 2 until banner displayed.** The banner shows users which providers will run and what costs they'll incur — starting API calls without this visibility violates cost transparency.
STEP 2: Read Prior State
**Before executing the workflow, read any prior context:**
# Initialize state if needed
"${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}/scripts/state-manager.sh" init_state
# Set current workflow
"${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}/scripts/state-manager.sh" set_current_workflow "flow-define" "define"
# Get prior decisions (if any)
prior_decisions=$("${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}/scripts/state-manager.sh" get_decisions "all")
# Get context from discover phase
discover_context=Every AI model has blind spots. Claude Octopus supports twelve external provider integrations — Codex, Antigravity CLI, Copilot, Qwen, Ollama, Perplexity, OpenRouter, OrcaRouter, OpenCode, Cursor CLI, Grok, and Kimi Code — alongside the built-in Claude Code
Other skills on octo.
More skills from other plugins.
browser-use
Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…
agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…
Questions about flow-define.
- Which coding agents can use flow-define?
- flow-define installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

