chore: sync vault to ~/cosmic-brain (Obsidian-registered path)

This commit is contained in:
Daniel
2026-04-07 12:05:18 +03:00
commit 4dc6ff3b32
50 changed files with 4407 additions and 0 deletions

View File

@@ -0,0 +1,173 @@
---
name: autoresearch
description: >
Autonomous iterative research loop. Takes a topic, runs web searches, fetches sources,
synthesizes findings, and files everything into the wiki as structured pages.
Based on Karpathy's autoresearch pattern: program.md configures objectives and constraints,
the loop runs until depth is reached, output goes directly into the knowledge base.
Triggers on: "/autoresearch", "autoresearch", "research [topic]", "deep dive into [topic]",
"investigate [topic]", "find everything about [topic]", "research and file",
"go research", "build a wiki on".
allowed-tools: ["Read", "Write", "Edit", "WebSearch", "WebFetch", "Bash", "Glob", "Grep"]
---
# autoresearch — Autonomous Research Loop
You are a research agent. You take a topic, run iterative web searches, synthesize findings, and file everything into the wiki. The user gets wiki pages, not a chat response.
This is based on Karpathy's autoresearch pattern: a configurable program defines your objectives. You run the loop until depth is reached. Output goes into the knowledge base.
---
## Before Starting
Read `references/program.md` to load the research objectives and constraints. This file is user-configurable. It defines what sources to prefer, how to score confidence, and any domain-specific constraints.
---
## Research Loop
```
Input: topic (from user command)
Round 1 — Broad search
1. Decompose topic into 3-5 distinct search angles
2. For each angle: run 2-3 WebSearch queries
3. For top 2-3 results per angle: WebFetch the page
4. Extract from each: key claims, entities, concepts, open questions
Round 2 — Gap fill
5. Identify what's missing or contradicted from Round 1
6. Run targeted searches for each gap (max 5 queries)
7. Fetch top results for each gap
Round 3 — Synthesis check (optional, if gaps remain)
8. If major contradictions or missing pieces still exist: one more targeted pass
9. Otherwise: proceed to filing
Max rounds: 3 (as set in program.md). Stop when depth is reached or max rounds hit.
```
---
## Filing Results
After research is complete, create these pages:
**wiki/sources/** — one page per major reference found
- Use source frontmatter (type, source_type, author, date_published, url, confidence, key_claims)
- Body: summary of the source, what it contributes to the topic
**wiki/concepts/** — one page per significant concept extracted
- Only create a page if the concept is substantive enough to stand alone
- Check the index first — update existing concept pages rather than creating duplicates
**wiki/entities/** — one page per significant person, org, or product identified
- Check the index first — update existing entity pages
**wiki/questions/** — one synthesis page titled "Research: [Topic]"
- This is the master synthesis. Everything comes together here.
- Sections: Overview, Key Findings, Entities, Concepts, Contradictions, Open Questions, Sources
- Full frontmatter with related links to all pages created in this session
---
## Synthesis Page Structure
```markdown
---
type: synthesis
title: "Research: [Topic]"
created: YYYY-MM-DD
updated: YYYY-MM-DD
tags:
- research
- [topic-tag]
status: developing
related:
- "[[Every page created in this session]]"
sources:
- "[[wiki/sources/Source 1]]"
- "[[wiki/sources/Source 2]]"
---
# Research: [Topic]
## Overview
[2-3 sentence summary of what was found]
## Key Findings
- Finding 1 (Source: [[Source Page]])
- Finding 2 (Source: [[Source Page]])
- ...
## Key Entities
- [[Entity Name]] — role/significance
## Key Concepts
- [[Concept Name]] — one-line definition
## Contradictions
- [[Source A]] says X. [[Source B]] says Y. [Brief note on which is more credible and why]
## Open Questions
- [Question that research didn't fully answer]
- [Gap that needs more sources]
## Sources
- [[Source 1]] — author, date
- [[Source 2]] — author, date
```
---
## After Filing
1. Update `wiki/index.md` — add all new pages to the right sections
2. Append to `wiki/log.md` (at the TOP):
```
## [YYYY-MM-DD] autoresearch | [Topic]
- Rounds: N
- Sources found: N
- Pages created: [[Page 1]], [[Page 2]], ...
- Synthesis: [[Research: Topic]]
- Key finding: [one sentence]
```
3. Update `wiki/hot.md` with the research summary
---
## Report to User
After filing everything:
```
Research complete: [Topic]
Rounds: N | Searches: N | Pages created: N
Created:
wiki/questions/Research: [Topic].md (synthesis)
wiki/sources/[Source 1].md
wiki/concepts/[Concept 1].md
wiki/entities/[Entity 1].md
Key findings:
- [Finding 1]
- [Finding 2]
- [Finding 3]
Open questions filed: N
```
---
## Constraints
Follow the limits in `references/program.md`:
- Max rounds (default: 3)
- Max pages per session (default: 15)
- Confidence scoring rules
- Source preference rules
If a constraint conflicts with completeness, respect the constraint and note what was left out in the Open Questions section.

View File

@@ -0,0 +1,75 @@
# Research Program
This file configures the autoresearch loop. Edit it to match your domain and research style. The autoresearch skill reads it before every run.
---
## Search Objectives
Default objectives for every research session:
- Find authoritative sources (prefer: .edu, peer-reviewed papers, official documentation, primary sources, established publications)
- Extract key entities (people, organizations, products, tools)
- Extract key concepts and frameworks
- Note contradictions between sources
- Identify open questions and research gaps
- Prefer sources from the last 2 years unless the topic is foundational
---
## Confidence Scoring
Label every claim with confidence when filing:
- **high** — multiple independent authoritative sources agree
- **medium** — single good source, or sources partially agree
- **low** — speculation, opinion pieces, single informal source, or claim not verified
Always note the source date for factual claims. Mark claims from sources older than 3 years as potentially stale.
---
## Loop Constraints
- Max search rounds per topic: **3**
- Max wiki pages created per session: **15**
- Max sources fetched per round: **5**
- If max pages is reached before the loop completes: file what you have, note what was skipped in Open Questions
---
## Output Style
- Declarative, present tense
- Cite every non-obvious claim: `(Source: [[Page]])`
- Short pages: under 200 lines. Split if longer.
- No hedging language ("it seems", "perhaps", "might be")
- Flag uncertainty explicitly: `> [!gap] This claim needs verification.`
---
## Domain Notes
[Add domain-specific instructions here. Examples:]
For AI/tech research:
- Prefer: arXiv, official GitHub repos, official product documentation, Hacker News discussions with high karma
- Note: LLM benchmarks are often gamed — treat leaderboard claims as low confidence unless independently verified
For business/market research:
- Prefer: company filings, Crunchbase, Bloomberg, verified industry reports
- Flag: press releases as low confidence without independent verification
For medical/health research:
- Prefer: PubMed, Cochrane reviews, peer-reviewed clinical trials
- Always note: sample size, study type (RCT vs observational), and recency
---
## Exclusions
Do not cite as high-confidence sources:
- Reddit posts or forums (use as pointers to primary sources only)
- Social media posts
- Undated web pages
- Sources that don't cite their own claims

116
skills/save/SKILL.md Normal file
View File

@@ -0,0 +1,116 @@
---
name: save
description: >
Save the current conversation, answer, or insight into the Obsidian wiki vault as a
structured note. Analyzes the chat, determines the right note type, creates frontmatter,
files it in the correct wiki folder, and updates index, log, and hot cache.
Triggers on: "save this", "save that answer", "/save", "file this",
"save to wiki", "save this session", "file this conversation", "keep this",
"save this analysis", "add this to the wiki".
allowed-tools: ["Read", "Write", "Edit", "Bash", "Glob"]
---
# save — File Conversations Into the Wiki
Good answers and insights shouldn't disappear into chat history. This skill takes what was just discussed and files it as a permanent wiki page.
The wiki compounds. Save often.
---
## Note Type Decision
Determine the best type from the conversation content:
| Type | Folder | Use when |
|------|--------|---------|
| synthesis | wiki/questions/ | Multi-step analysis, comparison, or answer to a specific question |
| concept | wiki/concepts/ | Explaining or defining an idea, pattern, or framework |
| source | wiki/sources/ | Summary of external material discussed in the session |
| decision | wiki/meta/ | Architectural, project, or strategic decision that was made |
| session | wiki/meta/ | Full session summary — captures everything discussed |
If the user specifies a type, use that. If not, pick the best fit based on the content. When in doubt, use `synthesis`.
---
## Save Workflow
1. **Scan** the current conversation. Identify the most valuable content to preserve.
2. **Ask** (if not already named): "What should I call this note?" Keep the name short and descriptive.
3. **Determine** note type using the table above.
4. **Extract** all relevant content from the conversation. Rewrite it in declarative present tense (not "the user asked" but the actual content itself).
5. **Create** the note in the correct folder with full frontmatter.
6. **Collect links**: identify any wiki pages mentioned in the conversation. Add them to `related` in frontmatter.
7. **Update** `wiki/index.md` — add the new entry at the top of the relevant section.
8. **Append** to `wiki/log.md` — new entry at the TOP:
```
## [YYYY-MM-DD] save | Note Title
- Type: [note type]
- Location: wiki/[folder]/Note Title.md
- From: conversation on [brief topic description]
```
9. **Update** `wiki/hot.md` to reflect the new addition.
10. **Confirm**: "Saved as [[Note Title]] in wiki/[folder]/."
---
## Frontmatter Template
```yaml
---
type: <synthesis|concept|source|decision|session>
title: "Note Title"
created: YYYY-MM-DD
updated: YYYY-MM-DD
tags:
- <relevant-tag>
status: developing
related:
- "[[Any Wiki Page Mentioned]]"
sources:
- "[[.raw/source-if-applicable.md]]"
---
```
For `question` type, add:
```yaml
question: "The original query as asked."
answer_quality: solid
```
For `decision` type, add:
```yaml
decision_date: YYYY-MM-DD
status: active
```
---
## Writing Style
- Declarative, present tense. Write the knowledge, not the conversation.
- Not: "The user asked about X and Claude explained..."
- Yes: "X works by doing Y. The key insight is Z."
- Include all relevant context. Future sessions should be able to read this page cold.
- Link every mentioned concept, entity, or wiki page with wikilinks.
- Cite sources where applicable: `(Source: [[Page]])`.
---
## What to Save vs. Skip
Save:
- Non-obvious insights or synthesis
- Decisions with rationale
- Analyses that took significant effort
- Comparisons that are likely to be referenced again
- Research findings
Skip:
- Mechanical Q&A (lookup questions with obvious answers)
- Setup steps already documented elsewhere
- Temporary debugging sessions with no lasting insight
- Anything already in the wiki
If it's already in the wiki, update the existing page instead of creating a duplicate.

100
skills/wiki-ingest/SKILL.md Normal file
View File

@@ -0,0 +1,100 @@
---
name: wiki-ingest
description: >
Ingest sources into the Obsidian wiki vault. Reads a source, extracts entities
and concepts, creates or updates wiki pages, cross-references, and logs the operation.
Supports single sources and batch mode. Triggers on: "ingest", "process this source",
"add this to the wiki", "read and file this", "batch ingest", "ingest all of these".
allowed-tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep"]
---
# wiki-ingest — Source Ingestion
Read the source. Write the wiki. Cross-reference everything. A single source typically touches 8-15 wiki pages.
---
## Single Source Ingest
Trigger: user drops a file into `.raw/` or pastes content.
Steps:
1. **Read** the source completely. Do not skim.
2. **Discuss** key takeaways with the user. Ask: "What should I emphasize? How granular?" Skip this if the user says "just ingest it."
3. **Create** source summary in `wiki/sources/`. Use the source frontmatter schema from `references/frontmatter.md`.
4. **Create or update** entity pages for every person, org, product, and repo mentioned. One page per entity.
5. **Create or update** concept pages for significant ideas and frameworks.
6. **Update** relevant domain page(s) and their `_index.md` sub-indexes.
7. **Update** `wiki/overview.md` if the big picture changed.
8. **Update** `wiki/index.md`. Add entries for all new pages.
9. **Update** `wiki/hot.md` with this ingest's context.
10. **Append** to `wiki/log.md` (new entries at the TOP):
```markdown
## [YYYY-MM-DD] ingest | Source Title
- Source: `.raw/articles/filename.md`
- Summary: [[Source Title]]
- Pages created: [[Page 1]], [[Page 2]]
- Pages updated: [[Page 3]], [[Page 4]]
- Key insight: One sentence on what is new.
```
11. **Check for contradictions.** If new info conflicts with existing pages, add `> [!contradiction]` callouts on both pages.
---
## Batch Ingest
Trigger: user drops multiple files or says "ingest all of these."
Steps:
1. List all files to process. Confirm with user before starting.
2. Process each source following the single ingest flow. Defer cross-referencing between sources until step 3.
3. After all sources: do a cross-reference pass. Look for connections between the newly ingested sources.
4. Update index, hot cache, and log once at the end (not per-source).
5. Report: "Processed N sources. Created X pages, updated Y pages. Here are the key connections I found."
Batch ingest is less interactive. For 30+ sources, expect significant processing time. Check in with the user after every 10 sources.
---
## Context Window Discipline
Token budget matters. Follow these rules during ingest:
- Read `wiki/hot.md` first. If it contains the relevant context, don't re-read full pages.
- Read `wiki/index.md` to find existing pages before creating new ones.
- Read only 3-5 existing pages per ingest. If you need 10+, you are reading too broadly.
- Use PATCH for surgical edits. Never re-read an entire file just to update one field.
- Keep wiki pages short. 100-300 lines max. If a page grows beyond 300 lines, split it.
- Use search (`/search/simple/`) to find specific content without reading full pages.
---
## Contradictions
When new info contradicts an existing wiki page:
On the existing page, add:
```markdown
> [!contradiction] Conflict with [[New Source]]
> [[Existing Page]] claims X. [[New Source]] says Y.
> Needs resolution — check dates, context, and primary sources.
```
On the new source summary, reference it:
```markdown
> [!contradiction] Contradicts [[Existing Page]]
> This source says Y, but existing wiki says X. See [[Existing Page]] for details.
```
Do not silently overwrite old claims. Flag and let the user decide.
---
## What Not to Do
- Do not modify anything in `.raw/`. These are immutable source documents.
- Do not create duplicate pages. Always check the index and search before creating.
- Do not skip the log entry. Every ingest must be recorded.
- Do not skip the hot cache update. It is what keeps future sessions fast.

172
skills/wiki-lint/SKILL.md Normal file
View File

@@ -0,0 +1,172 @@
---
name: wiki-lint
description: >
Health check the Obsidian wiki vault. Finds orphan pages, dead wikilinks, stale claims,
missing cross-references, frontmatter gaps, and empty sections. Creates or updates
Dataview dashboards. Generates canvas maps. Triggers on: "lint", "health check",
"clean up wiki", "check the wiki", "wiki maintenance", "find orphans", "wiki audit".
allowed-tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep"]
---
# wiki-lint — Wiki Health Check
Run lint after every 10-15 ingests, or weekly. Ask before auto-fixing anything. Output a lint report to `wiki/meta/lint-report-YYYY-MM-DD.md`.
---
## Lint Checks
Work through these in order:
1. **Orphan pages** — wiki pages with no inbound wikilinks. They exist but nothing points to them.
2. **Dead links** — wikilinks that reference a page that does not exist.
3. **Stale claims** — assertions on older pages that newer sources have contradicted or updated.
4. **Missing pages** — concepts or entities mentioned in multiple pages but lacking their own page.
5. **Missing cross-references** — entities mentioned in a page but not linked.
6. **Frontmatter gaps** — pages missing required fields (type, status, created, updated, tags).
7. **Empty sections** — headings with no content underneath.
8. **Stale index entries** — items in `wiki/index.md` pointing to renamed or deleted pages.
---
## Lint Report Format
Create at `wiki/meta/lint-report-YYYY-MM-DD.md`:
```markdown
---
type: meta
title: "Lint Report YYYY-MM-DD"
created: YYYY-MM-DD
updated: YYYY-MM-DD
tags: [meta, lint]
status: developing
---
# Lint Report — YYYY-MM-DD
## Summary
- Pages scanned: N
- Issues found: N
- Auto-fixed: N
- Needs review: N
## Orphan Pages
- [[Page Name]] — no inbound links. Suggest: link from [[Related Page]] or delete.
## Dead Links
- [[Missing Page]] — referenced in [[Source Page]] but does not exist. Suggest: create stub or remove link.
## Missing Pages
- "concept name" — mentioned in [[Page A]], [[Page B]], [[Page C]]. Suggest: create a concept page.
## Frontmatter Gaps
- [[Page Name]] — missing fields: status, tags
## Stale Claims
- [[Page Name]] — claim "X" may conflict with newer source [[Newer Source]].
## Cross-Reference Gaps
- [[Entity Name]] mentioned in [[Page A]] without a wikilink.
```
---
## Naming Conventions
Enforce these during lint:
| Element | Convention | Example |
|---------|-----------|---------|
| Filenames | Title Case with spaces | `Machine Learning.md` |
| Folders | lowercase with dashes | `wiki/data-models/` |
| Tags | lowercase, hierarchical | `#domain/architecture` |
| Wikilinks | match filename exactly | `[[Machine Learning]]` |
Filenames must be unique across the vault. Wikilinks work without paths only if filenames are unique.
---
## Writing Style Check
During lint, flag pages that violate the style guide:
- Not declarative present tense ("X basically does Y" instead of "X does Y")
- Missing source citations where claims are made
- Uncertainty not flagged with `> [!gap]`
- Contradictions not flagged with `> [!contradiction]`
---
## Dataview Dashboard
Create or update `wiki/meta/dashboard.md` with these queries:
````markdown
---
type: meta
title: "Dashboard"
updated: YYYY-MM-DD
---
# Wiki Dashboard
## Recent Activity
```dataview
TABLE type, status, updated FROM "wiki" SORT updated DESC LIMIT 15
```
## Seed Pages (Need Development)
```dataview
LIST FROM "wiki" WHERE status = "seed" SORT updated ASC
```
## Entities Missing Sources
```dataview
LIST FROM "wiki/entities" WHERE !sources OR length(sources) = 0
```
## Open Questions
```dataview
LIST FROM "wiki/questions" WHERE answer_quality = "draft" SORT created DESC
```
````
---
## Canvas Map
Create or update `wiki/meta/overview.canvas` for a visual domain map:
```json
{
"nodes": [
{
"id": "1",
"type": "file",
"file": "wiki/overview.md",
"x": 0, "y": 0,
"width": 300, "height": 140,
"color": "1"
}
],
"edges": []
}
```
Add one node per domain page. Connect domains that have significant cross-references. Colors map to the CSS scheme: 1=blue, 2=purple, 3=yellow, 4=orange, 5=green, 6=red.
---
## Before Auto-Fixing
Always show the lint report first. Ask: "Should I fix these automatically, or do you want to review each one?"
Safe to auto-fix:
- Adding missing frontmatter fields with placeholder values
- Creating stub pages for missing entities
- Adding wikilinks for unlinked mentions
Needs review before fixing:
- Deleting orphan pages (they might be intentionally isolated)
- Resolving contradictions (requires human judgment)
- Merging duplicate pages

130
skills/wiki-query/SKILL.md Normal file
View File

@@ -0,0 +1,130 @@
---
name: wiki-query
description: >
Answer questions using the Obsidian wiki vault. Reads hot cache first, then index,
then relevant pages. Synthesizes answers with citations. Files good answers back
as wiki pages. Triggers on: "what do you know about", "query:", "what is", "explain",
"summarize", "find in wiki", "search the wiki", "based on the wiki".
allowed-tools: ["Read", "Write", "Bash", "Glob", "Grep"]
---
# wiki-query — Query the Wiki
The wiki has already done the synthesis work. Read strategically, answer precisely, and file good answers back so the knowledge compounds.
---
## Query Workflow
1. **Read** `wiki/hot.md` first. It may already have the answer or directly relevant context.
2. **Read** `wiki/index.md` to find the most relevant pages (scan for titles and descriptions).
3. **Read** those pages. Follow wikilinks to depth-2 for key entities — no deeper.
4. **Synthesize** the answer in chat. Cite sources with wikilinks: `(Source: [[Page Name]])`.
5. **Offer to file** the answer: "This analysis seems worth keeping. Should I save it as `wiki/questions/answer-name.md`?"
6. If the question reveals a **gap**: say "I don't have enough on X. Want to find a source?"
---
## Token Discipline
Read the minimum needed:
| Start with | Cost (approx) | When to stop |
|------------|---------------|--------------|
| hot.md | ~500 tokens | If it has the answer |
| index.md | ~1000 tokens | If you can identify 3-5 relevant pages |
| 3-5 wiki pages | ~300 tokens each | Usually sufficient |
| 10+ wiki pages | expensive | Only for synthesis across the entire wiki |
If hot.md has the answer, respond without reading further.
---
## Index Format Reference
The master index (`wiki/index.md`) looks like:
```markdown
## Domains
- [[Domain Name]] — description (N sources)
## Entities
- [[Entity Name]] — role (first: [[Source]])
## Concepts
- [[Concept Name]] — definition (status: developing)
## Sources
- [[Source Title]] — author, date, type
## Questions
- [[Question Title]] — answer summary
```
Scan the section headers first to determine which sections to read.
---
## Domain Sub-Index Format
Each domain folder has a `_index.md` for focused lookups:
```markdown
---
type: meta
title: "Entities Index"
updated: YYYY-MM-DD
---
# Entities
## People
- [[Person Name]] — role, org
## Organizations
- [[Org Name]] — what they do
## Products
- [[Product Name]] — category
```
Use sub-indexes when the question is scoped to one domain. Avoid reading the full master index for narrow queries.
---
## Filing Answers Back
Good answers compound into the wiki. Don't let insights disappear into chat history.
When filing an answer:
```yaml
---
type: question
title: "Short descriptive title"
question: "The exact query as asked."
answer_quality: solid
created: YYYY-MM-DD
updated: YYYY-MM-DD
tags: [question, <domain>]
related:
- "[[Page referenced in answer]]"
sources:
- "[[wiki/sources/relevant-source.md]]"
status: developing
---
```
Then write the answer as the page body. Include citations. Link every mentioned concept or entity.
After filing, add an entry to `wiki/index.md` under Questions and append to `wiki/log.md`.
---
## Gap Handling
If the question cannot be answered from the wiki:
1. Say clearly: "I don't have enough in the wiki to answer this well."
2. Identify the specific gap: "I have nothing on [subtopic]."
3. Suggest: "Want to find a source on this? I can help you search or process one."
4. Do not fabricate. Do not answer from training data if the question is about the specific domain in this wiki.

202
skills/wiki/SKILL.md Normal file
View File

@@ -0,0 +1,202 @@
---
name: wiki
description: >
Claude + Obsidian knowledge companion. Sets up a persistent wiki vault, scaffolds
structure from a one-sentence description, and routes to specialized sub-skills.
Use for setup, scaffolding, cross-project referencing, and hot cache management.
Triggers on: "set up wiki", "scaffold vault", "create knowledge base", "/wiki",
"wiki setup", "obsidian vault", "knowledge base", "second brain setup",
"running notetaker", "persistent memory", "llm wiki".
allowed-tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep"]
---
# wiki — Claude + Obsidian Knowledge Companion
You are a knowledge architect. You build and maintain a persistent, compounding wiki inside an Obsidian vault. You don't just answer questions. You write, cross-reference, file, and maintain a structured knowledge base that gets richer with every source added and every question asked.
The wiki is the product. Chat is just the interface.
The key difference from RAG: the wiki is a persistent artifact. Cross-references are already there. Contradictions have been flagged. Synthesis already reflects everything read. Knowledge compounds like interest.
---
## Architecture
Three layers:
```
vault/
├── .raw/ # Layer 1: immutable source documents
├── wiki/ # Layer 2: LLM-generated knowledge base
└── CLAUDE.md # Layer 3: schema and instructions (this plugin)
```
Standard wiki structure:
```
wiki/
├── index.md # master catalog of all pages
├── log.md # chronological record of all operations
├── hot.md # hot cache: recent context summary (~500 words)
├── overview.md # executive summary of the whole wiki
├── sources/ # one summary page per raw source
├── entities/ # people, orgs, products, repos
│ └── _index.md
├── concepts/ # ideas, patterns, frameworks
│ └── _index.md
├── domains/ # top-level topic areas
│ └── _index.md
├── comparisons/ # side-by-side analyses
├── questions/ # filed answers to user queries
└── meta/ # dashboards, lint reports, conventions
```
Dot-prefixed folders (`.raw/`) are hidden in Obsidian's file explorer and graph view. Use this for source documents.
---
## Hot Cache
`wiki/hot.md` is a ~500-word summary of the most recent context. It exists so any session (or any other project pointing at this vault) can get recent context without crawling the full wiki.
Update hot.md:
- After every ingest
- After any significant query exchange
- At the end of every session
Format:
```markdown
---
type: meta
title: "Hot Cache"
updated: YYYY-MM-DDTHH:MM:SS
---
# Recent Context
## Last Updated
YYYY-MM-DD — [what happened]
## Key Recent Facts
- [Most important recent takeaway]
- [Second most important]
## Recent Changes
- Created: [[New Page 1]], [[New Page 2]]
- Updated: [[Existing Page]] (added section on X)
- Flagged: Contradiction between [[Page A]] and [[Page B]] on Y
## Active Threads
- User is currently researching [topic]
- Open question: [thing still being investigated]
```
Keep it under 500 words. It is a cache, not a journal. Overwrite it completely each time.
---
## Operations
Route to the correct operation based on what the user says:
| User says | Operation | Sub-skill |
|-----------|-----------|-----------|
| "scaffold", "set up vault", "create wiki" | SCAFFOLD | this skill |
| "ingest [source]", "process this", "add this" | INGEST | `wiki-ingest` |
| "what do you know about X", "query:" | QUERY | `wiki-query` |
| "lint", "health check", "clean up" | LINT | `wiki-lint` |
| "save this", "file this", "/save" | SAVE | `save` |
| "/autoresearch [topic]", "research [topic]" | AUTORESEARCH | `autoresearch` |
---
## SCAFFOLD Operation
Trigger: user describes what the vault is for.
Steps:
1. Determine the wiki mode. Read `references/modes.md` to show the 6 options and pick the best fit.
2. Ask: "What is this vault for?" (one question, then proceed).
3. Create full folder structure under `wiki/` based on the mode.
4. Create domain pages + `_index.md` sub-indexes.
5. Create `wiki/index.md`, `wiki/log.md`, `wiki/hot.md`, `wiki/overview.md`.
6. Create `_templates/` files for each note type.
7. Apply visual customization. Read `references/css-snippets.md`. Create `.obsidian/snippets/vault-colors.css`.
8. Create the vault CLAUDE.md using the template below.
9. Initialize git. Read `references/git-setup.md`.
10. Present the structure and ask: "Want to adjust anything before we start?"
### Vault CLAUDE.md Template
Create this file in the vault root when scaffolding a new project vault (not this plugin directory):
```markdown
# [WIKI NAME] — LLM Wiki
Mode: [MODE A/B/C/D/E/F]
Purpose: [ONE SENTENCE]
Owner: [NAME]
Created: YYYY-MM-DD
## Structure
[PASTE THE FOLDER MAP FROM THE CHOSEN MODE]
## Conventions
- All notes use YAML frontmatter: type, status, created, updated, tags (minimum)
- Wikilinks use [[Note Name]] format — filenames are unique, no paths needed
- .raw/ contains source documents — never modify them
- wiki/index.md is the master catalog — update on every ingest
- wiki/log.md is append-only — never edit past entries
- New log entries go at the TOP of the file
## Operations
- Ingest: drop source in .raw/, say "ingest [filename]"
- Query: ask any question — Claude reads index first, then drills in
- Lint: say "lint the wiki" to run a health check
- Archive: move cold sources to .archive/ to keep .raw/ clean
```
---
## Cross-Project Referencing
This is the force multiplier. Any Claude Code project can reference this vault without duplicating context.
In another project's CLAUDE.md, add:
```markdown
## Wiki Knowledge Base
Path: ~/path/to/vault
When you need context not already in this project:
1. Read wiki/hot.md first (recent context, ~500 words)
2. If not enough, read wiki/index.md (full catalog)
3. If you need domain specifics, read wiki/<domain>/_index.md
4. Only then read individual wiki pages
Do NOT read the wiki for:
- General coding questions or language syntax
- Things already in this project's files or conversation
- Tasks unrelated to [your domain]
```
This keeps token usage low. Hot cache costs ~500 tokens. Index costs ~1000 tokens. Individual pages cost 100-300 tokens each.
---
## Summary
Your job as the LLM:
1. Set up the vault (once)
2. Scaffold wiki structure from user's domain description
3. Route ingest, query, and lint to the correct sub-skill
4. Maintain hot cache after every operation
5. Always update index, sub-indexes, log, and hot cache on changes
6. Always use frontmatter and wikilinks
7. Never modify .raw/ sources
The human's job: curate sources, ask good questions, think about what it means. Everything else is on you.

View File

@@ -0,0 +1,96 @@
# Visual Customization
Apply during scaffold. This makes the file explorer color-coded by folder type and adds custom callout styles.
---
## CSS Snippet
Create this file at `.obsidian/snippets/vault-colors.css` inside the vault:
```css
:root {
--wiki-1: #4fc1ff;
--wiki-2: #c586c0;
--wiki-3: #dcdcaa;
--wiki-4: #ce9178;
--wiki-5: #6a9955;
--wiki-6: #d16969;
--wiki-7: #569cd6;
}
/* Folder colors in file explorer */
.nav-folder-title[data-path^="wiki/domains"] { color: var(--wiki-1); }
.nav-folder-title[data-path^="wiki/entities"] { color: var(--wiki-2); }
.nav-folder-title[data-path^="wiki/concepts"] { color: var(--wiki-3); }
.nav-folder-title[data-path^="wiki/sources"] { color: var(--wiki-4); }
.nav-folder-title[data-path^="wiki/questions"] { color: var(--wiki-5); }
.nav-folder-title[data-path^="wiki/comparisons"] { color: var(--wiki-6); }
.nav-folder-title[data-path^="wiki/meta"] { color: var(--wiki-7); }
.nav-folder-title[data-path=".raw"] { color: #808080; opacity: 0.6; }
/* Custom callouts */
.callout[data-callout='contradiction'] {
--callout-color: 209, 105, 105;
--callout-icon: lucide-alert-triangle;
}
.callout[data-callout='gap'] {
--callout-color: 220, 220, 170;
--callout-icon: lucide-help-circle;
}
.callout[data-callout='key-insight'] {
--callout-color: 79, 193, 255;
--callout-icon: lucide-lightbulb;
}
.callout[data-callout='stale'] {
--callout-color: 128, 128, 128;
--callout-icon: lucide-clock;
}
```
---
## Enable the Snippet
Tell the user: Settings > Appearance > CSS Snippets > open folder > paste the file > click the refresh icon > toggle it on.
---
## Graph View Groups
Guide the user to set these in Graph View settings (click the settings icon in the graph view):
| Query | Color |
|-------|-------|
| `path:wiki/domains` | Blue (`#4fc1ff`) |
| `path:wiki/entities` | Purple (`#c586c0`) |
| `path:wiki/concepts` | Yellow (`#dcdcaa`) |
| `path:wiki/sources` | Orange (`#ce9178`) |
| `path:wiki/questions` | Green (`#6a9955`) |
| `path:.raw` | Gray (dimmed) |
---
## How the Callouts Look
Use these in wiki pages to flag important states:
```markdown
> [!contradiction] Title
> [[Page A]] claims X. [[Page B]] says Y. Needs resolution.
> [!gap] Title
> This topic has no source yet. Consider finding one.
> [!key-insight] Title
> The most important takeaway from this section.
> [!stale] Title
> This claim may be outdated. Source was from 2022.
```
---
## Minimal Theme (Recommended)
The color scheme looks best with the Minimal theme. Install via Settings > Appearance > Manage > search "Minimal".

View File

@@ -0,0 +1,107 @@
# Frontmatter Schema
Every wiki page starts with flat YAML frontmatter. No nested objects. Obsidian's Properties UI requires flat structure.
---
## Universal Fields
Every page, no exceptions:
```yaml
---
type: <source|entity|concept|domain|comparison|question|overview|meta>
title: "Human-Readable Title"
created: 2026-04-07
updated: 2026-04-07
tags:
- <domain-tag>
- <type-tag>
status: <seed|developing|mature|evergreen>
related:
- "[[Other Page]]"
sources:
- "[[.raw/articles/source-file.md]]"
---
```
**status values:**
- `seed` — exists, barely populated
- `developing` — has real content, not yet complete
- `mature` — comprehensive, well-linked
- `evergreen` — unlikely to need updates
---
## Type-Specific Additions
### source
Add these fields after the universal fields:
```yaml
source_type: article # article | video | podcast | paper | book | transcript | data
author: ""
date_published: YYYY-MM-DD
url: ""
confidence: high # high | medium | low
key_claims:
- "First key claim from this source"
- "Second key claim"
```
### entity
```yaml
entity_type: person # person | organization | product | repository | place
role: ""
first_mentioned: "[[Source Title]]"
```
### concept
```yaml
complexity: intermediate # basic | intermediate | advanced
domain: ""
aliases:
- "alternative name"
- "abbreviation"
```
### comparison
```yaml
subjects:
- "[[Thing A]]"
- "[[Thing B]]"
dimensions:
- "performance"
- "cost"
- "ease of use"
verdict: "One-line conclusion."
```
### question
```yaml
question: "The original query as asked."
answer_quality: solid # draft | solid | definitive
```
### domain
```yaml
subdomain_of: "" # leave empty for top-level domains
page_count: 0
```
---
## Rules
1. Use flat YAML only. Never nest objects.
2. Dates as `YYYY-MM-DD` strings, not ISO datetime.
3. Lists always use the `- item` format, not inline `[a, b, c]`.
4. Wikilinks in YAML fields must be quoted: `"[[Page Name]]"`.
5. Keep `related` and `sources` as wikilinks, not plain URLs.
6. Update `updated` every time you edit the page content.

View File

@@ -0,0 +1,58 @@
# Git Setup
Initialize git in the vault to get full history and protect against bad writes.
---
## Initialize
```bash
cd "$VAULT_PATH"
git init
git add -A
git commit -m "Initial vault scaffold"
```
---
## .gitignore
The root `.gitignore` in this repo already covers the right exclusions:
```
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.smart-connections/
.obsidian-git-data
.trash/
.DS_Store
```
`workspace.json` changes constantly as you move panes around. Excluding it keeps the diff clean.
---
## Obsidian Git Plugin
After installing the plugin (see `plugins.md`):
Settings > Obsidian Git:
- Auto backup interval: **15 minutes**
- Auto backup after file change: on
- Push on backup: on (if you have a remote)
- Commit message: `vault: auto backup {{date}}`
This runs silently in the background. You get a full history of every note without thinking about it.
---
## Remote (Optional)
To back up to GitHub:
```bash
git remote add origin https://github.com/yourname/your-vault
git push -u origin main
```
Keep the repo private if the vault contains personal notes.

View File

@@ -0,0 +1,91 @@
# MCP Setup
MCP lets Claude read and write vault notes directly without copy-paste. Two options.
---
## Step 1: Install the Local REST API Plugin
You must do this in Obsidian (Claude cannot do it programmatically):
1. Obsidian > Settings > Community Plugins > Turn off Restricted Mode
2. Browse > Search "Local REST API" > Install > Enable
3. Settings > Local REST API > Copy the API key
The plugin runs on `https://127.0.0.1:27124` with a self-signed certificate.
Test it:
```bash
curl -sk -H "Authorization: Bearer <YOUR_KEY>" https://127.0.0.1:27124/
```
You should get a JSON response with vault info.
---
## Option A: mcp-obsidian (REST API based)
Uses MarkusPfundstein's mcp-obsidian. Requires the Local REST API plugin running.
```bash
claude mcp add-json obsidian-vault '{
"type": "stdio",
"command": "uvx",
"args": ["mcp-obsidian"],
"env": {
"OBSIDIAN_API_KEY": "<YOUR_KEY>",
"OBSIDIAN_HOST": "127.0.0.1",
"OBSIDIAN_PORT": "27124",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}' --scope user
```
`NODE_TLS_REJECT_UNAUTHORIZED: "0"` is required because the REST API uses a self-signed certificate.
Capabilities: read notes, write notes, search, patch frontmatter fields, append under headings.
---
## Option B: MCPVault (filesystem based)
No Obsidian plugin needed. Reads the vault directory directly.
```bash
claude mcp add-json obsidian-vault '{
"type": "stdio",
"command": "npx",
"args": ["-y", "@bitbonsai/mcpvault@latest", "/absolute/path/to/your/vault"]
}' --scope user
```
Replace `/absolute/path/to/your/vault` with the actual vault path.
Tools available: `search_notes` (BM25), `read_note`, `create_note`, `update_note`, `get_frontmatter`, `update_frontmatter`, `list_all_tags`, `read_multiple_notes`.
---
## Option C: Direct REST API via curl
No MCP needed. Use curl in bash throughout the session. See `rest-api.md` for all commands.
---
## Use `--scope user`
Both MCP options use `--scope user` so the vault is available across all Claude Code projects, not just the one where you ran the command.
---
## Verification
After setup:
```bash
claude mcp list # confirm the server appears
claude mcp get obsidian-vault # confirm the path or URL is correct
```
In a Claude Code session, type `/mcp` to check connection status.
Then test: "List all notes in my wiki folder."

View File

@@ -0,0 +1,259 @@
# Wiki Modes
Six modes cover the most common use cases. Pick the one that fits, or combine them.
---
## Mode A: Website / Sitemap
Use when: "build a sitemap wiki for my website", "map content gaps", "SEO audit wiki"
```
vault/
├── .raw/ # crawl exports, analytics, scraped pages, GSC data
├── wiki/
│ ├── pages/ # one note per URL: status, meta, content summary
│ ├── structure/ # site architecture, nav hierarchy, internal link map
│ ├── audits/ # content gaps, redirect needs, thin content flags
│ ├── keywords/ # keyword clusters, target page assignments
│ └── entities/ # brand, authors, topic hubs
├── _meta/
│ ├── index.md
│ └── log.md
└── CLAUDE.md
```
Frontmatter for `wiki/pages/` notes:
```yaml
---
type: page
url: "https://example.com/page-slug"
status: live # live | redirect | 404 | stub | no-index
title: ""
h1: ""
meta_description: ""
word_count: 0
has_schema: false
indexed: true
canonical: ""
internal_links_in: 0
internal_links_out: 0
last_crawled: YYYY-MM-DD
tags: [page]
created: YYYY-MM-DD
updated: YYYY-MM-DD
---
```
Key wiki pages to create: `[[Site Overview]]`, `[[Navigation Structure]]`, `[[Content Gaps]]`, `[[Redirect Map]]`, `[[Keyword Clusters]]`
---
## Mode B: GitHub / Repository
Use when: "map my codebase", "architecture wiki for my repo", "understand this project"
```
vault/
├── .raw/ # README, git log exports, code dumps, issue exports
├── wiki/
│ ├── modules/ # one note per major module / package / service
│ ├── components/ # reusable UI or functional components
│ ├── decisions/ # Architecture Decision Records (ADRs)
│ ├── dependencies/ # external deps, versions, risk assessment
│ └── flows/ # data flows, request paths, auth flows
├── _meta/
│ ├── index.md
│ └── log.md
└── CLAUDE.md
```
Frontmatter for `wiki/modules/` notes:
```yaml
---
type: module # module | component | decision | dependency | flow
path: "src/auth/"
status: active # active | deprecated | experimental | planned
language: typescript
purpose: ""
maintainer: ""
last_updated: YYYY-MM-DD
linked_issues: []
depends_on: []
used_by: []
tags: [module]
created: YYYY-MM-DD
updated: YYYY-MM-DD
---
```
Key wiki pages to create: `[[Architecture Overview]]`, `[[Data Flow]]`, `[[Tech Stack]]`, `[[Dependency Graph]]`, `[[Key Decisions]]`
---
## Mode C: Business / Project
Use when: "project wiki", "competitive intelligence", "team knowledge base", "meeting notes"
```
vault/
├── .raw/ # meeting transcripts, Slack exports, docs, emails
├── wiki/
│ ├── stakeholders/ # people, companies, decision-makers
│ ├── decisions/ # key decisions with rationale and date
│ ├── deliverables/ # milestones, outputs, status tracking
│ ├── intel/ # competitor analysis, market research
│ └── comms/ # synthesized meeting notes, key threads
├── _meta/
│ ├── index.md
│ └── log.md
└── CLAUDE.md
```
Frontmatter for `wiki/decisions/` notes:
```yaml
---
type: decision # stakeholder | decision | deliverable | intel | meeting | competitor
status: active # active | pending | done | blocked | superseded
priority: 3 # 1 (highest) to 5 (lowest)
date: YYYY-MM-DD
owner: ""
due_date: ""
context: ""
tags: [decision]
created: YYYY-MM-DD
updated: YYYY-MM-DD
---
```
Key wiki pages to create: `[[Project Overview]]`, `[[Stakeholder Map]]`, `[[Decision Log]]`, `[[Competitor Landscape]]`
---
## Mode D: Personal / Second Brain
Use when: "personal second brain", "track my goals", "journal synthesis", "life wiki"
```
vault/
├── .raw/ # journal entries, articles, podcast notes, voice transcripts
├── wiki/
│ ├── goals/ # personal and professional goals with progress tracking
│ ├── learning/ # concepts being mastered, skill development
│ ├── people/ # relationships, shared context, follow-ups
│ ├── areas/ # life areas: health, finances, career, creative
│ └── resources/ # books, courses, tools worth referencing
├── _meta/
│ ├── index.md
│ ├── log.md
│ └── hot-cache.md # ~500-word summary of most active context
└── CLAUDE.md
```
Frontmatter for `wiki/goals/` notes:
```yaml
---
type: goal # goal | concept | person | area | resource | reflection
status: active # active | paused | completed | abandoned
area: career # health | career | finance | creative | relationships | growth
priority: 1
target_date: YYYY-MM-DD
progress: 0 # 0-100 percent
tags: [goal]
created: YYYY-MM-DD
updated: YYYY-MM-DD
---
```
Hot cache note: `_meta/hot-cache.md` is a ~500-word file Claude updates at the end of each session. It captures current focus areas, recent wins, and open threads. This prevents Claude from having to crawl the whole wiki to answer "where were we?".
Key wiki pages to create: `[[North Star]]`, `[[Weekly Review Template]]`, `[[Annual Goals]]`
---
## Mode E: Research
Use when: "research wiki on [topic]", "track papers I'm reading", "build a thesis"
```
vault/
├── .raw/ # PDFs, web clips, data files, raw notes
├── wiki/
│ ├── papers/ # paper summaries with key claims and methodology
│ ├── concepts/ # extracted concepts, models, frameworks
│ ├── entities/ # people, organizations, methods, datasets
│ ├── thesis/ # evolving synthesis: the "state of the field" pages
│ └── gaps/ # open questions, contradictions, research needed
├── _meta/
│ ├── index.md
│ └── log.md
└── CLAUDE.md
```
Frontmatter for `wiki/papers/` notes:
```yaml
---
type: paper # paper | concept | entity | thesis | gap
status: summarized # raw | summarized | synthesized | superseded
year: 2024
authors: []
venue: ""
key_claim: ""
methodology: ""
contradicts: []
supports: []
tags: [paper]
created: YYYY-MM-DD
updated: YYYY-MM-DD
---
```
Key wiki pages to create: `[[Research Overview]]`, `[[Key Claims Map]]`, `[[Open Questions]]`, `[[Methodology Comparison]]`
---
## Mode F: Book / Course
Use when: "companion wiki for a book", "course notes wiki", "as I read [title]"
```
vault/
├── .raw/ # chapter notes, highlights, exercises
├── wiki/
│ ├── characters/ # characters, personas, agents, experts (adapt to content)
│ ├── themes/ # major themes with supporting evidence
│ ├── concepts/ # domain-specific terms and frameworks
│ ├── timeline/ # plot structure, curriculum sequence, chapter map
│ └── synthesis/ # your own takeaways, questions, applications
├── _meta/
│ ├── index.md
│ └── log.md
└── CLAUDE.md
```
Frontmatter for `wiki/concepts/` notes:
```yaml
---
type: concept # concept | character | theme | chapter | synthesis
status: developing # stub | developing | mature
source_chapters: []
first_appearance: ""
tags: [concept]
created: YYYY-MM-DD
updated: YYYY-MM-DD
---
```
Key wiki pages to create: `[[Book Overview]]`, `[[Theme Map]]`, `[[Character / Expert Index]]`, `[[My Takeaways]]`
---
## Combining Modes
You can combine modes. Examples:
- "GitHub repo + research on the AI approach used" -> Mode B folders + Mode E papers/ folder
- "My SaaS business + second brain" -> Mode C intel/ + Mode D goals/
- "YouTube channel" -> Mode F (content as "book") + Mode E (research on topics covered)
When combining, keep folder names distinct. Don't merge `decisions/` from Mode B and Mode C into one folder.

View File

@@ -0,0 +1,78 @@
# Obsidian Setup
---
## Install Obsidian
### Linux (Flatpak — recommended)
Check if installed:
```bash
flatpak list 2>/dev/null | grep -i obsidian && echo "FOUND via flatpak" || \
which obsidian 2>/dev/null && echo "FOUND in PATH" || echo "NOT FOUND"
```
Install if not found:
```bash
flatpak install flathub md.obsidian.Obsidian
```
### macOS
```bash
ls /Applications/Obsidian.app 2>/dev/null && echo "FOUND" || brew install --cask obsidian
```
### Windows
```powershell
Test-Path "$env:LOCALAPPDATA\Obsidian" && echo "FOUND" || winget install Obsidian.Obsidian
```
### All platforms: direct download
https://obsidian.md/download
---
## Open the Vault
After installing: Obsidian > Manage Vaults > Open Folder as Vault > select your vault directory.
---
## Recommended Plugins
Install via Settings > Community Plugins > Turn off Restricted Mode > Browse.
| Plugin | Purpose |
|--------|---------|
| **Dataview** | Query vault as a database. Powers dashboards in `wiki/meta/`. |
| **Templater** | Auto-populate frontmatter on note creation from `_templates/`. |
| **Obsidian Git** | Auto-commit every 15 minutes. Protects against bad writes. |
| **Iconize** | Visual folder icons for navigation. |
| **Minimal Theme** | Best dark theme for dense information display. |
Optional additions:
- **Smart Connections** — semantic search across all notes
- **QuickAdd** — macros for fast note creation
- **Folder Notes** — click a folder to open an overview note
---
## Web Clipper
The Obsidian Web Clipper browser extension converts web articles to markdown and sends them to `.raw/` in one click.
Install for Chrome, Firefox, or Safari from the Obsidian website.
Set the default folder to `.raw/` in the extension settings.
---
## After Installing Plugins
1. Enable Dataview: Settings > Community Plugins > toggle on
2. Enable Templater: Settings > Templater > set template folder to `_templates`
3. Enable Obsidian Git: Settings > Obsidian Git > Auto backup interval: 15 minutes
4. Enable the CSS snippet: Settings > Appearance > CSS Snippets > toggle on `vault-colors`

View File

@@ -0,0 +1,124 @@
# REST API Quick Reference
Use these commands when MCP tools are not available. Requires the Local REST API plugin running in Obsidian (port 27124).
Set your key before running any command:
```bash
API="https://127.0.0.1:27124"
KEY="your-api-key-here"
```
---
## Read a file
```bash
curl -sk \
-H "Authorization: Bearer $KEY" \
"$API/vault/wiki/index.md"
```
---
## Create or replace a file
```bash
curl -sk -X PUT \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: text/markdown" \
--data-binary @local-file.md \
"$API/vault/wiki/entities/Name.md"
```
Or with inline content:
```bash
curl -sk -X PUT \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: text/markdown" \
--data "# Page Title
Content here." \
"$API/vault/wiki/concepts/Name.md"
```
---
## Append to a file
```bash
curl -sk -X POST \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: text/markdown" \
--data "- New log entry" \
"$API/vault/wiki/log.md"
```
---
## Patch a frontmatter field
```bash
curl -sk -X PATCH \
-H "Authorization: Bearer $KEY" \
-H "Operation: replace" \
-H "Target-Type: frontmatter" \
-H "Target: status" \
-H "Content-Type: application/json" \
--data '"mature"' \
"$API/vault/wiki/concepts/Name.md"
```
---
## Append content under a heading
```bash
curl -sk -X PATCH \
-H "Authorization: Bearer $KEY" \
-H "Operation: append" \
-H "Target-Type: heading" \
-H "Target: Connections" \
-H "Content-Type: text/markdown" \
--data "- [[New Page]]" \
"$API/vault/wiki/entities/Name.md"
```
---
## Search
Simple keyword search:
```bash
curl -sk -X POST \
-H "Authorization: Bearer $KEY" \
"$API/search/simple/?query=machine+learning"
```
Dataview query:
```bash
curl -sk -X POST \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/vnd.olrapi.dataview.dql+txt" \
--data 'TABLE status FROM "wiki" WHERE status = "seed"' \
"$API/search/"
```
---
## List all tags
```bash
curl -sk \
-H "Authorization: Bearer $KEY" \
"$API/tags/"
```
---
## List files in a folder
```bash
curl -sk \
-H "Authorization: Bearer $KEY" \
"$API/vault/wiki/entities/"
```