Skip to content

Commit 96ce7ad

Browse files
MehmetGoekceclaude
andcommitted
docs: add FAQ, troubleshooting guide, and README badges for v1.1.1
Addresses adoption-friction feedback on v1.1.0 (rated 8.0/10) by filling three documentation gaps: - README badge row (license, release, stars, top language, last commit) - docs/faq.md with 10 first-time-user questions - docs/troubleshooting.md with 12 symptom→cause→fix entries - Documentation section in README linking all five doc pages No code, schema, or command changes. Pure docs release. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent d2b542d commit 96ce7ad

4 files changed

Lines changed: 278 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file.
55
Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
66
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [1.1.1] - 2026-04-18
9+
10+
### Added
11+
12+
- README badge row — license, release, stars, top language, last commit
13+
- `docs/faq.md` — 10 questions first-time users actually ask (paid plan, L1/L2 rationale, tool choice, credential safety, wiki growth thresholds)
14+
- `docs/troubleshooting.md` — setup, wiki-app integration, Claude Code integration, and wiki-growth issues with symptom → cause → fix format
15+
- README "Documentation" section linking all five docs pages
16+
17+
### Notes
18+
19+
- Documentation-only release. No code, schema, or command changes.
20+
- Focus: adoption friction. The v1.1.0 feedback pointed at missing onboarding docs, not missing features.
21+
822
## [1.1.0] - 2026-04-10
923

1024
### Added
@@ -52,5 +66,6 @@ First stable release.
5266
- Credential leak detection (lint rule 6) scans for tokens, passwords, secrets
5367
- L1/L2 security boundary: credentials stay in L1 (git-excluded), wiki is git-tracked
5468

69+
[1.1.1]: https://github.com/MehmetGoekce/llm-wiki/compare/v1.1.0...v1.1.1
5570
[1.1.0]: https://github.com/MehmetGoekce/llm-wiki/compare/v1.0.0...v1.1.0
5671
[1.0.0]: https://github.com/MehmetGoekce/llm-wiki/releases/tag/v1.0.0

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# llm-wiki
22

3+
[![License: MIT](https://img.shields.io/github/license/MehmetGoekce/llm-wiki)](LICENSE)
4+
[![Release](https://img.shields.io/github/v/release/MehmetGoekce/llm-wiki)](https://github.com/MehmetGoekce/llm-wiki/releases)
5+
[![Stars](https://img.shields.io/github/stars/MehmetGoekce/llm-wiki?style=social)](https://github.com/MehmetGoekce/llm-wiki/stargazers)
6+
[![Top Language](https://img.shields.io/github/languages/top/MehmetGoekce/llm-wiki)](https://github.com/MehmetGoekce/llm-wiki)
7+
[![Last Commit](https://img.shields.io/github/last-commit/MehmetGoekce/llm-wiki)](https://github.com/MehmetGoekce/llm-wiki/commits)
8+
39
Build [Karpathy's LLM Wiki](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) with Claude Code. Two-layer cache architecture (L1/L2). Supports Logseq and Obsidian.
410

511
```mermaid
@@ -296,6 +302,14 @@ No system is perfect. Some things to know:
296302
- **Parallel agents can conflict.** If you have multiple Claude sessions writing to wiki files simultaneously, concurrent edits can cause conflicts. Treat wiki files as a shared resource.
297303
- **Start with fewer hub pages.** Let them emerge organically from ingest operations rather than creating empty hubs upfront.
298304
305+
## Documentation
306+
307+
- [FAQ](docs/faq.md) — Common questions before you run `setup.sh`
308+
- [Troubleshooting](docs/troubleshooting.md) — Setup, integration, and runtime issues
309+
- [L1/L2 Architecture](docs/l1-l2-architecture.md) — Why two layers, how to route knowledge
310+
- [Schema Reference](docs/schema-reference.md) — Page types, properties, lint rules
311+
- [Logseq vs. Obsidian](docs/logseq-vs-obsidian.md) — Detailed comparison and migration notes
312+
299313
## Credits
300314

301315
- Inspired by [Andrej Karpathy's LLM Wiki gist](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f)

docs/faq.md

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# Frequently Asked Questions
2+
3+
Questions that come up when evaluating whether llm-wiki is the right tool for you.
4+
5+
## What does llm-wiki actually do that a plain Logseq or Obsidian setup doesn't?
6+
7+
A plain Logseq or Obsidian setup is a manual knowledge base. You decide what to capture, you write the pages, you maintain the links, and you fix the inconsistencies. The quality of the wiki degrades as your effort drops.
8+
9+
llm-wiki turns Claude Code into the wiki maintainer. You feed it raw sources (URLs, files, chat transcripts), and it extracts entities, creates or updates 5-15 pages per ingest, adds cross-references between them, and enforces a schema so every page follows the same structure. A `/wiki lint` command continuously checks for broken links, stale content, missing properties, and credential leaks.
10+
11+
The wiki app (Logseq or Obsidian) is still where you *read* the knowledge. The difference is who does the writing.
12+
13+
## Do I need a paid Claude plan?
14+
15+
Yes. llm-wiki assumes you are using [Claude Code](https://claude.ai/code), which requires an Anthropic account and a paid plan (Pro or higher). All `/wiki` commands run through Claude Code — there are no external API calls, no vector databases, no separate ingest servers.
16+
17+
Claude Code itself is the only dependency. There is no additional cost for llm-wiki beyond your existing Claude plan.
18+
19+
## Why two layers (L1 and L2)? Isn't one enough?
20+
21+
If everything lives in one place, you face a dilemma: either the LLM loads the entire wiki into every session (blowing up the context window) or it queries the wiki per question (too slow for simple rules like "always use ISO 8601 dates").
22+
23+
Splitting knowledge into L1 (auto-loaded, always present) and L2 (on-demand) solves this. Operational rules and gotchas live in L1. Deep project knowledge lives in L2. The LLM has instant access to both, but the context window stays lean.
24+
25+
It feels overengineered at first. After a week of use, the boundary becomes second nature. See [docs/l1-l2-architecture.md](l1-l2-architecture.md) for the full rationale.
26+
27+
## Logseq or Obsidian — which should I choose?
28+
29+
If you already use one, stick with it. llm-wiki supports both equally, and migration between them is not trivial (different file-naming conventions).
30+
31+
If you are starting fresh, the short version:
32+
33+
- **Logseq** for LLM-heavy workflows. Outliner format means every line is an addressable block, so the LLM can append without disturbing existing structure.
34+
- **Obsidian** for human-heavy workflows. Flat markdown is nicer to read and edit by hand, and the plugin ecosystem is huge.
35+
36+
See [docs/logseq-vs-obsidian.md](logseq-vs-obsidian.md) for the full comparison.
37+
38+
## Can I ingest my existing notes?
39+
40+
Yes, but not with a single command yet. For now:
41+
42+
1. Run `./setup.sh` to create the schema and namespace structure in a fresh wiki location.
43+
2. Use `/wiki ingest <path-to-existing-note>` to process notes one at a time. The LLM extracts entities, fits them into your schema, and creates cross-references.
44+
3. Iterate — Claude will ask clarifying questions for ambiguous content.
45+
46+
Bulk migration tooling is on the roadmap. For now, ingesting 20-50 notes manually is the common path.
47+
48+
## Can I use this with ChatGPT or Gemini instead of Claude?
49+
50+
Not currently. The `/wiki` commands rely on Claude Code's skill system and memory architecture. The ingest pipeline, lint rules, and query synthesis are specified against Claude's behavior.
51+
52+
Porting to other CLI-based LLM coding tools is on the roadmap but requires significant work — not just the command layer, but the L1 memory semantics and the append-only page discipline.
53+
54+
## What is the difference between this and Karpathy's original gist?
55+
56+
Karpathy's gist is a concept essay. It describes *what* an LLM wiki should do (ingest, query, lint) and why it matters. It does not specify tools, file formats, schemas, or workflows.
57+
58+
llm-wiki is an implementation. It picks Claude Code as the LLM, Logseq or Obsidian as the wiki UI, defines a concrete schema with 5 page types, specifies 9 lint rules with auto-fix behavior, and adds the L1/L2 cache layer that the gist does not mention. Setup takes 5 minutes with `./setup.sh`; the gist is 100% design, 0% code.
59+
60+
If you want the pure concept, read the gist. If you want a working system, use llm-wiki.
61+
62+
## At what wiki size does this become worth the overhead?
63+
64+
The schema and lint rules feel like overhead at under 20 pages — you could maintain 20 notes by hand. Past 50 pages, the structure starts paying for itself. Past 200, maintaining the wiki without automation is essentially impossible.
65+
66+
The useful mental model: set up llm-wiki when you expect to cross 50 pages within 6 months. Below that threshold, plain notes are fine.
67+
68+
## How do I prevent credentials from ending up in the wiki?
69+
70+
Credentials must live in L1 (Claude Code memory), never in L2 (the wiki). The wiki is typically git-tracked, which means anything in L2 could be published accidentally.
71+
72+
Three layers of protection:
73+
74+
1. **Schema rule.** The schema explicitly states credentials go in L1 only.
75+
2. **Lint rule #6 (credential-leak).** `/wiki lint` scans every page for `token::`, `password::`, `secret::`, `api-key::`, and base64 patterns. Critical severity — blocks commits.
76+
3. **Ingest quality gate.** Phase 4 of the ingest pipeline aborts before writing if credentials are detected in the extracted content.
77+
78+
If a credential slips through despite this, `/wiki lint --fix` will flag it and refuse to auto-repair (so it does not remove it silently). You remove it manually, rotate the credential, and move the reference to L1.
79+
80+
## How do I commit the wiki to GitHub safely?
81+
82+
Three checks before your first push:
83+
84+
1. **Run `/wiki lint` and confirm zero credential warnings.** Critical severity issues must be resolved first.
85+
2. **Verify your memory directory is in `.gitignore`.** The Claude Code `memory/` path (typically `~/.claude/projects/*/memory/`) must be excluded — it contains credentials and personal data.
86+
3. **Review the first commit diff manually.** One-time sanity check that no API tokens or personal notes made it into tracked files.
87+
88+
After the first push, the L1/L2 boundary enforces itself. The lint runs catch drift before it reaches GitHub.
89+
90+
## Where do I report bugs or request features?
91+
92+
[GitHub Issues](https://github.com/MehmetGoekce/llm-wiki/issues) — there are templates for bug reports and feature requests. Security issues: see [SECURITY.md](../SECURITY.md).

docs/troubleshooting.md

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
# Troubleshooting
2+
3+
Common issues and fixes. If your problem is not listed here, open a [GitHub issue](https://github.com/MehmetGoekce/llm-wiki/issues/new/choose).
4+
5+
## Setup
6+
7+
### `setup.sh: python3: command not found`
8+
9+
**Cause:** Python 3 is not installed or not in your `PATH`. The setup script uses Python 3 to render page templates.
10+
11+
**Fix:**
12+
13+
- **macOS:** `brew install python3`
14+
- **Ubuntu/Debian:** `sudo apt install python3`
15+
- **Fedora:** `sudo dnf install python3`
16+
- **Windows:** Install from [python.org](https://www.python.org/downloads/) and check "Add python.exe to PATH" during install.
17+
18+
Verify with `python3 --version`. The script requires Python 3.6 or newer (any version from the last ~8 years works).
19+
20+
### `setup.sh: git: command not found`
21+
22+
**Cause:** Git is not installed. Needed for the optional `git init` step and to clone the repo in the first place.
23+
24+
**Fix:**
25+
26+
- **macOS:** Comes with Xcode Command Line Tools — run `xcode-select --install`.
27+
- **Ubuntu/Debian:** `sudo apt install git`
28+
- **Fedora:** `sudo dnf install git`
29+
- **Windows:** Install [Git for Windows](https://git-scm.com/download/win).
30+
31+
### `setup.sh` fails during template rendering
32+
33+
**Cause:** Usually one of three things:
34+
35+
1. The destination directory is not writable.
36+
2. The template directory is missing (corrupted clone or wrong working directory).
37+
3. A pre-existing file blocks template output.
38+
39+
**Fix:**
40+
41+
- Confirm you ran `./setup.sh` from inside the cloned `llm-wiki` directory, not from elsewhere.
42+
- Check the path you entered is writable: `touch ~/Documents/Logseq/test.txt && rm ~/Documents/Logseq/test.txt`.
43+
- If pre-existing pages block the render, setup will skip them. Delete the skipped pages manually if you want them regenerated.
44+
- Re-clone the repo if `templates/` looks empty or partial.
45+
46+
### The script exits at "Which note-taking tool do you use?"
47+
48+
**Cause:** Something other than `1` or `2` was entered. The script exits immediately on invalid input rather than re-prompting.
49+
50+
**Fix:** Re-run `./setup.sh` and enter exactly `1` (Logseq) or `2` (Obsidian). If you prefer non-interactive runs (e.g., CI or testing):
51+
52+
```bash
53+
echo -e "1\n~/test-wiki\ny\n\nskip\ny\nskip" | ./setup.sh
54+
```
55+
56+
See `CONTRIBUTING.md` for the full stdin sequence.
57+
58+
## Wiki App Integration
59+
60+
### New pages don't appear in the Logseq graph
61+
62+
**Cause:** Logseq watches the `pages/` directory but only re-indexes under specific conditions. New files created while Logseq is running may not show up until you reload.
63+
64+
**Fix:**
65+
66+
1. In Logseq: `File → Reindex` (or `Cmd/Ctrl + Shift + R`).
67+
2. Confirm the file path is correct. Logseq pages live in `<graph-root>/pages/` and must use the `Wiki___Namespace___Page.md` triple-underscore naming.
68+
3. Check `journals/` is not accidentally being used — journals have a different format and will not render as regular wiki pages.
69+
70+
### Obsidian shows YAML frontmatter as a code block instead of Properties
71+
72+
**Cause:** Older Obsidian versions (before 1.4, released mid-2023) do not support the Properties feature. The frontmatter still works, but renders as literal text.
73+
74+
**Fix:**
75+
76+
- Update Obsidian to the latest version.
77+
- In Settings → Editor, ensure "Properties in document" is enabled.
78+
- If you deliberately disable Properties, the wiki still works — the LLM reads the YAML, and nothing breaks. The display is just uglier.
79+
80+
### Cross-references `[[Wiki/Tech/Strapi]]` aren't clickable
81+
82+
**Cause:** Wrong file-naming convention for the tool.
83+
84+
**Fix:**
85+
86+
- **Logseq** expects triple-underscore flat files: `Wiki___Tech___Strapi.md`. `[[Wiki/Tech/Strapi]]` resolves because Logseq treats `/` and `___` as equivalent path separators.
87+
- **Obsidian** expects directory hierarchy: `Wiki/Tech/Strapi.md`. The file literally lives inside `Wiki/Tech/`.
88+
89+
If you mix conventions (e.g., triple-underscore files inside an Obsidian vault), links break. Check that `setup.sh` configured the correct tool — run it again and pick the tool matching your current vault.
90+
91+
## Claude Code Integration
92+
93+
### `/wiki` commands aren't available in Claude Code
94+
95+
**Cause:** The skill was not installed into your project. `setup.sh` offers to copy it but it is optional.
96+
97+
**Fix:**
98+
99+
1. Confirm `.claude/commands/wiki.md` exists in your project directory.
100+
2. If missing, re-run `./setup.sh` and answer `y` at the "Install wiki skill in a project?" step, then provide the project path.
101+
3. Alternatively, copy manually:
102+
```bash
103+
cp wiki.md ~/your-project/.claude/commands/wiki.md
104+
```
105+
4. In `wiki.md`, verify the `<CONFIG_PATH>` placeholder has been replaced with the absolute path to your `llm-wiki.yml`.
106+
107+
Restart Claude Code for the skill to be picked up.
108+
109+
### `/wiki ingest` runs forever or times out
110+
111+
**Cause:** Source is too large, or the wiki has grown past the batch limit and Claude is trying to load too many pages at once.
112+
113+
**Fix:**
114+
115+
- Split large sources. A 10,000-word document should be ingested in 2-3 passes, not one.
116+
- The ingest pipeline has a 3-page batch limit — if your wiki has hundreds of pages and many are relevant to the source, processing takes proportionally longer.
117+
- If Claude Code hits a context limit mid-ingest, it will stop and report. Re-run the same ingest — Claude's append-only discipline prevents duplicates.
118+
119+
### `/wiki ingest` blocks with a credential-leak warning but the content has no credentials
120+
121+
**Cause:** False positive from lint rule #6. The credential-leak regex includes base64-like patterns (`[A-Za-z0-9+/]{40,}`), which also match innocent long strings — long URLs, hashes, or technical identifiers.
122+
123+
**Fix:**
124+
125+
1. Review the flagged content. If it is a genuine credential, move it to L1 (memory) and strip it from the source before re-ingesting.
126+
2. If it is a false positive (e.g., a commit SHA or a long URL), you have two options:
127+
- Edit the source to break the pattern (e.g., add a space or truncate).
128+
- Temporarily disable the base64 pattern in `llm-wiki.yml``lint.credential_patterns`. Re-enable it after the ingest.
129+
130+
Never commit around the lint by force. The false positive rate is low, and genuine credential leaks have serious consequences.
131+
132+
## Wiki Growth
133+
134+
### The wiki has grown past 200 pages and feels unmanageable
135+
136+
**Cause:** Natural friction at scale. Past ~200 pages, flat namespaces get noisy, hub pages grow long, and the mental model of "what is where" breaks down.
137+
138+
**Fix:**
139+
140+
- **Split namespaces.** If `Wiki/Tech/` has 50+ pages, consider splitting into `Wiki/Tech/Infrastructure/`, `Wiki/Tech/Languages/`, etc. Namespaces can go 3 levels deep.
141+
- **Consolidate hubs.** A hub page with 40 child links is useless. Group children into sub-sections with brief descriptions, not just a flat list.
142+
- **Run `/wiki lint` weekly.** Stale detection reveals pages that have not been updated in 90+ days — candidates for archival or deletion.
143+
- **Audit L1/L2.** If you find yourself querying the same L2 page every session, promote the essential part to L1.
144+
145+
The wiki scales, but like any knowledge system, it requires periodic gardening.
146+
147+
### `/wiki lint` keeps flagging the same orphan pages
148+
149+
**Cause:** Pages that have no incoming links are flagged as orphans. If the same pages appear every run, they are genuinely unlinked.
150+
151+
**Fix:**
152+
153+
- Add the page to the appropriate hub page (e.g., `Wiki/Tech` hub should list all `Wiki/Tech/*` pages).
154+
- Add cross-references from related pages — if `Wiki/Projects/X` mentions `Wiki/Tech/Y`, make sure it uses `[[Wiki/Tech/Y]]` syntax.
155+
- Run `/wiki lint --fix` — it auto-adds missing hub entries where obvious.
156+
157+
If a page is genuinely isolated and cannot be linked from anywhere, it may be a sign the page is misplaced (wrong namespace) or should be deleted.

0 commit comments

Comments
 (0)