Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/carson-sweet-project-backlog-triage
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 26, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/project-backlog-triage
What's inside
- Skill name
project-backlog-triage- Description
- Structured backlog grooming session.
- License
- AGPL-3.0
- Instructions
- 254 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- name: missing
Files (1)
- SKILL.md
SKILL.md (first lines)
## MIGRATION GUARD
Before any other work, check for legacy migration/recovery risk:
```bash
PRODUCT_BASE=$(python3 -c "
import yaml, pathlib
p = pathlib.Path('.sweetclaude/artifact-privacy.yaml')
if p.exists():
d = yaml.safe_load(p.read_text()) or {}
base = d.get('categories', {}).get('product', {}).get('base_path', '')
if base:
print(base.rstrip('/'))
exit()
print('.sweetclaude/product')
" 2>/dev/null || echo '.sweetclaude/product')
LEGACY_FILES=$(find "${PRODUCT_BASE}" -maxdepth 4 -type f \( -name 'BL-*.md' -o -name 'STORY-*.md' -o -name 'BUG-*.md' -o -name 'DEBT-*.md' -o -name 'CHORE-*.md' \) 2>/dev/null | wc -l | tr -d ' ')
if [ "$LEGACY_FILES" -gt 0 ]; then
SCRIPT=${CLAUDE_PLUGIN_ROOT}/scripts/recovery/recover_project.py
if [ ! -f "$SCRIPT" ]; then
SCRIPT=$(find "$(dirname "${CLAUDE_PLUGIN_ROOT}")" -type f -path '*/scripts/recovery/recover_project.py' 2>/dev/null | sort -V | tail -1)
fi
if [ -n "$SCRIPT" ] && [ -f "$SCRIPT" ]; then
python3 "$SCRIPT" guard --project-dir . --pretty
else
echo '{"status":"guard-unavailable","message":"Recovery guard unavailable. Run /sweetclaude:configure update before migration."}'
fi
fi
```
If the guard output has `status` `run-recover`, `manual-review`,
`compatibility-mode`, `missing-product-base`, or `guard-unavailable`: print the
guard `message`, tell the user to run `/sweetclaude:configure recover` when recovery is
available, and stop. Do not recommend migration.
If the guard output has `status` `supported-migration-available`: print
"This project has a typed legacy backlog layout that can be migrated. Run
`/sweetclaude:configure migrate` to convert to the unified ISSUE-NNN taxonomy." Then stop.
If the guard output has `status` `migration-may-be-needed`: print the guard
`message`, then stop and tell the user to review `/sweetclaude:configure migrate` before
running it. Do not invoke migration from this skill.
```python
import pathlib, yaml, re, datetime
BACKLOG_BASE = pathlib.Path('.sweetclaude/product/backlog')
def read_issue_file(path):
raw = pathlib.Path(path).read_bytes().decode('utf-8').replace('\r\n', '\n')
parts = raw.split('---', 2)
fm = yaml.safe_load(parts[1]) or {}
body = parts[2] if len(parts) > 2 else ''
return fm, body
def write_issue_file(path, fm, body):
fm['updated'] = datetime.datetime.now(datetime.timezone.utc).isoformat(timespec='seconds')
content = f"---\n{yaml.safe_dump(fm, default_flow_style=False, sort_keys=False).rstrip()}\n---\n{body}"
pathlib.Path(path).write_text(content, encoding='utf-8')
def rebuild_cache():
import subprocess, os
subprocess.run(['python3', os.path.expanduser('${CLAUDE_PLUGIN_ROOT}/scripts/cache.py'), '--project-dir', '.', '--rebuild'], capture_output=True)
# Load active ungroomed backlog items
active_items = []
for p in BACKLOG_BASE.rglob('*.md'):
if p.name in ('INDEX.md', 'MIGRATION-MAP.md', 'SCHEMA.md') or '/done/' in str(p):
continue
fm, body = read_issue_file(p)
if fm.get('status') not in ('done', 'abandoned', 'deferred'):
active_items.append((p, fm, body))
# Sort oldest first (by created date), then by id
active_items.sort(key=lambda x: (x[1].get('created', ''), x[1].get('id', '')))
ungroomed = [(p, fm, body) for p, fm, body in active_items
if not fm.get('priority') or not fm.get('effort')]
TOTAL_BACKLOG = len(active_items)
UNGROOMED_COUNT = len(ungroomed)
```
# Project Backlog Triage
A focused grooming session. Works through ungroomed issues one at a time using INVEST criteria and t-shirt sizing. Arguments: `$ARGUMENTS`
---
## Step 0: v4 lint check
Before starting the triage session, run the v4 lint rules from `sweetclaude:library-load _health` Step 3 inline. Surface any findings at the top of the output:
```
## v4 Storage Warnings
- counter-drift:bug (stored=2, max_id_seen=4)
```
Proceed to the triage session regardless — findings are informational, not blocking.
---
## Entry check
If `UNGROOMED_COUNT` is 0: "Backlog is fully groomed — all {TOTAL_BACKLOG} issues have priority and effort estimates. Nothing to triage."
Otherwise: "Starting triage — {UNGROOMED_COUNT} issues need grooming."
---
## Triage loop
For each item in `ungroomed`:
### 1. Present the issue
```
Issue {n} of {UNGROOMED_COUNT}: {ID}From carson-sweet/sweetclaude, AGPL-3.0.
More from carson-sweet/sweetclaude
- 0.614score
code-testing
carson-sweet
Run any combination of test suite, mutation testing, security review, and PR pre-check.
SkillAFreshness: A★ 7Claude Code +9 - 0.614score
project-gh-sync-issues
carson-sweet
Bidirectional status sync between local issue files and GitHub Issues.
SkillAFreshness: A★ 7Claude Code +9 - 0.614score
code-tdd
carson-sweet
Internal TDD process skill — invoked by code-feature, code-issue, and code-debt.
SkillAFreshness: A★ 7Claude Code +9 - 0.614score
project-gh-import-issues
carson-sweet
Import open GitHub Issues into the local issue store as v4 story files.
SkillAFreshness: A★ 7Claude Code +9 - 0.614score
product-sprint-plan
carson-sweet
Plan a sprint by selecting stories from the backlog, estimating scope, and producing a sprint commitment.
SkillAFreshness: A★ 7Claude Code +9 - 0.611score
john-wick-checkin
carson-sweet
Internal John Wick phase check-in subagent.
SkillAFreshness: A★ 7Claude Code +9 - 0.611score
code-feature
carson-sweet
Build a new feature end-to-end.
SkillAFreshness: A★ 7Claude Code +9 - 0.611score
code-issue
carson-sweet
Implement a GitHub issue end-to-end.
SkillAFreshness: A★ 7Claude Code +9 - 0.611score
code-review
carson-sweet
Code, security, and compliance review.
SkillAFreshness: A★ 7Claude Code +9 - 0.611score
code-verify
carson-sweet
Run verification before claiming work is complete.
SkillAFreshness: A★ 7Claude Code +9 - 0.611score
john-wick
carson-sweet
Fully autonomous, resumable, multi-session SDLC pipeline.
SkillAFreshness: A★ 7Claude Code +9 - 0.611score
product-user-tdd-tests
carson-sweet
Transition user stories into Gherkin .feature files.
SkillAFreshness: A★ 7Claude Code +9
Signals
- Stars
- 7
- Forks
- 3
- Open issues
- 4
- Last commit (this folder)
- Oct 20, 2026 (9 days ago)
- Last release
- Oct 24, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- AGPL-3.0
- Repository
- github.com/carson-sweet/sweetclaude
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from carson-sweet
- 0.614score
code-testing
carson-sweet
Run any combination of test suite, mutation testing, security review, and PR pre-check.
SkillAFreshness: A★ 7Claude Code +9 - 0.614score
code-tdd
carson-sweet
Internal TDD process skill — invoked by code-feature, code-issue, and code-debt.
SkillAFreshness: A★ 7Claude Code +9 - 0.614score
product-sprint-plan
carson-sweet
Plan a sprint by selecting stories from the backlog, estimating scope, and producing a sprint commitment.
SkillAFreshness: A★ 7Claude Code +9 - 0.614score
project-gh-import-issues
carson-sweet
Import open GitHub Issues into the local issue store as v4 story files.
SkillAFreshness: A★ 7Claude Code +9 - 0.614score
project-gh-sync-issues
carson-sweet
Bidirectional status sync between local issue files and GitHub Issues.
SkillAFreshness: A★ 7Claude Code +9 - 0.611score
code-feature
carson-sweet
Build a new feature end-to-end.
SkillAFreshness: A★ 7Claude Code +9
Cite this page
project-backlog-triage skill. Agent Mart. https://agentmart.dev/skills/carson-sweet-project-backlog-triage (last updated 2026-10-24)