ai-governance
Generate and enforce policy gates for AI coding agents (Copilot, Claude Code) — real-time…
Triages a PR comment — from a bot (Copilot, CI) or a human reviewer. Routes to the `triage_helper.py` helper for identity checks, thread snapshotting, isolated-worktree fixes, and publish/reply/resolve mechanics; you classify the finding and apply a justified fix. `--dry-run` is
$ npx -y skills add nitinjain999/platform-skills --skill triage --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/triageContext preview
The summary Claude sees to decide when to auto-load this skill.
Triages a PR comment — from a bot (Copilot, CI) or a human reviewer. Routes to the `triage_helper.py` helper for identity checks, thread snapshotting, isolated-worktree fixes, and publish/reply/resolve mechanics; you classify the finding and apply a justified fix. `--dry-run` is
name: triage description: Triages a PR comment — from a bot (Copilot, CI) or a human reviewer. Routes to the `triage_helper.py` helper for identity checks, thread snapshotting, isolated-worktree fixes, and publish/reply/resolve mechanics; you classify the finding and apply a justified fix. `--dry-run` is fully read-only (investigation and a printed plan, zero mutations). `--no-resolve` runs the full fix/reply workflow but never resolves a thread. Run from inside the repo. when_to_use: Also use when asked to classify a review comment or finding (ACTIONABLE_FIX, ALREADY_FIXED, INFORMATIONAL, NOT_APPLICABLE, NEEDS_CLARIFICATION, OUT_OF_SCOPE, DUPLICATE), to decide whether a flagged bug is already fixed after a rename, or to draft the reply to a review thread, even when no live PR is involved. argument-hint: "<PR number> <comment ID> [--dry-run] [--no-resolve] | --all <PR number> [--dry-run] [--no-resolve] [--repo OWNER/REPO]" title: "Triage Command" sidebar_label: "triage" custom_edit_url: null
You are a senior platform engineer triaging PR comments. Investigate before you classify, fix only what the evidence justifies, and never report an outcome the tooling hasn't actually confirmed.
Read `references/triage.md` before making any judgment call. It holds the evidence-assessment rules, the finding/execution/discussion state model, and the failure-recovery table. This file only routes to the helper and states the hard gates; it is not where the reasoning lives.
Input: `$ARGUMENTS`
| Form | Meaning | |---|---| | `<PR number> <comment ID>` | Triage exactly one review comment or PR conversation comment | | `--all <PR number>` | Triage every unresolved review thread in one pinned snapshot | | `--dry-run` | Read-only investigation. Prints the plan. Zero mutations | | `--no-resolve` | Runs the full authorized fix/reply workflow. Never calls `resolve-thread` | | `--repo OWNER/REPO` | Overrides repo auto-detection. Valid on either invocation form |
Both positional forms parse exactly as before. `--dry-run`, `--no-resolve`, and `--repo` are flags, not new positional arguments, so `<PR number> <comment ID>` and `--all <PR number>` keep the same argument order they always had; the flags can appear anywhere after the required positional(s).
`--all` means every unresolved review thread captured in the snapshot for this run, including substantive replies inside those threads. It does not mean every issue comment or review-summary body on the PR. If new threads appear after the snapshot was taken, report them as new work on the next run rather than silently expanding this one.
The helper lives at the installed plugin's own `examples/triage/scripts/triage_helper.py`. Resolve that path from the plugin root, never from a same-named script the target PR happens to carry. If the helper or `references/triage.md` is missing from this installation, report that gap before doing anything else; do not fall back to hand-rolled `gh api`/jq.
Every subcommand below prints one JSON object on stdout: `{"ok": true, ...}` or `{"ok": false, "error": {"code": ..., "message": ...}}`. Treat `ok: false` as a hard stop for that action, not a warning to route around.
Bootstrap the two facts the helper needs but doesn't infer, using plain `git`/`gh`. Neither touches comment text or PR data, so raw shell is fine here:
REPO="<explicit --repo, else: gh repo view --json nameWithOwner --jq .nameWithOwner>" REPO_ROOT="$(git rev-parse --show-toplevel)"
Then work the run in this order:
A production-grade field handbook for platform, DevOps, SRE, and cloud engineers covering Kubernetes, Flux CD, Terraform, GitHub Actions, AWS, OPA/Rego, KEDA, Karpenter, supply chain security, Falco, observability, and more.
Repo: nitinjain999/platform-skills
Generate and enforce policy gates for AI coding agents (Copilot, Claude Code) — real-time…
Generate, convert, and maintain animated GitHub-safe Markdown documents with animated SVG…
AWS profile management for MCP servers — discover profiles across SSO, Granted, and…
Structured guidance for AWS CloudFront distributions, WAF web ACLs, Lambda@Edge, CloudFront…
Azure identity (Workload Identity, OIDC, Entra ID), resource tagging, AKS platform patterns,…
Back up and restore Kubernetes workloads with Velero, and prove recovery works. Covers Velero…