Generic pattern for generating comprehensive status reports by gathering data from version control, code review platforms, issue trackers, and CI/CD systems, then aggregating and presenting in scannable format. Use when checking project status, starting sessions, reviewing activity, or when status report, sitrep, project overview, or what's changed are mentioned. Supports natural language time constraints and stack-aware organization.
This skill inherits all available tools. When active, it can use any tool Claude has access to.
references/beads.mdreferences/github.mdreferences/graphite.mdreferences/linear.mdscripts/gatherers/beads.tsscripts/gatherers/github.tsscripts/gatherers/graphite.tsscripts/gatherers/linear.tsscripts/lib/time.tsscripts/lib/types.tsscripts/sitrep.tsGather → aggregate → present pattern for comprehensive project status across VCS, PRs, issues, CI.
<when_to_use>
NOT for: deep-dive into specific items (use native tools), real-time monitoring, single-source queries </when_to_use>
<core_pattern> Three-phase workflow:
Key principles:
Extract time constraints from natural language:
-Xh-Xd-1d-12h-7dStore as query-compatible format for each source.
Phase 2: Gather Data
For each available source, run parallel queries:
Version Control State
Code Review Status
Issue Tracking
CI/CD Details
Handle missing sources gracefully — skip sections if unavailable.
Phase 3: Aggregate Data
Cross-reference and organize:
Phase 4: Present Report
Format for scanning:
<time_parsing> Natural Language → Query Parameters
Common patterns:
| User Input | Conversion | Notes |
|---|---|---|
| "last 6 hours" | -6h | Hours format |
| "past 2 days" | -2d | Days format |
| "yesterday" | -1d | Single day back |
| "this morning" | -12h | Approximate to half-day |
| "this week" | -7d | Full week |
| "last week" | -7d or -14d | Clarify if needed |
| "since Monday" | Calculate days | Convert to -Xd |
| "last 24 hours" | -24h or -1d | Normalize |
Implementation approach:
Format targets:
-Xh or -Xd flags-P7D) or absolute timestampsupdatedAt: "-P{X}D" format
</time_parsing><data_sources> Version Control Systems
Gather:
Stack-aware systems (Graphite, git-stack):
Standard git:
Code Review Platforms
Gather:
Platforms: GitHub, GitLab, Bitbucket, Gerrit
Issue Trackers
Gather:
Platforms: Linear, Jira, GitHub Issues, GitLab Issues
CI/CD Systems
Gather:
Platforms: GitHub Actions, GitLab CI, CircleCI, Jenkins
See graphite.md, github.md, linear.md, beads.md for tool-specific implementations. </data_sources>
<aggregation> **Cross-Referencing Strategy**Link related items across sources:
Stack-Aware Organization
For stack-aware VCS (Graphite):
For standard workflows:
Filtering Logic
Time-based:
Status-based:
Relative Timestamps
Convert absolute timestamps to relative:
= 7 days: "X weeks ago" or absolute date
Provides quick sense of recency. </aggregation>
<presentation> **Output Structure**=== STATUS REPORT: {repo-name} ===
Generated: {timestamp}
{Time filter: "Last 24 hours" if applicable}
{VCS_SECTION}
{PR_SECTION}
{ISSUE_SECTION}
{CI_SECTION}
Visual Indicators
Status:
Progress (use ░▓ from formatting conventions):
Severity (use ◇◆ from formatting conventions):
Section Templates
VCS Section (stack-aware):
📊 {VCS_NAME} STACK
{visual tree with branch relationships}
├─ {branch}: {status} [{commit_count} commits]
│ PR #{num}: {pr_status} | CI: {ci_status}
│ Updated: {relative_time}
VCS Section (standard):
📊 VERSION CONTROL
Current branch: {branch}
Status: {clean | modified | ahead X, behind Y}
Recent commits: {count} in last {period}
PR Section:
🔀 PULL REQUESTS ({open_count} open)
PR #{num}: {title} [{state}]
Author: {author} | Updated: {relative_time}
CI: {status_indicator} {pass}/{total} checks
Reviews: {status_indicator} {approved}/{total} reviewers
{blocker indicator if applicable}
Issue Section:
📋 ISSUES (Recent Activity)
{issue_key}: {title} [{status}]
Priority: {priority} | Assignee: {assignee}
Updated: {relative_time}
{link}
CI Section:
🔧 CI/CD ({total} runs)
Success: {success_count} | Failed: {failed_count} | In Progress: {pending_count}
{if failures exist:}
Recent Failures:
{workflow_name}: {error_summary}
{link to run}
Actionable Insights
Highlight at top or in dedicated section:
Example:
⚠️ ATTENTION NEEDED
◆◆ PR #123: CI failing for 2 days (blocks deployment)
◆ Issue BLZ-45: High priority, unassigned
◇ Branch feature/old: No activity for 14 days
</presentation>
<context_awareness> Repository Context Mapping
For multi-repo workflows, map current directory to relevant filters:
{
"mappings": [
{
"path": "/absolute/path/to/repo",
"filters": {
"issues": { "team": "TEAM-ID" },
"labels": ["repo-name"]
}
},
{
"path": "/path/with/*",
"pattern": true,
"filters": {
"issues": { "project": "PROJECT-ID" }
}
}
],
"defaults": {
"time_period": "7d",
"issue_limit": 10,
"pr_limit": 20
}
}
Lookup Strategy:
Configuration Location:
Store in skill directory or user config (e.g., ~/.config/claude/status-reporting/config.json)
</context_awareness>
Optional (graceful degradation):
Execution Environment:
Skill should work with ANY available subset of sources. </dependencies>
<implementation_patterns> Parallel Queries
Execute source queries concurrently:
const [vcsData, prData, issueData, ciData] = await Promise.allSettled([
fetchVCSState(timeFilter),
fetchPRStatus(timeFilter),
fetchIssues(timeFilter),
fetchCIStatus(timeFilter)
]);
// Handle each result (success or failure)
// Skip sections where source unavailable
Error Handling
Graceful degradation:
Caching Strategy
For expensive queries:
Output Formatting
Use consistent width for scanning:
The scripts/ directory contains Bun scripts that do the heavy lifting:
scripts/
├── sitrep.ts # Entry point - orchestrates all gatherers
├── gatherers/
│ ├── graphite.ts # Graphite stack data
│ ├── github.ts # GitHub PRs, CI status
│ ├── linear.ts # Linear issues (via Claude CLI headless)
│ └── beads.ts # Beads local issues
└── lib/
├── time.ts # Time parsing utilities
└── types.ts # Shared type definitions
Usage:
./scripts/sitrep.ts # All sources, 24h default
./scripts/sitrep.ts -t 7d # All sources, last 7 days
./scripts/sitrep.ts -s github,beads # Specific sources only
./scripts/sitrep.ts --format=text # Human-readable output
Output Formats:
json (default) — structured data for agent consumptiontext — human-readable with visual indicatorsBenefits:
Run the script first, then format/present the results. </scripts>
<extensibility> **Adding New Sources**To integrate additional data sources:
references/Custom Aggregations
Examples:
Add as optional sections when data available.
Tool-Specific Optimizations
Reference documents should cover:
NEVER:
<anti_patterns> Sequential Queries — waiting for each source before next
Why it fails: Slow, blocks on failures
Instead: Use Promise.allSettled() for parallel execution
Rigid Source Requirements — failing if expected source missing
Why it fails: Breaks in different environments
Instead: Detect available sources, skip unavailable
Absolute Timestamps Only — showing raw dates without context
Why it fails: Hard to scan for recency
Instead: Use relative timestamps ("2 hours ago") with absolute in hover/detail
Unstructured Output — dumping all data without organization
Why it fails: Not scannable, misses insights
Instead: Follow presentation templates with hierarchy and indicators </anti_patterns>
<integration> **Workflow Integration**Status reporting as session starter:
Cross-Skill References
Automation Opportunities
Time-Constrained (natural language):
User: "Status report for last 24 hours"
Agent: {parses "last 24 hours" → "-24h"}
{applies to all source queries}
{presents filtered report with "Last 24 hours" header}
Multi-Source (full context):
Agent gathers:
- Graphite stack (3 branches, 3 PRs)
- GitHub PR status (2 passing CI, 1 failing)
- Linear issues (5 updated recently)
- CI details (12 runs, 2 failures)
Agent presents:
- Stack visualization with PR status
- PR details with CI/review state
- Issue activity sorted by priority
- CI summary with failure links
- Attention section: 1 failing CI, 1 unassigned high-priority issue
Graceful Degradation (limited sources):
Agent detects:
- git available (no Graphite)
- gh CLI available
- No Linear MCP
- No CI access
Agent presents:
- Standard git status (branch, commits)
- GitHub PR section (from gh CLI)
- Note: "Linear and CI sections unavailable"
</examples>