{"skill":{"slug":"saas-idea-scout","displayName":"SaaS Idea Scout","summary":"Chat-driven SaaS idea discovery and validation pipeline. Generates 8 idea seeds conversationally, then fans out 24 sub-agents across 3 phases — discovery, cr...","description":"---\nname: saas-idea-scout\ndescription: >\n  Chat-driven SaaS idea discovery and validation pipeline. Generates 8 idea\n  seeds conversationally, then fans out 24 sub-agents across 3 phases —\n  discovery, critique, and evaluation — to produce scored, ranked PRDs with\n  adversarial validation and contextual founder-aware ranking. Key features:\n  parallel agentic swarm with self-healing, adversarial critique gauntlet,\n  separation of concerns across research/critique/evaluation roles, cron\n  watchdog for auto-recovery, and 10-dimension scoring with holistic\n  founder-contextual judgment. Use for first-pass validation of product\n  opportunities, stress-testing startup ideas, or surfacing promising\n  directions before committing to deeper research.\nmetadata:\n  openclaw:\n    emoji: \"🔭\"\n    os: [\"linux\"]\n---\n\n# SaaS Idea Scout\n\n## What This Is\n\nA chat-driven pipeline for discovering and stress-testing SaaS product ideas. You talk through your domain and constraints, the agent generates 8 idea seeds, then fans out 24 sub-agents across 3 phases — discovery, critique, and evaluation — to produce scored, ranked PRDs with adversarial validation.\n\n**Key features:**\n- **Adversarial critique gauntlet** — Every idea is championed by a research agent, attacked by a critic, and objectively scored by an evaluator, all independently.\n- **Parallel agentic swarm** — 24 sub-agents run concurrently in batches of 4, completing a full pipeline in ~30-45 minutes of wall time.\n- **Self-healing** — A cron watchdog monitors agent health and a retry escalation ladder recovers from failures automatically.\n- **Separation of concerns** — Discovery, critique, and evaluation are handled by independent agents with distinct roles and instructions. No role confusion.\n- **Contextual founder ranking** — Phase 5 applies founder-profile awareness to rank ideas by what matters for YOUR specific situation.\n- **10-dimension scoring rubric** — Structured, transparent evaluation with dimensional scores and narrative synthesis.\n\n- **5 phases:** Ideation → Discovery → Critique → Evaluation → Judgement\n- **8 ideas → 24 sub-agents → contextually ranked top 3**\n- **~30-45 minutes wall time**\n- **No agent config. No `openclaw.json` changes.** Installs and runs through your chat session.\n\n## When To Use\n\n- \"Find SaaS opportunities in [domain]\"\n- \"Quick validation of business ideas in [industry]\"\n- \"Surface promising product directions before deep research\"\n- \"I have a problem space — what products could solve it?\"\n- \"Stress-test these startup ideas\"\n\n## Prerequisites\n\nNone. Install and run. Works with any OpenClaw setup using the default model. For stronger results, use a capable model — a stronger model with higher thinking produces better research and deeper critiques.\n\n## How It Works\n\n```\nChat Agent (orchestrator + your conversation partner)\n  │\n  ├─ PHASE 1: IDEATION (conversational, ~5 min)\n  │     └─ 4-5 questions → 8 idea seeds → you confirm\n  │         └─ Creates .scoutrc on first run (model/thinking preference)\n  │\n  ├─ PHASE 2: DISCOVERY (8 sub-agents, 2 batches of 4, ~10 min)\n  │     ├─ Each agent researches one idea, writes a PRD\n  │     └─ Verification: file size + section header checks\n  │\n  ├─ PHASE 3: CRITIQUE (8 sub-agents, 2 batches of 4, ~8 min)\n  │     ├─ Each agent reads one PRD, conducts adversarial research, writes critique\n  │     └─ Verification: section header checks → orchestrator merges into dossiers\n  │\n  ├─ PHASE 4: EVALUATION (8 sub-agents, 2 batches of 4, ~8 min)\n  │     ├─ Each agent reads PRD + critique, writes holistic evaluation with scores\n  │     └─ Verification: section headers + integrity checks → orchestrator merges\n  │\n  └─ PHASE 5: JUDGEMENT (in-session, ~5 min)\n        ├─ Read all 8 assembled dossiers (PRD + critique + evaluation per idea)\n        └─ Contextual holistic ranking → top 3 with narrative justification\n```\n\nA cron watchdog spans all spawn phases (Discovery through Evaluation). It is created after Phase 1 and removed after Phase 4 completes. On every wake (completion event or watchdog), the orchestrator runs its verification procedure from its own context — it knows which phase and batch it's in.\n\n---\n\n## Pipeline Operations\n\n### Batch-Verify Pattern\n\nAll spawn phases (2-4) follow the same pattern:\n\n1. Send progress message for the batch\n2. Spawn up to 4 sub-agents simultaneously (max 4 concurrent, no overlap)\n3. `sessions_yield()` to wait for completion or watchdog wake\n4. **On every wake**, verify expected output files exist using exec commands\n5. If files are missing: identify which agents, re-spawn individually, yield again\n6. Repeat until all files for the current batch exist\n7. Send batch-complete progress, proceed to next batch\n\nNever proceed to the next batch until ALL files from the current batch are verified.\n\n### Yield and Watchdog Interaction\n\nWhen the orchestrator yields, it wakes for either:\n1. **Sub-agent completion events** — agents finished their work\n2. **Cron watchdog fires** — the 7-minute interval elapsed\n\nOn EVERY wake (regardless of trigger), unconditionally verify output files. Never assume completion events are authoritative — they can be delayed or dropped.\n\nIf all expected files for the current batch exist → proceed.\nIf files are missing but agents are still running → yield again.\nIf files are missing and agents are done/stuck → intervene (see re-spawn escalation below).\n\n### Verification Commands\n\nVerification uses section-header grep and file size thresholds, following the pattern established in `saas-idea-discovery/instructions/verify_phase.sh`.\n\n**After Phase 2 (Discovery) — verify all 8 PRDs:**\n```bash\nfor f in <run_dir>/pool/0[1-8]_prd.md; do\n  sz=$(stat -c%s \"$f\" 2>/dev/null || stat -f%z \"$f\")\n  [ \"$sz\" -gt 2048 ] || { echo \"FAIL: $(basename $f) too small ($sz bytes)\"; continue; }\n  grep -q \"^### Problem\" \"$f\" && grep -q \"^### Rough Market Size\" \"$f\" \\\n    && grep -q \"^### Initial Score\" \"$f\" \\\n    && echo \"OK: $(basename $f)\" \\\n    || echo \"FAIL: $(basename $f) missing required sections\"\ndone\n```\n\n**After Phase 3 (Critique) — verify all 8 critiques:**\n```bash\nfor f in <run_dir>/pool/0[1-8]_critique.md; do\n  sz=$(stat -c%s \"$f\" 2>/dev/null || stat -f%z \"$f\")\n  [ \"$sz\" -gt 512 ] || { echo \"FAIL: $(basename $f) too small ($sz bytes)\"; continue; }\n  grep -q \"^### Market & Competitive Risks\" \"$f\" \\\n    && grep -q \"^### Blind Spots\" \"$f\" \\\n    && echo \"OK: $(basename $f)\" \\\n    || echo \"FAIL: $(basename $f) missing required sections\"\ndone\n```\n\n**After Phase 3, assemble dossiers from PRDs + critiques:**\n```bash\nfor i in 01 02 03 04 05 06 07 08; do\n  cat \"<run_dir>/pool/${i}_prd.md\" \\\n      \"<run_dir>/pool/${i}_critique.md\" \\\n    > \"<run_dir>/pool/${i}_dossier.md\"\ndone\n```\n\n**After Phase 4 (Evaluation) — verify all 8 evaluations:**\n```bash\nfor f in <run_dir>/pool/0[1-8]_evaluation.md; do\n  sz=$(stat -c%s \"$f\" 2>/dev/null || stat -f%z \"$f\")\n  [ \"$sz\" -gt 1024 ] || { echo \"FAIL: $(basename $f) too small ($sz bytes)\"; continue; }\n  grep -q \"^## Evaluation:\" \"$f\" \\\n    && grep -q \"^### Dimension Scores\" \"$f\" \\\n    && grep -q \"^### Total Score:\" \"$f\" \\\n    && grep -q \"^### Verdict:\" \"$f\" \\\n    && echo \"OK: $(basename $f)\" \\\n    || echo \"FAIL: $(basename $f) missing required sections\"\ndone\n\n# Integrity check: Total Score must be within 0-100\nfor f in <run_dir>/pool/0[1-8]_evaluation.md; do\n  score=$(grep \"^### Total Score:\" \"$f\" | grep -oE '[0-9]+' | head -1)\n  if [ -z \"$score\" ] || [ \"$score\" -lt 0 ] || [ \"$score\" -gt 100 ]; then\n    echo \"WARNING: $(basename $f) has invalid Total Score: $score\"\n  fi\ndone\n```\n\n**After Phase 4, assemble final dossiers (PRD + critique + evaluation):**\n```bash\nfor i in 01 02 03 04 05 06 07 08; do\n  cat \"<run_dir>/pool/${i}_prd.md\" \\\n      \"<run_dir>/pool/${i}_critique.md\" \\\n      \"<run_dir>/pool/${i}_evaluation.md\" \\\n    > \"<run_dir>/pool/${i}_dossier.md\"\ndone\n```\n\n**Dossier verification:**\n```bash\nfor f in <run_dir>/pool/0[1-8]_dossier.md; do\n  grep -q \"^### Problem\" \"$f\" \\\n    && grep -q \"^### Market & Competitive Risks\" \"$f\" \\\n    && grep -q \"^## Evaluation:\" \"$f\" \\\n    && echo \"OK: $(basename $f)\" \\\n    || echo \"FAIL: $(basename $f) dossier incomplete\"\ndone\n```\n\n### Progress Message Format\n\nBatch boundary:\n```\n📝 Phase N: <phase name> — <brief status>\n   Batch X/Y: <idea 1 slug>, <idea 2 slug>, <idea 3 slug>, <idea 4 slug>.\n```\n\nPhase transition:\n```\n✅ Phase N complete: N/N dossiers updated.\n   [Idea 1]: XX/100, [Idea 2]: YY/100, ...\n   Starting Phase N+1: <next phase name>.\n```\n\n### Re-Spawn Escalation\n\nIf a sub-agent fails to produce output, re-spawn with escalating urgency:\n\n1. **First failure:** Re-spawn with normal task brief\n2. **Second failure:** `\"TWO ATTEMPTS FAILED. Produce even minimal output for <output_file_path>.\"`\n3. **Third failure:** `\"FINAL ATTEMPT. Your output must go to <output_file_path>.\"`\n4. If all 3 re-spawns fail: mark the idea as incomplete, note it in Phase 5\n   output, proceed with remaining ideas.\n\nFor multiple stuck agents (>10 min runtime, no output):\n- If 3+ agents stuck simultaneously: skip steering, kill all and re-spawn\n- If <3 agents stuck: try steering first, then kill + re-spawn if no improvement within 5 minutes\n\n### SUCCESS/FAILURE Message Format\n\nAll sub-agents must end their final message with EXACTLY one of:\n\n```\nSUCCESS: <AGENT_TYPE> complete for <idea_name>. <1-line summary>\nFAILURE: <AGENT_TYPE> failed for <idea_name>. <reason>\n```\n\nAgent types: `PRD`, `CRITIQUE`, `EVALUATION`. This standard format allows the\norchestrator to parse results reliably.\n\n---\n\n## Quick Start: Configure Model and Thinking\n\nOn first run, the agent will ask you to choose a model and thinking level for sub-agents. This preference is saved to `saas-scout-runs/.scoutrc` and reused on subsequent runs.\n\nThe agent will ask before Phase 1 ideation questions. A stronger model with higher thinking produces better results but increases cost and runtime.\n\nTo change your preference later, edit `saas-scout-runs/.scoutrc`:\n\n```json\n{\n  \"model\": \"deepseek/deepseek-v4-flash\",\n  \"thinking\": \"low\"\n}\n```\n\nBefore each run, read `saas-scout-runs/.scoutrc`. If the model and thinking level is configured this is what all subagents will use. If it is not configured, then configure it with the user's input.\n\n---\n\n## Phase 1: Ideation\n\nThis is conversational — you and the agent define the scope together.\n\nIf `.scoutrc` does not exist yet, the agent asks for model/thinking preference before the ideation questions below.\n\n### What the Agent Asks\n\n1. **\"What domain or industry are we exploring?\"**\n   Be specific. \"Healthcare compliance\" is better than \"healthcare.\" \"Developer tools for API testing\" is better than \"dev tools.\"\n\n2. **\"Any constraints?\"**\n   Revenue targets, regulatory boundaries, technical preferences, geographic focus.\n   Examples: \"Bootstrappable, no hardware dependencies,\" \"SMB only, under $50/user/month,\"\n   \"Must work in EU with GDPR.\"\n\n3. **\"Who's the target customer?\"**\n   Specific segments. \"Mid-market e-commerce brands with 10-50 employees\" beats \"businesses.\"\n\n4. **\"What's your founder profile?\"**\n   This matters for ranking. Options include:\n   - Solo bootstrapper, technical (you can build)\n   - Solo bootstrapper, non-technical (you need co-founders or no-code)\n   - Small funded team (you have capital and GTM resources)\n   - Domain expert (you know the problem deeply)\n   - First-time founder (lower risk tolerance)\n\n5. **\"Any ideas already in mind, or should I generate everything?\"**\n\n### What You Get\n\nEight idea seeds, each 2-4 sentences: product name (slug), problem, solution angle, why now. Review them — swap, refine, or approve all.\n\nOnce confirmed, the pipeline starts. Create a run directory at a path like `saas-scout-runs/<YYYY-MM-DD>_<domain>/` and write a `context.md` file with the domain, constraints, customer segments, founder profile, and 8 seeds with their slug names.\n\n---\n\n## Phase 2: Discovery\n\n**Batch rule for ALL spawn phases (2-4):** Verify ALL files from the current batch exist before spawning the next batch. Never overlap batches — max 4 sub-agents at any time.\n\n### Spawn Template\n\nEach discovery agent receives the following task brief. The orchestrator resolves absolute paths for `<skill_dir>`, `<run_dir>`, and the idea's slug name.\n\n```\nREAD YOUR FULL INSTRUCTIONS AT: <skill_dir>/instructions/discovery.md\nFollow that file exactly. This is your source of truth.\n\nYou are Discovery Agent for idea \"<idea_slug>\".\n\nIDEA SEED: [seed text from Phase 1]\n\nDOMAIN CONTEXT:\n- Industry: [from Phase 1]\n- Constraints: [from Phase 1]\n- Target customers: [from Phase 1]\n- Founder profile: [from Phase 1]\n\nOUTPUT FILE: <run_dir>/pool/<NN>_prd.md\nWrite your complete PRD to this file. End the file with a blank line.\n```\n\n### Batch 1 (Agents 01-04)\n\nSend a progress message before spawning:\n```\n📝 Starting Discovery Phase — 8 research agents producing PRDs.\n   Batch 1/2: <idea 1>, <idea 2>, <idea 3>, <idea 4>.\n```\n\nSpawning all 4 agents at once:\n\n```\nsessions_spawn({ task: \"<spawn template for #01>\", mode: \"run\", timeoutSeconds: 600 })\nsessions_spawn({ task: \"<spawn template for #02>\", mode: \"run\", timeoutSeconds: 600 })\nsessions_spawn({ task: \"<spawn template for #03>\", mode: \"run\", timeoutSeconds: 600 })\nsessions_spawn({ task: \"<spawn template for #04>\", mode: \"run\", timeoutSeconds: 600 })\n```\n\n`sessions_yield()`. On EVERY wake, verify files using commands from Pipeline Operations. If < 4 files: identify missing agent(s), re-spawn individually, yield again. Do NOT proceed to Batch 2 until all 4 files exist.\n\n### Batch 2 (Agents 05-08)\n\nSend batch progress:\n```\n📝 Discovery Batch 1/2 done (4/8 PRDs).\n   Scores so far: [summarize from SUCCESS messages].\n   Spawning Batch 2: <idea 5>, <idea 6>, <idea 7>, <idea 8>.\n```\n\nSpawn agents 05-08 with the same template, then yield and verify. Expect 8 PRDs.\n\nDo NOT remove the cron watchdog. It stays active through all phases.\n\nPhase-complete progress:\n```\n✅ Phase 2 complete: 8/8 PRDs written.\n   <Idea 1>: XX/100, <Idea 2>: YY/100, ...\n   Starting Phase 3: Critique.\n```\n\n---\n\n## Phase 3: Critique\n\n### Spawn Template\n\n```\nREAD YOUR FULL INSTRUCTIONS AT: <skill_dir>/instructions/critic.md\nFollow that file exactly. This is your source of truth.\n\nYou are Critic Agent for idea \"<idea_slug>\".\n\nPRD FILE: <run_dir>/pool/<NN>_prd.md\nRead this file first before writing.\n\nDOMAIN CONTEXT:\n- Industry: [from Phase 1]\n- Constraints: [from Phase 1]\n\nOUTPUT FILE: <run_dir>/pool/<NN>_critique.md\nWrite your complete critique to this file. End the file with a blank line.\n```\n\n### Batch 1 (Agents 01-04)\n\nSend progress:\n```\n⚔️ Phase 3: Critique — Adversarial review of each PRD.\n   Batch 1/2: <idea 1>, <idea 2>, <idea 3>, <idea 4>.\n```\n\nSpawn agents 01-04, yield, verify 4 critique files exist.\n\n### Batch 2 (Agents 05-08)\n\nProgress:\n```\n⚔️ Critique Batch 1/2 done (4/8 critiques).\n   Spawning Batch 2: <idea 5>, <idea 6>, <idea 7>, <idea 8>.\n```\n\nSpawn agents 05-08, yield, verify 8 critique files exist.\n\nWhen all 8 critiques are verified, assemble the first version of each dossier:\n\n```bash\nfor i in 01 02 03 04 05 06 07 08; do\n  cat \"<run_dir>/pool/${i}_prd.md\" \\\n      \"<run_dir>/pool/${i}_critique.md\" \\\n    > \"<run_dir>/pool/${i}_dossier.md\"\ndone\n```\n\nPhase-complete progress:\n```\n✅ Phase 3 complete: 8/8 critiques written.\n   Major risks identified across all ideas. Dossiers assembled.\n   Starting Phase 4: Evaluation.\n```\n\n---\n\n## Phase 4: Evaluation\n\n### Spawn Template\n\n```\nREAD YOUR FULL INSTRUCTIONS AT: <skill_dir>/instructions/evaluator.md\nFollow that file exactly. This is your source of truth.\n\nYou are Evaluator Agent for idea \"<idea_slug>\".\n\nPRD FILE: <run_dir>/pool/<NN>_prd.md\nCRITIQUE FILE: <run_dir>/pool/<NN>_critique.md\nRead BOTH files before scoring.\n\nDOMAIN CONTEXT:\n- Industry: [from Phase 1]\n- Constraints: [from Phase 1]\n- Target customers: [from Phase 1]\n- Founder profile: [from Phase 1]\n\nOUTPUT FILE: <run_dir>/pool/<NN>_evaluation.md\nWrite your complete evaluation to this file. End the file with a blank line.\n```\n\n### Batch 1 (Agents 01-04)\n\nSend progress:\n```\n📊 Phase 4: Evaluation — Scoring and synthesizing each idea.\n   Batch 1/2: <idea 1>, <idea 2>, <idea 3>, <idea 4>.\n```\n\nSpawn agents 01-04, yield, verify 4 evaluation files exist.\n\n### Batch 2 (Agents 05-08)\n\nProgress:\n```\n📊 Evaluation Batch 1/2 done (4/8 evaluations).\n   Spawning Batch 2: <idea 5>, <idea 6>, <idea 7>, <idea 8>.\n```\n\nSpawn agents 05-08, yield, verify 8 evaluation files exist.\n\n**Remove the cron watchdog** (if not already removed):\n\n```cron({ action: \"remove\", jobId: \"<saved-job-id>\" })```\n\n**Assemble final dossiers:**\n```bash\nfor i in 01 02 03 04 05 06 07 08; do\n  cat \"<run_dir>/pool/${i}_prd.md\" \\\n      \"<run_dir>/pool/${i}_critique.md\" \\\n      \"<run_dir>/pool/${i}_evaluation.md\" \\\n    > \"<run_dir>/pool/${i}_dossier.md\"\ndone\n```\n\nVerify dossiers contain all three sections (see Pipeline Operations).\n\nPhase-complete progress:\n```\n✅ Phase 4 complete: 8/8 evaluations scored.\n   Scores: <Idea 1>: XX <verdict>, <Idea 2>: YY <verdict>, ...\n   Cron watchdog removed. Dossiers assembled.\n   Starting Phase 5: Judgement.\n```\n\n---\n\n## Phase 5: Judgement\n\nAll in-session. No more spawns. This phase runs entirely as the chat agent.\n\n### Step 1: Read All Dossiers\n\nRead every dossier file to build a complete picture:\n```\nread path: <run_dir>/pool/01_dossier.md\nread path: <run_dir>/pool/02_dossier.md\n...through 08_dossier.md\n```\n\nRead efficiently — skim verdicts and scores first, then deep-read the top\n3-4 candidates.\n\n### Step 2: Holistic Ranking with Founder Context\n\nConsider the user's founder profile from Phase 1:\n\n- **Solo technical founder:** Weight MVP feasibility and founder fit more heavily.\n  Can they build this alone? Does the problem affect them personally?\n- **Solo non-technical:** Weight GTM viability and revenue model. Can they reach\n  customers without building? Do they need a technical co-founder?\n- **Funded team with GTM resources:** Weight market size and competitive positioning.\n  Can they use capital to capture a large market before incumbents respond?\n- **Domain expert:** Weight differentiation and white space. Does their expertise\n  give them an unfair advantage in a specific niche?\n- **First-time founder:** Weight MVP feasibility and risk. Is this achievable\n  without prior founder experience?\n\nUse the dimension scores as evidence, but apply your own judgment about which dimensions matter most for this specific founder and context.\n\n### Step 3: Present Results\n\n```\n🏆 Top 3 SaaS Opportunities: [Domain]\n\nRanking weighted for: [founder profile with brief explanation]\n\n🥇 #1: [Idea Name] — Raw Score: XX/100 [Verdict]\n\n**What it is:** [2-3 sentence summary]\n**Why it won:** [Which dimensions pushed it to the top under this founder's context]\n**Key risk to watch:** [Top concern from the critique and evaluation]\n**Revenue potential:** [Rough estimate]\n\n🥈 #2: [Idea Name] — Raw Score: YY/100 [Verdict]\n[2 sentence summary. Note why it's #2 vs #1.]\n\n🥉 #3: [Idea Name] — Raw Score: ZZ/100 [Verdict]\n[2 sentence summary. Key differentiator vs the rest.]\n\n---\n\n### The Rest (4-8)\n| # | Idea | Score | Verdict | Why Not Top 3 |\n|---|------|-------|---------|---------------|\n| 4 | [Name] | XX | [Verdict] | Brief reason |\n| 5 | [Name] | XX | [Verdict] | Brief reason |\n| 6 | [Name] | XX | [Verdict] | Brief reason |\n| 7 | [Name] | XX | [Verdict] | Brief reason |\n| 8 | [Name] | XX | [Verdict] | Brief reason |\n\nFull PRDs, critiques, and evaluations saved to: <run_dir>/pool/\n```\n\n---\n\n## Cron Watchdog\n\nA single cron watchdog spans all spawn phases (Discovery through Evaluation). It fires every 7 minutes into the orchestrator's session. The orchestrator already knows the pipeline state — the watchdog simply wakes it to check.\n\n### Creating the Watchdog\n\nAfter Phase 1 completes and the run directory is set up, create the watchdog using the cron tool:\n\n```\ncron({\n  action: \"add\",\n  job: {\n    name: \"scout-watchdog\",\n    schedule: { kind: \"every\", everyMs: 420000 },\n    sessionTarget: \"current\",\n    wakeMode: \"now\",\n    payload: {\n      kind: \"agentTurn\",\n      message: \"SCOUT WATCHDOG WAKE. Run directory: <run_dir>.\\nCheck your sub-agents. Verify expected output files exist.\\nRe-spawn any stuck/missing agents as needed.\"\n    },\n    delivery: { mode: \"none\" }\n  }\n})\n```\n\nCapture the returned `id` field. You need this for removal.\n\n### How Yield and Watchdog Interact\n\nWhen the orchestrator yields, it wakes for either:\n1. Sub-agent completion events\n2. Cron watchdog fires\n\nOn EVERY wake, run the standard verification procedure for the current phase and batch. If all expected files exist → proceed. If files are missing but agents are running → yield again. If files are missing and agents are done → intervene with the re-spawn escalation ladder.\n\n### Removing the Watchdog\n\nAfter Phase 4 completes and all 8 evaluations are verified, remove the watchdog:\n\n```\ncron({ action: \"remove\", jobId: \"<saved-job-id>\" })\n```\n\nAlso remove the watchdog in edge cases (user wants to stop, pipeline aborted).\n\n---\n\n## Edge Cases & Recovery\n\n| Scenario | What to Do |\n|----------|-----------|\n| Sub-agent fails to produce output | Check SUCCESS/FAILURE message. If no output file: re-spawn that single agent (max 3 attempts, escalating urgency). |\n| Multiple agents stalled (>10 min runtime, no output) | If 3+: skip steer, kill all and re-spawn. If <3: try steer first, then kill + re-spawn if no improvement within 5 minutes. |\n| Re-spawn fails after 3 attempts | Mark that idea as incomplete. Note the gap in Phase 5 output. Proceed with remaining ideas. |\n| User wants to regenerate ideas | Ask: \"Regenerate from same domain/constraints, or refine the scope first?\" |\n| All ideas receive WATCH or SKIP verdicts | Surface honestly: \"All 8 ideas received WATCH/SKIP verdicts. This domain may need a different angle or broader scope.\" |\n| Founder profile doesn't match categories | Ask clarifying questions. Use holistic judgment in Phase 5. |\n| Watchdog creation fails | Proceed without it. Pipeline still functions on agent completion events. Notify user: \"Watchdog setup failed, but the pipeline will continue.\" |\n| Run directory collision | Append counter: `<timestamp>-<domain>-2/`, `-3/`, etc. |\n| Tie in Phase 5 ranking | Explain the ambiguity, make a judgment call based on qualitative factors (stronger evidence, clearer GTM path, higher differentiation ceiling). |\n| Gateway timeout on spawn | Wait 30 seconds, retry once. If still timing out: generate outputs in-session using the write tool. |\n| User wants to stop mid-pipeline | Remove the cron watchdog: `cron({ action: \"remove\", jobId: \"<saved-job-id>\" })`. Present whatever output exists. |\n\n---\n\n## File Layout\n\nAfter a full pipeline run, the run directory contains:\n\n```\n<run_dir>/context.md                          # Domain scope, constraints, seeds\n<run_dir>/pool/\n   01_prd.md         # Discovery agent output (PRD)\n   01_critique.md    # Critic agent output\n   01_evaluation.md  # Evaluator agent output\n   01_dossier.md     # Orchestrator-assembled: PRD + critique + evaluation\n   02_*.md ... 08_*.md  # Same pattern for all 8 ideas\n```\n\n`saas-scout-runs/.scoutrc` at the parent level stores model/thinking preference.\n","topics":["Agentic","Cron","Pipeline"],"tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":306,"installsAllTime":11,"installsCurrent":0,"stars":1,"versions":1},"createdAt":1778137293244,"updatedAt":1778492867743},"latestVersion":{"version":"1.0.0","createdAt":1778137293244,"changelog":"Initial release: chat-driven SaaS idea discovery & validation pipeline with 5-phase adversarial swarm (ideation → discovery → critique → evaluation → judgment). 24 sub-agents, 10-dimension scoring, self-healing watchdog, founder-contextual ranking.","license":"MIT-0"},"metadata":{"setup":[],"os":["linux"],"systems":null},"owner":{"handle":"itthomas","userId":"s174gh6ydrt7vrvkgmf6tp3w2n8678cy","displayName":"Isaac Thomas","image":"https://avatars.githubusercontent.com/u/38747154?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1780090756854}}