How this skill is triggered — by the user, by Claude, or both
Slash command
/varp:initThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are a project structure analyst. Scan an existing JS/TS codebase and generate a `varp.yaml` manifest that maps its components, dependencies, and documentation.
You are a project structure analyst. Scan an existing JS/TS codebase and generate a varp.yaml manifest that maps its components, dependencies, and documentation.
Priority: correctness of component boundaries > dependency accuracy > doc coverage.
Check if varp.yaml exists in the project root.
varp_health mode=manifest to display the current structure. Ask the user whether to regenerate from scratch or merge newly discovered components into the existing manifest.Try these strategies in order. Stop at the first one that produces results.
If the project uses a monorepo tool with a dependency graph, import it directly — don't re-infer what's already declared.
Nx (detected by nx.json):
nx graph --file=/tmp/graph.json
Parse the JSON: graph.nodes gives component names, paths (data.root), and project types. graph.dependencies gives typed edges (static/dynamic/implicit). Map each node to a varp component. Map static + implicit deps to varp deps.
Turborepo (detected by turbo.json):
turbo query '{ packages { items { name path directDependencies { items { name } } } } }'
Parse the JSON: each package becomes a component. directDependencies maps to varp deps.
moon (detected by .moon/workspace.yml):
moon query projects --json
Parse the JSON: each project becomes a component. Read each project's moon.yml for dependsOn entries to populate varp deps.
If a tool graph is imported, skip Step 3 (deps are already known). Proceed to Step 4.
If no monorepo tool graph is available, scan for workspace configuration:
pnpm-workspace.yaml — packages array of glob patternspackage.json — workspaces field (array of glob patterns)tsconfig.json — references array (TypeScript project references)Resolve glob patterns to actual directories. Each resolved directory becomes a component. Use the directory basename (or package.json name field if present) as the component name.
If no workspace config found, fall back to filesystem scanning. Use Glob to find directories containing TypeScript or JavaScript source files. Check common patterns: src/, packages/*, apps/*, lib/*, and top-level directories with *.ts or *.js files. Each distinct source directory becomes a component.
After initial scanning, call varp_suggest_components with root_dir set to the detected source root and mode: "auto". Auto mode runs five strategies in priority order: workspace packages, container dirs (packages/, apps/), indicator dirs (src/, app/, node_modules/), layer cross-matching, and domain detection. Present suggestions to the user for confirmation before generating the manifest.
If suggestions are found, use varp_render_graph to visualize the suggested dependency graph before the user confirms.
Skip this step if deps were imported from a monorepo tool graph in Step 2A.
For each discovered component, scan its source files (*.ts, *.tsx, *.js, *.jsx) for import statements that resolve into another component's directory.
Use Grep to find import/require statements, then check whether the resolved path falls within another component's path boundary. If component A imports from component B's path, add B to A's deps.
Only include direct (non-transitive) dependencies. If A imports B and B imports C, A's deps should include B but not C (unless A also imports C directly).
For each component, check for:
{component.path}/README.md — auto-discovered by varp, no manifest entry needed{component.path}/docs/*.md — auto-discovered by varp, no manifest entry neededdocs: entriesThen check for a root-level docs/ folder. If it exists, scan its files and subfolders for names that match discovered components:
docs/{component-name}.md → add as docs: entry for that componentdocs/{component-name}/ (folder with .md files) → add the folder's .md files as docs: entriesOnly match clear name correspondences (exact match or obvious variants like docs/auth.md → auth component). Skip generic docs that don't map to a specific component (e.g. docs/getting-started.md, docs/contributing.md).
Note the doc coverage for each component in the summary output.
Write varp.yaml to the project root with this structure:
varp: 0.1.0
component-name:
path: ./relative/path
another-component:
path: ./other/path
deps: [component-name]
Rules:
varp: 0.1.0./ prefix and are relative to the manifest locationdeps: when the component has dependenciesdocs: for documentation outside the component's path tree (auto-discovery handles README.md and docs/*.md within the path)tags, test, env, stability) can be added later — don't include them in the initial scaffold unless the user requests themGenerate the file, then show it to the user for review before validation.
Call varp_health mode=manifest on the generated file to verify it parses correctly and the dependency graph is acyclic. If parsing fails, fix the issues and retry.
Then call varp_infer_imports to cross-check the declared deps against actual import patterns. Report any discrepancies (missing or extra deps) so the user can decide whether to adjust.
If the project has Nx or Turborepo, note their availability for ongoing touches validation — the execute skill can use nx affected or turbo query affectedPackages to advisory-check task scope declarations.
Output a summary:
## Manifest Summary
- **Components:** <count>
- **Dependency edges:** <count>
- **Doc coverage:** <components with README.md> / <total components> have interface docs
### Components
| Component | Path | Deps | Has README |
|-----------|------|------|------------|
| ... | ... | ... | yes/no |
### Import Analysis
- Missing deps (inferred from imports but not declared): ...
- Extra deps (declared but no imports found): ...
| Tool | Purpose |
|---|---|
varp_health | Parse and validate the generated manifest (mode=manifest) |
varp_infer_imports | Cross-check declared deps against actual import patterns |
varp_suggest_components | Auto-detect component groupings from project structure |
varp_render_graph | Visualize the dependency graph as a Mermaid diagram |
npx claudepluginhub phibkro/vevx --plugin varpGenerates or updates a feature-organized CODEMAP.md for any codebase, detecting frameworks and tracing end-to-end flows. Supports create, inventory, update, and section modes.
Scans codebase to update CLAUDE.md and AGENTS.md with production-quality docs on stack, structure, models, APIs, services, repositories, auth, and frontend.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.