Skip to content

feat: nemoclaw-maintainer-triage skill and shared triage-instructions.md#1880

Merged
cv merged 31 commits intomainfrom
feat/triage-skill
Apr 14, 2026
Merged

feat: nemoclaw-maintainer-triage skill and shared triage-instructions.md#1880
cv merged 31 commits intomainfrom
feat/triage-skill

Conversation

@wscurran
Copy link
Copy Markdown
Contributor

@wscurran wscurran commented Apr 14, 2026

Summary

  • Adds docs/triage-instructions.md — single source of truth for AI-assisted label triage. Contains role definition, label guide, skip list, comment tier rules, and tone rules. Extracted and formalized from the nvoss-velocity dashboard prompt/label guide so both the CLI skill and the dashboard use identical instructions.
  • Adds .agents/skills/nemoclaw-maintainer-triage/ — CLI triage skill for NemoClaw maintainers. Supports single-item mode (give it an issue/PR number) and batch mode (fetches all unlabeled open items). Applies labels and optional triage comments via gh CLI on approval. Logs sessions to ~/development/daily-rhythm/activity/nemoclaw-triage-log.md.

Architecture note

The skill reads docs/triage-instructions.md at runtime via cat. The nvoss-velocity dashboard will fetch the same file from GitHub at generation time (separate PR). This keeps execution paths independent while preventing the labeling logic from drifting between the two environments.

Test plan

  • Invoke skill with a specific issue number — confirm it reads triage-instructions.md, suggests labels, applies on approval, logs to activity file
  • Invoke skill with no number — confirm batch mode fetches unlabeled items and works through them interactively
  • Confirm priority: high is only suggested for genuinely blocking issues
  • Confirm bare enhancement is not suggested alongside enhancement: * sub-labels

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • AI-assisted triage for GitHub issues and PRs with single-item and batch modes (up to 50 items), including batch prioritization.
    • Generates structured suggestions (labels, one-sentence reason, optional comment) and requires user confirmation to apply labels/comments.
    • Records approved actions to a persistent triage log with initialization and session summaries.
  • Documentation

    • Added detailed triage instructions, label semantics, selection rules, and comment guidance for consistent categorization.

cv and others added 22 commits April 7, 2026 13:45
…salvage

A suite of 8 agent skills and 4 TypeScript scripts that automate the
NemoClaw maintainer workflow: triage open PRs, check merge gates,
salvage near-ready contributions, detect hotspots, and close test gaps.

Skills:
- nemoclaw-maintainer-loop: orchestrator for /loop integration
- nemoclaw-maintainer-triage: deterministic queue builder (calls gh-pr-merge-now)
- nemoclaw-maintainer-merge-gate: 4-gate approval checker
- nemoclaw-maintainer-salvage-pr: near-ready PR rescue with fork push support
- nemoclaw-maintainer-security-sweep: security-focused review routing
- nemoclaw-maintainer-test-gaps: targeted test coverage for risky code
- nemoclaw-maintainer-hotspots: churn/conflict pressure detection
- nemoclaw-maintainer-sequence-work: large issue decomposition

Scripts (node --experimental-strip-types):
- triage.ts: calls gh-pr-merge-now, enriches with risky-area detection, scores
- check-gates.ts: CI, conflicts, CodeRabbit, risky-code-tested gates
- hotspots.ts: 30-day git churn + open PR file overlap analysis
- state.ts: local state file CRUD (init, exclude, history, set-queue)

Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace 9 separate maintainer skills with 3 phase-based skills matching
the daily ship cycle: morning (triage + label), day (execute + loop),
evening (handoff + tag). Inner workflows become reference docs under
the day skill with progressive disclosure.

Key changes:
- Extract shared.ts to deduplicate RISKY_PATTERNS, run(), scoring weights
- Fail-closed gate checker (was defaulting to pass on API error)
- Named scoring constants with documented rationale
- Add PR-REVIEW-PRIORITIES.md codifying the review priority order
- Add version-label-based daily cadence (label items with target tag,
  bump stragglers at EOD, cut patch tag for overnight QA)
- stderr logging in shell helpers instead of silent swallowing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…w issues

New scripts for deterministic operations that were previously inline:
- version-target.ts: compute next patch version + find stragglers
- version-progress.ts: shipped vs open for a version label
- bump-stragglers.ts: move open items from one version label to next
- handoff-summary.ts: commits since last tag + risky areas + QA focus

Review fixes:
- Remove duplicated scoring table from morning (reference PR-REVIEW-PRIORITIES.md)
- Security sweep uses triage-identified items instead of re-running find-review-pr
- Evening uses state.ts script command for state updates
- Morning uses version-target.ts for straggler discovery (no ambiguous placeholder)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Both version-progress.ts and triage.ts now include ageDays as a
computed field in their JSON output, so triage tables never depend
on Claude doing date arithmetic from raw ISO timestamps.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
At a daily ship cadence most PRs are <24h old, making ageDays show 0
for everything. ageHours gives useful resolution.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove external gh-pr-merge-now dependency from triage script. The
script now fetches open PRs directly via gh CLI, classifies them as
merge-ready / near-miss / blocked, and scores them using the same
weighted model.

Key changes:
- Fetch basic PR data first (lightweight), then enrich top candidates
  with statusCheckRollup individually to avoid GraphQL timeouts
- Add single retry with 3s delay for transient GitHub API failures
- Add labels array to QueueItem output for version-label awareness
- Classification logic: merge-now requires approved + green CI + clean
  merge state; near-miss allows up to 2 fixable blockers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
GitHub's GraphQL API returns 502 when requesting too many PRs with
rich fields (statusCheckRollup, mergeStateStatus, reviewDecision).
Limit to 50 most recent PRs which is sufficient for daily triage.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Three bugs in the triage classifier:
- BLOCKED merge state was treated as a conflict (it means "missing
  required reviews", not a conflict — DIRTY is the actual conflict)
- StatusContext checks (CodeRabbit) use state/context fields, not
  conclusion/status — handle both shapes from gh CLI
- No bucket existed between "approved + merge-ready" and "needs
  salvage", so most OSS PRs fell to blocked

Add review-ready bucket (green CI, not draft, no conflicts) scored
at +35, between merge-now (+40) and near-miss (+30). Also simplify
by fetching statusCheckRollup in the initial query (works at limit 50)
instead of per-PR enrichment.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace single gh pr list (capped at 50 by GraphQL) with gh api
--paginate using the REST endpoint. Fetches all open PRs as lightweight
NDJSON, then enriches only the top candidates with CI/review data via
per-PR GraphQL calls.

Previous: 50 PRs visible, missed older security PRs
Now: all 243 open PRs visible, oldest items no longer invisible to triage

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The salvage workflow was biased toward "ask the contributor and wait"
which blocks the daily ship cadence. Now defaults to maintainer does
the work (rebase, fix conflicts, add tests, push). Only defer to
contributor when intent is ambiguous from the diff.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
GitHub invalidates approvals when new commits are pushed. Approving a
PR with conflicts is wasted effort since the rebase push resets it.

Merge gate now explicitly: do not approve DIRTY PRs. Correct sequence
is salvage (rebase) → CI green → approve → report ready for merge.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
PRs with GitHub labels now score higher in triage:
- "security" label: +15
- "priority: high" label: +10

This produces clear score tiers: security+high+risky (80) > high+risky
(65) > unlabeled+risky (55) > unlabeled clean (35). Previously all
review-ready PRs with risky files scored identical 55.

Also fix stale return type in scoreItem and nextAction text.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The CLAUDE.md guideline said all .agents/skills/nemoclaw-*/*.md is
autogenerated and should never be edited directly. This is true for
docs-derived skills but not for the hand-authored maintainer skills
(morning/day/evening). CodeRabbit was flagging valid edits based on
this overly broad rule.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the overly broad "nemoclaw-*/*.md is autogenerated" rule with
an explicit list of the skills that docs-to-skills.py actually produces.
All other skills (maintainer-*, cut-release-tag, etc.) are clearly
documented as hand-authored.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Main replaced CLAUDE.md with a symlink to AGENTS.md and reorganized
skills into audience buckets (nemoclaw-user-*, nemoclaw-maintainer-*,
nemoclaw-contributor-*). The narrower autogenerated rule (nemoclaw-user-*
only) is already in main's AGENTS.md, making our explicit-list change
redundant. Accept main's version.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add parseStringArg/parseIntArg helpers to shared.ts for safe CLI arg
  parsing with validation and fallback defaults. Update all 6 scripts.
- Wrap JSON.parse in state.ts cmdSetQueue/cmdSetHotspots with try-catch
  for clear error on malformed piped input.
- Fix cmdExclude docstring to match behavior (PR-only, not PR+issue).
- Document enrichment cap (limit*3) as intentional in triage.ts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… errors

Three CodeRabbit findings on version-target.ts:
- Future version labels (e.g. v0.0.11) were incorrectly flagged as
  stragglers. Now uses semver comparison (compareSemver < 0) to only
  catch labels older than the target.
- Empty catch blocks silently hid gh parse failures. Now logs to stderr.
- Documented that --repo controls gh queries while git tags always come
  from the local checkout.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- docs/triage-instructions.md — single source of truth for AI label triage;
  extracted from nvoss-velocity prompt/label guide; read by skill at runtime
  and fetched by nvoss-velocity at generation time
- .agents/skills/nemoclaw-maintainer-triage/SKILL.md — CLI triage skill;
  single-item and batch modes, applies via gh CLI, logs to daily-rhythm

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 14, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds a new AI-invocable triage skill and a machine-readable triage rules doc; supports single-item or prioritized batch flows to generate label suggestions and optional comments, requires user approval to apply labels/comments via the gh CLI, and appends per-item and batch summaries to a persistent activity log.

Changes

Cohort / File(s) Summary
Triage Skill
.agents/skills/nemoclaw-maintainer-triage/SKILL.md
New user-invocable skill describing runtime flow: read docs/triage-instructions.md, operate in single-item or batch mode (up to 50), emit structured JSON suggestions, prompt user to apply/edit/skip, call gh to add labels/post comments, and append per-item log entries.
Triage Instructions
docs/triage-instructions.md
New machine-readable rules: allowed/forbidden labels, 1–5 label constraint, priority restrictions, label semantics, comment tiering (quality_tier vs standard_tier), metadata-driven overrides, and strict JSON-only runtime output schema (results array with number, labels, reason, comment).
Logging & Batch Behavior (described)
~/development/daily-rhythm/activity/nemoclaw-triage-log.md
Describes log initialization if missing, per-item log entry format (identifier/title, date, labels applied, comment posted), and appending a batch-session summary at batch end.

Sequence Diagram

sequenceDiagram
    participant User
    participant Skill as Triage Skill
    participant Docs as "Triage Instructions"
    participant GH as "GitHub CLI"
    participant Log as "Activity Log"

    User->>Skill: Invoke skill (single-item or batch)
    Skill->>Docs: Read live guidance and rules (runtime)
    Docs-->>Skill: Return label definitions & constraints

    alt Single-Item Mode
        User->>Skill: Provide issue/PR number
    else Batch Mode
        Skill->>GH: Query unlabeled open issues/PRs (prioritized, up to 50)
        GH-->>Skill: Return items
    end

    loop For each item
        Skill->>Skill: Generate suggestion (labels, reason, optional comment)
        Skill->>User: Present suggestion and choices (apply/edit/skip/apply-no-comment)
        User->>Skill: Approve / Edit / Skip / Omit comment

        alt Approved
            Skill->>GH: Apply labels via `gh ... edit --add-label`
            GH-->>Skill: Labels applied
            opt Comment approved
                Skill->>GH: Post comment via `gh ... comment`
                GH-->>Skill: Comment posted
            end
            Skill->>Log: Append per-item entry (id/title, date, labels, comment status)
            Log-->>Skill: Confirmed
        else Skipped
            Skill-->>User: Continue to next item
        end
    end

    Skill->>User: Present batch session summary (if batch)
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 I hopped through issues, noses twitching bright,
Read the rules by moon and morning light.
I nudged some labels, left a tiny note,
Logged each hop along my carrot route.
Triage done — a happy, hopping byte. 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly and clearly summarizes the main changes: adding a new nemoclaw-maintainer-triage skill and a shared triage-instructions.md documentation file, which are the primary deliverables of the PR.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/triage-skill

Comment @coderabbitai help to get the list of available commands and usage tips.

@wscurran wscurran added the project management Use this label for meta-issues about project governance and community processes. label Apr 14, 2026
@wscurran wscurran self-assigned this Apr 14, 2026
@wscurran wscurran changed the title feat: nemoclaw-maintainer-triage skill + shared triage-instructions.md feat: nemoclaw-maintainer-triage skill and shared triage-instructions.md Apr 14, 2026
@wscurran wscurran requested a review from cv April 14, 2026 19:38
@wscurran wscurran changed the base branch from cv/maintainer-skills to main April 14, 2026 19:44
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🧹 Nitpick comments (1)
docs/triage-instructions.md (1)

14-14: Reduce em-dash density in prose (LLM pattern detected).

There are repeated em-dash constructions across the page; several lines use them where commas/periods would read cleaner and align better with the style rule.

As per coding guidelines, "Excessive em dashes. One per paragraph is fine; multiple per paragraph or em dashes used instead of commas/periods should be flagged."

Also applies to: 21-21, 29-32, 39-40, 47-47, 57-57, 65-67, 80-80, 82-82, 86-87, 110-110, 117-117, 118-119, 125-125

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/triage-instructions.md` at line 14, The sentence "Assign 1–5 labels from
the provided list that best match the content. Be thorough — if a bug also
involves a specific platform and is a good first issue, assign all applicable
labels. Only skip a label if it genuinely does not apply." overuses em-dashes;
edit this sentence (and other occurrences of the em-dash character "—") to
reduce em-dash density by replacing secondary em-dashes with commas or periods
and ensuring no more than one em-dash per paragraph (follow the "Excessive em
dashes. One per paragraph is fine" guideline), updating nearby lines that repeat
the pattern to improve readability and conform to the style rule.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.agents/skills/nemoclaw-maintainer-triage/SKILL.md:
- Line 3: The documentation claim about batch mode in SKILL.md is inaccurate:
the batch-mode description (line with "fetches all unlabeled open items")
conflicts with the implemented listing commands that are hard-capped at 50;
update the SKILL.md description and the related section (lines ~41-46) to either
(A) accurately state the 50-item limit or (B) remove the limit by implementing
pagination in the listing logic (use the gh CLI pagination or iterate API calls)
so batch-mode truly fetches all unlabeled items; mention the chosen approach in
the doc and ensure the trigger wording ("batch mode", "fetches all unlabeled
open items") matches the code behavior.
- Around line 37-49: The batch-mode selection currently filters to items with
zero labels (the jq filter '.labels | length == 0'), which prevents the
prioritization branch that looks for items with the label/value "priority: high"
from ever running; update the Batch mode selection logic in the "Batch mode"
section so it does not exclude labeled items (either remove or loosen the jq
'.labels | length == 0' filter for the gh issue list and gh pr list examples) or
explicitly include a secondary query that fetches labeled high-priority items
before/alongside the unlabeled set, and keep references to the "priority: high"
prioritization step intact so that the branch can execute.
- Line 1: The SKILL.md file is missing the required SPDX license header; add a
single-line SPDX license header at the very top of SKILL.md (for example:
SPDX-License-Identifier: MIT or the project’s chosen identifier) so the file
conforms to the rule for source files (*.md). Ensure the header is the first
non-empty line in the file and matches the project's standard SPDX identifier.

In `@docs/triage-instructions.md`:
- Around line 1-128: The docs build is failing because the "NemoClaw — Triage
Instructions" Markdown document is orphaned (not referenced by any toctree); fix
by adding this document to your Sphinx/Docs toctree (insert a toctree entry that
references "NemoClaw — Triage Instructions" in the site's main index/toctree
page), then re-run the docs preview build to verify the orphan warning is
resolved.
- Around line 1-10: This docs page is missing the required YAML frontmatter; add
a top-of-file frontmatter block containing the fields title, description,
keywords, topics, tags, content type, difficulty, audience, and status with
appropriate values for "NemoClaw — Triage Instructions" so the
`nemoclaw-maintainer-triage` CLI and nvoss-velocity dashboard can parse it;
ensure the block is delimited by --- and populated with concise, valid entries
for each required field.
- Line 1: Add the required SPDX license header as the very first line of the
document "NemoClaw — Triage Instructions" (docs/triage-instructions.md) so it
conforms to the repository rule for source files matching
**/*.{js,ts,tsx,jsx,sh,md}; insert a single-line SPDX header such as
"SPDX-License-Identifier: <LICENSE>" (replace <LICENSE> with the project's SPDX
identifier, e.g., Apache-2.0 or MIT) above the existing title.

---

Nitpick comments:
In `@docs/triage-instructions.md`:
- Line 14: The sentence "Assign 1–5 labels from the provided list that best
match the content. Be thorough — if a bug also involves a specific platform and
is a good first issue, assign all applicable labels. Only skip a label if it
genuinely does not apply." overuses em-dashes; edit this sentence (and other
occurrences of the em-dash character "—") to reduce em-dash density by replacing
secondary em-dashes with commas or periods and ensuring no more than one em-dash
per paragraph (follow the "Excessive em dashes. One per paragraph is fine"
guideline), updating nearby lines that repeat the pattern to improve readability
and conform to the style rule.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 7ae3334c-9f5c-4d6b-88cd-17b95397b4dc

📥 Commits

Reviewing files that changed from the base of the PR and between 211d19f and d9d341d.

📒 Files selected for processing (2)
  • .agents/skills/nemoclaw-maintainer-triage/SKILL.md
  • docs/triage-instructions.md

@@ -0,0 +1,142 @@
---
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Add SPDX header at file top.

This source markdown file is missing the required SPDX license header.

As per coding guidelines, "**/*.{js,ts,tsx,jsx,sh,md}: Include SPDX license header in every source file."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.agents/skills/nemoclaw-maintainer-triage/SKILL.md at line 1, The SKILL.md
file is missing the required SPDX license header; add a single-line SPDX license
header at the very top of SKILL.md (for example: SPDX-License-Identifier: MIT or
the project’s chosen identifier) so the file conforms to the rule for source
files (*.md). Ensure the header is the first non-empty line in the file and
matches the project's standard SPDX identifier.

Comment thread .agents/skills/nemoclaw-maintainer-triage/SKILL.md Outdated
Comment on lines +37 to +49
**Batch mode** — user says "batch", "all unlabeled", or provides no number:

```bash
# Fetch unlabeled open issues (no labels applied yet):
gh issue list --repo NVIDIA/NemoClaw --limit 50 --json number,title,body,labels,url,author \
| jq '[.[] | select(.labels | length == 0)]'

# Fetch unlabeled open PRs:
gh pr list --repo NVIDIA/NemoClaw --limit 50 --json number,title,body,labels,url,author \
| jq '[.[] | select(.labels | length == 0)]'
```

In batch mode, work through items one at a time — present each suggestion and wait for approval before moving to the next.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Prioritization rule is unreachable with current unlabeled-only filter.

Batch mode only selects items with zero labels, but priority step 1 asks to prioritize items that already have priority: high. Those items are excluded earlier, so this branch cannot execute.

Proposed doc fix
-1. Items with `priority: high` already applied (need comment)
+1. Items indicating outage/data-loss/critical breakage in title or body (candidate for `priority: high`)

Also applies to: 139-139

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.agents/skills/nemoclaw-maintainer-triage/SKILL.md around lines 37 - 49, The
batch-mode selection currently filters to items with zero labels (the jq filter
'.labels | length == 0'), which prevents the prioritization branch that looks
for items with the label/value "priority: high" from ever running; update the
Batch mode selection logic in the "Batch mode" section so it does not exclude
labeled items (either remove or loosen the jq '.labels | length == 0' filter for
the gh issue list and gh pr list examples) or explicitly include a secondary
query that fetches labeled high-priority items before/alongside the unlabeled
set, and keep references to the "priority: high" prioritization step intact so
that the branch can execute.

Comment thread docs/triage-instructions.md Outdated
Comment on lines +1 to +128
# NemoClaw — Triage Instructions

This document is the single source of truth for AI-assisted label triage on NVIDIA/NemoClaw issues and PRs.
It is read at runtime by the `nemoclaw-maintainer-triage` CLI skill and fetched at generation time by the nvoss-velocity dashboard.

---

## Role

You are a GitHub issue and PR labeler for NemoClaw, NVIDIA's open-source agentic AI assistant framework.

For each item:

1. Assign 1–5 labels from the provided list that best match the content. Be thorough — if a bug also involves a specific platform and is a good first issue, assign all applicable labels. Only skip a label if it genuinely does not apply.
2. Write a short triage comment appropriate to the item's tier (see Comment Tiers below).

---

## Output Format

Return ONLY valid JSON — no markdown fences, no explanation:

```json
{"results": [{"number": 123, "labels": ["bug", "good first issue"], "reason": "One sentence explaining label choices.", "comment": "Comment text."}]}
```

Fields:

- `number` — the issue or PR number
- `labels` — array of label names, exactly as provided in the label list
- `reason` — one concise sentence explaining why these labels apply
- `comment` — triage comment text (see Comment Tiers)

---

## Label Assignment Rules

- Use only label names exactly as provided in the label list
- Assign 1–5 labels per item — apply every label that genuinely fits
- If a specific `enhancement: *` sub-label is assigned, do NOT also assign the bare `enhancement` label — the sub-label is sufficient
- If genuinely unclear, assign `question`

---

## Skip Labels

Never assign these — they require human judgment:

- `duplicate`
- `invalid`
- `wontfix`
- `priority: medium`
- `priority: low`
- `status: triage`
- `NV QA`

`priority: high` is allowed ONLY when the issue clearly blocks critical functionality, causes data loss, or describes a production outage — not based on the author's frustration or urgency language alone.

---

## Label Guide

Use these descriptions to match labels to issue/PR content:

- `bug`: User reports something broken — unexpected error, crash, exception, traceback, "not working", "fails", "broken", unexpected behavior
- `enhancement`: Generic enhancement — use only if none of the specific `enhancement: *` sub-types clearly apply
- `enhancement: feature`: Request for a new capability — "would be great if", "feature request", "add support for", "please add"
- `enhancement: inference`: Inference routing, model support, provider configuration
- `enhancement: security`: Security controls, policies, audit logging
- `enhancement: policy`: Network policy, egress rules, sandbox policy
- `enhancement: ui`: CLI UX, output formatting, terminal display
- `enhancement: platform`: Cross-platform support (pair with a `Platform: *` label)
- `enhancement: provider`: Cloud or inference provider support (pair with a `Provider: *` label)
- `enhancement: performance`: Speed, resource usage, memory, latency
- `enhancement: reliability`: Stability, error handling, recovery, retries
- `enhancement: testing`: Test coverage, CI/CD quality, test infrastructure
- `enhancement: MCP`: MCP protocol support, tool integration
- `enhancement: CI/CD`: Pipeline, build system, automation
- `enhancement: documentation`: Docs improvements, examples, guides
- `question`: Asking how to do something — "how do I", "is it possible", "does X support"
- `documentation`: Missing or incorrect docs, README errors, API doc gaps
- `good first issue`: Small well-scoped fix, doc typo, clear simple change — easy entry point for new contributors
- `help wanted`: Clear fix or improvement that needs a community contribution
- `security`: Auth issues, API key exposure, CVE, vulnerability, unauthorized access
- `status: needs-info`: Issue or PR has no description, no reproduction steps, or so little detail the team cannot act on it
- `priority: high`: Issue blocks critical functionality, causes data loss, or describes a production outage — apply only when the report clearly describes severe, reproducible impact
- `Platform: MacOS`: Issue specific to macOS, Mac OS X, or Apple Silicon (M1/M2/M3/M4). Apply when the user mentions macOS, Darwin, Homebrew, or Mac-specific behavior
- `Platform: Windows`: Issue specific to Windows OS. Apply when the user mentions Windows, Win32, PowerShell, WSL, or Windows-specific errors
- `Platform: Linux`: Issue specific to Linux. Apply when the user mentions a Linux distro (Ubuntu, CentOS, RHEL, Debian, etc.) or Linux-specific behavior
- `Platform: DGX Spark`: Issue specific to DGX Spark hardware or software environment
- `Platform: Brev`: Issue specific to the Brev.dev cloud environment
- `Platform: ARM64`: Issue specific to ARM64 / aarch64 architecture
- `Integration: Slack`: Issue or feature involving the Slack integration or Slack bridge
- `Integration: Discord`: Issue or feature involving the Discord integration
- `Integration: Telegram`: Issue or feature involving the Telegram integration
- `Integration: GitHub`: Issue or feature involving GitHub-specific behavior (not the repo itself)
- `Provider: NVIDIA`: Issue or feature specific to NVIDIA inference endpoints or NIM
- `Provider: OpenAI`: Issue or feature specific to OpenAI API or models
- `Provider: Anthropic`: Issue or feature specific to Anthropic / Claude models
- `Provider: Azure`: Issue or feature specific to Azure OpenAI or Azure cloud
- `Provider: AWS`: Issue or feature specific to AWS Bedrock or AWS cloud
- `Provider: GCP`: Issue or feature specific to Google Cloud / Vertex AI

---

## Comment Tiers

Items are classified as `quality_tier` or `standard_tier` before generation. This is passed in the item metadata.

- **quality_tier** (influencer author, company-affiliated author, or body > 800 chars): Write 2–3 sentences. Start with "Thanks," then naturally reference specific details from the body. Avoid "I've taken a look at", "I've reviewed", "it appears to", "I can see that" — these sound bot-generated. Write like a human maintainer giving a warm, specific response.
- **standard_tier**: Write 1 sentence acknowledging the report and mentioning the labels applied.

---

## Tone Rules (strictly enforced)

- Use "could" not "should"; use "may" not "will" — this is a first response, not a commitment
- Never say "Thanks for fixing" — say "Thanks for the proposed fix" or "Thanks for submitting this"
- Never say "Thanks for adding" — say "Thanks for the suggested addition"
- Never claim the submission accomplishes something before review
- Do not say "I'll" or "we'll"
- For issues (bugs, questions, enhancements): use "this identifies a..." or "this reports a..."
- For PRs: use "this proposes a way to..."
- For security-related items: never confirm a vulnerability is real; use neutral language
- Do NOT open with praise about detail or thoroughness. Only reference the quality of the report if the body is genuinely exceptional — multiple reproduction steps, version info, logs, and clear expected vs actual behavior. For most reports, skip the praise entirely and go straight to the triage acknowledgment.
- Do not add generic closing filler phrases
- If a "Spam signal:" line is present in the item metadata, assign only `status: needs-info` and ask for more detail politely
- If a "Note: Author also opened..." line is present, briefly acknowledge if the relationship is plausible
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Include this page in a docs toctree to fix preview build failure.

The pipeline error indicates this document is orphaned (document isn't included in any toctree), so docs preview fails until it is referenced from an index/toctree page.

🧰 Tools
🪛 GitHub Actions: Docs PR Preview

[error] 1-1: Warning, treated as error by Sphinx: document isn't included in any toctree

🪛 LanguageTool

[style] ~110-~110: This phrase is redundant. Consider writing “details”.
Context: ...with "Thanks," then naturally reference specific details from the body. Avoid "I've taken a look...

(SPECIFIC_DETAILS)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/triage-instructions.md` around lines 1 - 128, The docs build is failing
because the "NemoClaw — Triage Instructions" Markdown document is orphaned (not
referenced by any toctree); fix by adding this document to your Sphinx/Docs
toctree (insert a toctree entry that references "NemoClaw — Triage Instructions"
in the site's main index/toctree page), then re-run the docs preview build to
verify the orphan warning is resolved.

Comment thread docs/triage-instructions.md Outdated
Comment thread docs/triage-instructions.md Outdated
@@ -0,0 +1,128 @@
# NemoClaw — Triage Instructions
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Add SPDX header at the top of the document.

The file is missing the required SPDX license header.

As per coding guidelines, "**/*.{js,ts,tsx,jsx,sh,md}: Include SPDX license header in every source file."

🧰 Tools
🪛 GitHub Actions: Docs PR Preview

[error] 1-1: Warning, treated as error by Sphinx: document isn't included in any toctree

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/triage-instructions.md` at line 1, Add the required SPDX license header
as the very first line of the document "NemoClaw — Triage Instructions"
(docs/triage-instructions.md) so it conforms to the repository rule for source
files matching **/*.{js,ts,tsx,jsx,sh,md}; insert a single-line SPDX header such
as "SPDX-License-Identifier: <LICENSE>" (replace <LICENSE> with the project's
SPDX identifier, e.g., Apache-2.0 or MIT) above the existing title.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
docs/triage-instructions.md (1)

1-5: ⚠️ Potential issue | 🟠 Major

Add required frontmatter fields and SPDX header at the top.

Line 1-Line 5 still lacks the required docs metadata block (title, description, keywords, topics, tags, content type, difficulty, audience, status) and an SPDX license header after frontmatter.

Proposed patch
 ---
+title:
+  page: NemoClaw Triage Instructions
+description: Canonical AI-assisted label triage rules for NemoClaw issues and pull requests.
+keywords: [NemoClaw, triage, labels, GitHub, maintainer]
+topics: [maintenance, triage]
+tags: [docs, triage]
+content type: reference
+difficulty: intermediate
+audience: maintainers
+status: active
 orphan: true
 ---
+
+SPDX-License-Identifier: Apache-2.0

As per coding guidelines, "Frontmatter includes title, description, keywords, topics, tags, content type, difficulty, audience, and status fields." and "**/*.{js,ts,tsx,jsx,sh,md}: Include SPDX license header in every source file."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/triage-instructions.md` around lines 1 - 5, The file
docs/triage-instructions.md is missing the required YAML frontmatter and an SPDX
license header; add a top YAML block containing the fields title, description,
keywords, topics, tags, content type, difficulty, audience, and status (populate
with appropriate values for this doc) immediately after the leading --- and then
add an SPDX license header (e.g., // SPDX-License-Identifier: MIT or a Markdown
comment variant) directly after the frontmatter; ensure the frontmatter block
and SPDX header appear before any content (the existing "# NemoClaw — Triage
Instructions") so the parser and license scanner detect them.
🧹 Nitpick comments (1)
docs/triage-instructions.md (1)

114-129: Reduce em-dash density in long guidance lines (LLM pattern detected).

Line 114 and Line 129 each use multiple em dashes in one paragraph; split into shorter sentences or use commas/periods instead.

As per coding guidelines, "Excessive em dashes. One per paragraph is fine; multiple per paragraph or em dashes used instead of commas/periods should be flagged."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/triage-instructions.md` around lines 114 - 129, The two paragraphs under
the "quality_tier" bullet and the "Tone Rules" list have excessive em-dash
usage; edit the docs/triage-instructions.md content for the "**quality_tier**
(influencer author, company-affiliated author, or body > 800 chars):" bullet and
the related Tone Rules lines to remove multiple em dashes per paragraph by
splitting long sentences into shorter sentences and/or replacing extra em dashes
with commas or periods so each paragraph uses at most one em dash and reads
naturally.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/triage-instructions.md`:
- Around line 108-132: The document ending lacks the required terminal "Next
Steps" section; add a final level-2 header titled "Next Steps" at the bottom of
docs/triage-instructions.md and include a short bulleted list of relevant
internal links (e.g., linking to "Comment Tiers", "Tone Rules", contributing or
page-structure guidelines) so readers can navigate to related pages; ensure the
header text exactly matches "Next Steps" and the links use the same relative
markdown link style as the rest of the file and appear after the existing
content (as the last section).

---

Duplicate comments:
In `@docs/triage-instructions.md`:
- Around line 1-5: The file docs/triage-instructions.md is missing the required
YAML frontmatter and an SPDX license header; add a top YAML block containing the
fields title, description, keywords, topics, tags, content type, difficulty,
audience, and status (populate with appropriate values for this doc) immediately
after the leading --- and then add an SPDX license header (e.g., //
SPDX-License-Identifier: MIT or a Markdown comment variant) directly after the
frontmatter; ensure the frontmatter block and SPDX header appear before any
content (the existing "# NemoClaw — Triage Instructions") so the parser and
license scanner detect them.

---

Nitpick comments:
In `@docs/triage-instructions.md`:
- Around line 114-129: The two paragraphs under the "quality_tier" bullet and
the "Tone Rules" list have excessive em-dash usage; edit the
docs/triage-instructions.md content for the "**quality_tier** (influencer
author, company-affiliated author, or body > 800 chars):" bullet and the related
Tone Rules lines to remove multiple em dashes per paragraph by splitting long
sentences into shorter sentences and/or replacing extra em dashes with commas or
periods so each paragraph uses at most one em dash and reads naturally.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: e95ded72-6b81-480e-a6ce-e9916d6d9352

📥 Commits

Reviewing files that changed from the base of the PR and between d9d341d and ad25aeb.

📒 Files selected for processing (1)
  • docs/triage-instructions.md

Comment thread docs/triage-instructions.md
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
docs/triage-instructions.md (1)

3-3: Align the H1 with the frontmatter title value.

The H1 text and frontmatter title are not identical right now. Keep them exactly matched for docs consistency.

As per coding guidelines, "H1 heading matches the title.page frontmatter value."

Also applies to: 16-16

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/triage-instructions.md` at line 3, The H1 in docs/triage-instructions.md
must exactly match the frontmatter title.page value; update the top-level
markdown H1 header to read "NemoClaw Triage Instructions" (matching the
frontmatter title) so the H1 heading and the frontmatter title.page are
identical; ensure there are no extra whitespace, punctuation or casing
differences.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/triage-instructions.md`:
- Around line 1-11: The YAML frontmatter is missing the required difficulty
field; open the top YAML block (the --- delimited frontmatter containing title,
description, keywords, topics, tags, content_type, audience, status) and add a
difficulty entry (e.g., difficulty: beginner|intermediate|advanced) so the
frontmatter includes title, description, keywords, topics, tags, content_type,
difficulty, audience, and status; ensure the new difficulty line follows YAML
formatting and is inside the existing --- frontmatter block.
- Around line 149-150: The two local links "Maintainer Guide"
(maintainer-guide.md) and "Project Workflow" (project-workflow.md) are broken in
CI; update them to Sphinx-friendly references or correct relative paths so docs
build passes. Replace the markdown file links with Sphinx doc roles (e.g.,
:doc:`maintainer-guide` and :doc:`project-workflow`) or adjust the hrefs to the
correct relative locations where those files live, ensuring the link targets
exactly match the Sphinx source filenames used by the build.

---

Nitpick comments:
In `@docs/triage-instructions.md`:
- Line 3: The H1 in docs/triage-instructions.md must exactly match the
frontmatter title.page value; update the top-level markdown H1 header to read
"NemoClaw Triage Instructions" (matching the frontmatter title) so the H1
heading and the frontmatter title.page are identical; ensure there are no extra
whitespace, punctuation or casing differences.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 88faeb17-0b4b-4403-9ba4-1519b6c89e58

📥 Commits

Reviewing files that changed from the base of the PR and between ad25aeb and 3b75c3a.

📒 Files selected for processing (2)
  • .agents/skills/nemoclaw-maintainer-triage/SKILL.md
  • docs/triage-instructions.md

Comment thread docs/triage-instructions.md Outdated
Comment on lines +149 to +150
- [Maintainer Guide](maintainer-guide.md) — community response workflows and comment templates
- [Project Workflow](project-workflow.md) — board status semantics and label taxonomy
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Fix broken Next Steps links to restore docs checks.

Both local links currently resolve as broken in CI (maintainer-guide.md, project-workflow.md), and Sphinx treats this as an error.

As per coding guidelines, "Missing SPDX header, broken cross-references, or incorrect code block language: flag as issues."

🧰 Tools
🪛 GitHub Actions: Docs Links PR

[error] 149-149: check-docs (links): broken local link to 'maintainer-guide.md'.


[error] 150-150: check-docs (links): broken local link to 'project-workflow.md'.

🪛 GitHub Actions: Docs PR Preview

[error] 149-149: Sphinx (myst) treated as error: cross-reference target not found: 'maintainer-guide.md' (Warning, treated as error)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/triage-instructions.md` around lines 149 - 150, The two local links
"Maintainer Guide" (maintainer-guide.md) and "Project Workflow"
(project-workflow.md) are broken in CI; update them to Sphinx-friendly
references or correct relative paths so docs build passes. Replace the markdown
file links with Sphinx doc roles (e.g., :doc:`maintainer-guide` and
:doc:`project-workflow`) or adjust the hrefs to the correct relative locations
where those files live, ensuring the link targets exactly match the Sphinx
source filenames used by the build.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
docs/triage-instructions.md (2)

125-125: Split sentences onto separate lines and simplify phrasing.

Line 125 contains three sentences on a single line, which reduces diff readability. Additionally, "specific details" is redundant.

♻️ Proposed fix
-- **quality_tier** (influencer author, company-affiliated author, or body > 800 chars): Write 2–3 sentences. Start with "Thanks," then naturally reference specific details from the body. Avoid "I've taken a look at", "I've reviewed", "it appears to", "I can see that" — these sound bot-generated. Write like a human maintainer giving a warm, specific response.
+- **quality_tier** (influencer author, company-affiliated author, or body > 800 chars): Write 2–3 sentences.
+Start with "Thanks," then naturally reference details from the body.
+Avoid "I've taken a look at", "I've reviewed", "it appears to", "I can see that" — these sound bot-generated.
+Write like a human maintainer giving a warm, specific response.

As per coding guidelines, "One sentence per line in source (makes diffs readable). Flag paragraphs where multiple sentences appear on the same line."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/triage-instructions.md` at line 125, Update the **quality_tier**
guideline line to use one sentence per line and simplify wording by removing the
redundant phrase "specific details"; e.g., split the three sentences into
separate lines, keep "Write 2–3 sentences." on its own line, put "Start with
'Thanks,' then reference details from the body." on the next line, and put the
prohibition list ("Avoid 'I've taken a look at', ...") on its own line; ensure
it still instructs to "Write like a human maintainer giving a warm, specific
response."

140-140: Split sentences onto separate lines.

Line 140 contains two sentences on a single line, reducing diff readability.

♻️ Proposed fix
-- Do NOT open with praise about detail or thoroughness. Only reference the quality of the report if the body is genuinely exceptional — multiple reproduction steps, version info, logs, and clear expected vs actual behavior. For most reports, skip the praise entirely and go straight to the triage acknowledgment.
+- Do NOT open with praise about detail or thoroughness.
+Only reference the quality of the report if the body is genuinely exceptional — multiple reproduction steps, version info, logs, and clear expected vs actual behavior.
+For most reports, skip the praise entirely and go straight to the triage acknowledgment.

As per coding guidelines, "One sentence per line in source (makes diffs readable). Flag paragraphs where multiple sentences appear on the same line."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/triage-instructions.md` at line 140, The line containing "Do NOT open
with praise about detail or thoroughness. Only reference the quality of the
report..." should be split so each sentence is on its own line to improve diff
readability; edit the text in docs/triage-instructions.md (the sentence starting
"Do NOT open with praise..." and the following sentence starting "Only reference
the quality...") so they become two separate lines, preserving punctuation and
meaning, and ensure the file follows the "one sentence per line" guideline for
similar paragraph entries.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/triage-instructions.md`:
- Around line 1-11: Add the missing required frontmatter key "difficulty" to the
YAML frontmatter block at the top of the document; update the frontmatter (the
existing keys like title, description, keywords, topics, tags, content_type,
audience, and status) to include a difficulty entry with an appropriate value
(e.g., "beginner", "intermediate", or "advanced") so the document conforms to
the docs structure requirements and the nemoclaw-maintainer-triage CLI/dashboard
ingestion.

---

Nitpick comments:
In `@docs/triage-instructions.md`:
- Line 125: Update the **quality_tier** guideline line to use one sentence per
line and simplify wording by removing the redundant phrase "specific details";
e.g., split the three sentences into separate lines, keep "Write 2–3 sentences."
on its own line, put "Start with 'Thanks,' then reference details from the
body." on the next line, and put the prohibition list ("Avoid 'I've taken a look
at', ...") on its own line; ensure it still instructs to "Write like a human
maintainer giving a warm, specific response."
- Line 140: The line containing "Do NOT open with praise about detail or
thoroughness. Only reference the quality of the report..." should be split so
each sentence is on its own line to improve diff readability; edit the text in
docs/triage-instructions.md (the sentence starting "Do NOT open with praise..."
and the following sentence starting "Only reference the quality...") so they
become two separate lines, preserving punctuation and meaning, and ensure the
file follows the "one sentence per line" guideline for similar paragraph
entries.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 6988005a-5800-4fbd-b8ce-e5542c8e257f

📥 Commits

Reviewing files that changed from the base of the PR and between 3b75c3a and 128323d.

📒 Files selected for processing (1)
  • docs/triage-instructions.md

Comment thread docs/triage-instructions.md
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
docs/triage-instructions.md (1)

1-11: ⚠️ Potential issue | 🟠 Major

Add the missing difficulty frontmatter field.

The docs frontmatter is still missing difficulty, which is required for docs/**/*.md pages.

Proposed fix
 ---
 orphan: true
 title: "NemoClaw Triage Instructions"
 description: "AI-assisted label triage instructions for NVIDIA/NemoClaw issues and PRs. Single source of truth for the nemoclaw-maintainer-triage CLI skill and the nvoss-velocity dashboard."
 keywords: triage, labels, issues, pull requests, maintainer
 topics: [maintainer, triage, labels]
 tags: [maintainer, triage]
 content_type: reference
+difficulty: advanced
 audience: maintainers
 status: active
 ---

As per coding guidelines, "Frontmatter includes title, description, keywords, topics, tags, content type, difficulty, audience, and status fields."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/triage-instructions.md` around lines 1 - 11, The frontmatter block at
the top of the document is missing the required "difficulty" field; update the
YAML frontmatter (the leading --- block containing title, description, keywords,
topics, tags, content_type, audience, status) to include a difficulty key (e.g.,
difficulty: beginner|intermediate|advanced) appropriate for the page so it
conforms to the docs frontmatter schema.
🧹 Nitpick comments (1)
docs/triage-instructions.md (1)

3-16: Align the H1 text with the frontmatter title exactly.

title and the H1 currently differ (NemoClaw Triage Instructions vs NemoClaw — Triage Instructions). Keep them identical to satisfy page-structure consistency.

As per coding guidelines, "H1 heading matches the title.page frontmatter value."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/triage-instructions.md` around lines 3 - 16, Update the document so the
H1 heading exactly matches the frontmatter title value "NemoClaw Triage
Instructions": change the H1 text currently reading "NemoClaw — Triage
Instructions" to "NemoClaw Triage Instructions" so the frontmatter `title` and
the H1 are identical; ensure no extra punctuation or em dash remains and
preserve the rest of the content and frontmatter unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@docs/triage-instructions.md`:
- Around line 1-11: The frontmatter block at the top of the document is missing
the required "difficulty" field; update the YAML frontmatter (the leading ---
block containing title, description, keywords, topics, tags, content_type,
audience, status) to include a difficulty key (e.g., difficulty:
beginner|intermediate|advanced) appropriate for the page so it conforms to the
docs frontmatter schema.

---

Nitpick comments:
In `@docs/triage-instructions.md`:
- Around line 3-16: Update the document so the H1 heading exactly matches the
frontmatter title value "NemoClaw Triage Instructions": change the H1 text
currently reading "NemoClaw — Triage Instructions" to "NemoClaw Triage
Instructions" so the frontmatter `title` and the H1 are identical; ensure no
extra punctuation or em dash remains and preserve the rest of the content and
frontmatter unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: a05e08f5-be63-4a9e-8666-500b3eaadce7

📥 Commits

Reviewing files that changed from the base of the PR and between 128323d and e7d9fdf.

📒 Files selected for processing (1)
  • docs/triage-instructions.md

wscurran and others added 2 commits April 14, 2026 14:40
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@cv
Copy link
Copy Markdown
Contributor

cv commented Apr 14, 2026

Still some nits from coderabbit, but none blocking imho

@wscurran wscurran enabled auto-merge (squash) April 14, 2026 22:22
@cv cv merged commit 3b4db73 into main Apr 14, 2026
10 checks passed
@cv cv deleted the feat/triage-skill branch April 14, 2026 23:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

project management Use this label for meta-issues about project governance and community processes.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants