skills/win-report/SKILL.md
Discover and synthesize engineering wins from GitHub PRs/issues, Confluence, Jira, Notion, and Slack over a configurable time range. Uses exhaustive two-phase subagent architecture to paginate all sources and read all artifacts in full before synthesizing. Produces a structured markdown report of top wins with evidence, impact, and ownership. Use when the user says "/win-report", "summarize my wins", "what did I ship last month", "monthly wins report", "generate wins for performance review", or asks for a summary of their recent engineering contributions.
npx skillsauth add kyzooghost/audit-code-health-skill win-reportInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Discover and synthesize engineering wins into a structured report using exhaustive multi-source research.
/win-report - last 30 days, prompts for all params/win-report 2026-03-01 2026-04-01 - custom date range, prompts for restExtract start/end dates from args (YYYY-MM-DD format). If none provided, default to last 30 days from today.
Probe the environment for each source type:
| Source | Detection method |
|--------|-----------------|
| GitHub | Run gh api /user --jq '.login'. If succeeds, GitHub is available and username is captured. |
| Confluence | Check if mcp__atlassian__search tool exists. |
| Jira | Check if mcp__atlassian__searchJiraIssuesUsingJql tool exists. |
| Notion | Check if any mcp__notion__* tools exist. |
| Slack | Check if any mcp__slack__* tools exist. |
Ask in one prompt:
CBA-General, CBA-QTN-Global-Cloud-Transformation)Do not ask for repo lists, Confluence spaces, Jira projects, or Slack channels. These are auto-discovered from user activity.
Auto-discover all repos where the user has activity in the date range.
For each org, run:
gh search prs --author={username} --owner={org} --merged=>{start_date} --limit 100 --json repository
Paginate until no more results. Deduplicate repo names across all orgs to build the full repo list.
Log: "Discovered {N} repos with activity across {M} orgs"
Spawn one subagent per source. Each subagent's sole job: paginate until results are exhausted and return a complete artifact manifest. No content reading in this phase.
Each subagent prompt MUST include verbatim:
"IMPORTANT: You must paginate until no more results are returned. Do not stop at the first page. Continue requesting the next page/cursor/offset until the API returns zero results."
Find all merged PRs and issues by the user across all discovered repos:
gh search prs --author={username} --owner={org} --merged={start_date}..{end_date} --limit 100 --json number,title,url,repository,mergedAt
Paginate with --page until empty. Repeat per org. Then find issues:
gh search issues --author={username} --owner={org} --created={start_date}..{end_date} --limit 100 --json number,title,url,repository,createdAt,state
Return manifest: {number, title, url, repo, date, type: "pr"|"issue"} for every result.
Use mcp__atlassian__searchConfluenceUsingCql with:
CQL: contributor = currentUser() AND lastmodified >= "{start_date}" AND type = page
Paginate with cursor until no more results. Return manifest: {pageId, title, url, date, spaceKey} for every page.
Use Notion search/query tools to find all pages authored/edited by the user in the date range. Paginate until exhausted. Return manifest: {pageId, title, url, date} for every page.
Use Slack search tools to find all messages from the user in the date range. Paginate until exhausted. Collect unique thread root IDs. Return manifest: {threadId, channel, date, preview_text} for every thread.
Use mcp__atlassian__searchJiraIssuesUsingJql with:
JQL: (assignee = currentUser() OR reporter = currentUser()) AND updated >= "{start_date}"
Paginate with startAt until no more results (increment by maxResults each call). Return manifest: {issueKey, summary, url, status, type, updated} for every ticket.
Merge all manifests. Log total counts:
"Found: {N} PRs, {M} issues, {P} Confluence pages, {Q} Notion pages, {R} Slack threads, {S} Jira tickets"
Take the full manifest from Phase 1. Spawn parallel subagents, each receiving a batch of ~10-15 artifacts to read in full.
Each subagent prompt MUST include verbatim:
"IMPORTANT: Read the FULL body/content of every artifact assigned to you. Do not summarize from titles or metadata alone. Read the actual content."
| Type | What to read |
|------|-------------|
| PR | Body/description, review comments, linked issues mentioned in body, file change summary (additions/deletions, key files) |
| Issue | Body, all comments |
| Confluence page | Full page body via mcp__atlassian__getConfluencePage with contentFormat: "markdown" |
| Notion page | Full page body content |
| Slack thread | All messages in the thread (use thread reply APIs, not just root message) |
| Jira ticket | Description, all comments, linked issues/PRs |
For each artifact, the deep-read subagent returns:
### {artifact_url}
- **Type:** PR / issue / page / thread / ticket
- **What changed/discussed:** 1-3 sentences of actual content summary
- **Why it likely mattered:** impact signals found in the content
- **Complexity signals:** technical difficulty, ambiguity, cross-system, novel problem
- **Related artifacts mentioned:** links to other PRs, tickets, docs found in the content
- **Ownership signals:** "I designed", "I implemented", decision language, leadership language
~10-15 artifacts per subagent. For 150 artifacts total, spawn ~10-15 parallel subagents. For 50 artifacts, spawn ~4-5.
Convert Phase 2 signal summaries into 5-8 candidate win threads.
Group related artifacts across sources into threads. A single win often spans multiple PRs, a Jira ticket, a Confluence design doc, and Slack discussions.
For each thread, write a one-line hypothesis: What I did -> why it mattered
Example: Refactored Helm deployment templates across 7 services -> reduced config drift and lowered deployment failure risk.
Score each candidate:
Override score if a lower-scoring item is clearly more promotion-relevant.
Selection preferences:
Keep an artifact-poor candidate only if clearly stronger than better-evidenced alternatives.
Single round, 8-15 questions max. Rules:
Do not ask low-leverage biography questions.
Output the top 3 wins. Each win must use this exact template:
## TITLE
Short and outsider-readable.
**What I shipped/solved:**
1-2 punchy sentences.
**Why it mattered:**
State the stakes and who benefited.
**Why it was difficult:**
Optional. Include only if it clarifies technical difficulty, ambiguity, or non-obvious judgment.
**Impact (current):**
Metrics or strong proxies. Include baseline where possible.
**My ownership:**
Use explicit "I" language. Clarify collaborator boundaries where relevant.
**Evidence / artifacts:**
- PRs, docs, dashboards, incidents, demos, tickets
- Links or [LINK] placeholders
**Missing evidence:**
Optional. Call out screenshots, adoption numbers, before-state, or metrics still needed.
**Notes to self (confirm later):**
Short bullets only.
After the wins, include a summary table:
## Summary
| Win | Core Signal | Impact Proxy |
| --- | --- | --- |
| {Win 1 short name} | {e.g. Pioneer, risk reduction, architectural judgment} | {e.g. 4h -> 10min x 20 squads} |
| ... | ... | ... |
If any win contains a rare or subtle technical lesson, propose one public artifact idea:
Use an even stricter, more compressed style than the win entries.
Write the full report to wins-YYYY-MM.md in the current working directory.
The report contains only the final polished wins - no intermediate work (candidate threads, scoring, selection rationale, discovery manifests). Those are working artifacts used during discovery and triage but excluded from the output file.
Include in this order:
# Win List - {Month} {Year}Target reader: skeptical, time-poor outsider with no context on the engineering team.
development
Sync a skill from this repo into the local machine's skill directories. Use when the user asks to make a repo skill available locally, sync a local skill for Claude, Agents, or Codex, update local skill symlinks, or follow the .claude/skills source link pattern with .agents/skills and .codex/skills symlinks.
development
Sync a command from this repo into local agent surfaces. Use when the user asks to make a repo command available locally, sync a local command for Claude, Agents, or Codex, update command symlinks, or expose a command to Codex as a skill.
testing
Use when the user asks to grill, interrogate, pressure-test, or relentlessly interview them about a plan until requirements, tradeoffs, dependencies, and implementation decisions are clear.
tools
Use when the user asks to create, update, draft, or generate a GitHub pull request, including /create-pr behavior or equivalent workflow.