Sync the current project's knowledge into the Obsidian wiki. Use this skill from any project when the user says "update wiki", "sync to wiki", "save this to my wiki", "update obsidian", or wants to distill what they've been working on into their knowledge base. This is the cross-project skill that lets you push knowledge from wherever you are into the vault.
87%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
You are distilling knowledge from the current project into the user's Obsidian wiki. This skill works from any project directory, not just the obsidian-wiki repo.
~/.obsidian-wiki/config to get:
OBSIDIAN_VAULT_PATH — where the wiki livesOBSIDIAN_WIKI_REPO — where the obsidian-wiki repo is cloned (for reading other skills if needed)~/.obsidian-wiki/config doesn't exist, tell the user to run bash setup.sh from their obsidian-wiki repo first.$OBSIDIAN_VAULT_PATH/.manifest.json to check if this project has been synced before.$OBSIDIAN_VAULT_PATH/index.md to know what the wiki already contains.Figure out what this project is by scanning the current working directory:
README.md, docs/, any markdown filespackage.json, pyproject.toml, go.mod, Cargo.toml or whatever defines the project.claude/ in the project)Derive a clean project name from the directory name.
Check .manifest.json for this project:
last_commit_synced. Only consider what changed since then. Use git log <last_commit>..HEAD --oneline to see what's new.If nothing meaningful changed since last sync, tell the user and stop.
This is the core question from Karpathy's pattern: what would you want to know about this project if you came back in 3 months with zero context?
Worth distilling:
Not worth distilling:
The heuristic: if reading the codebase answers the question, don't wiki it. If you'd have to re-derive the reasoning by reading git blame across 20 commits, wiki it.
Goes under $VAULT/projects/<project-name>/:
projects/<project-name>/
├── <project-name>.md ← project overview (named after the project, NOT _project.md)
├── concepts/ ← project-specific ideas, architectures
├── skills/ ← project-specific how-tos, patterns
└── references/ ← project-specific source summariesThe overview page (<project-name>.md) should have:
Things that aren't project-specific go in the global categories:
| What you found | Where it goes |
|---|---|
| A general concept learned | concepts/ |
| A reusable pattern or technique | skills/ |
| A tool/service/person | entities/ |
| Cross-project analysis | synthesis/ |
Every page needs YAML frontmatter:
---
title: >-
Page Title
category: concepts
tags: [tag1, tag2]
sources: [projects/<project-name>]
summary: >-
One or two sentences (≤200 chars) describing what this page covers.
provenance:
extracted: 0.6
inferred: 0.35
ambiguous: 0.05
created: TIMESTAMP
updated: TIMESTAMP
---
Use folded scalar syntax (summary: >-) for title and summary to keep frontmatter parser-safe across punctuation (:, #, quotes) without escaping rules.
Keep the title and summary contents indented by two spaces under summary: >-.
# Page Title
- A fact the codebase or a doc actually states.
- A reason the design works this way. ^[inferred]
Use [[wikilinks]] to connect to other pages.Write a summary: frontmatter field on every new/updated page (1–2 sentences, ≤200 chars), using >- folded style. For project sync, a good summary answers "what does this page tell me about the project I wouldn't guess from its title?" This field powers cheap retrieval by wiki-query.
Apply provenance markers per llm-wiki (Provenance Markers section). For project sync specifically:
Compute the rough fractions and write the provenance: block on every new/updated page.
updated timestamp and add the new source.index.md to see what's already there before creating anything new.After creating/updating pages:
[[wikilinks]] from new pages to existing related pages[[wikilinks]] from existing pages back to the new ones where relevant.manifest.jsonAdd or update this project's entry:
{
"projects": {
"<project-name>": {
"source_cwd": "/absolute/path/to/project",
"last_synced": "TIMESTAMP",
"last_commit_synced": "abc123f",
"pages_in_vault": ["projects/<project-name>/<project-name>.md", "..."]
}
}
}index.mdAdd entries for any new pages created.
log.mdAppend:
- [TIMESTAMP] WIKI_UPDATE project=<project-name> pages_updated=X pages_created=Y source_cwd=/path/to/projecthot.mdRead $OBSIDIAN_VAULT_PATH/hot.md (create from the template in wiki-ingest if missing). Rewrite Recent Activity with what was just synced — last 3 operations max. Update Active Threads if this project is an ongoing focus. Update Key Takeaways with the most important architectural insight or decision surfaced during this sync. Update updated timestamp.
Write conceptually: "Synced obsidian-wiki — added wiki-capture and wiki-research skills, core new capabilities are autonomous web research and conversation capture."
concepts/react-server-components.md already exists. Update the existing one and add this project as a source.$VAULT/_meta/taxonomy.md if it exists, and use canonical tags.<project-name>.md file is what you'd read to get oriented. Make it good.saski/arnesto
752f690
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.