From a4daccc54b3963e1c71107a183a0f11a27a6f461 Mon Sep 17 00:00:00 2001 From: Lum1104 Date: Thu, 2 Apr 2026 14:26:39 +0800 Subject: [PATCH] feat(skills): add /understand-domain skill for business domain knowledge extraction Co-Authored-By: Claude Opus 4.6 (1M context) --- .../skills/understand-domain/SKILL.md | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 understand-anything-plugin/skills/understand-domain/SKILL.md diff --git a/understand-anything-plugin/skills/understand-domain/SKILL.md b/understand-anything-plugin/skills/understand-domain/SKILL.md new file mode 100644 index 0000000..6dbfc12 --- /dev/null +++ b/understand-anything-plugin/skills/understand-domain/SKILL.md @@ -0,0 +1,67 @@ +--- +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 (`.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) + +1. Run the preprocessing script bundled with this skill: + ``` + python understand-anything-plugin/skills/understand-domain/extract-domain-context.py + ``` + This outputs `.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) +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` + +### 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