본문으로 건너뛰기
cccskills
무료GitHub에 공개한국어 소개

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.

AI 평가70점/ 100설치 방법 보기

이럴 때 유용합니다

  • 코드에 구현된 업무 흐름 파악
  • 업무 영역과 단계 사이의 연결 시각화
  • 기존 지식 그래프를 업무 관점으로 정리
  • 재스캔으로 업무 흐름도 갱신

한국어 소개

할 수 있는 일

understand-domain은 코드에서 업무 영역, 처리 흐름, 개별 단계를 추출해 대시보드에서 조작할 수 있는 가로형 흐름도로 만듭니다. 기존 지식 그래프가 있으면 구성 요소와 관계를 바탕으로 업무 지식을 도출합니다. 그래프가 없으면 파일 구조, 처리 진입점, 일부 코드를 가볍게 스캔해 분석 자료를 모읍니다.

이럴 때 유용합니다

프로젝트에 구현된 업무 흐름을 파악하거나 코드 구조를 업무 관점에서 정리할 때 유용합니다. 업무 영역과 단계의 연결을 그림으로 확인하고, 기존 지식 그래프를 다른 관점에서 살펴볼 수 있습니다.

사용 예시

  • “이 코드의 업무 영역과 처리 흐름을 그림으로 만들어 주세요.”
  • “기존 지식 그래프에서 업무 흐름을 추출해 주세요.”
  • “/understand-domain --full로 새로 스캔해 주세요.”

주의 사항

관련 플러그인과 분석 에이전트가 필요하며, 가벼운 스캔에는 Python을 사용합니다. --full은 기존 그래프가 있어도 다시 스캔합니다. 결과는 domain-graph.json에 저장하고 /understand-dashboard를 실행합니다. Git worktree에서는 기본적으로 주 저장소에 출력합니다. 기존 그래프에 반영되지 않은 변경이 있으면 경고합니다.

이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.

객관 평가

AI가 SKILL.md의 내용만을 근거로 4가지 관점에서 판정했습니다. 스타 수나 인기도는 판정에 넣지 않았습니다.

지시의 명확성언제 쓰고 무엇을 하는지 알 수 있는가
A양호기존 그래프와 가벼운 스캔의 선택 조건 및 업무 흐름도 생성 목적을 명시합니다.
절차의 구체성절차·입출력·예시가 구체적으로 적혀 있는가
B일부 부족Git 확인과 Python 스캔은 구체적이지만 제공된 부분에는 최종 결과 생성 절차가 없습니다.
안전성전송·삭제·명령 실행 등을 명시하고 있는가
B일부 부족Python 실행과 주 저장소로의 출력 전환은 명시하지만 쓰기 전 확인 절차는 없습니다.
도입의 용이성필요한 도구나 API 키가 적고 적혀 있는가
B일부 부족플러그인 탐색 방법과 Python 실행 명령은 있지만 설치 절차는 없습니다.

총점은 각 항목을 A=25점, B=15점, C=5점으로 더한 값입니다. 2026년 10월 21일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.

평가가 다르다고 생각되면 재검토를 요청하기

어느 항목이 왜 다르다고 생각하는지 적어 주세요. 로그인은 필요 없습니다. SKILL.md와 대조해 평가를 다시 만들고 이곳에 반영합니다.

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

포함된 파일(2)

  • SKILL.md9.6 KB
  • extract-domain-context.py15.9 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

/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.

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:

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:

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:
      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.

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

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

understand

무료요약 있음AI 평가 80점

코드, 설정, 문서를 분석해 구성 요소와 의존 관계를 대화형으로 탐색하는 그래프를 만듭니다. 일본어 설명 생성과 변경 내용에 따른 갱신도 지원합니다.

  • 처음 접하는 프로젝트 구조 파악
  • 구성 요소 사이의 의존 관계 확인
  • 설계 설명을 일본어로 생성
Egonex-AI/Understand-Anything8.8만2026년 10월 21일 업데이트

understand-chat

무료요약 있음AI 평가 100점

코드 구성 요소와 관계를 기록한 지식 그래프로 질문에 답합니다. 관련 파일, 함수, 호출 및 의존 관계를 따라 프로젝트의 작동 방식과 설계 계층을 설명합니다.

  • 기능의 작동 방식 이해
  • 호출하는 곳과 의존 대상 확인
  • 개념과 관련된 코드 탐색
Egonex-AI/Understand-Anything8.8만2026년 10월 21일 업데이트

understand-dashboard

무료요약 있음AI 평가 90점

분석된 코드베이스의 구조와 관계를 그림으로 살펴보는 대화형 웹 대시보드를 실행합니다. 현재 작업 위치나 지정한 프로젝트의 데이터를 표시합니다.

  • 분석된 코드베이스를 그림으로 확인
  • 현재 작업 중인 프로젝트의 관계도 열기
  • 다른 프로젝트의 분석 결과 확인
Egonex-AI/Understand-Anything8.8만2026년 10월 21일 업데이트

understand-diff

무료요약 있음AI 평가 90점

Git 변경이나 풀 리퀘스트를 지식 그래프와 대조합니다. 변경 지점과 주변 영향, 설계 계층 간 관계, 검토 시 주의할 위험을 정리하고 시각화 데이터를 저장합니다.

  • 풀 리퀘스트 검토 준비
  • 커밋하지 않은 변경의 영향 확인
  • 설계 계층을 넘는 변경 확인
Egonex-AI/Understand-Anything8.8만2026년 10월 21일 업데이트

understand-explain

무료요약 있음AI 평가 100점

기존 지식 그래프와 실제 코드를 대조해 특정 파일, 함수, 모듈의 설계상 역할과 호출 관계, 의존성, 입출력 흐름을 자세히 설명합니다.

  • 특정 파일의 역할 이해
  • 함수 호출 지점과 의존 대상 확인
  • 입력부터 출력까지의 흐름 추적
Egonex-AI/Understand-Anything8.8만2026년 10월 21일 업데이트

understand-figma

무료요약 있음AI 평가 80점

Figma 파일을 분석해 페이지, 화면, 컴포넌트와 공통 디자인 값의 관계를 그래프로 정리합니다. 대화형 대시보드에서 디자인 구조를 확인할 수 있습니다.

  • Figma 파일의 전체 구조 파악
  • 컴포넌트와 인스턴스 배치 관계 확인
  • 공통 디자인 값의 사용 현황 확인
Egonex-AI/Understand-Anything8.8만2026년 10월 21일 업데이트

Egonex-AI의 스킬 모두 보기

이 스킬의 문제 신고