triage
Work-unit triage for GitHub issues. Groups raw issues, fuses each group with the AGENTS.md northstar in session, and emits dispatchable initial prompts.
What this skill does
# Triage: Work-Unit Formation Form executable work units from GitHub issue substrate. This skill does not execute the work, open branches, or create PRs. It reads raw issues, groups related issues, fuses each group with the project's inscribed northstar and the user's current-session judgment, and emits one or more initial prompts that can be routed to an independent session, linear `/dispatch`, or parallel `/dispatch`. ## Core Contract `/triage` owns work-unit formation: ``` BacklogIntake -> RawIssueSet -> IssueGroup -> NormalizedProblemFrame -> NorthstarFusion -> FocusedWorkUnit -> InitialPrompt -> RouteChoice ``` `/dispatch` owns work-unit execution. It consumes a focused work unit or initial prompt and applies the selected execution topology. If the user asks `/dispatch` to process open issues directly, route to `/triage` first unless a focused work unit is already present in the session. ## Types | Type | Meaning | |---|---| | `BacklogIntake` | The scale-aware intake step that binds an explicit issue scope or, when no scope is supplied, inspects the current repository's open GitHub issue backlog through lightweight metadata before deciding how much substrate to read. Scale is judged by triage load, not by a fixed issue-count threshold. | | `RawIssueSet` | The issue substrate read from GitHub: issue body, comments, labels, linked PRs, and explicitly cited blockers. Scope this narrowly to issues; do not call it external signals. | | `IntakeIntent` | The user-recognized purpose for the triage pass, explicitly stated in the current session. | | `TriageLoad` | A metadata-grounded composite judgment spanning `IssueLoad`, `RepoLoad`, `MappingLoad`, and `IntentAmbiguity`. | | `IssueGroup` | One or more raw issues that share a problem pressure: similar symptom, target behavior, conceptual request, affected surface, or blocked execution axis. | | `NormalizedProblemFrame` | A single problem statement reconstructed from the issue group, with duplicates collapsed and contradictions surfaced. | | `Northstar` | The inscribed direction line read from `AGENTS.md` or the active project guide, usually under `## Northstar`. This may have been produced by `/realign`. | | `NorthstarFusion` | A session-text trace showing how the normalized problem frame preserves, transforms, or drops issue claims in light of the northstar and the user's current judgment. | | `FocusedWorkUnit` | The executable unit formed from one issue group after northstar fusion. Default cardinality is `IssueGroup -> FocusedWorkUnit` one-to-one. Split only when northstar fusion exposes distinct execution axes. | | `InitialPrompt` | The handoff text for an independent session or `/dispatch`. It is the output artifact, not a raw issue summary. | | `RouteChoice` | The user's current-session choice: independent session, linear dispatch, parallel dispatch, or re-triage. | ## Phase 0: Bind Scope Accept one of: - Explicit issue numbers or URLs - A GitHub query scope such as a label, milestone, project view, or `gh issue list` filter - The current session's issue set if the user has already surfaced raw issues - A user-supplied issue list pasted into the session If no scope is recoverable, default to the current repository's open GitHub issue backlog. First perform a lightweight metadata pass, not a full substrate read: ```bash gh issue list --state open --json number,title,labels,state,createdAt,updatedAt,assignees,milestone ``` If GitHub access is unavailable or the current repository cannot be identified, ask for the issue scope or pasted issue list. Classify the intake scale by `TriageLoad` before reading full issue bodies and comments: | Load axis | Signals to inspect from metadata and repo shape | |---|---| | `IssueLoad` | Open issue volume relative to the next checkpoint, recent arrival rate, title/body preview density when available, comment/dependency/link indicators, unlabeled or stale proportion, duplicate / needs-info candidates. | | `RepoLoad` | Repository surface area, number of independently deployable packages or runtime surfaces, verifier/test matrix breadth, known co-change requirements, ownership or component boundaries. | | `MappingLoad` | How clearly issue titles/labels map to code, docs, runtime, verifier, or protocol surfaces; whether many issues span several surfaces or lack enough metadata to map. | | `IntentAmbiguity` | Whether the current session has clarified the triage purpose: dispatchable work selection, stale backlog reduction, milestone/release preparation, duplicate consolidation, blocker surfacing, or another explicit intent. | Use the load axes to choose an intake posture: | Posture | Intake path | |---|---| | Small | Full-scan the bound open issues into `RawIssueSet`, then group. Use this only when `IssueLoad`, `RepoLoad`, `MappingLoad`, and `IntentAmbiguity` are all low enough that full substrate reading fits the next checkpoint. | | Medium | Build a metadata grouping map first. Surface candidate clusters in Phase 2 before the user confirms selection, then read full substrate only for confirmed clusters. Use this when full scan is plausible but one or more load axes would make silent reading too costly. | | Large | Call `/elicit` to crystallize `IntakeIntent`, convert that intent into a GitHub query/filter or cluster selection, then read full substrate only for the resulting slice. Use this whenever full substrate reading would exceed the next checkpoint or the triage purpose is unclear. | If the user explicitly asks for a full-backlog audit on a medium or large backlog, process metadata in checkpointed batches and surface progress between batches. Do not read all bodies/comments before the first grouping checkpoint. ## Phase 1: Read Raw Issues Read the full issue substrate for each issue in the bound scope or confirmed cluster: - number, title, body, labels, state, author, timestamps - comments that contain reporter answers, prior triage notes, review feedback, or maintainer decisions - linked PRs and explicit references such as `depends on #N` - labels or body sections indicating blocked, out-of-scope, stale, or ready states Use the available GitHub interface (`gh`, MCP, or pasted issue text). Preserve issue numbers in every downstream artifact. For medium and large intake postures, metadata-only lists are provisional. They can seed `IssueGroup` candidates, but a candidate cannot become a `NormalizedProblemFrame`, `FocusedWorkUnit`, or `InitialPrompt` until the relevant full issue substrate has been read. ## Phase 2: Group Issues Propose `IssueGroup` candidates by problem pressure, not by label alone. Useful grouping signals: - same user-facing symptom or desired behavior - same issue type, impact, urgency, severity, or priority pressure - same component, owner, milestone, or affected runtime surface - same protocol, skill, runtime surface, or verifier surface - same missing decision or northstar tension - same stale, blocked, duplicate, or needs-info disposition - duplicate or near-duplicate requests - one issue's proposed fix depends on another issue's premise Labels can seed grouping, especially type / priority / severity / component labels, but they do not replace problem-pressure grouping. Surface the grouping map before moving to fusion. If grouping is contested, present 2-3 grouping alternatives with their downstream work-unit shape. The user may confirm, adjust, split, merge, or ask for re-triage. ## Phase 3: Normalize Problem Frames For each confirmed `IssueGroup`, write a `NormalizedProblemFrame`: - **Problem**: one sentence naming the shared pressure - **Included issues**: issue numbers and one-line contribution from each - **Observed evidence**: concise issue-body/comment evidence - **Conflicts or drift**: contradictions, stale claims, or unresolved issue premises - **Missing context**: specific facts needed before execution, if any - **Out of scope**: nearby requests the group should not absorb This is no
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.