agent-environment-retr…
Use when a completed session needs an agent-environment retrospective. Not for an engineering retrospective from telemetry: use engineering-retrospective.
Use when the user invokes backlog triage for a GitHub repo''s open issues and PRs. Not for proactive triage, non-GitHub trackers, or single bug issues: use github-bug-report-triage.
$ npx -y skills add OutlineDriven/odin-claude-plugin --skill github-backlog-triage --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/github-backlog-triageContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when the user invokes backlog triage for a GitHub repo''s open issues and PRs. Not for proactive triage, non-GitHub trackers, or single bug issues: use github-bug-report-triage.
name: github-backlog-triage description: 'Use when the user invokes backlog triage for a GitHub repo''s open issues and PRs. Not for proactive triage, non-GitHub trackers, or single bug issues: use github-bug-report-triage.' disable-model-invocation: true
| Field | Bound contract | |---|---| | Trigger | The user explicitly invokes backlog triage for a GitHub repository's open pull requests and issues. | | Authority | Remote: merges selected pull requests, closes evidenced resolved issues, and posts missing cross-links on GitHub; requires explicit human invocation. No write runs until the user approves the final set. Never triage proactively. | | Side effect | After a complete approval gate, optionally merge selected ready pull requests, close evidenced resolved issues, post missing cross-links, and write local review or triage reports. Priority and size estimates are local-only and never posted to GitHub. | | Done | All open items are classified; only the user-approved GitHub writes execute with per-action safety checks; unresolved items retain local-only priority and size estimates; and any requested local reports are saved. |
1. **Select the target repository.** Run `gh auth status`, `git rev-parse --is-inside-work-tree`, `git remote -v`. A remote is GitHub-hosted when its URL host is `github.com` (`https://github.com/OWNER/REPO(.git)`, `git@github.com:OWNER/REPO(.git)`, or `ssh://git@github.com/OWNER/REPO(.git)`). Normalize each to `OWNER/REPO` and de-duplicate. Exactly one distinct GitHub repo: use it without prompting. Zero (not a git repo, or no GitHub remote): ask the user for `OWNER/REPO`. More than one: ask the user to pick. For GitHub Enterprise, ask for `OWNER/REPO` and rely on the user's `GH_HOST`/`gh` host config; confirm the resolved repo back before continuing. Store `REPO="OWNER/REPO"` and pass `-R "$REPO"` to every `gh` call. Done when: REPO is set to a validated OWNER/REPO matching the required pattern, gh auth status exits 0, and every subsequent gh call passes -R "$REPO".
2. **Gather issues and context.** Fetch open issues, open PRs, and recently merged PRs: Done when: open issues, open PRs, and recently merged PRs are fetched as JSON, the default branch is resolved from the repo, and resolution signals are gathered from closingIssuesReferences and default-branch commits.
gh issue list -R "$REPO" --state open --limit 1000 --json number,title,body,labels,assignees,comments,reactionGroups,createdAt,updatedAt,url gh pr list -R "$REPO" --state open --limit 1000 --json number,title,body,author,isDraft,reviewDecision,latestReviews,mergeable,mergeStateStatus,statusCheckRollup,labels,createdAt,headRefName,url,closingIssuesReferences gh pr list -R "$REPO" --state merged --limit 300 --json number,title,body,mergedAt,url,closingIssuesReferences
`closingIssuesReferences` is the strongest resolution signal (populated by GitHub closing keywords or a manual UI link). For issues it does not cover, search default-branch commits. Resolve the default branch authoritatively from the repo, not from local `origin/HEAD`:
default_branch=$(gh repo view "$REPO" --json defaultBranchRef --jq .defaultBranchRef.name) git log --oneline "origin/$default_branch" | grep -iE "(close|fix|resolve)[sd]? +#<N>([^0-9]|$)"
3. **Triage open pull requests when any are open.** Summarize them and ask whether to handle PRs now or skip to issues, then follow `references/pr-triage.md`, which covers classification, incremental merges, review subagents, and per-item approved actions (staleness comments, closes, reviewer requests, status comments, labeling) executed only on per-item user approval. After merges, re-fetch the step-2 merged-PR list before classifying issues. Done when: every open PR is classified, approved merges landed one at a time with re-verification, opted-in reviews remain read-only, and every per-item write action ran only after its own approval.
4. **Classify each open issue** into exactly one bucket. Done when: every open issue is placed into exactly one bucket (Already resolved, Pending PR, or Outstanding), and each bucket assignment carries its evidence or stated lack thereof.
gh issue close <N> -R "$REPO" -c "Resolved by #<PR> (<short reason>). Closing as the change is now on $default_branch."
Formerly the ODIN Claude Plugin. The repository URL is unchanged. Outline-Driven Development, nicknamed ODIN, is a highly opinionated code-agent skill library: principles-first engineering, surgical editing, and workflow automation, published as installable
Repo: OutlineDriven/odin-claude-plugin
Use when a completed session needs an agent-environment retrospective. Not for an engineering retrospective from telemetry: use engineering-retrospective.
Use when a repo needs agent setup, AGENTS.md added or made lean, CLAUDE.md audited, or agent instructions scored or pruned. Not for remote, credential,…
Use when a human explicitly asks for a full repository agent-compatibility pass returning a scored report with prioritized fixes. Not for tasks that require…
Use when setting up a project, auditing agent command permissions, or asking which read-only bash commands and domains to allow. Not for remote, credential,…
Use when asked to build or review a CLI intended for coding agents and return flag-driven, pipeline-safe, idempotent design advice. Not for running or…
Use when the user asks to make the skills framework work in a new harness, IDE, or CLI. Not for remote, credential, publish, deploy, or irreversible changes.