Skip to main content

A CLI tool to help non-technical product managers and AI-native builders understand codebases

Project description

Code Guro

A CLI tool to help non-technical product managers and AI-native builders understand codebases.

Etymology

The name "Code Guro" is a play on two words:

  • "Guro" - Tagalog (Filipino) word for "teacher"
  • "Guru" - Expert or master in a particular field

This reflects the tool's purpose: to serve as both a teacher (guro) and expert guide (guru) for understanding code.

Overview

Many product managers are now using AI coding agents (Claude Code, Cursor, etc.) to build functional prototypes and MVPs, but lack the programming background to truly understand the code that's generated. This creates hesitation when scaling products or bringing in users.

Code Guro analyzes a codebase and generates structured, beginner-friendly learning documentation. Unlike conversational AI tools that answer specific questions, Code Guro proactively creates a complete curriculum tailored to your specific codebase.

Installation

Recommended for production use:

python3 -m pip install --user code-guro

For development in a virtual environment:

pip install code-guro

Note: Using --user installs to your user directory and avoids conflicts with system packages. This is the recommended method for production use.

Requirements:

  • Python 3.8 or higher
  • Internet connection (for Claude API calls)
  • Claude API key from console.anthropic.com

Upgrading

To upgrade to the latest version:

# If you installed with --user flag (recommended for production use)
python3 -m pip install --upgrade --user code-guro

# If you installed in a virtual environment
pip install --upgrade code-guro

# Force cache refresh if upgrade doesn't work
python3 -m pip install --upgrade --no-cache-dir --user code-guro

To check your current version:

code-guro --version

Note: If you have multiple installations (user-level, venv, system-wide), you may need to upgrade each separately or uninstall duplicates. Run which code-guro to see which installation is being used.

What's new in recent versions:

  • v0.4.0 - Left sidebar navigation, improved dark mode for Mermaid diagrams, enhanced mobile UX
  • v0.3.1 - Fixed section 04 generation for large codebases, improved HTML output cleanliness
  • v0.3.0 - Redesigned HTML output with modern aesthetic, improved accessibility
  • v0.2.0 - Dual-format output (HTML + markdown), chunked analysis for large codebases
  • v0.1.0 - Initial release

See CHANGELOG.md for detailed release notes.

Quick Start

1. Configure your API key

code-guro configure

You'll be prompted to enter your Claude API key. The key is stored securely in ~/.config/code-guro/config.json with restricted file permissions.

Alternatively, you can set the CLAUDE_API_KEY or ANTHROPIC_API_KEY environment variable:

export CLAUDE_API_KEY="your-api-key-here"

2. Analyze a codebase

# Analyze current directory (generates both HTML and markdown)
code-guro analyze .

# Analyze a specific path
code-guro analyze /path/to/project

# Analyze from GitHub
code-guro analyze https://github.com/user/repo

# Generate only markdown (no HTML)
code-guro analyze . --markdown-only

3. Deep dive into specific files

# Explain a specific folder
code-guro explain ./src/auth

# Interactive mode for follow-up questions
code-guro explain ./src/auth --interactive

# Print explanation to console instead of file
code-guro explain ./src/auth --output console

Output

By default, Code Guro generates both HTML and markdown documentation in a clean code-guro-output/ directory:

code-guro-output/
├── html/
│   ├── 00-overview.html           # Executive summary: what the app does, tech stack
│   ├── 01-getting-oriented.html   # File structure, extensions glossary, entry points
│   ├── 02-architecture.html       # Patterns, conventions, architectural decisions
│   ├── 03-core-files.html         # The 20% of files that matter most
│   ├── 04-deep-dive-[module].html # Deep dives for each major module
│   ├── 05-quality-analysis.html   # What's good, what's risky, potential pitfalls
│   └── 06-next-steps.html         # Suggested exploration paths, follow-up commands
└── markdown/
    ├── 00-overview.md
    ├── 01-getting-oriented.md
    ├── 02-architecture.md
    ├── 03-core-files.md
    ├── 04-deep-dive-[module].md
    ├── 05-quality-analysis.md
    └── 06-next-steps.md

Each document includes:

  • Beginner-friendly explanations
  • Visual diagrams (Mermaid) - fully rendered in HTML files; markdown shows code (renders on GitHub/GitLab)
  • Code snippets with inline comments
  • Glossary of technical terms

Recommended: Open the HTML files in your browser for the best experience with fully rendered Mermaid diagrams, styling, and navigation.

Note for large codebases (>150K tokens): The markdown folder may also contain internal analysis files (prefixed with _) such as _analysis-notes.md and _chunk-XX-analysis.md. These files document the chunked analysis process and are kept for debugging purposes, but are excluded from the user-facing HTML output to keep navigation clean.

Git Integration

Since code-guro-output/ contains generated documentation that can be recreated at any time, you may want to add it to your .gitignore:

echo "code-guro-output/" >> .gitignore

However, some users prefer to commit the documentation for:

  • GitHub Pages hosting
  • Team collaboration without requiring API keys
  • Historical reference of code understanding

The choice is yours!

Commands

code-guro configure

Set up your Claude API key for first-time use.

code-guro configure

code-guro analyze <path>

Analyze a codebase and generate documentation. By default, generates both HTML and markdown in organized subdirectories.

code-guro analyze .                    # Current directory (both formats)
code-guro analyze /path/to/project     # Specific path (both formats)
code-guro analyze https://github.com/user/repo  # GitHub URL (both formats)
code-guro analyze . --markdown-only    # Only markdown, no HTML

Options:

  • --markdown-only - Generate only markdown files without HTML (default: generates both formats)

code-guro convert [output_dir]

Convert existing markdown-only output to include HTML files. Useful if you previously ran analysis with --markdown-only and now want HTML.

code-guro convert                      # Convert from default directory (code-guro-output)
code-guro convert ./code-guro-output   # Convert from specific directory

This command:

  • Moves markdown files into markdown/ subdirectory
  • Generates HTML files in html/ subdirectory
  • Preserves the original markdown files

code-guro explain <path>

Get a detailed explanation of a specific file or folder.

code-guro explain ./src/auth           # Analyze a folder
code-guro explain ./src/app.py         # Analyze a single file

Options:

  • -i, --interactive - Launch interactive Q&A mode
  • --output [file|console] - Where to output (default: file)

code-guro --version

Display the current version.

code-guro --help

Show help information.

Supported Frameworks

Code Guro provides enhanced context for these frameworks:

Framework Detection Method
Next.js package.json with "next", next.config.js
React package.json with "react", .jsx/.tsx files
Vue.js package.json with "vue", .vue files
Django requirements.txt with "Django", manage.py
Flask requirements.txt with "Flask", app.py patterns
Express.js package.json with "express"
Ruby on Rails Gemfile with "rails", config/routes.rb

When a framework is detected, the documentation includes:

  • Framework-specific architecture patterns
  • Common conventions and best practices
  • Known gotchas and pitfalls

Cost Estimation

Code Guro estimates API costs before running analysis based on:

  • Token count of files to analyze
  • Current Claude API pricing (~$3/million input tokens, ~$15/million output tokens)

Cost confirmation:

  • For estimates under $1.00: Proceeds automatically
  • For estimates over $1.00: Asks for confirmation before continuing

Typical costs:

  • Small project (10-50 files): $0.05 - $0.30
  • Medium project (50-200 files): $0.30 - $1.00
  • Large project (200+ files): $1.00 - $5.00

Interactive Mode

The --interactive flag launches a conversational Q&A session:

code-guro explain ./src/auth --interactive

You can ask questions like:

  • "Why was this pattern used?"
  • "What does this function do?"
  • "How does this connect to the database?"
  • "What would happen if I changed X?"

Type exit or quit to end the session. Your conversation is saved to code-guro-output/explain-[path]-session.md.

Troubleshooting

"No API key configured"

Run code-guro configure to set up your API key, or set the CLAUDE_API_KEY environment variable.

"No internet connection detected"

Code Guro requires an internet connection for Claude API calls and GitHub cloning. Check your network connection.

"Estimated cost exceeds $1.00"

For large codebases, you'll be asked to confirm before proceeding. You can:

  • Enter y to continue
  • Enter n to cancel
  • Try analyzing a specific subdirectory instead

"File too large to analyze"

Files larger than 1MB are skipped to avoid excessive API costs. This is typically fine since large files are often generated code, dependencies, or data files.

GitHub clone failures

Ensure the repository URL is correct and the repository is public. Private repositories are not currently supported.

Development

Setup

# Clone the repository
git clone https://github.com/nicoladevera/code-guro.git
cd code-guro

# Create virtual environment
python3 -m venv venv
source venv/bin/activate

# Install in development mode
pip install -e ".[dev]"

Running Tests

# Run all tests
pytest

# Run with coverage report
pytest --cov=code_guro --cov-report=term

# Generate detailed HTML coverage report
pytest --cov=code_guro --cov-report=html
# Then open htmlcov/index.html in your browser

Test Coverage: 84% (51 tests covering dual-format output, CLI commands, and generators)

All tests use mocked API calls, so they run fast and work offline without requiring API keys.

Code Quality

IMPORTANT: Always run quality checks before committing to prevent CI failures:

# Recommended: Run all checks at once
make quality

# Or run individually:
black src/                # Format code
ruff check src/ --fix     # Fix linting issues
pytest                    # Run tests

Pre-commit hooks (recommended):

# Install pre-commit hooks (one-time setup)
pre-commit install

# Now checks run automatically before each commit
# To run manually on all files:
pre-commit run --all-files

The pre-commit hooks will:

  • Auto-format code with Black (100 char line length)
  • Auto-fix import sorting and remove unused imports
  • Run Ruff linter with auto-fix
  • Prevent commits if issues remain

License

MIT

Contributing

Contributions are welcome! See CONTRIBUTING.md for development guidelines, code style, and the release process.

Acknowledgments

Built with:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

code_guro-0.4.0.tar.gz (59.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

code_guro-0.4.0-py3-none-any.whl (61.7 kB view details)

Uploaded Python 3

File details

Details for the file code_guro-0.4.0.tar.gz.

File metadata

  • Download URL: code_guro-0.4.0.tar.gz
  • Upload date:
  • Size: 59.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for code_guro-0.4.0.tar.gz
Algorithm Hash digest
SHA256 cbffe635aa8d1dd55d5573ca0230119e85f90c8d4d7c30a106bdb2d0a7d659e1
MD5 11564051938f3a70a6fc675a7148fecd
BLAKE2b-256 00a4499f020962fd421368df2e7d8f2c19b04ba0f52cfc4570a1cc0810a4ffbb

See more details on using hashes here.

Provenance

The following attestation bundles were made for code_guro-0.4.0.tar.gz:

Publisher: publish.yml on nicoladevera/code-guro

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file code_guro-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: code_guro-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 61.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for code_guro-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d24b2b4a8f721b7cba93bfce8d82b6acfb2b19de14e6b75653bd454d9c50a094
MD5 57154f286912809f4cd54c918350c22f
BLAKE2b-256 6183f9a5fb4dcab2d9c0934313e86dd63b049a510823e51d8d6b66782d55a403

See more details on using hashes here.

Provenance

The following attestation bundles were made for code_guro-0.4.0-py3-none-any.whl:

Publisher: publish.yml on nicoladevera/code-guro

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page