Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 2 additions & 9 deletions .claude/commands/test-live.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,7 @@ When the user runs `/project:test-live`, execute comprehensive test plan:
16. **edit_note** (advanced modes) - Complex find/replace operations

### **Tier 4: Specialized (Rarely Test)**
17. **canvas** - Obsidian visualization (specialized use case)
18. **MCP Prompts** - Enhanced UX tools (ai_assistant_guide, continue_conversation)
17. **MCP Prompts** - Enhanced UX tools (ai_assistant_guide, continue_conversation)

## Stateless Architecture Testing

Expand Down Expand Up @@ -308,13 +307,7 @@ Test essential MCP tools that form the foundation of Basic Memory:

### Phase 6: Specialized Tools Testing (Tier 4)

**16. canvas Tests (Specialized):**
- ✅ JSON Canvas generation
- ✅ Node and edge creation
- ✅ Obsidian compatibility
- ⚠️ Complex graph handling

**17. MCP Prompts Tests (Specialized):**
**16. MCP Prompts Tests (Specialized):**
- ✅ ai_assistant_guide output
- ✅ continue_conversation functionality
- ✅ Formatted search results
Expand Down
3 changes: 0 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -423,9 +423,6 @@ See `.claude/commands/release/release.md` (and `beta.md`, `release-check.md`, `c
- `create_memory_project(project_name, project_path, set_default)` - Create new Basic Memory projects
- `delete_project(project_name)` - Delete a project from configuration

**Visualization:**
- `canvas(nodes, edges, title, directory)` - Generate Obsidian canvas files for knowledge graph visualization

**ChatGPT-Compatible Tools:**
- `search(query)` - Search across knowledge base (OpenAI actions compatible)
- `fetch(id)` - Fetch full content of a search result document
Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -491,8 +491,7 @@ agents can pick the right one without trial-and-error:
`delete_note`, `read_content`, `view_note`
- **Search & discovery:** `search`, `search_notes`, `recent_activity`,
`list_directory`
- **Knowledge graph:** `build_context` (navigates `memory://` URLs),
`canvas` (Obsidian canvas generation)
- **Knowledge graph:** `build_context` (navigates `memory://` URLs)
- **Projects:** `list_memory_projects`, `create_memory_project`,
`get_current_project`, `sync_status`
- **Schema:** `schema_infer`, `schema_validate`, `schema_diff`
Expand Down
104 changes: 17 additions & 87 deletions docs/ai-assistant-guide-extended.md
Original file line number Diff line number Diff line change
Expand Up @@ -2472,73 +2472,25 @@ except:

### Knowledge Graph Visualization

**Create visual representation using canvas**:
**Create visual representations with Obsidian canvas files**:

```python
# Gather entities to visualize
auth_context = await build_context(
url="memory://Authentication System",
depth=2,
project="main"
)

# Create nodes
nodes = [
{
"id": "auth-system",
"type": "file",
"file": "specs/authentication-system.md",
"x": 0,
"y": 0,
"width": 400,
"height": 300
},
{
"id": "user-db",
"type": "file",
"file": "services/user-database.md",
"x": 500,
"y": 0,
"width": 400,
"height": 300
},
{
"id": "login-api",
"type": "file",
"file": "api/login-api.md",
"x": 250,
"y": 400,
"width": 400,
"height": 300
}
]

# Create edges showing relations
edges = [
{
"id": "edge-1",
"fromNode": "auth-system",
"toNode": "user-db",
"label": "requires"
},
{
"id": "edge-2",
"fromNode": "auth-system",
"toNode": "login-api",
"label": "implemented_by"
}
]

# Generate canvas
canvas = await canvas(
nodes=nodes,
edges=edges,
title="Authentication System Overview",
folder="diagrams",
project="main"
)
Gather entities with `build_context`, then write a
[JSON Canvas](https://jsoncanvas.org/) file (`.canvas`) into the project
directory. Basic Memory indexes `.canvas` files as JSON, and Obsidian opens
them for interactive exploration:

# Opens in Obsidian for interactive exploration
```json
{
"nodes": [
{"id": "auth-system", "type": "file", "file": "specs/authentication-system.md", "x": 0, "y": 0, "width": 400, "height": 300},
{"id": "user-db", "type": "file", "file": "services/user-database.md", "x": 500, "y": 0, "width": 400, "height": 300},
{"id": "login-api", "type": "file", "file": "api/login-api.md", "x": 250, "y": 400, "width": 400, "height": 300}
],
"edges": [
{"id": "edge-1", "fromNode": "auth-system", "toNode": "user-db", "label": "requires"},
{"id": "edge-2", "fromNode": "auth-system", "toNode": "login-api", "label": "implemented_by"}
]
}
```

### Progressive Knowledge Building
Expand Down Expand Up @@ -3090,28 +3042,6 @@ status = await sync_status(project="main")
workspaces = await list_workspaces()
```

### Visualization

**canvas(nodes, edges, title, folder, project)**
- Create Obsidian canvas
- Parameters:
- `nodes` (required): List of node objects
- `edges` (required): List of edge objects
- `title` (required): Canvas title
- `folder` (required): Destination folder
- `project` (required unless default_project_mode): Target project
- Returns: Created canvas file
- Example:
```python
await canvas(
nodes=[{"id": "1", "type": "file", "file": "note.md", "x": 0, "y": 0}],
edges=[],
title="Graph View",
folder="diagrams",
project="main"
)
```

---

## Best Practices
Expand Down
27 changes: 15 additions & 12 deletions skills/memory-literary-analysis/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Phase 1: Seed → stub notes for known major entities
Phase 2: Process → chapter-by-chapter notes in batches
Phase 3: Cross-ref → enrich arcs, add parallels, write analysis
Phase 4: Validate → schema checks, drift detection, consistency
Phase 5: Visualize → canvas files for character webs, timelines
Phase 5: Visualize → Obsidian canvas files for character webs, timelines
```

## Phase 0: Setup
Expand Down Expand Up @@ -451,19 +451,22 @@ Spot-check bidirectional relations: if Chapter X `features [[Character]]`, does

## Phase 5: Visualization

Generate canvas files for visual exploration:

```python
# Character relationship web
canvas(query="type:Character AND role:protagonist OR role:antagonist OR role:supporting")

# Theme connections
canvas(query="type:Theme")

# Chapter timeline with key events
canvas(query="type:Chapter", layout="timeline")
Write [JSON Canvas](https://jsoncanvas.org/) files (`.canvas`) into the project directory for visual exploration in Obsidian. Query the graph first (`search_notes`, `build_context`), then lay out the results as canvas nodes and edges:

```json
{
"nodes": [
{"id": "ahab", "type": "file", "file": "characters/captain-ahab.md", "x": 0, "y": 0, "width": 400, "height": 300},
{"id": "ishmael", "type": "file", "file": "characters/ishmael.md", "x": 500, "y": 0, "width": 400, "height": 300}
],
"edges": [
{"id": "e1", "fromNode": "ishmael", "toNode": "ahab", "label": "narrates"}
]
}
```

Useful canvases: character relationship web (protagonist/antagonist/supporting), theme connections, chapter timeline with key events.

## Adapting to Other Genres

This pipeline works for any literary text. Adjust schemas for genre:
Expand Down
Loading
Loading