How to build a maintainable AI Skill β one that survives past 3 months

TL;DR: Most AI knowledge bases die within 2-3 months because nobody maintains the links between pages. If you want your Skill to still work after 6 months β not just be a dead markdown folder β you need three loops: Ingest β Query β Lint. This is the exact model I use for the 241-page Skill on this site. Original inspiration: how Karpathy uses Claude + Obsidian.
Why Skills dieβ
Week 1 you ingest 50 pages. Feels great. Next week you add 10 more. A month later, 5 more. Then you drop it.
Six months later you open it back up: 3 pages contradict each other, 7 pages are orphaned (nothing links to them), 2 pages describe the same thing under different slugs. AI reads it β gets confused β generates inconsistent proposals.
It's not that you're lazy. The root problem: the value of a Skill is in the links between pages, not in the number of pages. And links grow quadratically: 10 pages have 45 potential link pairs, 500 pages have 124,000+. A human can't hold that in their head. AI has to hold it for you.
The core principleβ
Obsidian is the IDE, the LLM is the programmer, the wiki is the codebase.
Which means you treat the knowledge base like code:
- Clear schema (rules)
- Versioning + logs
- A "linter" that runs regularly to catch problems
- Atomic commits (each ingest = one idea, one commit)
If you've written code for years, you know a codebase without tests and linting rots fast. Knowledge bases work the same way.
The three core loopsβ
1. Ingest β turn raw sources into atomic pagesβ
Every source (article, video, course, transcript) lands in /raw. AI reads it, extracts the ideas, and writes each one as its own atomic page in /wiki, automatically adding wikilinks to related existing pages.
Rules:
- One page = one idea (atomic)
- Every page has: title, one-sentence summary, content in your voice, source citation
- If a new page links to 3+ existing pages β tag it as a "hub"
- Write to
log.md: date, source, pages created - Move the source from
/rawto/raw/processedso you don't ingest it twice
Common mistake: copy-pasting entire paragraphs from the source. AI reading them back gets nothing new β no value added. You have to reword in your voice and add a "why this matters" note.
2. Query β turn questions into new pagesβ
When you ask AI a question ("how do I write a timeline-first hook for SaaS?"), AI doesn't answer from scratch like ChatGPT β it searches /wiki first, cites the pages it used, then answers.
The key insight: output becomes input. A good answer β file it back into the wiki as a new page β next time AI finds it instantly.
Rules:
- Always search the wiki before answering
- Cite the pages you drew from (like academic footnotes)
- If two pages contradict each other, call the contradiction out β don't silently pick one
- If the answer is worth saving, ask whether to file it back
This is the biggest difference from vanilla RAG: RAG searches from scratch every time; here you compile knowledge once, use it many times.
3. Lint β periodic maintenanceβ
This is the step 90% of people skip β and it's why 90% of wikis die.
Run it every 2-4 weeks. AI scans the entire wiki and reports:
- Contradictions β page A says X, page B says the opposite
- Outdated pages β a claim has been superseded but the page never got updated
- Orphans β pages nothing links to; probably forgotten or duplicated
- Gaps β a topic is referenced across many pages but has no dedicated page yet
- Duplicates β two pages saying the same thing, need merging
Important: report only, never auto-delete. You read the report and decide merge / delete / reword.
The minimal architecture (5 components)β
You need exactly 5 things. No more.
/raw β unprocessed sources
/wiki β processed atomic pages
index.md β catalog of every wiki page
log.md β time log (ingest / compile / lint)
CLAUDE.md β schema that runs the whole system
CLAUDE.md is the control file. It defines the operations (Ingest, Query, Lint, Categorize, Answer, File-back) β each operation is a block of rules AI reads whenever you trigger it.
Example CLAUDE.md fragment for Ingest:
INGEST β when I say "ingest this":
1. Read the source fully
2. Split into atomic pages
3. Each page: title, 1-sentence summary, content in my voice, source
4. Wikilinks to related pages
5. If 3+ links β mark as hub
6. Add to index.md
7. Write to log.md
8. Move source to /raw/processed
The power of the schema: you don't have to repeat these 8 steps each time. Just say "ingest this" and AI knows exactly what to do.
The compounding loop β why this Skill gets stronger the more you use itβ
- Week 1: 10 pages, 45 potential link pairs
- Month 1: 50 pages, ~1,225 pairs
- Month 6: 250 pages, ~31,000 pairs
- Year 1: 500 pages, ~124,000 pairs
Page count grows linearly. Link count grows quadratically. That's why by year two, your Skill starts answering questions you never planned for β because old pages have connected in ways you didn't design upfront.
But it only compounds if something maintains the links. A human can't hold that at 250+ pages. AI can.
How this applies to the Upwork Skillβ
My 241-page Skill was built with this exact model:
- /raw: 103 sent proposals + coaching transcripts + copywriting course notes
- /wiki: 241 atomic pages (blueprint, phrase, craft, rule, misstep, case study)
- index.md: the 5-zone map you're viewing
- log.md: log for every ingest + lint run
- CLAUDE.md: schema defining 6 operations (Ingest, Query, Lint, Categorize, Answer, File-back, Compile)
Result: once you install the Skill into ChatGPT/Claude/Cursor, your AI doesn't just read 241 pages β it understands the relationships between them. Ask "which hook fits a b2b SaaS on a low budget?" and AI stitches together [blueprint-fast-delivery] + [shelf-hook-timeline] + [shelf-stack-saas] + [craft-pricing-by-vertical] into a recommendation β instead of reading pages in isolation.
If you want to build a Skill for your own niche (not Upwork), copy the same 5 components, write your own CLAUDE.md, and run the three loops Ingest β Query β Lint on a regular cadence.
Startup checklist for your own Skillβ
- Create 5 files:
/raw,/wiki,index.md,log.md,CLAUDE.md - Write CLAUDE.md with 3 minimum operations: Ingest, Query, Lint
- Ingest 5-10 first sources (your articles, videos, transcripts)
- Run Query to test β ask 3 questions and check whether AI cites real pages
- Schedule Lint every 2 weeks (Google Calendar, don't forget)
- At 30 pages, run Categorize to build your first hub
- At 100 pages, run Compile to rebuild the full index
Inspiration & referencesβ
- Andrej Karpathy β the original tweet on second-brain with Claude + Obsidian Β· 21M views
- Youmind β detailed breakdown of the method
- Wiki-as-codebase mentality β software maintenance discipline applied to knowledge management
Relatedβ
- path-decision-tree β the IF-THEN decision tree for this Skill
- shelf-mind-rules β 3 psychological rules that run through many blueprints
- shelf-mistakes β anti-pattern collection used by the linter