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.
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.
$ npx skills add Egonex-AI/Understand-Anything --skill understand-domain -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Egonex-AI/Understand-Anything understand-domain --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "understand-domain" agent skill from https://github.com/Egonex-AI/Understand-Anything/tree/main/understand-anything-plugin/skills/understand-domain into .claude/skills/understand-domain/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "understand-domain", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Egonex-AI/Understand-Anything/tree/main/understand-anything-plugin/skills/understand-domainType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Egonex-AI/Understand-Anything --skill understand-domain -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Egonex-AI/Understand-Anything understand-domain --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Egonex-AI/Understand-Anything.git skills-src && mkdir -p .agents/skills && cp -r skills-src/understand-anything-plugin/skills/understand-domain .agents/skills/understand-domain && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "understand-domain" agent skill from https://github.com/Egonex-AI/Understand-Anything/tree/main/understand-anything-plugin/skills/understand-domain into .agents/skills/understand-domain/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "understand-domain", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Egonex-AI/Understand-Anything --skill understand-domain -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Egonex-AI/Understand-Anything understand-domain --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Egonex-AI/Understand-Anything.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/understand-anything-plugin/skills/understand-domain .cursor/skills/understand-domain && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "understand-domain" agent skill from https://github.com/Egonex-AI/Understand-Anything/tree/main/understand-anything-plugin/skills/understand-domain into .cursor/skills/understand-domain/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "understand-domain", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Egonex-AI/Understand-Anything.git --path understand-anything-plugin/skills/understand-domain--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Egonex-AI/Understand-Anything --skill understand-domain -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Egonex-AI/Understand-Anything understand-domain --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Egonex-AI/Understand-Anything.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/understand-anything-plugin/skills/understand-domain .gemini/skills/understand-domain && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "understand-domain" agent skill from https://github.com/Egonex-AI/Understand-Anything/tree/main/understand-anything-plugin/skills/understand-domain into .gemini/skills/understand-domain/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "understand-domain", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Egonex-AI/Understand-Anything understand-domainInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Egonex-AI/Understand-Anything --skill understand-domain -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Egonex-AI/Understand-Anything.git skills-src && mkdir -p .github/skills && cp -r skills-src/understand-anything-plugin/skills/understand-domain .github/skills/understand-domain && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "understand-domain" agent skill from https://github.com/Egonex-AI/Understand-Anything/tree/main/understand-anything-plugin/skills/understand-domain into .github/skills/understand-domain/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "understand-domain", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Egonex-AI/Understand-Anything --skill understand-domain -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Egonex-AI/Understand-Anything understand-domain --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Egonex-AI/Understand-Anything.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/understand-anything-plugin/skills/understand-domain .opencode/skills/understand-domain && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "understand-domain" agent skill from https://github.com/Egonex-AI/Understand-Anything/tree/main/understand-anything-plugin/skills/understand-domain into .opencode/skills/understand-domain/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "understand-domain", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
understand-domainExtracts business domains, flows and process steps from a codebase and produces an interactive horizontal flow graph, reusing an existing knowledge graph when one exists.
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.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 000fbf3. It shows what the files ask for, not the result of running them.
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.
Ships script files (Python), which the agent can run.
Shell commands in SKILL.md call:
gitpythonFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from Egonex-AI/Understand-Anything at commit 000fbf3, republished under its MIT licence (© Egonex-AI). 898 words, ~2,442 tokens.
.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.Extracts business domain knowledge — domains, business flows, and process steps — from a codebase and produces an interactive horizontal flow graph in the dashboard.
.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)--full flag to force a fresh scan even if a knowledge graph existsPROJECT_ROOTSet 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
fiUse $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
fiUse $PLUGIN_ROOT for every reference to agent definitions in subsequent phases.
$UA_DIR/knowledge-graph.json exists--full was NOT passed, check freshness before deriving from it: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 -- .-- . 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..ua/ or legacy .understand-anything/) in every command's output because it contains generated graph artifacts, not project source drift./understand to refresh the knowledge graph.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.--full is used, skip this preflight because the command performs a fresh scan instead of consuming the existing graph.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.
$PROJECT_ROOT from Phase 0:python ./extract-domain-context.py "$PROJECT_ROOT"$UA_DIR/intermediate/domain-context.json containing:.gitignore)domain-context.json as context for Phase 4$UA_DIR/knowledge-graph.jsoncalls, imports, contains)$PLUGIN_ROOT/agents/domain-analyzer.md$UA_DIR/intermediate/domain-analysis.json$UA_DIR/domain-graph.json$UA_DIR/intermediate/domain-analysis.json and $UA_DIR/intermediate/domain-context.json/understand-dashboard to visualize the domain graphdomain-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
SKILL.md and 1 other file in understand-anything-plugin/skills/understand-domain of Egonex-AI/Understand-Anything.
Open the folder on GitHubat commit 000fbf3
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Codebase Domain Flow Extractor this skillEgonex-AI/Understand-Anything | 86k | — | ~2.4k | Automated safety check: Pass | MIT | |
| Forgetful Repo EncodingScottRBK/forgetful | 301 | — | ~1k | Automated safety check: Pass | MIT | |
| Explore Codebase with Graphtirth8205/code-review-graph | 32k | 1 repos | ~335 | Automated safety check: Pass | MIT | |
| Acquire Codebase Knowledgegithub/awesome-copilot | 40k | 1 repos | ~2.3k | Automated safety check: Pass | MIT | |
| Compasscrabbuild/compass | 171 | — | ~5k | Automated safety check: Pass | Custom licence | |
| Dossier Collectruvnet/ruflo | 74k | — | ~1.1k | Automated safety check: Notes | MIT |
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.
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.
github/awesome-copilot
Maps an unfamiliar codebase into seven evidence-backed documents in docs/codebase/, using a scan script and templates, for onboarding or architecture write-ups.
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…
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
proffesor-for-testing/agentic-qe
Builds semantic code indexes, maps dependency graphs, and performs intelligent code search across large codebases.
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.
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.
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.
Egonex-AI/Understand-Anything
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.
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.
Egonex-AI/Understand-Anything
Detects a Karpathy-pattern LLM wiki and builds an interactive knowledge graph with entities, implicit relationships and topic clusters.
Works with
Categories
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.