
Wiki Update
- 3k installs
- 3.1k repo stars
- Updated August 4, 2026
- ar9av/obsidian-wiki
wiki-update is a cross-project agent skill that syncs the current repository's distilled knowledge into an Obsidian vault with manifest tracking and provenance-marked pages.
About
wiki-update is a cross-project agent skill for distilling the current working project into an Obsidian vault through the obsidian-wiki configuration protocol. It resolves OBSIDIAN_VAULT_PATH and related settings from project dotenv or home config, reads manifest.json and index.md for prior sync state, scans README docs source layout dependency manifests and meaningful git history, then computes a delta from last_commit_synced using merge-base validation with full rescan fallback after rebase or force-push. Distillation captures architecture decisions, reusable patterns, dependency wiring, trade-offs, and lessons not obvious from code while skipping boilerplate lockfiles and one-off bug fixes. New knowledge lands under projects project-name with overview concepts skills and references while global concepts skills entities and synthesis absorb reusable findings. Every page needs YAML frontmatter with provenance extracted inferred ambiguous fractions, lifecycle draft, wikilink cross-linking, manifest index log and hot.md updates, and optional QMD index refresh when QMD_WIKI_COLLECTION is set. Developers reach for it when users say update wiki, sync to wiki, or save project knowledge.
- Works from any project directory using obsidian-wiki config resolution protocol.
- Delta sync uses merge-base on last_commit_synced with full rescan fallback after rebase.
- Distills architecture decisions and patterns while skipping boilerplate and trivial fixes.
- Writes YAML frontmatter with provenance fractions, summary, and wikilink cross-links.
- Updates manifest.json, index.md, log.md, hot.md, and optional QMD collection refresh.
Wiki Update by the numbers
- 2,986 all-time installs (skills.sh)
- +37 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #135 of 1,879 Documentation skills by installs in the Skillselion catalog
- Security screen: LOW risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
wiki-update capabilities & compatibility
- Capabilities
- cross project vault config resolution · git delta and merge base sync · provenance marked page authoring · manifest index and hot.md maintenance · optional qmd index refresh
- Works with
- obsidian
- Use cases
- documentation · planning
What wiki-update says it does
Sync the current project's knowledge into the Obsidian wiki.
what would you want to know about this project if you came back in 3 months with zero context?
if reading the codebase answers the question, don't wiki it.
npx skills add https://github.com/ar9av/obsidian-wiki --skill wiki-updateAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 3k |
|---|---|
| repo stars | ★ 3.1k |
| Security audit | 3 / 3 scanners passed |
| Last updated | August 4, 2026 |
| Repository | ar9av/obsidian-wiki ↗ |
How do I push what I learned building this project into my Obsidian wiki without duplicating boilerplate or losing decision context?
Distill any project's architecture and decisions into an Obsidian vault with manifest tracking and cross-links.
Who is it for?
Developers maintaining an Obsidian knowledge base who want project-specific architecture and lessons captured from any repo.
Skip if: Skip when no Obsidian vault is configured or when the user only wants raw code copies instead of distilled knowledge.
When should I use this skill?
User says update wiki, sync to wiki, save to obsidian, or wants project knowledge distilled into the vault.
What you get
Updated vault pages under projects and global categories with manifest sync state, cross-links, and optional QMD index refresh.
- Vault markdown notes
- Distilled architecture summaries
By the numbers
- Supports 4+ trigger phrases including update wiki and sync to wiki
- Works cross-project outside the obsidian-wiki repository
Files
Wiki Update — Sync Any Project to Your Wiki
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.
Before You Start
1. Resolve config — follow the Config Resolution Protocol in llm-wiki/SKILL.md (walk up CWD for .env → ~/.obsidian-wiki/config → prompt setup). This gives OBSIDIAN_VAULT_PATH, OBSIDIAN_WIKI_REPO, OBSIDIAN_LINK_FORMAT (wikilink default or markdown), and optional QMD settings such as QMD_WIKI_COLLECTION. Works from any project directory. 3. Read $OBSIDIAN_VAULT_PATH/.manifest.json to check if this project has been synced before. 4. Read $OBSIDIAN_VAULT_PATH/index.md to know what the wiki already contains.
When writing internal links in Steps 4–5, apply the link format from llm-wiki/SKILL.md (Link Format section) using the OBSIDIAN_LINK_FORMAT value.
Step 1: Understand the Project
Figure out what this project is by scanning the current working directory:
README.md, docs/, any markdown files- Source structure (frameworks, languages, key abstractions)
package.json,pyproject.toml,go.mod,Cargo.tomlor whatever defines the project- Git log (focus on commit messages that signal decisions, not "fix typo" stuff)
- Claude memory files if they exist (
.claude/in the project)
Derive a clean project name from the directory name.
Step 2: Compute the Delta
Check .manifest.json for this project:
- First time? Full scan. Everything is new.
- Synced before? Look at
last_commit_synced. Before computing the delta, verify the stored SHA is still reachable:
git merge-base --is-ancestor <last_commit_synced> HEAD- Exit 0 (ancestor): Safe. Run
git log <last_commit_synced>..HEAD --onelineto see what changed. - Exit 1 (not an ancestor — rebase or force-push occurred): The stored SHA is no longer in this branch's history. Warn the user: "Stored commit `<sha>` is no longer reachable — branch may have been rebased or force-pushed. Falling back to full scan." Then treat as first-time sync: re-scan everything and update
last_commit_syncedto the current HEAD SHA at the end of Step 6.
If nothing meaningful changed since last sync, tell the user and stop.
Step 3: Decide What to Distill
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:
- Architecture decisions and why they were made
- Patterns discovered while building (things you'd Google again otherwise)
- What tools, services, APIs the project depends on and how they're wired together
- Key abstractions, how they connect, what the mental model is
- Trade-offs that were evaluated, what was picked and why
- Things learned while building that aren't obvious from reading the code
Not worth distilling:
- File listings, boilerplate, config that's obvious
- Individual bug fixes with no broader lesson
- Dependency versions, lock file contents
- Implementation details the code already says clearly
- Routine changes anyone could read from the diff
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.
Step 4: Distill into Wiki Pages
Project-specific knowledge
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:
- What the project is (one paragraph)
- Key concepts and how they connect
- Links to project-specific and global wiki pages
Global knowledge
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/ |
Page format
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
base_confidence: 0.59
lifecycle: draft
lifecycle_changed: TIMESTAMP_DATE
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:
- Extracted — anything visible in the code, config, or a doc/commit message: file structure, dependencies, function signatures, what a file does.
- Inferred — why a decision was made, design rationale, trade-offs, "the team chose X because Y" — unless a commit message, doc, or ADR states it explicitly.
- Ambiguous — when the code and docs disagree, or when there's clearly an in-progress migration with two patterns living side by side.
Compute the rough fractions and write the provenance: block on every new/updated page.
Updating vs creating
- If a page already exists in the vault, merge new information into it. Don't create duplicates.
- If you're adding to an existing page, update the
updatedtimestamp and add the new source. - Check
index.mdto see what's already there before creating anything new.
Step 5: Cross-link
After creating/updating pages:
- Add
[[wikilinks]]from new pages to existing related pages - Add
[[wikilinks]]from existing pages back to the new ones where relevant - Link the project overview to all project-specific pages and relevant global pages
Step 6: Update Tracking
Update .manifest.json
Add 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", "..."]
}
}
}Update index.md
Add entries for any new pages created.
Update log.md
Append:
- [TIMESTAMP] WIKI_UPDATE project=<project-name> pages_updated=X pages_created=Y source_cwd=/path/to/projectUpdate hot.md
Read $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."
Step 7: Refresh QMD Wiki Index (optional — requires QMD_WIKI_COLLECTION)
GUARD: If `$QMD_WIKI_COLLECTION` is empty or unset, skip this step. The markdown vault is the source of truth; QMD is only a search index.
Run this step only after pages, .manifest.json, index.md, log.md, and hot.md have been written. If Step 2 found no meaningful changes and the sync stopped early, do not refresh QMD.
This refresh currently requires the local QMD CLI. Use $QMD_CLI if set; otherwise use qmd. If the CLI is unavailable or returns an error, do not roll back the wiki update; report that the wiki was updated but QMD refresh was skipped or failed.
For CLI refresh:
${QMD_CLI:-qmd} updateIf the output says new hashes need vectors, or if pages were created/updated and embeddings may be stale, run:
${QMD_CLI:-qmd} embedVerify at least one created or materially updated page is visible in the wiki collection:
${QMD_CLI:-qmd} get "qmd://$QMD_WIKI_COLLECTION/projects/<project-name>/<page>.md" -l 5If the exact qmd:// path is uncertain, use:
${QMD_CLI:-qmd} ls "$QMD_WIKI_COLLECTION" | grep "<project-name>"Record QMD refresh in the final report as one of:
QMD refreshed: update + embed + verifiedQMD skipped: QMD_WIKI_COLLECTION unsetQMD skipped: qmd CLI unavailableQMD failed: <short error summary>
Tips
- Be aggressive about merging. If the project uses React Server Components, don't create a new page if
concepts/react-server-components.mdalready exists. Update the existing one and add this project as a source. - Consult the tag taxonomy. Read
$VAULT/_meta/taxonomy.mdif it exists, and use canonical tags. - Don't copy code. Distill the knowledge, not the implementation. "This project uses a debounced search pattern with 300ms delay" is useful. Pasting the actual debounce function is not.
- Project overview is the anchor. The
<project-name>.mdfile is what you'd read to get oriented. Make it good.
Related skills
How it compares
Pick wiki-update when personal Obsidian is your knowledge system and you want repo-to-vault distillation instead of generic README edits.
FAQ
What should not be distilled into the wiki?
File listings, lockfile versions, one-off bug fixes, and details obvious from reading the codebase without re-deriving reasoning.
What happens if last_commit_synced is unreachable after a rebase?
Warn the user and fall back to a full scan, then update last_commit_synced to the current HEAD SHA.
Is Wiki Update safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.