This repository is a bilingual Bitcoin wiki built from the 21ideas.org source library in raw/. See raw/README.md for how that tree is organized (books, theory, practice, start).
- English layer:
wiki-en/ - Russian layer:
wiki-ru/
Both layers use trust markers and strict linking rules.
- Clone the repo and open it as an Obsidian vault.
- Start with the language index:
- English:
wiki-en/index.md - Russian:
wiki-ru/index.md
- English:
- Then open the overview:
- English:
wiki-en/overview.md - Russian:
wiki-ru/overview.md
- English:
- Learning Bitcoin end-to-end
- Use the concept pages as a structured curriculum: money → PoW → mining → scarcity → governance → privacy → security.
- Fast lookups
- Each language layer contains a glossary page:
wiki-en/glossary.mdwiki-ru/glossary.md
- Each language layer contains a glossary page:
- Reading paths
- Use the series pages to go deeper by theme (economics, history, privacy, philosophy).
- Checking provenance
- Pages contain YAML trust markers and a
## Sourcessection linking back to 21ideas.org when a canonical URL exists.
- Pages contain YAML trust markers and a
- Graph-based exploration
- In Obsidian, Graph View becomes useful once you follow links from
index.mdand hub concept pages.
- In Obsidian, Graph View becomes useful once you follow links from
- Maintaining a compounding knowledge base
- Add new immutable source files to
raw/, then run an ingest/update workflow that updates the wiki incrementally without losing provenance.
- Add new immutable source files to
wiki-en/: 76 markdown pages total (73 content pages excluding index, overview + glossary); operations log isdocs/log.md(bilingual).wiki-ru/: 76 markdown pages total (73 content pages excluding index, overview + glossary)
Every wiki page includes:
- Required YAML frontmatter fields:
title,category,quality,sources,synthesized_date,completeness,language,tags. Enhanced pages also carryupdatedandreviewed. - Frontmatter style: Full schema in
CLAUDE.md. - A
## Sources/## Источникиsection (URLs when present, otherwise a clear note). - Rich internal linking. No
#title heading in the body — Quartz renders the frontmattertitleas the page heading.
- In
wiki-en/: internal links use the explicit[[en/...]]prefix. - In
wiki-ru/: internal links use the explicit[[ru/...]]prefix.
This prevents accidental cross-language resolution in shared Obsidian vaults.
raw/— immutable 21ideas.org source markdown files (source of truth);raw/README.mddescribes folders and conventionsraw/README.md— raw directory structurewiki-en/— English wiki pageswiki-ru/— Russian wiki pagesdocs/— maintainer and process documentationWIKI-GUIDE.md— this guidePAGE-ENHANCEMENT-STANDARD.md— superseded byENHANCE-SKILL.md; kept for referenceWIKI-SKILL.md— wiki page generation skill (new ingest + update modes)ENHANCE-SKILL.md— single-page polish skill; use instead of PAGE-ENHANCEMENT-STANDARD.mdlink-map-en.md— generated wikilink map for wiki-en/ (do not edit manually)link-map-ru.md— generated wikilink map for wiki-ru/ (do not edit manually)INGEST-SKILL.md— raw source ingestion workflow; use before the wiki ingest stepWIKI-BACKLOG.md— short-lived backloglint-report.md— mechanical lint output (English); last run wins (see--layerscope below)log.md— append-only operational log for bothwiki-en/andwiki-ru/
tools/— lint.py (mechanical lint), check_duplicate.py, derive_slug.py, check_series.py, build_link_map.py, check_parity.py. Seetools/README.mdfor interface reference.CLAUDE.md(repo root) — project rules: frontmatter schema + bilingual lint rules
- New source files are added to
raw/(never edited by the agent) using the workflow in docs/INGEST-SKILL.md. See CONTRIBUTING.md for the full source acceptance policy. - Link maps: run
python3 tools/build_link_map.pyfrom the repo root to regeneratedocs/link-map-en.mdanddocs/link-map-ru.mdafter adding or renaming wiki pages. Agents read these maps before wikilinking — never scan the directory tree directly. - The agent updates wiki pages, indexes, and logs while preserving provenance.
- Lint: run
python3 tools/lint.pyfrom the repo root (seeCLAUDE.md→ Lint). Use--write-reportto refreshdocs/lint-report.md(English headings and labels; vault paths and quoted snippets may be Russian). Choose--layer ru,--layer en, or--layer bothso the report matches the pass you intend.
CLAUDE.md is loaded automatically in every Cursor session — you never need to @mention it. The agent follows its operation checklists (Ingest, Enhance, Lint, Query) without prompting.
docs/PAGE-ENHANCEMENT-STANDARD.md is not auto-loaded. Always include @docs/ENHANCE-SKILL.md in enhance prompts so the agent has the full standard in context from the start.
| Task | Example prompt | Extra @mention needed? |
|---|---|---|
| Raw ingest | "Use docs/INGEST-SKILL.md to add the following article to raw/. URL: <paste URL here> Content: <paste full article text here>" |
No — skill is self-contained |
| Ingest | "Ingest raw/Theory/protocol/musig2.md into both wiki layers" |
No |
| Enhance | "Enhance wiki-ru/concepts/mempool.md @docs/ENHANCE-SKILL.md" |
Yes — include @docs/ENHANCE-SKILL.md |
| Enhance batch | "Enhance all pages in wiki-ru/concepts/ that are missing the reviewed field @docs/ENHANCE-SKILL.md" |
Yes |
| Lint | "Run a full bilingual lint on both wiki-en/ and wiki-ru/" — agent should run python3 tools/lint.py --layer both --write-report and append docs/log.md |
No |
| Lint (targeted RU) | "Run a targeted lint on wiki-ru/" — e.g. python3 tools/lint.py --layer ru --write-report + docs/log.md |
No |
| Lint (targeted EN) | "Run a targeted lint on wiki-en/" — e.g. python3 tools/lint.py --layer en --write-report + docs/log.md |
No |
| Query | "What does 21ideas say about Lightning privacy? File it as a wiki page if worth keeping." |
No |
For lint passes, ask the agent explicitly; it should run tools/lint.py with --write-report (and the right --layer) then append docs/log.md. For ingest/enhance, agents still append docs/log.md per CLAUDE.md even if you do not repeat that in the prompt.
Previous release: v1.0.0.