From vp-knowledge
This skill should be used when the user asks to 'prime context', 'load project knowledge', 'what do we know about this project', 'knowledge brief', 'project context', 'what packages are documented', 'show coverage for this project', 'dependency coverage report', 'which of our deps have notes', 'knowledge primer', 'prime session', 'context for this project'. Surfaces project-relevant Basic Memory knowledge at session start or on demand — dependency coverage, key gotchas, engineering context, and gaps. NOT for freeform topic questions about individual packages or concepts (use /knowledge-ask for that).
How this skill is triggered — by the user, by Claude, or both
Slash command
/vp-knowledge:knowledge-primeThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Surface project-relevant Basic Memory knowledge as a concise context brief.
Surface project-relevant Basic Memory knowledge as a concise context brief. Identifies which dependencies and tools are documented, loads key gotchas and patterns, and highlights gaps worth filling.
--deep — expand observation loading from 800 to 2000 tokens and include
[pattern], [feature], [usage] categories alongside the default critical
categories. Also expands graph traversal from top 6 to top 12 notes.--deep on a small graph (<10 notes) — treat as compact mode.
Report "Graph has fewer than 10 notes — showing all relevant notes."Detect manifest files in the current working directory:
| Manifest file | Ecosystem | BM directory | Prefix |
|---|---|---|---|
package.json | npm | npm/ | npm: |
Cargo.toml | Rust | crates/ | crate: |
go.mod | Go | go/ | go: |
composer.json | PHP | composer/ | composer: |
pyproject.toml or requirements.txt | Python | pypi/ | pypi: |
Gemfile | Ruby | gems/ | gem: |
Brewfile | Homebrew | brew/, casks/ | brew:, cask: |
.github/workflows/*.yml | Actions | actions/ | action: |
Dockerfile | Docker | docker/ | docker: |
.vscode/extensions.json | VSCode | vscode/ | vscode: |
Use Read to check for root-level manifest files — do not use Glob, which recurses into node_modules/ and similar directories. Use Glob only for wildcard paths like .github/workflows/*.yml. For detected package manifests, use
Read to extract dependency names:
package.json → dependencies + devDependencies keysCargo.toml → [dependencies] + [dev-dependencies] tablesgo.mod → require blockcomposer.json → require + require-dev keyspyproject.toml → [project.dependencies] or dependencies keyrequirements.txt → package names (before ==/>=/etc.)Gemfile → gem '...' linesFor tool manifests, extract tool names:
Brewfile → brew "...", cask "...", vscode "..." lines.github/workflows/*.yml → uses: lines (extract owner/repo)Dockerfile → FROM lines (extract image names).vscode/extensions.json → recommendations arrayFor each detected ecosystem, list documented notes:
list_directory(dir_name="npm", depth=1)
list_directory(dir_name="crates", depth=1)
list_directory(dir_name="brew", depth=1)
# ... (only for ecosystems detected in step 1)
Each list_directory call costs ~50 tokens — only query ecosystems that have
manifest files in the project.
Cross-reference: for each dependency from step 1, check if a corresponding
note title exists in the list_directory results. Build two lists:
Assign relevance scores to documented notes using three passes:
Pass 1 — Dependency match (score: 3): Notes whose title matches a direct project dependency.
Pass 2 — Graph expansion (score: 2): For top-scoring notes from pass 1, expand via:
build_context(url="memory://npm/<pkg>", depth=1, max_related=5)
Related notes that appear get score 2 (transitive relevance).
Pass 3 — Beads/activity boost (score: 1): Fetch recent activity now (needed for scoring before sorting):
recent_activity(timeframe="7d", output_format="json")
Paginate until has_more=false to ensure complete 7-day activity window.
If the project has .beads/ (check via Glob(pattern=".beads/*")) or
recent_activity shows notes updated in the last 7 days, those notes get
+1 boost.
Sort all scored notes descending. Take top 6 (or top 12 with --deep).
For each top-scored note, load critical observations:
read_note(identifier="<note-title>", include_frontmatter=true)
Extract only observations tagged with critical categories:
[gotcha] — known pitfalls[limitation] — constraints to be aware of[breaking] — breaking changes
With --deep, also include [pattern], [feature], and [usage] categories.Token budget: 800 tokens total (2000 with --deep). If observations
exceed the budget, prioritize [gotcha] > [breaking] > [limitation] >
[pattern].
Search for critical observations beyond the top-scored notes:
search_notes(query="gotcha breaking limitation", search_type="text", entity_types=["observation"], page_size=10)
Note: BM's search treats space-separated terms and OR identically (hybrid
search, not strict FTS5 boolean). The query above is equivalent to
"gotcha OR breaking OR limitation" — use the simpler form.
Post-filter: Keep only observations whose content starts with [gotcha],
[breaking], or [limitation]. Discard others — the text query matches
these words anywhere, including prose mentions that are not category tags.
Deduplication: Build a set of note titles loaded in Step 4. Discard observations from notes already in that set — Step 4 extracted their critical observations in full context. Keep only observations from new notes.
Token budget: 200 tokens (400 with --deep), separate from Step 4's
800/2000 budget. Prioritize [gotcha] > [breaking] > [limitation].
Output: Swept observations appear in a separate ### Other warnings
section in the brief (Step 6), after ### Key gotchas. Include the parent
note title as attribution. Max 3 entries to protect the "scannable in
30 seconds" goal. Omit the section entirely if no new observations survive
filtering.
If search_notes fails or returns an error, skip this step and proceed to
Step 5. Note "Observation sweep skipped (BM search unavailable)" in the
brief header.
10 results is sufficient — do not paginate even if has_more is true.
Using the recent_activity results fetched in Step 3, note which of the
top-scored notes were recently updated — these are most likely to be relevant
to current work. Include in the brief output.
Produce a structured context brief:
## 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
### Other warnings
- **npm-helmet** — [gotcha] CSP defaults are permissive — tighten for production
### Recent activity
- 3 notes updated in last 7 days: npm-fastify, npm-pino, brew-ripgrep
### Gaps worth filling
- Top undocumented dep: `undici`
- Run `/knowledge-gaps` for full coverage analysis
- Run `/package-intel undici` to document the top gap
Based on the brief:
/package-intel <pkg> for the top one/knowledge-gaps first, then batch /package-intelnpx claudepluginhub voxpelli/vp-claude --plugin vp-knowledgeGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.