Skip to main content

Where did I leave off? A developer briefing tool.

Project description

wip โ€” Where did I leave off?

PyPI Python License Privacy Data

A developer briefing tool. wip scans your git repositories and shows you what you were working on, what's dirty, what's stashed, and what needs your attention. With optional AI features, it turns raw git data into narrative briefings, standup drafts, and answers to natural language questions about your work.

Features

  • ๐Ÿ” Auto-discover git repos in configured directories
  • ๐Ÿ“Š Status overview โ€” dirty files, stashes, ahead/behind tracking
  • ๐ŸŒฟ Recent branches โ€” see branches you've touched recently
  • ๐Ÿ’ฌ Recent commits โ€” your commits from the last 24 hours
  • ๐Ÿ“ Work-in-progress tracker โ€” jot down tasks, link them to repos, see them in your briefing
  • ๐ŸŽจ Rich terminal output โ€” color-coded status with icons
  • ๐Ÿ“ฆ Multiple output modes โ€” human-friendly or JSON for scripting
  • ๐Ÿ•ต๏ธ Agent detection โ€” passively detect coding agent activity (Claude, Copilot, Cursor, Devin) from git signals
  • ๐Ÿ“‚ Enriched file-level context โ€” changed files with diff stats, stash descriptions, commit bodies and file lists in LLM prompts and verbose output
  • ๐Ÿค– AI-powered briefings โ€” narrative summaries, standup drafts, natural language queries
  • ๐Ÿงญ Context-aware git help โ€” ask how to untangle branches, recover stashes, or fix mistakes โ€” the AI sees your actual repo state
  • ๐Ÿ”Œ Provider abstraction โ€” Anthropic and OpenAI implemented, Gemini โ€” all implemented

Installation

From PyPI (recommended)

pip install wip-cli

Or with pipx for an isolated install:

pipx install wip-cli

From source

git clone git@github.com:drmnaik/wip.git
cd wip
pip install -e .

Requirements: Python 3.9+ PyPI: https://pypi.org/project/wip-cli/

Quick Start

# First-time setup (interactive)
wip config init

# Show your briefing
wip

# Verbose mode with full details
wip --verbose

# JSON output for scripting
wip --json

Configuration

Config is stored at ~/.wip/config.toml:

directories = ["/Users/you/projects", "/Users/you/work"]
author = "Your Name"
scan_depth = 3
recent_days = 14

[llm]
provider = "anthropic"
model = "claude-haiku-4-5-20251001"
api_key_env = "ANTHROPIC_API_KEY"

# Optional: customize agent detection patterns
[agents]
authors = ["claude", "copilot", "cursor", "devin", "codex", "github-actions", "bot"]
branch_patterns = ["agent/", "claude/", "copilot/", "devin/", "cursor/"]
  • directories โ€” which directories to scan for git repos
  • author โ€” your git author name (filters commits to show only yours)
  • scan_depth โ€” how deep to search for repos (default: 3 levels)
  • recent_days โ€” how far back to look for recent branches (default: 14 days)
  • [llm] โ€” optional LLM configuration for AI features
    • provider โ€” anthropic, openai, or gemini
    • model โ€” model ID (leave empty for provider default)
    • api_key_env โ€” environment variable name holding your API key
  • [agents] โ€” optional overrides for agent detection (works out of the box with defaults)
    • authors โ€” substrings matched case-insensitively against commit author names
    • branch_patterns โ€” branch name prefixes that indicate agent activity

Commands

Core

wip               # Show briefing (default command)
wip scan          # Alias for wip
wip --json        # Output as JSON
wip --verbose     # Show full details
wip config init   # Interactive setup
wip config show   # Display current config
wip version       # Show version

Work-in-progress tracker

wip add "fix auth bug"                     # Add item (auto-links to current repo)
wip add "read docs" --repo /path/to/repo   # Add item linked to specific repo
wip done 1                                 # Mark item #1 as done
wip list                                   # Show open items
wip list --all                             # Show all items including completed

AI-powered commands

Requires an LLM provider configured in ~/.wip/config.toml and the corresponding API key set as an environment variable.

wip ai briefing                 # Narrative briefing
wip ai standup                  # Generate a standup update from git activity
wip ai ask "what was I working on yesterday?"
wip ai ask "anything I forgot to push?"
wip ai ask "summarize my week"

# Context-aware git help โ€” the AI sees your actual branches, dirty files, and stashes
wip ai ask "I have diverged branches, how do I cleanly get back to main?"
wip ai ask "how do I recover what I stashed last week?"
wip ai ask "what git commands do I need to untangle this mess?"

Example Output

Standard briefing (wip)

 wip โ€” 3 repos scanned

 work-in-progress โ€” 2 items

  #1  fix auth token refresh (auth-service) โ€” 2h ago
  #3  update API docs (api-gateway) โ€” 1d ago

auth-service (fix/token-refresh) โš 
  3 dirty ยท 1 stash ยท last commit 14h ago
  2 ahead, 0 behind origin
  agents:
    claude on agent/add-tests โ€” 12 commits, 14 files (23m ago) โ— active
    copilot on copilot/logout โ€” 4 commits, 3 files (7h ago) โ—‹ stale
  wip:
    #1 fix auth token refresh (2h ago)
  recent: main (3d), feat/oauth (5d)
  commits today:
    a1b2c3 fix retry logic for token refresh (2h ago)

frontend (main) โœ“
  clean ยท 2 stashes
  0 ahead, 0 behind origin

api-gateway (main) โ†“
  clean ยท 3 behind origin
  wip:
    #3 update API docs (1d ago)

AI briefing (wip ai briefing)

## Briefing

You were deep in a token refresh bug in auth-service yesterday evening.
You changed the retry logic in 3 files but stashed something โ€” probably
an alternative approach. Your note says the issue is around line 340.
You might want to start by comparing your stash against your current changes.

The frontend is clean but you left a TODO about form validation on Tuesday.
api-gateway just needs a pull โ€” 3 commits behind, low priority.

Suggested focus: finish auth-service first (uncommitted work at risk),
then circle back to the frontend TODO.

Status Icons

  • โœ“ โ€” Clean repo, up to date
  • โš  โ€” Dirty files (modified, staged, or untracked)
  • โ†“ โ€” Behind remote (needs pull)

Privacy

  • wip scan runs entirely locally โ€” no data leaves your machine.
  • wip ai commands send repository metadata (commit messages, branch names, file paths, work items) to your configured LLM provider (Anthropic, OpenAI, or Gemini). No file contents or diffs are sent.
  • API keys are never stored in config โ€” only the environment variable name is saved.

Development

# Install dependencies
pip install -e .

# Run from source
python -m wip.cli

Roadmap

Phase 0+1: Foundation + Scanner โœ…

  • Config management, repo discovery, git status scanning, terminal output

Phase 2: Interactive Worklist โœ…

  • wip add/done/list commands with repo linking and persistent state

Phase 4: LLM Integration โœ…

  • Provider abstraction (Anthropic, OpenAI, and Gemini all implemented)
  • wip ai briefing, wip ai standup, wip ai ask with streaming
  • Prompt assembly from scan data, config-driven provider/model selection

Phase 5: Passive Agent Detection โœ…

  • Detect coding agent activity from git signals (author names, branch patterns)
  • Agent sessions surface in wip, wip --json, and all AI commands automatically
  • Configurable author/branch patterns with sensible defaults (zero config required)
  • Status tracking: active (<1h), recent (<24h), stale (>24h)

Phase 6: Enriched File-Level Context โœ…

  • Changed files with diff stats (insertions/deletions), color-coded by stage in verbose output
  • Stash descriptions surfaced in verbose display and LLM prompts
  • Commit bodies (capped at 3 lines) and per-commit file lists (capped at 10 paths) in LLM context

Ideas and contributions welcome โ€” see docs/CONTEXT.md for architecture details.

Contact

License

MIT

Author

Built by Mahesh Naik with Claude

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

wip_cli-0.1.2.tar.gz (34.6 kB view details)

Uploaded Source

Built Distribution

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

wip_cli-0.1.2-py3-none-any.whl (26.3 kB view details)

Uploaded Python 3

File details

Details for the file wip_cli-0.1.2.tar.gz.

File metadata

  • Download URL: wip_cli-0.1.2.tar.gz
  • Upload date:
  • Size: 34.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for wip_cli-0.1.2.tar.gz
Algorithm Hash digest
SHA256 6c3b139ac4d466f09bfa40e1f5c350e2d3faba8c5c2e309b90bb46dd8eb0601b
MD5 8807d5caca47714e146ece82e622dc34
BLAKE2b-256 5d5831358487270cd4a68d8127a5789a9270e326240fa40cf24a2c4c632c0236

See more details on using hashes here.

File details

Details for the file wip_cli-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: wip_cli-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 26.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for wip_cli-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b8a6b650650e7e7a33cdeac75ac95d55f890848a5e8df1674ac1780f233a2d29
MD5 1365f2ef19f587481aafc73183a6c615
BLAKE2b-256 752a8c8869940815f21f9fd9c1190116fbc8240f5ff6a665ed07a03dbb29b42e

See more details on using hashes here.

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