{"id":50251643,"url":"https://github.com/olegiv/llm-wiki-go","last_synced_at":"2026-05-27T02:03:37.204Z","repository":{"id":350490026,"uuid":"1207080825","full_name":"olegiv/llm-wiki-go","owner":"olegiv","description":"Karpathy-style LLM Wiki — raw/ holds immutable source material, wiki/ is the compiled knowledge layer, wikilint enforces structure.","archived":false,"fork":false,"pushed_at":"2026-05-15T16:30:57.000Z","size":270,"stargazers_count":11,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-05-15T19:25:12.783Z","etag":null,"topics":["claude-code","cli","go","golang","karpathy","knowledge-base","linter","llm","markdown","obsidian","second-brain","wiki"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/olegiv.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-10T14:54:53.000Z","updated_at":"2026-05-15T16:30:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/olegiv/llm-wiki-go","commit_stats":null,"previous_names":["olegiv/llm-wiki-go"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/olegiv/llm-wiki-go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olegiv%2Fllm-wiki-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olegiv%2Fllm-wiki-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olegiv%2Fllm-wiki-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olegiv%2Fllm-wiki-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/olegiv","download_url":"https://codeload.github.com/olegiv/llm-wiki-go/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olegiv%2Fllm-wiki-go/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33546836,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","cli","go","golang","karpathy","knowledge-base","linter","llm","markdown","obsidian","second-brain","wiki"],"created_at":"2026-05-27T02:03:36.143Z","updated_at":"2026-05-27T02:03:37.195Z","avatar_url":"https://github.com/olegiv.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# llm-wiki-go\n\n[![Go](https://github.com/olegiv/llm-wiki-go/actions/workflows/go.yml/badge.svg)](https://github.com/olegiv/llm-wiki-go/actions/workflows/go.yml) [![CodeQL](https://github.com/olegiv/llm-wiki-go/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/olegiv/llm-wiki-go/actions/workflows/github-code-scanning/codeql)\n\nA [Karpathy-style][karpathy-llm-wiki] \"LLM Wiki\" — a repo designed around\nthe idea that the interesting knowledge artifact is a living, compiled\nwiki, not the raw source material it was distilled from.\n\n[karpathy-llm-wiki]: https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f\n\nThe repo has two data layers and a small amount of Go tooling that keeps\nthem honest:\n\n- **`raw/`** holds immutable source material: documents, transcripts,\n  notes, captures. Nothing in `raw/` is ever rewritten, summarized in\n  place, or deleted.\n- **`wiki/`** is the canonical compiled knowledge layer, in\n  Obsidian-friendly Markdown. Entities, topics, and sources each get\n  their own page. Every substantive claim traces back to `raw/` through\n  a `## Sources` section.\n\nClaude Code (and any other coding agent operating in this repo) acts as\nthe compiler and editor: it reads from `raw/`, compiles knowledge into\n`wiki/`, and keeps the wiki internally consistent. The rules the agent\nfollows are in [`CLAUDE.md`](CLAUDE.md) and [`AGENTS.md`](AGENTS.md).\n\n## How the compiled knowledge is enforced\n\nThe Go CLI `wikilint` enforces the structural invariants so the wiki\nstays well-formed as it grows. It checks that every page has a single\n`# ` title, that substantive pages have a non-empty `## Sources`\nsection, that Markdown links and Obsidian-style `[[wikilinks]]` all\nresolve, that no two pages collide on a normalized title slug, and that\nno page is an orphan unreachable from `wiki/index.md`.\n\n## File layout\n\n```\nllm-wiki-go/\n├── .claude/              # Claude Code skills, agents, shared submodule\n│   ├── agents/           #   focused sub-agent definitions\n│   ├── shared/           #   git submodule: claude-code-support-tools\n│   └── skills/           #   workflow skills (ingest, answer, lint, reconcile)\n├── cmd/\n│   └── wikilint/         # linter CLI entry point\n├── internal/\n│   ├── wiki/             # helpers for ingest / answer / reconcile workflows\n│   └── wikilint/         # linter implementation, tested in-package\n├── raw/                  # immutable source material (read-only for agents)\n├── wiki/                 # canonical compiled knowledge layer (Markdown)\n│   ├── entities/\n│   ├── topics/\n│   ├── sources/\n│   ├── index.md          # entry point; every page must be reachable from here\n│   └── log.md            # append-only record of substantive wiki changes\n├── AGENTS.md             # agent guidelines\n├── CLAUDE.md             # Claude Code guidelines (imports AGENTS.md)\n├── Makefile              # convenience wrapper around go + wikilint\n├── README.md\n└── go.mod\n```\n\nNo `go.sum` file ships with the scaffold: the project currently depends\nonly on the Go standard library, and Go does not emit a `go.sum` until\nexternal modules are required.\n\n## Getting started\n\n`raw/` and `wiki/` are **tracked in git** and ship with the repo. The\ndefault example uses `raw/ocms-go.core/`, a directory of symlinks into a\nsibling `../ocms-go.core` checkout. `wiki/` ships as the compiled\nMarkdown.\n\nFor the default example, clone `ocms-go.core` as a sibling of this repo\nand you're ready to go — no `make setup` needed:\n\n```bash\ncd ..\ngit clone https://github.com/olegiv/ocms-go.core.git\ncd llm-wiki-go\n```\n\n`make setup` remains available for bootstrapping against a different\nsource repo. It creates the directory structure (`raw/`,\n`wiki/entities/`, `wiki/topics/`, `wiki/sources/`) and seeds\n`wiki/index.md` and `wiki/log.md` if they don't already exist.\n\nUsing `llm-wiki-go` for a project other than the bundled\n`ocms-go.core` example — or running wikis for several projects in\nparallel — is documented in\n[`docs/MULTI_PROJECT.md`](docs/MULTI_PROJECT.md).\n\n## Commands\n\nAll common tasks go through the Makefile. Run `make help` to list the\navailable targets:\n\n```bash\nmake help                 # list every target with a one-line description\nmake all                  # build the default local/dev binary\nmake setup                # create raw/ and wiki/ directory structure\nmake build                # fast local/dev build to bin/wikilint\nmake build-prod           # optimized host production build\nmake build-linux-amd64    # optimized static linux/amd64 production build\nmake build-darwin-arm64   # optimized darwin/arm64 production build\nmake build-all-platforms  # linux/amd64 + darwin/arm64 production builds\nmake test                 # run the Go test suite\nmake test-race            # run tests with race detector\nmake coverage             # run tests with coverage summary\nmake coverage-html        # write coverage.out + coverage.html\nmake lint-go              # run golangci-lint\nmake lint-wiki            # run wikilint against ./wiki\nmake lint                 # run all linters\nmake check                # full pre-commit chain: fmt-check + vet + test + lint\nmake fmt                  # format all Go files in-place\nmake fmt-check            # fail if gofumpt would reformat files\nmake vet                  # run go vet\nmake deps                 # go mod download\nmake tidy                 # go mod tidy\nmake install-tools        # install pinned developer tools\nmake clean                # remove build artifacts (bin/)\nmake install              # install wikilint into $(GOBIN) or $(GOPATH)/bin\n```\n\nUnder the hood these invoke the standard Go toolchain. If you prefer,\nyou can drive it directly:\n\n```bash\ngo build ./...\ngo test ./...\ngo run ./cmd/wikilint -wiki ./wiki\n```\n\nOn success the linter prints exactly `wikilint: OK`. On failure it\nprints one issue per line to stderr in the form\n`\u003crelative-path\u003e: \u003cmessage\u003e` and exits with a non-zero status.\n\n## Claude Code workflow\n\nThe intended workflow when Claude Code (or any capable coding agent) is\ndriving the wiki looks like this:\n\n1. **Ingest** — the `ingest-source` skill reads files in `raw/`, extracts\n   entities, topics, and claims, creates or updates pages under `wiki/`,\n   refreshes `wiki/index.md`, and appends an entry to `wiki/log.md`.\n2. **Answer** — the `answer-from-wiki` skill answers user questions from\n   `wiki/` first, consulting `raw/` only when the wiki does not already\n   contain the answer. Anything new learned from `raw/` is compiled\n   back into `wiki/`.\n3. **Reconcile** — the `reconcile-conflicts` skill records disagreements\n   between sources in a page's `## Contradictions` section instead of\n   silently merging them.\n4. **Lint** — the `lint-wiki` skill runs `wikilint` and fixes whatever it\n   reports, in the wiki rather than in the linter.\n\nFocused sub-agents back each workflow: a read-only `source-analyst` for\nextraction from `raw/`, a `wiki-editor` that creates and refines wiki\npages, and a `contradiction-reviewer` that proposes explicit\ncontradiction notes instead of papering over disagreements.\n\n## Submodule: `.claude/shared`\n\nThe `.claude/shared/` directory is a Git submodule pointing at\n[`olegiv/claude-code-support-tools`](https://github.com/olegiv/claude-code-support-tools).\nIt contains shared Claude Code tooling — stacks, hooks, and helpers —\nthat is reused across multiple projects. After cloning the repo, run:\n\n```bash\ngit submodule update --init --recursive\n```\n\nto populate `.claude/shared/`. (`raw/` and `wiki/` are already tracked\nin git and do not need to be created.)\n\n## License\n\nllm-wiki-go is released under the GNU General Public License v3.0.\nSee [`LICENSE`](LICENSE) for the full text.\n\nCopyright (C) 2026 Oleg Ivanchenko\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Folegiv%2Fllm-wiki-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Folegiv%2Fllm-wiki-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Folegiv%2Fllm-wiki-go/lists"}