بنقرة واحدة
epic-assignment
Assign active Epics to Roadmap Initiatives based on recent activity
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Assign active Epics to Roadmap Initiatives based on recent activity
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Generate Quarto and HTML reports of local Codex session cost, token usage by model, project, coding vs cowork cost, weekly trends, annual projections, and top expensive sessions.
Check that core Sidekick integrations can authenticate and read common restricted files
Generate summary of 1:1 and meeting notes organized by audience, wins, and kudos
Capture missing TODOs from recent work context. Use when Codex needs to scan the user's Slack DMs with their manager or direct reports, manager/direct-report 1:1 docs, and leadership meeting notes for direct asks or action items assigned to the user, deduplicate against the user's configured todo app, and create missing tasks with source links and searchable metadata.
Draft concise interview scorecards from pasted long-form interview notes, nearby Google Calendar interview context, and memory/miclog/ transcript excerpts. Use when writing hiring feedback, interview scorecards, spikes/troughs, or candidate evaluation summaries.
Calculate a team's average Jira hours from Rovo Jira completed work, with optional Workday Approved Time Off absence adjustments for a date window and team roster.
| name | epic-assignment |
| description | Assign active Epics to Roadmap Initiatives based on recent activity |
| argument-hint | <root-issue> [project] [issue-type] [days] |
| auto-approve | true |
This agent identifies recently active Epics without parents and generates recommendations for linking them to appropriate parent issues.
Ensures active Epics are properly linked to Parent Epics for better project tracking and visibility. Many Epics may be created without parents, making it difficult to track which roadmap item they support.
This agent requires the following sections in @AGENTS.override.md:
## Teams
### My Teams
- Team Name, manager Name, JIRA Project KEY1
- Team Name, manager Name, JIRA Project KEY2
## Projects
The Roadmap issues are represented by the JIRA jql query:
project = "PROJECT" and issuetype = "Roadmap Issue Type"
You already have context form @AGENTS.override.md for
Query JIRA for all issues updated in the specified time period (default 30 days):
Use Atlassian Rovo MCP JQL search first:
project IN ("KEY1", "KEY2", "KEY3") AND updated >= -30d
Fall back to python3 -m sidekick.clients.jira query ... only when Rovo is unavailable or lacks the needed fields.
Note: escape project keys with double quotes because they can be reserved words
Fields to extract: key, summary, issuetype, parent, labels, description, updated
From query results, identify Epics:
issuetype.name == "Epic"parent fieldFrom THOSE Epics, create two collections:
parent field is None or emptyparent field exists (for reference)Group by project for the analysis report.
Use Atlassian Rovo MCP first to query for all relevant potential parents, starting at a root issue. Use the /jira-roadmap skill only as a fallback when Rovo is unavailable or local recursive tree output is specifically useful.
This captures:
For each Epic without a parent, analyze potential matches based on:
Scoring system:
Assign confidence levels:
Save to memory/epic_assignment_analysis.md:
# Epic Assignment Analysis
**Generated**: [timestamp]
**Activity Period**: Last [N] days
## Summary
- Total issues updated: X
- Epics identified: Y
- Epics without parents: Z
- Epics with parents: W
## Epics by Project
### Project: KEY1
#### Epics without parents
- [KEY1-123](https://company.atlassian.net/browse/KEY1-123): Epic Summary
- Labels: label1, label2
- Updated: YYYY-MM-DD
#### Epics with parents
- [KEY1-456](https://company.atlassian.net/browse/KEY1-456): Epic Summary
- Parent: [INIT-789](https://company.atlassian.net/browse/INIT-789) - Initiative Name
- Updated: YYYY-MM-DD
Save to memory/epic_assignment_recommendations.md:
# Epic Assignment Recommendations
**Generated**: [timestamp]
## Proposed Assignments
### High Confidence Matches
- **[KEY1-123](https://company.atlassian.net/browse/KEY1-123)**: Epic Summary
- **Recommended Parent**: [INIT-456](https://company.atlassian.net/browse/INIT-456) - Initiative Summary
- **Confidence**: High (score: 45)
- **Reasoning**: Shared labels: label1, label2 • Keyword overlap with initiative • Similar to existing child Epics: KEY1-100, KEY1-105
- **Existing Epics under this Initiative**: 3 Epics with similar themes
### Medium Confidence Matches
- **[KEY2-789](https://company.atlassian.net/browse/KEY2-789)**: Epic Summary
- **Recommended Parent**: [INIT-234](https://company.atlassian.net/browse/INIT-234) - Initiative Summary
- **Confidence**: Medium
- **Reasoning**: [Explanation with caveats]
### Low Confidence / Needs Manual Review
- **[KEY3-456](https://company.atlassian.net/browse/KEY3-456)**: Epic Summary
- **Possible Parents**:
- [INIT-111](https://company.atlassian.net/browse/INIT-111) - Initiative A
- [INIT-222](https://company.atlassian.net/browse/INIT-222) - Initiative B
- **Confidence**: Low
- **Reasoning**: [Multiple potential matches, manual review needed]
### No Match Found
- **[KEY4-789](https://company.atlassian.net/browse/KEY4-789)**: Epic Summary
- **Reasoning**: No Roadmap Initiatives with relevant labels or keywords
## Summary Statistics
- High confidence: X
- Medium confidence: Y
- Low/manual review: Z
- No match: W
Output to console:
I've analyzed X Epics without parents and generated recommendations.
Summary:
- High confidence matches: X
- Medium confidence matches: Y
- Needs manual review: Z
- No match found: W
Reports saved to:
- memory/epic_assignment_analysis.md
- memory/epic_assignment_recommendations.md
Would you like me to:
1. Proceed with HIGH confidence assignments only? (type "high")
2. Proceed with HIGH + MEDIUM confidence assignments? (type "all")
3. Skip updates and just review? (type "skip")
Wait for user response before proceeding.
Based on user selection, update JIRA for each confirmed Epic assignment:
Use Atlassian Rovo MCP update issue first to set the parent field, after the user has confirmed the update set. Fall back to python3 -m sidekick.clients.jira update-issue KEY1-123 '{"parent": {"key": "INIT-456"}}' only when Rovo is unavailable or cannot update the needed field.
Error Handling:
After executing updates, save to memory/epic_assignment_changelog.md:
# Epic Assignment Change Log
**Executed**: [timestamp]
**Execution Mode**: [High only / High + Medium / Skipped]
## Successfully Updated
- [KEY1-123](https://company.atlassian.net/browse/KEY1-123): Epic Summary
- **Parent Set**: [INIT-456](https://company.atlassian.net/browse/INIT-456) - Initiative Summary
- **Confidence**: High
- **Time**: [timestamp]
## Failed Updates
- [KEY2-789](https://company.atlassian.net/browse/KEY2-789): Epic Summary
- **Attempted Parent**: [INIT-234](https://company.atlassian.net/browse/INIT-234)
- **Error**: [error message]
- **Time**: [timestamp]
## Not Updated (Below Threshold)
- [KEY3-456](https://company.atlassian.net/browse/KEY3-456): Epic Summary
- **Reason**: Medium confidence, user chose "high" only
- **Recommended Parent**: [INIT-111](https://company.atlassian.net/browse/INIT-111)
## Summary
- Successfully assigned: X
- Failed: Y
- Skipped: Z
All reports are saved to the memory/ directory:
Each report must end with exactly:
This report generated using [chase-sidekick](https://github.com/chase-seibert/chase-sidekick) and the [epic-assignment skill](https://github.com/chase-seibert/chase-sidekick/tree/main/.agents/skills/epic-assignment).
After running the agent:
get_issue_hierarchy() to analyze existing Epic structure under each Initiative, enabling "sibling similarity" matching - if an Epic looks like existing Epics under an Initiative, it's likely a good fit{"parent": {"key": "PARENT-KEY"}}