Understand-Anything understand-domain

Extract business domain knowledge from a codebase and generate an interactive domain flow graph. Works standalone (lightweight scan) or derives from an existing /understand knowledge graph.

install
source · Clone the upstream repo
git clone https://github.com/Lum1104/Understand-Anything
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Lum1104/Understand-Anything "$T" && mkdir -p ~/.claude/skills && cp -r "$T/understand-anything-plugin/skills/understand-domain" ~/.claude/skills/lum1104-understand-anything-understand-domain && rm -rf "$T"
manifest: understand-anything-plugin/skills/understand-domain/SKILL.md
source content

/understand-domain

Extracts business domain knowledge — domains, business flows, and process steps — from a codebase and produces an interactive horizontal flow graph in the dashboard.

How It Works

  • If a knowledge graph already exists (
    .understand-anything/knowledge-graph.json
    ), derives domain knowledge from it (cheap, no file scanning)
  • If no knowledge graph exists, performs a lightweight scan: file tree + entry point detection + sampled files
  • Use
    --full
    flag to force a fresh scan even if a knowledge graph exists

Instructions

Phase 1: Detect Existing Graph

  1. Check if
    .understand-anything/knowledge-graph.json
    exists in the current project
  2. If it exists AND
    --full
    was NOT passed → proceed to Phase 3 (derive from graph)
  3. Otherwise → proceed to Phase 2 (lightweight scan)

Phase 2: Lightweight Scan (Path 1)

The preprocessing script does NOT produce a domain graph — it produces raw material (file tree, entry points, exports/imports) so the domain-analyzer agent can focus on the actual domain analysis instead of spending dozens of tool calls exploring the codebase. Think of it as a cheat sheet: cheap Python preprocessing → expensive LLM gets a clean, small input → better results for less cost.

  1. Run the preprocessing script bundled with this skill:
    python ./extract-domain-context.py <project-root>
    
    This outputs
    <project-root>/.understand-anything/intermediate/domain-context.json
    containing:
    • File tree (respecting
      .gitignore
      )
    • Detected entry points (HTTP routes, CLI commands, event handlers, cron jobs, exported handlers)
    • File signatures (exports, imports per file)
    • Code snippets for each entry point (signature + first few lines)
    • Project metadata (package.json, README, etc.)
  2. Read the generated
    domain-context.json
    as context for Phase 4
  3. Proceed to Phase 4

Phase 3: Derive from Existing Graph (Path 2)

  1. Read
    .understand-anything/knowledge-graph.json
  2. Format the graph data as structured context:
    • All nodes with their types, names, summaries, and tags
    • All edges with their types (especially
      calls
      ,
      imports
      ,
      contains
      )
    • All layers with their descriptions
    • Tour steps if available
  3. This is the context for the domain analyzer — no file reading needed
  4. Proceed to Phase 4

Phase 4: Domain Analysis

  1. Read the domain-analyzer agent prompt from
    agents/domain-analyzer.md
  2. Dispatch a subagent with the domain-analyzer prompt + the context from Phase 2 or 3
  3. The agent writes its output to
    .understand-anything/intermediate/domain-analysis.json

Phase 5: Validate and Save

  1. Read the domain analysis output
  2. Validate using the standard graph validation pipeline (the schema now supports domain/flow/step types)
  3. If validation fails, log warnings but save what's valid (error tolerance)
  4. Save to
    .understand-anything/domain-graph.json
  5. Clean up
    .understand-anything/intermediate/domain-analysis.json
    and
    .understand-anything/intermediate/domain-context.json

Phase 6: Launch Dashboard

  1. Auto-trigger
    /understand-dashboard
    to visualize the domain graph
  2. The dashboard will detect
    domain-graph.json
    and show the domain view by default