View the goal cascade from annual milestones down to active tasks. Use when the user asks to "show my goals", "view goals", "list goals", "what are my priorities", "show my tasks", or "trace a task". Supports "tasks" argument to show only tasks grouped by goal. Do NOT use for creating new goals — use focus:goal for that.
View the full goal cascade or trace a specific issue.
Follow the setup steps in ${CLAUDE_PLUGIN_ROOT}/shared/config-preamble.md before running any gh commands.
gh api /repos/$REPO/milestones --jq '.[] | select(.state == "open") | {number, title, due_on, open_issues, closed_issues}'
gh issue list -R $REPO \
--label "type.goal,status.active" \
--state open \
--limit 20 \
--json number,title,milestone,labels,updatedAt
gh api "/repos/$REPO/issues/<GOAL_NUMBER>/sub_issues" \
--jq '.[] | {number, title, state, labels: [.labels[].name]}'
Annual Milestone: <milestone title>
Quarterly Goal: #<number> <title>
- [ ] #<number> <task title>
- [x] #<number> <completed task title>
$ARGUMENTS contains an issue number (e.g., "42" or "#42"): trace it upward through the cascade. First get the issue, then check for a parent:gh issue view <NUMBER> -R $REPO --json number,title,milestone,labels
gh api "/repos/$REPO/issues/<NUMBER>/parent" --jq '{number, title, milestone: .milestone.title}' 2>/dev/null
Display: task -> quarterly goal -> annual milestone.
$ARGUMENTS is "tasks": show only tasks — skip the milestones and quarterly goals layers, list all tasks grouped by their parent quarterly goal.GitHub Milestones = annual goals (due year-end, one per life area)
Issues with type.goal label = quarterly goals (assigned to a milestone)
Issues linked as sub-issues of a quarterly goal = tasks
Cascade level is structural, not a label. An issue's level is determined by:
type.goal issue = taskEvery goal and task issue has exactly one type.* label, one or more domain.* labels, and one status.* label.