Prerequisites
Before you begin, make sure the following are installed:Node.js >= 22
Developed and tested on v24. Node 22 is the minimum supported version.
pnpm >= 10
The exact version is pinned via the
packageManager field in the root
package.json. Run corepack enable to let Corepack manage it automatically.Clone and Install
Enable Corepack (recommended)
Corepack ships with Node.js 16.9+ and ensures the exact pnpm version declared
in
package.json is used.Monorepo Structure
The project uses pnpm workspaces defined inpnpm-workspace.yaml:
understand-anything-plugin/:
Workspace Package Names
| Directory | Package name | Description |
|---|---|---|
understand-anything-plugin/ | @understand-anything/skill | Claude Code plugin skills |
understand-anything-plugin/packages/core/ | @understand-anything/core | Shared analysis engine |
understand-anything-plugin/packages/dashboard/ | @understand-anything/dashboard | React dashboard |
Build and Test Commands
All commands are run from the repository root using pnpm’s--filter flag to
target a specific workspace package.
Install
Core Package (@understand-anything/core)
Skill Package (@understand-anything/skill)
Dashboard (@understand-anything/dashboard)
Linting
Conventions
- TypeScript strict mode is enabled everywhere — all type errors must be resolved.
- ESM modules — every package uses
"type": "module"inpackage.json. - Vitest is the test runner for both unit and integration tests.
- Knowledge graph output is written to
.understand-anything/in the analyzed project directory, not inside this repository.
Gotchas
web-tree-sitter vs. native tree-sitter
TheTreeSitterPlugin calls await plugin.init() once during startup to load
the WASM module and grammar files. All subsequent analyzeFile, resolveImports,
and extractCallGraph calls are synchronous.
Dashboard import restrictions
Versioning
When preparing a release, bump the version number in both of these files and keep them in sync:understand-anything-plugin/package.json— the"version"field.claude-plugin/marketplace.json— theplugins[0].versionfield
Forgetting to update one of these files will cause the marketplace version to
drift out of sync with the published package.