{"id":"a60bc03c-6b92-4061-a405-064668ed1b3f","shortId":"uBSffB","kind":"skill","title":"pkm","tagline":"Read and write notes in the shared Obsidian knowledge base","description":"# Personal Knowledge Management (Obsidian)\n\nManage a shared Obsidian vault at `~/Documents/obsidian-vault/`.\n\nThis vault serves as persistent memory across Claude Code sessions and projects. Both the agent and the user can read and write to it. Notes are structured, tagged, and interlinked following the conventions below.\n\n**The codebase is always the ultimate source of truth.** Notes capture understanding, context, and reasoning at a point in time, but code evolves. If a note is significantly older than recent commits on the files it describes, treat it as potentially stale — verify against the code before relying on architectural details, and update the note if it has drifted.\n\n## Vault Structure\n\n**Flat — no folders.** All notes live at the vault root. Organisation is via tags and wiki-links, not folder hierarchy. A note can belong to multiple dimensions simultaneously (e.g. architecture + decision + project), which folders can't express.\n\n```\nobsidian-vault/\n  api-gateway-design.md          #architecture #project/my-app\n  decision-auth-strategy.md      #decision #project/my-app\n  domain-order-lifecycle.md      #domain/ecommerce\n  retry-strategy-methodology.md  #methodology\n  ...\n```\n\n## Conventions\n\n### Tags (Primary Organisation)\n\nTags provide multi-dimensional classification. Every note must have at least one tag.\n\n- `#project/<name>` — link notes to projects (e.g. `#project/my-app`, `#project/shared-libs`)\n- `#service/<name>` — which service within a monorepo (e.g. `#service/api`, `#service/worker`, `#service/auth`)\n- `#lib/<name>` — shared library (e.g. `#lib/http-client`, `#lib/db-utils`)\n- `#architecture` — system design, data flows, contracts\n- `#domain/<area>` — domain knowledge (e.g. `#domain/ecommerce`, `#domain/payments`)\n- `#decision` — architectural decisions, open questions\n- `#pr` — pull request notes tracking WIP, review feedback, and status\n- `#sketch` — speculative designs and exploratory thinking not yet reflected in merged code\n- `#methodology` — patterns, processes, lessons learned\n- `#infra` — infrastructure, deployment, cloud resources\n- `#reference` — external papers, API docs, conventions\n- `#backlog` — actionable items to be done later (see Backlog section below)\n\n### Wiki Links (Knowledge Graph)\n\nUse `[[note-name]]` to link between notes. This builds the knowledge graph in Obsidian's graph view. Prefer links over duplication — if a concept is explained in another note, link to it.\n\n### File Naming\n\n- Use kebab-case: `api-gateway-design.md`\n- Prefix PRs: `pr-NNNNN-short-description.md`\n- Prefix decisions: `decision-short-description.md`\n- Prefix libraries: `lib-<name>.md`\n- Prefix infrastructure: `infra-<topic>.md`\n\n### Note Structure\n\nEvery note should have:\n1. H1 title\n2. Tags on the line immediately after the title\n3. **Repo links** — for project-specific notes, include a `**Repo**:` line with the wiki-link to the project note and the local checkout path (e.g. `**Repo**: [[my-app]] (\\`~/code/my-app\\`)`).\n4. Brief overview paragraph\n5. Structured content (tables, code blocks, links to other notes)\n6. Source references where applicable (file paths, URLs)\n\n### Searching by Tag\n\nSince tags appear as plain text in markdown, use Grep to search for them:\n\n```\n# Find all notes tagged with a specific service\nGrep: pattern=\"#service/api\" path=\"~/Documents/obsidian-vault\"\n\n# Find all library notes\nGrep: pattern=\"#lib/\" path=\"~/Documents/obsidian-vault\"\n```\n\nFor a **quick taxonomy overview** — every note has its tags on line 2, so a single grep for tag-heavy lines gives you the full relationship map across the vault:\n\n```\nGrep: pattern=\"^#\" path=\"~/Documents/obsidian-vault\" output_mode=\"content\"\n```\n\nThis returns one line per note showing all its tags, giving a cheap holistic view of how projects, services, and libraries interrelate without reading any note bodies.\n\n## Backlog\n\nUse the daily note to capture actionable items that should be done later but not right now. Backlog items are markdown checkboxes tagged with `#backlog`:\n\n```markdown\n## Backlog\n- [ ] (2026-02-18) Refactor the order validator to use the new schema #backlog #project/my-app\n- [ ] (2026-02-17) Write up the retry strategy as a methodology note #backlog\n- [ ] (2026-02-15) Investigate flaky test in worker service #backlog #service/worker\n```\n\n### Backlog conventions\n\n- Add backlog items to the **current daily note** under a `## Backlog` heading.\n- Each item is a markdown checkbox (`- [ ]`) on a single line, prefixed with the date it was added: `- [ ] (YYYY-MM-DD) Description #backlog`.\n- Always include the `#backlog` tag. Add other tags (project, service, etc.) for discoverability.\n- When an item is completed, tick the checkbox (`- [x]`) and optionally note the date or link to the relevant note/PR.\n- When starting a new daily note, carry forward any unchecked `#backlog` items from the previous day.\n\n## When to Use\n\n### Proactively write notes when:\n- Tracing a complex data flow through the codebase\n- Discovering how a system works (architecture, contracts, data models). When documenting data models, take a **model-centric approach** — document ORM model classes, their relationships, and source file paths rather than raw table names.\n- Making or discussing architectural decisions\n- Completing a PR or significant piece of work\n- Learning domain-specific concepts\n- Identifying reusable patterns or methodology insights\n\n### Proactively read notes when:\n- **Starting any new session** — do three things to orient:\n    1. Read the most recent daily note (`YYYY-MM-DD.md`, sorted descending). If it is brief, read the previous daily note too. Go back up to 3 daily notes to find enough session context.\n    2. Run a quick tag-line grep (`^#` across the vault) to get a holistic picture of how projects, services, and libraries interrelate.\n    3. Check for open backlog items.\n- **Before exploring code** — when investigating an architectural, domain, or design question, ALWAYS search the vault first. The vault often contains prior investigations, decision records, and accumulated context that makes code exploration targeted rather than aimless. Do not launch code search agents until you have checked for existing notes on the topic.\n- Working on something that might have been explored before\n- Needing context about architecture or domain concepts\n\n## Usage\n\n```\n/pkm                    # List all notes in the vault\n/pkm read <topic>       # Search for and read notes about a topic\n/pkm write <topic>      # Create or update a note\n/pkm backlog <item>     # Add a backlog item to today's daily note\n```\n\nWhen invoked without arguments, list the vault contents to orient.\nWhen invoked with `read`, search for relevant notes using Glob and Grep.\nWhen invoked with `write`, create or update a note following the conventions above.\nWhen invoked with `backlog <item>`, append the item as a checkbox to today's daily note under the `## Backlog` heading (creating the heading if it doesn't exist).","tags":["pkm","claude","code","obsidian","skills","phelps-sg","agent-memory","agent-skills","claude-code","llm"],"capabilities":["skill","source-phelps-sg","skill-pkm","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/pkm","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,981 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:28.835Z","embedding":null,"createdAt":"2026-04-19T00:41:28.835Z","updatedAt":"2026-04-19T00:41:28.835Z","lastSeenAt":"2026-04-19T00:41:28.835Z","tsv":"'-02':540,554,567 '-15':568 '-17':555 '-18':541 '/code/my-app':384 '/documents/obsidian-vault':22,436,445,480 '/pkm':878,885,895,902 '1':341,749 '2':344,458,781 '2026':539,553,566 '3':353,773,804 '4':385 '5':389 '6':399 'accumul':835 'across':29,474,789 'action':267,518 'ad':607 'add':579,619,904 'agent':37,850 'aimless':844 'alway':60,614,821 'anoth':309 'api':263 'api-gateway-design.md':159,320 'app':383 'appear':412 'append':952 'applic':403 'approach':696 'architectur':106,148,160,211,224,683,715,816,873 'argument':916 'back':770 'backlog':266,274,511,529,536,538,551,565,575,577,580,589,613,617,657,808,903,906,951,965 'base':11 'belong':142 'block':394 'bodi':510 'brief':386,762 'build':290 'captur':67,517 'carri':653 'case':319 'centric':695 'cheap':496 'check':805,854 'checkbox':533,596,634,957 'checkout':377 'class':700 'classif':178 'claud':30 'cloud':258 'code':31,78,102,249,393,812,839,848 'codebas':58,677 'commit':88 'complet':631,717 'complex':672 'concept':305,729,876 'contain':829 'content':391,483,920 'context':69,780,836,871 'contract':216,684 'convent':55,169,265,578,946 'creat':897,939,967 'current':584 'daili':514,585,651,754,766,774,911,961 'data':214,673,685,689 'date':604,640 'day':662 'dd':611 'decis':149,163,223,225,325,716,832 'decision-auth-strategy.md':162 'decision-short-description.md':326 'deploy':257 'descend':758 'describ':93 'descript':612 'design':213,240,819 'detail':107 'dimens':145 'dimension':177 'discov':678 'discover':626 'discuss':714 'doc':264 'document':688,697 'doesn':972 'domain':217,218,727,817,875 'domain-order-lifecycle.md':165 'domain-specif':726 'domain/ecommerce':166,221 'domain/payments':222 'done':271,523 'drift':115 'duplic':302 'e.g':147,192,201,208,220,379 'enough':778 'etc':624 'everi':179,337,451 'evolv':79 'exist':856,974 'explain':307 'explor':811,840,868 'exploratori':242 'express':155 'extern':261 'feedback':235 'file':91,314,404,705 'find':424,437,777 'first':825 'flaki':570 'flat':118 'flow':215,674 'folder':120,137,152 'follow':53,944 'forward':654 'full':471 'get':793 'give':468,494 'glob':932 'go':769 'graph':280,293,297 'grep':419,432,441,462,477,788,934 'h1':342 'head':590,966,969 'heavi':466 'hierarchi':138 'holist':497,795 'identifi':730 'immedi':349 'includ':361,615 'infra':255,333 'infrastructur':256,332 'insight':735 'interlink':52 'interrel':505,803 'investig':569,814,831 'invok':914,924,936,949 'item':268,519,530,581,592,629,658,809,907,954 'kebab':318 'kebab-cas':317 'knowledg':10,13,219,279,292 'later':272,524 'launch':847 'learn':254,725 'least':184 'lesson':253 'lib':205,329,443 'lib/db-utils':210 'lib/http-client':209 'librari':207,328,439,504,802 'line':348,364,457,467,487,600,787 'link':135,188,278,286,300,311,355,369,395,642 'list':879,917 'live':123 'local':376 'make':712,838 'manag':14,16 'map':473 'markdown':417,532,537,595 'md':330,334 'memori':28 'merg':248 'methodolog':168,250,563,734 'might':865 'mm':610 'mode':482 'model':686,690,694,699 'model-centr':693 'monorepo':200 'multi':176 'multi-dimension':175 'multipl':144 'must':181 'my-app':381 'name':284,315,711 'need':870 'new':549,650,742 'note':5,47,66,82,111,122,140,180,189,231,283,288,310,335,338,360,373,398,426,440,452,489,509,515,564,586,638,652,668,738,755,767,775,857,881,891,901,912,930,943,962 'note-nam':282 'note/pr':646 'obsidian':9,15,19,157,295 'obsidian-vault':156 'often':828 'older':85 'one':185,486 'open':226,807 'option':637 'order':544 'organis':128,172 'orient':748,922 'orm':698 'output':481 'overview':387,450 'paper':262 'paragraph':388 'path':378,405,435,444,479,706 'pattern':251,433,442,478,732 'per':488 'persist':27 'person':12 'pictur':796 'piec':722 'pkm':1 'plain':414 'point':74 'potenti':97 'pr':228,719 'pr-nnnnn-short-description.md':323 'prefer':299 'prefix':321,324,327,331,601 'previous':661,765 'primari':171 'prior':830 'proactiv':666,736 'process':252 'project':34,150,187,191,358,372,501,622,799 'project-specif':357 'project/my-app':161,164,193,552 'project/shared-libs':194 'provid':174 'prs':322 'pull':229 'question':227,820 'quick':448,784 'rather':707,842 'raw':709 'read':2,42,507,737,750,763,886,890,926 'reason':71 'recent':87,753 'record':833 'refactor':542 'refer':260,401 'reflect':246 'relationship':472,702 'relev':645,929 'reli':104 'repo':354,363,380 'request':230 'resourc':259 'retri':559 'retry-strategy-methodology.md':167 'return':485 'reusabl':731 'review':234 'right':527 'root':127 'run':782 'schema':550 'search':407,421,822,849,887,927 'section':275 'see':273 'serv':25 'servic':195,197,431,502,574,623,800 'service/api':202,434 'service/auth':204 'service/worker':203,576 'session':32,743,779 'share':8,18,206 'show':490 'signific':84,721 'simultan':146 'sinc':410 'singl':461,599 'sketch':238 'skill' 'skill-pkm' 'someth':863 'sort':757 'sourc':63,400,704 'source-phelps-sg' 'specif':359,430,728 'specul':239 'stale':98 'start':648,740 'status':237 'strategi':560 'structur':49,117,336,390 'system':212,681 'tabl':392,710 'tag':50,131,170,173,186,345,409,411,427,455,465,493,534,618,621,786 'tag-heavi':464 'tag-lin':785 'take':691 'target':841 'taxonomi':449 'test':571 'text':415 'thing':746 'think':243 'three':745 'tick':632 'time':76 'titl':343,352 'today':909,959 'topic':860,894 'topic-agent-memory' 'topic-agent-skills' 'topic-claude-code' 'topic-llm' 'topic-obsidian' 'trace':670 'track':232 'treat':94 'truth':65 'ultim':62 'uncheck':656 'understand':68 'updat':109,899,941 'url':406 'usag':877 'use':281,316,418,512,547,665,931 'user':40 'valid':545 'vault':20,24,116,126,158,476,791,824,827,884,919 'verifi':99 'via':130 'view':298,498 'wiki':134,277,368 'wiki-link':133,367 'wip':233 'within':198 'without':506,915 'work':682,724,861 'worker':573 'write':4,44,556,667,896,938 'x':635 'yet':245 'yyyi':609 'yyyy-mm-dd':608 'yyyy-mm-dd.md':756","prices":[{"id":"f7556cc3-70d0-47e3-9fb1-d6dcc29eb40f","listingId":"a60bc03c-6b92-4061-a405-064668ed1b3f","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:28.835Z"}],"sources":[{"listingId":"a60bc03c-6b92-4061-a405-064668ed1b3f","source":"github","sourceId":"phelps-sg/claude-code-obsidian-skills/pkm","sourceUrl":"https://github.com/phelps-sg/claude-code-obsidian-skills/tree/main/skills/pkm","isPrimary":false,"firstSeenAt":"2026-04-19T00:41:28.835Z","lastSeenAt":"2026-04-19T00:41:28.835Z"}],"details":{"listingId":"a60bc03c-6b92-4061-a405-064668ed1b3f","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"phelps-sg","slug":"pkm","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":"71a701be31e3e7f18f0d9db460d97ec1e0f3555d","skill_md_path":"skills/pkm/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/phelps-sg/claude-code-obsidian-skills/tree/main/skills/pkm"},"layout":"multi","source":"github","category":"claude-code-obsidian-skills","frontmatter":{"name":"pkm","description":"Read and write notes in the shared Obsidian knowledge base"},"skills_sh_url":"https://skills.sh/phelps-sg/claude-code-obsidian-skills/pkm"},"updatedAt":"2026-04-19T00:41:28.835Z"}}