TPM Copilot
by @reighlan
AI-powered operating system for Technical Program Managers and Project Managers. Pulls data from Jira, Linear, GitHub, and calendars to auto-generate status...
clawhub install tpm-copilotπ About This Skill
name: tpm-copilot description: "AI-powered operating system for Technical Program Managers and Project Managers. Pulls data from Jira, Linear, GitHub, and calendars to auto-generate status reports, track risks and blockers, manage meeting workflows, map dependencies, and deliver stakeholder dashboards. Use when: (1) generating status reports or program updates, (2) tracking risks, blockers, or stale tickets, (3) preparing meeting agendas or extracting action items, (4) mapping cross-team dependencies, (5) creating stakeholder dashboards, (6) monitoring sprint health or velocity, (7) writing executive summaries, or (8) automating any TPM/PM workflow."
TPM Copilot
Your AI program management operator. Pulls from Jira, Linear, GitHub, and calendars β synthesizes everything into status reports, risk alerts, meeting prep, and stakeholder dashboards.
Setup
Dependencies
pip3 install requests
For GitHub: install gh CLI and authenticate (gh auth login).
API Connections (configure in config.json)
JIRA_BASE_URL, JIRA_EMAIL, JIRA_API_TOKEN (Atlassian API token)LINEAR_API_KEYgh CLI (already authenticated) or GITHUB_TOKENSLACK_WEBHOOK_URL (for report delivery)Not all required β skill adapts to what's configured.
Workspace
tpm/
βββ config.json # API keys, project settings, team config
βββ programs/ # Per-program data
β βββ program-name/
β βββ config.json # Program-specific settings (board IDs, repos, teams)
β βββ reports/ # Generated status reports
β βββ risks/ # Risk register snapshots
β βββ dependencies/ # Dependency maps
βββ templates/ # Report templates
βββ meetings/ # Meeting notes and action items
βββ state.json # Persistent state (last check timestamps, etc.)
Run scripts/init-workspace.sh to create this structure.
Core Workflows
1. Status Report Generator
The flagship workflow. Pulls from all connected tools, generates audience-specific reports.
scripts/status-report.sh --program "my-program" --audience exec
scripts/status-report.sh --program "my-program" --audience eng
scripts/status-report.sh --program "my-program" --audience full
scripts/status-report.sh --program "my-program" --audience exec --deliver slack
Data pulled:
Audience formats:
Delivery options:
programs//reports/ 2. Risk & Blocker Radar
Proactive scanning for problems before they become crises.
scripts/risk-radar.sh --program "my-program"
scripts/risk-radar.sh --program "my-program" --alert # Send alerts for new risks
scripts/risk-radar.sh --program "my-program" --history # Show risk trends
Auto-detected risks:
Risk register maintained as JSON in programs/:
{
"id": "RISK-001",
"severity": "high",
"category": "delivery",
"title": "Auth service migration blocked on Team B API",
"detected_at": "2026-02-24",
"source": "jira_blocked_ticket",
"ticket": "PROJ-1234",
"status": "open",
"mitigation": "",
"owner": ""
}
3. Meeting Autopilot
Automate meeting prep, notes processing, and follow-up tracking.
scripts/meeting-prep.sh --program "my-program" --type standup
scripts/meeting-prep.sh --program "my-program" --type sprint-review
scripts/meeting-prep.sh --program "my-program" --type exec-sync
scripts/meeting-prep.sh --program "my-program" --type program-reviewscripts/process-notes.sh --file meeting-notes.md # Extract action items
scripts/action-tracker.sh --program "my-program" # Show overdue actions
scripts/action-tracker.sh --program "my-program" --create-tickets # Create Jira tickets for actions
Meeting types and auto-generated agendas:
Notes processing:
AI:, TODO:, ACTION:, or [ ])4. Dependency Tracker
Map and monitor cross-team dependencies.
scripts/dependency-map.sh --program "my-program" # Generate dependency map
scripts/dependency-map.sh --program "my-program" --check # Check for slips
scripts/dependency-map.sh --program "my-program" --alert # Alert on at-risk dependencies
Sources:
depends-on:team-b)programs//dependencies/deps.json Output:
5. Program Dashboard
Quick terminal dashboard for program health.
scripts/dashboard.sh --program "my-program"
Shows:
Configuration
Program Config (programs//config.json )
{
"name": "Project Phoenix",
"workstreams": [
{
"name": "Backend",
"jira_project": "PHX",
"jira_board_id": "123",
"github_repos": ["org/backend-api"],
"team_lead": "Alice"
},
{
"name": "Frontend",
"jira_project": "PHX",
"jira_board_id": "124",
"github_repos": ["org/web-app"],
"team_lead": "Bob"
}
],
"milestones": [
{"name": "Alpha Release", "date": "2026-03-15", "status": "on-track"},
{"name": "Beta Release", "date": "2026-04-30", "status": "on-track"}
],
"stakeholders": {
"exec": ["vp-eng@company.com"],
"eng": ["#eng-phoenix-slack-channel"],
"full": ["phoenix-team@company.com"]
},
"settings": {
"stale_ticket_days": 5,
"pr_review_threshold_hours": 48,
"sprint_length_weeks": 2,
"tracker": "jira"
}
}
Tracker Selection
Set settings.tracker to "jira" or "linear". Scripts auto-adapt API calls accordingly.
Cron Integration
References
references/jira-setup.md β Jira API authentication and project configurationreferences/linear-setup.md β Linear API setup and GraphQL queriesreferences/report-templates.md β Customizing report formats and sectionsreferences/risk-categories.md β Risk taxonomy and severity definitionsβοΈ Configuration
Program Config (programs//config.json )
{
"name": "Project Phoenix",
"workstreams": [
{
"name": "Backend",
"jira_project": "PHX",
"jira_board_id": "123",
"github_repos": ["org/backend-api"],
"team_lead": "Alice"
},
{
"name": "Frontend",
"jira_project": "PHX",
"jira_board_id": "124",
"github_repos": ["org/web-app"],
"team_lead": "Bob"
}
],
"milestones": [
{"name": "Alpha Release", "date": "2026-03-15", "status": "on-track"},
{"name": "Beta Release", "date": "2026-04-30", "status": "on-track"}
],
"stakeholders": {
"exec": ["vp-eng@company.com"],
"eng": ["#eng-phoenix-slack-channel"],
"full": ["phoenix-team@company.com"]
},
"settings": {
"stale_ticket_days": 5,
"pr_review_threshold_hours": 48,
"sprint_length_weeks": 2,
"tracker": "jira"
}
}
Tracker Selection
Set settings.tracker to "jira" or "linear". Scripts auto-adapt API calls accordingly.