{"id":28392937,"url":"https://github.com/apideck-libraries/describer","last_synced_at":"2026-01-21T13:25:19.641Z","repository":{"id":282013729,"uuid":"947190531","full_name":"apideck-libraries/describer","owner":"apideck-libraries","description":"Analyze codebases using AI - generate architectural overviews, documentation, explanations, bug reports and more","archived":false,"fork":false,"pushed_at":"2025-03-16T14:27:12.000Z","size":28,"stargazers_count":147,"open_issues_count":2,"forks_count":8,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-01-19T22:53:11.084Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apideck-libraries.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-12T09:47:50.000Z","updated_at":"2026-01-16T21:31:56.000Z","dependencies_parsed_at":"2025-03-12T10:42:01.064Z","dependency_job_id":"eb33abdd-36fa-479a-95a2-8280e92f9db6","html_url":"https://github.com/apideck-libraries/describer","commit_stats":null,"previous_names":["apideck-libraries/describer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/apideck-libraries/describer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apideck-libraries%2Fdescriber","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apideck-libraries%2Fdescriber/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apideck-libraries%2Fdescriber/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apideck-libraries%2Fdescriber/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apideck-libraries","download_url":"https://codeload.github.com/apideck-libraries/describer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apideck-libraries%2Fdescriber/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28633757,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-31T15:09:56.030Z","updated_at":"2026-01-21T13:25:19.623Z","avatar_url":"https://github.com/apideck-libraries.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Describer\n\nAnalyze codebases using AI - generate architectural overviews, documentation, explanations, bug reports and more.\n\n## What It Does\n\nDescriber scans all files in a directory and uses Google's Gemini AI to generate an architectural overview or any other analysis of the codebase.\n\nFor example, you can:\n\n- Generate markdown architectural overviews\n- Get a summary of the codebase\n- Analyze code patterns\n- Document the codebase structure\n- Find potential bugs or issues\n- Generate test ideas\n\n## Prerequisites\n\n- Python 3.6+\n- A Google AI Studio API key for Gemini\n\n## Installation\n\n\u003e **Note:** This package is currently in early development and not yet published to PyPI.\n\nInstall directly from GitHub:\n\n```bash\npip install git+https://github.com/apideck-libraries/describer.git\n```\n\nThen set up your Gemini API key:\n\n```bash\nllm keys set gemini\n```\n\nWhen prompted, enter your API key from Google AI Studio (https://makersuite.google.com/app/apikey).\n\n## Usage\n\n```bash\n# Generate an architectural overview of a directory\ndescriber path/to/directory\n\n# Generate a specific type of analysis\ndescriber path/to/directory \"summarize this codebase in 3 bullet points\"\ndescriber path/to/directory \"identify potential bugs in this code\"\ndescriber path/to/directory \"document this codebase as if for a new developer\"\n\n# Use a specific model\ndescriber -m gemini-1.5-pro-latest path/to/directory\n\n# Save output to a markdown file\ndescriber path/to/directory -o output.md\ndescriber path/to/directory \"code review\" --output review-results.md\n\n# Include files that would normally be excluded by .gitignore\ndescriber path/to/directory --ignore-gitignore\n\n# Exclude specific file patterns\ndescriber path/to/directory --exclude \"*.test.ts\"\ndescriber path/to/directory --exclude \"*.min.js\"\n\n# Don't show file count information\ndescriber path/to/directory --quiet\n```\n\nBy default, Describer respects `.gitignore` rules when scanning files, which means files and directories listed in your `.gitignore` file(s) will be excluded from the analysis. Use the `--ignore-gitignore` flag if you want to include these files.\n\nYou can also use the `--exclude` flag to exclude specific files or patterns from the analysis. This is useful for filtering out test files, generated code, or other files that might not be relevant to your analysis.\n\nThe tool will display the number of files being analyzed, which can help you confirm that the correct files are being included and that `.gitignore` rules are being applied as expected.\n\n## How It Works\n\nThis project combines these tools:\n\n1. [files-to-prompt](https://github.com/simonw/files-to-prompt): Collects all files in a directory and formats them for processing by an LLM.\n2. [llm](https://llm.datasette.io/en/stable/): A command-line tool for interacting with various LLMs.\n3. [llm-gemini](https://github.com/simonw/llm-gemini): A plugin for the `llm` tool to use Google's Gemini models.\n\n## Development\n\nIf you want to contribute to this project, follow these steps to set up your development environment:\n\n1. Clone the repository:\n\n   ```bash\n   git clone https://github.com/apideck-libraries/describer.git\n   cd describer\n   ```\n\n2. Create a virtual environment:\n\n   ```bash\n   python -m venv venv\n   ```\n\n3. Activate the virtual environment:\n\n   - On macOS/Linux:\n     ```bash\n     source venv/bin/activate\n     ```\n   - On Windows:\n     ```bash\n     venv\\Scripts\\activate\n     ```\n\n4. Install the package in development mode:\n\n   ```bash\n   pip install -e .\n   ```\n\n5. Install development dependencies:\n\n   ```bash\n   pip install build twine pytest\n   ```\n\n6. Set up your Gemini API key:\n\n   ```bash\n   llm keys set gemini\n   ```\n\n7. Run tests:\n   ```bash\n   python -m unittest discover tests\n   ```\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## Credits\n\nThis library builds on the incredible work of [Simon Willison](https://x.com/simonw) and his open-source tools. While this CLI primarily strings together three of his existing tools, the goal is to make them more accessible and streamlined for specific use cases to analyze large codebases.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapideck-libraries%2Fdescriber","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapideck-libraries%2Fdescriber","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapideck-libraries%2Fdescriber/lists"}