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 a human invokes triage on a new configured Slack issue report. Not for triaging reports from other channels or posting more than one verdict.
$ npx -y skills add OutlineDriven/odin-claude-plugin --skill issue-triage --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/issue-triageContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when a human invokes triage on a new configured Slack issue report. Not for triaging reports from other channels or posting more than one verdict.
name: issue-triage description: 'Use when a human invokes triage on a new configured Slack issue report. Not for triaging reports from other channels or posting more than one verdict.' disable-model-invocation: true
| Field | Bound contract | |---|---| | Trigger | Human invokes this skill on a new configured Slack issue report. | | Authority | Remote: posts at most one Slack thread verdict and creates at most one tracker issue; requires explicit human invocation. Previews the target and consequence before any credential use, data-at-rest change, paid action, publishing, or remote mutation. | | Side effect | Posts at most one Slack thread verdict. Creates at most one tracker issue. | | Done | Exactly one classified verdict exists in the thread and tracker state is deduped. |
1. **Validate invocation.** Confirm human invoked this skill. Stop if the call is not human-originated. Done when: human origin is confirmed. 2. **Fetch the Slack report.** Retrieve the target Slack message using `slack_report_url`. Validate the channel and thread exist. Stop if the message cannot be fetched. Done when: the report message content is in hand. 3. **Classify the report.** Parse the message content. Apply triage classification to the report content. Accepted verdicts and their criteria:
The produced verdict must cite the report evidence satisfying its criterion. Produce a single classified verdict. Done when: one verdict from the accepted set is selected with its evidence citation. 4. **Check for duplicates.** Query the tracker for any existing issues that reference this Slack report. If a duplicate issue exists and the verdict is `track`, skip creation and mark the existing issue as the target. Done when: the duplicate check is complete and the target issue is identified or confirmed absent. 5. **Post the verdict to Slack.** Post exactly one thread reply containing the classified verdict and its evidence citation. Stop on failure. Do not post a second reply. Done when: one Slack reply is posted and its timestamp is captured. 6. **Create tracker issue if warranted.** If the verdict is `track` and no duplicate exists, create exactly one tracker issue linked to the Slack report. Stop on failure. Done when: one tracker issue is created (or skipped as duplicate or not warranted). 7. **Confirm state.** Verify the Slack reply was posted and the tracker state reflects at most one issue per report. Mark done. Done when: the Slack reply exists and the tracker has at most one issue per report.
| Failure class | Rule | |---|---| | `not-human-originated` | Stop. No post, no issue. Return error. | | `report-not-found` | Stop. No post, no issue. Return error. | | `duplicate-issue` | Skip creation. Use existing issue. Proceed to post verdict. | | `slack-post-failed` | Stop. No tracker issue. Return error with partial result. | | `tracker-issue-failed` | Stop. Slack post stands. Return error with partial result. |
Partial-result rule: if Slack post succeeded but tracker issue creation failed, the Slack reply is authoritative. Do not delete or edit the posted reply.
One JSON object: verdict (ack|defer|escalate|close|track), evidence_citation, slack_reply_ts, tracker_issue_url (null when verdict is not track or creation was skipped as duplicate), and is_duplicate.
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.