원클릭으로
fill-cycle
Analyze cycle capacity gap and propose backlog items to fill the sprint to ~80% of proven velocity.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Analyze cycle capacity gap and propose backlog items to fill the sprint to ~80% of proven velocity.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | fill-cycle |
| description | Analyze cycle capacity gap and propose backlog items to fill the sprint to ~80% of proven velocity. |
| argument-hint | [--check | --auto | --theme <name> | empty for interactive] |
Load the current Linear cycle, compute the capacity gap against proven velocity, scan 4 backlog sources, and propose a ranked fill plan.
Target: $ARGUMENTS
| Label | ID |
|---|---|
roadmap (parent group — NOT assignable to issues) | <LABEL_ID_ROADMAP> |
roadmap:gateway | <LABEL_ID_ROADMAP_GATEWAY> |
roadmap:dx | <LABEL_ID_ROADMAP_DX> |
roadmap:platform | <LABEL_ID_ROADMAP_PLATFORM> |
roadmap:community | <LABEL_ID_ROADMAP_COMMUNITY> |
roadmap:observability | <LABEL_ID_ROADMAP_OBSERVABILITY> |
| Argument | Mode | Description |
|---|---|---|
| (empty) | Interactive | Show fill plan, ask before promoting |
--check | Read-only | Compute capacity report only, no writes (CI-safe) |
--auto | Auto-promote | Promote quick wins automatically, suggest council for MEGAs |
--theme <name> | Themed fill | Filter candidates by roadmap theme + optional Notion search |
linear.list_cycles(teamId: "<LINEAR_TEAM_ID>")
Identify the current cycle (type "current" or date range containing today).
Extract: cycle_id, name, start, end, scopeTotal, completedTotal.
Then fetch all issues in the cycle:
linear.list_issues(
team: "<LINEAR_TEAM_ID>",
cycle: "<cycle_id>",
first: 50
)
Compute:
cycle_days = (end - start).daysdays_remaining = (end - today).dayspts_committed = sum of all issue estimates in cyclepts_done = sum of estimates for Done/Canceled issuesRead .claude/state/velocity.json.
Extract:
rolling_avg_pts_per_day = rolling_avg_3.pts_per_daytarget_utilization (default 0.80)Compute capacity gap:
capacity = rolling_avg_pts_per_day × cycle_days
target = capacity × target_utilization
gap = target - pts_committed
If gap <= 0: report "Cycle is fully loaded" and stop (unless --check which still reports).
Scan 4 sources for candidate items. Each source contributes candidates with metadata.
linear.list_issues(
team: "<LINEAR_TEAM_ID>",
first: 50
)
Filter for issues where:
cycle is null (not in any cycle)status is "Backlog" or "Todo"assignee is null or matches current userExtract: id, identifier, title, priority, estimate, labels.
Read BACKLOG.md from repo root.
Parse all CAB-XXXX entries from tables and lists. Extract:
gatewaycommunityobservabilityplatformplatformplatformplatformRead plan.md from repo root.
Parse entries from:
Extract: ticket ID, title, estimate (if present), priority.
Read docs/CAPACITY-PLANNING.md.
Parse unchecked [ ] items from remaining phases:
Map phase to roadmap theme:
platformobservabilitygatewaydxplatformcommunityplatformcommunity--themeIf --theme <name> is provided:
notion.notion-search(query: "STOA roadmap <theme>")
Extract any actionable items not already in Linear. Flag as "Notion-sourced" in output.
Merge all candidates. Deduplicate by CAB-XXXX identifier (Linear source wins if conflict).
Score each candidate (higher = better fit):
| Factor | Points | Condition |
|---|---|---|
| Priority | 3 × (5 - priority_value) | P1=12, P2=9, P3=6, P4=3 |
| Has estimate | 2 | estimate is not null |
| Already in Linear | 1 | Source is Linear backlog |
| Theme match | 2 | Matches --theme filter (if provided) |
| Max score | 17 |
Sort by score descending.
[MEGA] or [EPIC] in title)[MEGA] / [EPIC]/council CAB-XXXX then /decompose CAB-XXXXCap at top 15 candidates total across all buckets.
Within the gap budget:
Group MEGAs by roadmap theme for readability.
Display the fill plan. For each Quick Win, ask: "Promote Y/N?"
On Y: linear.update_issue(id, cycleId: "<current_cycle_id>")
--auto)Promote all Quick Wins automatically:
linear.update_issue(id: "<issue_id>", cycleId: "<current_cycle_id>")
Log each promotion in operations.log.
--check)Display the capacity report only. No Linear writes. Exit.
--theme <name>)Same as interactive but filtered by theme. Includes Notion results if available.
After any promotions:
/sync-plan to refresh plan.md with newly promoted issuesSTEP-DONE | step=fill-cycle task=velocity-pipeline promoted=N gap_before=X gap_after=Y
Capacity Report — Cycle N (dates)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Velocity baseline (rolling 3-cycle avg):
Avg: XX.X pts/day | Target utilization: 80%
Current cycle:
Committed: XXX pts | Done: YYY pts (ZZ%)
Capacity: AAA pts | Target: BBB pts (80%)
Gap: CCC pts (DD% under-loaded)
Fill Plan:
━━━━━━━━━
Quick Wins (promote now): Σ XX pts
1. CAB-XXXX: Title (N pts, P2) ............. [score: 14]
2. CAB-YYYY: Title (N pts, P1) ............. [score: 17]
MEGAs (→ /council + /decompose): Σ XX pts
[gateway] CAB-ZZZZ: Title (21 pts, P2)
[platform] CAB-WWWW: Title (34 pts, P3)
Unpointed (estimate to unlock):
CAB-VVVV: Title (no estimate, P2)
Summary:
Promotable: XX pts | After fill: YYY/ZZZ pts (WW%)
MEGAs needing council: N
Unpointed needing estimate: M
| Call | Purpose | Mode |
|---|---|---|
list_cycles | Get current cycle | All |
list_issues(cycle=X) | Get cycle issues | All |
list_issues(no cycle) | Get backlog issues | All |
notion-search | Themed search | --theme only |
update_issue × N | Promote quick wins | Interactive/Auto only |
| Total read | 3-4 calls | |
| Total write | 0-15 calls |
--check mode — always read-only (CI-safe)--theme — avoid unnecessary MCP latencyForce a full-file rewrite (Write) instead of patch (Edit) when Edit keeps failing or diff is large. Context rot mitigation — use when Edit has failed ≥2× on same file, or when estimated diff >30% of file size.
STOA PR Guardian — advisory three-axis review (ADR compliance, security, AI code smell) with binary GO/NO-GO verdict + confidence. Never approves, never blocks merge.
Visual roadmap snapshot — theme progress, milestones, velocity. Zero new infra (Linear MCP + velocity.json).
Cycle-aware bidirectional sync between plan.md and Linear. Discovers all cycle tickets, detects drift, updates markers.
Debug GitHub Actions CI pipeline failures. Analyse les logs de workflow, identifie la cause racine et propose un fix.
Run 8-persona Council validation on a feature/ADR, then auto-create a Linear ticket if score >= 8/10.