[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71S2S2W928285BM50YYG6FD":3,"skill-same:01M71S2S2W928285BM50YYG6FD":71},{"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":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":54,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M71S2S2W928285BM50YYG6FD","vigil-isolate",null,"Phase I (Isolate) — narrows the fault surface to ≤8 candidate nodes via delta-debugging-style reduction. Preserves failure throughout reduction; records ruled-out evidence. Use after `reproduction.md` is stable and `DETERMINISM_VERDICT ≠ intermittent`, before the Graph phase.","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\u002Fvigil\u002Fskills\u002Fisolate\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"vigil","vigil isolate","file","use","records","view","delta","evidence","graph","git","run","narrows","text","log","phase","candidate","query","debugging","DEP","search","2026-11-10 13:02:02",false,"---\nname: vigil-isolate\ndescription: Phase I (Isolate) — narrows the fault surface to ≤8 candidate nodes via delta-debugging-style reduction. Preserves failure throughout reduction; records ruled-out evidence. Use after `reproduction.md` is stable and `DETERMINISM_VERDICT ≠ intermittent`, before the Graph phase.\nallowed-tools: git_bisect, git_log, view_file, search_symbol, search_text, run_test, dep_graph_query\nmetadata:\n  methodology: VIGIL\n  phase: I\n---\n\n# SKILL: Isolate — narrow the fault surface\n\n## When to use\n\nLoad when `reproduction.md` is schema-valid and stable. Unload when `fault-surface.md` has ≤8 candidates with evidence anchors.\n\n> **Memory check:** if `recall` fired in Phase V, its results are already in\n> context — consult them when building the initial suspect set. Procedural\n> memories from prior missions on similar error classes can shortcut Source 2\n> (recent churn) and Source 3 (scope bounds) below. If `mcp__crystalium__*`\n> tools are unavailable, proceed without memory — never hard-fail.\n\n---\n\n## Contract\n\n| Field | Value |\n|-------|-------|\n| LLM calls permitted | For classifying candidates and reading source |\n| Tool budget | ≤25% of mission budget |\n| Output | `fault-surface.md` — schema-valid per `schemas\u002Ffault-surface.v1.json` |\n| Hard cap | ≤8 candidates. If more survive reduction, narrow scope; if fewer than 1 survives, escalate. |\n\n---\n\n## The Suspect Set — Where to Look First\n\nBuild the initial suspect set from three deterministic sources. Do not enumerate the entire codebase.\n\n### Source 1 — Stack trace closure\n\nEvery file referenced in the failing stack trace (from `reproduction.md`) is a suspect. For each frame:\n\n- The file itself → suspect\n- Files it imports → secondary suspects if the failure is a `RUNTIME_ERROR` or `INTEGRATION_ERROR`\n- Call-graph ancestors (who calls this) → tertiary suspects for `LOGIC_ERROR`\n\n### Source 2 — Recent churn\n\nFor the commit at which the failure reproduces:\n\n```\ngit log --since=\"30 days ago\" --oneline --name-only\n```\n\nCross-reference churn with Source 1. Files that are **both** in the stack trace AND recently modified are the highest-priority suspects.\n\nFor `REGRESSION` category: add `git bisect` to identify the introducing commit. Files touched by that commit become top suspects.\n\n### Source 3 — Scope bounds from upstream\n\nIf upstream artifact (APIVR-Δ `repair-failed-report.md`, spec, or scout-report from ATLAS) declared a scope, respect it. Candidates outside the declared scope require explicit justification (e.g., \"symptom traces cross the boundary because of [evidence]\").\n\n---\n\n## Reduction Techniques (Category-Specific)\n\n### `REGRESSION` — use git bisect\n\nBisect between last known good commit and current. Each iteration:\n\n1. Check out midpoint\n2. Run reproduction command\n3. Record `PASS` or `FAIL_MATCH`\n4. Narrow\n\nTerminates at the introducing commit. The diff of that commit is the highest-priority candidate set.\n\n### `LOGIC_ERROR`, `TYPE_ERROR`, `RUNTIME_ERROR` — use dependency walk\n\nStarting from the failing assertion's location:\n\n1. Identify all variables\u002Ffunctions read in the failing code path\n2. For each, identify its origin (where it's assigned, returned from, passed in)\n3. Walk backward until you hit a boundary — user input, IO, constant, or unmodified upstream code\n4. Each node in this walk is a candidate\n\n### `INTEGRATION_ERROR` — use contract comparison\n\nThe failure is at a component boundary. Candidates are:\n\n- The producer's output schema\u002Fcontract (actual vs declared)\n- The consumer's input expectations (actual vs declared)\n- Any serialization layer between them\n\n### `BUILD_ERROR`, `LINT_VIOLATION` — direct diagnosis\n\nThe tooling has already identified the file:line. The \"isolation\" is trivial. Proceed to Graph with the tooling-reported location as the single candidate.\n\n### `HEISENBUG` — use timing\u002Fstate differential\n\nWith statistical-mode reproduction, run 5× with increased logging. Compare state at key checkpoints across runs:\n\n- What differs between failing and passing runs?\n- Are there race windows? Shared state mutations? External clock\u002Frandom dependencies?\n\nCandidates are the loci where observable state diverges between passing and failing runs.\n\n### `COMPOUND` — accept >1 root candidate\n\nCompound failures have multiple independent roots. Do not force reduction below 2 candidates. Mark them for the Graph phase to confirm independence.\n\n### `SPEC_DEFECT` — validate test intent\n\nDoes the test assert the correct thing? Compare test expectation to:\n\n- The spec (if available — from SPECTRA handoff or issue tracker)\n- Other tests covering the same behavior\n- Recent spec changes\n\nIf the test is wrong, the \"fix\" routes to SPECTRA, not APIVR-Δ.\n\n---\n\n## Ruled-Out Trail — First-Class Evidence\n\nFor every candidate you **remove** from the suspect set, record why. This is not noise — it's the most important output of Phase I.\n\nRequired ruled-out records:\n\n```yaml\nruled_out:\n  - candidate: \"app\u002Fflows\u002Fauth.rb:120-180\"\n    reason: \"Not in stack trace; not modified in last 90 days; called from unrelated path.\"\n    evidence_source: \"git log + stack trace\"\n  - candidate: \"lib\u002Futils\u002Fclock.rb:*\"\n    reason: \"Failing test uses frozen time via test helper; clock utility not reached.\"\n    evidence_source: \"test_helper.rb:12; dep_graph_query(callers_of: Clock.now)\"\n```\n\nMinimum: 3 ruled-out entries per mission. Missions with fewer suggest lazy reduction; harness flags for review.\n\n---\n\n## Writing `fault-surface.md`\n\n```yaml\nmission_id: VIGIL-YYYYMMDD-NNN\nupstream_reproduction: \u003Cref>\nsuspect_set_sources:\n  - stack_trace_closure\n  - recent_churn\n  - scope_bounds\ncandidates:\n  - id: C-001\n    path: \"app\u002Fflows\u002Fvote_casting\u002Frecord_vote.rb\"\n    lines: \"42-78\"\n    kind: code            # code | test | config | schema | data | env\n    suspicion_rank: 1     # 1 = highest\n    rationale: \"Top of failing stack; modified 3 days ago in commit abc123; writes the asserted-against column\"\n  - id: C-002\n    path: \"app\u002Fpolicies\u002Fvoting_authorizer.rb\"\n    lines: \"12-40\"\n    kind: code\n    suspicion_rank: 2\n    rationale: \"Delegate target of C-001; recently modified; appears in stack frame 2\"\nreduction_trail:\n  - step: \"Stack trace closure produced 17 suspects\"\n  - step: \"Churn filter reduced to 8\"\n  - step: \"Scope bounds (auth module only) reduced to 5\"\n  - step: \"Dependency walk confirmed 2 additional candidates outside initial stack\"\nruled_out:\n  - \u003Cas above, minimum 3 entries>\nscope_bounds:\n  include: [\"app\u002Fflows\u002F**\", \"app\u002Fpolicies\u002F**\"]\n  exclude: [\"spec\u002F**\", \"lib\u002Flegacy\u002F**\"]\n```\n\n---\n\n## Anti-patterns\n\n- **Reading entire files.** Windowed reads only, after narrowing by symbol or graph query.\n- **Inferring candidates.** Every candidate needs a path:lines anchor and a traceable reason.\n- **Cascading reduction too aggressively.** If you're down to 0 candidates, you reduced wrong — escalate.\n- **Chasing a candidate because it \"looks suspicious.\"** Anchor the suspicion in stack trace, churn, or dep graph. Vibes are not evidence.\n- **Skipping ruled-out records.** The next VIGIL mission on related code will thank you.\n\n---\n\n*VIGIL Phase I — reduction with evidence, ≤8 candidates to Graph*\n","# SKILL: Isolate — narrow the fault surface\n\n## When to use\n\nLoad when `reproduction.md` is schema-valid and stable. Unload when `fault-surface.md` has ≤8 candidates with evidence anchors.\n\n> **Memory check:** if `recall` fired in Phase V, its results are already in\n> context — consult them when building the initial suspect set. Procedural\n> memories from prior missions on similar error classes can shortcut Source 2\n> (recent churn) and Source 3 (scope bounds) below. If `mcp__crystalium__*`\n> tools are unavailable, proceed without memory — never hard-fail.\n\n---\n\n## Contract\n\n| Field | Value |\n|-------|-------|\n| LLM calls permitted | For classifying candidates and reading source |\n| Tool budget | ≤25% of mission budget |\n| Output | `fault-surface.md` — schema-valid per `schemas\u002Ffault-surface.v1.json` |\n| Hard cap | ≤8 candidates. If more survive reduction, narrow scope; if fewer than 1 survives, escalate. |\n\n---\n\n## The Suspect Set — Where to Look First\n\nBuild the initial suspect set from three deterministic sources. Do not enumerate the entire codebase.\n\n### Source 1 — Stack trace closure\n\nEvery file referenced in the failing stack trace (from `reproduction.md`) is a suspect. For each frame:\n\n- The file itself → suspect\n- Files it imports → secondary suspects if the failure is a `RUNTIME_ERROR` or `INTEGRATION_ERROR`\n- Call-graph ancestors (who calls this) → tertiary suspects for `LOGIC_ERROR`\n\n### Source 2 — Recent churn\n\nFor the commit at which the failure reproduces:\n\n```\ngit log --since=\"30 days ago\" --oneline --name-only\n```\n\nCross-reference churn with Source 1. Files that are **both** in the stack trace AND recently modified are the highest-priority suspects.\n\nFor `REGRESSION` category: add `git bisect` to identify the introducing commit. Files touched by that commit become top suspects.\n\n### Source 3 — Scope bounds from upstream\n\nIf upstream artifact (APIVR-Δ `repair-failed-report.md`, spec, or scout-report from ATLAS) declared a scope, respect it. Candidates outside the declared scope require explicit justification (e.g., \"symptom traces cross the boundary because of [evidence]\").\n\n---\n\n## Reduction Techniques (Category-Specific)\n\n### `REGRESSION` — use git bisect\n\nBisect between last known good commit and current. Each iteration:\n\n1. Check out midpoint\n2. Run reproduction command\n3. Record `PASS` or `FAIL_MATCH`\n4. Narrow\n\nTerminates at the introducing commit. The diff of that commit is the highest-priority candidate set.\n\n### `LOGIC_ERROR`, `TYPE_ERROR`, `RUNTIME_ERROR` — use dependency walk\n\nStarting from the failing assertion's location:\n\n1. Identify all variables\u002Ffunctions read in the failing code path\n2. For each, identify its origin (where it's assigned, returned from, passed in)\n3. Walk backward until you hit a boundary — user input, IO, constant, or unmodified upstream code\n4. Each node in this walk is a candidate\n\n### `INTEGRATION_ERROR` — use contract comparison\n\nThe failure is at a component boundary. Candidates are:\n\n- The producer's output schema\u002Fcontract (actual vs declared)\n- The consumer's input expectations (actual vs declared)\n- Any serialization layer between them\n\n### `BUILD_ERROR`, `LINT_VIOLATION` — direct diagnosis\n\nThe tooling has already identified the file:line. The \"isolation\" is trivial. Proceed to Graph with the tooling-reported location as the single candidate.\n\n### `HEISENBUG` — use timing\u002Fstate differential\n\nWith statistical-mode reproduction, run 5× with increased logging. Compare state at key checkpoints across runs:\n\n- What differs between failing and passing runs?\n- Are there race windows? Shared state mutations? External clock\u002Frandom dependencies?\n\nCandidates are the loci where observable state diverges between passing and failing runs.\n\n### `COMPOUND` — accept >1 root candidate\n\nCompound failures have multiple independent roots. Do not force reduction below 2 candidates. Mark them for the Graph phase to confirm independence.\n\n### `SPEC_DEFECT` — validate test intent\n\nDoes the test assert the correct thing? Compare test expectation to:\n\n- The spec (if available — from SPECTRA handoff or issue tracker)\n- Other tests covering the same behavior\n- Recent spec changes\n\nIf the test is wrong, the \"fix\" routes to SPECTRA, not APIVR-Δ.\n\n---\n\n## Ruled-Out Trail — First-Class Evidence\n\nFor every candidate you **remove** from the suspect set, record why. This is not noise — it's the most important output of Phase I.\n\nRequired ruled-out records:\n\n```yaml\nruled_out:\n  - candidate: \"app\u002Fflows\u002Fauth.rb:120-180\"\n    reason: \"Not in stack trace; not modified in last 90 days; called from unrelated path.\"\n    evidence_source: \"git log + stack trace\"\n  - candidate: \"lib\u002Futils\u002Fclock.rb:*\"\n    reason: \"Failing test uses frozen time via test helper; clock utility not reached.\"\n    evidence_source: \"test_helper.rb:12; dep_graph_query(callers_of: Clock.now)\"\n```\n\nMinimum: 3 ruled-out entries per mission. Missions with fewer suggest lazy reduction; harness flags for review.\n\n---\n\n## Writing `fault-surface.md`\n\n```yaml\nmission_id: VIGIL-YYYYMMDD-NNN\nupstream_reproduction: \u003Cref>\nsuspect_set_sources:\n  - stack_trace_closure\n  - recent_churn\n  - scope_bounds\ncandidates:\n  - id: C-001\n    path: \"app\u002Fflows\u002Fvote_casting\u002Frecord_vote.rb\"\n    lines: \"42-78\"\n    kind: code            # code | test | config | schema | data | env\n    suspicion_rank: 1     # 1 = highest\n    rationale: \"Top of failing stack; modified 3 days ago in commit abc123; writes the asserted-against column\"\n  - id: C-002\n    path: \"app\u002Fpolicies\u002Fvoting_authorizer.rb\"\n    lines: \"12-40\"\n    kind: code\n    suspicion_rank: 2\n    rationale: \"Delegate target of C-001; recently modified; appears in stack frame 2\"\nreduction_trail:\n  - step: \"Stack trace closure produced 17 suspects\"\n  - step: \"Churn filter reduced to 8\"\n  - step: \"Scope bounds (auth module only) reduced to 5\"\n  - step: \"Dependency walk confirmed 2 additional candidates outside initial stack\"\nruled_out:\n  - \u003Cas above, minimum 3 entries>\nscope_bounds:\n  include: [\"app\u002Fflows\u002F**\", \"app\u002Fpolicies\u002F**\"]\n  exclude: [\"spec\u002F**\", \"lib\u002Flegacy\u002F**\"]\n```\n\n---\n\n## Anti-patterns\n\n- **Reading entire files.** Windowed reads only, after narrowing by symbol or graph query.\n- **Inferring candidates.** Every candidate needs a path:lines anchor and a traceable reason.\n- **Cascading reduction too aggressively.** If you're down to 0 candidates, you reduced wrong — escalate.\n- **Chasing a candidate because it \"looks suspicious.\"** Anchor the suspicion in stack trace, churn, or dep graph. Vibes are not evidence.\n- **Skipping ruled-out records.** The next VIGIL mission on related code will thank you.\n\n---\n\n*VIGIL Phase I — reduction with evidence, ≤8 candidates to Graph*\n",{"name":5,"metadata":44,"description":7,"allowed-tools":47},{"phase":45,"methodology":46},"I","VIGIL","git_bisect, git_log, view_file, search_symbol, search_text, run_test, dep_graph_query","main","42ce382409178ece647a93f841a86119e8d74a65",".eidolons\u002Fvigil\u002Fskills\u002Fisolate",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":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add Rynaro\u002Fprisma --skill vigil-isolate",{"tool":63,"command":64},"bunx","bunx skills add Rynaro\u002Fprisma --skill vigil-isolate",{"tool":66,"command":67},"pnpm","pnpm dlx skills add Rynaro\u002Fprisma --skill vigil-isolate","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FRynaro\u002Fprisma\u002Fblob\u002Fmain\u002F.eidolons\u002Fvigil\u002Fskills\u002Fisolate\u002FSKILL.md",true,[],[72,98,126,149,179,200],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":39},"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",[],[79,80,81,29,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],"verify","vivi verify incoming","verify incoming","sha-256","json","orchestrator","process","dispatch","back","message","upstream","id","receiver","block","ecl","hand","load","for","when",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":109,"publishedAt":39},"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",[104],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000040","财务","PROFESSION","适用职业",[110,111,112,113,21,114,115,116,117,118,119,120,121,95,122,123,124,125,33,97],"parallel","tracks","parallel tracks","vivi parallel tracks","only","reflection","clean","plan phase","as","verifier","form","multi","worktree isolation","track","gating","single",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":39},"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",[],[133,134,135,136,137,22,26,138,25,139,140,141,142,143,144,145,146,147,148,97],"methodology","vivi methodology","planning","escalation","Rules","complexity","task","cycle","feature implementation","brownfield","full","requirements","feature","complete","thresholds","you",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":160,"publishedAt":39},"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",[155],{"categoryNo":156,"categoryName":157,"taxonomyType":158,"taxonomyTypeDesc":159},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,148,177,178,97],"memory","management","memory management","vivi memory management","MCP","commit","tasks","plan","write","never","files","route","across","local","end","session start","standalone","at",{"skillNo":180,"name":181,"nameZh":6,"description":182,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":183,"categories":184,"keywords":185,"publishedAt":39},"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",[],[186,187,188,189,190,191,192,193,194,195,196,22,139,197,118,198,199,95,124,33],"loop","native","vivi loop native","oracle","sandbox","test","core","game","feedback","autonomous","fix","tests","fresh","host",{"skillNo":201,"name":202,"nameZh":6,"description":203,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":204,"categories":205,"keywords":206,"publishedAt":39},"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",[],[207,208,36,136,209,210,22,211,212,147,213,214,215,95,178,216,217,33,97,218],"recovery","vivi failure recovery","classification","taxonomy","three","pattern","error","retries","random","break","bounded","same"]