A local-first research engine for Claude Code + Obsidian. One research question in → multi-angle analysis out, with tiered sources, preserved contradictions, and compounding knowledge across projects.
Built from the blueprint by @the_smart_ape, adapted and fleshed out for actual use.
A folder of interconnected markdown files. Each file is one "knowledge node." When you point an AI agent at this folder and ask a research question, the agent:
- Reads the methodology (how to evaluate sources, how to synthesize, how to handle contradictions).
- Runs the question through six independent lenses: technical, economic, historical, geopolitical, contrarian, first-principles.
- Surfaces the places the lenses disagree, rather than smoothing them out.
- Produces a synthesis that preserves tension, cites every claim, and ends with three open questions.
- Updates the shared knowledge files, so project N+1 starts from everything project N learned.
research-skill-graph/
├── index.md ← start here, the command center
├── methodology/
│ ├── research-frameworks.md ← pick a mode: diagnostic / predictive / evaluative / exploratory
│ ├── source-evaluation.md ← 5-tier trust system with weight modifiers
│ ├── synthesis-rules.md ← convergence / tension / reframe
│ └── contradiction-protocol.md ← contradictions as features, not bugs
├── lenses/
│ ├── technical.md ← data only
│ ├── economic.md ← follow the money
│ ├── historical.md ← what patterns repeat
│ ├── geopolitical.md ← zoom out to the board
│ ├── contrarian.md ← what if the consensus is wrong
│ └── first-principles.md ← rebuild from fundamental truths
├── templates/
│ ├── source-template.md
│ ├── lens-output.md
│ └── project-brief.md
├── knowledge/ ← compounds across projects
│ ├── concepts.md
│ ├── data-points.md
│ └── open-questions.md
└── projects/
├── research-log.md ← index of every project
└── <slug>/ ← one folder per research project
├── brief.md
├── sources/<slug>.md
├── lens-technical.md
├── lens-economic.md
├── lens-historical.md
├── lens-geopolitical.md
├── lens-contrarian.md
├── lens-first-principles.md
├── contradictions.md
├── synthesis.md
└── self-critique.md
20 files across 6 folders. Same as the blueprint.
cd ~/research-skill-graph
claudeThen prompt:
Follow the execution instructions in
index.md. My research question is: [your question here]. Create a new project folder atprojects/<slug>/and run the full protocol.
Claude Code reads and writes files directly. The graph evolves as it works: knowledge/ accumulates, research-log.md grows, lens files get sharper based on what works.
- Go to claude.ai, create a new project.
- Upload every file in this folder to the project's knowledge base.
- In the project's custom instructions, paste: "Follow the execution instructions in index.md."
- Chat the project your research question.
Less autonomous than Option 1 (Claude can't write files back into the vault), but zero local setup. Copy synthesis.md back manually at the end.
Copy index.md + the 6 lenses/*.md + methodology/source-evaluation.md + methodology/synthesis-rules.md into any long-context model's chat. Add your question. Less powerful but portable.
- Install Obsidian (free).
- Open folder as vault → select this
research-skill-graphfolder. - Open the graph view. You'll see
index.mdat the center, the six lenses radiating out, the methodology files connecting to lenses, and the knowledge files connecting to everything.
The graph view makes two things visible:
- Orphan nodes — files not yet linked. These are research gaps.
- Unexpected connections — when knowledge from project N shows up linked from project N+2. Compound insight.
Obsidian is optional. The AI reads the markdown regardless.
| Lens | Question |
|---|---|
| Technical | What do the numbers actually say? |
| Economic | Who pays, who profits, what are the incentives? |
| Historical | What patterns repeat — and what is different this time? |
| Geopolitical | Which countries, which power dynamics, which chokepoints? |
| Contrarian | What if the consensus is wrong? Who benefits from it being accepted? |
| First Principles | If I deleted every paper on this topic, what would I still know to be true? |
Each lens is written independently, without reading the others. Contamination destroys the system. The value is in the disagreements between lenses, not in an averaged answer.
This is what makes it different from a ChatGPT conversation:
knowledge/concepts.mdandknowledge/data-points.mdaccumulate verified findings across every project. Project 10 starts with 200+ verified data points and 50+ defined concepts.projects/research-log.mdindexes every past project so the next one doesn't start from zero.knowledge/open-questions.mdturns unresolved tensions from project N into the seed question for project N+1.
The graph gets smarter every time you use it. That is the entire point.
- Create the folder structure (20 files, 6 folders). 5 minutes.
- Fill
index.mdfirst — it defines everything else. - Fill the 6 lens files with their core questions and output formats.
- Fill
methodology/with source evaluation tiers and synthesis rules. - Upload to a Claude project (or point Claude Code at the folder).
- Give it a test topic and run the full protocol.
- Iterate. Update the lens files based on output quality. Prune things that don't work. Add concepts to
knowledge/after each project.
- Using only the technical lens because it feels objective → you get a summary, not a synthesis.
- Letting lenses read each other mid-analysis → contamination, all lenses converge, the tension that makes the system valuable disappears.
- Citing a source without a tier rating → the source does not exist.
- Smoothing contradictions into "on the other hand..." → the most valuable output of the whole system gets hidden.
- Starting a new project without reviewing
knowledge/andresearch-log.md→ you re-derive what you already knew.
Concept: @the_smart_ape — "claude code + obsidian + skill graph. how to build a local research engine?"
This implementation fleshes out the template with full lens protocols, explicit synthesis rules, and a compounding-knowledge discipline.