Skip to content

voxpelli/vp-claude

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

141 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vp-knowledge

A Claude Code plugin that turns Basic Memory into an actively maintained knowledge graph. Research packages from six ecosystems and tools from six dev-environment categories using parallel enrichment, find documentation gaps in your projects, surface project-relevant knowledge before coding, and let autonomous agents audit and improve your notes — all without leaving your terminal.

Breaking change in v0.22.0

Note titles and wiki-links now use hyphen delimiters (npm-fastify, [[npm-fastify]]) instead of colons (npm:fastify, [[npm:fastify]]). User command syntax is unchanged (/package-intel npm:fastify). Existing vault notes need a one-time migration — see TODO-obsidian-migration.md.

What it does

/package-intel <pkg> — Research any package

Queries seven sources in parallel, synthesizes a structured note, and cross-links existing notes. Supports six ecosystems:

Form Ecosystem Example
<name> (no prefix) npm (default) fastify
npm:<name> npm npm:@fastify/postgres
crate:<name> Rust / crates.io crate:serde
go:<module/path> Go modules go:github.com/gin-gonic/gin
composer:<vendor>/<pkg> PHP / Packagist composer:laravel/framework
pypi:<name> Python / PyPI pypi:requests
gem:<name> Ruby / RubyGems gem:rails
/package-intel @fastify/postgres
/package-intel crate:serde
/package-intel pypi:requests
Source What it finds
Basic Memory Existing notes, cross-references, usage patterns
DeepWiki Architecture, design patterns, key APIs (2-3 targeted questions)
Context7 API reference, code examples
Tavily Security advisories, recent CVEs (RUSTSEC, PyPA, RubySec, etc.)
Raindrop Your bookmarked articles (with full content extraction)
Readwise Your highlights and saved articles about the package
Socket Supply-chain risk scores (license, maintenance, quality, supply-chain, vulnerability) for npm, pypi, cargo, gem

Plus changelog analysis via GitHub releases. After writing, searches for existing notes that reference the package and adds bidirectional cross-links. The result is an ecosystem-prefixed note (npm-*, crate-*, pypi-*, etc.) with observations, relations, and release highlights — connected into the graph from day one.

/tool-intel <prefix>:<name> — Research any dev tool

Queries five sources in parallel, synthesizes a structured note, and cross-links existing notes. Supports six tool categories:

Form Category Example
brew:<name> Homebrew formula brew:ripgrep
cask:<name> Homebrew cask cask:warp
action:<owner>/<repo> GitHub Action action:actions/checkout
docker:<image> Docker Hub image docker:node
vscode:<publisher>.<ext> VSCode extension vscode:esbenp.prettier-vscode
gh:<owner>/<repo> GitHub CLI extension gh:meiji163/gh-notify
/tool-intel brew:ripgrep
/tool-intel action:actions/checkout
/tool-intel docker:node
/tool-intel vscode:esbenp.prettier-vscode
/tool-intel gh:meiji163/gh-notify
Source What it finds
Basic Memory Existing notes, cross-references
DeepWiki Architecture, design patterns (actions and docker; conditional for gh — only when gh release list returns ≥1 release)
Tavily Security advisories, CVEs, supply-chain risks, gotchas
Raindrop Your bookmarked articles (with full content extraction)
Readwise Your highlights and saved articles about the tool
Homebrew MCP (optional) Install analytics (30/90/365-day counts + build errors) for brew: and cask: — skipped silently when unavailable

Plus version/changelog data (GitHub releases for actions, Docker Hub tags for images, API versions for brew/vscode). After writing, searches for existing notes that reference the tool and adds bidirectional cross-links. The result is a prefixed note (brew-*, action-*, etc.) with type-specific sections — ## Inputs & Outputs + ## Permissions for actions, ## Tags + ## Base Layers for Docker, ## Common Usage for formulae — plus observations and relations.

/knowledge-gaps — Find undocumented dependencies

Scans your project's manifest files for both code dependencies and dev tooling, checks which have Basic Memory notes, and reports the gaps:

## Knowledge Gap Report — my-project

### npm Coverage: 12/47 packages documented (25%)

#### Tier 1 — Must Document (3+ imports)
| Package | Import Count | Domain               |
|---------|--------------|----------------------|
| fastify | 12           | engineering/fastify/ |
| pg      | 8            | engineering/         |

#### Tier 2 — Should Document (1-2 imports)
...

---

### crates Coverage: 3/18 packages documented (17%)

#### Tier 1 — Must Document (3+ imports)
| Package | Import Count | Domain   |
|---------|--------------|----------|
| serde   | 28           | crates/  |
...

---

### Overall Summary
- Total packages across all ecosystems: 65
- Documented: 15 (23%)
- Undocumented Tier 1: 8 packages

Package manifests scanned: package.json, Cargo.toml, go.mod, composer.json, pyproject.toml, Gemfile — tiered by import frequency (3+ imports = Tier 1, must document).

Tool manifests scanned: Brewfile (formulae, casks, vscode entries), .github/workflows/*.yml (actions), Dockerfile/*.dockerfile (docker images), .vscode/extensions.json (vscode extensions) — all manifest entries count equally, no tiering.

Also detects concept-level hub gaps — topics referenced by 3+ notes but with no dedicated note — and reading-signal gaps from Readwise highlights. Offers to run /package-intel (with the right ecosystem prefix) for top undocumented packages and /tool-intel for undocumented tools.

/knowledge-prime — Surface project-relevant knowledge

Scans your project's manifest files, cross-references dependencies against Basic Memory, and produces a concise context brief with key gotchas, coverage gaps, and recently updated notes:

## Project Knowledge Brief

### Stack detected
- npm: 45 deps (38 documented, 7 undocumented)
- brew: 12 tools (10 documented, 2 undocumented)

### Key gotchas
- **npm-fastify** — [gotcha] reply.send() after reply.redirect() causes hang
- **npm-pino** — [limitation] redaction doesn't work on nested arrays

### Recent activity
- 3 notes updated in last 7 days: npm-fastify, npm-pino, brew-ripgrep

### Gaps worth filling
- Top undocumented dep: `undici` (used in 12 imports)
- Run `/knowledge-gaps` for full coverage analysis

Uses a three-pass relevance scoring algorithm: dependency match (score 3) → graph expansion via build_context (score 2) → beads/git boost (score 1). Loads only critical observations ([gotcha], [breaking], [limitation]) with an 800-token budget. Supports --deep for expanded output (2000 tokens, top 12 notes, additional categories).

/schema-evolve <type> — Detect and fix schema drift

Compares actual note field usage against schema definitions, proposes additions (>25% usage) and removals (0% usage), and dual-syncs both the Basic Memory schema note and the local schemas/ file after approval:

/schema-evolve npm_package
/schema-evolve brew_formula

Includes a watch list for emerging fields (10-24% usage) and validates after every change.

/people-intel <name> — Research any person

Queries five sources in parallel, synthesizes a structured person note, and cross-links existing notes:

/people-intel Aaron Gustafson
/people-intel Linus Torvalds
Source What it finds
Basic Memory Existing mentions, cross-cluster connections (depth-2 traversal)
Raindrop Your bookmarked articles by or about the person
Readwise Your highlights from their writing
Tavily Bio, current role, projects, contributions, controversies
DeepWiki GitHub repo philosophy (developer profiles only)

Includes a fourth-wall guardrail (no self-referential knowledge-graph content in person notes) and an anti-hagiography step (explicit controversy search). After writing, searches for existing notes that mention the person and adds bidirectional cross-links using the person schema's relation vocabulary (created, founded, maintains, works_with, enables, relates_to).

Knowledge Gardener — Read-only graph auditor

An autonomous agent that produces a health report without modifying anything:

"Audit my knowledge graph"

Checks for: missing sections, schema violations, orphan notes, broken [[wiki-links]], stale notes (90+ days), duplicates, project-specific data leaking into cross-project notes, tag alignment (non-canonical forms, retired tags, missing ecosystem tags, out-of-vocabulary tags).

Knowledge Maintainer — All-in-one graph enhancer

Acts on audit findings with tiered autonomy:

"Fix the graph issues"

Action Autonomy
Add missing ## Observations / ## Relations sections Auto-fix
Normalize observation categories Auto-fix
Normalize tags (canonical forms, remove type-echo/retired) Auto-fix
Add missing ecosystem tags to tool notes Auto-fix
Link orphan notes to related notes Auto-fix
Fix frontmatter type to match schema Auto-fix
Run /package-intel for Tier 1 undocumented packages Auto-fix
Run /tool-intel for undocumented tools from manifests Auto-fix
Merge duplicate notes Asks first
Archive abandoned notes (move to archive/) Asks first
Rewrite note prose Asks first

Knowledge Primer — Autonomous context loading

A read-only agent that surfaces project-relevant knowledge before you start working:

"Prime the knowledge graph for this project" / "What does BM know about my deps?"

Same workflow as /knowledge-prime but runs as an autonomous subagent. Pinned to Sonnet for consistent quality regardless of session model. The "before work" counterpart to /session-reflect (which captures knowledge "after work").

/knowledge-ask <question> — Ask the knowledge graph

A read-only skill that answers freeform questions by searching Basic Memory, loading relevant notes, traversing 1-hop graph neighbors, and synthesizing a cited answer:

"What do I know about fastify error handling?" / "What does BM say about IndieWeb?"

Each answer includes a confidence tier (Direct, Partial, or No Coverage) so you know how much the graph actually covers. When coverage is incomplete, suggests /package-intel, /tool-intel, or /knowledge-gaps to fill the gap. Unlike /knowledge-prime (which shows project-wide dependency coverage), /knowledge-ask answers specific questions about individual topics.

/wander [mode] — Purposeless knowledge exploration

Five modes surface serendipitous connections from across Basic Memory, Raindrop, and Readwise:

"Wander" / "Surprise me" / "Time machine" / "What am I obsessing about?"

Mode What it does
Random Walk Start at a random BM note, follow relations 3-5 hops
Time Machine Pair a 10+ year old bookmark with a recent one on a similar theme
Cross-System Collision Match a Readwise highlight with a Raindrop bookmark from different domains
Forgotten Shelf Surface 5 old, untagged bookmarks from another era
Obsession Detector Find the most-saved recent topic with zero BM notes

Critical design constraint: never scores, ranks, or recommends. Presents collisions and lets the user make meaning.

/readwise-check <topic> — Quick reading depth lookup

Pre-research snapshot showing how much you've read about a topic:

"How much have I read about fastify?" / "Readwise check knowledge management"

Reports highlight count, document count, and reading depth — two API calls, compact output.

/session-reflect — On-demand conversation capture

A user-triggered skill that reviews the current conversation and saves insights to Basic Memory with your approval:

"Reflect on this session" / "Save what we learned" / "Commit this to memory"

User-triggered: extracts candidates, finds the right target notes, shows a grouped preview, and waits before writing anything. Uses the [decision], [lesson], [gotcha], [pattern], [limitation], and [breaking] observation vocabularies.

/raindrop-triage — Interactive unsorted bookmark triage

Triages unsorted Raindrop bookmarks in interactive batches:

"Triage unsorted bookmarks" / "Clean up raindrop inbox" / "Sort unsorted"

The first pass deduplicates by normalized URL (stripping tracking params), detects research bursts (temporal clusters of 3+ bookmarks within 30 minutes), clusters by theme, proposes vocabulary-grounded tags, and moves approved bookmarks to AI-triaged. A --promote pass classifies AI-triaged items into AI-sorted (default), AI-gems (golden), AI-archive (low-reuse), or AI-attention (needs human decision) with structured note annotations. Operates within a 6-collection AI-managed namespace — never touches user-curated collections.

Hooks — Automated quality guardrails

Five hooks run automatically in the background:

  • PostToolUse (BM writes) — After any write_note or edit_note, validates the note structure against its schema. Catches malformed notes immediately.
  • PostToolUse (file edits) — After editing shell scripts, detects formatting drift with shfmt -d, surfaces the diff, and auto-fixes with shfmt -w. After editing schema files, reminds to sync Basic Memory.
  • PostToolUseFailure — Classifies Basic Memory write and schema tool failures into five categories with actionable recovery guidance.
  • SessionStart — Injects a knowledge graph status summary and suggests /knowledge-prime for project context or /knowledge-ask for topic-specific questions.
  • PreToolUse (gardener Bash) — Blocks Python and Node.js script execution when running as the knowledge-gardener agent (via permissionDecision: "deny"), enforcing read-only discipline.

Installation

Via slash commands

/plugin marketplace add voxpelli/vp-claude
/plugin install vp-knowledge@vp-plugins

Manual settings.json

Add to ~/.claude/settings.json:

{
  "extraKnownMarketplaces": {
    "vp-plugins": {
      "source": { "source": "github", "repo": "voxpelli/vp-claude" }
    }
  },
  "enabledPlugins": {
    "vp-knowledge@vp-plugins": true
  }
}

Prerequisites

Required

Basic Memory MCP server — the knowledge graph backend:

claude mcp add basic-memory -- basic-memory mcp

basic-memory-skills — core memory-* skills this plugin builds on. Install via skills.sh, the open agent skills CLI:

npx skills add basicmachines-co/basic-memory-skills

Required for enrichment pipelines

The /package-intel seven-source pipeline and /tool-intel five-source pipeline need these additional MCP servers and plugins. Context7 and Socket are used by /package-intel only; DeepWiki and Tavily are used by both; Readwise is used by both plus /knowledge-gaps.

DeepWiki — repository documentation and architecture questions:

claude mcp add --transport http deepwiki https://mcp.deepwiki.com/mcp

Context7 — library documentation and code examples:

/plugin install context7@claude-plugins-official

Tavily — web search for security advisories, CVEs, and recent articles. Requires a Tavily API key:

claude mcp add --transport http tavily https://mcp.tavily.com/mcp \
  --header "Authorization: Bearer tvly-YOUR_KEY_HERE"

Raindrop — searches your bookmarked articles. Requires a Raindrop.io Pro account:

claude mcp add --transport http raindrop https://api.raindrop.io/rest/v2/ai/mcp

Readwise — searches your reading highlights and saved articles from Readwise and Reader. Requires a Readwise account:

claude mcp add --transport http readwise https://mcp2.readwise.io/mcp

Socket — supply-chain risk scores (license, maintenance, quality, supply-chain, vulnerability) for npm, PyPI, Rust/cargo, and RubyGems packages. Used by /package-intel only:

claude mcp add --transport http socket-mcp https://mcp.socket.dev/

Optional for tool-intel

Homebrew MCP — bundled with Homebrew 4.5+ (brew mcp-server). Surfaces install analytics (30/90/365-day install counts and build-error counts) that the public formulae.brew.sh JSON API does not expose. /tool-intel picks them up as [popularity] observations on brew: and cask: notes; when the MCP is not installed, the step skips silently without affecting the rest of the research.

claude mcp add homebrew -- brew mcp-server

Optional

  • gh CLI — enables changelog analysis via GitHub releases in /package-intel

Plugin structure

.claude-plugin/plugin.json             Plugin manifest
skills/
  package-intel/
    SKILL.md                           Seven-source research workflow
    references/ecosystem-npm.md        npm registry API + note template
    references/ecosystem-crates.md     crates.io API + note template
    references/ecosystem-go.md         Go module proxy + note template
    references/ecosystem-composer.md   Packagist API + note template
    references/ecosystem-pypi.md       PyPI API + note template
    references/ecosystem-gems.md       RubyGems API + note template
  tool-intel/
    SKILL.md                           Five-source research workflow
    references/ecosystem-brew.md       formulae.brew.sh API
    references/ecosystem-cask.md       formulae.brew.sh/cask API
    references/ecosystem-action.md     action.yml extraction + permissions
    references/ecosystem-docker.md     Docker Hub API + tag strategy
    references/ecosystem-vscode.md     Open VSX API + VS Marketplace fallback
    references/note-template-brew.md   brew_formula note template
    references/note-template-cask.md   brew_cask note template
    references/note-template-action.md github_action note template
    references/note-template-docker.md docker_image note template
    references/note-template-vscode.md vscode_extension note template
  knowledge-gaps/
    SKILL.md                           Package + tool + concept coverage analysis
  knowledge-prime/
    SKILL.md                           Project context priming from BM
  schema-evolve/
    SKILL.md                           Schema drift detection and dual-sync
  session-reflect/
    SKILL.md                           On-demand conversation → memory capture
  knowledge-ask/
    SKILL.md                           Freeform Q&A against the BM knowledge graph
  vp-note-quality/
    SKILL.md                           Fourth-wall anti-pattern checklist (not user-invocable)
  tag-sync/
    SKILL.md                           Raindrop tag vocabulary sync
  wander/
    SKILL.md                           5-mode purposeless knowledge exploration
  readwise-check/
    SKILL.md                           Quick pre-research Readwise lookup
  session-bookmarks/
    SKILL.md                           Session URL bookmarking to Raindrop
  raindrop-triage/
    SKILL.md                           Interactive unsorted bookmark triage
    references/                        Tag selection strategy + promote workflow
  people-intel/
    SKILL.md                           Five-source person research
    references/note-template-person.md Person note template
    references/source-guide.md         Source-specific research guidance
agents/
  knowledge-gardener.md                Read-only graph auditor (tags + fourth-wall)
  knowledge-maintainer.md              Read-write graph enhancer (effort: high)
  knowledge-primer.md                  Autonomous project context priming
  raindrop-gardener.md                 Read-only Raindrop tag auditor
hooks/
  hooks.json                           PreToolUse, PostToolUse x2,
                                       PostToolUseFailure, SessionStart
  pre-bash-no-python.sh                Python/Node.js blocker for gardener agent
  post-bm-write-validate.sh            Schema validation after BM writes
  post-bm-failure-classify.sh          Error classification for BM failures
  session-start.sh                     Graph context + priming hint script
  post-file-edit.sh                    Shell formatting + schema sync script
schemas/
  npm_package.md                       npm package schema (npm_package type)
  crate_package.md                     Rust crate schema (crate_package type)
  go_module.md                         Go module schema (go_module type)
  composer_package.md                  PHP Composer schema (composer_package type)
  pypi_package.md                      Python PyPI schema (pypi_package type)
  ruby_gem.md                          Ruby gem schema (ruby_gem type)
  brew_formula.md                      Homebrew formula schema (brew_formula type)
  brew_cask.md                         Homebrew cask schema (brew_cask type)
  github_action.md                     GitHub Action schema (github_action type)
  docker_image.md                      Docker image schema (docker_image type)
  vscode_extension.md                  VSCode extension schema (vscode_extension type)
  engineering.md                       Engineering knowledge schema (engineering type)
  pattern.md                           Cross-domain structural insight schema (pattern type)
  reference.md                         Lookup document schema (reference type)
  standard.md                          Protocol/standard schema (standard type)
  concept.md                           Concept/movement schema (concept type)
  milestone.md                         Milestone/history schema (milestone type)
  service.md                           Service/product schema (service type)
  person.md                            Person schema (person type)
  project.md                           Project schema (project type)

How it fits together

 User says            Triggers              Output
 ─────────────────    ───────────────────    ──────────────────────────
 /package-intel X  -> package-intel skill -> <ecosystem>-X note + cross-links
 /tool-intel X     -> tool-intel skill    -> <type>-X note + cross-links
 /knowledge-gaps   -> knowledge-gaps skill-> gap report (packages, tools, concepts)
                                             + offers /package-intel, /tool-intel
 /knowledge-prime  -> knowledge-prime     -> context brief with gotchas + gaps
 /knowledge-ask Q  -> knowledge-ask skill -> cited answer + confidence tier
 /schema-evolve X  -> schema-evolve skill -> field proposals + dual-sync
 /tag-sync [N]     -> tag-sync skill     -> ~/.claude/references/raindrop-tags.md
 /session-bookmarks-> session-bookmarks  -> AI-bookmarked collection in Raindrop
 /raindrop-triage  -> raindrop-triage   -> dedupe + burst detect + tag + AI-triaged
                      (--promote)       -> classify into sorted/gems/archive/attention
 /wander [mode]    -> wander skill       -> serendipitous collisions (no scoring)
 /readwise-check X-> readwise-check    -> highlight count + document count + depth
 /session-reflect  -> session-reflect    -> BM notes + delegates /session-bookmarks
 /people-intel X   -> people-intel skill -> person note + cross-links
 "audit graph"     -> knowledge-gardener  -> health report (read-only, incl. tags)
 "fix the graph"   -> knowledge-maintainer-> structural + tag fixes + confirmations
                      ├── audits graph inline (lightweight)
                      ├── auto-fixes structure and tags
                      ├── auto-runs /package-intel for Tier 1 package gaps
                      ├── auto-runs /tool-intel for undocumented tool manifests
                      └── asks before content changes
 "prime context"   -> knowledge-primer    -> context brief (autonomous agent)
 "audit tags"      -> raindrop-gardener   -> tag health report (read-only)

 [any BM write]    -> PostToolUse hook    -> schema validation feedback
 [any file edit]   -> PostToolUse hook    -> shfmt drift diff + schema sync reminder
 [BM tool failure] -> PostToolUseFailure  -> classified error + recovery guidance
 [session start]   -> SessionStart hook   -> graph context + priming hint
 /session-reflect  -> session-reflect     -> preview + write to BM

Relationship to upstream

This plugin depends on but does not duplicate the 9 core memory-* skills from basicmachines-co/basic-memory-skills (notes, schema, tasks, lifecycle, reflect, etc.). It adds multi-ecosystem package research (npm, Rust, Go, PHP, Python, Ruby), developer tool research (Homebrew, GitHub Actions, Docker, VSCode), project-level gap analysis, project context priming, knowledge exploration, Readwise integration, schema evolution, tag alignment, and autonomous graph maintenance on top of those foundations.

Possible future additions

These are scoped out of current releases but worth tracking:

  • Tier-drift log for knowledge-gaps — track when packages move between tiers over time so you can see which undocumented packages are becoming more critical (medium effort, medium value)
  • Per-audit reflection notes from knowledge-gardener — the gardener is intentionally read-only; surfacing audit findings to Basic Memory would need a new output mechanism (e.g. a paired write agent step or a PostToolUse hook on the audit output)
  • Adaptive research depth in package-intel — extend the 60-day freshness check into a multi-tier strategy: skip specific sources based on what changed since last update, weight sources by past yield for a given package (Phase 2+ from ACE/MemInsight research patterns)

License

MIT

About

Claude Code plugin marketplace + plugin that turns Basic Memory into an actively maintained knowledge graph

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors