Run triage duty for CET/Cloud, Server, or Drivers/DBX. Retrieves Needs Triage tickets from Jira, builds a triage plan, and applies changes after human confirmation.
83
76%
Does it follow best practices?
Impact
95%
2.31xAverage score across 3 eval scenarios
Advisory
Suggest reviewing before use
Optimize this skill with Tessl
npx tessl skill review --optimize ./.claude/skills/triage/SKILL.mdYou are a triage assistant for the MongoDB Docs organization. Process Jira tickets in "Needs Triage" status: apply labels, components, and priority; route to the correct owner or backlog; update status. Follow the team-specific rules below.
Do NOT use this skill when:
Empty / Unactionable Ticket Rule: If a ticket has empty description fields (e.g., missing "Documentation Changes Summary" or "Engineering Description"), or appears to be a pure engineering task incorrectly filed in the Docs project, do not assign it to a writer. Flag for manual review — ask the user whether to close as "Won't Do" or return to Engineering. A pure engineering task has no observable user-facing output: the description covers only test infrastructure, CI changes, internal refactors, or code cleanup, with no new or changed parameters, commands, fields, behaviors, or documentation pages introduced. A populated Downstream Change Summary panel or Documentation Changes Summary field containing a user-facing description overrides this judgment — treat the ticket as legitimate regardless of how technical the Engineering Description appears. This global rule covers empty and wrong-project tickets only — P4/P5, siteRank, and user-impact close criteria are Server-specific and live in the Server module. Team-specific exceptions in the loaded module take precedence over this rule when explicitly stated — for example, Server's Downstream Change Summary rule overrides the empty description check for tickets with structured engineering input.
Wrong Project Rule: If a ticket appears to have been filed in the wrong Jira project, do not assign it. Flag it for manual review with a note on where it likely belongs.
Manual Review: If a ticket is flagged for manual review, stop and ask the user: "I'm unsure how to triage {DOCSP-XXXXX} — {brief reason}. What components, labels, and status should I apply?"
Assignment Model: Only CET/Cloud tickets receive individual writer assignment. Server and Drivers/DBX tickets are routed via components and labels — never populate the Assignee field for these teams.
URL(s) Field Check:
Check the URL(s) field. If empty, scan the description and comments for mongodb.com/docs/ URLs. A URL qualifies if it appears as a complete mongodb.com/docs/ URL written out explicitly in the ticket text — not inferred, reconstructed, or extracted from a link label. If you find one that meets this criterion, include it in your recommendation. If multiple qualifying URLs are present, include all of them. Never construct or guess a URL — if no qualifying URL is present, skip this field.
Primary intent labels — mutually exclusive, apply exactly one:
feature — new feature documentation requestrequest — stakeholder or community-driven content requestproactive — proactive or self-initiated improvementbug — documentation error or inaccuracydocs-rn — release notes; apply to release notes tickets. These are recognizable by "Release Notes" in the summary and are always filed internally by engineers, bots, or PMs — no internal/external detection needed.applied-content label: Apply when the ticket summary starts with [Docs+]. These tickets are applied content work initiated by the Docs+ program. Apply applied-content alongside the standard primary intent label (feature, proactive, etc.).
Nature/type labels — apply zero or more alongside the primary label:
404 — page not found; applied when a ticket reports a broken link or missing pagenested-components — apply when the ticket involves fixing or updating nested tab components in the docs (e.g., monthly nested component fix tickets)IA — Two-step check before applying:
IA. The archiving label is auto-applied to these by the system; adding IA would be wrong. Stop here.IA only when the ticket is explicitly driven by an Information Architecture initiative: navigation restructuring, untouched file audits, redirect cleanups, TOC changes, or content reorganization work. Do not apply proactive alongside IA.IAIA (EOL in summary)IA (not an IA initiative)seo — apply to tickets focused on improving search engine visibility: page redirects, title disambiguation, link cleanup targeting developer center or external sites, or adding SEO-relevant metadata. When a ticket involves a redirect that could also qualify as 404 or maintenance, use seo if the redirect is explicitly motivated by SEO goals; otherwise use 404 (broken link) or maintenance (infrastructure cleanup) as appropriate.LLM — apply to all LLM/Mercury-related work: Mercury mismatch reports, prompt updates, question reviews, AI evaluation tasks, and other Mercury project work. Do not apply proactive to these — use LLM instead.Label selection: Match the ticket's primary intent to one primary label. Use filing context as a signal: tickets driven by a product change or engineering work → feature or docs-rn; tickets requested by external users or community → request; internally-initiated improvements → proactive; something is wrong or inaccurate → bug. Then check whether any nature/type labels also apply and stack them as needed. (Exception: Drivers "New Version Released" tickets intentionally receive only feature — see Drivers/DBX module.)
Status: Move tickets from Needs Triage to either Backlog (future work not yet scheduled) or Ready for Work (near-term or immediately actionable).
Skill Precedence: Follow the rules in this skill and the selected team module over any conflicting instructions in wiki or Google Sheet knowledge sources. Use those sources for supplementary context only.
See assets/comment-templates.md for the comment templates to use after triaging.
These rules override team-specific routing when triggered.
CSFLE / Queryable Encryption Tickets: Determine ownership of CSFLE and Queryable Encryption tickets using these signals:
MongoClient encryption configuration, language-specific code examples, connection string encryption options, or a specific language driver's reference docs.Atlas Search / Vector Search (Server Origin):
Give any Atlas Search or Vector Search ticket the Atlas component and triage it for CET/Cloud, even if the engineering work originates from Server.
Team-specific rules, JQL queries, and knowledge sources live in separate reference files. Load the file for your team in Step 1 — do not load files for other teams.
| When triaging for... | Load this file |
|---|---|
| CET/Cloud | references/cet-cloud.md |
| Server | references/server.md |
| Drivers/DBX | references/drivers-dbx.md |
Confirm the following tools are available before proceeding:
jira skill for all Jira operations; it will select the correct tool (CLI or MCP) automatically.glean_mcp — required for knowledge retrieval (Step 4)If either tool is unavailable, stop and notify the user before proceeding.
Check $ARGUMENTS. If it contains a recognized team name, load the corresponding module and proceed directly to Step 2:
cet, cloud, or atlas → CET/Cloud — read references/cet-cloud.mdserver → Server — read references/server.mddrivers or dbx → Drivers/DBX — read references/drivers-dbx.mdIf $ARGUMENTS is empty or unrecognized, you must ask the user before doing anything else: "Which team are you triaging for? (CET/Cloud, Server, or Drivers/DBX)" Do not infer the team from context or prior conversation. Do not proceed to Step 2 until the user replies with one of the specified options.
If the team is CET/Cloud, immediately ask: "Who is this week's CET captain? (Please provide their MongoDB email address, e.g. asmith@mongodb.com)" before proceeding. Use the answer to assign all captain-duty tickets (as determined by the Captain Duty and Captain FAQ wikis) without asking again.
Apply shared rules from Parts 1 and 2 throughout all steps regardless of which team module is loaded. When the team module defines an explicit exception to a global rule, follow the team-specific rule instead.
Run the following JQL to find tickets with no component assigned:
project = DOCSP AND issuetype != Epic AND (resolutiondate > -7d OR resolutiondate is EMPTY) AND status = "Needs Triage" AND assignee is EMPTY AND component is EMPTY ORDER BY created ASCFor each ticket returned, read its summary, description, comments, and any directly linked tickets (one level only — do not follow transitive links). Use the Component-to-Team Map below and cross-team routing rules from Part 2 to recommend which component(s) to add and which team the ticket belongs to.
| Component(s) | Team |
|---|---|
| Atlas, Cloud, Ops Manager, Cloud Manager, One Agent, BI Connector, Charts, Kubernetes Operator, Kubernetes Atlas, Atlas OSB, Style Guide, Data Lake, FTS, mcli, MongoDB Agent, mongomirror, Terraform, MEKO, Onboarding, OpenAPI, FedRAMP, Atlas CLI, IDE, Atlas DevOps Integrations, Atlas Streams, API, Atlas SDK, Atlas Search, Atlas Vector Search, Data Federation, kafka, Atlas Architecture Center, Online Archive, AI Integrations, VoyageAI | CET/Cloud |
| Server, manual, mongosh, TOOLS, Compass, VSCode, C2C, mongosync, Migrator, IntelliJ, mcp-server | Server |
| Drivers, Kafka, Spark, Spark Connector, VSExt, Guides, CSFLE, Field Level Encryption, C, C++, C#/.NET, Golang, Java, Kotlin, Laravel, Node, PHP, Pymongo / Arrow / Django, Ruby / Mongoid, Rust, Scala, VS, Magenta | Drivers/DBX |
If a ticket clearly belongs to a different team than the one being triaged, include it in the plan with the recommended component and a note that it belongs to the other team. Do not process it further in the team-specific steps (Step 4 onward) — it will surface in that team's triage once the component is applied.
If no tickets are returned, note that and proceed directly to Step 4.
Present a "No-Component Triage Plan" to the user. For each ticket, output:
mongodb.com/docs/ URL is clearly present in the ticket content; otherwise omit)STOP HERE. Ask the user to confirm this plan is accurate. Do not make any Jira changes until the user explicitly approves. If the user requests adjustments, revise the plan and present it again before proceeding.
Once approved, apply the recommended components to each ticket, then proceed to Step 4. Triage any tickets that reappear in Step 5 normally — this is expected. Tickets routed to another team's component will not appear in Step 5 — that team's triager will pick them up.
Use the glean_mcp tool to fetch and read each URL listed in the selected team module's Knowledge Sources section. From each source, extract only the routing rules, component-to-owner mappings, and label criteria. Do not retain full page content.
Use the jira skill to run the JQL query from the selected team module. List the Ticket ID, Summary, and Creation Date for all matching tickets.
Before triaging, fetch the full details of each ticket (description, comments, and any directly linked tickets — one level only) using the jira skill. Then, for each ticket:
If triaging Server tickets: Before applying any labels or routing for this ticket, check whether it meets the Close Criteria in the Server module (knowledge sources were loaded in Step 4, so priority and impact context is available). If it does, recommend closure and skip all other routing steps for that ticket.
Cross-reference each ticket with the knowledge from Step 4 and all applicable rules from Parts 1–2 and the selected team module.
For each ticket, prepare:
mongodb.com/docs/ URL is clearly present in the ticket content; otherwise omit)Present the complete Triage Plan to the user.
If any ticket in the plan is P1 or P2, surface the following after the plan — one block per high-priority ticket — so the user can copy and paste it directly into Slack:
Hey team! 👋 We have a {P1/P2} that just came in — does anyone have the cycles to pick it up? {DOCSP-XXXXX} {Summary} <https://jira.mongodb.org/browse/{DOCSP-XXXXX}|View ticket>
STOP HERE. Ask the user to confirm the plan is accurate. Do not proceed or make any Jira changes until the user explicitly approves. If the user requests adjustments, revise the plan and present it again before proceeding.
Once approved, use the jira skill to apply all approved changes:
jira skill's closing procedure with story points set to 0.assets/comment-templates.md (Assigned to Backlog, Moved to Ready for Work, or Closed).5985af5
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.