Agent skill

Codebase Domain Flow Extractor

by Egonex-AI in Egonex-AI/Understand-Anything

Extracts business domains, flows and process steps from a codebase and produces an interactive horizontal flow graph, reusing an existing knowledge graph when one exists.

MITAuto-check passedKnowledge Management

Install Codebase Domain Flow Extractor

skills CLI
$ npx skills add Egonex-AI/Understand-Anything --skill understand-domain -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Egonex-AI/Understand-Anything understand-domain --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Egonex-AI/Understand-Anything.git skills-src && mkdir -p .claude/skills && cp -r skills-src/understand-anything-plugin/skills/understand-domain .claude/skills/understand-domain && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
understand-domain
GitHub stars
86k
Token cost
~2.4k tokens
SKILL.md length
898 words
Files
2
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

Extracts business domains, flows and process steps from a codebase and produces an interactive horizontal flow graph, reusing an existing knowledge graph when one exists.

  • Works in 7 steps: Resolve PROJECT_ROOT → Detect Existing Graph → Lightweight Scan (Path 1) → …
  • Extracting business domain knowledge from an unfamiliar codebase
  • SKILL.md covers How It Works and Instructions
  • Runs Python scripts from its folder; calls git and python

What it does

When a knowledge graph already exists at .ua/knowledge-graph.json or its legacy path, the skill derives domain knowledge from it cheaply without rescanning files; otherwise it performs a lightweight scan of the file tree, entry points and sampled files, with a full flag available to force a fresh scan regardless. Before any of that, it resolves the project root, redirecting output to the main repository when run inside a git worktree, since a worktree's data directory is destroyed when the session ends and would take the domain graph with it.

The data directory itself is resolved once and reused across phases: it keeps using an existing legacy .understand-anything folder for projects that already have one, and defaults to .ua otherwise, with the resolution logic repeated in later phases since each may run in a fresh shell. The result is rendered as an interactive flow graph in the project's dashboard.

When your agent uses it

  • Extracting business domain knowledge from an unfamiliar codebase
  • Regenerating a domain flow graph after a fresh full scan
  • Running domain extraction safely from inside a git worktree

Example prompts

  • “Extract the business domains and flows from this codebase.”
  • “Run a full rescan of the domain graph instead of reusing the existing knowledge graph.”
  • “Generate the domain flow graph for this project and show me the dashboard.”

Requirements

  • Git, for worktree detection and project-root resolution

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Resolve PROJECT_ROOT
  2. Detect Existing Graph
  3. Lightweight Scan (Path 1)
  4. Derive from Existing Graph (Path 2)
  5. Domain Analysis
  6. Validate and Save
  7. Launch Dashboard

What it can do on your machine

Read from SKILL.md and the folder at commit 000fbf3. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • git
    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Codebase Domain Flow Extractor loads about 2.4k tokens when it runs. Until then it costs about 52 tokens; SKILL.md has 898 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~52
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Egonex-AI/Understand-Anything at commit 000fbf3, republished under its MIT licence (© Egonex-AI). 898 words, ~2,442 tokens.

Download SKILL.mdSave it as .claude/skills/understand-domain/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
understand-domain
description
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.
argument-hint
[--full]

/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 (.ua/knowledge-graph.json, or the legacy .understand-anything/knowledge-graph.json when that directory is present), 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 0: Resolve PROJECT_ROOT

Set PROJECT_ROOT to the current working directory.

Worktree redirect. If PROJECT_ROOT is inside a git worktree (not the main checkout), redirect output to the main repository root. Worktrees managed by Claude Code are ephemeral — the data directory (.ua/, or legacy .understand-anything/) written there is destroyed when the session ends, taking the domain graph with it (issue #133). Detect a worktree by comparing git rev-parse --git-dir against git rev-parse --git-common-dir; in a normal checkout or submodule they resolve to the same path, in a worktree they differ and the parent of --git-common-dir is the main repo root.

bash
COMMON_DIR=$(git -C "$PROJECT_ROOT" rev-parse --git-common-dir 2>/dev/null)
GIT_DIR=$(git -C "$PROJECT_ROOT" rev-parse --git-dir 2>/dev/null)
if [ -n "$COMMON_DIR" ] && [ -n "$GIT_DIR" ]; then
  COMMON_ABS=$(cd "$PROJECT_ROOT" && cd "$COMMON_DIR" 2>/dev/null && pwd -P)
  GIT_ABS=$(cd "$PROJECT_ROOT" && cd "$GIT_DIR" 2>/dev/null && pwd -P)
  if [ -n "$COMMON_ABS" ] && [ "$COMMON_ABS" != "$GIT_ABS" ]; then
    MAIN_ROOT=$(dirname "$COMMON_ABS")
    if [ -d "$MAIN_ROOT" ] && [ "${UNDERSTAND_NO_WORKTREE_REDIRECT:-0}" != "1" ]; then
      echo "[understand-domain] Detected git worktree at $PROJECT_ROOT"
      echo "[understand-domain] Redirecting output to main repo root: $MAIN_ROOT"
      echo "[understand-domain] (Set UNDERSTAND_NO_WORKTREE_REDIRECT=1 to keep PROJECT_ROOT as the worktree.)"
      PROJECT_ROOT="$MAIN_ROOT"
    fi
  fi
fi

Use $PROJECT_ROOT (not the bare CWD) for every reference to "the current project" / <project-root> in subsequent phases.

Resolve the data directory $UA_DIR. All Understand-Anything artifacts live in the project's data directory. Resolve it once, now that $PROJECT_ROOT is known, and reuse $UA_DIR for every read and write in later phases:

bash
UA_DIR="$PROJECT_ROOT/$([ -d "$PROJECT_ROOT/.understand-anything" ] && echo .understand-anything || echo .ua)"

This keeps the legacy .understand-anything/ directory when it already exists (existing projects keep working with no migration) and uses the new .ua/ otherwise. Because each phase may run in a fresh shell, carry $UA_DIR forward like $PROJECT_ROOT, re-resolving it with the line above if a later command block needs it.

Important: do not assume the plugin root is simply two directories above the skill path string. In many installations ~/.agents/skills/understand-domain is a symlink into the real plugin checkout. Prefer runtime-provided plugin roots first (for Claude), then fall back to universal symlinks, skill symlink resolution, and common clone-based install paths.

Resolve the plugin root like this:

bash
SKILL_REAL=$(realpath ~/.agents/skills/understand-domain 2>/dev/null || readlink -f ~/.agents/skills/understand-domain 2>/dev/null || echo "")
SELF_RELATIVE=$([ -n "$SKILL_REAL" ] && cd "$SKILL_REAL/../.." 2>/dev/null && pwd || echo "")
COPILOT_SKILL_REAL=$(realpath ~/.copilot/skills/understand-domain 2>/dev/null || readlink -f ~/.copilot/skills/understand-domain 2>/dev/null || echo "")
COPILOT_SELF_RELATIVE=$([ -n "$COPILOT_SKILL_REAL" ] && cd "$COPILOT_SKILL_REAL/../.." 2>/dev/null && pwd || echo "")

PLUGIN_ROOT=""
for candidate in \
  "${CLAUDE_PLUGIN_ROOT}" \
  "$HOME/.understand-anything-plugin" \
  "$SELF_RELATIVE" \
  "$COPILOT_SELF_RELATIVE" \
  "$HOME/.codex/understand-anything/understand-anything-plugin" \
  "$HOME/.opencode/understand-anything/understand-anything-plugin" \
  "$HOME/.pi/understand-anything/understand-anything-plugin" \
  "$HOME/understand-anything/understand-anything-plugin"; do
  if [ -n "$candidate" ] && [ -f "$candidate/package.json" ] && [ -f "$candidate/pnpm-workspace.yaml" ]; then
    PLUGIN_ROOT="$candidate"
    break
  fi
done

if [ -z "$PLUGIN_ROOT" ]; then
  echo "Error: Cannot find the understand-anything plugin root."
  echo "Checked:"
  echo "  - ${CLAUDE_PLUGIN_ROOT:-<unset CLAUDE_PLUGIN_ROOT>}"
  echo "  - $HOME/.understand-anything-plugin"
  echo "  - ${SELF_RELATIVE:-<unresolved path derived from ~/.agents/skills/understand-domain>}"
  echo "  - ${COPILOT_SELF_RELATIVE:-<unresolved path derived from ~/.copilot/skills/understand-domain>}"
  echo "  - $HOME/.codex/understand-anything/understand-anything-plugin"
  echo "  - $HOME/.opencode/understand-anything/understand-anything-plugin"
  echo "  - $HOME/.pi/understand-anything/understand-anything-plugin"
  echo "  - $HOME/understand-anything/understand-anything-plugin"
  echo "Make sure the plugin is installed correctly."
  exit 1
fi

Use $PLUGIN_ROOT for every reference to agent definitions in subsequent phases.

Phase 1: Detect Existing Graph
  1. Check if $UA_DIR/knowledge-graph.json exists
  2. If it exists AND --full was NOT passed, check freshness before deriving from it:
    • Read project.gitCommitHash from the graph metadata as GRAPH_COMMIT_RAW. Change to $PROJECT_ROOT, resolve it as a commit before using it in any Git diff, compare the resolved commit with git rev-parse HEAD, and inspect project-scoped committed and working-tree changes:
      bash
      GRAPH_COMMIT=$(git rev-parse --verify --end-of-options "${GRAPH_COMMIT_RAW}^{commit}" 2>/dev/null)
      git rev-parse HEAD
      git diff --name-only "$GRAPH_COMMIT" HEAD -- .
      git diff --cached --name-only -- .
      git diff --name-only -- .
      git ls-files --others --exclude-standard -- .
    • The -- . pathspec is required: commits that only touch a sibling monorepo project must not make this graph stale. A hash mismatch alone is not stale when the project diff is empty.
    • Ignore the selected data directory (.ua/ or legacy .understand-anything/) in every command's output because it contains generated graph artifacts, not project source drift.
    • If the committed diff or any working-tree command reports project files, warn that domain extraction may omit those changes. Suggest: Run /understand to refresh the knowledge graph.
    • Run the commit diff only when GRAPH_COMMIT_RAW resolves successfully. If the graph commit or Git metadata is missing, invalid, or unavailable, give a brief best-effort warning and continue instead of blocking.
  3. After that preflight, proceed to Phase 3 (derive from graph).
  4. Otherwise, proceed to Phase 2 (lightweight scan). When --full is used, skip this preflight because the command performs a fresh scan instead of consuming the existing graph.
Show full SKILL.md (312 more words)Show less
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, passing $PROJECT_ROOT from Phase 0:
    python ./extract-domain-context.py "$PROJECT_ROOT"
    This outputs $UA_DIR/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 $UA_DIR/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 $PLUGIN_ROOT/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 $UA_DIR/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 $UA_DIR/domain-graph.json
  5. Clean up $UA_DIR/intermediate/domain-analysis.json and $UA_DIR/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

© Egonex-AI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in understand-anything-plugin/skills/understand-domain of Egonex-AI/Understand-Anything.

  • SKILL.md
  • extract-domain-context.py

Open the folder on GitHubat commit 000fbf3

Compare with similar skills

Codebase Domain Flow Extractor next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Codebase Domain Flow Extractor compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Codebase Domain Flow Extractor this skillEgonex-AI/Understand-Anything86k—~2.4kAutomated safety check: PassMIT
Forgetful Repo EncodingScottRBK/forgetful301—~1kAutomated safety check: PassMIT
Explore Codebase with Graphtirth8205/code-review-graph32k1 repos~335Automated safety check: PassMIT
Acquire Codebase Knowledgegithub/awesome-copilot40k1 repos~2.3kAutomated safety check: PassMIT
Compasscrabbuild/compass171—~5kAutomated safety check: PassCustom licence
Dossier Collectruvnet/ruflo74k—~1.1kAutomated safety check: NotesMIT

Similar skills

  • Forgetful Repo Encoding

    ScottRBK/forgetful

    Encodes a repository into the Forgetful knowledge base as a project, entities, atomic memories and documents, so a second run updates instead of duplicating.

    301 GitHub stars~1k tokensUpdated today
    Knowledge ManagementAuto-check passed
  • Explore Codebase with Graph

    tirth8205/code-review-graph

    Navigates a codebase through the code-review-graph MCP tools: architecture overview, symbol search, caller and callee tracing, flows and oversized functions.

    32k GitHub starsUsed in 1 repo~335 tokens
    DevelopmentAuto-check passed
  • Acquire Codebase Knowledge

    github/awesome-copilot

    Official

    Maps an unfamiliar codebase into seven evidence-backed documents in docs/codebase/, using a scan script and templates, for onboarding or architecture write-ups.

    40k GitHub starsUsed in 1 repo~2.3k tokens
    DevelopmentAuto-check passed
  • Compass

    crabbuild/compass

    A skill your agent uses for graph-first AI coding sessions and repository analysis: session initialization, architecture maps, dependency or call-graph tracing, symbol and repository search…

    171 GitHub stars~5k tokensUpdated 8 days ago
    DevelopmentAuto-check passed
  • Dossier Collect

    ruvnet/ruflo

    Build a graph-structured dossier on a seed entity via parallel fan-out + recursive expansion across web, memory, knowledge-graph, codebase, ADR index, and git intel

    74k GitHub stars~1.1k tokensUpdated yesterday
    DevelopmentAuto-check: notes
  • Qe Code Intelligence

    proffesor-for-testing/agentic-qe

    Builds semantic code indexes, maps dependency graphs, and performs intelligent code search across large codebases.

    495 GitHub stars~1.4k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed

More from Egonex-AI/Understand-Anything

  • Codebase Knowledge Graph Q&A

    Egonex-AI/Understand-Anything

    Answers questions about a codebase by searching a prebuilt knowledge graph of its files, functions, classes and dependencies, not by rereading every source file.

    86k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Understand Diff Analysis

    Egonex-AI/Understand-Anything

    Reads your git changes or a pull request against a prebuilt knowledge graph of the project to explain what changed, which components are affected and what is risky.

    86k GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Understand Explain

    Egonex-AI/Understand-Anything

    Gives an in-depth explanation of one file, function or module by reading the project's knowledge graph and checking that the graph is still fresh.

    86k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Writes an onboarding guide for new team members from a project's existing knowledge graph, after checking that the graph still matches the current commit.

    86k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Figma Design Knowledge Graph

    Egonex-AI/Understand-Anything

    Scans a Figma file through the Figma REST API and builds an interactive knowledge graph of its pages, screens, components and tokens for the design dashboard.

    86k GitHub stars~1k tokensUpdated today
    Auto-check passed
  • LLM Wiki Knowledge Graph

    Egonex-AI/Understand-Anything

    Detects a Karpathy-pattern LLM wiki and builds an interactive knowledge graph with entities, implicit relationships and topic clusters.

    86k GitHub stars~1.5k tokensUpdated today
    Auto-check passed

Works with

Questions about Codebase Domain Flow Extractor

What does Codebase Domain Flow Extractor do?

Extracts business domains, flows and process steps from a codebase and produces an interactive horizontal flow graph, reusing an existing knowledge graph when one exists. json or its legacy path, the skill derives domain knowledge from it cheaply without rescanning files; otherwise it performs a lightweight scan of the file tree, entry points and sampled files, with a full flag available to force a fresh scan regardless. Before any of that, it resolves the project root, redirecting output to the main repository when run inside a git worktree, since a worktree's data directory is destroyed when the session ends and would take the domain graph with it.

When should I use Codebase Domain Flow Extractor?

Codebase Domain Flow Extractor fits situations like: extracting business domain knowledge from an unfamiliar codebase; regenerating a domain flow graph after a fresh full scan; running domain extraction safely from inside a git worktree.

How do I install Codebase Domain Flow Extractor in Claude Code?

Run `npx skills add Egonex-AI/Understand-Anything --skill understand-domain -a claude-code`. Or copy the skill folder (understand-anything-plugin/skills/understand-domain in Egonex-AI/Understand-Anything) into .claude/skills/understand-domain in your project. Claude Code loads it when a task matches its description.

How do I install Codebase Domain Flow Extractor in Codex?

Run `npx skills add Egonex-AI/Understand-Anything --skill understand-domain -a codex`. Or copy the skill folder (understand-anything-plugin/skills/understand-domain in Egonex-AI/Understand-Anything) into .agents/skills/understand-domain in your project. Codex loads it when a task matches its description.

Can I use Codebase Domain Flow Extractor in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Egonex-AI/Understand-Anything --skill understand-domain -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/understand-domain, .gemini/skills/understand-domain, .github/skills/understand-domain and .opencode/skills/understand-domain in your project.

What does Codebase Domain Flow Extractor need to run?

Going by SKILL.md and its folder, Codebase Domain Flow Extractor needs Python for the scripts in its folder and the command-line tools its instructions call (git and python). Our summary lists: Git, for worktree detection and project-root resolution.

Does Codebase Domain Flow Extractor access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Codebase Domain Flow Extractor safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Codebase Domain Flow Extractor use?

Codebase Domain Flow Extractor is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Codebase Domain Flow Extractor use?

About 2.4k tokens (SKILL.md is roughly 9.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Codebase Domain Flow Extractor?

Skills that share tags, products or a category with Codebase Domain Flow Extractor: Forgetful Repo Encoding (ScottRBK/forgetful, 301 stars), Explore Codebase with Graph (tirth8205/code-review-graph, 32k stars), Acquire Codebase Knowledge (github/awesome-copilot, 40k stars) and Compass (crabbuild/compass, 171 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Codebase Domain Flow Extractor?

Egonex-AI (a GitHub organization) maintains it in Egonex-AI/Understand-Anything, which has 85,866 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 10, 2026.

Source: Egonex-AI/Understand-Anything on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.