Sprint Summary
shopsys/shopsys
Generates a Czech sprint summary article from Jira sprint data, preferably via Jira MCP with CSV as a fallback, and can optionally prepare Playwright screenshots/videos as side attachments for…
Post a biweekly Agentic SDLC pilot update comment to PROJQUAY-11352.
$ npx skills add quay/quay --skill pilot-update -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install quay/quay pilot-update --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/quay/quay.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/pilot-update .claude/skills/pilot-update && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "pilot-update" agent skill from https://github.com/quay/quay/tree/master/.agents/skills/pilot-update into .claude/skills/pilot-update/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pilot-update", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/quay/quay/tree/master/.agents/skills/pilot-updateType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add quay/quay --skill pilot-update -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install quay/quay pilot-update --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/quay/quay.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/pilot-update .agents/skills/pilot-update && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pilot-update" agent skill from https://github.com/quay/quay/tree/master/.agents/skills/pilot-update into .agents/skills/pilot-update/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pilot-update", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add quay/quay --skill pilot-update -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install quay/quay pilot-update --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/quay/quay.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/pilot-update .cursor/skills/pilot-update && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "pilot-update" agent skill from https://github.com/quay/quay/tree/master/.agents/skills/pilot-update into .cursor/skills/pilot-update/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pilot-update", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/quay/quay.git --path .agents/skills/pilot-update--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add quay/quay --skill pilot-update -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install quay/quay pilot-update --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/quay/quay.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/pilot-update .gemini/skills/pilot-update && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "pilot-update" agent skill from https://github.com/quay/quay/tree/master/.agents/skills/pilot-update into .gemini/skills/pilot-update/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pilot-update", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install quay/quay pilot-updateInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add quay/quay --skill pilot-update -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/quay/quay.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/pilot-update .github/skills/pilot-update && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "pilot-update" agent skill from https://github.com/quay/quay/tree/master/.agents/skills/pilot-update into .github/skills/pilot-update/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pilot-update", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add quay/quay --skill pilot-update -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install quay/quay pilot-update --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/quay/quay.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/pilot-update .opencode/skills/pilot-update && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "pilot-update" agent skill from https://github.com/quay/quay/tree/master/.agents/skills/pilot-update into .opencode/skills/pilot-update/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pilot-update", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
pilot-updatePost a biweekly Agentic SDLC pilot update comment to PROJQUAY-11352.
Pilot Update is an agent skill from quay/quay. Post a biweekly Agentic SDLC pilot update comment to PROJQUAY-11352. Traverses the Jira issue hierarchy, scans 15 quay/ repos for pilot-relevant PRs, drafts a structured 5-section update, and posts after user review. Accepts an optional lookback window in days (default 14).
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA. It works with Jira and Model Context Protocol. The repository describes itself as: Build, Store, and Distribute your Applications and Containers. The licence is Apache-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit ceb1eb0. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(gh search prs *)Bash(gh pr view *)Bash(gh pr list *)Bash(gh api *)Bash(git log *)Bash(date *)Bash(bash .claude/scripts/jira-ops.sh *)Bash(curl *)Bash(acli jira workitem comment create *)Bash(acli jira workitem comment list *)…and 7 more on the same allowed-tools line.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
ghjqcurlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
redhat.atlassian.netFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
JIRA_API_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Pilot Update loads about 3.5k tokens when it runs. Until then it costs about 72 tokens; SKILL.md has 1,505 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from quay/quay at commit ceb1eb0, republished under its Apache-2.0 licence (© quay). 1,505 words, ~3,508 tokens.
.claude/skills/pilot-update/SKILL.md (or your agent's skills folder).Gather data from Jira and GitHub, draft a biweekly update comment, get user input on subjective sections, and post the final comment to PROJQUAY-11352.
Tracking issue: PROJQUAY-11352 ("Quay Agentic Tool Pilot") Deadline: June 30, 2026
Prerequisite: This skill uses Jira MCP tools (
mcp__mcp-atlassian__jira_*) which are configured at the Ambient session level, not in the repo's.mcp.json. It must be run inside an Ambient Code session with the Jira integration enabled. If running locally, the skill falls back to the Jira REST API via curl using the same credential locations as.claude/scripts/jira-ops.sh(~/.config/acli/jira_config.yaml+ token from~/.config/acli/token.txtor~/.acli-token, orJIRA_API_TOKENenvironment variable).
Determine the lookback window. Default is 14 days. If $ARGUMENTS was
provided and is a single positive integer (> 0), use that value instead.
If $ARGUMENTS is empty, missing, or not provided, use 14. If it
contains a non-numeric value, zero, a negative number, or multiple
tokens, inform the user the input is invalid and ask them to provide a
single positive integer before proceeding.
Compute:
end_date = today's datestart_date = today minus lookback daysBFS traversal starting at PROJQUAY-11352:
Use a queue-based BFS. Start with ["PROJQUAY-11352"].
Before traversal, fetch and store PROJQUAY-11352's own fields using
mcp__mcp-atlassian__jira_get_issue with
fields="key,summary,description,status,assignee,issuetype,created,updated".
For each key in the queue:
parent = KEY ORDER BY updated DESCmcp__mcp-atlassian__jira_search with
fields="key,summary,description,status,assignee,issuetype,created,updated"
and limit=50start_at if total > 50 (pagination applies per
parent-key search, not once globally)The hierarchy under PROJQUAY-11352 is at least 3 levels deep (Feature → Epic → Story/Task). The BFS must traverse all levels.
After collecting all keys in the hierarchy (including PROJQUAY-11352 itself, with fields stored for each):
Fetch changelogs for all discovered keys using
mcp__mcp-atlassian__jira_batch_get_changelogs with fields="status" to
get status transitions. Each changelog item has a created timestamp —
compare it (in UTC) against the lookback window using inclusive start,
exclusive end: [start_date 00:00 UTC, end_date+1 00:00 UTC). If more
than 20 keys, batch in groups of 20.
Classify findings:
created field is within the windowRepos to search:
quay/quayquay/quay-operatorquay/quay-bridge-operatorquay/quay-bridge-operator-konfluxquay/container-security-operatorquay/quay-builderquay/quay-builder-qemuquay/quay-distributionquay/quay-konflux-componentsquay/quay-fbcsquay/registry-proxyquay/registry-proxy-testsquay/mirror-registryquay/mirror-registry-konfluxquay/quay-testsAll repos are under the quay/ org and team-owned. No cross-team author
filtering is required.
For each repo, search for PRs using the GitHub CLI:
Merged PRs (last N days):
gh search prs --repo quay/<repo> --merged --merged-at ">={start_date}" --json number,title,author,closedAt,url --limit 50Open PRs (in progress):
gh search prs --repo quay/<repo> --state open --updated ">={start_date}" --json number,title,author,createdAt,url --limit 50Filter to pilot-relevant PRs by checking if any of these apply:
agentic-sdlc-pilot or ai-pilot.claude/, CLAUDE.md, AGENTS.md, WORKFLOW.md,
claude-plugin/, skills, agentsCo-Authored-By: Claude,
Generated with Claude Code, Generated with AmbientIf a repo returns a 404 or 403, skip it gracefully and note it was skipped in the output.
Collect for each pilot-relevant PR: number, title, state, merged_at or created_at, repo name, author.
Assemble gathered data into the 5-section template below.
Populate from:
[KEY] Summary — issuetype)Populate from:
Do NOT list PRs that are ordinary feature or bug work unless they were produced using the AI-assisted workflow. The signal here is: did the agentic pipeline produce output, and did that output land?
Seed with data where possible:
After presenting the seeded bullets, use AskUserQuestion to prompt the user:
The "What We Learned" section above is seeded from PR/Jira data. Please add subjective insights: What surprised you? What context was missing? What would you do differently? Any observations about code quality, review burden, or team dynamics?
Seed with data:
After presenting the seeded bullets, use AskUserQuestion to prompt the user:
The "What's Blocked" section above is seeded from Jira/GitHub data. Please add any additional blockers: tooling gaps, access issues, Jira integration problems, anything else slowing you down?
Seed with data:
After presenting the seeded bullets, use AskUserQuestion to prompt the user:
The "What We're Trying Next" section above is seeded from upcoming Jira work. Please add or adjust: planned experiments, focus areas, changes in strategy or approach?
Assemble the complete comment using the template below for terminal preview (Markdown for readability). The actual posted comment will use ADF format — see Phase 5.
## Quay Agentic SDLC Pilot Update — {start_date} to {end_date}
### What We Tried
{bullet list: tools used, workflows attempted, issue types worked on, PRs opened}
### What Happened
{bullet list: PRs merged/closed, issues completed, status changes, outcomes}
### What We Learned
{bullet list: surprises, missing context, quality observations, process insights}
### What's Blocked
{bullet list: tooling gaps, access issues, integration problems, dependencies}
### What We're Trying Next
{bullet list: upcoming work, planned experiments, strategy changes}Display the full formatted Markdown in the terminal. Use AskUserQuestion to ask the user to confirm or request edits:
Here is the full draft comment for PROJQUAY-11352. Reply with:
- "post" to post as-is
- Specific edits to apply
- "cancel" to abort
Apply any requested edits and re-display until the user confirms with "post".
Deduplication rule: Each PR or Jira issue should appear in at most one of "What We Tried" or "What Happened" unless it has a distinct outcome to report in the latter. Specifically:
Critical: Jira Cloud requires Atlassian Document Format (ADF) JSON for rich comment formatting. Markdown and Jira wiki markup both render as raw unformatted text. You must convert the comment to ADF before posting.
Build an ADF JSON document from the confirmed Markdown. The top-level structure is:
{
"type": "doc",
"version": 1,
"content": [ ... ]
}Map Markdown elements to ADF nodes:
| Markdown | ADF node |
|---|---|
## Heading | {"type":"heading","attrs":{"level":2},"content":[{"type":"text","text":"..."}]} |
### Heading | {"type":"heading","attrs":{"level":3},"content":[{"type":"text","text":"..."}]} |
- bullet item | Wrap items in {"type":"bulletList","content":[{"type":"listItem","content":[{"type":"paragraph","content":[...]}]}]} |
**bold text** | {"type":"text","text":"...","marks":[{"type":"strong"}]} |
[link text](url) | {"type":"text","text":"...","marks":[{"type":"link","attrs":{"href":"..."}}]} |
| Plain text | {"type":"text","text":"..."} |
| Paragraph break | {"type":"paragraph","content":[...]} |
Write the ADF JSON to a temp file (e.g., /tmp/pilot-update-adf.json).
acli is pre-authenticated in Ambient sessions (encrypted token stored
in ~/.config/acli/jira_config.yaml). Post the comment with:
acli jira workitem comment create \
--key PROJQUAY-11352 \
--body-file /tmp/pilot-update-adf.jsonVerify success by checking the exit code. If it fails, proceed to Method 2.
This requires both JIRA_EMAIL and JIRA_API_TOKEN to be set (not available in all Ambient
sessions). Source credentials from .claude/scripts/jira-ops.sh locations:
JIRA_API_TOKEN env var (or ~/.config/acli/token.txt / ~/.acli-token),
and JIRA_EMAIL (defaults to quay-devel@redhat.com if not set).
The ADF document must be wrapped in a body field. Set the default
email if not already configured:
: "\${JIRA_EMAIL:=quay-devel@redhat.com}"resp_file="$(mktemp)"
http_code="$(
jq -n --argjson body "$(cat /tmp/pilot-update-adf.json)" '{body: $body}' | \
curl -sS -o "$resp_file" -w "%{http_code}" -X POST \
-u "${JIRA_EMAIL}:${JIRA_API_TOKEN}" \
-H "Content-Type: application/json" \
"https://redhat.atlassian.net/rest/api/3/issue/PROJQUAY-11352/comment" \
-d @-
)"
if [[ "$http_code" != 2* ]]; then
echo "ERROR: Jira comment POST failed (HTTP $http_code):"
cat "$resp_file" >&2
fiIf both methods fail, save the ADF JSON to a file and provide the user with both options:
Report the error.
Confirm success with: "Comment posted to PROJQUAY-11352."
© quay, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/pilot-update of quay/quay.
Open the folder on GitHubat commit ceb1eb0
Pilot Update next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Pilot Update this skillquay/quay | 2.8k | — | ~3.5k | Automated safety check: Pass | Apache-2.0 | |
| Sprint Summaryshopsys/shopsys | 350 | — | ~3.5k | Automated safety check: Pass | Custom licence | |
| Link Ticket To SessionJayantDevkar/claude-code-karma | 329 | — | ~1.8k | Automated safety check: Notes | Apache-2.0 | |
| Jira Natural Language Interfacejjmartres/opencode | 133 | 3 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Issue Triage Loopcobusgreyling/loop-engineering | 11k | — | ~522 | Automated safety check: Pass | MIT | |
| Create Epic RecapDataDog/datadog-agent | 3.8k | — | ~5k | Automated safety check: Notes | Apache-2.0 |
shopsys/shopsys
Generates a Czech sprint summary article from Jira sprint data, preferably via Jira MCP with CSV as a fallback, and can optionally prepare Playwright screenshots/videos as side attachments for…
JayantDevkar/claude-code-karma
Link the current Claude Code session to a ticket (Linear, Jira, GitHub Issues, or GitHub Pull Requests) and cache its title/status in karma.
jjmartres/opencode
Lets an agent view, create, update and transition Jira issues in natural language, automatically choosing between the jira CLI and Atlassian MCP tools.
cobusgreyling/loop-engineering
Scans open GitHub issues and discussions, flags duplicates, scores priority and proposes labels into issue-triage-state.md without ever labeling or closing.
DataDog/datadog-agent
A skill your agent uses when an engineer or manager asks to recap, summarize, or post an update on a Jira Epic — a progress update for an in-progress Epic (how far along it is, what's shipped so…
dnotitia/akb
Ingest whatever you point at into an AKB vault — a local file, a web URL, a GitHub PR/release/commit, a Confluence page, or a Jira issue.
quay/quay
Deep-dive diagnosis of a Playwright test failure already isolated to one Quay Prow/OpenShift CI run: downloads its GCS artifacts (results.json, JUnit, build/pod logs, Jaeger traces), classifies real…
quay/quay
Diagnose any Quay Prow job failure end to end: prowjob.json - top-level build log - JUnit - resolved failing step - Playwright results.json when the failing step is Playwright, continuing through…
quay/quay
Triage a flaky Playwright test end to end, from a Sippy signal to a written fix proposal: Sippy numbers and failing run URLs, Prow artifacts (or the access gap), the spec, a local reproduction, and…
quay/quay
Debug Playwright E2E test failures from GitHub Actions CI runs.
Works with
Categories
Post a biweekly Agentic SDLC pilot update comment to PROJQUAY-11352. Pilot Update is an agent skill from quay/quay. Post a biweekly Agentic SDLC pilot update comment to PROJQUAY-11352.
Pilot Update fits situations like: testing & QA work in your project.
Run `npx skills add quay/quay --skill pilot-update -a claude-code`. Or copy the skill folder (.agents/skills/pilot-update in quay/quay) into .claude/skills/pilot-update in your project. Claude Code loads it when a task matches its description.
Run `npx skills add quay/quay --skill pilot-update -a codex`. Or copy the skill folder (.agents/skills/pilot-update in quay/quay) into .agents/skills/pilot-update in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add quay/quay --skill pilot-update -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pilot-update, .gemini/skills/pilot-update, .github/skills/pilot-update and .opencode/skills/pilot-update in your project.
Going by SKILL.md and its folder, Pilot Update needs the command-line tools its instructions call (gh, jq and curl) and credentials named JIRA_API_TOKEN. Our summary lists: A credential in JIRA_API_TOKEN. Its frontmatter pre-approves these tools: Bash(gh search prs *), Bash(gh pr view *), Bash(gh pr list *), Bash(gh api *), Bash(git log *), Bash(date *), Bash(bash .claude/scripts/jira-ops.sh *), Bash(curl *), Bash(acli jira workitem comment create *), Bash(acli jira workitem comment list *), mcp__mcp-atlassian__jira_get_issue, mcp__mcp-atlassian__jira_search, mcp__mcp-atlassian__jira_batch_get_changelogs, Read, Grep, Glob, AskUserQuestion.
SKILL.md names 1 domain. In commands or code: redhat.atlassian.net; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Pilot Update is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Pilot Update: Sprint Summary (shopsys/shopsys, 350 stars), Link Ticket To Session (JayantDevkar/claude-code-karma, 329 stars), Jira Natural Language Interface (jjmartres/opencode, 133 stars) and Issue Triage Loop (cobusgreyling/loop-engineering, 11k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
quay (a GitHub organization) maintains it in quay/quay, which has 2,829 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 8, 2026.
Source: quay/quay on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.