[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71S353NSMQ996BNM1RTF3T0":3,"skill-same:01M71S353NSMQ996BNM1RTF3T0":70},{"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":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":51,"repositoryHomepageUrl":6,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M71S353NSMQ996BNM1RTF3T0","vivi-context-engineering",null,"Load at the start of the Vivi Analyze phase. Techniques for building a repo map, running progressive disclosure, and maximising context relevance for coding tasks. Use whenever you need to understand unfamiliar code before editing it, or when an existing Discovery Report feels under-grounded.","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\u002Fvivi\u002Fskills\u002Fcontext-engineering\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"context","vivi context engineering","context engineering","engineering","start","discovery","analyze","coding","editing","repo","code","map","you","at","techniques","for","phase","when","running","tasks","2026-11-10 13:02:02",false,"---\nname: vivi-context-engineering\ndescription: \"Load at the start of the Vivi Analyze phase. Techniques for building a repo map, running progressive disclosure, and maximising context relevance for coding tasks. Use whenever you need to understand unfamiliar code before editing it, or when an existing Discovery Report feels under-grounded.\"\nmetadata:\n  methodology: Vivi\n  phase: A-Analyze\n---\n\n# Context Engineering Skill\n\nTechniques for maximizing the quality and relevance of information available during coding tasks. The primary constraint on agent performance is not reasoning capability but context quality.\n\n**atlas-aci availability.** When the `mcp__atlas-aci__*` tools are wired (granted via the nexus atlas-aci MCP grant), use them for every step of the L1→L4 ladder and the in-loop loci-driven assembly. When atlas-aci is NOT available (tools absent or unavailable), degrade gracefully to the documented manual-read fallback for each rung — the fallback procedures are described inline below. Never hard-depend on atlas-aci.\n\n---\n\n## Principle: Progressive Disclosure\n\nDo NOT front-load context. Discover incrementally:\n\n```\n1. Directory structure (cheap: ~100 tokens)\n2. Repo map \u002F structural summary (moderate: ~500-1K tokens)\n3. Interface signatures of relevant files (moderate: ~200 tokens\u002Ffile)\n4. Full file contents ONLY for files being modified (expensive: varies)\n```\n\nNever read full file contents \"just in case.\" Every token of context displaces reasoning capacity.\n\n---\n\n## Repo Map Generation\n\n### Purpose\nCreate a compressed structural overview of the codebase that fits in ~500-1K tokens. This gives you a bird's-eye navigation map before diving into details.\n\n### Procedure\n\n```\nStep 1: Directory scan\n  atlas-aci: mcp__atlas-aci__list_dir(path=\".\", depth=3)\n    → returns a tree of directories and files at the requested depth.\n    → identify top-level organization (by domain? by layer? hybrid?).\n    → note: config\u002F, lib\u002F, app\u002F, spec\u002Ftest\u002F locations.\n  If atlas-aci unavailable: ls -R . (piped with depth limiting) or find . -maxdepth 3 -type f | sort.\n\nStep 2: Structural extraction (for target domain + adjacent domains)\n  For each key file, extract ONLY:\n    - Class\u002Fmodule name\n    - Public method signatures (name + params, not body)\n    - Key imports\u002Fdependencies\n    - Inheritance\u002Fmixin chain\n  Skip: private methods, implementation details, comments.\n  atlas-aci: mcp__atlas-aci__view_file(path=\u003Cfile>, start_line=1, end_line=60)\n    → ALWAYS paginate. Never dump a full file in one call. Use start_line\u002Fend_line to\n       read just the header block (imports + class definition + public interface).\n    → Read additional ranges only if the interface is not visible in the first page.\n  If atlas-aci unavailable: read only the first ~60 lines of each key file manually.\n\nStep 3: Reference ranking\n  - Which files are imported by the most other files? (high leverage, high risk)\n  atlas-aci: mcp__atlas-aci__graph_query(symbol=\u003Cmodule_name>, direction=\"dependents\")\n    → lists files that import\u002Fdepend on a given symbol or module.\n  - Which files import the most other files? (integration points)\n  atlas-aci: mcp__atlas-aci__graph_query(symbol=\u003Cmodule_name>, direction=\"dependencies\")\n  If atlas-aci unavailable: grep -r \"require\\|import\\|from\" --include=\"*.{ext}\" -l | sort | uniq -c | sort -rn.\n\nStep 4: Compress to summary\n  Format:\n    DOMAIN\u002F\n      Model (inherits BaseModel) — #create, #update, #archive [tested]\n      Repository — #find_by_id, #search, #count [tested]\n      Service — #execute, #validate [untested ⚠️]\n      Component — renders list, detail views [tested]\n  atlas-aci: mcp__atlas-aci__memex_read(query=\u003Cdomain summary fragment>)\n    → pull any previously stored excerpt from the ATLAS-built memex for this repo.\n    → If a memex entry exists, use it to seed the repo map instead of re-scanning.\n  If atlas-aci unavailable: skip memex lookup; build the map from scratch.\n```\n\n### Output\nA concise map you reference throughout the task. Update it if you discover new relevant files.\n\n---\n\n## Hierarchical Localization\n\nWhen searching for where to make changes, narrow progressively:\n\n```\nLevel 1 — Domain identification (atlas-aci: mcp__atlas-aci__list_dir)\n  \"Which top-level domain\u002Fmodule is this feature in?\"\n  → mcp__atlas-aci__list_dir(path=\".\", depth=2)\n    Scan the returned tree for top-level modules\u002Fpackages\u002Fapps.\n    Identify 1-3 candidate domains.\n  If atlas-aci unavailable: scan directory names, README, route definitions manually.\n  Output: 1-3 candidate domains.\n\nLevel 2 — File identification (atlas-aci: mcp__atlas-aci__search_text)\n  \"Which files within the domain are relevant?\"\n  → mcp__atlas-aci__search_text(query=\u003Cfeature keyword or symbol name>, path=\u003Cdomain dir>)\n    Returns file paths + matching lines (match-only, no full-file dump).\n    Ranks results by relevance — inspect the top entries.\n  If atlas-aci unavailable: grep -r \"\u003Ckeyword>\" --include=\"*.\u003Cext>\" -l | head -20.\n  Output: 3-8 candidate files with relevance ranking.\n\nLevel 3 — Symbol identification (atlas-aci: mcp__atlas-aci__search_symbol + mcp__atlas-aci__graph_query)\n  \"Which specific classes, methods, or functions need to change?\"\n  → mcp__atlas-aci__search_symbol(symbol=\u003Cname>, exact=false)\n    Returns definition locations (file:line) for classes, functions, methods.\n  → mcp__atlas-aci__graph_query(symbol=\u003Cname>, direction=\"callers\")\n    Returns the call-graph: who calls this symbol (callers \u002F dependents).\n    Use to understand the blast radius of a change before making it.\n  If atlas-aci unavailable: grep -rn \"def \u003Cname>\\|class \u003Cname>\\|function \u003Cname>\" --include=\"*.\u003Cext>\".\n  Output: specific file:line targets for modification.\n\nLevel 4 — Context gathering (atlas-aci: mcp__atlas-aci__view_file PAGINATED)\n  \"What do I need to understand about these specific symbols?\"\n  → mcp__atlas-aci__view_file(path=\u003Cfile>, start_line=\u003Ctarget-N>, end_line=\u003Ctarget+N>)\n    Read ONLY the window around the identified symbol — ±30-50 lines.\n    Make multiple paginated calls if the implementation spans multiple ranges.\n    NEVER call view_file with start_line=1, end_line=\u003Clarge> — that is a full file dump.\n  → Also view the corresponding test file around the relevant test (same pagination rule).\n  If atlas-aci unavailable: read the specific section of the file; avoid full-file reads.\n  Output: full understanding of change targets + their contracts.\n```\n\n**Rule**: Do not jump to Level 4 without completing Levels 1-3. Premature deep reading wastes context budget on irrelevant code.\n\n### Test Oracle Probe (atlas-aci: mcp__atlas-aci__test_dry_run)\n\nBefore executing any test command, get a preview of which tests would run:\n\n```\nmcp__atlas-aci__test_dry_run(command=\u003Cthe test command>, path=\u003Crepo root or subdir>)\n  → returns the list of test IDs that the command would select, without running them.\n  → use this to confirm the --tests \u002F --regression \u002F --reproduction commands select\n    the right tests before committing them to the loop's --tests argument.\n```\n\nIf atlas-aci unavailable: verify with `\u003Ctest-cmd> --collect-only` (pytest) or `--dry-run` (bats\u002Frspec) before binding to the loop.\n\n---\n\n## In-Loop Loci-Driven Assembly (S1.4-assembly)\n\nThis is the per-iteration context assembly step that runs INSIDE the `--fix-hook` invocation, after the substrate delivers localized feedback. It replaces \"re-read whole files\" with a precision-targeted evidence-pull.\n\n**When:** at the START of each `--fix-hook` invocation, immediately after reading `$EIDOLONS_SANDBOX_FEEDBACK`.\n\n```\n# 1. Parse the feedback signal\nfeedback = parse_json($EIDOLONS_SANDBOX_FEEDBACK)\n  # fields: loci:[file:line...], test_name:[...], assertion:[...], phase, attempt, failing\n\n# 2. For each locus in feedback.loci (cap at 5 loci to bound context cost):\nfor locus in feedback.loci[:5]:\n  file, line = parse(locus)   # \"path\u002Fto\u002Ffoo.go:42\"\n\n  # 3. View the failure site (paginated — window around the reported line)\n  mcp__atlas-aci__view_file(path=file, start_line=max(1,line-25), end_line=line+25)\n    → anchor evidence: the exact code the failing assertion references.\n\n  # 4. Identify the symbol under failure\n  mcp__atlas-aci__search_symbol(symbol=\u003Cinferred symbol from locus context>, exact=false)\n    → confirms definition locations; resolves which impl owns the failing path.\n\n  # 5. Pull the call graph for blast-radius awareness\n  mcp__atlas-aci__graph_query(symbol=\u003Csymbol from step 4>, direction=\"callers\")\n    → reveals who calls this code — prevents a fix that breaks callers.\n\n# 6. View the failing test (paginated — the test assertion window)\nfor test_name in feedback.test_name[:3]:\n  mcp__atlas-aci__search_symbol(symbol=test_name, exact=true)\n    → locate the test function definition\n  mcp__atlas-aci__view_file(path=\u003Ctest file>, start_line=\u003Ctest line-5>, end_line=\u003Ctest line+30>)\n    → read the assertion the test makes — confirms what \"passing\" means.\n```\n\n**Result:** a tight, evidence-anchored repair context (typically 3-8 paginated excerpts, ~1-3K tokens) that directly targets the reported failure, NOT a broad file re-read.\n\n**If atlas-aci unavailable:** degrade to manual reads — for each locus, read only the surrounding 40-line window of the failing file; grep for the test name to find its location; read only that test's immediate body. Same principle: target the locus, do not re-read whole files.\n\n---\n\n## Context Budget Management\n\n### Token Budget Allocation (approximate for 128K context window)\n\n| Category | Budget | Purpose |\n|----------|--------|---------|\n| System instructions + methodology | ~4K | Always loaded |\n| Active skill (current phase) | ~2-3K | Loaded per-phase |\n| Repo map | ~1K | Generated in Analyze |\n| Memory recall | ~1-2K | Queried in Analyze |\n| Discovery report | ~1-2K | Produced in Analyze |\n| Execution plan | ~1-2K | Produced in Plan |\n| Active file contents | ~10-30K | During Implement |\n| Test output \u002F error logs | ~2-5K | During Verify\u002FReflect |\n| In-loop loci assembly | ~1-3K | Per fix-hook iteration |\n| Conversation history | Remainder | Slides as session progresses |\n\n### Context Pressure Signals\n\nWatch for these signs that context is becoming stale or overloaded:\n\n| Signal | Response |\n|--------|----------|\n| Forgetting earlier decisions | Re-inject execution plan summary |\n| Repeating a search already done | Check if repo map is still in context |\n| Hallucinating file contents | Re-read the actual file via view_file; do not rely on memory |\n| Losing track of task progress | Re-inject task progress checklist |\n| Contradicting earlier analysis | Summarize current state and restart from checkpoint |\n\n### Context Refresh Protocol\n\nWhen context pressure is detected:\n\n```\n1. Summarize current state in a structured checkpoint:\n   - What has been accomplished\n   - What remains\n   - Key decisions made and why\n   - Current blockers\n\n2. Drop stale context:\n   - File contents from already-completed steps\n   - Superseded plan versions\n   - Resolved error logs\n\n3. Re-inject essential context:\n   - Task goal and acceptance criteria\n   - Execution plan (current version)\n   - Task progress checklist\n   - Repo map (if still relevant)\n```\n\n---\n\n## Asset Search Strategies\n\n### For Internal Asset Discovery\n\nUse multiple search strategies in order of efficiency:\n\n```\n1. Convention-based search (fastest)\n   - Look in expected locations based on project structure\n   - e.g., model for \"Widget\" → app\u002Fmodels\u002Fwidget\u002F or app\u002Fmodels\u002Fwidget.rb\n   atlas-aci: mcp__atlas-aci__list_dir(path=\"app\u002Fmodels\", depth=2)\n\n2. Naming pattern search (atlas-aci: mcp__atlas-aci__search_text)\n   - mcp__atlas-aci__search_text(query=\"widget\", path=\".\")\n     Returns matching file:line pairs — much cheaper than grep -r piped output.\n   If atlas-aci unavailable:\n   - grep -r \"widget\" --include=\"*.rb\" -l\n   - grep -r \"def.*widget\" --include=\"*.rb\"\n\n3. Symbol search (atlas-aci: mcp__atlas-aci__search_symbol)\n   - mcp__atlas-aci__search_symbol(symbol=\"WidgetController\", exact=true)\n     Resolves definition location directly.\n   If atlas-aci unavailable: grep -rn \"class WidgetController\" --include=\"*.rb\"\n\n4. Dependency chain traversal (atlas-aci: mcp__atlas-aci__graph_query)\n   - mcp__atlas-aci__graph_query(symbol=\"WidgetController\", direction=\"dependencies\")\n     Returns what WidgetController already uses.\n   If atlas-aci unavailable: follow imports\u002Frequires manually from the identified file.\n\n5. Test-based discovery\n   - mcp__atlas-aci__search_text(query=\"widget\", path=\"spec\u002F\")\n     Search test files for how existing features are tested.\n   If atlas-aci unavailable: grep -r \"widget\" spec\u002F --include=\"*_spec.rb\" -l\n```\n\n### For Understanding Existing Code\n\nBefore reading a full file, try these cheaper approaches:\n\n```\n1. Read ONLY the class\u002Fmodule definition + public interface\n   atlas-aci: mcp__atlas-aci__view_file(path=\u003Cfile>, start_line=1, end_line=60)\n\n2. Read the corresponding test file (often more informative than source)\n   atlas-aci: mcp__atlas-aci__view_file(path=\u003Ctest_file>, start_line=1, end_line=80)\n\n3. Read callers of the code (reveals actual usage patterns)\n   atlas-aci: mcp__atlas-aci__graph_query(symbol=\u003Cname>, direction=\"callers\")\n\n4. Retrieve stored excerpts from the ATLAS memex (fastest if available)\n   atlas-aci: mcp__atlas-aci__memex_read(query=\u003Csymbol or domain name>)\n```\n\n---\n\n## Language-Specific Context Hints\n\n### Typed Languages (TypeScript, Go, Rust, Java)\n- Interface\u002Ftype definitions are extremely high-value context\n- Read type signatures BEFORE implementations\n- Types serve as self-documenting contracts\n- atlas-aci: `mcp__atlas-aci__search_symbol(symbol=\u003CInterfaceName>, exact=true)` to locate type definitions quickly\n\n### Dynamic Languages (Ruby, Python, JavaScript)\n- Test files are MORE important than source (they document behavior)\n- Look for type annotations, YARD docs, JSDoc, or type stubs\n- Pay special attention to framework conventions (Rails, Django)\n- atlas-aci: `mcp__atlas-aci__search_text(query=\u003Cmethod_name>, path=\"spec\u002F\")` to find usage patterns\n\n### Configuration-Heavy Frameworks (Rails, Django, Spring)\n- Route files map URLs to handlers (high-value context)\n- Database schema\u002Fmigrations define data model\n- Initializers and middleware define cross-cutting behavior\n- atlas-aci: `mcp__atlas-aci__list_dir(path=\"config\", depth=2)` to map configuration structure\n\n---\n\n## Integration with Vivi Phases\n\n| Phase | Context Engineering Action |\n|-------|--------------------------|\n| **A** Analyze | `list_dir` repo scan → `search_text`\u002F`search_symbol` localization → `view_file` interfaces → `memex_read` prior excerpts |\n| **P** Plan | `search_text` in test dirs → `view_file` (paginated) for test patterns → `test_dry_run` to preview test selection |\n| **I** Implement | `view_file` (paginated, active files only) → `graph_query` for blast-radius → refresh when switching focus |\n| **V** Verify | **in-loop loci assembly** (see §In-Loop Loci-Driven Assembly above) → `view_file` failure site → `search_symbol` + `graph_query` callers |\n| **R** Reflect | `recall` failure signatures from CRYSTALIUM → `view_file` around the re-failing site → ensure original requirements in context |\n| **Δ** Delta | `list_dir` touched domains → `graph_query` for normalization candidates → `memex_read` for prior observations |\n\n---\n\n## Verify Upstream Envelopes (ECL v2.0)\n\nWhen the Analyze phase ingests an artefact handed off by ATLAS (`scout-report`), SPECTRA (`spec`), VIGIL (`root-cause-report`), or FORGE (`reasoning-report`), check for a sibling `${P%.*}.envelope.json` next to the payload.\n\nIf present:\n\n1. Load `skills\u002Fverify-incoming\u002FSKILL.md`.\n2. Run the validation pipeline (schema → integrity → contract match).\n3. On `verify_pass`, proceed.\n4. On `verify_fail`, emit the warning to stderr, append the failure code to `.eidolons\u002F.trace\u002F\u003Cthread_id>.jsonl`, **and continue** — verification is opt-in \u002F warn-only at ECL v2.0.\n\nIf the sibling envelope is absent, proceed without verification. This is expected during the ECL rollout window when upstream Eidolons may not yet have adopted.\n\n---\n\n*Context Engineering Skill — atlas-aci-driven (L1 list_dir → L2 search_text → L3 search_symbol\u002Fgraph_query → L4 view_file paginated) + in-loop loci assembly (S1.4-assembly) + manual fallback when atlas-aci absent*\n","# Context Engineering Skill\n\nTechniques for maximizing the quality and relevance of information available during coding tasks. The primary constraint on agent performance is not reasoning capability but context quality.\n\n**atlas-aci availability.** When the `mcp__atlas-aci__*` tools are wired (granted via the nexus atlas-aci MCP grant), use them for every step of the L1→L4 ladder and the in-loop loci-driven assembly. When atlas-aci is NOT available (tools absent or unavailable), degrade gracefully to the documented manual-read fallback for each rung — the fallback procedures are described inline below. Never hard-depend on atlas-aci.\n\n---\n\n## Principle: Progressive Disclosure\n\nDo NOT front-load context. Discover incrementally:\n\n```\n1. Directory structure (cheap: ~100 tokens)\n2. Repo map \u002F structural summary (moderate: ~500-1K tokens)\n3. Interface signatures of relevant files (moderate: ~200 tokens\u002Ffile)\n4. Full file contents ONLY for files being modified (expensive: varies)\n```\n\nNever read full file contents \"just in case.\" Every token of context displaces reasoning capacity.\n\n---\n\n## Repo Map Generation\n\n### Purpose\nCreate a compressed structural overview of the codebase that fits in ~500-1K tokens. This gives you a bird's-eye navigation map before diving into details.\n\n### Procedure\n\n```\nStep 1: Directory scan\n  atlas-aci: mcp__atlas-aci__list_dir(path=\".\", depth=3)\n    → returns a tree of directories and files at the requested depth.\n    → identify top-level organization (by domain? by layer? hybrid?).\n    → note: config\u002F, lib\u002F, app\u002F, spec\u002Ftest\u002F locations.\n  If atlas-aci unavailable: ls -R . (piped with depth limiting) or find . -maxdepth 3 -type f | sort.\n\nStep 2: Structural extraction (for target domain + adjacent domains)\n  For each key file, extract ONLY:\n    - Class\u002Fmodule name\n    - Public method signatures (name + params, not body)\n    - Key imports\u002Fdependencies\n    - Inheritance\u002Fmixin chain\n  Skip: private methods, implementation details, comments.\n  atlas-aci: mcp__atlas-aci__view_file(path=\u003Cfile>, start_line=1, end_line=60)\n    → ALWAYS paginate. Never dump a full file in one call. Use start_line\u002Fend_line to\n       read just the header block (imports + class definition + public interface).\n    → Read additional ranges only if the interface is not visible in the first page.\n  If atlas-aci unavailable: read only the first ~60 lines of each key file manually.\n\nStep 3: Reference ranking\n  - Which files are imported by the most other files? (high leverage, high risk)\n  atlas-aci: mcp__atlas-aci__graph_query(symbol=\u003Cmodule_name>, direction=\"dependents\")\n    → lists files that import\u002Fdepend on a given symbol or module.\n  - Which files import the most other files? (integration points)\n  atlas-aci: mcp__atlas-aci__graph_query(symbol=\u003Cmodule_name>, direction=\"dependencies\")\n  If atlas-aci unavailable: grep -r \"require\\|import\\|from\" --include=\"*.{ext}\" -l | sort | uniq -c | sort -rn.\n\nStep 4: Compress to summary\n  Format:\n    DOMAIN\u002F\n      Model (inherits BaseModel) — #create, #update, #archive [tested]\n      Repository — #find_by_id, #search, #count [tested]\n      Service — #execute, #validate [untested ⚠️]\n      Component — renders list, detail views [tested]\n  atlas-aci: mcp__atlas-aci__memex_read(query=\u003Cdomain summary fragment>)\n    → pull any previously stored excerpt from the ATLAS-built memex for this repo.\n    → If a memex entry exists, use it to seed the repo map instead of re-scanning.\n  If atlas-aci unavailable: skip memex lookup; build the map from scratch.\n```\n\n### Output\nA concise map you reference throughout the task. Update it if you discover new relevant files.\n\n---\n\n## Hierarchical Localization\n\nWhen searching for where to make changes, narrow progressively:\n\n```\nLevel 1 — Domain identification (atlas-aci: mcp__atlas-aci__list_dir)\n  \"Which top-level domain\u002Fmodule is this feature in?\"\n  → mcp__atlas-aci__list_dir(path=\".\", depth=2)\n    Scan the returned tree for top-level modules\u002Fpackages\u002Fapps.\n    Identify 1-3 candidate domains.\n  If atlas-aci unavailable: scan directory names, README, route definitions manually.\n  Output: 1-3 candidate domains.\n\nLevel 2 — File identification (atlas-aci: mcp__atlas-aci__search_text)\n  \"Which files within the domain are relevant?\"\n  → mcp__atlas-aci__search_text(query=\u003Cfeature keyword or symbol name>, path=\u003Cdomain dir>)\n    Returns file paths + matching lines (match-only, no full-file dump).\n    Ranks results by relevance — inspect the top entries.\n  If atlas-aci unavailable: grep -r \"\u003Ckeyword>\" --include=\"*.\u003Cext>\" -l | head -20.\n  Output: 3-8 candidate files with relevance ranking.\n\nLevel 3 — Symbol identification (atlas-aci: mcp__atlas-aci__search_symbol + mcp__atlas-aci__graph_query)\n  \"Which specific classes, methods, or functions need to change?\"\n  → mcp__atlas-aci__search_symbol(symbol=\u003Cname>, exact=false)\n    Returns definition locations (file:line) for classes, functions, methods.\n  → mcp__atlas-aci__graph_query(symbol=\u003Cname>, direction=\"callers\")\n    Returns the call-graph: who calls this symbol (callers \u002F dependents).\n    Use to understand the blast radius of a change before making it.\n  If atlas-aci unavailable: grep -rn \"def \u003Cname>\\|class \u003Cname>\\|function \u003Cname>\" --include=\"*.\u003Cext>\".\n  Output: specific file:line targets for modification.\n\nLevel 4 — Context gathering (atlas-aci: mcp__atlas-aci__view_file PAGINATED)\n  \"What do I need to understand about these specific symbols?\"\n  → mcp__atlas-aci__view_file(path=\u003Cfile>, start_line=\u003Ctarget-N>, end_line=\u003Ctarget+N>)\n    Read ONLY the window around the identified symbol — ±30-50 lines.\n    Make multiple paginated calls if the implementation spans multiple ranges.\n    NEVER call view_file with start_line=1, end_line=\u003Clarge> — that is a full file dump.\n  → Also view the corresponding test file around the relevant test (same pagination rule).\n  If atlas-aci unavailable: read the specific section of the file; avoid full-file reads.\n  Output: full understanding of change targets + their contracts.\n```\n\n**Rule**: Do not jump to Level 4 without completing Levels 1-3. Premature deep reading wastes context budget on irrelevant code.\n\n### Test Oracle Probe (atlas-aci: mcp__atlas-aci__test_dry_run)\n\nBefore executing any test command, get a preview of which tests would run:\n\n```\nmcp__atlas-aci__test_dry_run(command=\u003Cthe test command>, path=\u003Crepo root or subdir>)\n  → returns the list of test IDs that the command would select, without running them.\n  → use this to confirm the --tests \u002F --regression \u002F --reproduction commands select\n    the right tests before committing them to the loop's --tests argument.\n```\n\nIf atlas-aci unavailable: verify with `\u003Ctest-cmd> --collect-only` (pytest) or `--dry-run` (bats\u002Frspec) before binding to the loop.\n\n---\n\n## In-Loop Loci-Driven Assembly (S1.4-assembly)\n\nThis is the per-iteration context assembly step that runs INSIDE the `--fix-hook` invocation, after the substrate delivers localized feedback. It replaces \"re-read whole files\" with a precision-targeted evidence-pull.\n\n**When:** at the START of each `--fix-hook` invocation, immediately after reading `$EIDOLONS_SANDBOX_FEEDBACK`.\n\n```\n# 1. Parse the feedback signal\nfeedback = parse_json($EIDOLONS_SANDBOX_FEEDBACK)\n  # fields: loci:[file:line...], test_name:[...], assertion:[...], phase, attempt, failing\n\n# 2. For each locus in feedback.loci (cap at 5 loci to bound context cost):\nfor locus in feedback.loci[:5]:\n  file, line = parse(locus)   # \"path\u002Fto\u002Ffoo.go:42\"\n\n  # 3. View the failure site (paginated — window around the reported line)\n  mcp__atlas-aci__view_file(path=file, start_line=max(1,line-25), end_line=line+25)\n    → anchor evidence: the exact code the failing assertion references.\n\n  # 4. Identify the symbol under failure\n  mcp__atlas-aci__search_symbol(symbol=\u003Cinferred symbol from locus context>, exact=false)\n    → confirms definition locations; resolves which impl owns the failing path.\n\n  # 5. Pull the call graph for blast-radius awareness\n  mcp__atlas-aci__graph_query(symbol=\u003Csymbol from step 4>, direction=\"callers\")\n    → reveals who calls this code — prevents a fix that breaks callers.\n\n# 6. View the failing test (paginated — the test assertion window)\nfor test_name in feedback.test_name[:3]:\n  mcp__atlas-aci__search_symbol(symbol=test_name, exact=true)\n    → locate the test function definition\n  mcp__atlas-aci__view_file(path=\u003Ctest file>, start_line=\u003Ctest line-5>, end_line=\u003Ctest line+30>)\n    → read the assertion the test makes — confirms what \"passing\" means.\n```\n\n**Result:** a tight, evidence-anchored repair context (typically 3-8 paginated excerpts, ~1-3K tokens) that directly targets the reported failure, NOT a broad file re-read.\n\n**If atlas-aci unavailable:** degrade to manual reads — for each locus, read only the surrounding 40-line window of the failing file; grep for the test name to find its location; read only that test's immediate body. Same principle: target the locus, do not re-read whole files.\n\n---\n\n## Context Budget Management\n\n### Token Budget Allocation (approximate for 128K context window)\n\n| Category | Budget | Purpose |\n|----------|--------|---------|\n| System instructions + methodology | ~4K | Always loaded |\n| Active skill (current phase) | ~2-3K | Loaded per-phase |\n| Repo map | ~1K | Generated in Analyze |\n| Memory recall | ~1-2K | Queried in Analyze |\n| Discovery report | ~1-2K | Produced in Analyze |\n| Execution plan | ~1-2K | Produced in Plan |\n| Active file contents | ~10-30K | During Implement |\n| Test output \u002F error logs | ~2-5K | During Verify\u002FReflect |\n| In-loop loci assembly | ~1-3K | Per fix-hook iteration |\n| Conversation history | Remainder | Slides as session progresses |\n\n### Context Pressure Signals\n\nWatch for these signs that context is becoming stale or overloaded:\n\n| Signal | Response |\n|--------|----------|\n| Forgetting earlier decisions | Re-inject execution plan summary |\n| Repeating a search already done | Check if repo map is still in context |\n| Hallucinating file contents | Re-read the actual file via view_file; do not rely on memory |\n| Losing track of task progress | Re-inject task progress checklist |\n| Contradicting earlier analysis | Summarize current state and restart from checkpoint |\n\n### Context Refresh Protocol\n\nWhen context pressure is detected:\n\n```\n1. Summarize current state in a structured checkpoint:\n   - What has been accomplished\n   - What remains\n   - Key decisions made and why\n   - Current blockers\n\n2. Drop stale context:\n   - File contents from already-completed steps\n   - Superseded plan versions\n   - Resolved error logs\n\n3. Re-inject essential context:\n   - Task goal and acceptance criteria\n   - Execution plan (current version)\n   - Task progress checklist\n   - Repo map (if still relevant)\n```\n\n---\n\n## Asset Search Strategies\n\n### For Internal Asset Discovery\n\nUse multiple search strategies in order of efficiency:\n\n```\n1. Convention-based search (fastest)\n   - Look in expected locations based on project structure\n   - e.g., model for \"Widget\" → app\u002Fmodels\u002Fwidget\u002F or app\u002Fmodels\u002Fwidget.rb\n   atlas-aci: mcp__atlas-aci__list_dir(path=\"app\u002Fmodels\", depth=2)\n\n2. Naming pattern search (atlas-aci: mcp__atlas-aci__search_text)\n   - mcp__atlas-aci__search_text(query=\"widget\", path=\".\")\n     Returns matching file:line pairs — much cheaper than grep -r piped output.\n   If atlas-aci unavailable:\n   - grep -r \"widget\" --include=\"*.rb\" -l\n   - grep -r \"def.*widget\" --include=\"*.rb\"\n\n3. Symbol search (atlas-aci: mcp__atlas-aci__search_symbol)\n   - mcp__atlas-aci__search_symbol(symbol=\"WidgetController\", exact=true)\n     Resolves definition location directly.\n   If atlas-aci unavailable: grep -rn \"class WidgetController\" --include=\"*.rb\"\n\n4. Dependency chain traversal (atlas-aci: mcp__atlas-aci__graph_query)\n   - mcp__atlas-aci__graph_query(symbol=\"WidgetController\", direction=\"dependencies\")\n     Returns what WidgetController already uses.\n   If atlas-aci unavailable: follow imports\u002Frequires manually from the identified file.\n\n5. Test-based discovery\n   - mcp__atlas-aci__search_text(query=\"widget\", path=\"spec\u002F\")\n     Search test files for how existing features are tested.\n   If atlas-aci unavailable: grep -r \"widget\" spec\u002F --include=\"*_spec.rb\" -l\n```\n\n### For Understanding Existing Code\n\nBefore reading a full file, try these cheaper approaches:\n\n```\n1. Read ONLY the class\u002Fmodule definition + public interface\n   atlas-aci: mcp__atlas-aci__view_file(path=\u003Cfile>, start_line=1, end_line=60)\n\n2. Read the corresponding test file (often more informative than source)\n   atlas-aci: mcp__atlas-aci__view_file(path=\u003Ctest_file>, start_line=1, end_line=80)\n\n3. Read callers of the code (reveals actual usage patterns)\n   atlas-aci: mcp__atlas-aci__graph_query(symbol=\u003Cname>, direction=\"callers\")\n\n4. Retrieve stored excerpts from the ATLAS memex (fastest if available)\n   atlas-aci: mcp__atlas-aci__memex_read(query=\u003Csymbol or domain name>)\n```\n\n---\n\n## Language-Specific Context Hints\n\n### Typed Languages (TypeScript, Go, Rust, Java)\n- Interface\u002Ftype definitions are extremely high-value context\n- Read type signatures BEFORE implementations\n- Types serve as self-documenting contracts\n- atlas-aci: `mcp__atlas-aci__search_symbol(symbol=\u003CInterfaceName>, exact=true)` to locate type definitions quickly\n\n### Dynamic Languages (Ruby, Python, JavaScript)\n- Test files are MORE important than source (they document behavior)\n- Look for type annotations, YARD docs, JSDoc, or type stubs\n- Pay special attention to framework conventions (Rails, Django)\n- atlas-aci: `mcp__atlas-aci__search_text(query=\u003Cmethod_name>, path=\"spec\u002F\")` to find usage patterns\n\n### Configuration-Heavy Frameworks (Rails, Django, Spring)\n- Route files map URLs to handlers (high-value context)\n- Database schema\u002Fmigrations define data model\n- Initializers and middleware define cross-cutting behavior\n- atlas-aci: `mcp__atlas-aci__list_dir(path=\"config\", depth=2)` to map configuration structure\n\n---\n\n## Integration with Vivi Phases\n\n| Phase | Context Engineering Action |\n|-------|--------------------------|\n| **A** Analyze | `list_dir` repo scan → `search_text`\u002F`search_symbol` localization → `view_file` interfaces → `memex_read` prior excerpts |\n| **P** Plan | `search_text` in test dirs → `view_file` (paginated) for test patterns → `test_dry_run` to preview test selection |\n| **I** Implement | `view_file` (paginated, active files only) → `graph_query` for blast-radius → refresh when switching focus |\n| **V** Verify | **in-loop loci assembly** (see §In-Loop Loci-Driven Assembly above) → `view_file` failure site → `search_symbol` + `graph_query` callers |\n| **R** Reflect | `recall` failure signatures from CRYSTALIUM → `view_file` around the re-failing site → ensure original requirements in context |\n| **Δ** Delta | `list_dir` touched domains → `graph_query` for normalization candidates → `memex_read` for prior observations |\n\n---\n\n## Verify Upstream Envelopes (ECL v2.0)\n\nWhen the Analyze phase ingests an artefact handed off by ATLAS (`scout-report`), SPECTRA (`spec`), VIGIL (`root-cause-report`), or FORGE (`reasoning-report`), check for a sibling `${P%.*}.envelope.json` next to the payload.\n\nIf present:\n\n1. Load `skills\u002Fverify-incoming\u002FSKILL.md`.\n2. Run the validation pipeline (schema → integrity → contract match).\n3. On `verify_pass`, proceed.\n4. On `verify_fail`, emit the warning to stderr, append the failure code to `.eidolons\u002F.trace\u002F\u003Cthread_id>.jsonl`, **and continue** — verification is opt-in \u002F warn-only at ECL v2.0.\n\nIf the sibling envelope is absent, proceed without verification. This is expected during the ECL rollout window when upstream Eidolons may not yet have adopted.\n\n---\n\n*Context Engineering Skill — atlas-aci-driven (L1 list_dir → L2 search_text → L3 search_symbol\u002Fgraph_query → L4 view_file paginated) + in-loop loci assembly (S1.4-assembly) + manual fallback when atlas-aci absent*\n",{"name":5,"metadata":44,"description":7},{"phase":45,"methodology":46},"A-Analyze","Vivi","main","42ce382409178ece647a93f841a86119e8d74a65",".eidolons\u002Fvivi\u002Fskills\u002Fcontext-engineering",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":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add Rynaro\u002Fprisma --skill vivi-context-engineering",{"tool":62,"command":63},"bunx","bunx skills add Rynaro\u002Fprisma --skill vivi-context-engineering",{"tool":65,"command":66},"pnpm","pnpm dlx skills add Rynaro\u002Fprisma --skill vivi-context-engineering","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FRynaro\u002Fprisma\u002Fblob\u002Fmain\u002F.eidolons\u002Fvivi\u002Fskills\u002Fcontext-engineering\u002FSKILL.md",true,[],[71,96,125,150,178,199],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"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",[],[78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,34,36],"verify","vivi verify incoming","verify incoming","run","sha-256","json","orchestrator","process","dispatch","back","message","upstream","id","receiver","block","ecl","hand","load",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":107,"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",[102],{"categoryNo":103,"categoryName":104,"taxonomyType":105,"taxonomyTypeDesc":106},"01JBSEEDCAT000000000000040","财务","PROFESSION","适用职业",[108,109,110,111,112,113,114,115,116,117,118,119,120,95,121,122,123,124,35,36],"parallel","tracks","parallel tracks","vivi parallel tracks","file","only","reflection","clean","plan phase","as","verifier","form","multi","worktree isolation","track","gating","single",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":131,"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",[],[132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,31,36],"methodology","vivi methodology","planning","escalation","Rules","use","evidence","complexity","delta","task","cycle","feature implementation","brownfield","full","requirements","feature","complete","thresholds",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":161,"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",[156],{"categoryNo":157,"categoryName":158,"taxonomyType":159,"taxonomyTypeDesc":160},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[162,163,164,165,166,167,38,168,169,170,171,172,173,174,175,176,31,177,32,36],"memory","management","memory management","vivi memory management","MCP","commit","plan","write","never","files","route","across","local","end","session start","standalone",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":184,"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",[],[185,186,187,188,189,190,191,192,193,194,195,137,141,196,117,197,198,95,123,35],"loop","native","vivi loop native","oracle","sandbox","test","core","game","feedback","autonomous","fix","tests","fresh","host",{"skillNo":200,"name":201,"nameZh":6,"description":202,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":203,"categories":204,"keywords":205,"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",[],[206,207,208,135,209,210,137,211,212,149,213,214,215,95,32,216,217,35,36,218],"recovery","vivi failure recovery","debugging","classification","taxonomy","three","pattern","error","retries","random","break","bounded","same"]