Repository navigation
Agent MEMORY
Cross-session context for agents. Sections 1-6 are regenerated from the source tree with zero LLM tokens: declared rules are quoted verbatim with
file:line, measured baselines come from the scan. Section 7 is written by agents and humans and is preserved across rebuilds.
Generated from 155 files at commit 0c608d6d6fa2. Read this first, then readmenator-wiki/index.md, then readmenator . ask "<question>" for anything specific.
- What it is: A token-free, offline, production-grade polyglot codebase knowledge graph & architectural analyzer. (
README.md:7) - Domain vocabulary (term, files):
readmenator(104),file(91),graph(73),node(67),files(66),symbols(61),project(59),edges(59),imports(56),nodes(55),build(54),config(54),symbol(53),all(53),one(52) - Subsystem
readmenator: _video: 35 files, corereadmenator/_video.py: Cinematic codebase overview video, general purpose. - Subsystem
readmenator/parsers: 35 files, corereadmenator/_models.py: Data model types for the readmenator knowledge graph. - Subsystem
readmenator: _agent_output: 19 files, corereadmenator/_agent_output.py: Agent-friendly output generator for ReadMenator. - Subsystem
readmenator: _graphrag: 18 files, corereadmenator/_graphrag.py: Zero-token GraphRAG index and retrieval for AI agents. - Subsystem
readmenator: _pipeline: 17 files, corereadmenator/_pipeline.py: AnalyzerFactory (lazy component construction) and DeepAnalysisRunner. - Subsystem
readmenator: _diagrams: 15 files, corereadmenator/_diagrams.py: Self-contained interactive system maps for the knowledge graph. - Subsystem
readmenator: _flowcharts: 12 files, corereadmenator/_flowcharts.py: Architecture and execution-flow Mermaid diagrams from static structure. - Business rules that the code cannot show live in section 7: record them there.
Detected commands:
-
python -m pytest -q(pyproject.toml) -
readmenator --help(pyproject.toml [project.scripts]) -
readmenator-mcp --help(pyproject.toml [project.scripts]) -
CI workflow main.yml(.github/workflows/main.yml) -
CI workflow publish.yml(.github/workflows/publish.yml) -
CI workflow static.yml(.github/workflows/static.yml) -
CI workflow validate-rules.yml(.github/workflows/validate-rules.yml)
Session protocol:
- Start: read this file, then
readmenator . fresh(exit 1 means runreadmenator . --rebuild). - Orient:
readmenator-wiki/index.md; for a question usereadmenator . ask "<question>"(local = entities + sources,--global= community reports). - Before editing a file:
grep -n '<file>' readmenator-agent/GOTCHAS.md readmenator-agent/SECURITY.md. - After the change: run the tests above, then
readmenator . --rebuildso the maps, wiki, and this file stay true. - End: record decisions, business rules, and gotchas with
readmenator . remember "<note>" --kind decision.
Declared:
- Config is the single source of truth for all constants (
CLAUDE.md:848) - Symbol creation logic is not duplicated across parsers (
CLAUDE.md:849) - Docstring extraction lives once in LanguageParser base class (
CLAUDE.md:850) - File-level doc extraction lives once in PolyglotScanner (
CLAUDE.md:851) - All analysis thresholds in Config, never hardcoded (
CLAUDE.md:852) - Single Responsibility: each module has one job (
CLAUDE.md:855) - Open/Closed: add parsers/analyzers without modifying existing code (
CLAUDE.md:856) - Liskov Substitution: all parsers inherit from LanguageParser (
CLAUDE.md:857) - Interface Segregation: each contract exposes minimal surface (
CLAUDE.md:858) - Dependency Inversion: app depends on abstractions (Config, Scanner) (
CLAUDE.md:859) - No absolute paths in source code (
CLAUDE.md:862) - No network calls from the core scanner (
CLAUDE.md:863) - Symlinks rejected (
CLAUDE.md:864) - File size limits enforced (
CLAUDE.md:865) - Directory depth limits enforced (
CLAUDE.md:866) - All parsing exceptions caught (
CLAUDE.md:867) - No external API calls in any analysis or export module (
CLAUDE.md:868) - Pattern-based security analyzer with 18 language rule sets (
CLAUDE.md:869) - Privacy mode strips source snippets from output (
CLAUDE.md:870) - Fix any security issues found (symlinks, path traversal, size limits) (
CLAUDE.md:899) - Remove hardcoded values and move to Config if they are tuneable (
CLAUDE.md:900) - Update tests to cover new behaviors (
CLAUDE.md:901) - Keep the "Classs" pluralization fix intact (
CLAUDE.md:902) - Do not add absolute paths (
CLAUDE.md:903) - Do not add external dependencies to the core scanner (
CLAUDE.md:904) - Maintain backward compatibility of the CLI interface (
CLAUDE.md:905) - Update this CLAUDE.md and README.md for any contract changes (
CLAUDE.md:906) - Fix inline imports (move to top of file) (
CLAUDE.md:907) - Add type annotations to all function signatures (
CLAUDE.md:908) - Maintain strict separation of concerns. (
.cursorrules:5) - UI/presentation components must not contain business logic or database queries. (
.cursorrules:6) - Business logic must not depend on presentation or infrastructure details. (
.cursorrules:7) - Data access must be isolated behind repository interfaces. (
.cursorrules:8) - Keep files under 300 lines. Split larger files into cohesive modules. (
.cursorrules:9) - Never add absolute paths to source code. (
.cursorrules:10) - Never hardcode configuration values. Use the Config class. (
.cursorrules:11) - All new modules must have corresponding test files. (
.cursorrules:12) - Use type annotations on all function signatures. (
.cursorrules:13) - Follow the existing code style and naming conventions. (
.cursorrules:14)
Measured baseline:
- Security findings at medium or above: 0 (see
readmenator-agent/SECURITY.md); do not add new ones. - Dependency cycles: 0; layer violations: 11 (see
readmenator-agent/GOTCHAS.md).
Declared:
- All progress/report messages use
logging.getLogger(__name__)(neverprint()) (CLAUDE.md:873) - User-facing output (query results, summaries) uses
print()to stdout (CLAUDE.md:874) - Logging format configured in
__main__.pyvialogging.basicConfig(CLAUDE.md:875) - Each module gets its own logger via
logger = logging.getLogger(__name__)(CLAUDE.md:876)
Measured baseline:
- py: 153 files, 2993 symbols; docstrings on 55% of symbols; functions snake_case (96%); types PascalCase (100%); median file 204 lines, max 4182.
- js: 1 files, 35 symbols; docstrings on 100% of symbols; functions snake_case (80%); types PascalCase (40%); median file 5 lines, max 5.
- sh: 1 files, 1 symbols; docstrings on 100% of symbols; functions snake_case (100%); median file 42 lines, max 42.
- Tests: 55 files under tests; follow the existing naming (e.g.
test_agent_friendliness.py).
Declared:
- Tests named as
test_<contract>_<behavior>(BDD style) (CLAUDE.md:879) - Each module has its own test class (
CLAUDE.md:880) - Security behaviors tested explicitly (
CLAUDE.md:881) - Edge cases tested (empty files, syntax errors, symlinks) (
CLAUDE.md:882) - Integration tests validate end-to-end pipeline (
CLAUDE.md:883) - "Classs" regression test prevents re-introduction (
CLAUDE.md:884) - All new modules have complete contract test suites (
CLAUDE.md:885) - Mutation check after SDD+TDD+BDD: introduce one-line mutants (validation bypass, escaping bypass, ordering change); a killed mutant fails at least one test, a surviving mutant requires a stronger test before refactor (
CLAUDE.md:886) - Property-based parser tests skip cleanly when hypothesis is not installed (inert strategy placeholders, identity decorators) (
CLAUDE.md:887) - English only, no emojis, no prose comments, docstrings on every public and private function (
CLAUDE.md:890) - DRY and SOLID, one self-contained file per contract, production code with no placeholders or simplifications (
CLAUDE.md:891) - No hardcoded tuneables or magic numbers: every setting lives in Config (
CLAUDE.md:892) - No absolute paths, no network calls from analysis or export modules, all untrusted text escaped at the boundary (
CLAUDE.md:893) - Boy scout: any technical debt or security flaw found during the change is fixed without losing functionality (
CLAUDE.md:894)
Measured baseline:
- Tests pass:
python -m pytest -q. - Docstring coverage stays at or above 55%.
- No new security findings at medium or above (current: 0).
- No new dependency cycles (current: 0).
- Files stay under 300 lines where possible (
readmenator . lint). - Docs refreshed:
readmenator . --rebuild, and decisions recorded in section 7.
- God nodes (changes ripple widely):
readmenator/_models.py,readmenator/_config.py,readmenator/_pipeline.py,readmenator/_app.py,readmenator/parsers/__init__.py - Hotspots (complex and central):
readmenator/_vendor/force-graph.min.js,readmenator/_diagrams.py,readmenator/_app.py,readmenator/_video.py,tests/test_parsers.py - Full blast radius:
readmenator-agent/GOTCHAS.md; findings:readmenator-agent/SECURITY.md.
Append with readmenator . remember "<note>" --kind <kind> (kinds: business, decision, rule, workflow, style, deliverable, gotcha, todo, note) or the MCP tool readmenator.remember. Record business rules, decisions and their reasons, workflow changes, and anything the next session must not rediscover.
Generated offline by readmenator from commit 0c608d6d6fa2. Edits here are overwritten by readmenator . --rebuild.
Start
Wiki
- community_0_readmenator_video
- community_1_readmenator_parsers
- community_2_readmenator_agent_output
- community_3_readmenator_graphrag
- community_4_readmenator_pipeline
- community_5_readmenator_diagrams
- community_6_readmenator_flowcharts
- community_7_orphans
- concepts
- queries
- REPORT
Agent Docs
- API
- API_p2
- ARCHITECTURE
- ARCHITECTURE_p2
- CONCEPTS
- GOTCHAS
- INDEX
- KB_misc
- KB_parsers
- KB_readmenator
- KB_readmenator_p2
- KB_readmenator_p3
- KB_readmenator_p4
- KB_readmenator_p5
- KB_root
- KB_tests
- KB_tests_p2
- KB_tests_p3
- KB_tests_p4
- MEMORY
- SECURITY
- SYMBOLS
- SYMBOLS_p2
- SYMBOLS_p3
- SYMBOLS_p4
- SYMBOLS_p5
- SYMBOLS_p6
- SYMBOLS_p7
Recipes