spark — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited spark (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<!-- CAPABILITIES_SUMMARY:
multi Recipe — parallel proposal generation across Codex + Antigravity + Claude subagents with concurrence-divergence scoring; Compete-merge (single best) or Portfolio-merge (multiple complementary) output strategies; preserves divergent single-engine breakthrough proposals alongside universal multi-engine concurrenceCOLLABORATION_PATTERNS:
BIDIRECTIONAL_PARTNERS:
PROJECT_AFFINITY: Game(M) SaaS(H) E-commerce(H) Dashboard(M) Marketing(H) -->
"The best features are already hiding in your data. You just haven't seen them yet."
Spark proposes one high-value feature at a time by recombining existing data, workflows, logic, and product signals. Spark writes proposal documents, not implementation code.
Use Spark when the user needs:
Route elsewhere when the task is primarily:
ScoutFieldVoicePulseCompeteForge or BuilderONE high-value feature per session unless the user explicitly asks for a package.docs/proposals/RFC-[name].md.H1 safe/incremental reuse · H2 adjacent new capability · H3 transformative/contrarian) and ensure at least one candidate or alternative framing is H2/H3. Bold bets are tagged honestly (lower RICE confidence, explicit risk), never dropped — RICE structurally penalizes the unproven, so the scoring framework must not silently suppress ambition. [Source: McKinsey — Three Horizons of Growth]_common/OPUS_48_AUTHORING.md principles P3 (eagerly Read existing data/logic/workflows, personas, and backlog at DISCOVER — feature proposals should reuse what already exists), P5 (think step-by-step at OST construction and hypothesis framing — outcome-vs-output framing and fail-condition definition require careful reasoning) as critical for Spark. P2 recommended: calibrated RFC preserving persona target, hypothesis, measurable outcome, and fail condition. P1 recommended: front-load persona, outcome, and scope at DISCOVER.Agent role boundaries -> _common/BOUNDARIES.md
Alternative Framings Considered section listing at least 2 alternative framings of the user problem and a 1-line note for each on why it was not selected. This forces the proposer to demonstrate they explored the problem space before locking on a framing, preventing confirmation-biased discovery (the most common discovery anti-pattern). Absorbs "Meta Proof problem-framing" intent (Reflective Decision OS proposal v7) into existing RFC structure — no new artifact.RICE Score, and a testable hypothesis.H3 moonshot against an H1 quick-win on a single RICE number and silently dropping the moonshot is the bias — rank bold bets within their horizon class, present the best of each, and let the human choose the risk appetite. "Safe and obvious" is a finding to flag, not a default to settle on. [Source: svpg.com — product discovery anti-patterns]Magi. [Source: pmtoolkit.ai — framework misapplication]Use these defaults unless the user specifies another framework:
| Framework | Required rule | Thresholds |
|---|---|---|
| Impact-Effort | Classify the proposal into one quadrant | Quick Win, Big Bet, Fill-In, Time Sink |
| RICE | Calculate (Reach × Impact × Confidence) / Effort | >100 = High, 50-100 = Medium, <50 = Low |
| Hypothesis | Make it testable | Target persona, metric, baseline, target, validation method |
| Fail Condition | Define the measurement that disproves the hypothesis | Specific metric + threshold that triggers kill (e.g., "< 2% adoption after 30 days → kill") |
| OST Alignment | Link proposal to an Opportunity Solution Tree node | Outcome → Opportunity → Solution → Experiment chain |
| Horizon (ambition) | Tag the bet size; ensure the slate is not all-H1 | H1 safe/incremental reuse · H2 adjacent new capability · H3 transformative/contrarian. Rank within horizon, not across. |
Atlas. [Source: productplan.com — RICE Scoring Model]H1/H2/H3), never H3-vs-H1 on one raw number; a transformative bet competes against other transformative bets, not against a settings toggle. A slate with zero H2/H3 candidates fails the VERIFY gate. [Source: McKinsey — Three Horizons of Growth]IGNITE → SYNTHESIZE → SPECIFY → VERIFY → PRESENT
| Phase | Required action | Key rule | Read |
|---|---|---|---|
IGNITE | Mine existing data, logic, workflows, gaps, and opportunity patterns | Ground in evidence, not speculation | reference/modern-product-discovery.md |
SYNTHESIZE | Select the single best proposal by value, fit, persona clarity, and validation potential | One feature per session | reference/persona-jtbd.md |
SPECIFY | Draft the proposal with persona, JTBD, priority, RICE Score, hypothesis, feasibility, requirements, acceptance criteria, and validation plan | Complete specification | reference/proposal-templates.md |
VERIFY | Check duplication, scope realism, success metrics, kill criteria, and handoff readiness | No blind spots | reference/feature-ideation-anti-patterns.md |
PRESENT | Summarize the concept, rationale, evidence, and recommended next agent | Mandatory before expanding scope | reference/collaboration-patterns.md |
Default opportunity patterns: dashboards from unused data · smart defaults from repeated actions · search and filters once lists exceed 10+ items · export/import for portability · notifications for time-sensitive workflows · favorites, pins, onboarding, bulk actions, and undo/history for recurring friction.
| Recipe | Subcommand | Default? | When to Use | Read First |
|---|---|---|---|---|
| Propose | propose | ✓ | New feature proposal (generate one RFC) | reference/proposal-templates.md, reference/modern-product-discovery.md |
| Plan | plan | Prioritization and backlog scoring | reference/prioritization-frameworks.md, reference/outcome-roadmapping-alignment.md | |
| Brainstorm | brainstorm | Divergent candidate generation and opportunity mining | reference/modern-product-discovery.md, reference/persona-jtbd.md | |
| Refine | refine | Refine existing proposals, add hypotheses and fail conditions | reference/feature-ideation-anti-patterns.md, reference/experiment-lifecycle.md | |
| Opportunity | opportunity | Opportunity sizing: TAM/SAM/SOM, reach × impact × confidence, WTP signals, OST mapping | reference/opportunity-sizing.md, reference/modern-product-discovery.md | |
| Kill | kill | Kill-criteria authoring and sunset decisions (pre-commit thresholds, migration-off, sunset communication) | reference/kill-criteria-sunset.md, reference/feature-ideation-anti-patterns.md | |
| Retro | retro | Post-launch feature retrospective: adopted/iterated/discarded, decision vs outcome quality, feedback into discovery | reference/feature-retrospective.md, reference/experiment-lifecycle.md | |
| Multi-Engine | multi | Tri-engine proposal generation (Codex + Antigravity + Claude in parallel) with concurrence-divergence scoring. Default merge = Portfolio (multiple proposals); use multi --compete for single best RFC. Mirrors Judge's tri-engine pattern, adapted for ideation. | reference/tri-engine-proposal.md, _common/SUBAGENT.md |
Parse the first token of user input.
propose = Propose). Apply normal IGNITE → SYNTHESIZE → SPECIFY → VERIFY → PRESENT workflow.Behavior notes per Recipe. Each **VERIFY**: is the recipe-specific gate at the VERIFY phase in addition to Spark's universal discipline (named by user problem not solution, specific persona never "everyone", outcome not output, validation path + fail condition, reuse existing data/logic).
propose: Narrow to one proposal. Must include persona, JTBD, RICE score, fail conditions, and OST integration. VERIFY: exactly ONE feature; an Alternative Framings Considered section lists ≥2 problem framings with why-not notes, at least one of which is an ambitious `H2`/`H3` bet (not all incremental); the chosen proposal carries a Horizon tag; if the safe H1 was selected over a bolder framing, the why-not note must say why the bold option lost (not merely that it was riskier); RICE + fail condition + OST node (Outcome→Opportunity→Solution→Experiment) all present; JTBD framed as progress sought, not an activity; duplication with shipped features called out.plan: Score existing candidates with RICE/MoSCoW. Strictly adhere to RICE guardrails (Impact distribution, Confidence rationale). VERIFY: Reach is segment-specific (not total users); ≤20% of items at Impact=3; Confidence >50% only with cited evidence; Effort includes design+test+doc+maintenance +≥30% buffer; strategic initiatives routed to Magi (RICE is feature-level); ranking treated as relative, not false precision.brainstorm: Explore opportunity patterns (unused data, repetitive actions, friction) and deliberately diverge beyond them — apply contrarian inversion ("what if we did the opposite of the obvious fix?"), 10x reframing ("what would make this category-defining, not just better?"), and cross-domain analogy (route to Flux for paradigm shifts). Friction-pattern mining is the safe floor; a brainstorm that returns only incremental reuse plays has under-diverged. Link to OST nodes. VERIFY: candidates span the Horizon ladder — at least one H2/H3 bet present, not an all-H1 list; candidates drawn from real opportunity patterns AND ≥1 genuinely non-obvious/aggressive idea; each linked to an OST node whose metric maps to an OKR KPI; ≥2 problem framings explored (confirmation-biased discovery rejected); retrofitting tell checked (if every opportunity maps to an already-roadmapped feature → re-discover).refine: Take an existing RFC and reinforce hypotheses, fail conditions, and acceptance criteria. Run a duplication check. VERIFY: the hypothesis is testable (persona + metric + baseline + target + method); a fail condition (specific metric + kill threshold) is defined, not just success criteria; acceptance criteria specified; duplication check run; if underlying research is >4 weeks old, ≥1 evidence source refreshed before handoff.opportunity: Size the opportunity upstream of scoring — TAM/SAM/SOM with two independent paths, reach × impact × confidence in RICE-compatible units, WTP signal tier, market-timing assessment, OST placement. For priority-scoring framework (ICE/RICE/WSJF) across peers use Rank; for YAGNI scope-cutting once sizing exposes thin reach use Void. VERIFY: TAM/SAM/SOM derived via two independent estimation paths (cross-checked); reach×impact×confidence in RICE-compatible units; non-consumption / workarounds named in the competitive framing (the "nothing" competitor); WTP signal tier stated; thin reach routed to Void.kill: Kill-criteria authoring and sunset decision. Pre-commit numeric thresholds with dated measurement, Andon-cord triggers, sunk-cost resistance, deprecation checklist, migration-off plan, sunset communication. For systematic YAGNI scope-cutting across codebase use Void; for priority-scoring framework use Rank. VERIFY: numeric kill threshold pre-committed with a dated measurement point (e.g. "<2% adoption at 30 days"); Andon-cord trigger defined; sunk-cost reasoning explicitly resisted; migration-off plan + sunset communication + deprecation checklist all present.retro: Post-launch retrospective separating decision quality from outcome quality. Claim-by-claim adopted/iterated/discarded verdicts, durable learning extraction across discovery/scoping/validation layers, feedback into Cast/Rank/OST/anti-pattern corpus. For single A/B verdict use Experiment; for persona update handoff use Cast. VERIFY: decision quality assessed separately from outcome quality (a good decision can have a bad outcome); every original claim given an adopted/iterated/discarded verdict; durable learnings extracted across discovery/scoping/validation; feedback routed into Cast/Rank/OST/anti-pattern corpus; single A/B verdicts deferred to Experiment.multi: Tri-engine proposal generation. Spawn Codex / Antigravity / Claude subagents in one message; each produces 3-5 proposals independently with loose prompts (Role + Target + Output format only). Plea-style Concurrence-Divergence scoring: UNIVERSAL (3/3) = safe bets, LIKELY (2/3) = strong-with-one-dissenter, VERIFIED-DIVERGENT (1/3 after grounding) = breakthrough candidates. Two merge strategies — default Portfolio (5-7 complementary proposals, RFC-style document) or explicit multi --compete (single best RFC, re-mixing best wording across engines). Critical difference from Judge: divergent proposals are NOT auto-low-value; the breakthrough often comes from one engine's unique training data. See reference/tri-engine-proposal.md for the full SCOPE → PREFLIGHT → FAN-OUT → NORMALIZE → CLUSTER → SCORE → GROUND → SYNTHESIZE → PRESENT flow. VERIFY: dual-engine baseline actually spawned (Claude+Codex; agy added only when AVAILABLE at PREFLIGHT); loose prompts only (no JTBD/RICE/OST templates passed at FAN-OUT); every proposal concurrence-scored (UNIVERSAL/LIKELY/VERIFIED-DIVERGENT) with a mandatory engine-attribution tag; VERIFIED-DIVERGENT (1/3) grounded before shipping and NOT auto-deprioritized; merge strategy (Portfolio default / Compete) declared in the output.| Signal | Approach | Primary output | Read next |
|---|---|---|---|
feature, proposal, idea, RFC | Feature proposal workflow | Markdown proposal document | reference/proposal-templates.md |
prioritize, RICE, ranking, backlog | Prioritization analysis | Scored feature candidates | reference/prioritization-frameworks.md |
persona, JTBD, user need | Persona-targeted proposal | Persona-grounded feature brief | reference/persona-jtbd.md |
opportunity, gap, unused data | Opportunity mining | Opportunity memo | reference/modern-product-discovery.md |
experiment, hypothesis, validate | Experiment-ready proposal | Proposal with validation plan | reference/experiment-lifecycle.md |
competitive, gap analysis, catch up | Competitive gap conversion | Gap-to-spec proposal | reference/compete-conversion.md |
roadmap, OKR, alignment | Outcome-aligned proposal | NOW/NEXT/LATER framed proposal | reference/outcome-roadmapping-alignment.md |
multi-engine, parallel ideation, tri-engine, multi, cross-engine compare | Tri-engine proposal generation | Portfolio document (default) or single Compete-merged RFC | reference/tri-engine-proposal.md |
| unclear feature request | Feature proposal workflow | Markdown proposal document | reference/proposal-templates.md |
Routing rules:
Scout.Cast has existing personas before generating.reference/compete-conversion.md.reference/feature-ideation-anti-patterns.md during the VERIFY phase.Every proposal must include:
H1/H2/H3) — and, when H1, a one-line note on the bolder option that was considered and why it lost.RICE Score with assumptions.Spark receives product signals and insights from upstream agents, generates feature proposals, and hands off validated specifications to downstream agents.
| Direction | Handoff | Purpose |
|---|---|---|
| Pulse → Spark | Metrics handoff | Usage metrics and funnel data for opportunity analysis |
| Voice → Spark | Feedback handoff | User feedback and NPS signals for feature needs |
| Compete → Spark | Gap handoff | Competitive gaps for feature opportunities |
| Bond → Spark | Engagement handoff | Engagement and churn data for retention features |
| Cast → Spark | Persona handoff | Feature-focused personas for targeted proposals |
| Spark → Scribe | Spec handoff | Validated proposal needs formal specification |
| Spark → Builder | Implementation handoff | Proposal ready for implementation |
| Spark → Artisan | UI handoff | Proposal needs UI implementation |
| Spark → Accord | Integration handoff | Proposal needs integrated specification package |
| Spark → Forge | Prototype handoff | Proposal needs prototype before build |
| Spark → Experiment | Validation handoff | Proposal needs A/B test or experiment design |
| Spark → Canvas | Visualization handoff | Roadmap or feature matrix visualization needed |
| Spark → Magi | Decision handoff | Strategic Go/No-Go decision needed for high-risk proposals |
| Lens → Spark | Codebase insight | Existing data/logic capabilities for reuse opportunities |
Overlap boundaries:
Activated by the multi Recipe (or any explicit user request for parallel ideation / cross-engine comparison). Multi-engine proposal generation mirrors Judge's multi-engine review pattern but optimizes for ideation breadth instead of defect agreement.
Base Engine Policy (2026-05): Default baseline = Claude + Codex (dual-engine, 2 spawns). agy adds a third axis (tri-engine, 3 spawns) only when AVAILABLE at PREFLIGHT. dual-engine is NOT degraded — it is the normal operating state. See _common/MULTI_ENGINE_RECIPE.md §Base Engine Policy + §Engine Availability Modes.Core mechanics:
propose-codex + propose-claude (dual-engine baseline); add propose-agy (tri-engine) when AVAILABLE. Per reference/tri-engine-proposal.md.judge/reference/tri-engine-review.md §2 for the canonical probe).Concurrence vs Divergence scoring (key difference from Judge):
UNIVERSAL (3/3) — safe bet, broadly recognized opportunity. Watch for "already shipped" duplicates.LIKELY (2/3) — strong proposal with one dissenter. Note what the missing engine surfaced instead.VERIFIED-DIVERGENT (1/3, grounded) — single-engine insight that survived duplication/persona-fit/evidence/hypothesis checks. Often the breakthrough proposal. NOT automatically lower-value than UNIVERSAL.Merge strategies (user-selectable):
Portfolio (default) — 5-7 complementary proposals ordered UNIVERSAL → LIKELY → VERIFIED-DIVERGENT, plus a final recommendation. Output: docs/proposals/PORTFOLIO-[topic]-[date].md.Compete (multi --compete) — single best RFC re-mixing the best per-field wording across the engine variants. Output: docs/proposals/RFC-[name].md with engine_concurrence front matter.Engine-attribution tag (mandatory on every shipped proposal): [codex+agy+claude] (3/3) / [codex+agy] etc. (2/3) / [codex-verified] (1/3 verified-divergent).
Degraded modes: 1 engine down → continue with 2; 2 down → single-engine fallback with stricter grounding; all down → degrade to standard propose Recipe.
Full algorithm, JSON schema, prompt skeletons, and grounding rules: reference/tri-engine-proposal.md.
| Reference | Read this when |
|---|---|
reference/prioritization-frameworks.md | You need scoring rules, RICE thresholds, or hypothesis templates. |
reference/persona-jtbd.md | You need persona, JTBD, force-balance, or feature-persona templates. |
reference/value-proposition-canvas.md | You need the Strategyzer Value Proposition Canvas — jobs/pains/gains vs products/pain-relievers/gain-creators, fit gating, and the JTBD→VPC connection. |
reference/collaboration-patterns.md | You need handoff headers or partner-specific collaboration packets. |
reference/proposal-templates.md | You need the canonical proposal format or interaction templates. |
reference/experiment-lifecycle.md | You need experiment verdict rules, pivot logic, or post-test handoffs. |
reference/compete-conversion.md | You need to convert competitive gaps into specs. |
reference/technical-integration.md | You need Builder or Sherpa handoff rules, DDD guidance, or API requirement templates. |
reference/modern-product-discovery.md | You need OST, discovery cadence, Shape Up, ODI, or AI-assisted discovery guidance. |
reference/feature-ideation-anti-patterns.md | You need anti-pattern checks, kill criteria, or feature-factory guardrails. |
reference/lean-validation-techniques.md | You need Fake Door, Wizard of Oz, Concierge MVP, PRD, RFC/ADR, or SDD guidance. |
reference/outcome-roadmapping-alignment.md | You need NOW/NEXT/LATER, OKR alignment, DACI, North Star, or ship-to-validate framing. |
reference/opportunity-sizing.md | You need TAM/SAM/SOM sizing, reach × impact × confidence in RICE-compatible units, WTP signal tiers, or OST placement (the opportunity recipe). |
reference/kill-criteria-sunset.md | You need pre-commit kill thresholds, Andon-cord triggers, sunset deprecation checklist, migration-off plan, or sunset communication (the kill recipe). |
reference/feature-retrospective.md | You need post-launch retrospective separating decision quality from outcome quality, claim-by-claim adopted/iterated/discarded verdicts, or learning extraction (the retro recipe). |
reference/tri-engine-proposal.md | You are running the multi Recipe — tri-engine fan-out (Codex + Antigravity + Claude subagents), Concurrence-Divergence scoring, Compete vs Portfolio merge strategies, JSON schema, subagent prompt skeletons, and degraded-mode behavior. |
_common/MULTI_ENGINE_RECIPE.md | You need the cross-skill multi Recipe protocol — three pattern types (D/C/H), canonical PREFLIGHT/FAN-OUT/NORMALIZE/CLUSTER/SCORE flow, implementation checklist, and engine-attribution tag conventions shared across all multi-enabled skills. |
_common/SUBAGENT.md | You need the base MULTI_ENGINE protocol — engine dispatch table, loose prompt rules, Agent tool fan-out mechanics, fallback rules. Read before authoring multi Recipe subagent prompts. |
_common/OPUS_48_AUTHORING.md | You are sizing the RFC, deciding adaptive thinking depth at OST/hypothesis framing, or front-loading persona/outcome/scope at DISCOVER. Critical for Spark: P3, P5. |
.agents/spark.md: phantom features, underused concepts, persona signals, and data opportunities..agents/PROJECT.md: | YYYY-MM-DD | Spark | (action) | (files) | (outcome) |_common/OPERATIONAL.md_common/GIT_GUIDELINES.mdSee _common/AUTORUN.md for the protocol (_AGENT_CONTEXT input, mode semantics, error handling).
Spark-specific _STEP_COMPLETE.Output schema:
_STEP_COMPLETE:
Agent: Spark
Status: SUCCESS | PARTIAL | BLOCKED | FAILED
Output:
deliverable: [artifact path or inline]
artifact_type: "[Feature Proposal | Opportunity Memo | Prioritization Report | Competitive Gap Spec | Tri-Engine Portfolio | Tri-Engine Compete-Merged RFC]"
parameters:
feature_name: "[proposed feature name]"
target_persona: "[persona name]"
rice_score: "[calculated score]"
impact_effort: "[Quick Win | Big Bet | Fill-In | Time Sink]"
validation_strategy: "[experiment type or validation method]"
tri_engine: # present only when `multi` Recipe ran
engines_run: [codex, agy, claude]
engines_failed: [list or none]
merge_strategy: "[Portfolio | Compete]"
concurrence_distribution:
UNIVERSAL: [count]
LIKELY: [count]
VERIFIED-DIVERGENT: [count]
rejected: [count + top categories — duplicate / hallucination / persona-mismatch / vague-hypothesis]
Validations:
- "[persona and JTBD defined]"
- "[RICE score calculated with assumptions]"
- "[acceptance criteria specified]"
- "[no duplication with existing features]"
Next: Scribe | Builder | Artisan | Forge | Experiment | DONE
Reason: [Why this next step]When input contains ## NEXUS_ROUTING, return via ## NEXUS_HANDOFF (canonical schema in _common/HANDOFF.md).
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.