{"id":"f5e8a275-2acc-420d-908c-468f42378876","shortId":"xWSpWG","kind":"skill","title":"opencode-context-maintenance","tagline":"Diagnose drift across the OpenCode + Obsidian context stack when vault notes, config, or host reality no longer align. Load when context feels stale or records disagree with reality. Do NOT use for triage, synthesis, or vault CRUD.","description":"# opencode-context-maintenance\n\n## Constraints\n\n- NEVER edit opencode.json, MCP config, model config, or git history automatically\n- NEVER treat old wording as drift without evidence of conflict\n- NEVER read the whole vault; find context entry points only\n- NEVER default to config edits; defer config concerns to user\n- Context is layered (3 layers); check all before recommending\n\n## Trigger Boundary\n\n**Use when:** context is stale, records disagree with reality, configuration changed but notes did not, model/MCP assumptions drifted, OpenCode/Obsidian context should be checked.\n\n**Do NOT use for:**\n- Raw inbox sorting -> `inbox-triage`\n- Week-level meaning extraction -> `weekly-synthesis`\n- Direct vault CRUD -> `obsidian-mcp` alone\n- Vault health diagnosis -> `vault-health-feedback`\n- Promoting material -> `note-promotion`\n\n## Boundaries\n\n- **Owns:** context drift diagnosis, layer comparison, update recommendations\n- **Delegates to:** `vault-health-feedback` (drift reveals deeper vault health issue), `obsidian-mcp` (vault operations needed)\n- **Never absorbs:** inbox routing, synthesis, relationship analysis, promotion, direct config editing\n\n## Continuations\n\n| Condition | Next skill |\n|-----------|-----------|\n| Drift reveals systemic vault health issue | `vault-health-feedback` |\n| Context notes inaccessible, need vault operation | `obsidian-mcp` |\n| Config changes needed that could break environment | Escalate to human |\n\n## Companion Skill\n\nAll vault operations follow `obsidian-mcp`. Forbidden: `obsidian_patch_note`, `obsidian_append_to_note`. Verify every write through readback.\n## Procedure\n\n### Phase 1: Identify Entry Points\n1. `obsidian_list_notes path:\"Meta/\"` -> context source notes\n2. Check OpenCode config state (read-only observation)\n3. Identify which layer is most likely drifted based on user report\n\n### Phase 2: Layer-Specific Diagnosis\n\nWhen checking layers, read `references/examples.md` for drift calibration.\n\n**Long-term vault context** (stable knowledge, methodology, project indexes):\n1. Read context source notes\n2. Compare claims against current vault state\n3. Flag outdated references, dead links, stale assumptions\n\n**Current work context** (active task, recent decisions, preferences):\n1. Check if active project references are current\n2. Verify recent decisions are reflected in context\n3. Flag orphaned \"current\" items that are no longer current\n\n**Host reality context** (OpenCode config, MCP availability, tool constraints):\n1. Compare documented constraints against observed behavior\n2. Check if MCP server version matches documented version\n3. Flag any new errors not captured in context\n\n<details>\n<summary>Layer Checklist Details (expand for specific checks per layer)</summary>\n\nLong-term vault:\n- Are methodology notes still accurate?\n- Do project indexes point to existing notes?\n- Are archived projects still marked as active?\n- Do skill references match current skill versions?\n\nCurrent work:\n- Is the \"current project\" actually current?\n- Are recent decisions reflected in relevant notes?\n- Are any \"TODO\" items completed but not updated?\n- Do \"active\" tags match actual activity?\n\nHost reality:\n- Does obsidian-mcp-server version match documented?\n- Are any \"forbidden\" APIs now working (or vice versa)?\n- Have OpenCode settings changed since last review?\n- Are file paths in context still valid?\n\n</details>\n\n### Phase 3: Compare and Recommend\n\nWhen formatting recommendations, read `references/templates.md`.\n\n1. List disagreements with evidence\n2. Recommend updates: target, why, suggested wording, priority\n3. Put config changes in \"deferred concerns\" -- never auto-apply\n## Gotchas\n\n### Gotcha 1: Treating old wording as drift\n**What happens:** Agent flags notes as \"drifted\" because phrasing is dated but content is still accurate\n**Why it is wrong:** Creates unnecessary churn; old but correct is not drift\n**Correct approach:** Require evidence of actual conflict or new fact before flagging\n\n### Gotcha 2: Editing config directly\n**What happens:** Agent modifies opencode.json or MCP config to \"fix\" drift\n**Why it is wrong:** Config changes can break the environment; not reversible without backup\n**Correct approach:** Always defer config concerns; report and recommend, never auto-edit\n\n### Gotcha 3: Reading the whole vault\n**What happens:** Agent scans all notes looking for inconsistencies\n**Why it is wrong:** Token waste; most notes are not context sources\n**Correct approach:** Identify context entry points (Meta/, project indexes) and check only those\n\n## Validators (CI only, not runtime)\n\n- `validators/pre-check.sh`: Confirms Meta/ path exists and context notes are accessible\n- `validators/post-check.sh`: Verifies no config files were modified\n\n## Exit Criteria\n\n- Every drift finding has evidence of actual conflict\n- Old wording is not treated as drift without conflict\n- No automatic edits to config files\n- All three layers checked before recommending","tags":["opencode","context","maintenance","obsidian","knowledge","workflow","r007b34r","agent-skills","ai-agents","ai-tools","claude-code-skills","digital-garden"],"capabilities":["skill","source-r007b34r","skill-opencode-context-maintenance","topic-agent-skills","topic-ai-agents","topic-ai-tools","topic-claude-code-skills","topic-digital-garden","topic-knowledge-base","topic-knowledge-management","topic-knowledge-workflow","topic-llm","topic-mcp","topic-mcp-server","topic-model-context-protocol"],"categories":["opencode-obsidian-knowledge-workflow"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/r007b34r/opencode-obsidian-knowledge-workflow/opencode-context-maintenance","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add r007b34r/opencode-obsidian-knowledge-workflow","source_repo":"https://github.com/r007b34r/opencode-obsidian-knowledge-workflow","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 6 github stars · SKILL.md body (4,954 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T13:22:59.565Z","embedding":null,"createdAt":"2026-05-18T13:22:59.565Z","updatedAt":"2026-05-18T13:22:59.565Z","lastSeenAt":"2026-05-18T13:22:59.565Z","tsv":"'1':254,258,312,340,375,511,537 '2':267,289,317,348,382,516,585 '3':91,276,324,356,391,502,524,628 'absorb':187 'access':681 'accur':417,558 'across':7 'activ':335,343,431,463,467 'actual':445,466,577,697 'agent':545,591,635 'align':22 'alon':146 'alway':616 'analysi':192 'api':481 'append':244 'appli':534 'approach':573,615,655 'archiv':426 'assumpt':115,331 'auto':533,625 'auto-appli':532 'auto-edit':624 'automat':57,709 'avail':372 'backup':613 'base':284 'behavior':381 'boundari':98,159 'break':225,607 'calibr':301 'captur':397 'chang':109,221,490,527,605 'check':93,121,268,295,341,383,406,664,717 'checklist':401 'churn':565 'ci':668 'claim':319 'companion':230 'compar':318,376,503 'comparison':165 'complet':458 'concern':85,530,619 'condit':198 'config':16,51,53,81,84,195,220,270,370,526,587,596,604,618,685,712 'configur':108 'confirm':673 'conflict':67,578,698,707 'constraint':46,374,378 'content':555 'context':3,11,25,44,74,88,101,118,161,211,264,306,314,334,355,368,399,498,652,657,678 'continu':197 'correct':568,572,614,654 'could':224 'creat':563 'criteria':690 'crud':41,142 'current':321,332,347,359,365,436,439,443,446 'date':553 'dead':328 'decis':338,351,449 'deeper':176 'default':79 'defer':83,529,617 'deleg':168 'detail':402 'diagnos':5 'diagnosi':149,163,293 'direct':140,194,588 'disagr':513 'disagre':30,105 'document':377,389,477 'drift':6,63,116,162,174,201,283,300,542,549,571,599,692,705 'edit':48,82,196,586,626,710 'entri':75,256,658 'environ':226,609 'error':395 'escal':227 'everi':248,691 'evid':65,515,575,695 'exist':423,676 'exit':689 'expand':403 'extract':136 'fact':581 'feedback':153,173,210 'feel':26 'file':495,686,713 'find':73,693 'fix':598 'flag':325,357,392,546,583 'follow':235 'forbidden':239,480 'format':507 'git':55 'gotcha':535,536,584,627 'happen':544,590,634 'health':148,152,172,178,205,209 'histori':56 'host':18,366,468 'human':229 'identifi':255,277,656 'inaccess':213 'inbox':127,130,188 'inbox-triag':129 'inconsist':641 'index':311,420,662 'issu':179,206 'item':360,457 'knowledg':308 'last':492 'layer':90,92,164,279,291,296,400,408,716 'layer-specif':290 'level':134 'like':282 'link':329 'list':260,512 'load':23 'long':303,410 'long-term':302,409 'longer':21,364 'look':639 'mainten':4,45 'mark':429 'match':388,435,465,476 'materi':155 'mcp':50,145,182,219,238,371,385,473,595 'mean':135 'meta':263,660,674 'methodolog':309,414 'model':52 'model/mcp':114 'modifi':592,688 'need':185,214,222 'never':47,58,68,78,186,531,623 'new':394,580 'next':199 'note':15,111,157,212,242,246,261,266,316,415,424,453,547,638,649,679 'note-promot':156 'observ':275,380 'obsidian':10,144,181,218,237,240,243,259,472 'obsidian-mcp':143,180,217,236 'obsidian-mcp-serv':471 'old':60,539,566,699 'opencod':2,9,43,269,369,488 'opencode-context-mainten':1,42 'opencode.json':49,593 'opencode/obsidian':117 'oper':184,216,234 'orphan':358 'outdat':326 'own':160 'patch':241 'path':262,496,675 'per':407 'phase':253,288,501 'phrase':551 'point':76,257,421,659 'prefer':339 'prioriti':523 'procedur':252 'project':310,344,419,427,444,661 'promot':154,158,193 'put':525 'raw':126 'read':69,273,297,313,509,629 'read-on':272 'readback':251 'realiti':19,32,107,367,469 'recent':337,350,448 'recommend':96,167,505,508,517,622,719 'record':29,104 'refer':327,345,434 'references/examples.md':298 'references/templates.md':510 'reflect':353,450 'relationship':191 'relev':452 'report':287,620 'requir':574 'reveal':175,202 'revers':611 'review':493 'rout':189 'runtim':671 'scan':636 'server':386,474 'set':489 'sinc':491 'skill':200,231,433,437 'skill-opencode-context-maintenance' 'sort':128 'sourc':265,315,653 'source-r007b34r' 'specif':292,405 'stabl':307 'stack':12 'stale':27,103,330 'state':271,323 'still':416,428,499,557 'suggest':521 'synthesi':38,139,190 'system':203 'tag':464 'target':519 'task':336 'term':304,411 'three':715 'todo':456 'token':646 'tool':373 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-tools' 'topic-claude-code-skills' 'topic-digital-garden' 'topic-knowledge-base' 'topic-knowledge-management' 'topic-knowledge-workflow' 'topic-llm' 'topic-mcp' 'topic-mcp-server' 'topic-model-context-protocol' 'treat':59,538,703 'triag':37,131 'trigger':97 'unnecessari':564 'updat':166,461,518 'use':35,99,124 'user':87,286 'valid':500,667 'validators/post-check.sh':682 'validators/pre-check.sh':672 'vault':14,40,72,141,147,151,171,177,183,204,208,215,233,305,322,412,632 'vault-health-feedback':150,170,207 'verifi':247,349,683 'versa':486 'version':387,390,438,475 'vice':485 'wast':647 'week':133,138 'week-level':132 'weekly-synthesi':137 'whole':71,631 'without':64,612,706 'word':61,522,540,700 'work':333,440,483 'write':249 'wrong':562,603,645","prices":[{"id":"855a53b2-eec1-402a-8427-fc9c1b01869c","listingId":"f5e8a275-2acc-420d-908c-468f42378876","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"r007b34r","category":"opencode-obsidian-knowledge-workflow","install_from":"skills.sh"},"createdAt":"2026-05-18T13:22:59.565Z"}],"sources":[{"listingId":"f5e8a275-2acc-420d-908c-468f42378876","source":"github","sourceId":"r007b34r/opencode-obsidian-knowledge-workflow/opencode-context-maintenance","sourceUrl":"https://github.com/r007b34r/opencode-obsidian-knowledge-workflow/tree/master/skills/opencode-context-maintenance","isPrimary":false,"firstSeenAt":"2026-05-18T13:22:59.565Z","lastSeenAt":"2026-05-18T13:22:59.565Z"}],"details":{"listingId":"f5e8a275-2acc-420d-908c-468f42378876","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"r007b34r","slug":"opencode-context-maintenance","github":{"repo":"r007b34r/opencode-obsidian-knowledge-workflow","stars":6,"topics":["agent-skills","ai-agents","ai-tools","claude-code-skills","digital-garden","knowledge-base","knowledge-management","knowledge-workflow","llm","mcp","mcp-server","model-context-protocol","note-taking","obsidian","obsidian-mcp","opencode","opencode-skills","pkm","second-brain","zettelkasten"],"license":"apache-2.0","html_url":"https://github.com/r007b34r/opencode-obsidian-knowledge-workflow","pushed_at":"2026-05-14T11:39:07Z","description":"7 AKU-architected skills for OpenCode + Obsidian MCP: obsidian-mcp, inbox-triage, connection-review, weekly-synthesis, context-maintenance, vault-health-feedback, note-promotion. Knowledge Activation v4 with validators, EDD evals, and CI. Built on obsidian-mcp-server. Works with OpenCode and Claude Code.","skill_md_sha":"59016000d6c2b0c60b184d371bcc06429cb7a5f3","skill_md_path":"skills/opencode-context-maintenance/SKILL.md","default_branch":"master","skill_tree_url":"https://github.com/r007b34r/opencode-obsidian-knowledge-workflow/tree/master/skills/opencode-context-maintenance"},"layout":"multi","source":"github","category":"opencode-obsidian-knowledge-workflow","frontmatter":{"name":"opencode-context-maintenance","license":"Apache-2.0","description":"Diagnose drift across the OpenCode + Obsidian context stack when vault notes, config, or host reality no longer align. Load when context feels stale or records disagree with reality. Do NOT use for triage, synthesis, or vault CRUD.","compatibility":"opencode; requires obsidian-mcp"},"skills_sh_url":"https://skills.sh/r007b34r/opencode-obsidian-knowledge-workflow/opencode-context-maintenance"},"updatedAt":"2026-05-18T13:22:59.565Z"}}