Generate a human-readable brief for any GitHub repository using Claude AI
Project description
devbrief
Project situational awareness.
devbrief takes a GitHub URL, pulls repository metadata, README, and file tree, then asks Claude to produce a structured brief — covering what the project does, its tech stack, how to get started, and its limitations — directly in your terminal.
Installation
pip
pip install devbrief
uvx (run without installing)
uvx devbrief repo <github-url>
uv (install globally)
uv tool install devbrief
Setup
An Anthropic API key is required. Store it securely with:
devbrief auth
This validates your key against the Anthropic API and writes it to ~/.config/devbrief/config.toml with 600 permissions. You will not be prompted again until the key is cleared or replaced.
CI / non-interactive environments:
devbrief auth --api-key "$ANTHROPIC_API_KEY"
# or just export the env var — devbrief picks it up automatically
export ANTHROPIC_API_KEY=sk-ant-...
Usage
Usage: devbrief [OPTIONS] COMMAND [ARGS]...
Project situational awareness.
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --install-completion Install completion for the current shell. │
│ --show-completion Show completion for the current shell, to copy │
│ it or customize the installation. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────╮
│ repo Analyze a GitHub repository. │
│ auth Manage API credentials. │
╰──────────────────────────────────────────────────────────────────────────────╯
devbrief repo
devbrief repo <github-url> [--output FILE]
Examples:
# Print the brief to the terminal
devbrief repo https://github.com/anthropics/anthropic-sdk-python
# Save the brief as a markdown file
devbrief repo https://github.com/astral-sh/uv --output uv-brief.md
| Option | Short | Description |
|---|---|---|
--output FILE |
-o |
Save the brief as a markdown file |
--help |
Show usage and exit |
devbrief auth
devbrief auth # interactive prompt (hidden input)
devbrief auth --api-key sk-ant-... # non-interactive
devbrief auth --show # display masked stored key
devbrief auth --clear # remove stored key
Credential resolution order
--api-keyflagANTHROPIC_API_KEYenvironment variable~/.config/devbrief/config.toml- Error with instructions to run
devbrief auth
Output sections
Each generated brief contains:
- One-line description — a crisp summary of the project
- Problem it solves — the core need being addressed
- Tech stack — detected languages, frameworks, and tools
- Getting started — steps extracted from the README
- Who would find it useful — the target audience
- Limitations / potential improvements — honest trade-offs
How it works
GitHub URL
│
├── /repos/:owner/:repo → name, description, stars, language, topics
├── /repos/:owner/:repo/readme → decoded README content (first 3000 chars)
└── /repos/:owner/:repo/contents → top-level file tree
│
└── Structured prompt → Claude (model from config) → Rich terminal output
Migrating from v0.1.x
| v0.1.x | v0.2.x |
|---|---|
devbrief <url> |
devbrief repo <url> |
export ANTHROPIC_API_KEY=... |
devbrief auth (or keep the env var) |
Development
Requires uv.
git clone https://github.com/s3bc40/devbrief
cd devbrief
uv sync --all-groups
Run locally
uv run devbrief repo https://github.com/s3bc40/devbrief
Run tests
uv run pytest
Lint
uv run ruff check src/ tests/
uv run ruff format src/ tests/
Project structure
src/devbrief/
├── cli.py # Typer app — registers all subcommands
├── commands/
│ ├── repo.py # devbrief repo
│ └── auth.py # devbrief auth
├── core/
│ ├── credentials.py # API key + model resolution chain
│ └── config.py # Config file read/write (~/.config/devbrief/config.toml)
├── github.py # GitHub REST API fetchers
├── brief.py # Prompt construction and Claude API call
└── display.py # Rich terminal rendering
tests/
├── test_credentials.py # Credential resolution + auth command tests
├── test_github.py
└── test_display.py
Contributing
- Fork the repository and create a branch from
main. - Make focused commits with explicit messages (one concern per commit).
- Add or update tests for any changed behaviour.
- Open a pull request — describe the problem and your solution.
Please do not open issues to ask for new AI providers or models; the project is intentionally scoped to the Anthropic API.
License
MIT — see LICENSE for details.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file devbrief-0.2.0.tar.gz.
File metadata
- Download URL: devbrief-0.2.0.tar.gz
- Upload date:
- Size: 53.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
029e93b171a32d43d56156b2b429f6f34303f7b8afd9fe5bac55ea6fbbf97563
|
|
| MD5 |
d5f2f17faeb55d6b40728ed8e7453b33
|
|
| BLAKE2b-256 |
4dd7e9c9026dc44bb0f50fa1ee28d7f23a386c1ca995310a15574272a96fe07d
|
Provenance
The following attestation bundles were made for devbrief-0.2.0.tar.gz:
Publisher:
release.yml on s3bc40/devbrief
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devbrief-0.2.0.tar.gz -
Subject digest:
029e93b171a32d43d56156b2b429f6f34303f7b8afd9fe5bac55ea6fbbf97563 - Sigstore transparency entry: 1122755741
- Sigstore integration time:
-
Permalink:
s3bc40/devbrief@bbbbb2ae28289099b21d8a333fad92727080e95a -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/s3bc40
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bbbbb2ae28289099b21d8a333fad92727080e95a -
Trigger Event:
push
-
Statement type:
File details
Details for the file devbrief-0.2.0-py3-none-any.whl.
File metadata
- Download URL: devbrief-0.2.0-py3-none-any.whl
- Upload date:
- Size: 10.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd33b3d60909b8389690b88eff0deff2b3450447929fd0cf0723024881ad57a6
|
|
| MD5 |
dbedbd86f88f98d0ae8d42b570f69499
|
|
| BLAKE2b-256 |
8e9b5d6c5bbed3edd9e6067da5af3d1220afd1bdee0195f7790618bcb8794938
|
Provenance
The following attestation bundles were made for devbrief-0.2.0-py3-none-any.whl:
Publisher:
release.yml on s3bc40/devbrief
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devbrief-0.2.0-py3-none-any.whl -
Subject digest:
cd33b3d60909b8389690b88eff0deff2b3450447929fd0cf0723024881ad57a6 - Sigstore transparency entry: 1122755783
- Sigstore integration time:
-
Permalink:
s3bc40/devbrief@bbbbb2ae28289099b21d8a333fad92727080e95a -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/s3bc40
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bbbbb2ae28289099b21d8a333fad92727080e95a -
Trigger Event:
push
-
Statement type: