.agents/skills/triage/verify.md
Verify whether a GitHub issue describes an actual bug or a misunderstanding of intended behavior.
CRITICAL: You MUST always read report.md and append to report.md before finishing, regardless of outcome. Even if you cannot reach a conclusion — always update report.md with your findings. The orchestrator and downstream skills depend on this file to determine what happened.
SCOPE: Your job is verification only. Finish your work once you've completed this workflow. Do NOT go further than this (no fixing of the issue, etc.). Do not spawn tasks/sub-agents.
These variables are referenced throughout this skill. They may be passed as args by an orchestrator, or inferred from the conversation when run standalone.
triageDir — Directory containing the reproduction project (e.g. triage/issue-123). If not passed as an arg, infer from previous conversation.issueDetails - The GitHub API issue details payload. This must be provided explicitly by the user or available from prior conversation context / tool calls. If this data isn't available, you may run gh issue view ${issue_number} to load the missing issue details directly from GitHub.report.md — File in triageDir that MAY exist. Contains the full context from all previous skills.withastro/compiler repo MAY be cloned at .compiler/ (inside the repo root, gitignored). If it exists, treat it as in-scope when researching intent. Some behaviors originate in the compiler — check .compiler/ for comments, explicit handling, and git blame when the issue involves HTML parsing, .astro file transformation, or compiler output.report.mdRead the issue (from report.md or directly from GitHub) and extract two things:
The expected behavior is the claim you are verifying. Your job is to determine whether it is correct (a real bug) or a misunderstanding of how Astro is designed to work.
Investigate whether the current behavior is intentional. Use multiple sources, and do not assume the reporter is correct. The reporter may be wrong about what Astro should do.
Search the Astro docs for relevant pages. Does the documentation describe or imply the current behavior? Does it promise the behavior the reporter expects?
Look at the relevant source code in packages/. Pay close attention to:
If report.md identifies specific files and line numbers, run git blame on the relevant lines to find the commit that introduced the behavior. Then read the full commit message with git show --no-patch <commit> and review the associated PR if referenced. You can fetch PR details with gh pr view <number>. A commit message, PR description, or PR comment from the author explaining the rationale is strong evidence of intentional design.
Search for prior issues and PRs that discuss the same behavior using the GitHub API. This can reveal whether the behavior was previously discussed, intentionally introduced, or already reported and closed as "not a bug."
# Search issues for keywords related to the reported behavior
gh search issues "<keywords>"
# Search PRs that may have introduced or discussed the behavior
gh search prs "<keywords>"
# Read a specific issue for context
gh issue view <number> --comments
# Read a specific PR for context
gh pr view <number> --comments
If you find a closed issue where a maintainer explained why the behavior is intentional, or a PR that deliberately introduced it, that is strong evidence of intended behavior.
This is the most important and most error-prone step. For triage purposes, the definitions are:
The key question is not "does the developer like this behavior?" but rather "did the developer know about and choose this behavior?" If the answer is yes, it is not a bug — it is a known limitation, a trade-off, or a deliberate design choice. The reporter may have a valid request to improve it, but that is an enhancement, not a bug fix.
Ask yourself:
if branch, a special case, a guard clause), the behavior is likely intentional.Common mistakes to avoid:
Based on your research, assign one of three verdicts:
The developer was not aware of this behavior, or did not choose it. Evidence:
The developer was aware of this behavior and chose to ship it. Evidence:
Note: This verdict does not mean the reporter's concern is invalid. It may still be worth improving the behavior — but that is a feature request or enhancement, not a bug fix. A known limitation is an enhancement opportunity, not a defect.
You cannot confidently determine intent. This might happen when:
When unclear, lean toward "unclear" rather than guessing. It is better to flag uncertainty than to misclassify.
Rate your confidence as:
Append your verification findings to report.md.
Include a new section with:
bug, intended-behavior, or unclearhigh, medium, or lowintended-behavior: explain the design rationale and note that the reporter's concern could be reframed as a feature request or enhancementbug: explain why the developer was not aware of or did not choose this behaviorunclear: explain what evidence is missing and what would resolve the ambiguity