add claude-obsidian
@@ -0,0 +1,95 @@
|
||||
---
|
||||
type: session
|
||||
title: "Backlink Empire - Blog Posts, Karpathy Gist, GitHub Cross-Linking"
|
||||
created: 2026-04-10
|
||||
updated: 2026-04-10
|
||||
tags:
|
||||
- session
|
||||
- backlinks
|
||||
- seo
|
||||
- github
|
||||
- blog
|
||||
- rankenstein
|
||||
status: complete
|
||||
related:
|
||||
- "[[Claude Obsidian]]"
|
||||
- "[[Claude Canvas]]"
|
||||
- "[[Rankenstein]]"
|
||||
- "[[Karpathy LLM Wiki Pattern]]"
|
||||
decision_date: 2026-04-10
|
||||
---
|
||||
|
||||
## What Was Done
|
||||
|
||||
### Blog Posts Created
|
||||
|
||||
Two blog posts written, deployed to Vercel, and submitted to Google Indexing API + Bing IndexNow:
|
||||
|
||||
1. **claude-obsidian-ai-second-brain** - "I Turned Obsidian Into a Self-Organizing AI Brain"
|
||||
- Focus keyword: "obsidian ai second brain"
|
||||
- ~2,800 words, 5 repo images/GIFs, 3 SVG charts, 8 sourced statistics
|
||||
- Images from `wiki/meta/` in the claude-obsidian repo (graph view, wiki map, welcome canvas GIF)
|
||||
- Live: agricidaniel.com/blog/claude-obsidian-ai-second-brain
|
||||
|
||||
2. **claude-canvas-ai-visual-production** - "Claude Code Just Turned Obsidian Canvas Into an AI Design Studio"
|
||||
- Focus keyword: "obsidian canvas ai"
|
||||
- ~2,500 words, 5 screenshots from repo, 2 SVG charts, 7 sourced statistics
|
||||
- Images from `assets/screenshots/` in the claude-canvas repo
|
||||
- Live: agricidaniel.com/blog/claude-canvas-ai-visual-production
|
||||
|
||||
### Karpathy Gist Comment
|
||||
|
||||
Comment posted on Andrej Karpathy's LLM Wiki gist (gist ID: 442a6bf555914893e9891c11519de94f). Links claude-obsidian (358 stars), claude-canvas, and the blog post. Highlights hot cache, contradiction flagging, 8-category lint, and autonomous research loops as differentiators.
|
||||
|
||||
### GitHub Backlink Empire (26 Repos Updated)
|
||||
|
||||
**Phase 1 - API updates (no README changes):**
|
||||
- Set homepage URLs on 10 repos (on-page-seo, Keywordo-kun, claude-youtube, marketing-skill-pack, google-maps-scraper, claude-repurpose, claude-gif, claude-avatar, rankenstein-pro-latest, claude-canvas)
|
||||
- Set topics/tags on 25 repos (grouped by category: SEO, content, marketing, obsidian, media, dev tools, n8n)
|
||||
|
||||
**Phase 2-5 - README updates:**
|
||||
- Added standardized Author section to 25 repos with links to:
|
||||
- agricidaniel.com/about
|
||||
- agricidaniel.com/blog
|
||||
- skool.com/ai-marketing-hub
|
||||
- youtube.com/@AgriciDaniel
|
||||
- github.com/AgriciDaniel
|
||||
|
||||
**Rankenstein.pro backlinks (5 SEO-relevant repos only):**
|
||||
- claude-seo: "Publishing Pipeline" section
|
||||
- claude-blog: "Publishing Platform" section
|
||||
- on-page-seo: blockquote before Author
|
||||
- Keywordo-kun: blockquote before Author
|
||||
- marketing-skill-pack: mentioned in Author context
|
||||
|
||||
### Verification Results
|
||||
|
||||
64/65 checks passed. 1 minor note: claude-obsidian uses footer-style attribution instead of formal `## Author` heading (intentional - already had custom attribution).
|
||||
|
||||
## Key Decisions
|
||||
|
||||
- **rankenstein.pro placement**: Only on SEO-relevant repos (5 of 26). Not spammed across video/image/dev tools. Keeps it natural.
|
||||
- **Karpathy gist tone**: Technical, value-first. Led with the implementation, not marketing. Matched the collaborative tone of the comment thread.
|
||||
- **Blog keyword strategy**: "obsidian ai second brain" (trending, moderate competition) and "obsidian canvas ai" (low competition, growing query). Both exploit competitor gaps - no existing article covers a specific tool in depth.
|
||||
- **Cover images**: Used real repo assets (pixel-art covers, screenshots, GIFs) rather than stock photos. Converts better and is more authentic.
|
||||
|
||||
## Numbers
|
||||
|
||||
- ~87 new backlinks from github.com (DA 96) to agricidaniel.com
|
||||
- ~6 backlinks to rankenstein.pro
|
||||
- ~25 backlinks to skool.com/ai-marketing-hub
|
||||
- 22 total pages in sitemap (was 20 at session start)
|
||||
- 15 total blog posts (was 13)
|
||||
|
||||
## Workflow for Future Blog Posts
|
||||
|
||||
This session established a repeatable workflow:
|
||||
1. Explore repo thoroughly (features, images, stats)
|
||||
2. Keyword research + competitor analysis via web search
|
||||
3. Write blog JSON with HTML content, SVG charts, repo images
|
||||
4. Add to blogPosts.ts, sitemap.xml, llms.txt
|
||||
5. Build + prerender + deploy to Vercel
|
||||
6. Submit to Google Indexing API + Bing IndexNow
|
||||
7. Set repo homepage to blog URL
|
||||
8. Add blog backlink to repo README
|
||||
9. Update README with Author/community section
|
||||
@@ -0,0 +1,77 @@
|
||||
---
|
||||
type: meta
|
||||
title: "Claude SEO v1.9.0 — Pro Hub Challenge Integration Session"
|
||||
created: 2026-04-14
|
||||
updated: 2026-04-14
|
||||
tags:
|
||||
- session
|
||||
- claude-seo
|
||||
- v1.9.0
|
||||
- pro-hub-challenge
|
||||
- release
|
||||
status: complete
|
||||
related:
|
||||
- "[[Claude SEO]]"
|
||||
- "[[Pro Hub Challenge]]"
|
||||
- "[[Semantic Topic Clustering]]"
|
||||
- "[[Search Experience Optimization]]"
|
||||
- "[[SEO Drift Monitoring]]"
|
||||
- "[[E-commerce SEO]]"
|
||||
---
|
||||
|
||||
# Claude SEO v1.9.0 — Pro Hub Challenge Integration
|
||||
|
||||
**Date**: 2026-04-14
|
||||
**Duration**: Extended session (~4 hours)
|
||||
**Scope**: Integrate 5 community submissions from the AI Marketing Hub Pro Hub Challenge into claude-seo
|
||||
|
||||
## What Was Done
|
||||
|
||||
### Community Submissions Integrated
|
||||
| Contributor | Submission | Integrated As |
|
||||
|------------|------------|--------------|
|
||||
| **Lutfiya Miller** (Winner) | Semantic Cluster Engine | `seo-cluster` — SERP overlap clustering, hub-spoke architecture, interactive visualization |
|
||||
| **Florian Schmitz** | SXO Skill | `seo-sxo` — page-type mismatch detection, SERP-to-user-story, persona scoring |
|
||||
| **Dan Colta** | SEO Drift Monitor | `seo-drift` — baseline/diff/track with 17 comparison rules, SQLite persistence |
|
||||
| **Chris Muller** | Multi-lingual SEO | `seo-hreflang` enhancements — cultural profiles (DACH, FR, ES, JA), locale formats, content parity audit |
|
||||
| **Matej Marjanovic** | E-commerce + DataForSEO Cost Config | `seo-ecommerce` + cost guardrails with approval workflow |
|
||||
|
||||
### Numbers
|
||||
- **Before**: 19 skills, 13 agents, 23 scripts (v1.8.2)
|
||||
- **After**: 23 skills, 17 agents, 30 scripts (v1.9.0)
|
||||
- **New files created**: 30
|
||||
- **Existing files modified**: 31
|
||||
- **Total lines added**: ~5,500
|
||||
|
||||
### Architecture Decisions
|
||||
1. **SEO parts only** — blog-specific features (translation, multilingual pipeline, character images) stay for claude-blog
|
||||
2. **Full integration with optional execution** — cluster skill outputs content briefs when claude-blog isn't detected, full execution when it is
|
||||
3. **Security-hardened drift scripts** — original had SSRF bypass via curl fallback. Completely rewritten using only fetch_page.py
|
||||
4. **Cost guardrails** — threshold-based approval, daily limits, file locking, audit trail on reset
|
||||
|
||||
## Review Process (4 rounds)
|
||||
|
||||
| Round | Type | Score | Issues Found |
|
||||
|-------|------|-------|-------------|
|
||||
| 1 | superpowers:code-reviewer (3 agents) | 87/100 | 6 critical (step numbering, SSRF fallback, install.ps1, counts, CHANGELOG, README) |
|
||||
| 2 | superpowers:code-reviewer (3 agents) | 89/100 → 93/100 after fixes | 8 important (drift history routing, marketplace.json, audit math, AGENTS.md, CONTRIBUTING) |
|
||||
| 3 | superpowers:code-reviewer (3 agents) | 97/100 | 5 suggestions only (all pre-existing) |
|
||||
| 4 | /cybersecurity (8 agents) | 77/100 → 85/100 after fixes | H3: cost bypass, M4: XSS, M3: CI, M5: locking, L5: pyproject |
|
||||
|
||||
### Security Findings & Fixes
|
||||
- **XSS in cluster-map.html** — `truncate()` wasn't wrapped in `escapeHtml()`. Fixed.
|
||||
- **Cost guardrail bypass** — `reset` + unknown endpoint = unlimited spend. Fixed: reset requires `--confirm` + audit trail, unknown endpoints return `needs_approval`.
|
||||
- **File locking** — cost ledger had no locking for parallel agents. Fixed with fcntl.
|
||||
- **Pre-existing (deferred)**: validate_url DNS rebinding, install script injection, OAuth file permissions, no pip lockfile
|
||||
|
||||
## Key Learnings
|
||||
|
||||
1. **Agent output verification is essential** — subagents got seo/SKILL.md line count wrong by 40 lines, miscounted skills (25 vs 23), and would have placed CONTRIBUTING.md section in wrong location (orphaning subsections)
|
||||
2. **Security audits find real bugs** — the XSS and cost guardrail bypass were genuine issues that static review missed
|
||||
3. **Pre-existing vs new** — of 15 security findings, only 5 were introduced by v1.9.0. The codebase has technical debt from earlier versions
|
||||
4. **Plan review catches insertion-point bugs** — the max-effort plan review found 2 bugs (CONTRIBUTING.md section placement, README command ordering) before they were executed
|
||||
|
||||
## Files for Reference
|
||||
- Plan: `~/.claude/plans/smooth-popping-pebble.md`
|
||||
- CHANGELOG: v1.9.0 entry in `~/Desktop/Claude-SEO/CHANGELOG.md`
|
||||
- Contributors: `~/Desktop/Claude-SEO/CONTRIBUTORS.md`
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
type: decision
|
||||
title: "Community CTA Footer Rollout"
|
||||
created: 2026-04-14
|
||||
updated: 2026-04-14
|
||||
decision_date: 2026-04-14
|
||||
status: active
|
||||
tags:
|
||||
- marketing
|
||||
- skool
|
||||
- community
|
||||
- growth
|
||||
related:
|
||||
- "[[index]]"
|
||||
---
|
||||
|
||||
# Community CTA Footer Rollout
|
||||
|
||||
AI Marketing Hub Skool community links (free + pro) added as a footer to 6 Claude Code skill repos. The footer appears after major deliverables, never during mid-workflow or on quick utilities.
|
||||
|
||||
## The Footer
|
||||
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
Built by agricidaniel - Join the AI Marketing Hub community
|
||||
Free -> https://www.skool.com/ai-marketing-hub
|
||||
Pro -> https://www.skool.com/ai-marketing-hub-pro
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
```
|
||||
|
||||
## Implementation Pattern
|
||||
|
||||
Single-point instruction in each repo's orchestrator SKILL.md. One section controls the footer text, show list, and skip list. No duplication across sub-skills.
|
||||
|
||||
## Per-Repo Frequency Calibration
|
||||
|
||||
| Repo | Triggers | Rationale |
|
||||
|------|----------|-----------|
|
||||
| claude-ads | 12 commands | Audits, reports, analyses (each is a session-level event) |
|
||||
| claude-seo | 12 commands | Audits, technical, content (same pattern as ads) |
|
||||
| claude-obsidian | 3 operations | Only scaffold, lint, autoresearch (high-frequency tool, conservative) |
|
||||
| claude-blog | 8 commands | Write, rewrite, audit, analyze, brief, strategy, calendar, geo. Explicit guard: never in generated blog content/HTML |
|
||||
| banana-claude | 4 commands | Image generate, edit, batch (skip chat, inspire, config) |
|
||||
| claude-cybersecurity | All audits | Single-purpose tool, every completed report gets it |
|
||||
|
||||
## Design Principles
|
||||
|
||||
1. Free link listed first. Pro framed as "support the creator," not a gate.
|
||||
2. Footer appears only after value is delivered, never before or during.
|
||||
3. High-frequency tools (obsidian, banana chat) get fewer triggers to avoid spam.
|
||||
4. Content-producing tools (blog) explicitly exclude CTA from generated output.
|
||||
5. Single source of truth per repo. Update one section to change everything.
|
||||
|
||||
## Future Considerations
|
||||
|
||||
- Add "once per conversation" cap if power users report repetition across back-to-back commands.
|
||||
- Track conversion rate. If zero joins after months, experiment with wording.
|
||||
- Forks will strip the CTA. That is fine and expected under MIT license.
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
type: meta
|
||||
title: "Claude SEO v1.9.0 Release Report Session"
|
||||
updated: 2026-04-15
|
||||
tags:
|
||||
- meta
|
||||
- session
|
||||
- claude-seo
|
||||
- pdf
|
||||
- weasyprint
|
||||
status: complete
|
||||
related:
|
||||
- "[[Claude SEO]]"
|
||||
- "[[Pro Hub Challenge]]"
|
||||
- "[[2026-04-14-claude-seo-v190-session]]"
|
||||
---
|
||||
|
||||
# Claude SEO v1.9.0 Release Report Session
|
||||
|
||||
Date: 2026-04-15 | Output: `~/Desktop/Claude-SEO-v1.9.0-Release-Report.pdf`
|
||||
|
||||
## What Was Built
|
||||
|
||||
13-page dark-theme PDF release report for Claude SEO v1.9.0. Generated via `scripts/release_report.py` using WeasyPrint + matplotlib. Covers: Pro Hub Challenge contributions, architecture evolution, review score progression, security audit findings, DataForSEO cost guardrails, and Challenge v2 announcement.
|
||||
|
||||
**Stats**: 13 pages, 1.53 MB, 4 charts, 7 screenshots embedded, logo visible on title page.
|
||||
|
||||
**Brand**: Space Grotesk font, `#0A0A0A` background, `#E07850` accent (rust-orange), `#111111` cards, `#2D2D2D` borders. Matches SVG Diagram Style Guide.
|
||||
|
||||
## Bugs Fixed
|
||||
|
||||
| Bug | Root Cause | Fix |
|
||||
|-----|-----------|-----|
|
||||
| Logo not rendering | Filename has double space: "AI MArketing hub pro logo with white text.png" | Corrected path in `generate_report()` |
|
||||
| `file://` images not loading | Spaces in paths not URL-encoded | Added `_file_url()` helper with `urllib.parse.quote()` |
|
||||
| Review checker false WARNs | Checked URL-encoded paths against filesystem | `unquote()` before `Path.exists()` |
|
||||
| Title page empty bottom half | Fixed `height:297mm` + sparse content | Removed fixed height, added "In This Report" card |
|
||||
| Contributor card page-break orphans | `display:table-cell` is atomic in WeasyPrint | Replaced two-column layout with stacked blocks |
|
||||
| Architecture scripts table orphaned | 7-row table split across pages | Replaced table with paragraph |
|
||||
| Security highlight box orphaned | Orphaned after large table | Merged text into intro paragraph |
|
||||
| Chart page mostly empty | Chart too small relative to page | Increased figsize height, moved chart first in section |
|
||||
|
||||
## WeasyPrint PDF Lessons
|
||||
|
||||
1. **`file://` URIs must be URL-encoded** — spaces become `%20`. Use `urllib.parse.quote(path, safe="/:@")`. When reviewing paths extracted from HTML, use `unquote()` before `Path.exists()`.
|
||||
2. **`display:table-cell` is atomic** — WeasyPrint cannot break a table-cell across pages. For content that might span pages (contributor cards, multi-row content), use stacked block elements (`<p>` + `<ul>`) instead of two-column table layouts.
|
||||
3. **Fixed height causes empty space** — `height: 297mm` on a div with sparse content leaves blank below. Use auto height + generous padding instead.
|
||||
4. **Tables that overflow: replace with paragraphs** — if a table consistently orphans its last rows, a `<p>` with inline `<code>` spans is more reliable.
|
||||
5. **Chart figsize controls page fill** — matplotlib figsize directly affects how much of the page the chart occupies. Increase height to fill empty space after a chart.
|
||||
6. **`max-height: 165mm` on `.chart-container img`** — good default for charts on their own section page.
|
||||
7. **Check filenames carefully** — "AI MArketing hub pro logo with white text.png" has a double space between "hub" and "pro". `Path.exists()` is the fastest way to catch this.
|
||||
|
||||
## Pro Hub Challenge v2 (April)
|
||||
|
||||
Added to the report's "What's Next" section. Details:
|
||||
- Keyword: **LEADS**
|
||||
- Prizes: $400 (1st) + $200 (2nd) in Claude Credits
|
||||
- Deadline: April 28, 2026
|
||||
- Scope: anything touching lead generation — Claude Code skills, n8n workflows, MCP servers, scrapers, dashboards, pipelines
|
||||
- Rules: GitHub repo or .zip + 1-2 min demo video, must be functional, solo or team welcome
|
||||
- Previous winner: Lutfiya Miller (seo-cluster, integrated in v1.9.0)
|
||||
@@ -0,0 +1,79 @@
|
||||
---
|
||||
type: meta
|
||||
title: "Claude SEO v1.9.0 Slides and GitHub Release Session"
|
||||
updated: 2026-04-15
|
||||
tags:
|
||||
- meta
|
||||
- session
|
||||
- claude-seo
|
||||
- github
|
||||
- slides
|
||||
status: complete
|
||||
related:
|
||||
- "[[Claude SEO]]"
|
||||
- "[[Pro Hub Challenge]]"
|
||||
- "[[2026-04-14-claude-seo-v190-session]]"
|
||||
- "[[2026-04-15-release-report-session]]"
|
||||
---
|
||||
|
||||
# Claude SEO v1.9.0 Slides and GitHub Release Session
|
||||
|
||||
Date: 2026-04-15 | Outputs: `claude-seo-slides/v190.html`, GitHub release v1.9.0
|
||||
|
||||
## What Was Built
|
||||
|
||||
### HTML Slide Deck (claude-seo-slides/v190.html)
|
||||
|
||||
15-slide community presentation for the v1.9.0 release. Scroll-snap HTML, no external library. Matches the existing v1.7.2 dark-theme brand exactly.
|
||||
|
||||
**Tech pattern:**
|
||||
- `scroll-snap-type: y mandatory` on `html`, each slide `min-height:100vh` + `scroll-snap-align: start`
|
||||
- `IntersectionObserver` per slide to update progress bar and nav dots
|
||||
- Keyboard: ArrowDown/Right/Space to advance, ArrowUp/Left to go back
|
||||
- `file:///` absolute paths for local screenshots with `onerror` fallback handlers
|
||||
|
||||
**Brand:** `#0A0A0A` bg, `#E07850` coral accent, Space Grotesk headings, IBM Plex Mono body. `.claude/`, `.superpowers/` added to `.gitignore` before push.
|
||||
|
||||
**Slide structure (15 slides):**
|
||||
|
||||
| # | Title | Key Content |
|
||||
|---|-------|-------------|
|
||||
| 01 | Title | 23 skills, 5 contributors, 4 new skills, 30 scripts |
|
||||
| 02 | Executive Summary | 8 metric cards, community wins, technical wins |
|
||||
| 03 | The Challenge | 3 cards, full 8-stage timeline table |
|
||||
| 04 | Community Posts | Announcement + winner screenshots (local file paths) |
|
||||
| 05 | Contributors | All 6, with Winner/Proficient/Reviewed badges |
|
||||
| 06 | seo-cluster | Lutfiya Miller, features, screenshot, integration notes |
|
||||
| 07 | seo-sxo | Florian Schmitz, detection example, screenshot |
|
||||
| 08 | seo-drift | Dan Colta, flow diagram, features, screenshot |
|
||||
| 09 | seo-ecommerce | Matej Marjanovic, cost approval box, screenshot |
|
||||
| 10 | seo-hreflang | Chris Muller, cultural profiles table, screenshot |
|
||||
| 11 | Architecture Evolution | Before/after counts, 7 new scripts list |
|
||||
| 12 | Review Process | Score timeline 87→93→97→85, findings table per round |
|
||||
| 13 | Security Audit | 85/100, detailed fixes table |
|
||||
| 14 | DataForSEO Guardrails | Bypass chain, before/after code snippet, fcntl |
|
||||
| 15 | What's Next | v1.9.1 H1/H2/M1 deferred items, Challenge v2 LEADS |
|
||||
|
||||
**Screenshot paths note:** `claude-seo-slides/v190.html` contains 7 absolute `file://` home paths for community post screenshots. Not sensitive, but not portable. `onerror` handlers show placeholder text when images fail. Works in Firefox; Chrome blocks cross-origin `file://` image requests.
|
||||
|
||||
### GitHub Release v1.9.0
|
||||
|
||||
**Steps taken:**
|
||||
1. Fixed `SCREENSHOTS_DIR` hardcoded path in `scripts/release_report.py`: replaced the old absolute home Downloads path with `Path.home() / "Downloads" / "..."` (Path was already imported).
|
||||
2. Added `.claude/` and `.superpowers/` to `.gitignore`.
|
||||
3. Staged 68 files (31 modified, 37 new), committed as `feat: v1.9.0 Pro Hub Challenge community integration`.
|
||||
4. Remote had 1 commit ahead ("Remove blog links from README") — resolved with `git pull --rebase`.
|
||||
5. Tagged `v1.9.0` on HEAD, pushed tag.
|
||||
6. Created GitHub release via `gh release create v1.9.0` with PDF attached (`Claude-SEO-v1.9.0-Release-Report.pdf`). No HTML slides attached as release asset.
|
||||
|
||||
**Release URL:** https://github.com/AgriciDaniel/claude-seo/releases/tag/v1.9.0
|
||||
|
||||
**Commit stats:** 68 files, 9,662 insertions, 51 deletions.
|
||||
|
||||
## Key Lessons
|
||||
|
||||
1. **`Path.home()` for user-relative paths in scripts** — never hardcode `/home/username/...`. Use `Path.home() / "..."` or `os.path.expanduser("~")`. Catches before push with a simple `grep -rn "/home/"`.
|
||||
2. **Always `git pull --rebase` before pushing a big local commit** — even on solo repos with active GitHub Actions or web edits. Avoids a merge commit cluttering the history.
|
||||
3. **`gh release create` attaches assets directly** — pass file path as positional argument. Only attach what users actually need to download (PDF), not presentation assets (HTML) that live in the repo.
|
||||
4. **`.claude/` and `.superpowers/` should always be in `.gitignore`** — they hold project-specific Claude Code permissions and plugin state. Not credentials, but not repo content either.
|
||||
5. **Chrome blocks `file://` cross-origin image requests** — HTML files opened as `file://` cannot load images from other `file://` paths in Chrome. Firefox allows it. For portable local HTML with images, use `python3 -m http.server` or embed images as base64 data URIs.
|
||||
@@ -0,0 +1,348 @@
|
||||
---
|
||||
type: meta
|
||||
title: "2026-04-24 v1.6.0 Release Session"
|
||||
created: 2026-04-24
|
||||
updated: 2026-04-24
|
||||
tags:
|
||||
- meta
|
||||
- session
|
||||
- release
|
||||
- dragonscale
|
||||
status: evergreen
|
||||
related:
|
||||
- "[[log]]"
|
||||
- "[[hot]]"
|
||||
- "[[DragonScale Memory]]"
|
||||
- "[[claude-obsidian-v1.4-release-session]]"
|
||||
---
|
||||
|
||||
# 2026-04-24 v1.6.0 Release Session
|
||||
|
||||
A same-day release cycle covering v1.5.0, v1.5.1, and v1.6.0.
|
||||
|
||||
This session took DragonScale from a three-mechanism opt-in extension to a four-mechanism opt-in extension, with a hardening point release in the middle.
|
||||
|
||||
**Public release notes**: [docs/releases/v1.6.0.md](../../docs/releases/v1.6.0.md). That file is the user-facing artifact and the source to paste into a `gh release create v1.6.0` body. This session page is the internal engineering record.
|
||||
|
||||
Ground truth for this page comes from:
|
||||
|
||||
- `CHANGELOG.md` entries `[1.5.0]`, `[1.5.1]`, and `[1.6.0]`
|
||||
- `wiki/log.md` entries for 2026-04-24 covering Phase 3.5, Phase 3.6, and Phase 4
|
||||
- current repository state for file existence, tags, and commit history
|
||||
|
||||
## Release Sequence
|
||||
|
||||
- `v1.5.0`: Phase 3.5, morning. Cross-phase hardening, opt-in DragonScale installer, reproducible tests, `CHANGELOG.md`, `Makefile`, version sync.
|
||||
- `v1.5.1`: Phase 3.6, afternoon. Five surgical hardening fixes across tiling security, rollout baseline, AGENTS docs, wiki-ingest wording, and install guide versioning.
|
||||
- `v1.6.0`: Phase 4, late. DragonScale Mechanism 4 shipped as opt-in boundary-first autoresearch, with the new scorer script, new tests, and no-topic autoresearch candidate flow.
|
||||
|
||||
## Release Summary
|
||||
|
||||
The morning release, v1.5.0, was the hardening pass that closed the hold-ship audit items accumulated across Phases 1 through 3.
|
||||
|
||||
The afternoon release, v1.5.1, was a narrow correction pass that fixed five remaining inconsistencies and one tiling write-path confinement issue before Phase 4 moved forward.
|
||||
|
||||
The late release, v1.6.0, shipped the previously deferred fourth DragonScale mechanism and completed the opt-in DragonScale set described in `[[DragonScale Memory]]`.
|
||||
|
||||
No git tag was created for v1.5.0, v1.5.1, or v1.6.0.
|
||||
|
||||
No push to `origin/main` happened during this release cycle.
|
||||
|
||||
`git tag` verifies that only pre-DragonScale tags exist locally:
|
||||
|
||||
- `v1.1`
|
||||
- `v1.4.0`
|
||||
- `v1.4.1`
|
||||
- `v1.4.2`
|
||||
- `v1.4.3`
|
||||
|
||||
## Phase Timeline For 2026-04-24
|
||||
|
||||
### Morning: Phase 3.5 to v1.5.0
|
||||
|
||||
This was the cross-phase hardening release.
|
||||
|
||||
The goal was to close the 10 hold-ship items found by the holistic audit across the earlier DragonScale phases.
|
||||
|
||||
The release added the missing installer, test harness, and changelog artifacts that made the extension reproducible instead of partially documented.
|
||||
|
||||
Mechanism 4 remained intentionally unshipped at this point.
|
||||
|
||||
The spec still marked it as not implemented, and `/autoresearch` was unchanged.
|
||||
|
||||
The release also synchronized plugin and marketplace version strings to `1.5.0`.
|
||||
|
||||
### Afternoon: Phase 3.6 to v1.5.1
|
||||
|
||||
This was a targeted hardening point release.
|
||||
|
||||
The work did not expand scope.
|
||||
|
||||
It corrected five issues that mattered for correctness, consistency, or security:
|
||||
|
||||
- tiling report path confinement
|
||||
- rollout baseline date
|
||||
- AGENTS skill-table and compatibility wording
|
||||
- wiki-ingest wording about immutable `.raw/` versus maintained manifest
|
||||
- install guide version drift
|
||||
|
||||
The result was a smaller, cleaner release state before Mechanism 4 moved from proposal to shipped code.
|
||||
|
||||
### Late: Phase 4 to v1.6.0
|
||||
|
||||
This was the feature release that shipped boundary-first autoresearch as DragonScale Mechanism 4.
|
||||
|
||||
The new scorer computes frontier candidates from the wikilink graph and exposes them when `/autoresearch` is invoked without a topic in a DragonScale-enabled vault.
|
||||
|
||||
The mode remained opt-in and was labeled as agenda control throughout the implementation and documentation.
|
||||
|
||||
Versions were then synced to `1.6.0` in `plugin.json` and `marketplace.json`.
|
||||
|
||||
## What Shipped In v1.5.0
|
||||
|
||||
### Added
|
||||
|
||||
- `skills/wiki-fold/` as the shipped opt-in fold operator for Mechanism 1. The changelog describes it as extractive and structurally idempotent, with dry-run by default and explicit commit mode.
|
||||
- `scripts/allocate-address.sh` and the `address: c-NNNNNN` convention for Mechanism 2. The allocator is flock-guarded and supports re-ingest idempotency through `.raw/.manifest.json address_map`.
|
||||
- `scripts/tiling-check.py` for Mechanism 3. The checker uses local `nomic-embed-text` through ollama and exposes conservative seeded thresholds for duplicate-page review.
|
||||
- `wiki/concepts/DragonScale Memory.md` as the full design spec for the extension at v0.3 during this release.
|
||||
- `bin/setup-dragonscale.sh` as the idempotent DragonScale installer.
|
||||
- a reproducible `tests/` suite for allocator and tiling checks, runnable through `make test`
|
||||
- `Makefile` developer targets for testing, setup, and cleanup
|
||||
- `CHANGELOG.md` as the first explicit release ledger for this branch of work
|
||||
|
||||
### Changed
|
||||
|
||||
- `hooks/hooks.json` stages `.vault-meta/` in addition to `wiki/` and `.raw/`, so DragonScale runtime state is captured by the auto-commit hook
|
||||
- `skills/wiki-ingest/SKILL.md` and `skills/wiki-lint/SKILL.md` gained opt-in DragonScale sections behind feature detection, while preserving default behavior for vaults that have not adopted DragonScale
|
||||
- `agents/wiki-ingest.md` added the single-writer rule for address assignment
|
||||
- `agents/wiki-lint.md` documented Address Validation and Semantic Tiling checks
|
||||
- stale `allowed-tools` frontmatter was removed from `wiki-ingest` and `wiki-lint` to match the kepano-style `name` plus `description` convention for those files
|
||||
- version strings were synced across plugin metadata and documentation
|
||||
|
||||
### Security
|
||||
|
||||
`scripts/tiling-check.py` defaults `OLLAMA_URL` to localhost only.
|
||||
|
||||
Remote endpoints require the `--allow-remote-ollama` flag.
|
||||
|
||||
Symlinks and vault-root escapes are rejected before any read.
|
||||
|
||||
### Explicitly Not In v1.5.0
|
||||
|
||||
Mechanism 4 was still a future proposal in this release.
|
||||
|
||||
The changelog states that boundary-first autoresearch did not ship in v1.5.0 and that `skills/autoresearch/SKILL.md` was unchanged.
|
||||
|
||||
That matters because the same day later reversed this state in v1.6.0.
|
||||
|
||||
## What Shipped In v1.5.1
|
||||
|
||||
v1.5.1 was intentionally narrow.
|
||||
|
||||
It fixed five concrete issues and did not introduce a new mechanism.
|
||||
|
||||
### Fixed
|
||||
|
||||
- `scripts/tiling-check.py`: the `--report PATH` flag is now resolved against `VAULT_ROOT` and rejected if it escapes, preventing accidental or hostile writes outside the vault
|
||||
- `.vault-meta/legacy-pages.txt`: rollout baseline corrected from `2026-04-24` to `2026-04-23`, which matches the earliest addressed page in the seed vault
|
||||
- `AGENTS.md`: `wiki-fold` added to the skills table, and the blanket statement about all skills using only `name` and `description` was narrowed to newer skills only
|
||||
- `skills/wiki-ingest/SKILL.md`: clarified the difference between immutable user-dropped source documents in `.raw/` and the maintained `.raw/.manifest.json`
|
||||
- `docs/install-guide.md`: version updated from `1.2.0` to `1.5.0`, with a DragonScale optional-install callout
|
||||
|
||||
### Why v1.5.1 Existed
|
||||
|
||||
The log entry describes this as pre-Phase-4 hardening.
|
||||
|
||||
That is the right framing.
|
||||
|
||||
It reduced drift across docs, setup state, and security behavior before the Mechanism 4 rollout.
|
||||
|
||||
## What Shipped In v1.6.0
|
||||
|
||||
### Added
|
||||
|
||||
- boundary-first autoresearch as DragonScale Mechanism 4, still opt-in
|
||||
- `scripts/boundary-score.py`, which computes `(out_degree - in_degree) * recency_weight` over the wikilink graph
|
||||
- `/autoresearch` without a topic now offers the top five frontier pages as candidate research targets when DragonScale is present
|
||||
- `tests/test_boundary_score.py` with 35 unit tests covering parsing, recency weight, wikilink extraction, graph construction, scoring, and CLI behavior
|
||||
- `make test-boundary`, integrated into `make test`
|
||||
|
||||
### Changed
|
||||
|
||||
- `skills/autoresearch/SKILL.md` gained a Topic Selection section with explicit, boundary-first, and user-ask paths
|
||||
- `commands/autoresearch.md` documents no-topic usage for the two relevant modes
|
||||
- `wiki/concepts/DragonScale Memory.md` flipped Mechanism 4 from not implemented to shipped, added the exact scoring formula, and bumped the spec to v0.4
|
||||
- version metadata was synced to `1.6.0` across plugin metadata
|
||||
|
||||
### Scope And Behavior
|
||||
|
||||
The log entry is more detailed than the changelog and records the operating constraints clearly:
|
||||
|
||||
- the mode is opt-in
|
||||
- the mode is labeled as agenda control
|
||||
- helper failure falls back to asking the user
|
||||
- self-loops, unresolved targets, meta-targets, symlinks, and vault escapes are excluded
|
||||
- code-fence parsing handles both backticks and tildes with length-aware closure rules
|
||||
- stale pages approach zero recency weight instead of receiving a floor
|
||||
|
||||
### Why v1.6.0 Matters
|
||||
|
||||
This is the release that completed the originally proposed four-part DragonScale design in shipped form.
|
||||
|
||||
It also changed `/autoresearch` from topic-only operation to a dual-mode flow that can surface candidate frontiers while still keeping user choice explicit.
|
||||
|
||||
## DragonScale Mechanisms: Opt-In Status
|
||||
|
||||
All four mechanisms are opt-in.
|
||||
|
||||
No mechanism is always-on for base vault adopters.
|
||||
|
||||
1. Fold operator (Mechanism 1). Shipped as `skills/wiki-fold/`. Dry-run verified. No fold committed in this vault.
|
||||
2. Deterministic page addresses (Mechanism 2). Shipped via `scripts/allocate-address.sh` and `address: c-NNNNNN`. Feature-detected by ingest and lint flows.
|
||||
3. Semantic tiling lint (Mechanism 3). Shipped via `scripts/tiling-check.py`. Uses local ollama embedding flow and remains optional.
|
||||
4. Boundary-first autoresearch (Mechanism 4). Shipped in v1.6.0 via `scripts/boundary-score.py` and no-topic `/autoresearch` candidate selection.
|
||||
|
||||
## Verified New Files Mentioned In This Session
|
||||
|
||||
The following files were explicitly requested for verification and do exist in the repository:
|
||||
|
||||
- `scripts/boundary-score.py`: yes. New Mechanism 4 scorer in v1.6.0.
|
||||
- `tests/test_boundary_score.py`: yes. New Mechanism 4 unit tests in v1.6.0.
|
||||
- `bin/setup-dragonscale.sh`: yes. New opt-in installer in v1.5.0.
|
||||
- `CHANGELOG.md`: yes. Created in v1.5.0.
|
||||
- `Makefile`: yes. Created in v1.5.0 and later extended in v1.6.0.
|
||||
|
||||
Additional new files recorded in the 2026-04-24 log for Phase 3.5 also include:
|
||||
|
||||
- `tests/test_allocate_address.sh`
|
||||
- `tests/test_tiling_check.py`
|
||||
|
||||
## Testing And Validation Notes
|
||||
|
||||
The release log gives exact validation points that are worth preserving here.
|
||||
|
||||
For v1.5.0:
|
||||
|
||||
- `make test` ran 12 shell assertions for the allocator
|
||||
- `make test` ran 18 Python assertions for tiling-check
|
||||
- no ollama dependency was required for those core tests
|
||||
|
||||
For v1.6.0:
|
||||
|
||||
- `tests/test_boundary_score.py` added 35 unit tests
|
||||
- `make test-boundary` was added and folded into `make test`
|
||||
|
||||
The session also records adversarial review rounds for each phase:
|
||||
|
||||
- Phase 3 reached final verdict `10/10 accept`
|
||||
- Phase 3.5 recorded `5/5 accept` on the doc and agent fixes plus `10/10 accept` on the final holistic audit pass
|
||||
- Phase 4 reached pass after three adversarial rounds
|
||||
|
||||
Those review outcomes explain why the day was split into a hardening release, a point release, and then the final feature release.
|
||||
|
||||
## Git State And Release State
|
||||
|
||||
### Version State
|
||||
|
||||
Local metadata was bumped to `1.5.0`, then `1.5.1`, then `1.6.0` across the release cycle.
|
||||
|
||||
The user explicitly noted that v1.6.0 shipped locally and that no release tag exists for it.
|
||||
|
||||
Current repo checks support that statement.
|
||||
|
||||
### Tag State
|
||||
|
||||
`git tag` returns:
|
||||
|
||||
- `v1.1`
|
||||
- `v1.4.0`
|
||||
- `v1.4.1`
|
||||
- `v1.4.2`
|
||||
- `v1.4.3`
|
||||
|
||||
There is no local tag for `v1.5.0`, `v1.5.1`, or `v1.6.0`.
|
||||
|
||||
### Push State
|
||||
|
||||
The 2026-04-24 log entries repeatedly state `No push` or `no push`.
|
||||
|
||||
This release session remained local.
|
||||
|
||||
There was no push to `origin/main`.
|
||||
|
||||
### DragonScale Commit Range
|
||||
|
||||
The earliest DragonScale-labeled commit in repository history is:
|
||||
|
||||
- `16d9923` `feat: add flock-guarded address allocator for DragonScale Mechanism 2`
|
||||
|
||||
The latest commit in the release-phase DragonScale range before later wiki auto-commits is:
|
||||
|
||||
- `09399ae` `chore: bump to v1.6.0 with Phase 4 + Phase 3.6 CHANGELOG entries`
|
||||
|
||||
For the feature endpoint specifically, the latest DragonScale mechanism commit is:
|
||||
|
||||
- `ad1a1d0` `feat: autoresearch integrates DragonScale Mechanism 4 (opt-in)`
|
||||
|
||||
This page treats `16d9923` through `09399ae` as the practical release-session range, because the latter is the final version-sync commit that closed the feature release.
|
||||
|
||||
## Key Lessons
|
||||
|
||||
These are pulled from the `wiki/hot.md` Key Lessons section current at the time of this session.
|
||||
|
||||
1. Cross-phase audits are essential. Individual phase reviews miss drift between phases.
|
||||
2. Opt-in feature detection (`[ -x script ] && [ -f state ]`) preserves default plugin behavior for adopters and non-adopters alike.
|
||||
3. PostToolUse hook matcher is `Write|Edit`. Bash writes do not fire it. Scripts that mutate tracked state must be Bash-only to avoid side-effect commits.
|
||||
4. Seed-vault self-consistency matters. If the spec says post-rollout pages need addresses, the concept page itself has to have one.
|
||||
5. Codex adversarial review rounds stop when the punch list is empty, not when the author feels done.
|
||||
|
||||
## Session Shape Compared With v1.4
|
||||
|
||||
The earlier `[[claude-obsidian-v1.4-release-session]]` documented a broad ecosystem-response cycle that bundled research, audit response, style cleanup, security history rewrite, and a plugin install hotfix.
|
||||
|
||||
This 2026-04-24 session was narrower and more implementation-focused.
|
||||
|
||||
The main pattern was:
|
||||
|
||||
- complete the missing hardening work for existing DragonScale mechanisms
|
||||
- correct the remaining drift with a point release
|
||||
- then ship the previously deferred fourth mechanism
|
||||
|
||||
That sequencing was justified by the log and changelog.
|
||||
|
||||
Mechanism 4 was not simply appended to an unstable tree.
|
||||
|
||||
It was delayed until the earlier mechanism set had been hardened and the docs aligned.
|
||||
|
||||
## What This Session Did Not Do
|
||||
|
||||
It did not create release tags for the three versions shipped that day.
|
||||
|
||||
It did not push any of the DragonScale release work to `origin/main`.
|
||||
|
||||
It did not make DragonScale mandatory for users who only want the base wiki plugin.
|
||||
|
||||
It did not change the fact that all DragonScale mechanisms remain feature-detected and opt-in.
|
||||
|
||||
## Canonical Release Narrative
|
||||
|
||||
If this day needs to be summarized in one paragraph later, the clean version is this:
|
||||
|
||||
Morning v1.5.0 made DragonScale reproducible and internally consistent. Afternoon v1.5.1 cleaned up the remaining hardening issues. Late v1.6.0 shipped the previously deferred boundary-first autoresearch mechanism, completing the four-part DragonScale extension without changing the plugin's opt-in default posture.
|
||||
|
||||
## Verified Facts Worth Reusing
|
||||
|
||||
- `CHANGELOG.md` contains explicit entries for `[1.5.0]`, `[1.5.1]`, and `[1.6.0]`
|
||||
- `wiki/log.md` contains same-day entries for Phase 3.5, Phase 3.6, and Phase 4
|
||||
- `plugin.json` and `marketplace.json` are at `1.6.0`
|
||||
- the DragonScale installer exists as `bin/setup-dragonscale.sh`
|
||||
- the Mechanism 4 scorer exists as `scripts/boundary-score.py`
|
||||
- the Mechanism 4 tests exist as `tests/test_boundary_score.py`
|
||||
- `Makefile` and `CHANGELOG.md` exist
|
||||
- only pre-DragonScale tags are present locally
|
||||
- there was no push to `origin/main`
|
||||
|
||||
## Closing Note
|
||||
|
||||
The important distinction for future sessions is that `v1.5.0`, `v1.5.1`, and `v1.6.0` are real local release states with changelog and log backing, but they are not git-tagged releases in this repository snapshot.
|
||||
@@ -0,0 +1,67 @@
|
||||
---
|
||||
type: meta
|
||||
title: "Boundary Frontier Snapshot (2026-04-24)"
|
||||
updated: 2026-04-24
|
||||
tags:
|
||||
- meta
|
||||
- dragonscale
|
||||
- mechanism-4
|
||||
status: snapshot
|
||||
related:
|
||||
- "[[DragonScale Memory]]"
|
||||
- "[[log]]"
|
||||
- "[[hot]]"
|
||||
---
|
||||
|
||||
# Boundary Frontier Snapshot (2026-04-24)
|
||||
|
||||
Navigation: [[index]] | [[log]] | [[DragonScale Memory]]
|
||||
|
||||
First end-to-end run of DragonScale Mechanism 4 (`scripts/boundary-score.py`) against this vault. Generated from `./scripts/boundary-score.py --json --top 7` at 2026-04-24T08:49:16Z.
|
||||
|
||||
## What this is
|
||||
|
||||
This is a scoring snapshot, not a prescription. The boundary score heuristic surfaces pages that are outward-pointing and recently-touched as candidates for `/autoresearch` to extend. It is explicitly agenda-control per the [[DragonScale Memory]] spec, v0.4, Mechanism 4: the ranking shapes what the agent researches next, and a user should accept, override, or decline any candidate.
|
||||
|
||||
Formula: `boundary_score(p) = (out_degree(p) - in_degree(p)) * exp(-age_days / 30)`.
|
||||
|
||||
No recency floor. Pages older than ~90 days approach zero weight by design, so a stale hub does not dominate the frontier.
|
||||
|
||||
## Frontier (top 7, score > 0)
|
||||
|
||||
| # | score | out | in | age_d | title | path |
|
||||
|---|---|---|---|---|---|---|
|
||||
| 1 | 4.693 | 8 | 0 | 16 | Claude + Obsidian Ecosystem Research | wiki/sources/claude-obsidian-ecosystem-research.md |
|
||||
| 2 | 4.000 | 4 | 0 | 0 | DragonScale Memory | wiki/concepts/DragonScale Memory.md |
|
||||
| 3 | 1.702 | 3 | 0 | 17 | How does the LLM Wiki pattern work? | wiki/questions/How does the LLM Wiki pattern work.md |
|
||||
| 4 | 1.135 | 2 | 0 | 17 | Wiki vs RAG | wiki/comparisons/Wiki vs RAG.md |
|
||||
| 5 | 0.717 | 1 | 0 | 10 | SEO Drift Monitoring | wiki/concepts/SEO Drift Monitoring.md |
|
||||
| 6 | 0.717 | 1 | 0 | 10 | Search Experience Optimization (SXO) | wiki/concepts/Search Experience Optimization.md |
|
||||
| 7 | 0.717 | 1 | 0 | 10 | Semantic Topic Clustering | wiki/concepts/Semantic Topic Clustering.md |
|
||||
|
||||
22 scoreable pages total (meta, fold, and index pages excluded).
|
||||
|
||||
## Reading the result
|
||||
|
||||
- Row 1 is the ecosystem research source. It links out to eight entity pages and is not linked back, which is expected for a raw source: it seeds the graph rather than being referenced by it. The score is correct; following this candidate would extend one of its eight entities rather than re-examining the source itself.
|
||||
- Row 2 (DragonScale Memory) has age_days=0 and zero in-degree. This is a fresh concept page not yet linked back by any discussion. A legitimate frontier signal.
|
||||
- Rows 3-7 are older pages (~10 to 17 days) with modest out-degree. The recency decay correctly damps them relative to fresh pages.
|
||||
- No page ranks on pure recency with zero out-degree, because the formula multiplies degree-delta by recency.
|
||||
|
||||
## Calibration note
|
||||
|
||||
The halflife of 30 days was chosen as a default, not a tuned value. If this vault grows past ~100 pages and out-degree patterns change, the halflife should be reviewed alongside the weighting between degree and recency. The [[DragonScale Memory]] spec explicitly tags these as seed values, not literature-backed.
|
||||
|
||||
## Reproduce
|
||||
|
||||
```
|
||||
./scripts/boundary-score.py --json --top 7
|
||||
```
|
||||
|
||||
Read-only. Requires python3 only. No DragonScale setup needed to run the scorer itself.
|
||||
|
||||
## Connections
|
||||
|
||||
- [[DragonScale Memory]]: spec, Mechanism 4
|
||||
- [[log]]: operation log
|
||||
- [[hot]]: recent context
|
||||
|
After Width: | Height: | Size: 403 KiB |
|
After Width: | Height: | Size: 363 KiB |
|
After Width: | Height: | Size: 847 KiB |
|
After Width: | Height: | Size: 1.3 MiB |
@@ -0,0 +1,116 @@
|
||||
---
|
||||
type: session
|
||||
title: "claude-obsidian v1.2.0 Release Session"
|
||||
created: 2026-04-07
|
||||
updated: 2026-04-07
|
||||
tags:
|
||||
- session
|
||||
- release
|
||||
- plugin
|
||||
- github
|
||||
status: evergreen
|
||||
related:
|
||||
- "[[getting-started]]"
|
||||
- "[[index]]"
|
||||
- "[[overview]]"
|
||||
- "[[LLM Wiki Pattern]]"
|
||||
---
|
||||
|
||||
# claude-obsidian v1.2.0 Release Session
|
||||
|
||||
Full build, audit, polish, and community release of the claude-obsidian plugin + vault kit. Previously named `cosmic-brain`.
|
||||
|
||||
---
|
||||
|
||||
## What Was Built
|
||||
|
||||
### Phase 1 — Critical Fixes
|
||||
- `marketplace.json`: version corrected `1.0.0→1.2.0`, owner metadata updated
|
||||
- `main.canvas`: removed 5 broken file node references (gitignored files that don't exist for community users)
|
||||
- `community-plugins.json`: deduplicated from 6→4 canonical entries: `[excalidraw, banners, calendar, thino]`
|
||||
|
||||
### Phase 2 — Vault Onboarding
|
||||
- `wiki/getting-started.md`: new onboarding page inside the vault (3-step quick start, hot cache explanation, command reference, navigation links)
|
||||
- `wiki/index.md`: Entities, Questions, Comparisons sections populated with existing seed pages
|
||||
- `wiki/meta/dashboard.md`: Dataview queries fixed — was querying `answer_quality` and `confidence` fields that don't exist in seed pages; replaced with `status` and `updated`
|
||||
- `CLAUDE.md`: placeholder text replaced with actual vault description
|
||||
- `wiki/canvases/welcome.canvas`: CTA node added pointing to getting-started and `/wiki`
|
||||
|
||||
### Phase 3 — README + Docs
|
||||
- README: complete pre-installed plugins table, CSS snippets section, Banner usage section, file structure updated
|
||||
- `bin/setup-vault.sh`: success message now lists all 4 pre-installed plugins and 3 CSS snippets
|
||||
|
||||
### Phase 4 — PDF Install Guide
|
||||
- `docs/install-guide.md`: full printable install guide (prerequisites, 3 install options, first steps, command reference, plugin guide, MCP setup, troubleshooting)
|
||||
- `docs/install-guide.pdf`: 159KB, generated via `npx md-to-pdf`
|
||||
|
||||
### Phase 5 — Version Bump
|
||||
- `plugin.json` and `marketplace.json` bumped to `1.2.0`
|
||||
|
||||
---
|
||||
|
||||
## Rename: cosmic-brain → claude-obsidian
|
||||
|
||||
Full project rename executed:
|
||||
- GitHub repos renamed: `AgriciDaniel/cosmic-brain` → `AI-Marketing-Hub/claude-obsidian` (public), `avalonreset-pro/cosmic-brain` → `avalonreset-pro/claude-obsidian` (private)
|
||||
- Local directory: `~/cosmic-brain/` → `~/claude-obsidian/`
|
||||
- All text references updated across 14 files via sed
|
||||
- `wiki/meta/cosmic-brain-cover.gif` renamed to `wiki/meta/claude-obsidian-cover.gif`
|
||||
|
||||
---
|
||||
|
||||
## Legal & Security
|
||||
|
||||
### Security Audit
|
||||
- No API keys, tokens, or secrets found in any tracked file
|
||||
- No private keys or certificates
|
||||
- All credential references in docs are placeholder values
|
||||
- Excalidraw `main.js` correctly NOT tracked despite audit agent claiming otherwise
|
||||
|
||||
### Legal Fixes
|
||||
- `LICENSE`: MIT license file created (was declared in plugin.json but file was missing)
|
||||
- `ITS-Dataview-Cards.css` + `ITS-Image-Adjustments.css`: GPL-2.0 attribution headers added
|
||||
|
||||
### .gitignore Tightened
|
||||
Added rules to prevent future accidental commits of: video files (`*.mkv`, `*.mp4`), transcripts, scratch canvases (`Untitled *.canvas`, `*Images.canvas`), and personal images in vault root.
|
||||
|
||||
---
|
||||
|
||||
## Visual / README
|
||||
|
||||
### GIFs and Images
|
||||
- New Claude Obsidian branded assets added (16x9 cover GIF, 1x1 GIF, static PNGs)
|
||||
- Compressed: `gif-cover-16x9.gif` 2.6MB→1.3MB (50%), `gif-1x1.gif` 2.6MB→848KB (68%) — via FFmpeg palette optimization, scaled to 960px/640px, 15fps, 128-color palette
|
||||
- Example screenshots added: `image-example-graph-view.png`, `image-example-wiki-map-view.png`
|
||||
|
||||
### README Structure (top to bottom)
|
||||
1. `claude-obsidian-gif-cover-16x9.gif` — header
|
||||
2. Description text
|
||||
3. `welcome-canvas.gif` — What It Does demo (full width)
|
||||
4. Descriptive paragraphs
|
||||
5. `image-example-graph-view.png` + `image-example-wiki-map-view.png` — side by side screenshots
|
||||
6. Quick Start → Commands → Cross-Project → Six Modes → What Gets Created → MCP → Plugins → CSS Snippets → Banner → File Structure → AutoResearch → Seed Vault
|
||||
7. `wiki-graph-grow.gif` + `workflow-loop.gif` — bottom of Seed Vault section
|
||||
|
||||
---
|
||||
|
||||
## Repository State
|
||||
|
||||
| Repo | Visibility | URL |
|
||||
|------|-----------|-----|
|
||||
| AI-Marketing-Hub/claude-obsidian | Public | https://github.com/AI-Marketing-Hub/claude-obsidian |
|
||||
| avalonreset-pro/claude-obsidian | Private | https://github.com/avalonreset-pro/claude-obsidian |
|
||||
|
||||
Community install command: `claude plugin install github:AI-Marketing-Hub/claude-obsidian`
|
||||
|
||||
Future updates: `git push origin main && git push community main`
|
||||
|
||||
---
|
||||
|
||||
## Key Decisions
|
||||
|
||||
- **Rename to claude-obsidian**: clearer branding, immediately communicates the Claude + Obsidian pairing
|
||||
- **avalonreset-pro repo is private**: community members only, not public
|
||||
- **Excalidraw main.js excluded from git**: 8MB downloaded by `setup-vault.sh` at setup time
|
||||
- **Bundled plugin redistribution**: acceptable — all 4 plugins are publicly distributed through Obsidian's community plugin system
|
||||
- **GIF compression strategy**: palette reduction (256→128 colors) + resolution scaling gives 50-68% savings with no visible quality loss at GitHub's rendering width
|
||||
@@ -0,0 +1,278 @@
|
||||
---
|
||||
type: session
|
||||
title: "claude-obsidian v1.4 Release Session"
|
||||
created: 2026-04-08
|
||||
updated: 2026-04-08
|
||||
tags:
|
||||
- meta
|
||||
- session
|
||||
- release
|
||||
- audit-response
|
||||
status: evergreen
|
||||
related:
|
||||
- "[[claude-obsidian-ecosystem]]"
|
||||
- "[[cherry-picks]]"
|
||||
- "[[full-audit-and-system-setup-session]]"
|
||||
- "[[claude-obsidian-v1.2.0-release-session]]"
|
||||
- "[[LLM Wiki Pattern]]"
|
||||
sources:
|
||||
- "[[claude-obsidian-ecosystem-research]]"
|
||||
---
|
||||
|
||||
# claude-obsidian v1.4 Release Session
|
||||
|
||||
A complete release cycle covering v1.1, v1.4.0, and v1.4.1. Includes ecosystem research, external audit response, multi-agent compatibility rollout, full em-dash style cleanup, git history scrub for privacy, and a hotfix for the plugin install command syntax.
|
||||
|
||||
## Release Sequence
|
||||
|
||||
| Version | What shipped |
|
||||
|---|---|
|
||||
| v1.1 | URL ingestion, image/vision ingestion, delta tracking manifest, 3 new skills (defuddle, obsidian-bases, obsidian-markdown), multi-depth wiki-query modes, PostToolUse auto-commit hook, removal of invalid `allowed-tools` frontmatter field |
|
||||
| v1.4.0 | Dataview to Bases migration, Canvas JSON 1.0 spec completeness, hooks hardening plus PostCompact, MCP setup hardened with Obsidian CLI option, custom callouts documented, 6 multi-agent bootstrap files, 249 em dashes scrubbed, security-rewrote git history to remove a placeholder email |
|
||||
| v1.4.1 | Hotfix for the wrong plugin install command syntax in README and docs/install-guide.md |
|
||||
|
||||
## v1.1: First Feature Release of This Session
|
||||
|
||||
Shipped in response to an internal quality check against the wider ecosystem (16+ Claude plus Obsidian projects researched, filed in [[claude-obsidian-ecosystem]]). The highest-value features from competing implementations were cherry-picked and shipped as v1.1.
|
||||
|
||||
### New skills (Agent Skills spec compliant)
|
||||
|
||||
- `skills/defuddle/SKILL.md`: strips ads, nav, and clutter from web pages before URL ingestion. Saves 40 to 60 percent on tokens for typical articles.
|
||||
- `skills/obsidian-markdown/SKILL.md`: full reference for Obsidian Flavored Markdown (wikilinks, embeds, all callout types, properties, math, Mermaid). Cross-references kepano/obsidian-skills as the authoritative source.
|
||||
- `skills/obsidian-bases/SKILL.md`: native Obsidian Bases `.base` file syntax. Uses correct `filters/views/formulas` structure (NOT Dataview-style `from/where`). Rewritten mid-session after the first attempt used the wrong syntax.
|
||||
|
||||
### wiki-ingest upgrades
|
||||
|
||||
- **URL ingestion**: passes any `https://` URL directly. Uses WebFetch, optionally pipes through defuddle, saves to `.raw/articles/`, then runs the normal ingest pipeline.
|
||||
- **Image/vision ingestion**: `.png`, `.jpg`, `.gif`, `.webp`, etc. Claude reads the image natively, extracts text via OCR and concepts via vision, saves the description to `.raw/images/`, then ingests.
|
||||
- **Delta tracking**: `.raw/.manifest.json` tracks MD5 hash per source, timestamps, and the pages produced. Re-running ingest on unchanged files skips them automatically. Override with "force ingest".
|
||||
|
||||
### wiki-query multi-depth modes
|
||||
|
||||
Three query tiers:
|
||||
|
||||
- **Quick** (`query quick: ...`): hot.md plus index.md only. About 1,500 tokens. Best for fact lookups.
|
||||
- **Standard** (default): hot plus index plus 3 to 5 relevant pages. About 3,000 tokens. Best for most questions.
|
||||
- **Deep** (`query deep: ...`): full wiki cross-reference plus optional web search supplement. About 8,000+ tokens. Best for synthesis, comparisons, "tell me everything about X".
|
||||
|
||||
### Hook: PostToolUse auto-commit
|
||||
|
||||
Every `Write` or `Edit` tool call to `wiki/` or `.raw/` triggers `git add` and `git commit` automatically. Guarded by `[ -d .git ]` so it never errors in non-git directories, and by `git diff --cached --quiet` so it never creates empty commits. Matcher: `Write|Edit`.
|
||||
|
||||
### Critical fix: `allowed-tools` frontmatter removed
|
||||
|
||||
The Agent Skills spec only supports `name`, `description`, `argument-hint`, `compatibility`, `disable-model-invocation`, `license`, `metadata`, and `user-invokable` fields in SKILL.md frontmatter. The `allowed-tools` field was never valid and was being silently ignored. Removed from all 10 SKILL.md files to match the kepano/obsidian-skills authoritative convention.
|
||||
|
||||
## v1.4.0: External Audit Response
|
||||
|
||||
External auditor delivered a 21-source review (the "compass artifact") against Agent Skills spec, Claude Code hooks, Obsidian v1.9 through v1.12, and JSON Canvas 1.0. Initial audit score: 6.5/10. Many findings were already resolved in v1.1 (the audit was conducted against a snapshot from before that release). The remaining valid findings became v1.4.0. Full findings and prioritization are in [[cherry-picks]].
|
||||
|
||||
### Tier 1: Critical fixes
|
||||
|
||||
**Dataview to Bases migration** (the biggest correctness fix). Obsidian Bases shipped as a core plugin in v1.9.10 (August 2025), providing native database-like views that replace Dataview for most use cases. Created `wiki/meta/dashboard.base` with six views (Recent Activity, Seed Pages, Entities Missing Sources, Open Questions, Comparisons, Sources). Updated `wiki/meta/dashboard.md` to embed the new base file as primary and keep the legacy Dataview queries as optional fallback. Reorganized README plugins section to recommend Bases (core, no install needed) as primary and mark Dataview as optional/legacy.
|
||||
|
||||
**Canvas JSON 1.0 spec completeness**. Added previously missing fields to `skills/canvas/references/canvas-spec.md`:
|
||||
- Group nodes: `background` (string path) and `backgroundStyle` (`cover`, `ratio`, `repeat`)
|
||||
- Edges: `fromEnd` (defaults to `"none"`) and `toEnd` (defaults to `"arrow"`). Asymmetric defaults that produce a single arrow without explicit specification.
|
||||
- Documented the official hex ID convention alongside the descriptive ID alternative.
|
||||
|
||||
### Tier 2: Important improvements
|
||||
|
||||
**Hooks hardening plus PostCompact**. `hooks/hooks.json` updated:
|
||||
|
||||
- SessionStart now uses both `command` and `prompt` types. The command runs `[ -f wiki/hot.md ] && cat wiki/hot.md || true` as the canonical safety check that works in non-vault sessions without erroring. Matcher: `startup|resume`.
|
||||
- **NEW PostCompact hook** re-injects `wiki/hot.md` after context compaction. Critical insight: hook-injected context does NOT survive compaction, only `CLAUDE.md` does. Without this hook the hot cache disappears mid-session after any compact event.
|
||||
- PostToolUse auto-commit now guarded by `[ -d .git ]` in addition to the existing safeguards.
|
||||
- New `hooks/README.md` documents all four hooks plus the known plugin-hooks STDOUT bug (`anthropics/claude-code#10875`) and workarounds.
|
||||
|
||||
**MCP setup hardened**. `skills/wiki/references/mcp-setup.md` now has a `> [!warning]` callout above the `NODE_TLS_REJECT_UNAUTHORIZED: "0"` line explaining that it disables TLS verification process-wide (acceptable for `127.0.0.1` only). Added **Option D: Obsidian CLI** (Obsidian v1.12+) as the recommended alternative that avoids the TLS workaround entirely by using the native CLI via the Bash tool.
|
||||
|
||||
**Custom callouts documented**. The vault defines four custom callout types in `.obsidian/snippets/vault-colors.css`:
|
||||
|
||||
| Callout | Color | Icon | Use for |
|
||||
|---|---|---|---|
|
||||
| `contradiction` | reddish-brown | `lucide-alert-triangle` | New source conflicts with existing claim |
|
||||
| `gap` | beige | `lucide-help-circle` | Topic has no source yet |
|
||||
| `key-insight` | bright blue | `lucide-lightbulb` | Important takeaway worth highlighting |
|
||||
| `stale` | gray | `lucide-clock` | Claim may be outdated |
|
||||
|
||||
Full documentation added to `skills/wiki/references/css-snippets.md` including built-in fallback equivalents for users who do not want the custom CSS. `skills/wiki-ingest/SKILL.md` got an explicit note that `[!contradiction]` depends on the CSS snippet.
|
||||
|
||||
### Tier 3: Multi-agent compatibility (low complexity, high reach)
|
||||
|
||||
Skills are already in the cross-platform Agent Skills format. The only thing missing was adapter files so other AI coding agents could discover them. Added:
|
||||
|
||||
| File | For |
|
||||
|---|---|
|
||||
| `AGENTS.md` | Codex CLI, OpenCode |
|
||||
| `GEMINI.md` | Gemini CLI, Antigravity |
|
||||
| `.cursor/rules/claude-obsidian.mdc` | Cursor (always-on rules) |
|
||||
| `.windsurf/rules/claude-obsidian.md` | Windsurf Cascade |
|
||||
| `.github/copilot-instructions.md` | GitHub Copilot |
|
||||
| `bin/setup-multi-agent.sh` | Idempotent symlink installer that wires up `skills/` into each agent's expected location |
|
||||
|
||||
This turns claude-obsidian into a multi-agent plugin at near-zero compatibility cost. Pattern borrowed from [[Ar9av-obsidian-wiki]] which was the reference implementation for multi-agent support.
|
||||
|
||||
## Style Cleanup: Em Dash Scrub
|
||||
|
||||
Per user preference saved to feedback memory: never use em dashes (U+2014) or `--` as punctuation. Use periods, commas, colons, or parentheses instead. Hyphens in compound words (auto-commit, multi-agent) are fine.
|
||||
|
||||
Wrote a context-aware Python scrubber at `/tmp/scrub_em_dashes.py` with rules:
|
||||
|
||||
- Heading lines (`^#`): em dash becomes `:`
|
||||
- List items (`^-`, `^|`): em dash becomes `:` (for label-description patterns)
|
||||
- Prose: em dash becomes `.` with next word capitalized
|
||||
|
||||
**Result**: 249 em dashes removed across 26 files. Scrubbed every SKILL.md, every doc, every hook file, every bootstrap file, and marketplace.json. Manual smoothing required for:
|
||||
|
||||
- `skills/obsidian-markdown/SKILL.md`: 4 code-block annotation tables where the scrubber produced broken fragments. Converted to proper markdown tables.
|
||||
- `skills/wiki-query/SKILL.md`: 4 "If X. Respond." fragments rewritten as "If X, respond."
|
||||
- `bin/setup-multi-agent.sh`: 1 leftover em dash at end-of-line that the scrubber missed (only matched space-em-space). Plus one awkward echo string fixed.
|
||||
|
||||
The user-facing feedback was clear: "make it proper and natural". The scrubbed prose reads cleaner with the fragmented sentences smoothed out.
|
||||
|
||||
## Security: Email Removal and Git History Rewrite
|
||||
|
||||
A placeholder email `[scrubbed-email]` (which the user confirmed does not exist as a real address) was in `marketplace.json` plus two docs. Removed from working tree first, then rewrote git history to scrub it from all commits.
|
||||
|
||||
**Tool**: `git filter-repo` (available at `~/.pyenv/versions/3.12.4/bin/git-filter-repo`).
|
||||
|
||||
**Two passes required**:
|
||||
|
||||
1. `git filter-repo --replace-text /tmp/email-replacements.txt --force` scrubs blob contents across all commits.
|
||||
2. `git filter-repo --replace-message /tmp/email-msg-replacements.txt --force` scrubs commit messages. The first pass caught 3 occurrences in file contents but missed 1 occurrence in a commit subject line. The second pass caught that.
|
||||
|
||||
**Replacement string**: `[scrubbed-email]==>***REMOVED***`
|
||||
|
||||
**Post-rewrite actions**:
|
||||
- Re-added the `origin` remote that filter-repo removes for safety
|
||||
- Moved `v1.4.0` tag forward to include the security commit (since v1.4.0 had not been consumed yet by any user)
|
||||
- Force-pushed main plus both tags (`v1.1` and `v1.4.0`)
|
||||
- Updated the v1.4.0 GitHub release notes to include a "Security Note" section
|
||||
|
||||
**Verification**: grep across all refs, all blobs, all commit messages returned zero matches for the scrubbed email string. GitHub release bodies checked for same: both v1.1 and v1.4.0 release pages clean.
|
||||
|
||||
**Caveat for other clones**: history rewrite means every commit hash changed. Any other machine or private `community` remote that has the repo still contains the old history. Those need `git fetch && git reset --hard origin/main` or a force push to clean up.
|
||||
|
||||
## v1.4.1: Plugin Install Command Hotfix
|
||||
|
||||
The v1.4.0 README and install guide showed this install command:
|
||||
|
||||
```bash
|
||||
claude plugin install github:AI-Marketing-Hub/claude-obsidian
|
||||
```
|
||||
|
||||
This form does not exist in Claude Code. Users trying it see:
|
||||
|
||||
```
|
||||
Failed to install plugin "github:AI-Marketing-Hub/claude-obsidian": Plugin "github:AI-Marketing-Hub/claude-obsidian" not found in any configured marketplace
|
||||
```
|
||||
|
||||
### The correct install flow (per `code.claude.com/docs/en/plugin-marketplaces`)
|
||||
|
||||
Plugin installation is a **two-step** process:
|
||||
|
||||
```bash
|
||||
# Step 1: add the marketplace catalog
|
||||
claude plugin marketplace add AI-Marketing-Hub/claude-obsidian
|
||||
|
||||
# Step 2: install the plugin from the catalog by name
|
||||
claude plugin install claude-obsidian@claude-obsidian-marketplace
|
||||
```
|
||||
|
||||
Where `claude-obsidian` is the plugin name (from `plugin.json`) and `claude-obsidian-marketplace` is the marketplace name (from `marketplace.json`). The `@` delimiter separates them.
|
||||
|
||||
### Why the confusion existed
|
||||
|
||||
There is no `claude plugin install github:owner/repo` shortcut. The marketplace abstraction is mandatory: Claude Code always fetches via a registered marketplace. A single-repo plugin like claude-obsidian is both the marketplace host and the plugin host, and the user must register the marketplace first before installing any plugin from it.
|
||||
|
||||
### Related CLI commands (useful to know)
|
||||
|
||||
| Command | What it does |
|
||||
|---|---|
|
||||
| `claude plugin marketplace list` | Show all registered marketplaces |
|
||||
| `claude plugin marketplace add owner/repo` | Register a new marketplace from a GitHub repo |
|
||||
| `claude plugin marketplace update <name>` | Refresh the marketplace catalog and re-clone |
|
||||
| `claude plugin marketplace remove <name>` | Unregister a marketplace (also uninstalls its plugins) |
|
||||
| `claude plugin install <plugin>@<marketplace>` | Install a specific plugin |
|
||||
| `claude plugin list` | Show all installed plugins and their status |
|
||||
| `claude plugin validate .` | Validate a marketplace.json, plugin.json, and frontmatter |
|
||||
|
||||
### Files changed in v1.4.1
|
||||
|
||||
- `README.md`: Option 2 install section rewritten with two-step flow
|
||||
- `docs/install-guide.md`: same correction
|
||||
- `.claude-plugin/plugin.json`: 1.4.0 to 1.4.1
|
||||
- `.claude-plugin/marketplace.json`: both `metadata.version` and `plugins[0].version` bumped to 1.4.1
|
||||
|
||||
### Confirmed working
|
||||
|
||||
After v1.4.1 was published, the user ran the corrected commands and saw:
|
||||
|
||||
```
|
||||
claude-obsidian@claude-obsidian-marketplace
|
||||
Version: 1.4.1
|
||||
Scope: user
|
||||
Status: ✔ enabled
|
||||
```
|
||||
|
||||
v1.4.1 installed at user scope and enabled.
|
||||
|
||||
## Key Lessons (Worth Remembering)
|
||||
|
||||
1. **Plugin install is always two-step**. There is no github shorthand form. `marketplace add` then `install plugin@marketplace`.
|
||||
2. **`allowed-tools` is not a valid skill frontmatter field**. The Agent Skills spec only accepts `name`, `description`, `argument-hint`, `compatibility`, `disable-model-invocation`, `license`, `metadata`, `user-invokable`. kepano/obsidian-skills uses only `name` and `description` which is the gold standard convention.
|
||||
3. **Obsidian Bases uses `filters/views/formulas`, not Dataview-style `from/where`**. Easy to confuse. Always check `help.obsidian.md/bases/syntax` for the current syntax.
|
||||
4. **Canvas JSON 1.0 has asymmetric edge defaults**. `fromEnd` defaults to `"none"`, `toEnd` defaults to `"arrow"`. Omitting both produces a single arrow pointing from source to target.
|
||||
5. **Hook-injected context does not survive context compaction**. Only `CLAUDE.md` does. Any plugin that injects context via SessionStart hooks should also add a PostCompact hook to restore it mid-session.
|
||||
6. **`git filter-repo` needs two passes for full scrub**. `--replace-text` handles blob contents, `--replace-message` handles commit messages. Running only one leaves traces.
|
||||
7. **`git filter-repo` removes the `origin` remote for safety**. Must re-add it manually before force-pushing.
|
||||
8. **Marketplace name and plugin name can differ**. Our marketplace is `claude-obsidian-marketplace`, our plugin is `claude-obsidian`. The `@` delimiter disambiguates them.
|
||||
9. **Style preference: no em dashes anywhere**. Periods, commas, colons, or parentheses instead. Applies to all prose, commit messages, release notes, file content. Hyphens in compound words are fine.
|
||||
|
||||
## Files Created in This Session
|
||||
|
||||
Summary of everything new or newly created:
|
||||
|
||||
| Path | Type | Purpose |
|
||||
|---|---|---|
|
||||
| `skills/defuddle/SKILL.md` | skill | Web page cleaner |
|
||||
| `skills/obsidian-bases/SKILL.md` | skill | Obsidian Bases syntax |
|
||||
| `skills/obsidian-markdown/SKILL.md` | skill | Full Obsidian syntax reference |
|
||||
| `wiki/meta/dashboard.base` | bases dashboard | 6-view Bases dashboard |
|
||||
| `wiki/comparisons/claude-obsidian-ecosystem.md` | comparison | 16+ project feature matrix |
|
||||
| `wiki/concepts/cherry-picks.md` | concept | Prioritized feature backlog |
|
||||
| `wiki/sources/claude-obsidian-ecosystem-research.md` | source | Research summary |
|
||||
| `wiki/entities/Ar9av-obsidian-wiki.md` | entity | Multi-agent reference implementation |
|
||||
| `wiki/entities/Nexus-claudesidian-mcp.md` | entity | Native Obsidian plugin |
|
||||
| `wiki/entities/ballred-obsidian-claude-pkm.md` | entity | Goal cascade PKM |
|
||||
| `wiki/entities/rvk7895-llm-knowledge-bases.md` | entity | Multi-depth query reference |
|
||||
| `wiki/entities/kepano-obsidian-skills.md` | entity | Authoritative skill reference |
|
||||
| `wiki/entities/Claudian-YishenTu.md` | entity | Native Obsidian plugin |
|
||||
| `.raw/claude-obsidian-ecosystem-research.md` | raw source | Ecosystem research dump |
|
||||
| `hooks/README.md` | doc | Hook documentation |
|
||||
| `AGENTS.md` | bootstrap | Codex CLI / OpenCode |
|
||||
| `GEMINI.md` | bootstrap | Gemini CLI / Antigravity |
|
||||
| `.cursor/rules/claude-obsidian.mdc` | bootstrap | Cursor rules |
|
||||
| `.windsurf/rules/claude-obsidian.md` | bootstrap | Windsurf Cascade |
|
||||
| `.github/copilot-instructions.md` | bootstrap | GitHub Copilot |
|
||||
| `bin/setup-multi-agent.sh` | script | Multi-agent symlink installer |
|
||||
|
||||
## Current Plugin State
|
||||
|
||||
- **Plugin installed**: `claude-obsidian@claude-obsidian-marketplace` version `1.4.1`, user scope, enabled
|
||||
- **Releases on GitHub**: `v1.1`, `v1.4.0`, `v1.4.1`
|
||||
- **10 skills** in `skills/`: wiki, wiki-ingest, wiki-query, wiki-lint, save, autoresearch, canvas, defuddle, obsidian-bases, obsidian-markdown
|
||||
- **4 lifecycle hooks** in `hooks/hooks.json`: SessionStart, PostCompact, PostToolUse, Stop
|
||||
- **6 multi-agent bootstrap files** covering Codex, OpenCode, Gemini, Cursor, Windsurf, GitHub Copilot
|
||||
- **2 agents** in `agents/`: wiki-ingest, wiki-lint
|
||||
|
||||
## Deferred to v1.5.0
|
||||
|
||||
From the audit cherry-picks list, these items were identified but intentionally not included in v1.4.0:
|
||||
|
||||
- `/adopt` command for importing existing vaults (medium complexity, adds new surface)
|
||||
- Vault graph analysis enhancement to wiki-lint (hub pages, cross-domain bridges, dead-ends)
|
||||
- Semantic search via qmd MCP server (optional external dependency)
|
||||
- Marp slide output from wiki queries (niche)
|
||||
- Thinking mode vs Writing mode UX experiment
|
||||
@@ -0,0 +1,78 @@
|
||||
filters:
|
||||
and:
|
||||
- file.inFolder("wiki")
|
||||
- file.ext == "md"
|
||||
formulas:
|
||||
age_days: (now() - file.mtime).days
|
||||
properties:
|
||||
type:
|
||||
displayName: Type
|
||||
status:
|
||||
displayName: Status
|
||||
updated:
|
||||
displayName: Updated
|
||||
formula.age_days:
|
||||
displayName: Days Since Edit
|
||||
views:
|
||||
- type: table
|
||||
name: Recent Activity
|
||||
groupBy:
|
||||
property: type
|
||||
direction: ASC
|
||||
order:
|
||||
- file.name
|
||||
- type
|
||||
- status
|
||||
- updated
|
||||
- formula.age_days
|
||||
limit: 15
|
||||
- type: list
|
||||
name: Seed Pages (Need Development)
|
||||
filters:
|
||||
and:
|
||||
- status == "seed"
|
||||
order:
|
||||
- file.name
|
||||
- updated
|
||||
- type: list
|
||||
name: Entities Missing Sources
|
||||
filters:
|
||||
and:
|
||||
- file.inFolder("wiki/entities")
|
||||
- or:
|
||||
- "!sources"
|
||||
- sources.length == 0
|
||||
order:
|
||||
- file.name
|
||||
- type: list
|
||||
name: Open Questions
|
||||
filters:
|
||||
and:
|
||||
- file.inFolder("wiki/questions")
|
||||
- or:
|
||||
- status == "developing"
|
||||
- status == "seed"
|
||||
order:
|
||||
- file.name
|
||||
- updated
|
||||
- type: table
|
||||
name: Comparisons
|
||||
filters:
|
||||
and:
|
||||
- file.inFolder("wiki/comparisons")
|
||||
order:
|
||||
- file.name
|
||||
- verdict
|
||||
- updated
|
||||
- type: table
|
||||
name: Sources
|
||||
filters:
|
||||
and:
|
||||
- file.inFolder("wiki/sources")
|
||||
- type == "source"
|
||||
order:
|
||||
- file.name
|
||||
- author
|
||||
- date_published
|
||||
- updated
|
||||
limit: 10
|
||||
@@ -0,0 +1,68 @@
|
||||
---
|
||||
type: meta
|
||||
title: "Dashboard"
|
||||
updated: 2026-04-08
|
||||
tags:
|
||||
- meta
|
||||
- dashboard
|
||||
status: evergreen
|
||||
related:
|
||||
- "[[index]]"
|
||||
- "[[overview]]"
|
||||
- "[[log]]"
|
||||
- "[[concepts/_index]]"
|
||||
- "[[Compounding Knowledge]]"
|
||||
---
|
||||
|
||||
# Wiki Dashboard
|
||||
|
||||
Navigation: [[index]] | [[overview]] | [[log]] | [[hot]]
|
||||
|
||||
The dashboard uses **Obsidian Bases**. A core Obsidian feature shipped in v1.9.10 (August 2025). No plugin install required.
|
||||
|
||||
> [!tip] Embedded Bases view
|
||||
> The interactive dashboard lives in [[dashboard.base]]. Open that file directly, or use the embed below.
|
||||
|
||||
![[dashboard.base]]
|
||||
|
||||
---
|
||||
|
||||
## Legacy Dataview Dashboard (Optional)
|
||||
|
||||
If you are on Obsidian < 1.9.10 or prefer Dataview, the queries below still work. Just install the Dataview community plugin.
|
||||
|
||||
### 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 status = "developing" OR status = "seed" SORT updated DESC
|
||||
```
|
||||
|
||||
### Comparisons
|
||||
|
||||
```dataview
|
||||
TABLE verdict FROM "wiki/comparisons" SORT updated DESC
|
||||
```
|
||||
|
||||
### Sources
|
||||
|
||||
```dataview
|
||||
TABLE author, date_published, updated FROM "wiki/sources" WHERE type = "source" SORT updated DESC LIMIT 10
|
||||
```
|
||||
|
After Width: | Height: | Size: 101 KiB |
@@ -0,0 +1,82 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 300" width="900" height="300" font-family="Space Grotesk, system-ui, -apple-system, sans-serif">
|
||||
<rect width="900" height="300" fill="#0A0A0A"/>
|
||||
<text x="450" y="36" fill="#F5F5F0" font-size="17" font-weight="700" text-anchor="middle">v1.6.0 end-to-end validation: six tests, all green</text>
|
||||
<text x="450" y="56" fill="#888888" font-size="11" text-anchor="middle">Teams orchestration, codex gpt-5.4 for sub-agents, chair for integration</text>
|
||||
|
||||
<!-- Horizontal flow, 6 nodes evenly spaced -->
|
||||
<!-- Centers at x = 90, 225, 360, 495, 630, 765; y = 150 -->
|
||||
<!-- Connecting lines -->
|
||||
<g stroke="#2D2D2D" stroke-width="1.5" fill="none">
|
||||
<line x1="132" y1="150" x2="183" y2="150"/>
|
||||
<line x1="267" y1="150" x2="318" y2="150"/>
|
||||
<line x1="402" y1="150" x2="453" y2="150"/>
|
||||
<line x1="537" y1="150" x2="588" y2="150"/>
|
||||
<line x1="672" y1="150" x2="723" y2="150"/>
|
||||
</g>
|
||||
|
||||
<!-- T0 -->
|
||||
<g>
|
||||
<circle cx="90" cy="150" r="42" fill="#111111" stroke="#16a34a" stroke-width="2"/>
|
||||
<text x="90" y="140" fill="#16a34a" font-size="10" font-weight="700" text-anchor="middle">T0</text>
|
||||
<text x="90" y="158" fill="#F5F5F0" font-size="14" font-weight="700" text-anchor="middle">ollama</text>
|
||||
<text x="90" y="172" fill="#888888" font-size="9" text-anchor="middle">pull model</text>
|
||||
<text x="90" y="218" fill="#888888" font-size="10" text-anchor="middle">nomic-embed-text</text>
|
||||
<text x="90" y="232" fill="#6a6a6a" font-size="9" text-anchor="middle">274 MB, 15 s</text>
|
||||
</g>
|
||||
|
||||
<!-- T1 -->
|
||||
<g>
|
||||
<circle cx="225" cy="150" r="42" fill="#111111" stroke="#16a34a" stroke-width="2"/>
|
||||
<text x="225" y="140" fill="#16a34a" font-size="10" font-weight="700" text-anchor="middle">T1</text>
|
||||
<text x="225" y="158" fill="#F5F5F0" font-size="14" font-weight="700" text-anchor="middle">M1</text>
|
||||
<text x="225" y="172" fill="#888888" font-size="9" text-anchor="middle">dry-run k=3</text>
|
||||
<text x="225" y="218" fill="#888888" font-size="10" text-anchor="middle">DRY-RUN OK</text>
|
||||
<text x="225" y="232" fill="#6a6a6a" font-size="9" text-anchor="middle">8 children, no em-dashes</text>
|
||||
</g>
|
||||
|
||||
<!-- T2 -->
|
||||
<g>
|
||||
<circle cx="360" cy="150" r="42" fill="#111111" stroke="#16a34a" stroke-width="2"/>
|
||||
<text x="360" y="140" fill="#16a34a" font-size="10" font-weight="700" text-anchor="middle">T2</text>
|
||||
<text x="360" y="158" fill="#F5F5F0" font-size="14" font-weight="700" text-anchor="middle">M2</text>
|
||||
<text x="360" y="172" fill="#888888" font-size="9" text-anchor="middle">allocate</text>
|
||||
<text x="360" y="218" fill="#888888" font-size="10" text-anchor="middle">counter 2 to 3</text>
|
||||
<text x="360" y="232" fill="#6a6a6a" font-size="9" text-anchor="middle">c-000002 reserved</text>
|
||||
</g>
|
||||
|
||||
<!-- T3 -->
|
||||
<g>
|
||||
<circle cx="495" cy="150" r="42" fill="#111111" stroke="#16a34a" stroke-width="2"/>
|
||||
<text x="495" y="140" fill="#16a34a" font-size="10" font-weight="700" text-anchor="middle">T3</text>
|
||||
<text x="495" y="158" fill="#F5F5F0" font-size="14" font-weight="700" text-anchor="middle">M3</text>
|
||||
<text x="495" y="172" fill="#888888" font-size="9" text-anchor="middle">full tiling</text>
|
||||
<text x="495" y="218" fill="#888888" font-size="10" text-anchor="middle">41 scanned, 21 embedded</text>
|
||||
<text x="495" y="232" fill="#6a6a6a" font-size="9" text-anchor="middle">0 errors, 15 review pairs</text>
|
||||
</g>
|
||||
|
||||
<!-- T4 -->
|
||||
<g>
|
||||
<circle cx="630" cy="150" r="42" fill="#111111" stroke="#16a34a" stroke-width="2"/>
|
||||
<text x="630" y="140" fill="#16a34a" font-size="10" font-weight="700" text-anchor="middle">T4</text>
|
||||
<text x="630" y="158" fill="#F5F5F0" font-size="14" font-weight="700" text-anchor="middle">M1</text>
|
||||
<text x="630" y="172" fill="#888888" font-size="9" text-anchor="middle">commit</text>
|
||||
<text x="630" y="218" fill="#888888" font-size="10" text-anchor="middle">fold committed</text>
|
||||
<text x="630" y="232" fill="#6a6a6a" font-size="9" text-anchor="middle">115 lines, 8 children</text>
|
||||
</g>
|
||||
|
||||
<!-- T6 -->
|
||||
<g>
|
||||
<circle cx="765" cy="150" r="42" fill="#111111" stroke="#16a34a" stroke-width="2"/>
|
||||
<text x="765" y="140" fill="#16a34a" font-size="10" font-weight="700" text-anchor="middle">T6</text>
|
||||
<text x="765" y="158" fill="#F5F5F0" font-size="14" font-weight="700" text-anchor="middle">M4</text>
|
||||
<text x="765" y="172" fill="#888888" font-size="9" text-anchor="middle">autoresearch</text>
|
||||
<text x="765" y="218" fill="#888888" font-size="10" text-anchor="middle">3 pages filed</text>
|
||||
<text x="765" y="232" fill="#6a6a6a" font-size="9" text-anchor="middle">6 URLs fetched, sourced</text>
|
||||
</g>
|
||||
|
||||
<!-- Verdict strip -->
|
||||
<g>
|
||||
<rect x="300" y="262" width="300" height="24" rx="12" fill="#16a34a" fill-opacity="0.15" stroke="#16a34a" stroke-width="1"/>
|
||||
<text x="450" y="279" fill="#4ADE80" font-size="11" font-weight="700" text-anchor="middle">ACCEPT · make test green (74+ assertions)</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 171 KiB |
@@ -0,0 +1,88 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 500" width="900" height="500" font-family="Space Grotesk, system-ui, -apple-system, sans-serif">
|
||||
<rect width="900" height="500" fill="#0A0A0A"/>
|
||||
<text x="450" y="36" fill="#F5F5F0" font-size="17" font-weight="700" text-anchor="middle">Boundary-first autoresearch in action</text>
|
||||
<text x="450" y="56" fill="#888888" font-size="11" text-anchor="middle">top-5 frontier from the 2026-04-24 run. Candidate picked, three pages filed.</text>
|
||||
|
||||
<!-- Left column: candidate list -->
|
||||
<g>
|
||||
<text x="60" y="100" fill="#E07850" font-size="11" font-weight="700" letter-spacing="2">TOP-5 FRONTIER</text>
|
||||
|
||||
<!-- #1 skipped -->
|
||||
<rect x="50" y="116" width="310" height="44" rx="10" fill="#111111" stroke="#2D2D2D" stroke-width="1"/>
|
||||
<text x="70" y="138" fill="#6a6a6a" font-size="10" text-anchor="start">1. Ecosystem Research</text>
|
||||
<text x="340" y="138" fill="#6a6a6a" font-size="10" text-anchor="end">4.693</text>
|
||||
<text x="70" y="152" fill="#dc2626" font-size="9">skipped: source page</text>
|
||||
|
||||
<!-- #2 skipped -->
|
||||
<rect x="50" y="168" width="310" height="44" rx="10" fill="#111111" stroke="#2D2D2D" stroke-width="1"/>
|
||||
<text x="70" y="190" fill="#6a6a6a" font-size="10">2. DragonScale Memory</text>
|
||||
<text x="340" y="190" fill="#6a6a6a" font-size="10" text-anchor="end">4.000</text>
|
||||
<text x="70" y="204" fill="#dc2626" font-size="9">skipped: self-reference</text>
|
||||
|
||||
<!-- #3 CHOSEN -->
|
||||
<rect x="50" y="220" width="310" height="58" rx="10" fill="#1A1A1A" stroke="#4ADE80" stroke-width="2"/>
|
||||
<text x="70" y="242" fill="#F5F5F0" font-size="12" font-weight="700">3. How does the LLM Wiki pattern work?</text>
|
||||
<text x="340" y="242" fill="#F5F5F0" font-size="11" font-weight="700" text-anchor="end">1.702</text>
|
||||
<text x="70" y="258" fill="#4ADE80" font-size="9" font-weight="700" letter-spacing="1">CHOSEN CANDIDATE</text>
|
||||
<text x="70" y="271" fill="#888888" font-size="9">question page with gap, 6 URLs fetched for extension</text>
|
||||
|
||||
<!-- #4 -->
|
||||
<rect x="50" y="286" width="310" height="44" rx="10" fill="#111111" stroke="#2D2D2D" stroke-width="1"/>
|
||||
<text x="70" y="308" fill="#888888" font-size="10">4. Wiki vs RAG</text>
|
||||
<text x="340" y="308" fill="#888888" font-size="10" text-anchor="end">1.135</text>
|
||||
<text x="70" y="322" fill="#6a6a6a" font-size="9">eligible, not picked this round</text>
|
||||
|
||||
<!-- #5 -->
|
||||
<rect x="50" y="338" width="310" height="44" rx="10" fill="#111111" stroke="#2D2D2D" stroke-width="1"/>
|
||||
<text x="70" y="360" fill="#888888" font-size="10">5. SEO Drift Monitoring</text>
|
||||
<text x="340" y="360" fill="#888888" font-size="10" text-anchor="end">0.717</text>
|
||||
<text x="70" y="374" fill="#6a6a6a" font-size="9">eligible, not picked this round</text>
|
||||
|
||||
<!-- Formula footer -->
|
||||
<text x="50" y="420" fill="#6a6a6a" font-size="10" font-weight="700">formula</text>
|
||||
<text x="50" y="436" fill="#888888" font-size="10">score = (out_degree - in_degree) * exp(-age_days / 30)</text>
|
||||
<text x="50" y="452" fill="#6a6a6a" font-size="9">halflife 30 days, no floor. 22 scoreable pages. meta excluded.</text>
|
||||
</g>
|
||||
|
||||
<!-- Arrow from chosen candidate into synthesis -->
|
||||
<g stroke="#4ADE80" stroke-width="2" fill="none">
|
||||
<path d="M 365 249 Q 440 249 520 200" marker-end="url(#arrow-green)"/>
|
||||
<path d="M 365 249 Q 440 249 520 249"/>
|
||||
<path d="M 365 249 Q 440 249 520 298" marker-end="url(#arrow-green)"/>
|
||||
<line x1="519" y1="249" x2="518" y2="250"/>
|
||||
</g>
|
||||
<defs>
|
||||
<marker id="arrow-green" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="6" markerHeight="6" orient="auto">
|
||||
<path d="M 0 0 L 10 5 L 0 10 z" fill="#4ADE80"/>
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<!-- Right column: 3 new pages filed -->
|
||||
<g>
|
||||
<text x="540" y="100" fill="#4ADE80" font-size="11" font-weight="700" letter-spacing="2">PAGES FILED</text>
|
||||
|
||||
<!-- New page 1 -->
|
||||
<rect x="520" y="176" width="340" height="54" rx="10" fill="#111111" stroke="#4ADE80" stroke-width="1.5"/>
|
||||
<text x="540" y="198" fill="#F5F5F0" font-size="12" font-weight="700">Persistent Wiki Artifact</text>
|
||||
<text x="540" y="214" fill="#888888" font-size="9">44 lines · Karpathy gist + Obsidian docs</text>
|
||||
<text x="540" y="226" fill="#6a6a6a" font-size="9">durable Markdown layer as the agent's memory object</text>
|
||||
|
||||
<!-- New page 2 -->
|
||||
<rect x="520" y="238" width="340" height="54" rx="10" fill="#111111" stroke="#4ADE80" stroke-width="1.5"/>
|
||||
<text x="540" y="260" fill="#F5F5F0" font-size="12" font-weight="700">Source-First Synthesis</text>
|
||||
<text x="540" y="276" fill="#888888" font-size="9">42 lines · Karpathy gist + RAG arXiv 2005.11401</text>
|
||||
<text x="540" y="288" fill="#6a6a6a" font-size="9">raw sources immutable, synthesis cites them</text>
|
||||
|
||||
<!-- New page 3 -->
|
||||
<rect x="520" y="300" width="340" height="54" rx="10" fill="#111111" stroke="#4ADE80" stroke-width="1.5"/>
|
||||
<text x="540" y="322" fill="#F5F5F0" font-size="12" font-weight="700">Query-Time Retrieval</text>
|
||||
<text x="540" y="338" fill="#888888" font-size="9">44 lines · Karpathy gist + MemGPT arXiv 2310.08560</text>
|
||||
<text x="540" y="350" fill="#6a6a6a" font-size="9">wiki query synthesis vs Obsidian in-vault search</text>
|
||||
|
||||
<!-- Agenda-control caveat -->
|
||||
<rect x="520" y="400" width="340" height="60" rx="10" fill="#1A1A1A" stroke="#E07850" stroke-width="1"/>
|
||||
<text x="540" y="420" fill="#E07850" font-size="10" font-weight="700" letter-spacing="2">AGENDA CONTROL</text>
|
||||
<text x="540" y="436" fill="#888888" font-size="9">M4 does not just describe the vault; it shapes what</text>
|
||||
<text x="540" y="450" fill="#888888" font-size="9">the agent researches next. User picks, overrides, declines.</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 136 KiB |
@@ -0,0 +1,56 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 500" width="800" height="500" font-family="Space Grotesk, system-ui, -apple-system, sans-serif">
|
||||
<rect width="800" height="500" fill="#0A0A0A"/>
|
||||
<text x="400" y="36" fill="#F5F5F0" font-size="17" font-weight="700" text-anchor="middle">DragonScale Memory: four mechanisms</text>
|
||||
<text x="400" y="56" fill="#888888" font-size="11" font-weight="400" text-anchor="middle">opt-in, feature-gated, v1.6.0</text>
|
||||
|
||||
<!-- Card 1: Fold operator (stand-alone, no shared gate) -->
|
||||
<g>
|
||||
<rect x="40" y="90" width="355" height="140" rx="16" fill="#111111" stroke="#2D2D2D" stroke-width="1.5"/>
|
||||
<rect x="40" y="90" width="355" height="4" rx="2" fill="#E07850"/>
|
||||
<text x="60" y="120" fill="#E07850" font-size="13" font-weight="700" letter-spacing="2">M1</text>
|
||||
<text x="60" y="146" fill="#F5F5F0" font-size="15" font-weight="700">Fold operator</text>
|
||||
<text x="60" y="168" fill="#888888" font-size="10">Flat extractive rollup of the last 2^k log entries</text>
|
||||
<text x="60" y="184" fill="#888888" font-size="10">into a fold page. Dry-run default, commit explicit.</text>
|
||||
<text x="60" y="212" fill="#6a6a6a" font-size="9">skills/wiki-fold · dry-run stdout-only, no residue</text>
|
||||
</g>
|
||||
|
||||
<!-- Card 2: Addresses -->
|
||||
<g>
|
||||
<rect x="405" y="90" width="355" height="140" rx="16" fill="#111111" stroke="#2D2D2D" stroke-width="1.5"/>
|
||||
<rect x="405" y="90" width="355" height="4" rx="2" fill="#60A5FA"/>
|
||||
<text x="425" y="120" fill="#60A5FA" font-size="13" font-weight="700" letter-spacing="2">M2</text>
|
||||
<text x="425" y="146" fill="#F5F5F0" font-size="15" font-weight="700">Deterministic page addresses</text>
|
||||
<text x="425" y="168" fill="#888888" font-size="10">Creation-order counter c-NNNNNN, flock-guarded,</text>
|
||||
<text x="425" y="184" fill="#888888" font-size="10">recovers from max observed. Gap-tolerant.</text>
|
||||
<text x="425" y="212" fill="#6a6a6a" font-size="9">scripts/allocate-address.sh · counter at 3 in this vault</text>
|
||||
</g>
|
||||
|
||||
<!-- Card 3: Tiling -->
|
||||
<g>
|
||||
<rect x="40" y="250" width="355" height="140" rx="16" fill="#111111" stroke="#2D2D2D" stroke-width="1.5"/>
|
||||
<rect x="40" y="250" width="355" height="4" rx="2" fill="#8b5cf6"/>
|
||||
<text x="60" y="280" fill="#8b5cf6" font-size="13" font-weight="700" letter-spacing="2">M3</text>
|
||||
<text x="60" y="306" fill="#F5F5F0" font-size="15" font-weight="700">Semantic tiling lint</text>
|
||||
<text x="60" y="328" fill="#888888" font-size="10">Embedding-based duplicate detection via local</text>
|
||||
<text x="60" y="344" fill="#888888" font-size="10">ollama + nomic-embed-text. Banded thresholds.</text>
|
||||
<text x="60" y="372" fill="#6a6a6a" font-size="9">scripts/tiling-check.py · first run: 0 errors, 15 review pairs</text>
|
||||
</g>
|
||||
|
||||
<!-- Card 4: Boundary -->
|
||||
<g>
|
||||
<rect x="405" y="250" width="355" height="140" rx="16" fill="#111111" stroke="#2D2D2D" stroke-width="1.5"/>
|
||||
<rect x="405" y="250" width="355" height="4" rx="2" fill="#4ADE80"/>
|
||||
<text x="425" y="280" fill="#4ADE80" font-size="13" font-weight="700" letter-spacing="2">M4</text>
|
||||
<text x="425" y="306" fill="#F5F5F0" font-size="15" font-weight="700">Boundary-first autoresearch</text>
|
||||
<text x="425" y="328" fill="#888888" font-size="10">score = (out_degree - in_degree) * exp(-days/30).</text>
|
||||
<text x="425" y="344" fill="#888888" font-size="10">Agenda control, not pure memory. User picks.</text>
|
||||
<text x="425" y="372" fill="#6a6a6a" font-size="9">scripts/boundary-score.py · stdout-only, read-only</text>
|
||||
</g>
|
||||
|
||||
<!-- Shared gate strip for M2/M3/M4 -->
|
||||
<g>
|
||||
<rect x="40" y="420" width="720" height="44" rx="10" fill="#1A1A1A" stroke="#2D2D2D" stroke-width="1"/>
|
||||
<text x="60" y="440" fill="#E07850" font-size="11" font-weight="700" letter-spacing="2">SHARED GATE</text>
|
||||
<text x="60" y="458" fill="#888888" font-size="10">.vault-meta/ presence enables M2, M3, M4 feature detection. M1 has no shared state. Remove .vault-meta/ to disable all three at once.</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.0 KiB |
@@ -0,0 +1,91 @@
|
||||
---
|
||||
type: session
|
||||
title: "Full Audit, System Setup & Plugin Installation"
|
||||
created: 2026-04-07
|
||||
updated: 2026-04-07
|
||||
tags:
|
||||
- session
|
||||
- audit
|
||||
- setup
|
||||
- plugin-install
|
||||
status: evergreen
|
||||
related:
|
||||
- "[[claude-obsidian-v1.2.0-release-session]]"
|
||||
- "[[getting-started]]"
|
||||
- "[[index]]"
|
||||
---
|
||||
|
||||
# Full Audit, System Setup & Plugin Installation
|
||||
|
||||
Post-release audit session. Covers comprehensive repo audit across 12 areas, 3 issue fixes, plugin installation into the local Claude Code system, folder rename, and memory save.
|
||||
|
||||
---
|
||||
|
||||
## Audit Results (12 Areas)
|
||||
|
||||
All 12 areas audited — 3 issues found, all fixed same session.
|
||||
|
||||
### Issues Found and Fixed
|
||||
|
||||
| Issue | Fix |
|
||||
|-------|-----|
|
||||
| `Cosmic Brain Clean.gif` tracked in git (personal asset) | Removed with `git rm --cached`, added `Cosmic Brain*.gif` to .gitignore |
|
||||
| `Cosmic Brain Cover.png` tracked in git (personal asset) | Removed with `git rm --cached`, added `Cosmic Brain*.png` to .gitignore |
|
||||
| `Welcome.md` tracked in git (Obsidian personal file) | Removed with `git rm --cached`, added `Welcome.md` to .gitignore |
|
||||
| `vault-colors.css` comment said "cosmic-brain vault colors" | Updated to "claude-obsidian vault colors" |
|
||||
| `docs/superpowers/plans/` not committed | Committed audit plan file |
|
||||
|
||||
### Clean Areas (no issues)
|
||||
- Plugin manifests: all fields correct, version 1.2.0 consistent
|
||||
- All 7 SKILL.md files: valid frontmatter, correct tools, complete instructions
|
||||
- All 4 commands: mapped to correct skills, descriptions accurate
|
||||
- Both agents: model/maxTurns/tools correct
|
||||
- hooks/hooks.json: valid JSON, SessionStart + Stop hooks correct
|
||||
- All .obsidian/*.json: community-plugins.json (4 entries), appearance.json (3 snippets), app.json, graph.json all valid
|
||||
- All 4 Obsidian plugin manifests: complete, no personal data in data.json files
|
||||
- All 3 CSS snippets: GPL-2.0 headers present, no stale references
|
||||
- All 16 wikilinks resolve to valid files
|
||||
- All 3 canvases valid JSON, no broken file node references
|
||||
- README: all 6 images verified on disk, install commands correct, structure accurate
|
||||
- Zero secrets in any tracked file, all API key references are placeholders
|
||||
- Install simulation: all 7 skills, 4 commands, 2 agents discoverable, hooks valid
|
||||
|
||||
---
|
||||
|
||||
## Plugin Installation
|
||||
|
||||
claude-obsidian is now installed in the local Claude Code system:
|
||||
|
||||
```bash
|
||||
# Registered as marketplace
|
||||
claude plugin marketplace add AI-Marketing-Hub/claude-obsidian
|
||||
# → claude-obsidian-marketplace registered (user scope)
|
||||
|
||||
# Installed plugin
|
||||
claude plugin install claude-obsidian
|
||||
# → claude-obsidian@claude-obsidian-marketplace (scope: user) ✓
|
||||
```
|
||||
|
||||
To verify: `claude plugin list | grep claude-obsidian`
|
||||
|
||||
---
|
||||
|
||||
## System State
|
||||
|
||||
- Plugin repo: `~/claude-obsidian/` (git repo, both remotes live)
|
||||
- Plugin installed: `claude-obsidian@claude-obsidian-marketplace` (user scope, enabled)
|
||||
- Working folder renamed: `~/Desktop/Obsidian & Claude/` → `~/Desktop/claude-obsidian/`
|
||||
- Karpathy Gist comment drafted (ready to post at gist.github.com/karpathy/442a6bf555914893e9891c11519de94f)
|
||||
|
||||
---
|
||||
|
||||
## Commands Available After Install
|
||||
|
||||
| Trigger | What happens |
|
||||
|---------|-------------|
|
||||
| `/wiki` | Setup check, scaffold, or continue |
|
||||
| `ingest [file]` | Create 8–15 wiki pages from source |
|
||||
| `/save` | File this conversation to wiki |
|
||||
| `/autoresearch [topic]` | Autonomous web research loop |
|
||||
| `/canvas` | Visual canvas operations |
|
||||
| `lint the wiki` | Health check |
|
||||
|
After Width: | Height: | Size: 351 KiB |
|
After Width: | Height: | Size: 212 KiB |
@@ -0,0 +1,402 @@
|
||||
---
|
||||
type: meta
|
||||
title: "v1.7 Retrieval Benchmark Corpus"
|
||||
status: evergreen
|
||||
updated: 2026-05-17
|
||||
---
|
||||
|
||||
# v1.7 Retrieval Benchmark — 50 Queries
|
||||
|
||||
Used by the v1.7.0 audit (`docs/audits/v1.7.0-audit-2026-05-17.md`) to score
|
||||
top-1 / top-5 accuracy of the hybrid retrieval pipeline (`scripts/retrieve.py`)
|
||||
vs. the simulated v1.6 baseline (`scripts/baseline-v16.py`).
|
||||
|
||||
## Schema
|
||||
|
||||
Each query: `id`, `query`, `correct` (canonical page paths), `relevant`
|
||||
(supporting paths), `category`, `rationale`. For negative queries, `correct`
|
||||
is `null` and success is defined as "returns nothing OR returns only pages
|
||||
in `relevant`."
|
||||
|
||||
Machine-parsable: every query block is bracketed by `### <id>` and ends
|
||||
before the next `### ` or `## `. The scoring runner at
|
||||
`scripts/benchmark-runner.py` reads this file directly.
|
||||
|
||||
## Scoring rules
|
||||
|
||||
- **top-1 success**: top result's `page_path` equals one of `correct[]`
|
||||
- **top-5 success**: any of top-5 results' `page_path` is in `correct[]`
|
||||
- For negative queries (correct=null): top-1 success if top result in `relevant[]` or no results; top-5 success if any top-5 in `relevant[]` or no results
|
||||
|
||||
Final scores reported as (top-1%, top-5%) per pipeline, broken down by category.
|
||||
|
||||
---
|
||||
|
||||
## Derived Queries (25)
|
||||
|
||||
### D1
|
||||
- query: How does knowledge compound differently in a wiki versus traditional RAG?
|
||||
- correct: wiki/concepts/Compounding Knowledge.md
|
||||
- relevant: wiki/concepts/LLM Wiki Pattern.md, wiki/comparisons/Wiki vs RAG.md
|
||||
- category: derived
|
||||
- rationale: Canonical treatment of why wiki accumulation produces more value over time vs. query-time re-derivation.
|
||||
|
||||
### D2
|
||||
- query: What is the Hot Cache and why would a user enable it in their session?
|
||||
- correct: wiki/concepts/Hot Cache.md
|
||||
- relevant: wiki/concepts/LLM Wiki Pattern.md, wiki/getting-started.md
|
||||
- category: derived
|
||||
- rationale: Direct explanation of the session context mechanism and its token-cost benefits.
|
||||
|
||||
### D3
|
||||
- query: Tell me the three-layer architecture behind the LLM Wiki pattern.
|
||||
- correct: wiki/concepts/LLM Wiki Pattern.md
|
||||
- relevant: wiki/overview.md, wiki/index.md
|
||||
- category: derived
|
||||
- rationale: Explicit description of .raw, wiki, and CLAUDE.md layers.
|
||||
|
||||
### D4
|
||||
- query: What does the wiki fold operator do and why use exponential batch sizes?
|
||||
- correct: wiki/concepts/DragonScale Memory.md
|
||||
- relevant: wiki/log.md, wiki/hot.md
|
||||
- category: derived
|
||||
- rationale: Mechanism 1 detailed explanation with 2^k justification and LSM analogy.
|
||||
|
||||
### D5
|
||||
- query: How are deterministic page addresses assigned and what format do they use?
|
||||
- correct: wiki/concepts/DragonScale Memory.md
|
||||
- relevant: wiki/log.md
|
||||
- category: derived
|
||||
- rationale: Mechanism 2 spec with c-NNNNNN format and counter recovery rules.
|
||||
|
||||
### D6
|
||||
- query: Explain semantic tiling lint and what cosine similarity threshold it uses.
|
||||
- correct: wiki/concepts/DragonScale Memory.md
|
||||
- relevant: wiki/log.md, wiki/hot.md
|
||||
- category: derived
|
||||
- rationale: Mechanism 3 detailed treatment including banded thresholds and embeddings.
|
||||
|
||||
### D7
|
||||
- query: What are the cherry-picked features claude-obsidian should implement next?
|
||||
- correct: wiki/concepts/cherry-picks.md
|
||||
- relevant: wiki/index.md, wiki/comparisons/claude-obsidian-ecosystem.md
|
||||
- category: derived
|
||||
- rationale: Explicit prioritized backlog from ecosystem research across tiers.
|
||||
|
||||
### D8
|
||||
- query: What is the relationship between SVG diagrams and brand tokens in claude-obsidian assets?
|
||||
- correct: wiki/concepts/SVG Diagram Style Guide.md
|
||||
- relevant: wiki/log.md
|
||||
- category: derived
|
||||
- rationale: Canonical style reference with color palette, typography, and layout tokens.
|
||||
|
||||
### D9
|
||||
- query: How does a user ingest a source document into claude-obsidian and what happens next?
|
||||
- correct: wiki/getting-started.md
|
||||
- relevant: wiki/concepts/LLM Wiki Pattern.md, wiki/overview.md
|
||||
- category: derived
|
||||
- rationale: Three-step quick start walkthrough with expected output pages.
|
||||
|
||||
### D10
|
||||
- query: What does the Pro Hub Challenge reward and what was the first winner?
|
||||
- correct: wiki/concepts/Pro Hub Challenge.md
|
||||
- relevant: wiki/entities/Claude SEO.md, wiki/log.md
|
||||
- category: derived
|
||||
- rationale: Community challenge structure and integration pattern with historical results.
|
||||
|
||||
### D11
|
||||
- query: What is Search Experience Optimization and how does it read SERPs backwards?
|
||||
- correct: wiki/concepts/Search Experience Optimization.md
|
||||
- relevant: wiki/entities/Claude SEO.md, wiki/concepts/Semantic Topic Clustering.md
|
||||
- category: derived
|
||||
- rationale: Direct explanation of SXO methodology and its page-type mismatch detection.
|
||||
|
||||
### D12
|
||||
- query: How does semantic topic clustering use overlapping URLs to detect content relationships?
|
||||
- correct: wiki/concepts/Semantic Topic Clustering.md
|
||||
- relevant: wiki/entities/Claude SEO.md, wiki/log.md
|
||||
- category: derived
|
||||
- rationale: Overlap scoring rules and hub-spoke architecture.
|
||||
|
||||
### D13
|
||||
- query: What tracking rules does SEO Drift Monitoring enforce and where is the baseline stored?
|
||||
- correct: wiki/concepts/SEO Drift Monitoring.md
|
||||
- relevant: wiki/entities/Claude SEO.md
|
||||
- category: derived
|
||||
- rationale: 17 comparison rules across severity levels and SQLite persistence location.
|
||||
|
||||
### D14
|
||||
- query: Who is Andrej Karpathy and why does he matter to this wiki project?
|
||||
- correct: wiki/entities/Andrej Karpathy.md
|
||||
- relevant: wiki/concepts/LLM Wiki Pattern.md, wiki/index.md
|
||||
- category: derived
|
||||
- rationale: Founder attribution and origination of the pattern with notable quote.
|
||||
|
||||
### D15
|
||||
- query: What version of Claude SEO shipped in April 2026 and how many skills does it have?
|
||||
- correct: wiki/entities/Claude SEO.md
|
||||
- relevant: wiki/log.md, wiki/meta/2026-04-14-claude-seo-v190-session.md
|
||||
- category: derived
|
||||
- rationale: v1.9.0 state with skill counts and Pro Hub Challenge integration.
|
||||
|
||||
### D16
|
||||
- query: Does Ar9av's obsidian-wiki support multi-agent deployment and how?
|
||||
- correct: wiki/entities/Ar9av-obsidian-wiki.md
|
||||
- relevant: wiki/comparisons/claude-obsidian-ecosystem.md, wiki/concepts/cherry-picks.md
|
||||
- category: derived
|
||||
- rationale: setup.sh bootstrap matrix across multiple agents and delta tracking manifest.
|
||||
|
||||
### D17
|
||||
- query: What does the /adopt command in ballred's PKM system do?
|
||||
- correct: wiki/entities/ballred-obsidian-claude-pkm.md
|
||||
- relevant: wiki/concepts/cherry-picks.md, wiki/comparisons/claude-obsidian-ecosystem.md
|
||||
- category: derived
|
||||
- rationale: Vault analysis and pattern detection for PARA, Zettelkasten, LYT migration.
|
||||
|
||||
### D18
|
||||
- query: What official Obsidian skills does kepano publish and which is most token-efficient?
|
||||
- correct: wiki/entities/kepano-obsidian-skills.md
|
||||
- relevant: wiki/concepts/cherry-picks.md, wiki/entities/Claudian-YishenTu.md
|
||||
- category: derived
|
||||
- rationale: obsidian-markdown, obsidian-bases, defuddle, and defuddle's 40-60% token reduction.
|
||||
|
||||
### D19
|
||||
- query: What are the three query depths in rvk7895's LLM knowledge base system?
|
||||
- correct: wiki/entities/rvk7895-llm-knowledge-bases.md
|
||||
- relevant: wiki/concepts/cherry-picks.md, wiki/comparisons/claude-obsidian-ecosystem.md
|
||||
- category: derived
|
||||
- rationale: Quick, Standard, Deep modes with output formats.
|
||||
|
||||
### D20
|
||||
- query: How does Nexus MCP for Obsidian store workspace memory and is it Obsidian Sync compatible?
|
||||
- correct: wiki/entities/Nexus-claudesidian-mcp.md
|
||||
- relevant: wiki/comparisons/claude-obsidian-ecosystem.md
|
||||
- category: derived
|
||||
- rationale: JSONL storage and Sync auto-inclusion.
|
||||
|
||||
### D21
|
||||
- query: What makes Claudian's inline edit feature best-in-class compared to other Obsidian AI plugins?
|
||||
- correct: wiki/entities/Claudian-YishenTu.md
|
||||
- relevant: wiki/comparisons/claude-obsidian-ecosystem.md
|
||||
- category: derived
|
||||
- rationale: Word-level diff preview and one-click apply with Plan Mode support.
|
||||
|
||||
### D22
|
||||
- query: Between claude-obsidian and other projects, who has the hot cache mechanism?
|
||||
- correct: wiki/comparisons/claude-obsidian-ecosystem.md
|
||||
- relevant: wiki/concepts/Hot Cache.md, wiki/index.md
|
||||
- category: derived
|
||||
- rationale: Feature matrix shows claude-obsidian is unique in session context caching.
|
||||
|
||||
### D23
|
||||
- query: When was the first real fold committed to the vault and what was its fold_id?
|
||||
- correct: wiki/folds/fold-k3-from-2026-04-23-to-2026-04-24-n8.md
|
||||
- relevant: wiki/log.md, wiki/hot.md, wiki/concepts/DragonScale Memory.md
|
||||
- category: derived
|
||||
- rationale: Fold metadata with exact creation date and 8-entry batch documentation.
|
||||
|
||||
### D24
|
||||
- query: What pages were created after the boundary-first autoresearch frontier pass?
|
||||
- correct: wiki/log.md
|
||||
- relevant: wiki/concepts/Persistent Wiki Artifact.md, wiki/concepts/Source-First Synthesis.md, wiki/concepts/Query-Time Retrieval.md
|
||||
- category: derived
|
||||
- rationale: Log entry for 2026-04-24 M4 run explicitly lists the three new concept pages filed.
|
||||
|
||||
### D25
|
||||
- query: What is a Persistent Wiki Artifact and how does it differ from ephemeral chat turns?
|
||||
- correct: wiki/concepts/Persistent Wiki Artifact.md
|
||||
- relevant: wiki/concepts/LLM Wiki Pattern.md, wiki/concepts/Source-First Synthesis.md
|
||||
- category: derived
|
||||
- rationale: Explicit definition of durable memory object with frontmatter, title, wikilinks, and provenance.
|
||||
|
||||
---
|
||||
|
||||
## Hard Queries (25)
|
||||
|
||||
### H1
|
||||
- query: How does the exponential compaction operator summarize batch entries?
|
||||
- correct: wiki/concepts/DragonScale Memory.md
|
||||
- relevant: wiki/log.md
|
||||
- category: synonym
|
||||
- rationale: "Fold operator" and "rollup" are interchangeable; query uses LSM terminology instead of dragon-curve naming.
|
||||
|
||||
### H2
|
||||
- query: What stable identifiers help page references survive renames in prompt-cache workloads?
|
||||
- correct: wiki/concepts/DragonScale Memory.md
|
||||
- relevant: wiki/log.md, wiki/hot.md
|
||||
- category: synonym
|
||||
- rationale: Deterministic addresses (c-NNNNNN format) are the answer; query uses prompt-cache context instead.
|
||||
|
||||
### H3
|
||||
- query: How does the semantic tiling mechanism detect and flag duplicate or near-duplicate pages?
|
||||
- correct: wiki/concepts/DragonScale Memory.md
|
||||
- relevant: wiki/log.md, wiki/hot.md
|
||||
- category: synonym
|
||||
- rationale: Mechanism 3 performs dedup via cosine similarity; query uses "near-duplicate" instead of "semantic tiling."
|
||||
|
||||
### H4
|
||||
- query: When user asks /autoresearch without a topic, which pages are candidates and how are they scored?
|
||||
- correct: wiki/concepts/DragonScale Memory.md
|
||||
- relevant: wiki/log.md, wiki/hot.md
|
||||
- category: synonym
|
||||
- rationale: Boundary-first autoresearch (Mechanism 4) surfaces frontier pages; query uses "autoresearch no-topic" instead.
|
||||
|
||||
### H5
|
||||
- query: How should the wiki layer stay connected to raw source material without replacing source content?
|
||||
- correct: wiki/concepts/Source-First Synthesis.md
|
||||
- relevant: wiki/concepts/LLM Wiki Pattern.md, wiki/concepts/Persistent Wiki Artifact.md
|
||||
- category: synonym
|
||||
- rationale: Source-first synthesis is the provenance rule; query asks for the principle without using the term.
|
||||
|
||||
### H6
|
||||
- query: When building a wiki versus RAG, how does the cost structure differ in maintenance, infrastructure, and long-term knowledge value?
|
||||
- correct: wiki/concepts/LLM Wiki Pattern.md, wiki/comparisons/Wiki vs RAG.md, wiki/concepts/Compounding Knowledge.md
|
||||
- relevant: wiki/overview.md
|
||||
- category: cross-page
|
||||
- rationale: Spans three concepts: architecture table, comparison table, and compounding mechanics.
|
||||
|
||||
### H7
|
||||
- query: What does the wiki-fold skill output in dry-run mode and how does it create child references?
|
||||
- correct: wiki/concepts/DragonScale Memory.md, wiki/log.md
|
||||
- relevant: wiki/hot.md
|
||||
- category: cross-page
|
||||
- rationale: Mechanism 1 spec + dry-run artifact from 2026-04-24 Phase 1 log entry cross-reference.
|
||||
|
||||
### H8
|
||||
- query: How would adding URL ingestion and web cleaning together reduce token usage during ingest?
|
||||
- correct: wiki/concepts/cherry-picks.md, wiki/entities/kepano-obsidian-skills.md
|
||||
- relevant: wiki/getting-started.md
|
||||
- category: cross-page
|
||||
- rationale: Combining cherry-pick #1 (URL ingest) and defuddle (40-60% token reduction) from two sources.
|
||||
|
||||
### H9
|
||||
- query: Which project has the best auto-commit hook and how did that feature get integrated into Claude SEO?
|
||||
- correct: wiki/entities/ballred-obsidian-claude-pkm.md, wiki/entities/Claude SEO.md, wiki/log.md
|
||||
- relevant: wiki/comparisons/claude-obsidian-ecosystem.md
|
||||
- category: cross-page
|
||||
- rationale: ballred has PostToolUse auto-commit; Claude SEO v1.9.0 release cites integration patterns.
|
||||
|
||||
### H10
|
||||
- query: How would you audit a page for SERP alignment, topic cannibalization risk, and performance regressions together?
|
||||
- correct: wiki/concepts/Search Experience Optimization.md, wiki/concepts/Semantic Topic Clustering.md, wiki/concepts/SEO Drift Monitoring.md
|
||||
- relevant: wiki/entities/Claude SEO.md, wiki/log.md
|
||||
- category: cross-page
|
||||
- rationale: Three separate v1.9.0 features; query asks for integrated workflow across all three.
|
||||
|
||||
### H11
|
||||
- query: What were the six test stages and did all mechanisms pass validation before v1.6.0 shipped?
|
||||
- correct: wiki/log.md, wiki/hot.md
|
||||
- relevant: wiki/concepts/DragonScale Memory.md
|
||||
- category: cross-page
|
||||
- rationale: 2026-04-24 end-to-end validation pass entry lists T0-T6; hot.md confirms all four mechanisms validated.
|
||||
|
||||
### H12
|
||||
- query: Why does the LLM Wiki pattern avoid re-querying and re-assembling the same sources every time?
|
||||
- correct: wiki/concepts/Query-Time Retrieval.md, wiki/concepts/Persistent Wiki Artifact.md, wiki/concepts/Source-First Synthesis.md
|
||||
- relevant: wiki/concepts/LLM Wiki Pattern.md, wiki/concepts/Compounding Knowledge.md
|
||||
- category: cross-page
|
||||
- rationale: Spans three pages: RAG baseline definition + durable memory object + synthesis discipline.
|
||||
|
||||
### H13
|
||||
- query: What are two independent ways to embed the LLM Wiki pattern in different editor environments?
|
||||
- correct: wiki/entities/Ar9av-obsidian-wiki.md, wiki/entities/Claudian-YishenTu.md
|
||||
- relevant: wiki/comparisons/claude-obsidian-ecosystem.md
|
||||
- category: cross-page
|
||||
- rationale: Ar9av setup.sh for multiple agents; Claudian native TypeScript plugin; both different deployment models.
|
||||
|
||||
### H14
|
||||
- query: How could you avoid re-processing unchanged sources when integrating community submissions?
|
||||
- correct: wiki/concepts/cherry-picks.md, wiki/concepts/Pro Hub Challenge.md
|
||||
- relevant: wiki/log.md
|
||||
- category: cross-page
|
||||
- rationale: Delta tracking manifest solves re-ingest problem; integration pattern in Pro Hub workflow.
|
||||
|
||||
### H15
|
||||
- query: What is the most direct way to add defuddle to claude-obsidian's current ingest pipeline?
|
||||
- correct: wiki/entities/kepano-obsidian-skills.md, wiki/concepts/cherry-picks.md
|
||||
- relevant: wiki/getting-started.md
|
||||
- category: cross-page
|
||||
- rationale: Cherry-pick #3 + getting-started ingest flow both discussed; requires both for full picture.
|
||||
|
||||
### H16
|
||||
- query: Where can I find Karpathy's original description of the wiki pattern?
|
||||
- correct: wiki/concepts/Persistent Wiki Artifact.md, wiki/concepts/Source-First Synthesis.md, wiki/entities/Andrej Karpathy.md
|
||||
- relevant: wiki/concepts/LLM Wiki Pattern.md
|
||||
- category: partial-recall
|
||||
- rationale: Multiple pages cite Karpathy gist; user remembers "gist" + "Karpathy."
|
||||
|
||||
### H17
|
||||
- query: What was inspired by dragon curves and what problem does it solve?
|
||||
- correct: wiki/concepts/DragonScale Memory.md
|
||||
- relevant: wiki/log.md
|
||||
- category: partial-recall
|
||||
- rationale: User recalls dragon analogy but not "DragonScale"; wants to understand fold operator.
|
||||
|
||||
### H18
|
||||
- query: What is the ~500-word file that gets updated at the end of every session?
|
||||
- correct: wiki/concepts/Hot Cache.md
|
||||
- relevant: wiki/getting-started.md, wiki/overview.md, wiki/hot.md
|
||||
- category: partial-recall
|
||||
- rationale: Exact description matches; user remembers fragment but not exact terminology.
|
||||
|
||||
### H19
|
||||
- query: Which community competition paid out Claude Credits and who won first?
|
||||
- correct: wiki/concepts/Pro Hub Challenge.md
|
||||
- relevant: wiki/entities/Claude SEO.md
|
||||
- category: partial-recall
|
||||
- rationale: User remembers community challenge and winners but not the name.
|
||||
|
||||
### H20
|
||||
- query: How many projects does the wiki track as competitors or adjacent to claude-obsidian?
|
||||
- correct: wiki/comparisons/claude-obsidian-ecosystem.md
|
||||
- relevant: wiki/concepts/cherry-picks.md
|
||||
- category: partial-recall
|
||||
- rationale: User remembers ecosystem matrix but not exact page; queries for count of projects.
|
||||
|
||||
### H21
|
||||
- query: How does the wiki pattern use blockchain or distributed ledger technology for vault consensus?
|
||||
- correct: null
|
||||
- relevant: wiki/concepts/DragonScale Memory.md
|
||||
- category: negative
|
||||
- rationale: Wiki does not discuss blockchain; DragonScale addresses are creation-order counter, not DLT.
|
||||
|
||||
### H22
|
||||
- query: What CRDT algorithm does the vault use for simultaneous multi-user editing?
|
||||
- correct: null
|
||||
- relevant: wiki/hot.md, wiki/concepts/DragonScale Memory.md
|
||||
- category: negative
|
||||
- rationale: No CRDT discussion; v1.7 mentions wiki-lock.sh for multi-writer safety (locking, not CRDTs).
|
||||
|
||||
### H23
|
||||
- query: Can I build an LLM wiki without installing Obsidian as a desktop application?
|
||||
- correct: null
|
||||
- relevant: wiki/concepts/LLM Wiki Pattern.md, wiki/getting-started.md
|
||||
- category: negative
|
||||
- rationale: Pattern is agnostic but this vault uses Obsidian. No Obsidian-free mode documented.
|
||||
|
||||
### H24
|
||||
- query: How do you customize the semantic embedding model weights for better tiling accuracy on your domain?
|
||||
- correct: null
|
||||
- relevant: wiki/concepts/DragonScale Memory.md, wiki/log.md
|
||||
- category: negative
|
||||
- rationale: Mechanism 3 uses locked ollama nomic-embed-text; no fine-tuning support documented.
|
||||
|
||||
### H25
|
||||
- query: Does the vault have CI/CD pipeline to automatically ingest new .raw files on every push?
|
||||
- correct: null
|
||||
- relevant: wiki/log.md, wiki/hot.md
|
||||
- category: negative
|
||||
- rationale: No GitHub Actions / CI-CD / automated ingest documented. Auto-commit hook exists but not scheduled CI.
|
||||
|
||||
---
|
||||
|
||||
## Benchmark Notes
|
||||
|
||||
**Coverage**: 47 wiki pages, ~50 queries → roughly 1 query per page on average; spread covers concepts, entities, comparisons, meta, folds, sources.
|
||||
|
||||
**Balance**: 25 derived (natural questions) + 5 synonym + 10 cross-page + 5 partial-recall + 5 negative.
|
||||
|
||||
**Targets** (rough expectation, not a gate):
|
||||
- v1.6 baseline top-1: ~50-65% on derived, much lower on hard
|
||||
- v1.7 hybrid top-1: ~75-90% on derived, ~50-70% on hard
|
||||
- Plan §7 ship gate (from v1.7 implementation plan): ≥30% reduction in "wrong page cited" errors. Verify by comparing the percentage-points improvement on top-1 across all 50 queries.
|
||||
@@ -0,0 +1,32 @@
|
||||
# Semantic Tiling Report
|
||||
|
||||
- generated: 2026-04-24T09:20:59Z
|
||||
- model: nomic-embed-text
|
||||
- ollama_url: http://127.0.0.1:11434
|
||||
- thresholds: error>=0.9, review=0.8-0.9
|
||||
- calibrated: False (using uncalibrated defaults)
|
||||
- pages scanned: 41; embedded: 21; skipped: 20
|
||||
- skipped reasons: embed_error=1, excluded filename=9, under wiki/meta/=10
|
||||
- cache hits: 0; recomputed: 21; orphans pruned: 0
|
||||
|
||||
## Errors (similarity >= 0.9)
|
||||
|
||||
- none
|
||||
|
||||
## Review (0.8 <= similarity < 0.9)
|
||||
|
||||
- `0.8822` wiki/concepts/Compounding Knowledge.md -- wiki/concepts/LLM Wiki Pattern.md
|
||||
- `0.8729` wiki/concepts/LLM Wiki Pattern.md -- wiki/questions/How does the LLM Wiki pattern work.md
|
||||
- `0.8681` wiki/comparisons/claude-obsidian-ecosystem.md -- wiki/sources/claude-obsidian-ecosystem-research.md
|
||||
- `0.8594` wiki/concepts/cherry-picks.md -- wiki/entities/Ar9av-obsidian-wiki.md
|
||||
- `0.8401` wiki/concepts/Compounding Knowledge.md -- wiki/questions/How does the LLM Wiki pattern work.md
|
||||
- `0.8400` wiki/entities/Claudian-YishenTu.md -- wiki/entities/Nexus-claudesidian-mcp.md
|
||||
- `0.8343` wiki/concepts/LLM Wiki Pattern.md -- wiki/entities/Andrej Karpathy.md
|
||||
- `0.8318` wiki/concepts/cherry-picks.md -- wiki/sources/claude-obsidian-ecosystem-research.md
|
||||
- `0.8244` wiki/comparisons/claude-obsidian-ecosystem.md -- wiki/concepts/cherry-picks.md
|
||||
- `0.8229` wiki/entities/kepano-obsidian-skills.md -- wiki/sources/claude-obsidian-ecosystem-research.md
|
||||
- `0.8171` wiki/entities/ballred-obsidian-claude-pkm.md -- wiki/sources/claude-obsidian-ecosystem-research.md
|
||||
- `0.8067` wiki/concepts/cherry-picks.md -- wiki/entities/kepano-obsidian-skills.md
|
||||
- `0.8064` wiki/entities/Ar9av-obsidian-wiki.md -- wiki/entities/kepano-obsidian-skills.md
|
||||
- `0.8052` wiki/concepts/LLM Wiki Pattern.md -- wiki/entities/rvk7895-llm-knowledge-bases.md
|
||||
- `0.8040` wiki/entities/Andrej Karpathy.md -- wiki/entities/rvk7895-llm-knowledge-bases.md
|
||||
|
After Width: | Height: | Size: 585 KiB |
|
After Width: | Height: | Size: 285 KiB |
|
After Width: | Height: | Size: 227 KiB |