[{"data":1,"prerenderedAt":941},["ShallowReactive",2],{"en.code.llm-wiki-obsidian-implementation":3,"en.code.llm-wiki-obsidian-implementation-surround":937},{"id":4,"title":5,"body":6,"createdAt":925,"description":926,"draft":927,"extension":928,"image":929,"language":930,"meta":931,"navigation":228,"path":932,"read":271,"seo":933,"stem":934,"topics":935,"updatedAt":925,"__hash__":936},"content\u002Fcode\u002F19.llm-wiki-obsidian-implementation.md","How I Implemented an LLM Wiki in Obsidian",{"type":7,"value":8,"toc":912},"minimark",[9,19,40,47,52,55,80,95,98,130,133,137,140,143,151,166,172,177,182,187,192,196,199,202,208,211,395,398,402,410,413,419,422,428,431,451,454,492,498,502,508,515,521,524,607,610,623,634,637,642,689,694,714,717,721,724,730,733,739,742,764,767,773,781,785,788,794,797,827,830,847,850,854,860,863,866,886,889,893,896,902,905,908],[10,11,12,13,18],"p",{},"In ",[14,15,17],"a",{"href":16},"\u002Fcode\u002Fknowledge-compilation-over-rag","the previous article",", I explained why I moved away from RAG in Obsidian. This is the practical part: how to reproduce the same setup yourself, which skill to install, which folders to create, how to run ingest, how to ask questions, and how to avoid turning the wiki into mush after the third source.",[10,20,21,22,31,32,35,36,39],{},"I use ",[14,23,27],{"href":24,"rel":25},"https:\u002F\u002Fgithub.com\u002FAstro-Han\u002Fkarpathy-llm-wiki",[26],"nofollow",[28,29,30],"code",{},"Astro-Han\u002Fkarpathy-llm-wiki",". It is an Agent Skills-compatible skill for Claude Code, Cursor, Codex, and other tools that support the Agent Skills format. It implements the LLM wiki idea: sources go into ",[28,33,34],{},"raw\u002F",", the agent compiles durable markdown pages into ",[28,37,38],{},"wiki\u002F",", answers questions with citations, and periodically checks the wiki through lint.",[10,41,42,43,46],{},"Below I will use a fictional example: ",[28,44,45],{},"Atlas Wiki",". Imagine it is a personal wiki for researching urban spaces. The name does not matter. What matters is that the topic is narrow and long-lived.",[48,49,51],"h2",{"id":50},"install-the-skill","Install the skill",[10,53,54],{},"Installing the library looks like this:",[56,57,62],"pre",{"className":58,"code":59,"language":60,"meta":61,"style":61},"language-bash shiki shiki-themes github-light github-dark","npx add-skill Astro-Han\u002Fkarpathy-llm-wiki\n","bash","",[28,63,64],{"__ignoreMap":61},[65,66,69,73,77],"span",{"class":67,"line":68},"line",1,[65,70,72],{"class":71},"sScJk","npx",[65,74,76],{"class":75},"sZZnC"," add-skill",[65,78,79],{"class":75}," Astro-Han\u002Fkarpathy-llm-wiki\n",[10,81,82,83,86,87,90,91,94],{},"For Claude Code, Cursor, and OpenCode, this is the main path. For Codex CLI, the project's README mentions the manual option: copy the skill into ",[28,84,85],{},".agents\u002Fskills\u002Fkarpathy-llm-wiki\u002F",". For other agents, the principle is the same: the agent's skills directory needs ",[28,88,89],{},"SKILL.md"," and the ",[28,92,93],{},"references\u002F"," folder.",[10,96,97],{},"After installation, the agent gets three operations:",[99,100,101,114,124],"ul",{},[102,103,104,107,108,110,111,113],"li",{},[28,105,106],{},"Ingest"," — fetch a source, save it in ",[28,109,34],{},", and compile knowledge into ",[28,112,38],{},".",[102,115,116,119,120,123],{},[28,117,118],{},"Query"," — read ",[28,121,122],{},"wiki\u002Findex.md",", open relevant pages, and answer with links.",[102,125,126,129],{},[28,127,128],{},"Lint"," — check wiki health: index entries, links, raw references, orphan pages, and possible contradictions.",[10,131,132],{},"This is not an app and not an Obsidian plugin. It is an instruction set for a coding agent. All the work happens through normal files in your vault.",[48,134,136],{"id":135},"create-a-project-folder","Create a project folder",[10,138,139],{},"I do not create one global LLM wiki for the whole Obsidian vault. That is a bad idea: too many topics, too much noise, too expensive a context. Instead, I create a separate wiki for a specific domain.",[10,141,142],{},"For example:",[56,144,149],{"className":145,"code":147,"language":148,"meta":61},[146],"language-text","Wiki\u002FAtlas\u002F\n","text",[28,150,147],{"__ignoreMap":61},[10,152,153,154,156,157,156,159,161,162,165],{},"You do not have to create the first structure by hand. According to the skill spec, it creates ",[28,155,34],{},", ",[28,158,38],{},[28,160,122],{},", and ",[28,163,164],{},"wiki\u002Flog.md"," during the first ingest if they do not exist yet. But I prefer knowing what the result should look like:",[56,167,170],{"className":168,"code":169,"language":148,"meta":61},[146],"Wiki\u002FAtlas\u002F\n├── raw\u002F\n│   ├── articles\u002F\n│   ├── books\u002F\n│   ├── notes\u002F\n│   └── interviews\u002F\n└── wiki\u002F\n    ├── index.md\n    ├── log.md\n    ├── concepts\u002F\n    ├── places\u002F\n    └── people\u002F\n",[28,171,169],{"__ignoreMap":61},[10,173,174,176],{},[28,175,34],{}," is immutable source material. It holds articles, PDFs, notes, transcripts, exported threads, documentation snippets, and anything else you want to compile. After ingest, avoid editing or renaming sources. If you need a new version, add a new file.",[10,178,179,181],{},[28,180,38],{}," contains compiled articles. The agent maintains them: creates new pages, updates old ones, adds links, and writes the index.",[10,183,184,186],{},[28,185,122],{}," is the map of the wiki. The agent starts queries from it.",[10,188,189,191],{},[28,190,164],{}," is the operation log. Ingest, archived query, and lint events go there.",[48,193,195],{"id":194},"add-local-rules","Add local rules",[10,197,198],{},"The skill itself is generic. But generic is not enough. For the wiki to work well, the agent needs to know what a good page means for this specific topic.",[10,200,201],{},"I add a local instruction file at the root:",[56,203,206],{"className":204,"code":205,"language":148,"meta":61},[146],"Wiki\u002FAtlas\u002FCLAUDE.md\n",[28,207,205],{"__ignoreMap":61},[10,209,210],{},"Minimal example:",[56,212,216],{"className":213,"code":214,"language":215,"meta":61,"style":61},"language-markdown shiki shiki-themes github-light github-dark","# Atlas Wiki\n\nThis is a topic-specific LLM wiki about urban spaces, city observation, architecture, walking routes, and visual research.\n\n## Scope\n\nUse this wiki only for sources related to urban spaces, photography walks, city patterns, architecture, public transport, signage, and local history.\n\nIgnore unrelated personal notes, work notes, and generic productivity material.\n\n## Wiki Structure\n\n- `wiki\u002Fconcepts\u002F` — reusable concepts, methods, patterns, and recurring observations.\n- `wiki\u002Fplaces\u002F` — city districts, streets, buildings, and locations.\n- `wiki\u002Fpeople\u002F` — photographers, architects, authors, and researchers.\n\n## Writing Rules\n\n- Write wiki pages in English.\n- Use standard Markdown.\n- Use relative Markdown links inside `wiki\u002F`.\n- Prefer durable concepts over source-by-source summaries.\n- Keep sources traceable through the `Raw` field.\n- If sources contradict each other, mark the conflict explicitly.\n\n## Query Rules\n\n- Always start from `wiki\u002Findex.md`.\n- Prefer wiki pages over model memory.\n- Answer in English.\n- Cite wiki pages with Markdown links.\n","markdown",[28,217,218,223,230,236,241,247,252,258,263,269,274,280,285,291,297,303,308,314,319,325,331,337,343,349,355,360,366,371,377,383,389],{"__ignoreMap":61},[65,219,220],{"class":67,"line":68},[65,221,222],{},"# Atlas Wiki\n",[65,224,226],{"class":67,"line":225},2,[65,227,229],{"emptyLinePlaceholder":228},true,"\n",[65,231,233],{"class":67,"line":232},3,[65,234,235],{},"This is a topic-specific LLM wiki about urban spaces, city observation, architecture, walking routes, and visual research.\n",[65,237,239],{"class":67,"line":238},4,[65,240,229],{"emptyLinePlaceholder":228},[65,242,244],{"class":67,"line":243},5,[65,245,246],{},"## Scope\n",[65,248,250],{"class":67,"line":249},6,[65,251,229],{"emptyLinePlaceholder":228},[65,253,255],{"class":67,"line":254},7,[65,256,257],{},"Use this wiki only for sources related to urban spaces, photography walks, city patterns, architecture, public transport, signage, and local history.\n",[65,259,261],{"class":67,"line":260},8,[65,262,229],{"emptyLinePlaceholder":228},[65,264,266],{"class":67,"line":265},9,[65,267,268],{},"Ignore unrelated personal notes, work notes, and generic productivity material.\n",[65,270,272],{"class":67,"line":271},10,[65,273,229],{"emptyLinePlaceholder":228},[65,275,277],{"class":67,"line":276},11,[65,278,279],{},"## Wiki Structure\n",[65,281,283],{"class":67,"line":282},12,[65,284,229],{"emptyLinePlaceholder":228},[65,286,288],{"class":67,"line":287},13,[65,289,290],{},"- `wiki\u002Fconcepts\u002F` — reusable concepts, methods, patterns, and recurring observations.\n",[65,292,294],{"class":67,"line":293},14,[65,295,296],{},"- `wiki\u002Fplaces\u002F` — city districts, streets, buildings, and locations.\n",[65,298,300],{"class":67,"line":299},15,[65,301,302],{},"- `wiki\u002Fpeople\u002F` — photographers, architects, authors, and researchers.\n",[65,304,306],{"class":67,"line":305},16,[65,307,229],{"emptyLinePlaceholder":228},[65,309,311],{"class":67,"line":310},17,[65,312,313],{},"## Writing Rules\n",[65,315,317],{"class":67,"line":316},18,[65,318,229],{"emptyLinePlaceholder":228},[65,320,322],{"class":67,"line":321},19,[65,323,324],{},"- Write wiki pages in English.\n",[65,326,328],{"class":67,"line":327},20,[65,329,330],{},"- Use standard Markdown.\n",[65,332,334],{"class":67,"line":333},21,[65,335,336],{},"- Use relative Markdown links inside `wiki\u002F`.\n",[65,338,340],{"class":67,"line":339},22,[65,341,342],{},"- Prefer durable concepts over source-by-source summaries.\n",[65,344,346],{"class":67,"line":345},23,[65,347,348],{},"- Keep sources traceable through the `Raw` field.\n",[65,350,352],{"class":67,"line":351},24,[65,353,354],{},"- If sources contradict each other, mark the conflict explicitly.\n",[65,356,358],{"class":67,"line":357},25,[65,359,229],{"emptyLinePlaceholder":228},[65,361,363],{"class":67,"line":362},26,[65,364,365],{},"## Query Rules\n",[65,367,369],{"class":67,"line":368},27,[65,370,229],{"emptyLinePlaceholder":228},[65,372,374],{"class":67,"line":373},28,[65,375,376],{},"- Always start from `wiki\u002Findex.md`.\n",[65,378,380],{"class":67,"line":379},29,[65,381,382],{},"- Prefer wiki pages over model memory.\n",[65,384,386],{"class":67,"line":385},30,[65,387,388],{},"- Answer in English.\n",[65,390,392],{"class":67,"line":391},31,[65,393,394],{},"- Cite wiki pages with Markdown links.\n",[10,396,397],{},"Yes, this looks like paperwork. But without a local instruction, the agent guesses the structure. An LLM guessing the structure of a knowledge base is a fast path to entropy.",[48,399,401],{"id":400},"run-the-first-ingest","Run the first ingest",[10,403,404,405,407,408,113],{},"You can give the agent a URL, a file path, or pasted text. The skill should save the source into ",[28,406,34],{},", then compile it into ",[28,409,38],{},[10,411,412],{},"Example with a URL:",[56,414,417],{"className":415,"code":416,"language":148,"meta":61},[146],"Ingest this article into Atlas Wiki:\nhttps:\u002F\u002Fexample.com\u002Fhow-cities-use-signage\n",[28,418,416],{"__ignoreMap":61},[10,420,421],{},"Example with a local file:",[56,423,426],{"className":424,"code":425,"language":148,"meta":61},[146],"Ingest file `Wiki\u002FAtlas\u002Fraw\u002Farticles\u002F2026-04-30-city-signage.md` into Atlas Wiki.\n",[28,427,425],{"__ignoreMap":61},[10,429,430],{},"During ingest, the skill performs two separate operations:",[432,433,434,443],"ol",{},[102,435,436,442],{},[437,438,439,440],"strong",{},"Fetch into ",[28,441,34],{}," — save the source as a markdown file.",[102,444,445,450],{},[437,446,447,448],{},"Compile into ",[28,449,38],{}," — create or update compiled knowledge pages.",[10,452,453],{},"The raw file template in the skill looks roughly like this:",[56,455,457],{"className":213,"code":456,"language":215,"meta":61,"style":61},"# Source Title\n\n> Source: URL or origin description\n> Collected: 2026-04-30\n> Published: 2026-04-25\n\nOriginal content below.\n",[28,458,459,464,468,473,478,483,487],{"__ignoreMap":61},[65,460,461],{"class":67,"line":68},[65,462,463],{},"# Source Title\n",[65,465,466],{"class":67,"line":225},[65,467,229],{"emptyLinePlaceholder":228},[65,469,470],{"class":67,"line":232},[65,471,472],{},"> Source: URL or origin description\n",[65,474,475],{"class":67,"line":238},[65,476,477],{},"> Collected: 2026-04-30\n",[65,479,480],{"class":67,"line":243},[65,481,482],{},"> Published: 2026-04-25\n",[65,484,485],{"class":67,"line":249},[65,486,229],{"emptyLinePlaceholder":228},[65,488,489],{"class":67,"line":254},[65,490,491],{},"Original content below.\n",[10,493,494,495,497],{},"The point of ",[28,496,34],{}," is to keep the source close enough to the original. Do not rewrite the author's opinion. Do not turn the article into a summary. Clean up formatting noise and preserve the text that lets you trace where the knowledge came from.",[48,499,501],{"id":500},"what-a-compiled-article-looks-like","What a compiled article looks like",[10,503,504,505,507],{},"After ingest, the agent creates or updates pages in ",[28,506,38],{},". Important detail: the file is named after the concept, not the source.",[10,509,510,511,514],{},"For example, ",[28,512,513],{},"how-cities-use-signage.md"," may produce:",[56,516,519],{"className":517,"code":518,"language":148,"meta":61},[146],"wiki\u002Fconcepts\u002Fwayfinding-signage.md\n",[28,520,518],{"__ignoreMap":61},[10,522,523],{},"The page follows the skill's template:",[56,525,527],{"className":213,"code":526,"language":215,"meta":61,"style":61},"# Wayfinding Signage\n\n> Sources: Example Magazine, 2026-04-25\n> Raw: [How Cities Use Signage](..\u002F..\u002Fraw\u002Farticles\u002F2026-04-30-how-cities-use-signage.md)\n\n## Overview\n\nWayfinding signage is the layer of visual navigation that helps people understand where they are, where they can go, and how to move through a city without asking for help.\n\n## Key Principles\n\n...\n\n## See Also\n\n- [Public Space Legibility](public-space-legibility.md)\n- [Transit Maps](..\u002Fplaces\u002Ftransit-maps.md)\n",[28,528,529,534,538,543,548,552,557,561,566,570,575,579,584,588,593,597,602],{"__ignoreMap":61},[65,530,531],{"class":67,"line":68},[65,532,533],{},"# Wayfinding Signage\n",[65,535,536],{"class":67,"line":225},[65,537,229],{"emptyLinePlaceholder":228},[65,539,540],{"class":67,"line":232},[65,541,542],{},"> Sources: Example Magazine, 2026-04-25\n",[65,544,545],{"class":67,"line":238},[65,546,547],{},"> Raw: [How Cities Use Signage](..\u002F..\u002Fraw\u002Farticles\u002F2026-04-30-how-cities-use-signage.md)\n",[65,549,550],{"class":67,"line":243},[65,551,229],{"emptyLinePlaceholder":228},[65,553,554],{"class":67,"line":249},[65,555,556],{},"## Overview\n",[65,558,559],{"class":67,"line":254},[65,560,229],{"emptyLinePlaceholder":228},[65,562,563],{"class":67,"line":260},[65,564,565],{},"Wayfinding signage is the layer of visual navigation that helps people understand where they are, where they can go, and how to move through a city without asking for help.\n",[65,567,568],{"class":67,"line":265},[65,569,229],{"emptyLinePlaceholder":228},[65,571,572],{"class":67,"line":271},[65,573,574],{},"## Key Principles\n",[65,576,577],{"class":67,"line":276},[65,578,229],{"emptyLinePlaceholder":228},[65,580,581],{"class":67,"line":282},[65,582,583],{},"...\n",[65,585,586],{"class":67,"line":287},[65,587,229],{"emptyLinePlaceholder":228},[65,589,590],{"class":67,"line":293},[65,591,592],{},"## See Also\n",[65,594,595],{"class":67,"line":299},[65,596,229],{"emptyLinePlaceholder":228},[65,598,599],{"class":67,"line":305},[65,600,601],{},"- [Public Space Legibility](public-space-legibility.md)\n",[65,603,604],{"class":67,"line":310},[65,605,606],{},"- [Transit Maps](..\u002Fplaces\u002Ftransit-maps.md)\n",[10,608,609],{},"This is where the difference from RAG becomes concrete. A vector database would store chunks of the source article. An LLM wiki stores processed knowledge: a concept, relationships, sources, conflicts, and links to neighboring pages.",[10,611,612,613,156,616,156,619,622],{},"One source can update several pages. An article about city signage may touch ",[28,614,615],{},"wayfinding-signage",[28,617,618],{},"public-space-legibility",[28,620,621],{},"street-furniture",", and a page about a specific district. That is expected. The wiki should accumulate connections, not put every source into a separate box.",[48,624,626,627,630,631],{"id":625},"check-indexmd-and-logmd","Check ",[28,628,629],{},"index.md"," and ",[28,632,633],{},"log.md",[10,635,636],{},"After ingest, I always check two files.",[10,638,639,641],{},[28,640,122],{}," should get a new or updated row:",[56,643,645],{"className":213,"code":644,"language":215,"meta":61,"style":61},"# Knowledge Base Index\n\n## Concepts\n\nConcepts and recurring patterns in urban research.\n\n| Article | Summary | Updated |\n|---------|---------|---------|\n| [Wayfinding Signage](concepts\u002Fwayfinding-signage.md) | Visual navigation systems that help people move through the city. | 2026-04-30 |\n",[28,646,647,652,656,661,665,670,674,679,684],{"__ignoreMap":61},[65,648,649],{"class":67,"line":68},[65,650,651],{},"# Knowledge Base Index\n",[65,653,654],{"class":67,"line":225},[65,655,229],{"emptyLinePlaceholder":228},[65,657,658],{"class":67,"line":232},[65,659,660],{},"## Concepts\n",[65,662,663],{"class":67,"line":238},[65,664,229],{"emptyLinePlaceholder":228},[65,666,667],{"class":67,"line":243},[65,668,669],{},"Concepts and recurring patterns in urban research.\n",[65,671,672],{"class":67,"line":249},[65,673,229],{"emptyLinePlaceholder":228},[65,675,676],{"class":67,"line":254},[65,677,678],{},"| Article | Summary | Updated |\n",[65,680,681],{"class":67,"line":260},[65,682,683],{},"|---------|---------|---------|\n",[65,685,686],{"class":67,"line":265},[65,687,688],{},"| [Wayfinding Signage](concepts\u002Fwayfinding-signage.md) | Visual navigation systems that help people move through the city. | 2026-04-30 |\n",[10,690,691,693],{},[28,692,164],{}," should get an operation entry:",[56,695,697],{"className":213,"code":696,"language":215,"meta":61,"style":61},"## [2026-04-30] ingest | How Cities Use Signage\n- Updated: wiki\u002Fconcepts\u002Fwayfinding-signage.md\n- Updated: wiki\u002Fconcepts\u002Fpublic-space-legibility.md\n",[28,698,699,704,709],{"__ignoreMap":61},[65,700,701],{"class":67,"line":68},[65,702,703],{},"## [2026-04-30] ingest | How Cities Use Signage\n",[65,705,706],{"class":67,"line":225},[65,707,708],{},"- Updated: wiki\u002Fconcepts\u002Fwayfinding-signage.md\n",[65,710,711],{"class":67,"line":232},[65,712,713],{},"- Updated: wiki\u002Fconcepts\u002Fpublic-space-legibility.md\n",[10,715,716],{},"If those two traces are missing, the ingest was not good enough. Without the index, the agent has nothing reliable to read during query. Without the log, you will not understand where changes came from a week later.",[48,718,720],{"id":719},"ask-questions-against-the-wiki","Ask questions against the wiki",[10,722,723],{},"A query should explicitly target a specific wiki. Not:",[56,725,728],{"className":726,"code":727,"language":148,"meta":61},[146],"What do I know about navigation?\n",[28,729,727],{"__ignoreMap":61},[10,731,732],{},"but:",[56,734,737],{"className":735,"code":736,"language":148,"meta":61},[146],"What do I know about wayfinding signage in Atlas Wiki?\n",[28,738,736],{"__ignoreMap":61},[10,740,741],{},"A properly behaving agent should:",[432,743,744,749,752,755,758,761],{},[102,745,746,747,113],{},"Read ",[28,748,122],{},[102,750,751],{},"Find relevant pages.",[102,753,754],{},"Open those pages.",[102,756,757],{},"Synthesize an answer.",[102,759,760],{},"Link to wiki pages.",[102,762,763],{},"Avoid changing files unless explicitly asked.",[10,765,766],{},"The last point matters. Query should not rewrite the knowledge base. It is a read operation. If the answer is useful, save it separately:",[56,768,771],{"className":769,"code":770,"language":148,"meta":61},[146],"Save this answer as an archived query in Atlas Wiki.\n",[28,772,770],{"__ignoreMap":61},[10,774,775,776,778,779,113],{},"Then the skill creates a separate archive page, updates ",[28,777,629],{},", and adds an entry to ",[28,780,633],{},[48,782,784],{"id":783},"run-lint","Run lint",[10,786,787],{},"Once the wiki grows past twenty or thirty pages, it starts to drift a little. That is normal. This is what lint is for:",[56,789,792],{"className":790,"code":791,"language":148,"meta":61},[146],"Lint Atlas Wiki.\n",[28,793,791],{"__ignoreMap":61},[10,795,796],{},"According to the skill spec, auto-fix is only for deterministic issues:",[99,798,799,808,811,814,821],{},[102,800,801,802,804,805,807],{},"a file exists in ",[28,803,38],{},", but is missing from ",[28,806,629],{},";",[102,809,810],{},"an index entry points to a missing file;",[102,812,813],{},"a markdown link is broken, but the correct target can be found unambiguously;",[102,815,816,817,820],{},"a ",[28,818,819],{},"Raw"," link points to the wrong place;",[102,822,823,826],{},[28,824,825],{},"See Also"," contains clearly broken links.",[10,828,829],{},"But ambiguous findings should only be reported:",[99,831,832,835,838,841,844],{},[102,833,834],{},"contradictions between pages;",[102,836,837],{},"stale claims;",[102,839,840],{},"missing conflict annotations;",[102,842,843],{},"orphan pages;",[102,845,846],{},"concepts that are mentioned often but do not have their own page.",[10,848,849],{},"That split is correct. The agent can fix mechanics. Meaning-level decisions should not run on autopilot.",[48,851,853],{"id":852},"what-not-to-automate","What not to automate",[10,855,856,857,859],{},"The biggest mistake is putting a file watcher on ",[28,858,34],{}," and ingesting automatically every time a new file appears. It sounds convenient. It is a bad idea.",[10,861,862],{},"Ingest is not format conversion. It is editorial work. The agent chooses which concepts to create, which pages to update, which links to add, and where to mark source conflicts. If this runs in the background, the knowledge base starts drifting. You only notice the problem a month later, when half the pages are written with weird assumptions.",[10,864,865],{},"My working loop is:",[432,867,868,871,874,877,883],{},[102,869,870],{},"Pick one source.",[102,872,873],{},"Run ingest.",[102,875,876],{},"Review the diff.",[102,878,626,879,630,881,113],{},[28,880,629],{},[28,882,633],{},[102,884,885],{},"Only then mark the source as processed.",[10,887,888],{},"Yes, it is slower. It keeps the system manageable.",[48,890,892],{"id":891},"minimal-recipe","Minimal recipe",[10,894,895],{},"Condensed version:",[56,897,900],{"className":898,"code":899,"language":148,"meta":61},[146],"1. Install the skill:\n   npx add-skill Astro-Han\u002Fkarpathy-llm-wiki\n\n2. Create a folder:\n   Wiki\u002FAtlas\u002F\n\n3. Add local instructions:\n   Wiki\u002FAtlas\u002FCLAUDE.md\n\n4. Run the first ingest:\n   Ingest this article into Atlas Wiki: \u003CURL>\n\n5. Check:\n   wiki\u002Findex.md\n   wiki\u002Flog.md\n   wiki\u002F\u003Ctopic>\u002F\u003Carticle>.md\n\n6. Ask questions:\n   What do I know about X in Atlas Wiki?\n\n7. Clean up periodically:\n   Lint Atlas Wiki.\n",[28,901,899],{"__ignoreMap":61},[10,903,904],{},"That is the whole system. No vector database, no separate server, no embeddings pipeline, and no index sync between machines. Just markdown, an agent skill, and discipline around ingest.",[10,906,907],{},"For a personal knowledge base, this turned out to be much more practical than RAG. Not because RAG is bad in general, but because my task is different. I do not need to retrieve random chunks from a huge corpus as fast as possible. I need knowledge around a narrow topic to accumulate, connect, and stay readable without the agent.",[909,910,911],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":61,"searchDepth":225,"depth":225,"links":913},[914,915,916,917,918,919,921,922,923,924],{"id":50,"depth":225,"text":51},{"id":135,"depth":225,"text":136},{"id":194,"depth":225,"text":195},{"id":400,"depth":225,"text":401},{"id":500,"depth":225,"text":501},{"id":625,"depth":225,"text":920},"Check index.md and log.md",{"id":719,"depth":225,"text":720},{"id":783,"depth":225,"text":784},{"id":852,"depth":225,"text":853},{"id":891,"depth":225,"text":892},"2026-05-11","A practical guide to running an LLM wiki in Obsidian with karpathy-llm-wiki: installing the skill, structuring folders, ingesting sources, querying, and linting.",false,"md","llm-wiki-obsidian-implementation.jpg","en",{},"\u002Fcode\u002Fllm-wiki-obsidian-implementation",{"title":5,"description":926},"code\u002F19.llm-wiki-obsidian-implementation",null,"Xt9_d9Vcak3w7vvau4bIxve1ewe6Z7z0GhiR9aenCHk",[938],{"title":939,"path":16,"stem":940,"draft":927,"children":-1},"Knowledge Compilation: Why I Don't Use RAG in Obsidian","code\u002F18.knowledge-compilation-over-rag",1779086424426]