

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
1# Understand Anything23## Project Overview4An open-source tool combining LLM intelligence + static analysis to produce interactive dashboards for understanding codebases.56## Prerequisites7- Node.js >= 22 (developed on v24)8- pnpm >= 10 (pinned via `packageManager` field in root `package.json`)910## Architecture11- **Monorepo** with pnpm workspaces12- **understand-anything-plugin/** — Claude Code plugin containing all source code:13 - **packages/core** — Shared analysis engine (types, persistence, tree-sitter, search, schema, tours, plugins)14 - **packages/dashboard** — React + TypeScript web dashboard (React Flow, Zustand, TailwindCSS v4)15 - **src/** — Skill TypeScript source for `/understand-chat`, `/understand-diff`, `/understand-explain`, `/understand-onboard`16 - **skills/** — Skill definitions (`/understand`, `/understand-dashboard`, etc.)17 - **agents/** — Agent definitions (project-scanner, file-analyzer, architecture-analyzer, tour-builder, graph-reviewer)1819## Dashboard20- Dark luxury theme: deep blacks (#0a0a0a), gold/amber accents (#d4a574), DM Serif Display typography21- Graph-first layout: 75% graph + 360px right sidebar22- No ChatPanel or Monaco Editor23- Sidebar tabs: `Info` (ProjectOverview default → NodeInfo when node selected → LearnPanel in Learn persona, composing) and `Files` (FileExplorer tree built from the structural graph)24- Code viewer: prism-react-renderer source viewer that slides up from the bottom on file node click; an expand button promotes it into a full-screen modal. Source content is fetched from the dev server's `/file-content.json` endpoint, gated by access token + a graph-derived path allowlist25- Schema validation on graph load with error banner2627## Agent Pipeline28- Agents write intermediate results to the data directory's `intermediate/` subdirectory on disk (not returned to context) — `.ua/intermediate/`, or `.understand-anything/intermediate/` when that legacy directory is present29- Agent model field is omitted from frontmatter so each platform falls back to its configured default — `inherit` was a Claude Code-only keyword that opencode (and similar tools) treated as a literal model id and rejected with `ProviderModelNotFoundError` (see #167)30- `/understand` auto-triggers `/understand-dashboard` after completion31- Intermediate files cleaned up after graph assembly3233## Key Commands34- `pnpm install` — Install all dependencies35- `pnpm --filter @understand-anything/core build` — Build the core package36- `pnpm --filter @understand-anything/core test` — Run core tests37- `pnpm --filter @understand-anything/skill build` — Build the plugin package38- `pnpm test` — Run all tests (skill tests live at repo-root `tests/skill/`, picked up by root `vitest.config.ts`)39- `pnpm --filter @understand-anything/dashboard build` — Build the dashboard40- `pnpm dev:dashboard` — Start dashboard dev server41- `pnpm lint` — Run ESLint across the project4243## Conventions44- TypeScript strict mode everywhere45- Vitest for testing46- ESM modules (`"type": "module"`)47- Knowledge graph JSON lives in the analyzed project's data directory: `.ua/` for new projects, or the legacy `.understand-anything/` directory when it already exists (if `.understand-anything/` is present it is used for both reads and writes; otherwise `.ua/`). All bundled scripts and core code self-resolve this rule.48- Core uses subpath exports (`./search`, `./types`, `./schema`) to avoid pulling Node.js modules into browser4950## Gotchas51- **tree-sitter**: Uses `web-tree-sitter` (WASM) instead of native `tree-sitter` — native bindings fail on darwin/arm64 + Node 2452- **Dashboard imports**: Dashboard must only import from core's browser-safe subpath exports (`./search`, `./types`, `./schema`), never the main entry point which pulls in Node.js modules5354## Scripts55- `scripts/generate-large-graph.mjs` — Generates a fake knowledge graph for performance testing (e.g. large-graph layout). Writes to the project data directory's `knowledge-graph.json` (`.ua/knowledge-graph.json`, or `.understand-anything/` when that legacy directory is present). Usage: `node scripts/generate-large-graph.mjs [nodeCount]` (default: 3000 nodes). Not part of the production pipeline.5657## Viewer Package58`packages/viewer` serves a committed graph without Claude Code, via `npx <release-asset-url>`. Update it when (a) the dashboard UI changes — the tarball embeds the built `dist/` — or (b) the `vite.config.ts` dev-server middleware changes, which `bin/viewer.mjs` deliberately mirrors. On every release, repack (`pack:release` script) and re-upload the tarball to the GitHub release as `understand-anything-viewer.tgz` — exactly that name, the READMEs' `releases/latest/download/` URL depends on it.5960## Versioning61When pushing to remote, bump the version in **all six** of these files (keep them in sync):62- `understand-anything-plugin/package.json` → `"version"` field63- `understand-anything-plugin/.claude-plugin/plugin.json` → `"version"` field64- `understand-anything-plugin/packages/viewer/package.json` → `"version"` field65- `.claude-plugin/plugin.json` → `"version"` field66- `.cursor-plugin/plugin.json` → `"version"` field67- `.copilot-plugin/plugin.json` → `"version"` field6869Note: `.claude-plugin/marketplace.json` does **not** carry a version — the `plugins[]` entry only supports `name` and `source`, and adding other fields causes marketplace schema validation failures.7071## Testing Local Plugin Changes7273Claude Code caches installed plugins at `~/.claude/plugins/cache/understand-anything/understand-anything/<version>/`. Symlinks don't work because Claude's Search/Glob tools can't follow them. To test local changes:74751. **Build the packages:**76```bash77 pnpm --filter @understand-anything/core build78 pnpm --filter @understand-anything/skill build79```80812. **Find the installed version** (must match what the marketplace currently serves):82```bash83 ls ~/.claude/plugins/cache/understand-anything/understand-anything/84```85863. **Copy your local plugin into the cache**, replacing `<VERSION>` with the version from step 2:87```bash88 rm -rf ~/.claude/plugins/cache/understand-anything/understand-anything/<VERSION>89 cp -R ./understand-anything-plugin ~/.claude/plugins/cache/understand-anything/understand-anything/<VERSION>90```91924. **Start a fresh Claude Code session** (existing sessions cache the old prompts in context).93945. **Run `/understand --full`** in the target project to verify.9596**Re-sync after further changes:**97```bash98pnpm --filter @understand-anything/core build && \99cp -R ./understand-anything-plugin/* ~/.claude/plugins/cache/understand-anything/understand-anything/<VERSION>/100```101102**To revert to upstream:** Uninstall and reinstall the plugin from the marketplace — it repopulates the cache from the upstream repo.103
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| bagisto/bagistoCLAUDE.md · 28k | CLAUDE.md | setupbuildteststyle+5 | 100/100 | 7 days ago | |
| Adit-Jain-srm/NightmareNetCLAUDE.md · 46 | CLAUDE.md | buildtestlint-formatstyle+6 | 100/100 | 14 days ago | |
| tyrchen/geektime-bootcamp-aiw7/genslides/backend/CLAUDE.md · 230 | CLAUDE.md | testlint-formatstylearch+6 | 100/100 | 9 days ago | |
| nimbalyst/nimbalystpackages/android/CLAUDE.md · 1.5k | CLAUDE.md | setupbuildstylearch+2 | 100/100 | 14 days ago | |
| dotCMS/corecore-web/CLAUDE.md · 949 | CLAUDE.md | teststylearchtesting-strategy+3 | 100/100 | 14 days ago | |
| microsoft/playwrightCLAUDE.md · 95k | CLAUDE.md | buildtestlint-formatstyle+7 | 100/100 | 7 days ago | |
| tphakala/birdnet-goCLAUDE.md · 1.6k | CLAUDE.md | buildtestlint-formatstyle+8 | 100/100 | today | |
| livewire/livewireCLAUDE.md · 24k | CLAUDE.md | setupbuildteststyle+4 | 100/100 | 14 days ago |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/egonex-ai-understand-anything-claude)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.