22
33Private monorepo: blog + GTD + LLM-powered knowledge base.
44
5+ ## Setup (after clone)
6+
7+ ### 1. Prerequisites
8+
9+ - [ Emacs] ( https://www.gnu.org/software/emacs/ ) (for blog build + GTD)
10+ - [ Doom Emacs] ( https://github.com/doomemacs/doomemacs ) (with config from [ bufrr/emacs-config] ( https://github.com/bufrr/emacs-config ) )
11+ - [ Claude Code] ( https://claude.ai/code ) CLI (` claude ` command available in PATH)
12+ - Node.js 16+ and npm (for blog asset minification)
13+
14+ ### 2. Clone and install
15+
16+ ``` bash
17+ git clone git@github.com:bufrr/bufrr.github.io.git ~ /bufrr.github.io
18+ cd ~ /bufrr.github.io
19+ npm ci
20+ cp .blogrc.example .blogrc # edit with your values
21+ ```
22+
23+ ### 3. Doom Emacs config
24+
25+ The Doom config lives in ` ~/.config/doom/ ` (separate [ emacs-config] ( https://github.com/bufrr/emacs-config ) repo). It points all paths to this repo:
26+
27+ ``` elisp
28+ (setq org-directory "~/bufrr.github.io/")
29+ (setq org-current-file "~/bufrr.github.io/gtd/current.org")
30+ (setq org-archive-file "~/bufrr.github.io/gtd/archive.org")
31+ (setq blog-directory "~/bufrr.github.io/")
32+ ```
33+
34+ After cloning the emacs-config, run:
35+
36+ ``` bash
37+ doom sync # installs org-roam, org-roam-ui, org-ql
38+ ```
39+
40+ ### 4. Verify everything works
41+
42+ ``` bash
43+ # Blog
44+ ./build.sh # should generate HTML in public/
45+
46+ # Knowledge base (requires Claude Code CLI)
47+ claude -p " Read CLAUDE.md. Then read kb/wiki/index.org. Report what you see."
48+
49+ # Or use Makefile shortcuts
50+ make kb-lint # health check
51+ make kb-absorb # compile new raw files
52+ ```
53+
54+ In Emacs:
55+ - ` SPC g w ` — should open ` gtd/current.org `
56+ - ` SPC k k ` — should open ` kb/wiki/ ` directory
57+ - ` SPC B n ` — should create a new blog post
58+
559## Structure
660
761```
@@ -18,51 +72,77 @@ kb/ Knowledge base
1872 skills/ Skill files defining Claude's behavior
1973```
2074
21- ## Blog
75+ ## Daily Usage
76+
77+ ### Add knowledge
2278
2379``` bash
24- npm ci
25- cp .blogrc.example .blogrc
26- ./build.sh # build site
27- make serve # preview at localhost:8000
28- make build-prod # build + minify
29- ```
80+ # Option A: save a file directly
81+ cp article.org kb/raw/articles/
3082
31- Create posts in ` posts/ ` using ` YYYY-MM-DD-slug.org ` naming with ` #+TITLE: ` , ` #+AUTHOR: ` , ` #+DATE: ` headers. Set ` #+DRAFT: true ` to keep unpublished.
83+ # Option B: use Emacs capture
84+ # SPC k n → paste content → save
3285
33- Push to ` main ` to deploy via GitHub Pages.
86+ # Then compile it into wiki
87+ claude -p " Read kb/skills/absorb.md. Absorb kb/raw/articles/article.org"
88+ ```
89+
90+ ### Query your wiki
3491
35- ## Knowledge Base
92+ ``` bash
93+ claude -p " Read kb/skills/query.md. Summarize everything I know about Solana."
94+ ```
3695
37- The KB uses ` claude -p ` (Claude Code CLI) to compile raw notes into a structured wiki.
96+ ### Write a blog post from wiki knowledge
3897
3998``` bash
40- # Ingest a source
41- claude -p " Read kb/skills/ingest.md. Ingest this URL: https://..."
99+ claude -p " Read kb/skills/query.md. Based on my wiki, draft a blog post about Ethereum block building. Save to kb/artifacts/eth-block-building.org"
100+
101+ # Then publish
102+ # SPC k p → select draft → copies to posts/
103+ # SPC B p → publish
104+ # git push
105+ ```
42106
43- # Compile raw files into wiki
44- claude -p " Read kb/skills/absorb.md. Absorb kb/raw/articles/my-article.org"
107+ ### Weekly maintenance
45108
46- # Query the wiki
47- claude -p " Read kb/skills/query.md. What do I know about Ethereum MEV?"
109+ ``` bash
110+ make kb-lint # find issues
111+ make kb-breakdown # find missing articles
112+ ```
48113
49- # Health check
50- claude -p " Read kb/skills/lint.md. Run a health check."
114+ ## Blog
51115
52- # Find missing articles
53- claude -p " Read kb/skills/breakdown.md. What articles are missing?"
116+ ``` bash
117+ ./build.sh # build site
118+ make serve # preview at localhost:8000
119+ make build-prod # build + minify
54120```
55121
56- Skill files in ` kb/skills/ ` define all rules. See ` CLAUDE.md ` for the full command reference.
122+ Create posts in ` posts/ ` using ` YYYY-MM-DD-slug.org ` naming with ` #+TITLE: ` , ` #+AUTHOR: ` , ` #+DATE: ` headers. Set ` #+DRAFT: true ` to keep unpublished.
123+
124+ Push to ` main ` to deploy via GitHub Pages.
57125
58126## GTD
59127
60- Managed in Doom Emacs with ` SPC g ` keybindings . Files: ` gtd/current.org ` (active work) and ` gtd/archive.org ` (completed).
128+ Managed in Doom Emacs. Files: ` gtd/current.org ` (active work) and ` gtd/archive.org ` (completed).
61129
62- ## Doom Emacs Keybindings
130+ ## Keybindings
63131
64132| Prefix | System | Keys |
65133| --------| --------| ------|
66- | ` SPC g ` | GTD | ` c ` capture, ` a ` agenda, ` w ` current work |
67- | ` SPC k ` | KB | ` n ` new raw, ` c ` compile, ` k ` browse wiki, ` g ` graph, ` h ` health check |
134+ | ` SPC g ` | GTD | ` c ` capture, ` a ` agenda, ` w ` current work, ` A ` archive |
135+ | ` SPC k ` | KB | ` n ` new raw, ` c ` compile file , ` C ` compile all new, ` k ` browse wiki, ` g ` graph, ` h ` health check, ` p ` publish draft |
68136| ` SPC B ` | Blog | ` n ` new post, ` p ` publish |
137+
138+ ## KB Commands Reference
139+
140+ | Command | CLI | Makefile | What it does |
141+ | ---------| -----| ----------| -------------|
142+ | Ingest | ` claude -p "Read kb/skills/ingest.md. Ingest ..." ` | — | Import source into raw/ |
143+ | Absorb | ` claude -p "Read kb/skills/absorb.md. Absorb ..." ` | ` make kb-absorb ` | Compile raw → wiki |
144+ | Query | ` claude -p "Read kb/skills/query.md. ..." ` | — | Answer questions from wiki |
145+ | Lint | ` claude -p "Read kb/skills/lint.md. ..." ` | ` make kb-lint ` | Health check |
146+ | Breakdown | ` claude -p "Read kb/skills/breakdown.md. ..." ` | ` make kb-breakdown ` | Find missing articles |
147+ | Reorganize | ` claude -p "Read kb/skills/reorganize.md. ..." ` | — | Restructure categories |
148+ | Rebuild Index | ` claude -p "Read kb/skills/rebuild-index.md. ..." ` | — | Regenerate index.org |
0 commit comments