[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71S07653D4DK4175SHPM35S":3,"skill-same:01M71S07653D4DK4175SHPM35S":76},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":6,"ownerHtmlUrl":58,"ownerBlogUrl":59,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M71S07653D4DK4175SHPM35S","atlas-scatter",null,"Phase L sub-mode (Scatter-Gather Locate) — TRANCE-gated parallel fan-out of read-only Locate probes across topologically-disjoint module clusters, each in a clean-context subagent, merged back into findings.md via a deterministic dedup contract. Never default; serial Locate is the standard path. Use ONLY when map.md surface is large (>5 modules OR >25 files) AND ≥2 disjoint DECISION_TARGET sub-questions exist. Trigger phrases — \"audit across all modules\", \"trace these N independent flows\", \"scout this large surface in parallel\". Do NOT load for a single sub-question, tightly-coupled sub-questions, or a tight budget.","Rynaro\u002Fprisma","Rynaro","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F5271543?v=4","01M70CFYFMB316W23THVQAQ42M","Henrique A. Lavezzo","01M71RXA8ZHEPZR3GERY09ERGD",1,"MIT","https:\u002F\u002Fgithub.com\u002FRynaro\u002Fprisma\u002Fblob\u002Fmain\u002F.eidolons\u002Fatlas\u002Fskills\u002Fscatter\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"atlas","atlas scatter","back","search","when","phase","mode","flows","dry","map","query","subagent","clean","default","files","modules","only","never","question","decision","2026-11-10 13:02:02",false,"---\nname: atlas-scatter\ndescription: Phase L sub-mode (Scatter-Gather Locate) — TRANCE-gated parallel fan-out of read-only Locate probes across topologically-disjoint module clusters, each in a clean-context subagent, merged back into findings.md via a deterministic dedup contract. Never default; serial Locate is the standard path. Use ONLY when map.md surface is large (>5 modules OR >25 files) AND ≥2 disjoint DECISION_TARGET sub-questions exist. Trigger phrases — \"audit across all modules\", \"trace these N independent flows\", \"scout this large surface in parallel\". Do NOT load for a single sub-question, tightly-coupled sub-questions, or a tight budget.\nallowed-tools: search_symbol graph_query search_text view_file test_dry_run memex_read\nmetadata:\n  methodology: ATLAS\n  phase: L\n---\n\n# SKILL: Scatter-Gather Locate (Phase L sub-mode)\n\n## When to use\n\n**Load when:** `map.md` is complete AND the activation trigger below fires.\nThis is the operationalized G1 TRANCE form of the diffuse scatter primitives\nalready in `skills\u002Flocate\u002FSKILL.md` (Operator pattern) and `PERSONA.md` P0 rule 7.\n\n**Unload when:** every sub-question has ≥1 merged finding at confidence ≥ M\nor a `GAP`, and the merged `findings.md` has entered the Phase A fold.\n\n**This mode does not add capability — it adds parallelism.** It is still\nread-only (I-1). Scatter never grants a write tool, never resets the budget,\nand never escapes a refusal gate. Branch budgets sum to ≤ the parent budget.\n\n---\n\n## Activation trigger (both-flags rule — TRANCE-gated)\n\nScatter-Gather is **GATED, never default.** Standard-tier Locate stays serial.\nBoth flags MUST hold (cortex C5 + C6). If either is false, the mode is inert\nand you run the serial probe ladder in `skills\u002Flocate\u002FSKILL.md`.\n\n| Flag | Source | Threshold |\n|------|--------|-----------|\n| Surface size (C5) | `map.md` `MAP-MODULES` \u002F file count | **> 5 modules OR > 25 files** in scope |\n| Disjoint sub-questions (C6) | `mission.md` `DECISION_TARGET` decomposition | **≥ 2 topologically-disjoint** sub-questions (different modules \u002F concerns) |\n\nEither flag alone → stay **standard tier** (serial Locate). Both flags →\nescalate to the Scatter-Gather sub-mode.\n\n### When NOT to scatter (carry-through from locate.md)\n\n- Only one sub-question exists.\n- Sub-questions are tightly coupled (one's answer feeds another's probe).\n- Budget is already tight — coordination overhead outweighs the parallel win.\n\nIn any of these, **do not scatter.** Run serial Locate.\n\n---\n\n## Fan-out plan (bounded, deterministic partition)\n\n1. **Derive the partition deterministically.** Run a single parent-side\n   `graph_query(\"callgraph_slice: \u003Cscope>\")` (or, if unavailable, partition by\n   `MAP-MODULES` centrality clusters from `map.md`). **Do not LLM-guess the\n   clustering** — the partition is a structural fact, not an inference\n   (see `skills\u002Flocate\u002FSKILL.md` Tier-2 graph-first decomposition).\n2. **One sub-mission per disjoint cluster**, mapped 1:1 to a disjoint\n   sub-question where possible.\n3. **Hard cap: 5 branches** (cortex C1; orchestrator-worker sweet spot ~5).\n   If the partition yields > 5 clusters, merge the lowest-centrality clusters\n   until N ≤ 5.\n4. **Per-branch budget = `parent_remaining \u002F N`.** Budgets are partitioned,\n   not multiplied. The sum of branch budgets MUST NOT exceed the parent's\n   remaining budget.\n\n**Diversity is scope-diversity, not redundancy.** Branches probe *different*\nmodules. Do **not** spawn N identical probes of the same module — quality of\nthe partition dominates redundant diversity.\n\n---\n\n## Sub-mission spec (Operator pattern, clean context)\n\nEach branch is an **ephemeral clean-context subagent** seeded with ONLY its\nscope-slice + one sub-question + its budget. The clean context is the point:\nit prevents trajectory self-conditioning (no branch sees another branch's\npath). Reuses the `locate.md` `sub_mission` YAML, tightened:\n\n```yaml\nsub_mission:\n  parent_mission_id: \u003CMISSION-ID>\n  branch_id: \u003C1..N>\n  question: \u003Cone disjoint sub-question>\n  scope: \u003Cpath globs for this cluster only>\n  budget:\n    max_tool_calls: \u003Cparent_remaining \u002F N>\n    max_tokens_input: \u003Cparent_remaining \u002F N>\n  map_excerpt: \u003CONLY the MAP-MODULES + MAP-GRAPH slice for this cluster>\n```\n\nEach branch runs the **Tier 1–5 probe ladder** (`skills\u002Flocate\u002FSKILL.md`) within its\nscope and returns **exactly one structured object — no transcript** (I-4):\n\n```yaml\nreturn:\n  branch_id: \u003C1..N>\n  findings: [FINDING-XXX, ...]   # branch-local IDs\n  gaps: [GAP-XXX, ...]\n  ruled_out: [\u003Cnegative result notes>, ...]\n  telemetry: {tokens_used, tool_calls}\n  # NO transcript. NO raw tool outputs. Excerpts go to Memex.\n```\n\nThe parent never ingests branch transcripts. Branch working state is destroyed\non return.\n\n---\n\n## Merge + dedup contract (two-stage bounded gather)\n\n### Stage 1 — Gather & dedup (parent-side, deterministic)\n\n1. **Renumber to global IDs.** Branch-local `FINDING-XXX` \u002F `GAP-XXX` ids are\n   renumbered to a global namespace to avoid cross-branch collision.\n2. **Dedup on mechanical fields first.** Merge two findings into one when they\n   match on **(path, overlapping line-range)**; use **claim-equivalence** only\n   as a tiebreak. The merged finding keeps the **highest** confidence tier and\n   **unions** the evidence anchors and `ruled_out` notes.\n3. **Contradictions are NOT silently merged.** When two branches make\n   conflicting claims about the same anchor, emit a single finding marked\n   **`[DISPUTED]`** (D7) carrying both claims, and drop it to **confidence L**\n   pending a follow-up probe. Do not pick a winner mechanically.\n\n### Stage 2 — Fold (reuse existing machinery)\n\nThe merged `findings.md` flows **unchanged** into the existing Phase A\nclean-context fold (`skills\u002Fabstract\u002FSKILL.md`). **No new aggregator is built** —\nthe AgentFold subagent already aggregates; scatter merely feeds it a merged\nlist instead of a serial one.\n\n---\n\n## Stop condition (explicit — D5)\n\nScatter completes when **every sub-question has ≥1 merged finding at\nconfidence ≥ M OR a `GAP`.** Scatter does **not** re-spawn: max recursion\nremains 1 (`PERSONA.md` P0 rule 9). A branch that returns only `L`\u002Fempty triple\nrecords a `GAP`; the parent does not re-scatter that cluster.\n\n---\n\n## Telemetry\n\nRecord at the gather edge:\n\n```\nscatter | branches: N | fan_out_ratio: \u003Csum(branch_tokens)\u002Fserial_estimate>\n        | dedup_count: \u003Cmerged-away> | disputed: \u003Ccount> | tool_calls: \u003Csum>\n```\n\n`fan_out_ratio` and `dedup_count` are the feedback signals: a low dedup count\non overlapping scopes means the partition was too coarse; a high one means the\nclusters were not actually disjoint (revisit the trigger).\n\n---\n\n## Exit gate\n\n- [ ] Both activation flags verified against `map.md` + `mission.md` before\n      scattering (else serial Locate).\n- [ ] Partition derived from a deterministic graph\u002Fcentrality query, ≤ 5 branches.\n- [ ] Each branch ran clean-context, returned one object, no transcript (I-4).\n- [ ] Per-branch budgets sum to ≤ parent remaining budget.\n- [ ] Merged `findings.md`: global ids, dedup on path\u002Fline, `[DISPUTED]` on\n      contradiction (never silent-merge).\n- [ ] Every sub-question has a finding ≥ M or a `GAP`; no re-scatter.\n- [ ] Merged findings entered the Phase A fold; telemetry recorded.\n","# SKILL: Scatter-Gather Locate (Phase L sub-mode)\n\n## When to use\n\n**Load when:** `map.md` is complete AND the activation trigger below fires.\nThis is the operationalized G1 TRANCE form of the diffuse scatter primitives\nalready in `skills\u002Flocate\u002FSKILL.md` (Operator pattern) and `PERSONA.md` P0 rule 7.\n\n**Unload when:** every sub-question has ≥1 merged finding at confidence ≥ M\nor a `GAP`, and the merged `findings.md` has entered the Phase A fold.\n\n**This mode does not add capability — it adds parallelism.** It is still\nread-only (I-1). Scatter never grants a write tool, never resets the budget,\nand never escapes a refusal gate. Branch budgets sum to ≤ the parent budget.\n\n---\n\n## Activation trigger (both-flags rule — TRANCE-gated)\n\nScatter-Gather is **GATED, never default.** Standard-tier Locate stays serial.\nBoth flags MUST hold (cortex C5 + C6). If either is false, the mode is inert\nand you run the serial probe ladder in `skills\u002Flocate\u002FSKILL.md`.\n\n| Flag | Source | Threshold |\n|------|--------|-----------|\n| Surface size (C5) | `map.md` `MAP-MODULES` \u002F file count | **> 5 modules OR > 25 files** in scope |\n| Disjoint sub-questions (C6) | `mission.md` `DECISION_TARGET` decomposition | **≥ 2 topologically-disjoint** sub-questions (different modules \u002F concerns) |\n\nEither flag alone → stay **standard tier** (serial Locate). Both flags →\nescalate to the Scatter-Gather sub-mode.\n\n### When NOT to scatter (carry-through from locate.md)\n\n- Only one sub-question exists.\n- Sub-questions are tightly coupled (one's answer feeds another's probe).\n- Budget is already tight — coordination overhead outweighs the parallel win.\n\nIn any of these, **do not scatter.** Run serial Locate.\n\n---\n\n## Fan-out plan (bounded, deterministic partition)\n\n1. **Derive the partition deterministically.** Run a single parent-side\n   `graph_query(\"callgraph_slice: \u003Cscope>\")` (or, if unavailable, partition by\n   `MAP-MODULES` centrality clusters from `map.md`). **Do not LLM-guess the\n   clustering** — the partition is a structural fact, not an inference\n   (see `skills\u002Flocate\u002FSKILL.md` Tier-2 graph-first decomposition).\n2. **One sub-mission per disjoint cluster**, mapped 1:1 to a disjoint\n   sub-question where possible.\n3. **Hard cap: 5 branches** (cortex C1; orchestrator-worker sweet spot ~5).\n   If the partition yields > 5 clusters, merge the lowest-centrality clusters\n   until N ≤ 5.\n4. **Per-branch budget = `parent_remaining \u002F N`.** Budgets are partitioned,\n   not multiplied. The sum of branch budgets MUST NOT exceed the parent's\n   remaining budget.\n\n**Diversity is scope-diversity, not redundancy.** Branches probe *different*\nmodules. Do **not** spawn N identical probes of the same module — quality of\nthe partition dominates redundant diversity.\n\n---\n\n## Sub-mission spec (Operator pattern, clean context)\n\nEach branch is an **ephemeral clean-context subagent** seeded with ONLY its\nscope-slice + one sub-question + its budget. The clean context is the point:\nit prevents trajectory self-conditioning (no branch sees another branch's\npath). Reuses the `locate.md` `sub_mission` YAML, tightened:\n\n```yaml\nsub_mission:\n  parent_mission_id: \u003CMISSION-ID>\n  branch_id: \u003C1..N>\n  question: \u003Cone disjoint sub-question>\n  scope: \u003Cpath globs for this cluster only>\n  budget:\n    max_tool_calls: \u003Cparent_remaining \u002F N>\n    max_tokens_input: \u003Cparent_remaining \u002F N>\n  map_excerpt: \u003CONLY the MAP-MODULES + MAP-GRAPH slice for this cluster>\n```\n\nEach branch runs the **Tier 1–5 probe ladder** (`skills\u002Flocate\u002FSKILL.md`) within its\nscope and returns **exactly one structured object — no transcript** (I-4):\n\n```yaml\nreturn:\n  branch_id: \u003C1..N>\n  findings: [FINDING-XXX, ...]   # branch-local IDs\n  gaps: [GAP-XXX, ...]\n  ruled_out: [\u003Cnegative result notes>, ...]\n  telemetry: {tokens_used, tool_calls}\n  # NO transcript. NO raw tool outputs. Excerpts go to Memex.\n```\n\nThe parent never ingests branch transcripts. Branch working state is destroyed\non return.\n\n---\n\n## Merge + dedup contract (two-stage bounded gather)\n\n### Stage 1 — Gather & dedup (parent-side, deterministic)\n\n1. **Renumber to global IDs.** Branch-local `FINDING-XXX` \u002F `GAP-XXX` ids are\n   renumbered to a global namespace to avoid cross-branch collision.\n2. **Dedup on mechanical fields first.** Merge two findings into one when they\n   match on **(path, overlapping line-range)**; use **claim-equivalence** only\n   as a tiebreak. The merged finding keeps the **highest** confidence tier and\n   **unions** the evidence anchors and `ruled_out` notes.\n3. **Contradictions are NOT silently merged.** When two branches make\n   conflicting claims about the same anchor, emit a single finding marked\n   **`[DISPUTED]`** (D7) carrying both claims, and drop it to **confidence L**\n   pending a follow-up probe. Do not pick a winner mechanically.\n\n### Stage 2 — Fold (reuse existing machinery)\n\nThe merged `findings.md` flows **unchanged** into the existing Phase A\nclean-context fold (`skills\u002Fabstract\u002FSKILL.md`). **No new aggregator is built** —\nthe AgentFold subagent already aggregates; scatter merely feeds it a merged\nlist instead of a serial one.\n\n---\n\n## Stop condition (explicit — D5)\n\nScatter completes when **every sub-question has ≥1 merged finding at\nconfidence ≥ M OR a `GAP`.** Scatter does **not** re-spawn: max recursion\nremains 1 (`PERSONA.md` P0 rule 9). A branch that returns only `L`\u002Fempty triple\nrecords a `GAP`; the parent does not re-scatter that cluster.\n\n---\n\n## Telemetry\n\nRecord at the gather edge:\n\n```\nscatter | branches: N | fan_out_ratio: \u003Csum(branch_tokens)\u002Fserial_estimate>\n        | dedup_count: \u003Cmerged-away> | disputed: \u003Ccount> | tool_calls: \u003Csum>\n```\n\n`fan_out_ratio` and `dedup_count` are the feedback signals: a low dedup count\non overlapping scopes means the partition was too coarse; a high one means the\nclusters were not actually disjoint (revisit the trigger).\n\n---\n\n## Exit gate\n\n- [ ] Both activation flags verified against `map.md` + `mission.md` before\n      scattering (else serial Locate).\n- [ ] Partition derived from a deterministic graph\u002Fcentrality query, ≤ 5 branches.\n- [ ] Each branch ran clean-context, returned one object, no transcript (I-4).\n- [ ] Per-branch budgets sum to ≤ parent remaining budget.\n- [ ] Merged `findings.md`: global ids, dedup on path\u002Fline, `[DISPUTED]` on\n      contradiction (never silent-merge).\n- [ ] Every sub-question has a finding ≥ M or a `GAP`; no re-scatter.\n- [ ] Merged findings entered the Phase A fold; telemetry recorded.\n",{"name":5,"metadata":49,"description":7,"allowed-tools":52},{"phase":50,"methodology":51},"L","ATLAS","search_symbol graph_query search_text view_file test_dry_run memex_read","main","42ce382409178ece647a93f841a86119e8d74a65",".eidolons\u002Fatlas\u002Fskills\u002Fscatter",0,"https:\u002F\u002Fgithub.com\u002FRynaro\u002Fprisma","https:\u002F\u002Fgithub.com\u002FRynaro","https:\u002F\u002Fhlavezzo.me","A Code Alchemist with a passion for weaving tales and inscribing transmutation circles in pure code.","2026-10-18 20:39:25",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add Rynaro\u002Fprisma --skill atlas-scatter",{"tool":68,"command":69},"bunx","bunx skills add Rynaro\u002Fprisma --skill atlas-scatter",{"tool":71,"command":72},"pnpm","pnpm dlx skills add Rynaro\u002Fprisma --skill atlas-scatter","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FRynaro\u002Fprisma\u002Fblob\u002Fmain\u002F.eidolons\u002Fatlas\u002Fskills\u002Fscatter\u002FSKILL.md",true,[],[77,102,127,153,181,202],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":44},"01M71S3X05FSJA01D22MH39Y0W","vivi-verify-incoming","Load when reading any upstream artefact handed off to Vivi that carries a sibling .envelope.json. BLOCKING per ECL §6.2.2: the orchestrator MUST have verified the envelope's SHA-256 (eidolons verify-envelope --block \u002F eidolons run --verify) and recorded a verify_pass before dispatch. If no verify_pass exists for the message_id, or a verify_fail is present, REFUSE to process the payload and hand back to the orchestrator. Symmetric receiver gate — every Eidolon enforces it identically.","https:\u002F\u002Fgithub.com\u002FRynaro\u002Fprisma\u002Fblob\u002Fmain\u002F.eidolons\u002Fvivi\u002Fskills\u002Fverify-incoming\u002FSKILL.md",[],[84,85,86,87,88,89,90,91,92,26,93,94,95,96,97,98,99,100,101,28],"verify","vivi verify incoming","verify incoming","run","sha-256","json","orchestrator","process","dispatch","message","upstream","id","receiver","block","ecl","hand","load","for",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":111,"publishedAt":44},"01M71S3S2E46S6AZEV07AJ75TK","vivi-parallel-tracks","Load ONLY under TRANCE authorization when the Plan phase yields N independent, non-overlapping implementation tracks (disjoint file sets). Operationalizes the TRANCE G4 form — parallel multi-track implementation in mandatory git-worktree isolation, max 5 clean-context tracks, a per-track verifier cascade, a non-fungible per-track ≤3 reflection budget, explicit stop conditions, and a single-threaded merge\u002Faggregation step. Absent TRANCE gating, Vivi runs exactly as today: single-track A→P→I→V→Δ\u002FR.","https:\u002F\u002Fgithub.com\u002FRynaro\u002Fprisma\u002Fblob\u002Fmain\u002F.eidolons\u002Fvivi\u002Fskills\u002Fparallel-tracks\u002FSKILL.md",[108],{"categoryNo":109,"categoryName":110,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000040","财务",[112,113,114,115,116,40,117,36,118,119,120,121,122,100,123,124,125,126,29,28],"parallel","tracks","parallel tracks","vivi parallel tracks","file","reflection","plan phase","as","verifier","form","multi","worktree isolation","track","gating","single",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":44},"01M71S3N09VY1H2QHXXP4SKY2X","vivi-methodology","Full Vivi cycle reference — A(nalyze) → P(lan) → I(mplement) → V(erify) → Δ(Delta)\u002FR(eflect). Use when the task is a non-trivial feature implementation in a brownfield codebase and you need the complete methodology reference: complexity routing, evidence-grounded planning rules, test-anchoring requirements, and failure-escalation thresholds.","https:\u002F\u002Fgithub.com\u002FRynaro\u002Fprisma\u002Fblob\u002Fmain\u002F.eidolons\u002Fvivi\u002Fskills\u002Fmethodology\u002FSKILL.md",[],[134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,28],"methodology","vivi methodology","planning","escalation","Rules","use","evidence","complexity","delta","task","cycle","feature implementation","brownfield","full","requirements","feature","complete","thresholds","you",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":164,"publishedAt":44},"01M71S3GT0M84EHZ2SJZKV61N9","vivi-memory-management","Load at Vivi session start, session end, or when you notice a repeating pattern across tasks. CRYSTALIUM-primary memory protocol: when mcp__crystalium__* tools are available, route ALL memory through CRYSTALIUM (recall\u002Fcommit\u002Fingest\u002Fplan_checkpoint\u002Fsession_end). The local agents\u002Fmemories\u002F*.md files are the standalone fallback for when CRYSTALIUM is absent — EIIS conformance. Never write both.","https:\u002F\u002Fgithub.com\u002FRynaro\u002Fprisma\u002Fblob\u002Fmain\u002F.eidolons\u002Fvivi\u002Fskills\u002Fmemory-management\u002FSKILL.md",[159],{"categoryNo":160,"categoryName":161,"taxonomyType":162,"taxonomyTypeDesc":163},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[165,166,167,168,169,170,171,172,173,41,38,174,175,176,177,178,152,179,180,28],"memory","management","memory management","vivi memory management","MCP","commit","tasks","plan","write","route","across","local","end","session start","standalone","at",{"skillNo":182,"name":183,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":185,"categories":186,"keywords":187,"publishedAt":44},"01M71S3E067YRRFH7304VYYF32","vivi-loop-native","Load in Vivi's V (Verify) phase. The core capability that distinguishes Vivi from its predecessor APIVR-Δ: drive the closed, autonomous, bounded edit-run-test loop (`eidolons sandbox loop`) as its `--fix-hook`, consuming localized feedback, retrying in fresh context, refusing to game the tests, and gating on pass^k. Use whenever the task has an executable test oracle and a loop-competent host.","https:\u002F\u002Fgithub.com\u002FRynaro\u002Fprisma\u002Fblob\u002Fmain\u002F.eidolons\u002Fvivi\u002Fskills\u002Floop-native\u002FSKILL.md",[],[188,189,190,191,192,193,194,195,196,197,198,139,143,199,119,200,201,100,125,29],"loop","native","vivi loop native","oracle","sandbox","test","core","game","feedback","autonomous","fix","tests","fresh","host",{"skillNo":203,"name":204,"nameZh":6,"description":205,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":206,"categories":207,"keywords":208,"publishedAt":44},"01M71S3AEKYH0JD0CFJ4GHA98E","vivi-failure-recovery","Load when the Vivi Verify phase produces failures — test fails, lint error, build break, or three consecutive unsuccessful attempts at the same category. Provides the failure classification taxonomy, bounded debugging protocol, and escalation thresholds. Use to avoid the 'random retries' anti-pattern.","https:\u002F\u002Fgithub.com\u002FRynaro\u002Fprisma\u002Fblob\u002Fmain\u002F.eidolons\u002Fvivi\u002Fskills\u002Ffailure-recovery\u002FSKILL.md",[],[209,210,211,137,212,213,139,214,215,151,216,217,218,100,180,219,220,29,28,221],"recovery","vivi failure recovery","debugging","classification","taxonomy","three","pattern","error","retries","random","break","bounded","same"]