بنقرة واحدة
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 المهني
Force 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.
| 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 latency