Help us improve
Share bugs, ideas, or general feedback.
npx claudepluginhub rjroy/vibe-garden --plugin compass-roseHow this skill is triggered — by the user, by Claude, or both
Slash command
/compass-rose:next-itemThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
---
Browses Arness-labeled issues from GitHub, Jira, or local feature backlog, selects unblocked one via dependency resolution, and routes to implementation pipeline.
Fetches open issues from an issue tracker via MCP, enriches with historical metrics, and runs an AI priority engine to suggest fix order.
Manages backlog items synced to GitHub Issues via MCP tools. Create, list, view, update, close, resolve, groom, and sync without direct file edits.
Share bugs, ideas, or general feedback.
You are now in Next Item Recommendation Mode. Your role is to analyze the project backlog and recommend the highest-priority work item that is ready to be implemented.
gh-api-scripts to get all project issues with field valuesIMPORTANT: Before performing any GitHub Project operations, you MUST invoke the compass-rose:gh-api-scripts skill using the Skill tool:
Skill(compass-rose:gh-api-scripts)
This skill provides the list-issues operation needed for this skill. Do NOT use raw gh project commands.
Use the list-issues operation from the gh-api-scripts skill (which you invoked above). The skill documentation shows the exact command syntax using ${CLAUDE_PLUGIN_ROOT}.
Output Format (JSON):
{
"success": true,
"data": {
"issues": [
{
"number": 42,
"title": "Fix login timeout",
"body": "Users experiencing timeouts...",
"url": "https://github.com/.../issues/42",
"state": "OPEN",
"labels": ["bug"],
"status": "Ready",
"priority": "P0",
"size": "S"
}
],
"count": 8
}
}
Filter for items with "Ready" status (case-insensitive):
# Filter items with "Ready" status
ready_items=$(echo "$ALL_ISSUES" | jq -r '[
.[] |
select(.state == "OPEN") |
select(.status | test("ready"; "i"))
]')
Graceful Degradation: If Priority field values are all null:
Warning: Priority field not found or not set on items. All items will be treated as equal priority.
To enable priority-based sorting, add a "Priority" field to your project with values like P0, P1, P2, P3.
Continue with available data even if some fields are missing.
If no ready items found:
No items found with "Ready" status.
Available statuses in project: To Do, In progress, Done
Would you like me to show items from a different status instead?
This step uses lightweight git heuristics to add codebase relevance as a secondary tiebreaker (after priority, before creation date). Budget: 2-5 seconds total.
Sort items by priority to identify top 5 candidates:
# Initial sort by priority only
top_candidates=$(echo "$ready_items" | jq -r '
sort_by(.priority | sub("P"; "") | tonumber? // 999) |
.[0:5]
')
Check Git Availability:
# Verify we're in a git repository
if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
CODEBASE_ENABLED=true
# Cache recently modified files (last 7 days)
RECENT_FILES=$(timeout 1s git log --since="7 days ago" --name-only --pretty=format: 2>/dev/null | sort -u | grep -v '^$' || echo "")
else
CODEBASE_ENABLED=false
fi
Calculate Signal Score (for each top 5 candidate):
calculate_signal_score() {
local title="$1"
local body="$2"
local score=0
# Extract keywords from title and body (3+ char words, no stop words)
keywords=$(echo "$title $body" | tr '[:upper:]' '[:lower:]' | \
grep -oE '\b[a-z]{3,}\b' | \
grep -vE '^(the|and|for|are|but|not|you|all|can|had|was|one|has|this|that|with|from|they|have|been|will|what|when|your|which|would|there|their|about|could|other|these|than|into|some|them|only|over|such|after|also|most|made|just|very|where|while|should|since|because|using|without)$' | \
sort -u | head -10)
# Heuristic A: Keywords match recently modified files (+30 points)
for kw in $keywords; do
if echo "$RECENT_FILES" | grep -qi "$kw"; then
score=$((score + 30))
break # Only count once
fi
done
# Heuristic B: File paths mentioned in issue exist (+20 points)
file_refs=$(echo "$body" | grep -oE '[a-zA-Z0-9_/-]+\.(ts|js|py|json|md|yaml|yml)' | head -3)
for ref in $file_refs; do
if git ls-files --cached 2>/dev/null | grep -q "$ref"; then
score=$((score + 20))
break # Only count once
fi
done
# Heuristic C: Related directory has recent commits (+5 per commit, max 50)
dirs=$(echo "$body" | grep -oE '\b(src|lib|test|tests|config|utils)/[a-zA-Z0-9_/-]+' | head -2)
for dir in $dirs; do
commits=$(timeout 0.5s git log --since="30 days ago" --oneline -- "$dir" 2>/dev/null | wc -l || echo 0)
score=$((score + commits * 5))
done
# Cap at 100
[ $score -gt 100 ] && score=100
echo $score
}
Signal Scoring Summary:
Sort Order (most significant to least):
# Re-sort candidates with codebase signals
echo "$candidates_with_scores" | jq -r '
sort_by(
(.priority | sub("P"; "") | tonumber? // 999), # Primary: Priority
(100 - (.codebase_score // 0)), # Secondary: Codebase signal (inverted)
.createdAt # Tertiary: Creation date
) |
.[0:3]
'
Codebase Relevance Labels:
If git is unavailable or heuristics fail:
Note: Codebase analysis unavailable (not a git repository).
Recommendations based on priority and creation date only.
If git operations time out:
Display top 2-3 options in tabular format following TD-8 specification:
| # | Title | Priority | Size | Status | Codebase |
|---|----------------------------|----------|------|--------|----------|
| 1 | Fix login timeout bug | P0 | S | Ready | High |
| 2 | Add user preferences page | P1 | M | Ready | Medium |
| 3 | Improve error messages | P1 | S | Ready | Low |
**Recommendation**: Item #1 (P0 priority, small scope, high codebase relevance)
**Rationale**: This is the highest priority item in the backlog. The P0 designation
indicates critical urgency, and the small size (S) makes it achievable in a single
focused session. The issue has clear acceptance criteria and is ready for immediate
implementation.
**Codebase Relevance**: High - The `auth/` directory mentioned in this issue has
8 commits in the last 30 days. The file `src/auth/session.ts` referenced in the
issue exists in the codebase.
**Alternative Options**:
- Item #2: Same priority (P1) as item #3 but ranked higher due to active development
in the `preferences/` module (3 recent commits).
- Item #3: Also P1 priority but lower codebase relevance. Good backup if item #1 is blocked.
Rationale Elements to Include:
If codebase signals caused reordering (same priority items):
**Note**: Item #2 ranks ahead of item #3 (same priority P1) due to higher codebase
relevance - the feature area has recent commits suggesting active development context.
If all items have equal priority (missing Priority field):
**Recommendation**: Item #1 (highest codebase relevance, small scope, ready for work)
**Rationale**: No priority field found in project, so recommending based on codebase
relevance and age. This item relates to actively developed code and is small enough
to complete in one session.
If codebase analysis unavailable:
**Codebase Relevance**: N/A - Not a git repository.
No Ready Items:
No items found with "Ready" status.
Available statuses: To Do (15 items), In progress (3 items), Done (42 items)
Would you like me to analyze the "To Do" backlog instead?
Missing Priority Field:
Warning: Priority field not found. Sorting by creation date instead.
All items shown below are treated as equal priority.
Authentication Issues:
Error: GitHub CLI is not authenticated.
Run the following command to authenticate:
gh auth login
After authentication, you may need to add the 'project' scope:
gh auth refresh -s project
Project Not Found:
Error: Project not found.
Verify that:
1. Project owner is correct: <owner>
2. Project number is correct: <number>
3. You have access to the project
4. You are authenticated: gh auth status
This skill implements the following specification requirements:
Performance Targets:
Codebase Analysis Budget:
Data Freshness:
CLI Dependencies:
gh CLI installed and authenticatedproject scope authorized (gh auth refresh -s project)jq for JSON parsing (check availability, provide clear error if missing)Retrieving project issues...
Found 8 items with "Ready" status
Analyzing codebase signals...
Git repository detected, running heuristics on top 5 candidates
Sorting by priority and codebase relevance...
| # | Title | Priority | Size | Status | Codebase |
|---|---------------------------------|----------|------|--------|----------|
| 1 | Fix authentication timeout | P0 | S | Ready | High |
| 2 | Implement user preferences API | P1 | M | Ready | Medium |
| 3 | Add error logging to webhook | P1 | S | Ready | Low |
**Recommendation**: Item #1 - "Fix authentication timeout"
**Rationale**: This is the highest priority item (P0 = critical) and has the
smallest scope (S). The issue describes a production bug affecting user login
sessions, with clear reproduction steps and acceptance criteria. This can be
completed in a single focused session.
**Codebase Relevance**: High - The `src/auth/` directory has 12 commits in the
last 30 days, indicating active development. The file `auth/session.ts` mentioned
in the issue exists in the codebase.
**Alternative Options**:
- Item #2 (P1/M): Ranked above item #3 due to recent activity in the `preferences/`
module (5 commits). Higher effort but aligns with current development focus.
- Item #3 (P1/S): Small scope but low codebase relevance (no recent webhook changes).
Consider as backup if authentication issue proves more complex than estimated.
Would you like to start work on item #1? (/compass-rose:start-work skill)
/compass-rose:backlog - Review entire backlog with quality analysis/compass-rose:start-work - Begin implementation of selected item/compass-rose:add-item - Create new issue and add to project/compass-rose:reprioritize - Codebase-aware priority updatescompass-rose/skills/gh-api-scripts/SKILL.md (GitHub Project API operations)