npx skills add ...
npx skills add nvidia/warp --skill warp-closing-issue
Use when the user provides Warp commit SHA(s) and GitHub issue number(s) to assess, draft issue comments, post progress updates, or recommend whether issue threads should stay open or close.
npx skills add nvidia/warp --skill warp-closing-issue
Assess user-supplied Warp commits against user-supplied GitHub issues. Produce a scoped assessment and draft comment first; public GitHub writes require explicit confirmation after the user sees the exact target issues and comment body.
changelog/*.md fragments as the editable source of pending changelog
intent. Treat generated CHANGELOG.md sections as released history or
release-build metadata, never as behavioral fix evidence by themselves.close, comment-only,
keep open, and no public update.gh api -f body=@file
or gh api --raw-field body=@file; these forms can send @file
literally. Use gh issue comment --body-file <file> for new issue
comments, or gh api --input <json> for PATCH/non-issue-comment writes.WARP_CACHE_PATH,
/tmp/..., local worktree paths, or shell setup.### Follow-up to consider. Include the section only when the assessment found a specific improvement, and distinguish non-blocking follow-ups from gaps that prevent closure.Optional command snippets live in commands.md. Prefer the
GitHub app/MCP connector when it fits; gh is installed and authenticated here and is
fine for gaps or simple issue operations.
Resolve scope. Record supplied commits, issues, and requested outcome, if any: closure assessment, progress update, comment only, or unspecified. If one supplied commit contains all others, use the newest such commit as the assessed head. For disjoint histories, inspect each commit tree separately and do not invent a combined fragment view.
Gather evidence. For each issue, extract author, author association, reported
symptoms, reproducers, expected behavior, follow-up comments, maintainer asks, and
current state. For each commit, inspect message, diff, tests, docs, changelog
fragments, generated changelog changes, and touched areas such as warp/native/.
For every touched fragment:
changelog/README.md and validate the identifier, category, optional
counter, and content. A numeric filename identifies a GitHub issue and
Towncrier generates its link; the fragment text should not repeat it.CHANGELOG.md.
When the issue or commit appears to change public API behavior, inspect the
relevant code, docs, tests, source fragments, rendered entry, and historical
changelog for intended API surface and examples.Classify commits.
| Type | Meaning |
|---|---|
| Behavioral fix | Changes the code path behind the issue. |
| Test-only | Adds confidence, but cannot close by itself. |
| Docs/changelog-only | Source fragments or generated release metadata; supporting context, not fix evidence. |
| Follow-up | Completes or corrects earlier issue-linked work. |
| Beyond scope | Related cleanup or broader behavior worth surfacing. |
Map requirements. For each issue requirement, state commit evidence, test coverage evidence, behavioral probe evidence if available, and status: addressed, partial, or missing.
Assess public API behavior. If the issue or commit changes public API surface or behavior, identify:
warp.@wp.kernel / @wp.func.Review tests. Inspect the supplied commits for test changes. Use unordered bullets in the assessment/comment:
You may still run committed tests when useful, but prefer probes that add issue
specific signal beyond "the merged tests pass." Follow Warp policy locally:
unique WARP_CACHE_PATH, uv run, and rebuild native
libraries when warp/native/ changes require it. Do not put local verification
commands in the public issue comment.
Probe issue-shaped behavior. When the issue has a repro, expected behavior, or clear boundary conditions, create one or more temporary scripts that exercise the reported behavior on the supplied commit/worktree. These are transient working artifacts; do not add them to the repo unless the user explicitly asks.
Prefer probes that:
uv run and a unique WARP_CACHE_PATH for Warp commands.Avoid probes that:
Classify probe results in the private assessment:
passes: supports closure or progress assessment.fails in scope: blocks closure or changes recommendation to comment-only
/ keep open.inconclusive: mention as residual risk, but do not overstate it.not run: explain why, such as unavailable hardware, excessive cost, or
insufficient repro detail.Decide action.
close: every reported symptom and expected behavior is addressed, relevant
comments are covered, test coverage is adequate or the lack of tests is
reasonable for the change, and behavioral probes pass or were not feasible for
a defensible reason.comment-only: supplied commits are relevant progress, but the issue should remain
open.keep open: gaps remain and a public comment would not add value.no public update: commits are peripheral, speculative, or already covered.Include a requester-verification recommendation. If the issue author appears external to NVIDIA, prefer a resolution/progress comment that leaves the issue open so they can verify. If the issue author matches the current requesting user, closure is appropriate once the requirements are addressed; verify that identity from local user guidance, GitHub authenticated user data, or explicit user input rather than hardcoding a username.
Draft before writing. Output:
For closure, start with:
For progress/comment-only updates, start with:
Then explain what changed in issue terms, mention supporting commits if useful, and state whether the issue should remain open. Mention docs/changelog-only commits only as supporting metadata. If leaving an externally filed issue open for requester verification, say that directly. Drop empty sections.
Use level-three headings for named public sections:
Leave one blank line between each level-three heading and its following paragraph, list, or code block.
### Public API behavior: include only for relevant public API behavior.### Test coverage: always include.### Behavioral verification: include only when executed public probe results materially clarify the outcome, risk, or requester-facing behavior; do not add it solely to say that no probe was feasible.### Follow-up to consider: include only for actionable, issue-related future work found during assessment; do not add it for a concern already fully handled in another required section.Include test coverage as unordered bullets. Name changed test files and test functions. If no tests changed, say whether that is reasonable for the commit type or a potential oversight.
When public API behavior is relevant, include ### Public API behavior before test coverage. Prefer prose bullets for small changes. Use short code blocks only when they make scope clearer. Use Public API behavior, not Public API surface, when APIs already existed and the commit expands or fixes their behavior.
Suitable items from private Spotted Improvements become public follow-ups only when they do not duplicate a concern fully handled in another required section. Follow-ups may cover test coverage, refactoring, features, bug fixes, documentation, or maintainability; do not add unrelated wish lists or invented work. State explicitly when a follow-up does not block closure.
Split examples by scope when both Python and kernel APIs are involved. Python
scope includes constructors, host-side functions, arguments, configuration, and
exceptions. Kernel scope includes Warp builtins that must be called from
@wp.kernel / @wp.func. For example:
Behavioral probe summaries are required in the private assessment. In the public comment, mention probes only when they clarify the outcome, explain residual risk, or help the requester verify the fix. When included publicly, summarize checked behavior and result without local commands, cache paths, temp paths, or worktree paths.
Write in a factual maintainer voice, usually third person: "The change updates...", "Coverage was added...". Keep wording direct and precise, adding detail when it clarifies impact, scope, test coverage, remaining gaps, beyond-scope work, or follow-up. Do not restate the commit message mechanically; use the comment to augment the commit with issue-specific context.
After explicit confirmation, post the issue-specific comment. For each posted or edited comment, fetch the comment by ID and verify the public body matches the reviewed draft before closing anything. Close only issues that were both recommended for closure and explicitly confirmed for closure. Verify final GitHub state and report comment IDs, URLs, state, state reason, and close time.
If any write fails, stop and report the exact failure. Do not retry against a different issue by guess.
warp/native/ and rebuild state was not considered./tmp/, WARP_CACHE_PATH, or local paths.gh api write uses -f body=@file or --raw-field body=@file
instead of gh issue comment --body-file or gh api --input.### Follow-up to consider, or presents a non-blocking follow-up as a closure blocker.When editing the Codex-side project skill, sync the mirrored Claude copy before committing: