gh-weekly-updates
Automatically discover and summarise your weekly GitHub impact using AI.
gh-weekly-updates collects your GitHub activity — pull requests authored & reviewed, issues created & commented on, discussions — and generates a structured Markdown summary using GitHub Models.
Features
- Auto-discover repos via the GitHub GraphQL Contributions API, or provide an explicit list
- Collect detailed activity: PRs, reviews, issues, issue comments, discussions
- AI-powered summarisation via GitHub Models (
openai/gpt-4.1by default) - Structured output: Wins / Strategic Influence / Challenges with inline links
- Push to a repo: automatically commit summaries to a GitHub repo for sharing
- Fully configurable: org, repos, model, prompt — via YAML config or CLI flags
- Custom prompts: tailor the AI summary to your team's format
Installation
pip install gh-weekly-updates
Requirements
- Python 3.11+
- A GitHub personal access token (PAT) or the GitHub CLI (
gh) authenticated- Required scopes:
repo,read:org - The token also needs access to GitHub Models for AI summarisation
- Required scopes:
Quick start
# Authenticate with the GitHub CLI (easiest)
gh auth login
# Run with defaults — covers the past week
gh-weekly-updates
# Or specify a date range
gh-weekly-updates --since 2025-06-01 --until 2025-06-07
Configuration
Create a config.yaml (see config.example.yaml):
# GitHub org to scope repo discovery to
org: my-org
# Explicit repo list (skips auto-discovery)
repos:
- my-org/api-service
- my-org/web-app
# GitHub Model for summarisation
model: openai/gpt-4.1
# Push summary to a repo under weekly-updates/
push_repo: my-user/my-updates
# Custom system prompt (inline)
prompt: |
You are an engineering manager writing a concise weekly summary...
# Or load prompt from a file
# prompt_file: my-prompt.txt
CLI reference
Usage: gh-weekly-updates [OPTIONS]
Options:
--config PATH Path to YAML config file. Default: ./config.yaml
--since TEXT Start date (ISO 8601). Default: previous Monday.
--until TEXT End date (ISO 8601). Default: now.
--user TEXT GitHub username. Default: authenticated user.
--repos TEXT Comma-separated list of repos (owner/name).
--org TEXT GitHub org to scope repo discovery to.
--output PATH Write summary to a file instead of stdout.
--push TEXT Push summary to a GitHub repo (owner/name).
--model TEXT GitHub Model to use. Default: openai/gpt-4.1.
--verbose Enable debug logging.
--help Show this message and exit.
Authentication
gh-weekly-updates resolves a GitHub token in this order:
GITHUB_TOKENenvironment variablegh auth token(GitHub CLI)
For GitHub Enterprise with SSO, ensure the token is authorised for your org.
Using with GitHub Actions
You can run gh-weekly-updates on a schedule in a GitHub Actions workflow:
name: Weekly Impact Summary
on:
schedule:
- cron: '0 9 * * 1' # Every Monday at 9am UTC
workflow_dispatch:
jobs:
summarise:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install gh-weekly-updates
run: pip install gh-weekly-updates
- name: Generate summary
env:
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
run: |
gh-weekly-updates \
--config config.yaml \
--push my-user/my-updates
Note: The default
GITHUB_TOKENprovided by Actions has limited scope. Use a Personal Access Token stored as a repository secret withrepoandread:orgscopes, plus GitHub Models access.
Development
git clone https://github.com/sahansera/gh-weekly-updates.git
cd gh-weekly-updates
python -m venv .venv && source .venv/bin/activate
make dev # install in editable mode with dev deps
make run # run with defaults
make lint # ruff check
See CONTRIBUTING.md for more details.
License
Release files for gh-weekly-updates 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gh_weekly_updates-0.1.3.tar.gz | 17.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gh_weekly_updates-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.5 kB
Release files / gh_weekly_updates-0.1.3.tar.gz
| Download URL | gh_weekly_updates-0.1.3.tar.gz |
|---|---|
| Size | 17.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5918e381379dae8979bd53fddf22a907a60c5725abf89a17e71b7e7db08b6dfb
|
|
BLAKE2b-256 checksum How to use checksums |
cc2bb49b0605f1040b3a39dcfd4a9fe5bba47f0263f1da0a77b01046dae5370a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 22, 2026.
Transparency logRelease files / gh_weekly_updates-0.1.3-py3-none-any.whl
| Download URL | gh_weekly_updates-0.1.3-py3-none-any.whl |
|---|---|
| Size | 18.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4de207fcb160064e1e0e7081d2a3684c0c71ab19ad99df5117bc3dcb7a310ec3
|
|
BLAKE2b-256 checksum How to use checksums |
ab5b01a6e9fec53aa1d20f4b9bcf101f03fc585ee643aedc6a5c7847272b3869
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 22, 2026.
Transparency log