소스 정보
- 저장소
- openshift/hypershift
- 최근 소스 활동
- 2026년 8월 12일 13:51
- 감지된 SKILL.md 언어
- 영어
- 스타
- 546
- 포크
- 578
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
SKILL.md 표시 중
SKILL.md
소스 지침 · 읽기 전용 미리보기- name
- pr-report
- description
- PR Report Generator
# PR Report Generator
Generate comprehensive PR reports for openshift/hypershift, openshift-eng/ai-helpers, openshift/enhancements, and openshift/release repositories.
## Usage
```
/pr-report # Last 7 days (default)
/pr-report --start 2026-02-05 # From date to today
/pr-report --start 2026-02-05 --end 2026-02-12 # Specific date range
/pr-report --start 2026-02-05 --end 2026-02-12 --deep # With deep code analysis
/pr-report --start 2026-02-05 --end 2026-02-12 --deep --progress-report # Deep analysis + progress report
/pr-report --start 2026-02-05 --end 2026-02-12 --deep --breaking-changes # Deep analysis + breaking change report
/pr-report --start 2026-05-14 --end 2026-06-22 --deep --progress-report --blog # Deep + progress report + blog post
```
**Parameters:**
- `--start` (optional): Starting date in YYYY-MM-DD format (e.g., `2026-02-05`). Defaults to 7 days ago.
- `--end` (optional): Ending date in YYYY-MM-DD format (e.g., `2026-02-12`). Defaults to today.
- `--deep` (optional): Enable deep analysis mode that fetches and analyzes actual code diffs.
- `--progress-report` (optional): Generate a narrative blog-style progress report (Dolphin Emulator style). **Requires `--deep`.**
- `--breaking-changes` (optional): Generate a detailed breaking change assessment report for management cluster operators and senior SREs. **Requires `--deep`.**
- `--blog` (optional): Generate a Material-styled blog post in `docs/content/blog/` and update `docs/mkdocs.yml` nav. **Requires `--progress-report`.**
- `--output-dir` (optional): Directory for output files. If not specified, ask the user with AskUserQuestion.
## What This Command Does
This command generates **two reports** (with two optional additions):
### 1. Fast Data Report (automated)
- Fetches merged PRs from all repositories
- Filters openshift/release PRs to only HyperShift-related paths
- Filters openshift-eng/ai-helpers and openshift/enhancements PRs to HyperShift contributors
- Queries Jira for ticket hierarchy (Epic, OCPSTRAT linkage)
- Generates metrics (timing, reviewers, merge patterns)
### 2. Impact Analysis Report (LLM-generated)
- Analyzes PR changes to assess actual impact
- Groups work by themes and strategic initiatives
- Provides context for project contributors and followers
- Highlights notable changes, risks, and cross-repo dependencies
### 3. Deep Code Analysis (--deep mode only)
- Fetches actual code diffs for selected PRs
- Analyzes what the code actually changed (not just descriptions)
- Identifies breaking changes, API modifications, test coverage
- Verifies alignment between PR descriptions and actual changes
### 4. Progress Report (--progress-report, narrative blog post)
- Narrative technical blog post in the style of Dolphin Emulator progress reports
- Problem-first storytelling with technical depth
- Credits contributors by GitHub handle
- Thematic grouping of related changes
### 5. Breaking Change Report (--breaking-changes, SRE/management-oriented)
- Identifies all PRs with breaking changes, API modifications, or behavioral shifts
- Links each to Jira tickets with full hierarchy (ticket -> Epic -> OCPSTRAT)
- Assesses impact scope per customer segment and usage pattern
- Provides actionable recommendations (revert, fix, document, accept)
- Written for management cluster operators and senior SREs
### 6. Collaboration Report (always generated with --deep)
- Groups contributors into clusters based on review relationships and shared topics
- Identifies bridge nodes who connect clusters
- Super short format: one paragraph per cluster
### 7. Blog Post (--blog, docs-ready Material-styled post)
- Converts progress report to MkDocs Material blog post with grid stat cards, admonitions, and icons
- Generates sortable contributor table with per-repo linked PR counts and bugfix column
- Creates/updates `docs/content/blog/index.md` landing page
- Updates `docs/mkdocs.yml` nav with new post entry
- Runs `make docs-aggregate` for verification
- Applies sensitive content filtering for public blog (no S360/SFDC references)
## Output Files
| File | Description |
|------|-------------|
| `$OUTPUT_DIR/weekly_pr_report_fast.md` | Data-focused report with metrics and PR listings |
| `$OUTPUT_DIR/hypershift_pr_details_fast.json` | Raw PR data in JSON format |
| `$OUTPUT_DIR/hypershift_pr_summary.json` | Compact summary data for LLM analysis |
| `$OUTPUT_DIR/weekly_pr_report_impact.md` | LLM-generated impact analysis for contributors |
| `$OUTPUT_DIR/pr_scored.json` | (--score) Ranked PR list for deep analysis |
| `.work/pr_deep/*.json` | (--deep mode) Per-PR data with diffs for analysis |
| `.work/pr_deep/*_analysis.json` | (--deep mode) Per-PR analysis results |
| `.work/pr_deep_aggregated.json` | (--deep mode) Aggregated analysis findings |
| `$OUTPUT_DIR/hypershift_progress_report_YYYY-MM-DD.md` | (--progress-report) Narrative progress report (blog-style) |
| `$OUTPUT_DIR/breaking_changes_report_YYYY-MM-DD.md` | (--breaking-changes) Breaking change assessment for SREs |
| `$OUTPUT_DIR/collaboration_report_YYYY-MM-DD.md` | (--deep) Contributor collaboration clusters |
| `docs/content/blog/YYYY-MM-progress-report.md` | (--blog) Material-styled blog post for docs site |
## Implementation
### Step 0: Validate Arguments
If `--progress-report` is specified without `--deep`, stop and inform the user:
`--progress-report requires --deep mode for code-level analysis. Please add --deep to your command.`
If `--blog` is specified without `--progress-report`, stop and inform the user:
`--blog requires --progress-report mode to generate the blog source content. Please add --progress-report (and --deep) to your command.`
### Step 1: Run the Python script to fetch PRs
Parse the arguments and run the script. The script accepts:
- Positional `since_date` (start date)
- `--end` flag for end date
```bash
# Parse ARGUMENTS which may contain: --start YYYY-MM-DD --end YYYY-MM-DD --deep --output-dir DIR
# Example: python3 contrib/repo_metrics/weekly_pr_report.py 2026-02-05 --end 2026-02-12 --output-dir /tmp
# If --blog is specified, also pass --blog-data to generate blog_data.json
python3 contrib/repo_metrics/weekly_pr_report.py $ARGUMENTS --output-dir $OUTPUT_DIR
```
Note: The script's positional argument is the start date. The `--start` flag in the skill
is mapped to this positional argument when invoking the script. `$OUTPUT_DIR` is the
directory chosen by the user. All output file paths below use this directory.
When `--blog` is active, include `--blog-data` in the script arguments to generate
`$OUTPUT_DIR/blog_data.json` with contributor table, metrics, and pre-rendered markdown.
### Step 2: Jira Enrichment (Conditional)
Check the script output to determine if Jira data was fetched directly:
**If script output shows "Fetching Jira data via REST API..."** (JIRA_EMAIL + JIRA_TOKEN were set):
- Jira hierarchy was populated automatically by the script
- Skip to Step 3 (Impact Analysis Report)
**If script output shows "JIRA_EMAIL/JIRA_TOKEN not set, loading from cache"**:
- Extract unique tickets from PR data and query Jira using MCP tools
- Use `mcp__atlassian-mcp__jira_get_issue` for EACH ticket (in parallel)
- **Fields to request:** `summary,description,parent,issuetype,customfield_10978,customfield_10979,customfield_10980,issuelinks,labels,priority,status`
- **Key fields (Jira Cloud at redhat.atlassian.net):**
- `parent` = native hierarchy field (includes key, summary, issuetype with hierarchyLevel)
- `customfield_10978` = SFDC Cases Counter
- `customfield_10979` = SFDC Cases Links
- `customfield_10980` = SFDC Cases Open
- **Hierarchy:** Walk the `parent` chain: Story/Bug (level 0) → Epic (level 1) → Feature (level 2, was OCPSTRAT)
- Build hierarchy: ticket → Epic → Feature/OCPSTRAT
- Save to `$OUTPUT_DIR/jira_hierarchy.json`
- Re-run the Python script to regenerate report with enriched data
### Step 3: Generate Impact Analysis Report
Read `$OUTPUT_DIR/hypershift_pr_details_fast.json` and `$OUTPUT_DIR/jira_hierarchy.json`, then generate a rich impact analysis report for project contributors and followers.
**Write the report to `$OUTPUT_DIR/weekly_pr_report_impact.md`** following this structure:
```markdown
# HyperShift Weekly Impact Report
**Period:** YYYY-MM-DD to YYYY-MM-DD
**Audience:** Project contributors and followers
## Summary
[2-3 paragraphs summarizing the week's progress across all repositories. Highlight major themes,
significant changes, and overall project momentum. Write in a tone suitable for developers and
community members following the project.]
## Strategic Initiatives Progress
[For each OCPSTRAT initiative with activity this week, provide:]
### OCPSTRAT-XXXX: [Initiative Name]
**Status:** [Active development / Nearing completion / Maintenance]
**This Week's Progress:**
- [Bullet points describing meaningful progress, not just PR titles]
- [Focus on what capability was added/fixed and why it matters]
**PRs:** #XXX, #YYY, #ZZZ
## Repository Highlights
### openshift/hypershift
[Group PRs by theme and explain their collective impact:]
#### Platform Support
- **AWS:** [What changed and why it matters]
- **Azure/ARO:** [What changed and why it matters]
- **GCP:** [What changed and why it matters]
- **KubeVirt:** [What changed and why it matters]
#### Control Plane
[Significant changes to CPO, HO, or core controllers]
#### Bug Fixes
[Notable bugs resolved, grouped by severity/impact]
#### Testing & Quality
[Test improvements, CI fixes, coverage additions]
### openshift-eng/ai-helpers
[Summarize AI tooling improvements and their impact on developer workflow]
### openshift/release
[Summarize CI configuration changes grouped by category:]
#### CI Efficiency
[Job optimizations, resource adjustments]
#### Test Coverage
[New tests, validation improvements]
#### Automation
[Bot improvements, workflow automation]
## Notable PRs
[Deep-dive on 3-5 high-impact PRs, selected by highest importance score from the
`$OUTPUT_DIR/pr_scored.json` output (Jira priority, SDK/API changes, bug fixes,
manual CI work). For each:]
### PR #XXXX: [Title]
**Repository:** [repo]
**Author:** @username
**Why it matters:** [2-3 sentences explaining the actual impact of this change for users/developers]
**What changed:**
- [Technical summary of the key changes]
- [Any breaking changes or migration notes]
**Related:** [Links to related PRs, issues, or documentation]
## Risks & Breaking Changes
[List any changes that could affect users or downstream consumers:]
- **[Component]:** [Description of risk/change and mitigation]
## Dependencies & Cross-Repo Changes
[Highlight changes that span multiple repositories or require coordinated updates]
## Metrics Snapshot
| Metric | Value |
|--------|-------|
| Total PRs merged | X |
| Unique contributors | X |
| Avg time to merge | X hours |
| Most active reviewer | @username (X PRs) |
## Coming Up
[If visible from PR descriptions or Jira tickets, mention work in progress or upcoming features]
```
**Guidelines for Impact Analysis:**
1. **Audience is contributors and followers** - Use technical language appropriate for developers, but explain the "why" not just the "what"
2. **Assess actual impact** by reading PR descriptions and understanding:
- What problem does this solve?
- Who benefits from this change?
- Does this enable new capabilities or fix broken functionality?
3. **Group related work** - Multiple PRs often contribute to one logical change; group them together
4. **Highlight cross-repo dependencies** - Changes in openshift/release often enable or support changes in hypershift
5. **Be specific about platforms** - HyperShift supports multiple platforms (AWS, Azure, GCP, KubeVirt, Agent); call out platform-specific work
6. **Call out breaking changes** - Any API changes, behavior changes, or deprecations should be prominently noted
7. **Recognize contributors** - Mention authors of significant work
**Example Impact Transformations:**
| PR Title | Impact Analysis |
|----------|-----------------|
| "OCPBUGS-60707: Fix user-ca-bundle cleanup when additionalTrustBundle is removed" | Fixes a bug where custom CA certificates persisted in guest clusters after being removed from HostedCluster spec. Operators managing trust bundles will now see expected cleanup behavior. |
| "GCP-216: feat(nodepool): add GCP platform support" | Adds foundational NodePool support for GCP platform, enabling cluster autoscaling and machine management. This is a key milestone for GCP HyperShift availability. |
| "CNTRLPLANE-2082: hypershift: run conformance directly on the root cluster" | Simplifies CI architecture by running conformance tests on the management cluster instead of nested clusters. Reduces resource requirements and test complexity. |
### Step 4: Deep Code Analysis (--deep mode only)
If `--deep` flag is specified, perform deep code analysis after the standard report:
#### Step 4a: Interactive PR Selection
Present the user with PR selection options using AskUserQuestion:
1. Read `$OUTPUT_DIR/hypershift_pr_details_fast.json` and `$OUTPUT_DIR/jira_hierarchy.json` to categorize and score PRs.
2. **Score each PR using these criteria** (higher score = more important):
| Criterion | Points | Description |
|-----------|--------|-------------|
| Enhancement proposal | +200 | openshift/enhancements PRs (always selected) |
| Jira Priority: Critical/Blocker | +100 | Highest priority tickets |
| Jira Priority: Major | +50 | Major priority tickets |
| Jira Priority: Normal | +20 | Normal priority tickets |
| Jira Priority: Minor | +10 | Minor priority tickets |
| SDK/API/Migration work | +30 | Title contains "sdk", "migrate", "api", or "breaking" |
| Feature work | +15 | Title contains "feat" or "feature" |
| Bug fix (OCPBUGS) | +10 | Has OCPBUGS ticket reference |
| Has any Jira ticket | +5 | Tracked work is more valuable |
| Manual CI change | +10 | Non-bot author in openshift/release |
To score PRs, join PR data with Jira hierarchy to get priority:
```bash
# Get priority for a ticket from jira_hierarchy.json
jq -r '."CNTRLPLANE-1708".priority' $OUTPUT_DIR/jira_hierarchy.json
# Returns: "Critical"
```
3. Ask user which PRs to analyze:
```
Options:
- "All PRs (X total)" - Analyze every PR
- "High-value selection (15-20 PRs)" - Auto-select top PRs by importance score
- "Bug fixes only (Z PRs)" - OCPBUGS tickets only
- "Custom selection" - Choose from annotated PR list
```
4. If "High-value selection", sort PRs by score descending and select top 15-20.
5. If "Custom selection", present an **annotated PR list** for user selection:
GitHub에서 보기이 SKILL.md는 매우 커서 SkillsMP가 여기에는 첫 섹션만 미리 보여줍니다. GitHub에서 보기