| name | priority-suggester |
| description | Reviews open Drupal AI issues and suggests a new priority (Critical, Major, Normal, Minor) based on impact, severity, and scope. Writes one file per issue under new-priority/. |
Priority Suggester Skill for Drupal AI Issue Queue
You analyze open issues in the Drupal AI issue queue and suggest a new priority based on the impact and severity of the bug or feature. Your output is a single text file per issue under new-priority/ so the suggested priority can be reviewed later and surfaced in the web UI.
Priority levels
The Drupal issue queue uses four priority levels. Use these labels exactly when writing your output:
- Critical — Site-breaking bugs, data loss, security vulnerabilities, regressions blocking releases. Should be fixed immediately.
- Major — Significant bugs that affect many users or break important functionality, but a workaround exists. Important features for the next release.
- Normal — The default. Most bugs and feature requests fall here. Affects some users or improves a single area.
- Minor — Cosmetic issues, edge cases affecting very few users, nice-to-haves, polish.
Where to look
- Issue state JSON files:
drupal-issue-hygiene-helper/state/3346420/latest_state/. File naming: {timestamp}_{nid}.json. Use Glob to find one by nid.
- Existing suggestions:
new-priority/{nid}.txt. Skip issues that already have a file unless asked to refresh.
- Pre-reviews (useful context if available):
reviews/{nid}.md.
- Outdated reports (deprioritize anything flagged here):
outdated-issues/index.html.
- Codebase for cross-referencing:
repos/ai/ (read-only).
Workflow
Step 1: Pick the issue(s) to evaluate
If the user names an issue (or list of issues), process those. Otherwise, default to all open issues (statuses Active, Needs review, Needs work, RTBC) that do not yet have a file under new-priority/.
A small helper script is provided in this skill's directory:
find-unprioritized.sh — Lists open issues that do not have a new-priority/{nid}.txt file. Output: nid|title|current_priority|status|category|component.
Step 2: Read the issue context
For each issue, read the JSON state file. Pay attention to:
title, body, comments — what the problem actually is.
field_issue_category / field_issue_category_name — bug vs feature vs support vs task.
field_issue_priority / field_issue_priority_name — the current priority. Note this so you can compare. The helper saves both the numeric id (e.g. 200) and the label (e.g. Major); prefer the label when writing the Current: line.
field_issue_component — which subsystem.
has_merge_request, mr_status — whether there's already work in progress.
If a reviews/{nid}.md file exists, read it too — pre-reviews often surface severity hints (e.g. "site-crashing bug", "security concern", "data loss").
Step 3: Decide the priority
Use these heuristics. If multiple apply, pick the highest.
Critical
- WSOD or fatal error reachable from the UI without exotic configuration.
- Data loss or data corruption.
- Security vulnerability (auth bypass, injection, missing access check on a sensitive operation).
- Hard regression that blocks an upcoming release.
- Issue title or pre-review explicitly says "crashes site", "infinite loop", "TypeError" on a hot path.
Major
- Bug affecting a primary feature for many users, but with a workaround.
- Important architectural improvement with broad impact.
- Feature explicitly committed for the current release cycle.
- Bug that breaks a non-critical but commonly used flow.
Normal
- Most bug fixes and feature requests by default.
- Improvements that affect a single subsystem.
- Documentation gaps.
- Low-impact bugs with easy workarounds.
Minor
- Cosmetic / styling tweaks.
- Edge cases affecting very few users.
- Tooling, cspell, lint, dev-only ergonomics.
- Stale issues (no activity > 12 months) with no clear use case.
- Anything flagged in
outdated-issues/index.html as superfluous or stale.
If you genuinely cannot tell, default to Normal and explain why in the rationale.
Step 4: Write the output file
For each issue, write a single file at new-priority/{nid}.txt. The file format is:
{Priority}
Current: {current priority label}
Reason: {one or two sentences explaining the suggestion}
The first line MUST be exactly one of: Critical, Major, Normal, Minor. The web UI parses the first line as the suggested priority. Everything after the first line is human context.
Example (new-priority/3577813.txt):
Critical
Current: Normal
Reason: Site-wide WSOD when AI Chatbot block is placed without a configured assistant — reachable from the standard block placement UI, no workaround.
Step 5: Report progress
After each file is written, output one line: {nid} ({current} → {suggested}): {one-line reason}. At the end, give a summary of how many files were written and the breakdown by suggested priority.
Important notes
- Do NOT change anything under
drupal-issue-hygiene-helper/, repos/, reviews/, or outdated-issues/. These are read-only inputs.
- Do NOT post comments on Drupal.org. This skill writes local files only.
- The suggestion is advisory. A human will review the files in
new-priority/ and decide whether to act on them.
- Keep the rationale to one or two sentences. The file is meant to be skim-readable.
- If you change your mind about an existing suggestion, overwrite the file rather than appending.
- Never invent severity. If the issue body and comments give no signal, default to Normal and say so.