{"id":"fafa421d-64d7-4ec4-ae04-5c4faccc82e1","shortId":"VYWAWC","kind":"skill","title":"vault-insights","tagline":"Audit the Obsidian vault for inconsistencies and latent insights","description":"# Vault Insights\n\nAudit the shared Obsidian vault at `~/Documents/obsidian-vault/` for internal consistency and latent cross-cutting insights.\n\n## What This Skill Does\n\nReads all notes in the vault and produces two analyses:\n\n1. **Inconsistency scan** — finds contradictions, broken links, stale sections, and notes that have drifted out of sync\n2. **Latent insight scan** — traverses the wiki-link graph and tag dimensions to surface knowledge that is implicit in the connections between notes but not stated in any individual note\n\nAll output is written to the **daily note only** (`YYYY-MM-DD.md`), clearly tagged so findings are traceable. The skill **must not edit any other note** unless the user explicitly instructs it to.\n\n## Procedure\n\n### Step 1: Read the vault\n\n1. Glob `*.md` in the vault root to list all notes\n2. Read every note (use parallel reads for efficiency)\n3. Build a mental model of: tags, wiki-links between notes, key claims/facts, status markers (resolved, superseded, complete, etc.), open questions\n\n### Step 2: Inconsistency scan\n\nCheck for:\n\n- **Contradictions**: Note A says X, Note B says Y, where X and Y conflict\n- **Stale sections**: A note's later section resolves/supersedes an earlier section in the same note, but the earlier section wasn't updated\n- **Broken link targets**: A `[[wiki-link]]` points to a note that is empty or doesn't exist\n- **Stale PR notes**: For any note with the `#pr` tag or `pr-` filename prefix, check the PR's current status using `gh pr view <number> --json state,mergedAt,closedAt`. Flag if the note says \"in progress\" but the PR is already merged/closed.\n- **Unresolved propagation**: A finding in one note invalidates or changes claims cited in other notes, but those other notes haven't been updated\n- **Duplicate/overlapping notes**: Two notes cover substantially the same content with risk of drift\n\nFor each inconsistency found, classify its severity:\n\n| Severity | Meaning |\n|----------|---------|\n| **error** | Directly contradictory information across notes — reader would be misled |\n| **warning** | Stale or unpropagated information — reader might be confused |\n| **info** | Minor issues (empty link targets, cosmetic) |\n\n### Step 3: Latent insight scan\n\nThis is where the graph structure earns its keep. Because notes are explicitly linked by wiki-links and tagged along multiple dimensions, you can traverse the graph to surface knowledge that is implicit in the connections but not stated anywhere.\n\nLook for:\n\n- **Cross-note implications**: Does a finding in note A have consequences for the design/approach described in note B that aren't mentioned in either? Follow the wiki-link chains — a domain note linked to an architecture note linked to a service note may reveal implications that no single note articulates.\n- **Unconnected solutions**: Does a problem described in one note have a solution (or partial solution) already described in another note, without either linking to the other?\n- **Pattern repetition**: Is the same pattern/problem appearing across multiple notes without being recognised as a general principle?\n- **Gaps**: Is there something that logically should exist given the surrounding notes, but doesn't?\n\nFor each insight, assign a confidence and immediacy rating:\n\n| Rating | Confidence | Meaning |\n|--------|-----------|---------|\n| **high** | Strong evidence from multiple notes; concrete and specific | |\n| **medium** | Reasonable inference; depends on one or two assumptions | |\n| **low** | Speculative; interesting but unverified | |\n\n| Rating | Immediacy | Meaning |\n|--------|----------|---------|\n| **now** | Actionable against current codebase/branch without dependency on future work |\n| **soon** | Relevant when planned work (next phase/PR) begins |\n| **future** | Relevant only if/when speculative future work materialises |\n\n### Step 4: Review recent vault insights for dedup\n\nBefore writing, search for recent `#vault-insights` sections:\n\n```\nGrep: pattern=\"#vault-insights\" path=\"~/Documents/obsidian-vault\" output_mode=\"files_with_matches\"\n```\n\nRead the `## Vault Insights` section from the **3 most recent** daily notes that contain one. Compare your current findings against previously reported items:\n\n- **Resolved**: If a previously reported inconsistency has been fixed, note its resolution briefly.\n- **Unchanged**: If previously reported items have not changed, **do not repeat them individually**. Add a single-line \"Unchanged\" section with a count and a link to the most recent daily note where they were reported.\n- **Updated**: If a previously reported item has new information, report it in full with a note describing what changed.\n- **New**: Report in full as normal.\n\n### Step 5: Write findings to daily note\n\nAppend a `## Vault Insights` section to today's daily note (`YYYY-MM-DD.md`). Create the daily note if it doesn't exist (with H1 title and no tags — daily notes are journals, not tagged knowledge).\n\nUse this exact format:\n\n```markdown\n## Vault Insights\n\n#vault-insights\n\n### Inconsistencies\n\n#### [severity: error] Short title\n**Notes**: [[note-a]], [[note-b]]\nDescription of the contradiction and what needs reconciling.\n\n#### [severity: warning] Short title\n**Notes**: [[note-a]]\nDescription of the staleness or drift.\n\n### Latent Insights\n\n#### [confidence: high | immediacy: now] Short title\n**Notes**: [[note-a]], [[note-b]]\nDescription of the insight. Why it matters. What could be done.\n\n### Summary\n- X inconsistencies found (N error, N warning, N info)\n- Y latent insights found (N high/now, N medium/soon, N low/future)\n```\n\n## Constraints\n\n- **Read-only except for the daily note.** Do not edit, create, or delete any other note in the vault. Report what needs fixing; let the user decide what to act on.\n- **No codebase reads.** This skill audits the vault's internal consistency, not whether notes match the code. (The user can verify against code separately.)\n- **No hallucinated links.** Only reference notes that actually exist in the vault. If a note should exist but doesn't, flag that as a gap, don't create it.\n- **Be calibrated.** Don't inflate severity or confidence. An insight that depends on future work that may never happen is `low/future`, not `high/now`.\n- **Deprioritize sketches.** Notes tagged `#sketch` are speculative designs — they may never be built. Give low priority to findings that only involve sketch notes.\n- **Use the Explore agent** (via Task tool with subagent_type=Explore) to parallelise reading large numbers of notes if the vault has grown significantly.\n\n## Usage\n\n```\n/vault-insights        # Run full audit (inconsistencies + insights)\n```\n\nThe skill always runs both scans. There is no partial mode — the vault is small enough that a full read is fast, and inconsistencies often inform insights.","tags":["vault","insights","claude","code","obsidian","skills","phelps-sg","agent-memory","agent-skills","claude-code","llm"],"capabilities":["skill","source-phelps-sg","skill-vault-insights","topic-agent-memory","topic-agent-skills","topic-claude-code","topic-llm","topic-obsidian"],"categories":["claude-code-obsidian-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/phelps-sg/claude-code-obsidian-skills/vault-insights","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add phelps-sg/claude-code-obsidian-skills","source_repo":"https://github.com/phelps-sg/claude-code-obsidian-skills","install_from":"skills.sh"}},"qualityScore":"0.456","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 12 github stars · SKILL.md body (6,800 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-04-19T00:41:29.620Z","embedding":null,"createdAt":"2026-04-19T00:41:29.620Z","updatedAt":"2026-04-19T00:41:29.620Z","lastSeenAt":"2026-04-19T00:41:29.620Z","tsv":"'/documents/obsidian-vault':21,589 '/vault-insights':979 '1':45,126,130 '2':62,141,173 '3':150,345,602 '4':567 '5':693 'across':322,477 'act':853 'action':541 'actual':886 'add':644 'agent':957 'along':369 'alreadi':271,459 'alway':987 'analys':44 'anoth':462 'anywher':389 'appear':476 'append':699 'architectur':429 'aren':412 'articul':443 'assign':505 'assumpt':531 'audit':4,15,860,982 'b':184,410,753,790 'begin':557 'briefli':630 'broken':50,214 'build':151 'built':943 'calibr':909 'chain':422 'chang':282,638,685 'check':176,246 'cite':284 'claim':283 'claims/facts':163 'classifi':313 'clear':103 'closedat':259 'code':871,877 'codebas':856 'codebase/branch':544 'compar':610 'complet':168 'concret':520 'confid':507,512,778,915 'conflict':191 'confus':336 'connect':83,385 'consequ':403 'consist':24,865 'constraint':822 'contain':608 'content':304 'contradict':49,178,757 'contradictori':320 'cosmet':343 'could':799 'count':653 'cover':300 'creat':710,834,906 'cross':28,393 'cross-cut':27 'cross-not':392 'current':250,543,612 'cut':29 'daili':99,605,661,697,707,712,725,829 'decid':850 'dedup':573 'delet':836 'depend':526,546,919 'depriorit':931 'describ':407,449,460,683 'descript':754,770,791 'design':938 'design/approach':406 'dimens':74,371 'direct':319 'doesn':229,500,716,897 'domain':424 'done':801 'drift':58,308,775 'duplicate/overlapping':296 'earlier':201,209 'earn':355 'edit':113,833 'effici':149 'either':416,465 'empti':227,340 'enough':1000 'error':318,744,807 'etc':169 'everi':143 'evid':516 'exact':734 'except':826 'exist':231,494,718,887,895 'explicit':120,361 'explor':956,964 'fast':1006 'file':592 'filenam':244 'find':48,106,276,398,613,695,948 'fix':626,846 'flag':260,899 'follow':417 'format':735 'found':312,805,815 'full':679,689,981,1003 'futur':548,558,563,921 'gap':487,903 'general':485 'gh':253 'give':944 'given':495 'glob':131 'graph':71,353,376 'grep':583 'grown':976 'h1':720 'hallucin':880 'happen':926 'haven':292 'high':514,779 'high/now':817,930 'if/when':561 'immediaci':509,538,780 'implic':395,438 'implicit':80,382 'inconsist':9,46,174,311,623,742,804,983,1008 'individu':91,643 'infer':525 'inflat':912 'info':337,811 'inform':321,332,675,1010 'insight':3,12,14,30,64,347,504,571,581,587,598,702,738,741,777,794,814,917,984,1011 'instruct':121 'interest':534 'intern':23,864 'invalid':280 'involv':951 'issu':339 'item':617,635,672 'journal':728 'json':256 'keep':357 'key':162 'knowledg':77,379,731 'larg':968 'latent':11,26,63,346,776,813 'later':197 'let':847 'line':648 'link':51,70,159,215,220,341,362,366,421,426,431,466,656,881 'list':138 'logic':492 'look':390 'low':532,945 'low/future':821,928 'markdown':736 'marker':165 'match':594,869 'materialis':565 'matter':797 'may':436,924,940 'md':132 'mean':317,513,539 'medium':523 'medium/soon':819 'mental':153 'mention':414 'merged/closed':272 'mergedat':258 'might':334 'minor':338 'misl':327 'mode':591,995 'model':154 'multipl':370,478,518 'must':111 'n':806,808,810,816,818,820 'need':760,845 'never':925,941 'new':674,686 'next':555 'normal':691 'note':37,55,85,92,100,116,140,144,161,179,183,195,206,224,234,237,263,279,287,291,297,299,323,359,394,400,409,425,430,435,442,452,463,479,498,519,606,627,662,682,698,708,713,726,747,749,752,766,768,784,786,789,830,839,868,884,893,933,953,971 'note-a':748,767,785 'note-b':751,788 'number':969 'obsidian':6,18 'often':1009 'one':278,451,528,609 'open':170 'output':94,590 'parallel':146 'parallelis':966 'partial':457,994 'path':588 'pattern':470,584 'pattern/problem':475 'phase/pr':556 'plan':553 'point':221 'pr':233,240,243,248,254,269 'prefix':245 'previous':615,621,633,670 'principl':486 'prioriti':946 'problem':448 'procedur':124 'produc':42 'progress':266 'propag':274 'question':171 'rate':510,511,537 'read':35,127,142,147,595,824,857,967,1004 'read-on':823 'reader':324,333 'reason':524 'recent':569,578,604,660 'recognis':482 'reconcil':761 'refer':883 'relev':551,559 'repeat':641 'repetit':471 'report':616,622,634,666,671,676,687,843 'resolut':629 'resolv':166,618 'resolves/supersedes':199 'reveal':437 'review':568 'risk':306 'root':136 'run':980,988 'say':181,185,264 'scan':47,65,175,348,990 'search':576 'section':53,193,198,202,210,582,599,650,703 'separ':878 'servic':434 'sever':315,316,743,762,913 'share':17 'short':745,764,782 'signific':977 'singl':441,647 'single-lin':646 'sketch':932,935,952 'skill':33,110,859,986 'skill-vault-insights' 'small':999 'solut':445,455,458 'someth':490 'soon':550 'source-phelps-sg' 'specif':522 'specul':533,562,937 'stale':52,192,232,329,773 'state':88,257,388 'status':164,251 'step':125,172,344,566,692 'strong':515 'structur':354 'subag':962 'substanti':301 'summari':802 'supersed':167 'surfac':76,378 'surround':497 'sync':61 'tag':73,104,156,241,368,724,730,934 'target':216,342 'task':959 'titl':721,746,765,783 'today':705 'tool':960 'topic-agent-memory' 'topic-agent-skills' 'topic-claude-code' 'topic-llm' 'topic-obsidian' 'traceabl':108 'travers':66,374 'two':43,298,530 'type':963 'unchang':631,649 'unconnect':444 'unless':117 'unpropag':331 'unresolv':273 'unverifi':536 'updat':213,295,667 'usag':978 'use':145,252,732,954 'user':119,849,873 'vault':2,7,13,19,40,129,135,570,580,586,597,701,737,740,842,862,890,974,997 'vault-insight':1,579,585,739 'verifi':875 'via':958 'view':255 'warn':328,763,809 'wasn':211 'whether':867 'wiki':69,158,219,365,420 'wiki-link':68,157,218,364,419 'without':464,480,545 'work':549,554,564,922 'would':325 'write':575,694 'written':96 'x':182,188,803 'y':186,190,812 'yyyy-mm-dd.md':102,709","prices":[{"id":"41c4ce84-d3e6-403d-8636-c09907dd1850","listingId":"fafa421d-64d7-4ec4-ae04-5c4faccc82e1","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"phelps-sg","category":"claude-code-obsidian-skills","install_from":"skills.sh"},"createdAt":"2026-04-19T00:41:29.620Z"}],"sources":[{"listingId":"fafa421d-64d7-4ec4-ae04-5c4faccc82e1","source":"github","sourceId":"phelps-sg/claude-code-obsidian-skills/vault-insights","sourceUrl":"https://github.com/phelps-sg/claude-code-obsidian-skills/tree/main/skills/vault-insights","isPrimary":false,"firstSeenAt":"2026-04-19T00:41:29.620Z","lastSeenAt":"2026-04-19T00:41:29.620Z"}],"details":{"listingId":"fafa421d-64d7-4ec4-ae04-5c4faccc82e1","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"phelps-sg","slug":"vault-insights","github":{"repo":"phelps-sg/claude-code-obsidian-skills","stars":12,"topics":["agent-memory","agent-skills","claude-code","llm","obsidian"],"license":null,"html_url":"https://github.com/phelps-sg/claude-code-obsidian-skills","pushed_at":"2026-03-02T08:39:40Z","description":"Claude Code skills that turn an Obsidian vault into a shared human/AI knowledge base","skill_md_sha":"3cdb897cc3303091c9461355d91590a28f3d7f86","skill_md_path":"skills/vault-insights/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/phelps-sg/claude-code-obsidian-skills/tree/main/skills/vault-insights"},"layout":"multi","source":"github","category":"claude-code-obsidian-skills","frontmatter":{"name":"vault-insights","description":"Audit the Obsidian vault for inconsistencies and latent insights"},"skills_sh_url":"https://skills.sh/phelps-sg/claude-code-obsidian-skills/vault-insights"},"updatedAt":"2026-04-19T00:41:29.620Z"}}