AgentSkillsCN

status

生成高管状态报告,附带RAG状态信息,并刷新仪表盘

SKILL.md
--- frontmatter
name: status
description: Generate executive status report with RAG status and refresh the dashboard

Status Update

You are the engineering-manager. Generate a comprehensive status update and refresh the dashboard.

Architecture: The dashboard uses a data-driven template system. The agent writes JSON data; a build script generates the HTML. This avoids manual SVG math and surgical HTML edits.

Files:

  • docs/reports/dashboard-data.json — Agent-generated data file (all metrics)
  • docs/reports/dashboard-template.html — HTML template with placeholders
  • docs/reports/status-dashboard.html — Generated output (git-committed)
  • scripts/generate-dashboard.ts — Build script that reads JSON + template, computes SVG offsets, writes HTML

Step 1: Collect data (all in parallel)

bash
# Commits
git log --oneline --since="<project-start-date>" -n 500

# PRs merged
gh pr list --state merged --limit 100 --json number --jq 'length'

# Open issues by priority
gh issue list --state open --label P0-mvp --limit 200 --json number --jq 'length'
gh issue list --state open --label P1-fast-follow --limit 200 --json number --jq 'length'
gh issue list --state open --label P2-future --limit 200 --json number --jq 'length'

# Closed issues by priority
gh issue list --state closed --label P0-mvp --limit 200 --json number --jq 'length'
gh issue list --state closed --label P1-fast-follow --limit 200 --json number --jq 'length'

# Work type distribution
gh issue list --state all --label type:build --limit 200 --json number,state --jq 'length'
gh issue list --state all --label type:keep --limit 200 --json number,state --jq 'length'
gh issue list --state all --label type:invest --limit 200 --json number,state --jq 'length'

# Launch readiness
gh issue list --state open --label launch-readiness --limit 200 --json number --jq 'length'
gh issue list --state closed --label launch-readiness --limit 200 --json number --jq 'length'

# Current sprint milestone
gh api repos/{owner}/{repo}/milestones --jq '.[] | select(.state=="open")'

# Latest commit
git log -n 1 --format="%H %s"

Also read:

  • DOCS.md — feature completion status (Completed section)
  • .product/backlog.md — priority breakdown
  • .claude/sprint/current.md — sprint goal and plan
  • .product/rice-scores.md — RICE scores for context

Step 2: Compute metrics

Feature counts

  • Count completed features from DOCS.md "Completed" section
  • Total features from DOCS.md "Active/Planned" + "Completed"
  • Overall % = completed / total

Priority breakdown

  • P0: closed / (open + closed) for P0-mvp label
  • P1: closed / (open + closed) for P1-fast-follow label
  • P2: closed / (open + closed) for P2-future label

Sprint progress

  • From milestone: closed_issues / (open_issues + closed_issues)
  • Days remaining: milestone due date - today

Launch readiness

  • From launch-readiness label: closed / (open + closed)

Step 3: Compute RAG status

TrackGreenAmberRed
App FeaturesP0 > 90%P0 70-90%P0 < 70%
Core FunctionalityAll core items shipped, no regressionsMinor bugs openCrash/regression
Launch Readiness> 50% items done10-50% done< 10% done
CI/CD PipelinePR gate + auto build livePartially set upNothing exists
Operational ReadinessAlerting + rollback testedDocs exist, untestedNothing exists
Testing & QACI enforced, E2E currentTests exist, not in CINo test coverage

Step 4: Generate executive narrative

Write 3-4 sentences covering:

  1. Opening: Sprint number, days in, overall completion %
  2. Progress: What shipped since last update, key milestones
  3. Key concern: Single biggest risk or gap
  4. Recommendation: One clear action item

Tone: Professional, concise, data-backed. As if briefing a technical CEO with 30 seconds to read.

Step 5: Write dashboard-data.json

Write the collected metrics to docs/reports/dashboard-data.json. The JSON schema:

json
{
  "generatedAt": "ISO-8601 timestamp with timezone",
  "sprint": {
    "number": 3,
    "status": "ACTIVE",
    "issuesClosed": 0,
    "issuesTotal": 11,
    "dateRange": "Feb 13-19",
    "mode": "Agent-Only",
    "goal": "...",
    "breakdown": "Agent: 11 (F=1-2) | Human: 0 | External: 0",
    "riceTotal": 203.5,
    "riceNote": "highest agent-only sprint throughput",
    "items": [
      { "id": "{{SPEC_PREFIX}}-125", "name": "Feature name", "type": "keep" }
    ]
  },
  "velocity": {
    "commits": 244,
    "prsMerged": 61,
    "linesAdded": 214428,
    "linesDeleted": 4703,
    "featuresShipped": 44
  },
  "priorities": {
    "p0": { "closed": 44, "total": 49, "label": "MVP", "deadline": "TBD" },
    "p1": { "closed": 20, "total": 43, "label": "Fast Follow", "deadline": "TBD" },
    "p2": { "closed": 0, "total": 3, "label": "Future", "deadline": "TBD" }
  },
  "narrative": "Executive summary paragraph...",
  "rag": [
    { "track": "App Features", "status": "green", "detail": "90% closed (44/49)" }
  ],
  "workTypeDistribution": {
    "build": { "count": 3, "percentage": 27, "items": [{ "id": "{{SPEC_PREFIX}}-119", "name": "Feature name" }] },
    "invest": { "count": 3, "percentage": 27, "items": [{ "id": "{{SPEC_PREFIX}}-060", "name": "Feature name" }] },
    "keep": { "count": 5, "percentage": 46, "items": [{ "id": "{{SPEC_PREFIX}}-125", "name": "Feature name" }] }
  },
  "launchReadiness": {
    "completed": 25,
    "total": 49,
    "categories": [
      { "name": "App Store", "score": "0/4", "status": "red" },
      { "name": "CI/CD", "score": "5/6", "status": "green" }
    ]
  },
  "risks": [
    { "title": "Risk title", "detail": "Details...", "icon": "rocket|info" }
  ],
  "actionItems": [
    { "priority": 1, "title": "Action title", "detail": "Details...", "severity": "high|medium|low" }
  ],
  "countdowns": {
    "launch": { "date": "YYYY-MM-DD", "label": "Launch", "displayDate": "Mon DD, YYYY" }
  },
  "roadmap": {
    "todayLabel": "Today",
    "phases": [
      { "id": "mvp", "name": "Phase 1 — MVP", "dates": "Start -> End", "flex": 4, "class": "mvp" }
    ],
    "milestones": [
      { "title": "Launch", "date": "Mon DD", "major": true, "afterPhase": "mvp" }
    ]
  }
}

RAG status values

  • "green" — on track
  • "amber" — at risk
  • "red" — blocked/critical
  • "blue" — informational

Risk icon values

  • "rocket" — external/launch risk (renders danger color)
  • "info" — informational risk (renders info color)

Action item severity values

  • "high" — orange styling (urgent)
  • "medium" — blue styling (important)
  • "low" — neutral styling

Step 6: Generate dashboard HTML

Run the build script to generate the dashboard from the JSON data:

bash
{{PKG_RUN}} scripts/generate-dashboard.ts

The script will:

  1. Read docs/reports/dashboard-data.json
  2. Read docs/reports/dashboard-template.html
  3. Compute all SVG ring offsets automatically (no manual math needed)
  4. Replace all template placeholders with computed values
  5. Write docs/reports/status-dashboard.html

SVG math is handled automatically by the script. Do NOT manually compute offsets.

Step 7: Present summary

Print a text summary to the user:

code
Status Update -- Sprint N, Day X of Y
=====================================

Executive Summary:
  [narrative paragraph]

RAG Status:
  App Features -- XX/XX (YY%)
  Core Functionality -- Status
  Launch Readiness -- XX%
  CI/CD -- Status
  ORR -- Status
  Testing -- Status

Sprint Progress: X/Y issues (Z%)
  Completed: #A, #B
  In progress: #C, #D
  Not started: #E

Dashboard updated at docs/reports/status-dashboard.html

Step 8: Commit (if user approves)

Stage and commit the updated dashboard:

bash
git add docs/reports/dashboard-data.json docs/reports/status-dashboard.html
git commit --no-gpg-sign -m "Update status dashboard -- Sprint N, Day X"
git push