Local-first CLI for tracking work across multiple systems with markdown
Gameplan helps you track work items across external systems (Jira, with GitHub and others coming soon) using local markdown files and a pluggable adapter architecture. All data lives locally in human-readable files that you control.
- π Local-first: All data in markdown files, version controlled with git
- π Pluggable adapters: Easy integration with any tracking system
- π Smart agenda: Configurable daily agenda with command-driven sections
- π§ͺ Test-driven: 126 tests with 90% coverage (exceeds 85% target)
- π Markdown-based: Human-readable, greppable, no vendor lock-in
- π€ AI-friendly: Comprehensive documentation for AI assistants
Run gameplan directly from GitHub using uvx:
# Run any gameplan command without cloning
uvx --from git+https://github.com/shanemcd/gameplan-cli gameplan --help
# Initialize a new gameplan
uvx --from git+https://github.com/shanemcd/gameplan-cli gameplan init
# Create and view your agenda
uvx --from git+https://github.com/shanemcd/gameplan-cli gameplan agenda init
uvx --from git+https://github.com/shanemcd/gameplan-cli gameplan agenda view# Clone the repository
git clone https://github.com/shanemcd/gameplan-cli.git
cd gameplan-cli
# Install dependencies
uv sync
# Run gameplan
uv run gameplan --help# Create a new gameplan repository (use uvx --from or uv run)
gameplan init
# This creates:
# - gameplan.yaml (configuration)
# - tracking/areas/jira/ (tracking directory)Edit gameplan.yaml to add items to track:
areas:
jira:
items:
- issue: "PROJ-123"
env: "prod"
- issue: "PROJ-456"
env: "stage"
agenda:
sections:
- name: "Focus & Priorities"
emoji: "π―"
description: "What's urgent/important today"
- name: "Calendar"
emoji: "π
"
command: "date"
description: "Today's schedule"
- name: "Notes"
emoji: "π"
description: "Thoughts and observations"# Initialize AGENDA.md
gameplan agenda init
# View your agenda
gameplan agenda view
# Update command-driven sections
gameplan agenda refresh# Initialize a new gameplan
gameplan init
gameplan init -d ~/my-gameplan # Initialize in specific directory
# Manage daily agenda
gameplan agenda init # Create AGENDA.md
gameplan agenda view # Display current agenda
gameplan agenda refresh # Update command-driven sections
# Sync tracked items
gameplan sync # Sync all configured adapters
gameplan sync jira # Sync Jira only# 1. Initialize your gameplan
cd ~/projects
gameplan init
# 2. Configure your items to track (edit gameplan.yaml)
# Add Jira issues, configure agenda sections
# 3. Create your daily agenda
gameplan agenda init
# 4. Work throughout the day
# - Edit AGENDA.md to add focus items, notes
# - Run `gameplan agenda refresh` to update calendar/commands
# 5. Sync Jira data
gameplan sync jiraAfter initialization, your gameplan repository looks like:
my-gameplan/
βββ gameplan.yaml # Configuration
βββ AGENDA.md # Daily agenda (after agenda init)
βββ tracking/
βββ areas/
βββ jira/
βββ PROJ-123-fix-api-bug/
β βββ README.md # Issue details + your notes
βββ archive/
βββ (completed items)
The configuration file defines what to track and how your agenda works:
areas:
jira:
items:
- issue: "PROJ-123"
env: "prod"
agenda:
sections:
- name: "Focus & Priorities"
emoji: "π―"
description: "What's urgent today"
# Manual section - you edit this
- name: "Calendar"
emoji: "π
"
command: "gcalcli agenda --tsv"
description: "Today's meetings"
# Command-driven - auto-populatedYour daily command center, generated from gameplan.yaml:
# Agenda - Wednesday, October 22, 2025
## π― Focus & Priorities
[What's urgent/important today]
## π
Calendar
9:30am - Team Standup
2:00pm - Sprint Planning
## π Notes
[Thoughts and observations]Each tracked item gets its own README:
# PROJ-123: Fix API Authentication Bug
**Status**: In Progress
**Assignee**: johndoe
## Overview
API authentication fails when using OAuth tokens due to...
## Notes
- Reproduced locally with test credentials
- Root cause: token expiration not handled
- Fix: Add refresh token logicGameplan uses a pluggable adapter architecture. Each adapter integrates with an external tracking system.
Jira Adapter (Phase 4 - β Complete)
- Syncs Jira issues via jirahhh CLI
- Fetches: status, assignee, summary
- Updates: README.md while preserving your notes
- Supports multiple Jira environments (prod/stage)
Coming Soon:
- GitHub adapter (issues, PRs)
- Generic REST API adapter
-
Install jirahhh:
uvx jirahhh --help
-
Configure environment variables:
export JIRA_URL="https://your-jira.atlassian.net" export JIRA_EMAIL="you@example.com" export JIRA_API_TOKEN="your-token"
-
Add items to gameplan.yaml:
areas: jira: items: - issue: "PROJ-123" env: "prod"
-
Sync:
gameplan sync jira
- PROJECT_PLAN.md - Implementation roadmap and progress
- ARCHITECTURE.md - Architecture and design decisions
- AGENTS.md - AI assistant reference guide
- CONTRIBUTING.md - How to contribute
- LICENSE - Apache 2.0 license
# Clone the repository
git clone https://github.com/shanemcd/gameplan-cli.git
cd gameplan-cli
# Install development dependencies
uv sync --extra dev
# Run tests
uv run pytest
# Run tests with coverage
uv run pytest --cov=cli --cov-report=term-missing
# View HTML coverage report
uv run pytest --cov=cli --cov-report=html
open htmlcov/index.htmlTest-Driven Development:
- Write tests first (RED phase)
- Implement minimum code to pass (GREEN phase)
- Refactor without changing behavior (REFACTOR phase)
- Maintain 85%+ overall coverage
Git Commit Guidelines:
- Follow cbea.ms/git-commit
- Imperative mood: "Add feature" not "Added"
- 50 char subject, 72 char body wrap
- Explain "what" and "why", not "how"
Code Quality:
- Type hints on all functions
- Docstrings on all public APIs
- Comprehensive error handling
- Idempotent operations
See CONTRIBUTING.md for detailed guidelines.
- β Base adapter interface with ABC
- β
gameplan initcommand - β Agenda system (init, view, refresh)
- β Jira adapter with change detection and Activity Log
- β
gameplan synccommand - β Rich tracked items formatting with status emojis
- β CLI integration with full command routing
- β Comprehensive documentation (README, ARCHITECTURE, CONTRIBUTING)
- β 126 tests, 90% coverage (exceeds 85% target)
- β GitHub Actions CI: Automated testing on push/PR
- β³ v0.1.0 Release: Tag and prepare for public release
- β³ PyPI Publishing: Make installable via
pip install gameplan-cli(optional)
- GitHub adapter for issues and PRs
- Advanced agenda features (checkboxes, logbook, auto-archive)
- Web UI (optional)
- Watch mode for continuous sync
- Export/reporting
See PROJECT_PLAN.md for detailed roadmap.
Contributions are welcome! This project follows strict TDD practices.
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Write tests first (RED phase)
- Implement feature (GREEN phase)
- Ensure all tests pass:
uv run pytest - Ensure coverage:
uv run pytest --cov=cli - Commit with clear message (see git commit guidelines)
- Push and create a pull request
See CONTRIBUTING.md for a step-by-step TDD guide for creating adapters.
Apache 2.0 - See LICENSE for details.
- Built with β€οΈ following strict TDD practices
- Inspired by the need for local-first work tracking
- Uses jirahhh for Jira integration
- Author: Shane McDonald
- Email: me@shanemcd.com
- Repository: https://github.com/shanemcd/gameplan-cli
- Issues: https://github.com/shanemcd/gameplan-cli/issues
Made with π€ and β using Claude Code