- .mcp.json: pass UE_ENGINE_ROOT and UE_DOCS_PATH via ${VAR} interpolation so the
MCP server subprocess inherits them without hardcoding paths
- search_source: search both Engine/Source/ and Engine/Plugins/ (path_hint applied
under both); switch from -m 40 (per-file cap) to streaming Popen with a true
40-line total cap; fix UE_ENGINE_ROOT to point at Engine/ not the repo root
- Update README and CLAUDE.md to reflect the above
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
_load_type_index() now caches the parsed dict at module level and only
re-reads type-index.txt when its mtime changes. This avoids a file read
and parse on every get_class_overview / get_member call. The cache is
automatically invalidated if the docs are regenerated.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- render_header() returns "" when a header has no documented content
(no /** */ comments on any class, property, function, enum, or delegate)
- generate.py skips writing those files and tracks which were written
- type-index.txt is filtered to only include types from written files,
preventing dead entries that would cause get_class_overview to fail
- Summary line now reports how many files were skipped
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
README: replace placeholder with full project overview — usage,
skill setup (UE_DOCS_PATH/UE_ENGINE_ROOT env vars), sample files,
output format reference.
CLAUDE.md: drop "in development" (project is complete), add
.claude/skills/ue-api/ to the current state file list.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>