{"id":18065,"plugin_id":"plugins_6a7da17696b081918e2d9debd654a099","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:14:35.793Z","digest":"de32bbd2fd05fb7b797bd1014159804115e0a6865687b5323e00ce1fed1cc886","against":null,"payload":{"description":"Predict the smallest atomic next engineering action from current workspace state, evidence gates, and mutation freshness with situational silence. Use when evaluating what immediate atomic step to take next, checking situational awareness, or determining if the current state requires action or silence — even if the user does not explicitly say \"fable-spark\" (e.g. \"what is my next move\", \"spark hint\", \"check next action\", \"what should I do now\"). Do NOT use as a substitute for broad architectural planning (use fable-plan).","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":414},{"relative_path":"evals/scenarios.json","size_in_bytes":4224},{"relative_path":"examples/situational-awareness-walkthrough.md","size_in_bytes":420},{"relative_path":"references/atomic-action-and-silence.md","size_in_bytes":2274},{"relative_path":"references/confidence-policy.md","size_in_bytes":2270},{"relative_path":"references/evidence-and-gates.md","size_in_bytes":1880},{"relative_path":"references/next-move-policy.md","size_in_bytes":1970},{"relative_path":"references/silence-policy.md","size_in_bytes":1205},{"relative_path":"skill.package.json","size_in_bytes":568},{"relative_path":"templates/spark-decision.template.md","size_in_bytes":558}],"name":"fable-spark","skill_md_contents":"---\nname: fable-spark\ndescription: \"Predict the smallest atomic next engineering action from current workspace state, evidence gates, and mutation freshness with situational silence. Use when evaluating what immediate atomic step to take next, checking situational awareness, or determining if the current state requires action or silence — even if the user does not explicitly say \\\"fable-spark\\\" (e.g. \\\"what is my next move\\\", \\\"spark hint\\\", \\\"check next action\\\", \\\"what should I do now\\\"). Do NOT use as a substitute for broad architectural planning (use fable-plan).\"\nversion: 1.3.0\npack: system\ninputs:\n  - current_state\nrequires:\n  - situational_context\nproduces:\n  - spark_suggestion\ngates:\n  - minimal_action_tested\nfallback: get-fable\nmutatesWorkspace: false\nparallelSafe: true\nneural_links:\n  precursors:\n    - get-fable\n    - fable-cowork\n  continuations:\n    - get-fable\n  lateral_peers:\n    - get-fable\n  recovery: fable-recover\n---\n\n# Fable Spark\n\nChoose one small next move that improves the state of the current task—or deliberately say nothing.\n\n## Mission\nSpark is not a planner, router, motivational assistant, or todo generator. It is a micro-policy for moments when the task is already in motion and the best next action should be small, concrete, and justified by current state.\n\nThe quality bar is not \"a helpful suggestion.\" It is **the least action that unlocks the next piece of evidence or safely advances the active Skill**.\n\n## Activate When\n- an edit/test/failure/state transition just happened;\n- a long session needs the next atomic step rather than another full plan;\n- verification freshness/gates determine what should happen next;\n- an active specialist has a clear ownership boundary but the immediate move is unclear;\n- silence vs intervention itself is a useful decision.\n\n## Do Not Activate When\n- no primary Skill has been selected for substantial new work (`get-fable`);\n- architecture/decomposition is the unresolved problem (`fable-plan`);\n- repeated failure requires a diagnosis (`fable-recover` owns the work; Spark may only point there);\n- the user asked for execution, not a suggestion, and the executing Skill already knows its next step.\n\n## Situation Classification\n| State signal | Spark posture |\n| --- | --- |\n| repeated failure | stop mutation; diagnose |\n| mutation newer than verification | refresh relevant proof |\n| explicit active gate missing | satisfy that gate |\n| review finding unresolved | repair/replan finding |\n| active card blocked by unknown | discover/research/plan |\n| complete/idle with no intent | silence |\n| specialist owns next obvious step | usually silence; avoid narration |\n| several equally plausible non-atomic moves | defer to orchestrator/plan |\n\n## Next-Move Protocol\n### Stage 1 — Read state before intent embellishment\nInspect phase, current Skill/card, mutation/verified generation, failure streak, evidence, unresolved findings, blockers, and latest user intent.\n\n### Stage 2 — Apply safety precedence\nPrefer in order when applicable:\n1. diagnose repeated/contradictory failure;\n2. refresh stale proof after mutation;\n3. satisfy explicit blocking gate;\n4. resolve a named load-bearing unknown;\n5. continue the active specialist's smallest next action;\n6. silence.\n\n### Stage 3 — Make the action atomic\nA Spark suggestion should usually be one observable verb-object step:\n- `run the affected auth tests`;\n- `reproduce the race with a barrier`;\n- `inspect the registered CLI entrypoint`;\n- `review the current diff against the card`;\n- `capture the provider response bundle`.\n\nAvoid multi-stage suggestions such as \"research, plan, implement, test, and release.\"\n\n### Stage 4 — Require a reason tied to evidence\nThe reason should reference state/evidence, e.g. verification stale after mutation, failure streak reached recovery threshold, release gate missing, or active card has unresolved API contract.\n\n### Stage 5 — Check actionability\nBefore speaking, ask:\n- can the action be done now with available context/tools?\n- does it preserve current scope?\n- is it owned by the active/next Skill?\n- will its outcome reduce uncertainty or satisfy a gate?\n\nIf not, prefer silence or route back to the orchestrator.\n\n### Stage 6 — Use silence intentionally\nSilence is correct when:\n- task is idle/complete with no new intent;\n- the active agent already has an obvious immediate action;\n- only speculative future work can be suggested;\n- available context is too ambiguous for a useful atomic step.\n\n## Decision Rules\n- Repeated failure outranks \"run tests again\" if another identical run adds no information.\n- Fresh mutation outranks completion/release suggestions until relevant evidence is refreshed.\n- Security/research/receipt evidence cannot stand in for required functional verification.\n- Do not suggest implementation when a load-bearing fact/contract remains unknown.\n- Prefer a targeted affected check over a full suite when the next goal is rapid causal feedback; broader required gates can follow.\n- Never invent a new objective because the current task is quiet.\n- Confidence is not a license to act outside the current Skill's scope.\n- If two next moves depend on an unresolved ordering/architecture choice, route to plan instead of guessing.\n\n## Invariants\n- At most one primary Spark suggestion.\n- Suggestion is atomic, actionable, and scope-preserving.\n- State/evidence—not generic best practice—justifies intervention.\n- Silence is allowed and preferred over speculative advice.\n- Spark never upgrades stale/incomplete evidence into completion proof.\n\n## Failure Taxonomy\n### Scope drift\nSuggestion introduces an unrelated improvement. Drop it and return to active card/gate.\n\n### Ceremony\nSpark narrates a step the active specialist is already obviously executing. Stay silent.\n\n### Premature action\nSuggestion mutates code before discovery/TDD/recovery requirement. Apply precedence.\n\n### Stale-proof blindness\nSpark suggests review/release despite mutation newer than verification. Refresh proof first.\n\n### Retry loop\nSpark repeats a command after repeated failure without new diagnostic state. Route to recovery.\n\n### Ambiguous macro-action\nSuggestion contains several dependent steps. Reduce to first atomic decision or route to plan.\n\n## Anti-Patterns\n- turning Spark into a mini project manager;\n- always suggesting something;\n- generic advice such as \"keep testing\";\n- proposing a full suite when one focused probe is the causal next move;\n- suggesting release because tests once passed;\n- suggesting implementation from unknown external facts;\n- confidence scores unsupported by state;\n- outputting three alternatives instead of one next action.\n\n## Spark Packet\n```text\nState signal:\nBlocking gate / uncertainty:\nSuggestion: <one action or null>\nWhy now:\nExpected observation:\nOwner Skill:\nSilent: true|false\n```\n\n## Completion Criteria\nSpark succeeds when it either:\n- names one immediately executable, evidence-grounded action that safely advances the current lifecycle; or\n- remains silent because intervention would add noise, scope, or speculation.\n\n## Progressive Resources\n- Deep guide: `references/atomic-action-and-silence.md`\n- Next-move policy: `references/next-move-policy.md`\n- Silence: `references/silence-policy.md`\n- Evidence/gates: `references/evidence-and-gates.md`\n- Confidence: `references/confidence-policy.md`\n- Example: `examples/situational-awareness-walkthrough.md`\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}