/SKILL.md
Fan out a prompt to multiple AI coding agents in parallel and synthesize their responses.
npx skillsauth add skinnyandbald/counselors counselorsInstall 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.
Fan out a prompt to multiple AI coding agents in parallel and synthesize their responses.
Arguments: $ARGUMENTS
If no arguments provided, ask the user what they want reviewed.
Parse $ARGUMENTS to understand what the user wants reviewed. Then auto-gather relevant context:
git diff HEAD and git diff --staged to capture recent workBe selective — don't dump the entire codebase. Pick the most relevant code sections.
Detect the project's key technologies from package.json, CLAUDE.md, tsconfig.json, or config files (if not already clear from Phase 1 context). For up to 5 key libraries/frameworks:
mcp__plugin_compound-engineering_context7__resolve-library-id — get the Context7 library IDmcp__plugin_compound-engineering_context7__query-docs — fetch 2-3 relevant snippets focused on APIs, configuration, and breaking changesLimits:
[library name] (docs not verified) to the REFERENCE DOCUMENTATION block and continue.Build a REFERENCE DOCUMENTATION block with library name + version per entry. This block will be included in the prompt (Phase 3) so reviewers can flag outdated patterns.
Default agents: or-claude-opus, or-gemini-3.1-pro, or-codex-5.4
Use defaults unless the user overrides. If $ARGUMENTS does not contain agent-selection instructions (e.g. "use all agents", "add codex", "only gemini"), skip directly to the confirmation step with the defaults.
If the user requests different agents (in $ARGUMENTS or via follow-up), discover available agents by running via Bash:
counselors ls
Print the full output, then ask the user to pick using AskUserQuestion.
If 4 or fewer agents: Use AskUserQuestion with multiSelect: true, one option per agent.
If more than 4 agents: AskUserQuestion only supports 4 options. Use these fixed options:
Do NOT combine agents into preset groups (e.g. "claude + codex + gemini"). Each option must be a single agent or "All".
MANDATORY: Confirm the selection before continuing. Echo back the exact list you will dispatch to:
Dispatching to: or-claude-opus, or-gemini-3.1-pro, or-codex-5.4
Then ask the user to confirm (e.g. "Look good?") before proceeding to Phase 3. This prevents silent tool omissions. If the user corrects the list, update your selection accordingly.
Generate a slug from the topic (lowercase, hyphens, max 40 chars)
auth-flow-reviewmigration-safety-reviewCreate the output directory via Bash. The directory name MUST always be prefixed with a second-precision UNIX timestamp so runs are lexically sortable and never collide:
./agents/counselors/TIMESTAMP-[slug]
For example: ./agents/counselors/1770676882-auth-flow-review
Mac tip: Generate with
date +%s(seconds since epoch). Millisecond precision is NOT available viadateon macOS without GNU coreutils — usedate +%sfor portable second-precision timestamps.
Write the prompt file using the Write tool to ./agents/counselors/TIMESTAMP-[slug]/prompt.md:
# Review Request
## Question
[User's original prompt/question from $ARGUMENTS]
## Context
### Files Referenced
[Contents of the most relevant files found in Phase 1]
### Recent Changes
[git diff output, if any]
### Related Code
[Related files discovered via search]
## Reference Documentation
[Phase 1b content — current library docs from Context7. If Phase 1b was skipped, omit this section.]
## Instructions
You are providing an independent review. Be critical and thorough.
- Analyze the question in the context provided
- Identify risks, tradeoffs, and blind spots
- Suggest alternatives if you see better approaches
- Be direct and opinionated — don't hedge
- Structure your response with clear headings
- Flag any code patterns that appear outdated vs. the Reference Documentation above
Tell the user before dispatching:
"Dispatching to [N] agents: [list]. This typically takes 2-5 minutes..."
Note the prompt directory path you created (e.g. ./agents/counselors/1772865337-auth-flow-review/). The counselors CLI creates a sibling output directory with a second timestamp suffix.
Run counselors via Bash with the prompt file, passing the user's selected agents:
set -a; for f in ~/.env .env ~/.vibe-tools/.env; do [ -f "$f" ] && source "$f"; done; set +a; counselors run -f ./agents/counselors/[slug]/prompt.md --tools [comma-separated-selections] --json
Why the env sourcing? Claude Code's Bash tool may not inherit API keys (e.g.
OPENAI_API_KEY) from the user's interactive shell. Theset -a+ source pattern loads keys from standard dotenv files portably (works in bash, zsh, sh). Files that don't exist are silently skipped.
Example: --tools claude,codex,gemini
Use Bash timeout: 480000 (8 minutes). Tools run in parallel (not sequentially). Per-tool timeouts in the counselors config control how long each individual tool gets.
Important: Use -f (file mode) so the prompt is sent as-is without wrapping. Use --json to get structured output for parsing.
IMPORTANT: Do NOT rely solely on JSON stdout. The CLI only writes run.json and prints JSON after ALL tools finish. If any tool hangs or the process is killed, stdout will be empty. Always fall back to scanning the filesystem.
Step 1: Find the output directory.
ls -dt ./agents/counselors/[slug]-*/ 2>/dev/null | head -1
If no directory found, the CLI failed before dispatching. Tell the user and suggest counselors doctor. Stop.
Step 2: Check for run.json (happy path).
If run.json exists, parse it:
status: "success" with wordCount > 0 — genuine successstatus: "timeout" — tool hit its timeoutstatus: "error" — tool crashedstatus: "success" with wordCount: 0 — silent failure (read .stderr)Step 3: If NO run.json, scan for individual files.
For each expected tool, check if {tool-id}.md exists and has size > 0. Check {tool-id}.stderr for error details.
Step 4: Report to user.
counselors doctor. Stop.Combine all agent responses into a synthesis:
## Counselors Review
**Agents consulted:** [list of agents that responded]
**Consensus:** [What most agents agree on — key takeaways]
**Disagreements:** [Where they differ, and reasoning behind each position]
**Key Risks:** [Risks or concerns flagged by any agent]
**Blind Spots:** [Things none of the agents addressed that seem important]
**Recommendation:** [Your synthesized recommendation based on all inputs]
---
Reports saved to: [output directory from manifest]
Present this synthesis to the user. Be concise — the individual reports are saved for deep reading.
After presenting the synthesis, ask the user what they'd like to address. Offer the top 2-3 actionable items from the synthesis as options. If the user wants to act on findings, plan the implementation before making changes.
npm install -g counselors)counselors init or counselors addrun.json: CLI was killed before all tools finished. Scan for individual .md files — completed tools will have written their output. This is the most common partial-failure mode.status: "success" but wordCount: 0, or .md file is 0 bytes): Read the .stderr file. Common causes: expired API key, 402 payment required, rate limit..stderr files. Suggest counselors doctor. Do NOT proceed to synthesis.data-ai
Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.
data-ai
Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.
data-ai
OpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.
data-ai
OpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.