# Pi-Wiki Feature Roadmap

## Current State (v1.2.0)

✅ **Working:**
- `/wiki-status` - wiki health check
- `/wiki-ingest <path|url>` - ingest sources (MD, HTML, JSON)
- `/wiki-query <question>` - query wiki with keyword search
- `/wiki-list` - list all pages
- `/wiki-read <title>` - read specific page
- `/wiki-lint` - check for orphans
- Manifest with content hashes
- Config resolution
- Content trust boundary

❌ **Missing** (for obsidian-wiki parity):

---

## Priority 1: Core Maintenance (Low Effort)

### 1. Cross-linker
**File:** `/wiki-crosslink`
**Purpose:** Auto-discover unlinked mentions, insert `[[wikilinks]]`

```
Algorithm:
1. Load all page titles
2. For each page, scan body for title mentions without wikilinks
3. If mention found but no wikilink → suggest adding [[title]]
4. Update page with new wikilinks
```

### 2. Tag Taxonomy
**File:** `/wiki-taxonomy`
**Purpose:** Canonical tags, audit and normalize across vault

```
Files:
- _meta/taxonomy.md - canonical tag list with definitions
- Tag audit: scan all pages, compare to taxonomy
- Auto-fix: rename/merge tags to match taxonomy
```

### 3. Append-and-Review
**File:** `/wiki-append <note>`
**Purpose:** Quick notes that get reviewed during lint

```
Flow:
1. /wiki-append "quick thought about X"
2. Stored in _drafts/append-notes.md
3. /wiki-lint flags drafts for review
4. User confirms → promoted to proper page
```

---

## Priority 2: Obsidian Integration (Medium Effort)

### 4. Obsidian Vault Link
**Purpose:** Use existing Obsidian vault OR pi-wiki's own vault

```
Config options:
{
  "vault_path": "~/pi-wiki",       // pi-wiki's own vault
  "obsidian_vault": "~/Obsidian/vault"  // existing Obsidian vault
}
```

**Features:**
- Read from Obsidian vault (if configured)
- Write to Obsidian vault (bi-directional sync)
- Respect Obsidian's folder structure
- Use Obsidian's image handling
- Link with Obsidian's graph view

### 5. Obsidian CLI Integration
**Purpose:** Use `obsidian` CLI for native operations

```
Commands to support:
- obsidian read <file> - read note via CLI
- obsidian search <query> - search via CLI
- obsidian daily - today's note
- obsidian properties - frontmatter ops
```

### 6. Obsidian Web Clipper Support
**Purpose:** Handle clips from browser extension

```
Save location: sources/web-clips/
Format: .md from Obsidian Web Clipper
Auto-ingest on next /wiki-lint
```

---

## Priority 3: Enhanced Search (Medium Effort)

### 7. QMD Semantic Search
**Purpose:** Concept-level matches beyond keyword search

```
Setup:
1. npm install -g qmd
2. qmd index --name wiki ~/pi-wiki/wiki
3. qmd index --name sources ~/pi-wiki/sources

Usage:
- /wiki-query runs QMD pass before Grep
- Falls back to keyword search if QMD unavailable
```

### 8. Knowledge Graph Export
**Purpose:** Visualize wiki structure

```
Formats:
- graph.json (Obsidian graph view)
- graph.html (interactive browser viz)
- graph.graphml (Gephi)
- cypher.txt (Neo4j)
```

---

## Priority 4: History Mining (Medium Effort)

### 9. Pi Session History
**Purpose:** Mine pi conversations into wiki

```
Source: ~/.pi/sessions/
Formats to process:
- session JSON files
- prompt/response pairs
- Tool calls and outputs

Skill: Extract key decisions, learnings, code patterns
```

### 10. Daily Update
**Purpose:** Automated maintenance cycle

```
Checks:
1. Freshness - pages needing review
2. Index update - reflect current state
3. Hot cache - frequently accessed pages
4. Draft promotion - _raw/ and append-notes
```

---

## Priority 5: Advanced Features (High Effort)

### 11. Image Description Generation
**Purpose:** Multi-modal source support

```
Flow:
1. Ingest detects image (png, jpg, webp)
2. LLM generates detailed description
3. Description embedded in source content
4. Page references both text + image
```

### 12. Project `.brain/` Sync
**Purpose:** Synced project context

```
Structure:
projects/<name>/.brain/
├── index.md       → current state, priorities
├── architecture.md → stack, patterns
├── decisions.md    → ADRs with rationale
├── changelog.md    → diffs since last sync
└── deployment.md   → env, secrets, URLs

Sync: /wiki-sync-project to update
```

### 13. Research Skill
**Purpose:** Autonomous web research, self-filed

```
Flow:
1. /wiki-research <topic>
2. Agent searches web, reads sources
3. Synthesizes findings
4. Files into wiki as new pages
5. Logs research session
```

---

## Priority 6: Future (High Effort)

### 14. Team MCP Server
**Purpose:** Shared wiki for teams

```
Architecture:
- pi-wiki as MCP server
- Team connects via MCP client
- Shared knowledge base
- Access control per namespace
```

### 15. Model Fallback
**Purpose:** Handle LLM failures gracefully

```
Flow:
1. Primary LLM (Claude/GPT-4) for compilation
2. If timeout/error → fallback to Haiku/Mini
3. Retry primary with smaller batch
4. Log failures for review
```

---

## Feature Comparison Matrix

| Feature | Current | Planned | obsidian-wiki | Effort |
|---------|---------|---------|---------------|--------|
| Basic ingest | ✅ | - | ✅ | - |
| Manifest hashes | ✅ | - | ✅ | - |
| Content trust | ✅ | - | ✅ | - |
| Cross-linker | ❌ | P1 | ✅ | Low |
| Tag taxonomy | ❌ | P1 | ✅ | Low |
| Append-and-review | ❌ | P1 | ❌ | Low |
| Obsidian vault link | ❌ | P2 | ✅ | Medium |
| Obsidian CLI | ❌ | P2 | ✅ | Medium |
| QMD search | ❌ | P3 | ✅ | Medium |
| Graph export | ❌ | P3 | ✅ | Medium |
| History mining | ❌ | P4 | ✅ | Medium |
| Daily update | ❌ | P4 | ✅ | Medium |
| Image descriptions | ❌ | P5 | ❌ | Medium |
| Project brain sync | ❌ | P5 | ❌ | Medium |
| Research skill | ❌ | P5 | ✅ | High |
| Team MCP | ❌ | P6 | ❌ | High |
| Model fallback | ❌ | P6 | ❌ | High |

---

## Quick Wins (Next Sprint)

1. **Cross-linker** - find unlinked mentions, add wikilinks
2. **Tag taxonomy** - canonical tags + audit
3. **Append-and-review** - quick notes pipeline
4. **Obsidian vault config** - point to existing vault
5. **Graph export** - JSON + HTML visualization

---

## Obsidian Integration Details

### Bi-directional Sync

```
pi-wiki ←→ Obsidian

pi-wiki write → Obsidian vault:
- Pages save to obsidian_vault/wiki/
- Images save to obsidian_vault/assets/
- Frontmatter matches Obsidian schema

Obsidian write → pi-wiki:
- Read via obsidian CLI
- Monitor for changes (future: webhook)
- Import into pi-wiki manifest
```

### Obsidian Schema Compliance

```yaml
# Frontmatter matching Obsidian
---
title: Page Title
type: entity|concept|summary|synthesis
tags: [tag1, tag2]
sources: [source-slug]
created: 2026-01-15
updated: 2026-01-20
aliases: [Alternate Title]
cssclasses: [callout]
---

# Page Title

![[image.png]]

> [!note]
> Callout content

## See Also
- [[Related Page]]
- [[Another Page]]
```

### Graph Color-Coding (Obsidian)

```
Color schemes:
- by-tag: top 10 tags
- by-category: folder structure
- by-visibility: pii/internal
- combined: visibility + tags

Output: vault/.obsidian/graph.json
```

---

## Implementation Order

```
Phase 1: Core (1-2 hours)
├─ Cross-linker
├─ Tag taxonomy
└─ Append-and-review

Phase 2: Obsidian Integration (2-3 hours)
├─ Vault link config
├─ Bi-directional sync
└─ Graph export

Phase 3: Enhanced Search (1-2 hours)
├─ QMD integration
└─ Improved query ranking

Phase 4: History (2-3 hours)
├─ Pi session mining
└─ Daily update skill

Phase 5: Advanced (4+ hours)
├─ Image descriptions
├─ Project brain
├─ Research
└─ Team MCP
```

---

## Test Plan

```bash
# Core
/wiki-ingest https://example.com/article.md
/wiki-list
/wiki-query "what did I read about X"
/wiki-lint
/wiki-crosslink
/wiki-taxonomy

# Obsidian
/wiki-status  # shows vault config
/wiki-read "Page Name"  # works with Obsidian vault

# Search
/wiki-query "concepts around X"  # uses QMD if available

# Notes
/wiki-append "quick thought"
/wiki-lint  # flags append notes for review
```

---

## Success Metrics

- [ ] Cross-linker adds wikilinks to orphan pages
- [ ] Tag taxonomy normalizes inconsistent tags
- [ ] Append notes promote to proper wiki pages
- [ ] Obsidian vault syncs bidirectionally
- [ ] QMD semantic search finds concept matches
- [ ] Pi history mines useful patterns
- [ ] Daily update keeps wiki fresh