quay/ai-helpers/controller
- community
Checking that the SKILL.md file is still in the repository.
Orchestrates the Quay CVE fix workflow through four phases: find, assess, fix, and PR. Routes each CVE based on the assessment verdict — only package-bump and go-stdlib CVEs proceed to fix and PR creation.
Install
npx vskill@latest install quay/ai-helpers/controllerSKILL.md
Quay CVE Fix Controller
You manage a 4-phase CVE remediation workflow for Quay components. Each CVE passes through find -> assess -> fix -> PR, with routing based on the assessment verdict. PR creation is delegated to the /dev:pr skill from the dev plugin — never create PRs inline.
Session Bootstrap
On first run, ensure Lola plugins are installed:
Then read component-repository-mappings.json and CLAUDE.md to load component mappings and safety rules.
Phases
- Find — the
findskill
Query PROJQUAY Jira for open CVE tickets. Produce a list of CVEs with their container names, packages, and target branches.
- Assess — the
assessskill (runs per CVE)
Triage each CVE: read advisory data, check if the package is in the repo's dependency manifests, perform symbol-level analysis if needed, and classify into a fix category.
- Fix — the
fixskill (runs per CVE, only for fixable categories)
Apply the version bump via /cve:fix-python, /cve:fix-go, or /cve:fix-node (from cve plugin), or fix-konflux-stdlib for Go stdlib. Run tests, verify the fix, and commit changes. Does NOT create the PR.
- PR — the
/dev:prskill (from dev plugin), then/dev:poll
Create a pull request using /dev:pr, which handles fork management, PR title validation against the CI regex, the standard description template, and fallback ladder. Then start CI polling with /dev:poll. After the PR is created, post a Jira comment with the PR URL.
Entry Points
The user can enter the workflow in several ways:
- "find CVEs" or "find" — run the find skill to discover open CVEs
- "PROJQUAY-XXXX" — jump directly to assess + fix for a specific ticket
- "CVE-YYYY-XXXXX" — assess + fix a specific CVE (look up the Jira ticket)
- "fix PROJQUAY-XXXX" — same as providing a ticket key
- "assess PROJQUAY-XXXX" — run only the assess phase (no fix)
Phase Execution
After Find
- Display the discovered CVEs grouped by component and priority
- Ask the user which CVEs to process, or process all open ones
- For each selected CVE, run assess then fix
After Assess (per CVE)
Read the verdict from the assess artifact and route:
| Verdict | Action | |
|---|---|---|
package-bump | Proceed to fix skill, then /dev:pr | |
go-stdlib | Proceed to fix skill (targets quay-konflux-components), then /dev:pr | |
rpm-layer | Post Jira comment, log in artifacts, skip fix | |
code-change-required | Post Jira comment, escalate via AskUserQuestion | |
not-affected | Post VEX justification to Jira, log in artifacts, skip fix |
After Fix (per CVE)
- Read the fix report from
artifacts/quay-cvefix/fixes/fix-implementation-CVE-*.md - Run the
/dev:prskill to create the PR
/dev:prreads the fix report to fill in the PR description template- PR title must match the CI regex:
${JIRA_KEY}: fix(cve): ${CVE_ID} - ${PACKAGE} /dev:prhandles fork workflow, title validation, and push
- Run
/dev:pollto start CI polling on the new PR - Post a Jira comment with the PR URL and fix summary:
- Move to the next CVE in the queue
Jira Comments
Post structured comments at each phase via:
Use the [Phase: <name>] prefix format. See CLAUDE.md for comment templates.
Branch Cascade Enforcement
Before fixing any CVE on a release branch (e.g., redhat-3.17):
- Check if the fix already exists on
master - If not, fix on
masterfirst, then backport to the release branch - If the target is an older branch (e.g., 3.16), also verify 3.17 has the fix
- Skip EOL branches (3.11, 3.13) — log a warning
Processing Multiple CVEs
When processing a batch of CVEs:
- Group by upstream repo to minimize cloning
- Process each CVE independently (separate branch, separate PR)
- Clone once per repo, create worktrees per branch
- Clean up
/tmpclones after all CVEs are processed
Error Handling
- If assess fails (e.g., cannot reach advisory URL), log the error and
ask the user whether to proceed or skip
- If fix fails (e.g., test failures, scan still detects CVE), create the
PR anyway with failure details documented
- If PR creation fails, save the branch name and changes so the user
can create the PR manually
- Always clean up
/tmpclones, even on error
Final Summary
After processing all CVEs, print a summary:
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingworkflows/quay-cvefix/.claude/skills/controller/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/quay/ai-helpers/controller)