plugins/devflow/skills/handoff/SKILL.md
Hand off an interactive or shell-flow command to the user's shell so the session keeps flowing. Use proactively when a command will need a TTY (doctl auth init, gcloud auth login, gh auth login, op signin, npm login) OR the user's interactive shell environment (nvm use, mise use, conda activate, direnv, pyenv shell). When the devflow-watch daemon is running, the handoff is fully non-disruptive — Claude continues executing while the daemon runs the command and returns the result on the next turn. Triggers on: "auth init", "log in to", "interactive command", "needs my password", "I need to paste a token", "needs my shell environment", "nvm/mise/conda activate"
npx skillsauth add ao-cyber-systems/devflow-claude handoffInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this when:
gate-interactive.js (PreToolUse hook)Out of scope: commands that can run non-interactively via flags or env vars (e.g. gh auth login --with-token < tokenfile). Prefer the non-interactive form when available.
</objective>
<execution_context> $ARGUMENTS </execution_context>
<process> <step name="detect_watcher_mode"> This skill behaves differently based on whether the `devflow-watch` daemon is running:node ~/.claude/devflow/bin/devflow-watch.cjs status
The status JSON has a running: true|false field. Branch on that for the next steps.
running: true → Approach B (non-disruptive): write pending record, continue with other work, expect result on next turn.running: false → Approach A (paste-driven): write pending record AND instruct user to paste ! cmd.
</step>
node ~/.claude/devflow/bin/df-tools.cjs handoff create "$ARGUMENTS"
The command returns JSON with {id, path, record}. Capture the id.
If df-tools is unavailable, fall back to writing the record manually:
mkdir -p .devflow-handoff/pending
id="h-$(date +%s)-$RANDOM"
cat > ".devflow-handoff/pending/${id}.json" <<EOF
{"id":"${id}","cmd":"$ARGUMENTS","cwd":"$(pwd)","status":"pending","source":"hook","created_at":"$(date -u +%Y-%m-%dT%H:%M:%SZ)"}
EOF
echo "$id"
</step>
<step name="branch_a_paste">
**ONLY when watcher is NOT running.**
Print the user-facing instruction in a single short message. Use this exact shape so the user can copy with one click:
I need to run this in your shell. Please paste:
! $ARGUMENTS
(The `!` prefix runs it in your shell — output returns inline and I'll continue from there. Tip: run `devflow-watch start` once to skip this paste step in future.)
Do not retry the command via the Bash tool. Wait for the user's next message containing the command's output. </step>
<step name="branch_b_continue"> **ONLY when watcher IS running.**The daemon will pick up the pending record from .devflow-handoff/pending/<id>.json, run it in the user's interactive shell, write the result to .devflow-handoff/done/<id>.json, and the route-results.js UserPromptSubmit hook will inject the result into your next turn as additionalContext.
What you should do RIGHT NOW:
"Queued \gh auth login` to the watcher (handoff id: h-abc123). Continuing with other work."`additionalContext from the route-results hook. Pick up whatever depended on this command at that point.
</step>
additionalContext from the route-results hook, marked under ## Deferred command results. Read the stdout/stderr/exit_code, validate success, and continue the deferred work.! cmd). Same continuation logic.In either case:
doctl auth init, the next step would be doctl account get or doctl apps list)exit_code != 0) or was cancelled, ask the user what they'd like to do — do not silently retry<success_criteria>
.devflow-handoff/pending/<id>.jsondevelopment
Orchestrate a multi-step DevFlow workflow by chaining skills. Use when the user wants to invoke a sequence of skills as one ask (e.g., "build and sync to github", "research, plan, then build", "ship and announce"). Triggers on: "ship X to Y", "build and X", "plan and X", "X then Y", "in one go", "as a chain", "all in sequence", "chain", "ship-and-sync", "research-plan-build"
testing
Stamp a new polyglot monorepo using the AO Cyber Systems scaffold — root CLAUDE.md with Layout table, per-area CLAUDE.md, path-filtered CI workflows, comprehensive .gitignore, and the no-binaries pre-commit hook config. Use this for new product monorepos (the 5-monorepo architecture: aodex, aosentry, eden-biz, politihub, aohealth, plus future ones). Triggers on: "new monorepo", "scaffold a monorepo", "set up a monorepo", "create a new product monorepo".
development
Validate that a monorepo follows the AO Cyber Systems layout convention — root CLAUDE.md declares every area, every area has its own CLAUDE.md, no compiled binaries are tracked in git. Reads the root `CLAUDE.md` Layout table, walks the working tree, and reports drift in a single Markdown summary. Standalone — works on any repo. Triggers on: "audit monorepo layout", "monorepo doctor", "is this monorepo healthy?", "check the layout", "find binaries in the repo".
development
Build, review, or visually inspect web pages using Hugo templates, Tailwind CSS, and the project's brand design system. Use when the user wants to create new pages, design components, audit existing UI, review frontend code, or visually test rendered pages. Triggers on: "build the UI", "design this page", "create a page", "review the frontend", "audit the UI", "check UI consistency", "make it look good", "frontend review", "visual review", "check how it looks", "inspect the page"