.claude/skills/guidance-grooming/SKILL.md
Use after selecting a documentation issue from the doc-queue to groom it - analyzes the issue, identifies gaps, prompts the designer for clarity, and posts a structured grooming comment so the issue is ready for the writing-vads-guidance skill or an async agent
npx skillsauth add department-of-veterans-affairs/vets-design-system-documentation guidance-groomingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Groom a documentation or guidance issue so it contains everything needed for a writer (human or agent) to complete it without further clarification. This skill bridges issue selection (doc-queue) and documentation writing (writing-vads-guidance) by turning vague or incomplete issues into well-scoped, actionable work items.
Announce at start: "I'm using the guidance-grooming skill to analyze this issue and make sure it's ready to work on."
Called by: doc-queue (after Step 2: Select Issue from Queue) Hands off to: writing-vads-guidance (when grooming is complete and user is ready to write)
Trigger phrases:
gh issue view <ISSUE_NUMBER> --repo department-of-veterans-affairs/vets-design-system-documentation \
--json title,body,labels,comments,assignees,createdAt,milestone | cat
Determine the content type to set the right expectations:
| Signal | Content Type |
|--------|-------------|
| va-* label or component name in title | Component |
| pattern label or "pattern" in title | Pattern |
| template label or "template" in title | Template |
| content-style-guide label | Content Style Guide |
| foundation label | Foundation |
| accessibility label only | Accessibility |
| None of the above | Ask the user |
# For components
find src/_components -iname "*<component-name>*" -type f
# For patterns
find src/_patterns -iname "*<keyword>*" -type f
# For broader searches
grep -rl "<keyword>" src/_components/ src/_patterns/ src/_templates/ --include="*.md" | head -20
For each file identified, read the current content to understand:
# Read the file
cat src/_components/<name>/index.md
# Also read the relevant template for comparison
cat src/_components/template.md # or src/_patterns/template.md, etc.
# Related issues
gh issue list --repo department-of-veterans-affairs/vets-design-system-documentation \
--search "<component-or-topic> in:title,body" \
--state all \
--json number,title,state \
--limit 10 | cat
# Check component-library for technical details (if component)
# Look at Storybook stories, component props, etc.
For every documentation issue, the following must be clear before writing can begin. Check each item against the issue body, comments, and labels:
va-alertask-users-for or help-users-to?Classify each missing item:
| Classification | Action | |---------------|--------| | Resolvable from codebase | Agent can fill in by reading files, Storybook, or component-library | | Resolvable from issue context | Buried in comments or linked issues — extract and confirm | | Needs designer input | Must ask the user — cannot be inferred | | Blocked | Requires external action (e.g., component not yet built) |
Only ask about items classified as "Needs designer input." Batch questions to minimize back-and-forth.
Format questions as:
I've analyzed issue #[NUMBER] and have a few questions before we can start writing:
1. **[Topic]**: [Specific question with context about why it matters]
- Option A: [suggestion]
- Option B: [alternative]
2. **[Topic]**: [Question]
3. **[Topic]**: [Question]
Scope questions:
Content questions:
Design decision questions:
[status]. Should it stay the same or change?"Source of truth questions:
Capture all answers — they will be included in the grooming comment.
Once all gaps are resolved, post a structured comment on the issue. This comment serves as the work order for the writing-vads-guidance skill or a future async agent.
Write the comment body to a temp file and use --body-file to avoid shell escaping issues with markdown content. See AGENTS.md for details.
# Write the grooming comment to a temp file
cat > /tmp/grooming-comment.md << 'GHEOF'
<COMMENT_BODY>
GHEOF
# Post using --body-file and capture the comment URL
gh issue comment <ISSUE_NUMBER> --repo department-of-veterans-affairs/vets-design-system-documentation --body-file /tmp/grooming-comment.md
After posting, retrieve and store the comment ID for future edits:
# Get the grooming comment ID (find the comment starting with "## Grooming Summary")
COMMENT_ID=$(gh api /repos/department-of-veterans-affairs/vets-design-system-documentation/issues/<ISSUE_NUMBER>/comments \
--jq '.[] | select(.body | startswith("## Grooming Summary")) | .id' | tail -1)
echo "Grooming comment ID: $COMMENT_ID"
IMPORTANT: When corrections or clarifications arise after posting the grooming comment, always edit the original comment rather than posting a follow-up. This ensures the grooming comment remains a single, authoritative work order — especially critical for async agents that read the comment as their instructions.
# Write updated content to temp file
cat > /tmp/grooming-comment.md << 'GHEOF'
<UPDATED_COMMENT_BODY>
GHEOF
# Edit the existing comment in-place
gh api --method PATCH /repos/department-of-veterans-affairs/vets-design-system-documentation/issues/comments/$COMMENT_ID \
-F body=@/tmp/grooming-comment.md
When to edit vs. when to post a new comment:
Comment template:
## Grooming Summary
> This issue has been groomed and is ready for documentation work.
### Summary
[2-3 sentences describing what needs to happen and why. Be specific enough that someone unfamiliar with the issue history could understand the task.]
### Content type
[Component / Pattern / Template / Content Style Guide / Foundation / Accessibility]
### Scope
[Small / Medium / Large]
- **Small**: Single file, minor text changes, adding a note or link
- **Medium**: Multiple sections or files, new examples needed, restructuring a section
- **Large**: New page creation, significant content overhaul, multiple cross-references
### Files to update
| File | Action | Details |
|------|--------|---------|
| `src/_components/[name]/index.md` | Update | [Which sections, what changes] |
| `src/_patterns/[category]/[name].md` | Create | [New file following template] |
### Changes to make
For each file, describe the specific changes:
**`[file path]`**
- [ ] [Specific change 1 — e.g., "Add 'When not to use' section with guidance about X"]
- [ ] [Specific change 2 — e.g., "Update Storybook embed to include new variant Y"]
- [ ] [Specific change 3]
### Reference material
- **Figma**: [URL or "N/A"]
- **Storybook**: [URL or story name]
- **Component library source**: [URL if relevant]
- **Related issues**: #[number], #[number]
- **Existing documentation**: [URL to current live page]
### Design decisions
[Decisions made during grooming that the writer should follow. If none, write "None — follow existing patterns."]
- [Decision 1 — e.g., "Omit mobile section — no mobile variant exists"]
- [Decision 2 — e.g., "Use same structure as Alert component for consistency"]
### Acceptance criteria
- [ ] [Criterion 1 — e.g., "Usage section includes when-to-use and when-not-to-use guidance"]
- [ ] [Criterion 2 — e.g., "Storybook preview embeds render correctly"]
- [ ] [Criterion 3 — e.g., "All component cross-references are hyperlinked"]
- [ ] Site builds without errors
- [ ] Content follows VADS style standards
### Out of scope
[Items explicitly excluded from this issue. Helps prevent scope creep.]
- [Item 1 — e.g., "Component library code changes"]
- [Item 2 — e.g., "Mobile app documentation"]
gh issue edit <ISSUE_NUMBER> --repo department-of-veterans-affairs/vets-design-system-documentation --add-label "groomed"
Note: If the groomed label doesn't exist yet, create it:
gh label create "groomed" --repo department-of-veterans-affairs/vets-design-system-documentation \
--description "Issue has been groomed and is ready for documentation work" \
--color "0E8A16"
Present the grooming summary to the user and ask:
Question: "This issue is now groomed. Would you like to:"
The Copilot coding agent can work on groomed issues asynchronously. The agent reads .github/copilot-instructions.md, which contains step-by-step instructions for processing groomed issues.
To assign the issue to Copilot:
# Assign to Copilot
gh issue edit <ISSUE_NUMBER> --repo department-of-veterans-affairs/vets-design-system-documentation --add-assignee "copilot"
What happens next:
.github/copilot-instructions.md to read writing standardsImportant: Remind the user that draft PRs from agents should be reviewed carefully, especially for:
Confirm:
groomed label is appliedIf the issue body is empty or provides almost no context:
If grooming reveals the issue is blocked by:
Action:
blocked labelIf the issue body, comments, and codebase contradict each other:
If analyzing the issue reveals it should be split:
Before posting the grooming comment, verify:
| Content Type | Template Path | Key Sections |
|-------------|---------------|---------------|
| Component | src/_components/template.md | Examples, Usage, Behavior, Code Usage, Content, Accessibility |
| Pattern | src/_patterns/template.md | Examples, Usage, How to design and build, Code, Content, Accessibility |
| Template | src/_templates/template.md | About, Usage, Structure, Variations, Content, Accessibility |
| Scope | Typical Changes | Estimated Effort | |-------|----------------|-----------------| | Small | Fix typo, add a link, update a note | < 30 minutes | | Medium | Add/rewrite a section, add examples, update multiple sections | 30 min – 2 hours | | Large | New page, major restructure, cross-cutting changes | 2+ hours |
documentation
Use when making documentation changes in the doc-queue workflow, writing new component/pattern/template guidance, or updating existing VADS documentation - ensures compliance with VADS templates and style standards
testing
Creates and standardizes Mermaid decision flowcharts in VA Design System documentation, including templates, node types, accessibility alternatives, and the standard Jekyll include pattern.
testing
Use when the user wants to merge all PRs they have approved - updates each branch from main, waits for CI checks to pass, merges, then summarizes results
documentation
Use when a designer asks to work on guidance or documentation issues, process documentation queue, or close out doc tickets - fetches oldest issue from quarterly epic and guides through resolution