Edge weights, node ID prefix conventions, and tag formatting were listed
in both Check 1 (Schema Validation — Critical) and Check 7 (Quality —
Warning). A deterministic script following check headings would classify
these as warnings, potentially approving invalid graphs. Remove the
duplicates from Check 7 since Check 1 already covers them as critical.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The exclusion rule conditionally kept .sh files for bash-first projects,
but the source-file whitelist and language mapping table had no .sh entry,
causing retained shell files to be dropped or untyped. Add .sh/.bash to
the whitelist and language table (mapped to 'bash'), and remove the
conditional exclusion rule.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Duplicate node IDs were listed under Check 6 (Warning) but classified as
critical in the Severity Classification section. A script following check
headings would classify duplicates as warnings, letting invalid graphs
pass review. Move duplicate-ID check to its own Check 5 (Critical) and
renumber subsequent checks.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Redesign all 5 agent prompts with a "Phase 1 — Script" + "Phase 2 — LLM
Reasoning" structure. Agents now write and execute scripts for deterministic
work (validation, file discovery, structure extraction, graph analysis)
before applying LLM judgment for semantic tasks (summaries, tags, pedagogy).
Key changes per agent:
- graph-reviewer: script performs all 6 validation checks deterministically
- project-scanner: script handles file discovery, language detection, line counting
- file-analyzer: script extracts functions/classes/imports via regex patterns
- architecture-analyzer: script computes import adjacency, inter-group frequency
- tour-builder: script calculates fan-in, BFS traversal, cluster detection
Design safeguards:
- scriptCompleted sentinel field guards against partial script output
- Batch-indexed temp paths prevent collision in concurrent file-analyzer agents
- Explicit "trust the script" directives prevent LLM from re-reading raw data
- Up to 2 script retries on failure
- Explicit instructions to strip intermediate fields from final output
- Bash tool added to all agent tool lists
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Previously only FILE nodes responded to clicks with the code viewer overlay.
Now all node types open the detail viewer on click. Also added a direct click
handler on CustomNode to fix click events not firing for child nodes inside
group layers on Windows.
Bump version to 1.0.4.
Add Vite resolve aliases for core subpath exports (schema, search, types)
to fix import resolution on Windows where Node.js package exports are not
properly followed by Vite's import analysis.
Bump version to 1.0.3.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add pnpm-workspace.yaml to plugin distribution so workspace:* deps resolve on install
- Add devlop and hast-util-to-jsx-runtime as explicit dashboard dependencies (pnpm strict hoisting)
- Make tsconfig.json files self-contained to work outside monorepo root
- Add prepare script to auto-build core package after pnpm install
- Bump version to 1.0.2
The nested plugin.json inside understand-anything-plugin/.claude-plugin/
conflicted with the root marketplace.json, causing Claude Code to fail
when installing the plugin in user scope with "Source path does not exist" error.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove ChatPanel and @anthropic-ai/sdk dependency (redundant with /understand-chat)
- Replace Monaco editor with styled summary code viewer
- New graph-first layout: 75% graph + 360px right sidebar
- Dark luxury aesthetic: deep blacks, gold/amber accents, DM Serif Display typography
- Add ProjectOverview component for sidebar default state
- Learn persona now shows tour panel directly in sidebar
- Add schema validation on graph load with error banner
- Defensive null checks in store for tour methods
- Agent pipeline: write intermediate results to disk instead of context
- Agent models: sonnet for simple tasks, opus for complex (no haiku)
- Prompt-engineer all 5 agent prompts and SKILL.md
- Auto-trigger /understand-dashboard after /understand completes
- Add dashboard screenshot to README
- Bump version to 1.0.1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace "read the whole graph file" instructions with targeted Grep-based
reading in /understand-chat, /understand-diff, /understand-explain, and
/understand-onboard. Each skill now includes a Graph Structure Reference
and extracts only the relevant subgraph (matched nodes + 1-hop edges)
instead of dumping the entire JSON into context. Also update /understand
to reference /understand-dashboard.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New skill command that starts the Vite dev server to visualize the
knowledge graph in a web dashboard.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move packages/{core,dashboard,skill} into understand-anything-plugin/ to
conform to the Claude Code plugin format. Add .claude-plugin/marketplace.json
for plugin discovery. Update workspace config and docs accordingly.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Vite dev server now looks for .understand-anything/knowledge-graph.json
in the project root, so users don't need to manually copy the graph file
into public/. Also updates README with clearer installation and usage
instructions, and adds dashboard viewing steps to /understand SKILL.md.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move existing skills from .claude/skills/ to skills/*/SKILL.md plugin
format. Update CLAUDE.md to reflect all skill commands. Add phase 2
implementation plan.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implements the main /understand skill that orchestrates 5 specialized
agents in a 7-phase pipeline to analyze codebases and produce
knowledge-graph.json. Supports full and incremental analysis modes.
- project-scanner (haiku): file discovery, language/framework detection
- file-analyzer (sonnet): code structure extraction, node/edge generation
- architecture-analyzer (sonnet): architectural layer identification
- tour-builder (sonnet): guided learning tour generation
- graph-reviewer (haiku): graph validation and quality checks
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add SemanticSearchEngine class that stores pre-computed vector embeddings
for graph nodes and performs cosine similarity search. Enables true semantic
queries (e.g., "find code that handles authentication") even when keywords
don't appear in node data. Returns the same SearchResult type as the
existing Fuse.js-based SearchEngine for compatibility.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Introduces PluginRegistry class that discovers, registers, and manages
analyzer plugins. Maps file extensions to languages, provides a unified
analyzeFile entrypoint, and supports plugin priority via registration
order. Foundation for the community plugin system.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Generates a structured markdown onboarding guide from the knowledge graph,
including project overview, architecture layers, key concepts, guided tour,
file map, and complexity hotspots.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds the explain-builder module that constructs rich context for explaining
a specific file or function. Supports file paths and path:function notation,
gathers child nodes, connected components, layer membership, and formats
a structured prompt for LLM-powered deep-dive explanations.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds buildDiffContext and formatDiffAnalysis to map git diffs against
the knowledge graph, identifying changed nodes, affected components,
impacted layers, and risk assessment. Includes 11 tests and skill
definition for Claude Code integration.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Three persona modes change the dashboard experience:
- Overview (non-technical): 2-column layout with graph + learn/chat,
hides CodeViewer, filters graph to concept/module/file nodes only
- Learn (junior): full 4-panel layout with tabbed Details/Tour panel
- Deep Dive (experienced): full 4-panel layout with NodeInfo, tour
tabs only shown when tour is explicitly active
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace plain blue box with indigo-themed collapsible panel featuring
chevron toggle, matching the indigo design language used in LearnPanel.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Wire tourHighlightedNodeIds from the store into GraphView and CustomNode
so that nodes referenced by the current tour step get a pulsing blue ring,
visually distinct from the white selection ring and yellow search rings.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add detectLanguageConcepts, buildLanguageLessonPrompt, and
parseLanguageLessonResponse to support language-specific lessons tied
to individual graph nodes. Includes 12 concept detection patterns
(async/await, generics, middleware, etc.) and structured LLM prompt
generation with JSON response parsing. 10 new tests, 104 total passing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add "Explain This" button to NodeInfo panel that generates a detailed
plain-English explanation of the selected node using Claude API. Explanations
are cached per node ID and cleared on node switch.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add tour state management (tourActive, currentTourStep, tourHighlightedNodeIds)
to the Zustand store with start/stop/navigate actions. Create LearnPanel
component with three states: no tour, tour preview, and active tour with
step navigation, markdown descriptions, language lesson boxes, and
referenced component pills. Replace bottom-right panel in App.tsx with
tabbed Details/Tour view when a tour is available.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add three exported functions for generating guided codebase tours:
- buildTourGenerationPrompt: builds LLM prompt with project metadata
- parseTourGenerationResponse: parses LLM JSON response with validation
- generateHeuristicTour: topology-based tour using Kahn's algorithm,
with layer grouping and concept node separation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 3 (7 tasks): Tour generation engine, LearnPanel + tour store,
tour player with graph highlighting, contextual node explanations,
language lesson prompts, enhanced language display, persona modes.
Phase 4 (7 tasks): /understand-diff, /understand-explain,
/understand-onboard skills, plugin registry + discovery,
embedding-based semantic search + dashboard integration.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rich sample knowledge graph with 20 nodes (all 5 types), 28 edges
(10 edge types), 5 layers, and 6 tour steps themed as a task
management API. Updated CLAUDE.md with skill commands and Phase 2
feature list. Updated README with current status, Phase 2 features,
commands table, and skill usage instructions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Render assistant messages with ReactMarkdown (headers, code blocks,
lists, bold, links, blockquotes) instead of plain whitespace-pre-wrap
- Add "Change Key" button in chat header to clear and re-enter API key
- Document the plain-text localStorage tradeoff for API key storage
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Pass search score through to CustomNode for tiered ring highlighting
(bright/medium/dim based on score), and wrap SearchBar's nodeMap in
useMemo to avoid rebuilding it on every render.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace manual substring search in Zustand store with core SearchEngine
(Fuse.js fuzzy matching). SearchBar now shows a top-5 dropdown with type
badges and relevance bars; closes on Escape/outside click. GraphView
updated to work with SearchResult[] (nodeId+score) instead of string[].
Added sub-path exports to core package.json so the dashboard can import
search/types modules without pulling in Node.js-only dependencies.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add the @understand-anything/skill package with context-builder (search +
1-hop expansion + layer resolution), chat prompt builder, skill definition
for Claude Code, and 14 passing tests.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add __tests__ and __specs__ (plural inside underscores) to Test Layer
patterns for the common convention. Also assign file nodes without
filePath to "Other" layer in applyLLMLayers for consistency.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add layer-detector module with four exported functions:
- detectLayers: heuristic detection using directory path patterns
- buildLayerDetectionPrompt: generates LLM prompt for layer identification
- parseLayerDetectionResponse: parses LLM JSON response with fence handling
- applyLLMLayers: applies LLM-provided layer definitions to the graph
Includes 10 tests covering all four functions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>