Groom a single GitHub issue — produce an implementation spec and optionally post the grooming summary as a GitHub comment. Standalone entry point for the grooming-agent.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add wp-media/wp-rocket --skill groom --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Groom?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/wp-media-groom)More formats (shields.io, HTML) on the badges page.
---
name: groom
description: Groom a single GitHub issue — produce an implementation spec and optionally post the grooming summary as a GitHub comment. Standalone entry point for the grooming-agent.
argument-hint: <issue-number>
---
# Groom
Standalone grooming for a single issue. Runs the full grooming analysis and writes the spec
to disk. Posting to GitHub is your choice — you are prompted at the end.
## Step 1 — Config
This skill targets `wp-media/wp-rocket`. The issue and spec files live at the wp-rocket
temp convention:
- Issue file: `.TemporaryItems/Issues/wp-rocket/issues/<N>.md`
- Spec file: `.TemporaryItems/Issues/wp-rocket/issues/<N>-spec.md`
## Step 2 — Sync the issue
Ensure the issue file exists at `.TemporaryItems/Issues/wp-rocket/issues/<N>.md`. Run:
```bash
bash .claude/skills/issue-workflow/scripts/issue-sync.sh <N>
```
If the file already exists and is recent (less than 5 minutes old), skip the sync.
## Step 3 — Invoke the grooming agent
Invoke the `grooming-agent` sub-agent with the following invocation context:
> Issue number: `<N>`
> Issue file path: `.TemporaryItems/Issues/wp-rocket/issues/<N>.md`
> Repo: `wp-media/wp-rocket`
> complexity_signal: derive from the issue content yourself
>
> **STANDALONE MODE** — two differences from the normal pipeline run:
> 1. **Skip Step 5 (posting to GitHub).** Instead, include the full comment body you would
> have posted in a section titled `## Grooming Comment Draft` at the end of your response.
> Use exactly the same format the pipeline would post (including the
> `<!-- ai-pipeline:grooming-plan -->` marker), so it is ready to post as-is.
> 2. **Skip the StructuredOutput JSON return.** Return a short human-readable summary instead:
> effort, risk, complexity, and any open questions.
The spec file is still written to `.TemporaryItems/Issues/wp-rocket/issues/<N>-spec.md` as normal.
## Step 4 — Offer to post
After the agent responds, display its `## Grooming Comment Draft` to the user, then ask:
> **Post this as a comment on issue #\<N\>?**
> Reply `yes` to post as-is, `no` to finish without posting, or paste edited text to post a
> modified version.
**If yes** — check for an existing grooming comment first (dedup):
```bash
EXISTING_ID=$(gh api repos/wp-media/wp-rocket/issues/<N>/comments \
--jq '[.[] | select(.body | contains("<!-- ai-pipeline:grooming-plan -->"))] | last | .id // empty')
```
Update with `gh api --method PATCH repos/wp-media/wp-rocket/issues/comments/$EXISTING_ID` if found, otherwise post a new comment.
**If no** — confirm the spec was written to `.TemporaryItems/Issues/wp-rocket/issues/<N>-spec.md` and finish.
**If edited** — use the user-provided text as the comment body and post.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!