{"id":"a65a188a-f26c-4466-b4c1-c09fb9a4ef2e","shortId":"SLmN6e","kind":"skill","title":"connection-review","tagline":"Analyze relationships in a bounded set of Obsidian notes: candidate links, repeated patterns, contradictions, and follow-up opportunities. Load when user asks to find connections, suggest wikilinks, or surface contradictions. Do NOT use for inbox triage, weekly synthesis, or note","description":"# connection-review\n\n## Constraints\n\n- NEVER scan whole vault; scope = 5-15 primary notes + small supporting set\n- NEVER treat keyword overlap alone as evidence of connection\n- NEVER synthesize week-level meaning (that is weekly-synthesis)\n- NEVER write links without explicit user confirmation\n- NEVER turn review into whole-vault graphing\n\n## Trigger Boundary\n\n**Use when:** find note connections, suggest wikilinks, identify repeated patterns, surface contradictions, review relationships in a bounded set.\n\n**Do NOT use for:**\n- Raw inbox sorting → `inbox-triage`\n- Week-level thesis and one action → `weekly-synthesis`\n- Vault system health diagnosis → `vault-health-feedback`\n- Upgrading material into stable notes → `note-promotion`\n\n## Boundaries\n\n- **Owns:** link discovery, pattern detection, contradiction surfacing, follow-up suggestions\n- **Delegates to:** `note-promotion` (follow-up accepted), `weekly-synthesis` (patterns span week)\n- **Never absorbs:** inbox routing, synthesis, health diagnosis, context maintenance\n\n## Continuations\n\n| Condition | Next skill |\n|-----------|-----------|\n| Follow-up note suggestion accepted by user | `note-promotion` |\n| Patterns span full week window, user requests synthesis | `weekly-synthesis` |\n| Notes too raw for relationship analysis | `inbox-triage` |\n| All connections weak/uncertain | 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\n## Procedure\n\n### Phase 1: Scope\n1. `obsidian_list_notes` or `obsidian_search_notes` → identify recent/specified set\n2. Bound to 5-15 primary notes; reject unbounded requests (ask user to narrow)\n\n### Phase 2: Read\n1. For each: `obsidian_get_note format:\"document-map\"` → structure overview\n2. `format:\"content\"` only when evidence is needed for a specific connection\n3. Read older notes only to verify a suspected relationship\n\n### Phase 3: Analyze\n\nWhen analyzing, read `references/examples.md` for connection quality calibration.\n\nFour layers:\n1. **Link candidates**: explicit note-to-note or note-to-project relationships\n2. **Pattern signals**: repeated themes, problems, or methods across 3+ notes\n3. **Contradiction signals**: new vs old claims, goal vs method, assumption vs evidence\n4. **Follow-up note suggestions**: synthesis, topic, contradiction, or question notes\n\n<details>\n<summary>Pattern Detection Heuristics (expand when patterns are ambiguous)</summary>\n\n- Repeated method across 3+ notes = method pattern\n- Same problem framed differently in 2+ notes = contradiction candidate\n- Same entity referenced but never linked = link candidate\n- Shared tag + temporal proximity alone ≠ connection (keyword trap)\n- Contradiction requires real tension, not mere difference of topic\n- A \"pattern\" with only 2 data points is a hypothesis, not a finding\n\n</details>\n\n### Phase 4: Report\n\nWhen formatting output, read `references/templates.md` for the exact report structure.\n\nDefault mode: analysis-only. Write links only after confirmation using `obsidian_replace_in_note` + readback.\n\n## Gotchas\n\n### Gotcha 1: Keyword matching as connection\n**What happens:** Agent suggests links because two notes share the same tag or word\n**Why it's wrong:** Keyword overlap without conceptual relationship creates noise in the graph\n**Correct approach:** Require conceptual, project, or evidence-based relationship; cite specific content from both notes\n\n### Gotcha 2: Scope creep into whole-vault graphing\n**What happens:** Agent starts reading notes outside the specified set\n**Why it's wrong:** Violates bounded scope constraint; wastes token budget exponentially\n**Correct approach:** Stay within 5-15 primary notes; read outside only to verify one specific suspected link\n\n### Gotcha 3: Review becomes synthesis\n**What happens:** Agent extracts a thesis or \"what it all means\" from the connections\n**Why it's wrong:** That is weekly-synthesis territory; connection-review stops at relationships\n**Correct approach:** Report links, patterns, contradictions, follow-ups — do not interpret overall meaning\n\n## Validators (CI only, not runtime)\n\n- `validators/pre-check.sh`: Confirms note set is bounded (≤15 primary notes)\n- `validators/post-check.sh`: Verifies output contains no synthesis markers (thesis/emerging meaning)\n\n## Exit Criteria\n\n- Every connection suggestion names both endpoints and cites evidence\n- Patterns and contradictions are not based on keyword overlap alone\n- Whole vault was not scanned\n- Any written link has been read back and verified","tags":["connection","review","opencode","obsidian","knowledge","workflow","r007b34r","agent-skills","ai-agents","ai-tools","claude-code-skills","digital-garden"],"capabilities":["skill","source-r007b34r","skill-connection-review","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/connection-review","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,596 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.105Z","embedding":null,"createdAt":"2026-05-18T13:22:59.105Z","updatedAt":"2026-05-18T13:22:59.105Z","lastSeenAt":"2026-05-18T13:22:59.105Z","tsv":"'-15':55,270,558 '1':253,255,283,330,473 '15':630 '2':266,281,295,344,400,433,523 '3':307,318,353,355,391,571 '4':368,443 '5':54,269,557 'absorb':180 'accept':172,197 'across':352,390 'action':132 'agent':480,533,577 'alon':65,416,662 'ambigu':387 'analysi':219,458 'analysis-on':457 'analyz':4,319,321 'append':243 'approach':507,554,606 'ask':26,276 'assumpt':365 'back':674 'base':514,658 'becom':573 'bound':8,114,267,546,629 'boundari':97,152 'budget':551 'calibr':327 'candid':13,332,403,411 'ci':620 'cite':516,651 'claim':361 'companion':229 'conceptu':499,509 'condit':189 'confirm':87,464,625 'connect':2,29,46,69,102,224,306,325,417,477,588,600,645 'connection-review':1,45,599 'constraint':48,548 'contain':636 'content':297,518 'context':186 'continu':188 'contradict':17,34,109,158,356,376,402,420,610,655 'correct':506,553,605 'creat':501 'creep':525 'criteria':643 'data':434 'default':455 'deleg':164 'detect':157,381 'diagnosi':139,185 'differ':398,426 'discoveri':155 'document':291 'document-map':290 'endpoint':649 'entiti':405 'escal':226 'everi':247,644 'evid':67,300,367,513,652 'evidence-bas':512 'exact':452 'exit':642 'expand':383 'explicit':85,333 'exponenti':552 'extract':578 'feedback':143 'find':28,100,441 'follow':20,161,170,193,234,370,612 'follow-up':19,160,169,192,369,611 'forbidden':238 'format':289,296,446 'four':328 'frame':397 'full':205 'get':287 'goal':362 'gotcha':471,472,522,570 'graph':95,505,530 'happen':479,532,576 'health':138,142,184 'heurist':382 'human':228 'hypothesi':438 'identifi':105,263 'inbox':39,121,124,181,221 'inbox-triag':123,220 'interpret':616 'keyword':63,418,474,496,660 'layer':329 'level':74,128 'link':14,83,154,331,409,410,461,482,569,608,670 'list':257 'load':23 'mainten':187 'map':292 'marker':639 'match':475 'materi':145 'mcp':237 'mean':75,585,618,641 'mere':425 'method':351,364,389,393 'mode':456 'name':647 'narrow':279 'need':302 'never':49,61,70,81,88,179,408 'new':358 'next':190 'nois':502 'note':12,44,57,101,148,150,167,195,201,214,241,245,258,262,272,288,310,335,337,340,354,372,379,392,401,469,485,521,536,560,626,632 'note-promot':149,166,200 'note-to-not':334 'note-to-project':339 'obsidian':11,236,239,242,256,260,286,466 'obsidian-mcp':235 'old':360 'older':309 'one':131,566 'oper':233 'opportun':22 'output':447,635 'outsid':537,562 'overal':617 'overlap':64,497,661 'overview':294 'own':153 'patch':240 'pattern':16,107,156,176,203,345,380,385,394,430,609,653 'phase':252,280,317,442 'point':435 'primari':56,271,559,631 'problem':349,396 'procedur':251 'project':342,510 'promot':151,168,202 'proxim':415 'qualiti':326 'question':378 'raw':120,216 'read':282,308,322,448,535,561,673 'readback':250,470 'real':422 'recent/specified':264 'referenc':406 'references/examples.md':323 'references/templates.md':449 'reject':273 'relationship':5,111,218,316,343,500,515,604 'repeat':15,106,347,388 'replac':467 'report':444,453,607 'request':209,275 'requir':421,508 'review':3,47,90,110,572,601 'rout':182 'runtim':623 'scan':50,667 'scope':53,254,524,547 'search':261 'set':9,60,115,265,540,627 'share':412,486 'signal':346,357 'skill':191,230 'skill-connection-review' 'small':58 'sort':122 'source-r007b34r' 'span':177,204 'specif':305,517,567 'specifi':539 'stabl':147 'start':534 'stay':555 'stop':602 'structur':293,454 'suggest':30,103,163,196,373,481,646 'support':59 'surfac':33,108,159 'suspect':315,568 'synthes':71 'synthesi':42,80,135,175,183,210,213,374,574,597,638 'system':137 'tag':413,489 'tempor':414 'tension':423 'territori':598 'theme':348 'thesi':129,580 'thesis/emerging':640 'token':550 'topic':375,428 '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' 'trap':419 'treat':62 'triag':40,125,222 'trigger':96 'turn':89 'two':484 'unbound':274 'up':613 'upgrad':144 'use':37,98,118,465 'user':25,86,199,208,277 'valid':619 'validators/post-check.sh':633 'validators/pre-check.sh':624 'vault':52,94,136,141,232,529,664 'vault-health-feedback':140 'verifi':246,313,565,634,676 'violat':545 'vs':359,363,366 'wast':549 'weak/uncertain':225 'week':41,73,79,127,134,174,178,206,212,596 'week-level':72,126 'weekly-synthesi':78,133,173,211,595 'whole':51,93,528,663 'whole-vault':92,527 'wikilink':31,104 'window':207 'within':556 'without':84,498 'word':491 'write':82,248,460 'written':669 'wrong':495,544,592","prices":[{"id":"981aaf7a-159f-4b3e-99cd-a65337c27e2d","listingId":"a65a188a-f26c-4466-b4c1-c09fb9a4ef2e","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.105Z"}],"sources":[{"listingId":"a65a188a-f26c-4466-b4c1-c09fb9a4ef2e","source":"github","sourceId":"r007b34r/opencode-obsidian-knowledge-workflow/connection-review","sourceUrl":"https://github.com/r007b34r/opencode-obsidian-knowledge-workflow/tree/master/skills/connection-review","isPrimary":false,"firstSeenAt":"2026-05-18T13:22:59.105Z","lastSeenAt":"2026-05-18T13:22:59.105Z"}],"details":{"listingId":"a65a188a-f26c-4466-b4c1-c09fb9a4ef2e","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"r007b34r","slug":"connection-review","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":"d34b7b96f04870a8372b1d18a7b8735ab053e397","skill_md_path":"skills/connection-review/SKILL.md","default_branch":"master","skill_tree_url":"https://github.com/r007b34r/opencode-obsidian-knowledge-workflow/tree/master/skills/connection-review"},"layout":"multi","source":"github","category":"opencode-obsidian-knowledge-workflow","frontmatter":{"name":"connection-review","license":"Apache-2.0","description":"Analyze relationships in a bounded set of Obsidian notes: candidate links, repeated patterns, contradictions, and follow-up opportunities. Load when user asks to find connections, suggest wikilinks, or surface contradictions. Do NOT use for inbox triage, weekly synthesis, or note promotion.","compatibility":"opencode; requires obsidian-mcp"},"skills_sh_url":"https://skills.sh/r007b34r/opencode-obsidian-knowledge-workflow/connection-review"},"updatedAt":"2026-05-18T13:22:59.105Z"}}