| name | detect-stale |
| description | Scans open feature requests for a WooCommerce Marketplace product and flags stale ones (opened more than 3 years ago with 2 or fewer votes). Groups them semantically, proposes tailored closing comments per group (with workarounds/plugins where known), then closes approved ones. Use when asked to find or clean up stale/old/low-vote feature requests on WooCommerce.com. |
Detect Stale Feature Requests
A request is stale when opened more than 3 years ago with 2 votes
or fewer.
Read first:
.claude/skills/shared/RULES.md
.claude/skills/shared/DISPLAY.md
.claude/skills/shared/PHASE_LOOP.md
Step 1 โ Resolve the product
Follow .claude/skills/shared/RESOLVE_PRODUCT.md.
Step 2 โ Fetch all open feature requests
Skip this step if invoked by the orchestrator. Read FRs from
input_path as JSONL.
Call wccom-feature-requests-list with product_id: <id>,
status: "publish", per_page: 100. Paginate. Collect id, title,
description, status, votes, date, url.
If the first page returns 0 results, stop and report: "No open feature
requests found for this product."
Step 3 โ DETECTION STARTS HERE โ Identify stale requests
(Orchestrator subagent: begin reading from this step.)
Compute today's date. A request is stale if both are true:
date is more than 3 years before today.
votes is 2 or fewer.
Assign confidence per RULES.md:
- High โ clean stale pattern (no recent comment activity, no signal of
ongoing interest)
- Low โ borderline (e.g. recent engagement, comments, or borderline age)
If no requests meet the criteria, report that and stop.
Step 4 โ Group stale requests semantically
Cluster the stale FRs into 3โ7 named groups by feature area or theme (e.g.
"Checkout & Cart", "Email Notifications", "Reporting", "Shipping",
"Integrations"). Each FR belongs to exactly one group. Outliers go to
Other.
Decode HTML entities before showing titles. Translate non-English titles per
RULES.md.
Present:
## Stale Feature Requests โ [Product Name]
[X] open requests scanned ยท [Y] stale (opened >3 years ago, โค2 votes) ยท [N] groups
[A] [Group name] โ N request(s)
[B] [Group name] โ N request(s)
[C] Other โ N request(s)
...
Which group would you like to start with? Reply with a letter, or N to skip this phase entirely.
Flagged record schema (for orchestrator output JSONL)
{ "id": <int>, "title": "<str>", "url": "<str>",
"reason": "<one sentence>", "confidence": "High" | "Low",
"excerpt": "<first 1โ3 sentences>",
"votes": <int>, "date": "<YYYY-MM-DD>",
"group_label": "<group name>",
"suggestion_kind": "completed" | "workaround" | "standard",
"suggestion_text": "<one-sentence rationale>",
"suggested_comment": "<full plain-text comment to post>" }
Step 5 โ Work through a group
Repeat 5aโ5d per group the user chooses.
5a โ Show full group details with per-FR suggestions
If a group has >20 FRs, paginate within the group per DISPLAY.md.
For each FR, reason about whether a workaround, alternative plugin, or
built-in setting addresses it. Apply these rules strictly:
Plugins: Only recommend a plugin if all three are true:
- Listed on woocommerce.com/products/โฆ
- Developed by WooCommerce or Automattic (check the "by" line)
- Not retired or discontinued
Settings / docs: Only mention a built-in setting if explicitly described
in official WooCommerce documentation. No inference. When a built-in
already addresses the FR, label the suggestion "โ mark as completed" โ
these use the completed workflow (completed comment + status "completed").
Code / customizations / snippets: Only suggest if spelled out verbatim
in official docs. No improvised solutions.
Third-party plugins: Never recommend.
If none of the above applies: "standard close".
Display:
## Group [X]: [Group Name] ([N] requests)
[1]. ID [id] โ "[title]"
[votes] vote(s) ยท opened [date]
[url]
"[description โ first 2โ3 sentences, trimmed if long]"
๐ก Suggestion: [plugin workaround] OR [built-in โ mark as completed] OR [standard close]
5b โ Confirmation menu
Which requests in this group should I close?
[1] "[short title]" ([N] votes ยท opened YYYY-MM-DD)
[2] "[short title]" ([N] votes ยท opened YYYY-MM-DD)
...
[A] All of the above
[H] High confidence only โ omit if no High items (see RULES.md)
[N] None / skip group
Reply with numbers (e.g. "1 3"), A for all, H for High only, or N to skip.
Wait for the user's reply.
5c โ Preview and confirm
Plain text only (see RULES.md).
Draft each comment using its ๐ก Suggestion:
Completed variant (built-in setting / existing feature):
Hi there,
Thank you for your suggestion!
Great news! This is already supported by [product_name]. [specific setting or feature description, one sentence].
Therefore, I am marking this request as completed. If you need help setting this up, our support team is happy to assist at https://woocommerce.com/contact-us/
Standard variant:
Hi there,
Thanks so much for taking the time to share this.
After reviewing, we've decided to close this one for now. It's been open for a while without gathering broader demand from other users, and we aim to prioritize the features that will benefit the largest portion of our community.
If you still need this functionality, our support team would be happy to help you explore your options at https://woocommerce.com/contact-us/
If this becomes a more widely-requested feature down the road, we're always open to revisiting it.
Thanks again for your suggestion!
Workaround variant (plugin recommendation):
Hi there,
Thanks so much for taking the time to share this.
After reviewing, we've decided to close this one for now. It's been open for a while without gathering broader demand from other users, and we aim to prioritize the features that will benefit the largest portion of our community.
In the meantime, [specific plugin] may cover what you're looking for. Our support team can also help you find the best approach for your setup at https://woocommerce.com/contact-us/
If this becomes a more widely-requested feature down the road, we're always open to revisiting it.
Thanks again for your suggestion!
Render previews:
๐ Comment preview โ ID [id] โ "[title]" [will be marked completed / closed]
---
[full comment text]
---
After all previews: "Post these comments and action the requests? (Y / N)"
If N, abort.
5d โ Execute
For each approved request, in order:
- Post comment via
wccom-feature-requests-comment.
- Update status via
wccom-feature-requests-update-status:
"completed" if suggestion was "โ mark as completed"
"closed" otherwise
- Write failure handling โ see
RULES.md pattern: on failure, do not
record as actioned; report in summary; continue.
Print:
โ ID [id] โ "[title]": completed
โ ID [id] โ "[title]": closed
โ ๏ธ ID [id] โ "[title]": failed โ [error]
Group summary:
Group [X] done. N completed, M closed, F failed.
Step 6 โ Navigate to the next group
Which group would you like to go to next?
[B] [Group name] โ N request(s)
[C] Other โ N request(s)
...
[S] Skip to next phase
Reply with a letter, or S (or "skip") to move on.
Loop to Step 5. When all groups done, proceed to Step 7.
Step 7 โ Phase summary
Done.
โ
Completed: ID [id] โ "[title]" ([votes] vote(s) ยท opened [date])
[url]
โ Closed: ID [id] โ "[title]" ([votes] vote(s) ยท opened [date])
[url]
โ ๏ธ Failed: ID [id] โ "[title]" โ [error]
One line per actioned FR (completed first, then closed, then failed), then:
N completed, M closed, F failed.
Then follow PHASE_LOOP.md.