CI CD
EliasOulkadi/shokunin
Design CI/CD pipelines for GitHub Actions, GitLab CI, and CircleCI with matrix builds, test sharding, caching, Docker layer caching, OIDC auth, deployment strategies (rolling, blue-green, canary)…
File a batch of contributor-ready GitHub issues from the seeds backlog, re-verifying every candidate against HEAD first so no dead issue reaches a contributor.
$ npx skills add jayminwest/warren --skill good-first-issue-batch -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jayminwest/warren good-first-issue-batch --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/jayminwest/warren.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/good-first-issue-batch .claude/skills/good-first-issue-batch && 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 "good-first-issue-batch" agent skill from https://github.com/jayminwest/warren/tree/main/.agents/skills/good-first-issue-batch into .claude/skills/good-first-issue-batch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "good-first-issue-batch", 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/jayminwest/warren/tree/main/.agents/skills/good-first-issue-batchType 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 jayminwest/warren --skill good-first-issue-batch -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jayminwest/warren good-first-issue-batch --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jayminwest/warren.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/good-first-issue-batch .agents/skills/good-first-issue-batch && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "good-first-issue-batch" agent skill from https://github.com/jayminwest/warren/tree/main/.agents/skills/good-first-issue-batch into .agents/skills/good-first-issue-batch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "good-first-issue-batch", 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 jayminwest/warren --skill good-first-issue-batch -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jayminwest/warren good-first-issue-batch --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jayminwest/warren.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/good-first-issue-batch .cursor/skills/good-first-issue-batch && 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 "good-first-issue-batch" agent skill from https://github.com/jayminwest/warren/tree/main/.agents/skills/good-first-issue-batch into .cursor/skills/good-first-issue-batch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "good-first-issue-batch", 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/jayminwest/warren.git --path .agents/skills/good-first-issue-batch--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 jayminwest/warren --skill good-first-issue-batch -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jayminwest/warren good-first-issue-batch --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jayminwest/warren.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/good-first-issue-batch .gemini/skills/good-first-issue-batch && 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 "good-first-issue-batch" agent skill from https://github.com/jayminwest/warren/tree/main/.agents/skills/good-first-issue-batch into .gemini/skills/good-first-issue-batch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "good-first-issue-batch", 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 jayminwest/warren good-first-issue-batchInstalls 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 jayminwest/warren --skill good-first-issue-batch -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jayminwest/warren.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/good-first-issue-batch .github/skills/good-first-issue-batch && 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 "good-first-issue-batch" agent skill from https://github.com/jayminwest/warren/tree/main/.agents/skills/good-first-issue-batch into .github/skills/good-first-issue-batch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "good-first-issue-batch", 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 jayminwest/warren --skill good-first-issue-batch -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jayminwest/warren good-first-issue-batch --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jayminwest/warren.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/good-first-issue-batch .opencode/skills/good-first-issue-batch && 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 "good-first-issue-batch" agent skill from https://github.com/jayminwest/warren/tree/main/.agents/skills/good-first-issue-batch into .opencode/skills/good-first-issue-batch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "good-first-issue-batch", 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.
good-first-issue-batchFile a batch of contributor-ready GitHub issues from the seeds backlog, re-verifying every candidate against HEAD first so no dead issue reaches a contributor.
Good First Issue Batch is an agent skill from jayminwest/warren. File a batch of contributor-ready GitHub issues from the seeds backlog, re-verifying every candidate against HEAD first so no dead issue reaches a contributor. Activate for prompts like "file some good first issues", "open a batch of GFIs", "publish backlog issues to GitHub", "find contributor-ready work", or after an audit that surfaced contributor-sized items.
Its SKILL.md is about 2.2k 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 DevOps & Cloud. It works with GitHub and Kubernetes. The repository describes itself as: Run coding agents like infrastructure, not terminal sessions. Warren manages isolation, lifecycle, spend, recovery, and Git delivery on compute you control. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 5276209. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitrgghbunpython3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Good First Issue Batch loads about 2.2k tokens when it runs. Until then it costs about 97 tokens; SKILL.md has 1,186 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 jayminwest/warren at commit 5276209, republished under its MIT licence (© jayminwest). 1,186 words, ~2,239 tokens.
.claude/skills/good-first-issue-batch/SKILL.md (or your agent's skills folder).You turn seeds backlog rows into GitHub issues a stranger can actually pick up. The hard part is not writing them. It is proving they are still real.
On 2026-08-07 six issues were bulk-filed straight from seeds rows. Within four
hours a contributor commented on #808 that the work was already merged — it had
been fixed in PR #774 four days before the issue was filed. Two more issues in
the same batch (#806, #807) turned out to be half-dead. Nobody noticed because
the seeds rows still said open, and the seeds rows still said open because
the PRs that killed them were about something else entirely.
A tracker row is a lead, not evidence. Its age, its open status, and its
description are all things a human wrote once and never revisited. The only
evidence that a bug is real is the bug, in the code, at HEAD, today.
file:line in an old row has drifted.
Re-resolve all of them; cite what you actually saw.Pull open seeds rows that are plausibly contributor-sized and self-contained:
sd list --status open --format compact
sd search "<theme>" --format compactGood raw candidates are bounded in blast radius, need no cluster access or live credentials to reproduce, and have an obvious done condition. Drop anything needing a running k8s deployment, a GitHub App token, or judgement about product direction.
Skip rows that already carry a GitHub back-link — they are filed:
python3 -c "
import json
for line in open('.seeds/issues.jsonl'):
d = json.loads(line)
gh = (d.get('extensions') or {}).get('github')
if gh and d.get('status') == 'open':
print(d['id'], '-> #' + str(gh['issue']))
"Run all four checks on every candidate. Fan these out with subagents when the batch is larger than three or four; each candidate is independent.
Read the code the row names. Not the row's summary of the code — the code. If the row cites a symbol, confirm the symbol is still there and still wrong:
rg -n "<symbol>" src/
git log --diff-filter=A --format="%h %ad %s" --date=short -- <path-it-names>If the row references a gate (check:dups, check:size, check:debt), run it.
A passing gate means the grandfather entry the issue wanted deleted is already
gone. That is exactly how #808 died: resolveTargetDir had been extracted to
src/cli/commands/target-dir.ts, and bun run check:dups reported all ten
allowlist pairs still matched, with nothing stale to remove.
Compare the row's createdAt against the history of the files it names.
git log --format="%h %ad %s" --date=short --since=<row createdAt> -- <paths>
git log -S'<symbol>' --format="%h %ad %s" --date=shortThe killers are almost never PRs that mention the issue. They are sweeps — "single-source truth sweep", "dedup pass", "consolidate X" — that fix a small defect as collateral and close nothing. Read the diff of any sweep-shaped PR touching the same files since the row was written.
An issue asking for better UI on a feature that was later deleted is not a bug, it is an archaeology exhibit. Confirm every state, field, route, and component the row depends on is still live:
rg -n "<state-or-field-name>" src/core/wire.ts src/db/schema/ src/ui/src/Zero hits across the schema and the UI means the feature is gone. Item 4 of #806
asked for paused-run context on the spectator view; paused had already been
removed from RUN_STATES and its columns dropped by migrations 0034/0028 when
the plot pass (pl-3a79) retired the whole pause mechanism.
Multi-bullet rows rot unevenly. Search for the behaviour the bullet wants, not the tracker id — the PR that delivered it was filed under a different id and will not mention this row:
rg -n "<config-knob-or-constant-the-bullet-asks-for>" src/
git log --oneline --all -S'<constant>' | head#807 claimed the event-stream lifetime was unlimited. It had been capped at four
hours by default since PR #693, filed under warren-3995, which never touched
warren-a676. Only the idleTimeout bullet was still true.
| Grade | Meaning | Action |
|---|---|---|
| LIVE | Every bullet reproduced at HEAD | File it |
| PARTIAL | Some bullets dead | Rewrite to the surviving bullets, then file. Record what died and why |
| DEAD | No bullet survives | Do not file. Close the seeds row citing the commit or PR that fixed it |
For every DEAD row, close it with the evidence rather than leaving it to rot:
sd close <seeds-id>Structure, in order:
file:line claim you personally re-read this
session. One or two sentences per bullet.Projects.tsx:90
already routes its empty-state hint through useOperatorHint — copy that
shape) rather than describing the pattern abstractly.AGENTS.md covers setup and conventions. Run
bun run check:all before pushing — warnings count as failures.Tracked internally as \<seeds-id>`.`If you rewrote a PARTIAL row, append a dated **Revised YYYY-MM-DD.** note
saying which bullets died and what killed them. A contributor who finds the old
description in a search result needs to know it was retired deliberately.
Write for someone with no repo context. Expand internal shorthand: "the reap
path", "the wire vocabulary", and tracker ids mean nothing to a first-timer.
Read .claude/skills/ste-writing/SKILL.md conventions if the prose is drifting
toward marketing register.
The 2026-08-07 batch wrote GitHub → seeds but never seeds → GitHub, so a later
sd close had no way to reach GitHub. Always write both.
gh issue create \
--title "<specific, defect-shaped title>" \
--body-file <path> \
--label "good first issue,help wanted,type/bug,area/ui,priority/P3,effort/small"Then immediately record the back-link on the seeds row:
sd update <seeds-id> --extensions '{"github":{"issue":<N>,"url":"https://github.com/jayminwest/warren/issues/<N>"}}'Label vocabulary is fixed by .github/labels.yml — one type/, one or more
area/, one priority/, one effort/. Never invent a label; sync-labels.yml
will drop it. Reserve good first issue for effort/small work with a single
obvious approach; help wanted alone is right for anything larger.
Give the user a table of every candidate with its grade and the evidence that decided it, the URLs filed, and the seeds rows closed as DEAD. State the batch size and say plainly if verification shrank it — "filed 4 of 9 candidates; 3 were already fixed, 2 were ambiguous and left in seeds" is the useful sentence.
Issues rot after filing too, by the same mechanisms. Before pointing a contributor at an existing issue, or roughly monthly, re-run section 3 over the open GitHub issues and their linked seeds rows. When a row and its GitHub issue diverge, the code is the tiebreaker — never the tracker, and never the more recently edited of the two.
© jayminwest, MIT. 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/good-first-issue-batch of jayminwest/warren.
Open the folder on GitHubat commit 5276209
Good First Issue Batch 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 |
|---|---|---|---|---|---|---|
| Good First Issue Batch this skilljayminwest/warren | 476 | — | ~2.2k | Automated safety check: Pass | MIT | |
| CI CDEliasOulkadi/shokunin | 114 | — | ~3.4k | Automated safety check: Notes | MIT | |
| Triage Issueskubernetes-sigs/agent-sandbox | 4.2k | — | ~1.5k | Automated safety check: Pass | Apache-2.0 | |
| Devops Pipelineluongnv89/skills | 131 | — | ~4.8k | Automated safety check: Pass | MIT | |
| Project Referencesaiskillstore/marketplace | 430 | — | ~2.3k | Automated safety check: Notes | None | |
| GitHub Runnermagnus919/agent-skills | 113 | — | ~1.7k | Automated safety check: Pass | MIT |
EliasOulkadi/shokunin
Design CI/CD pipelines for GitHub Actions, GitLab CI, and CircleCI with matrix builds, test sharding, caching, Docker layer caching, OIDC auth, deployment strategies (rolling, blue-green, canary)…
kubernetes-sigs/agent-sandbox
Triage open GitHub issues for kubernetes-sigs/agent-sandbox by mapping them to roadmap.md and assigning k8s priority labels + Kanban Priority (P0–P4) on Project
luongnv89/skills
Configure pre-commit hooks and lean GitHub Actions for shift-left quality assurance.
aiskillstore/marketplace
Look up conventions, patterns, and concrete implementations from your own GitHub repositories checked out locally under ~/projects/referenzen/.
magnus919/agent-skills
Deploy, manage, and troubleshoot self-hosted GitHub Actions runners.
thkhxm/tgf
基于 tgf v2(github.com/thkhxm/tgf/v2)用确定性的 tgfctl 工作流创建、验证和维护 Go 游戏服务器项目。
jayminwest/warren
Bump warren onto the latest published @os-eco/ versions across package.json + bun.lock and the Dockerfile CLI pins, then run the gates and open a PR.
jayminwest/warren
Prepare, cut, and verify a warren release — tracker audits, version bump, CHANGELOG curation, ROADMAP update, push, then watch the pipeline through to published artifacts.
jayminwest/warren
Audit and triage open Seeds (sd) issues — find which can be closed, auto-close high-confidence completed ones, and report borderline cases.
jayminwest/warren
Full prioritize → dispatch → shepherd → track pipeline against the live warren instance.
Works with
Categories
File a batch of contributor-ready GitHub issues from the seeds backlog, re-verifying every candidate against HEAD first so no dead issue reaches a contributor. Good First Issue Batch is an agent skill from jayminwest/warren. File a batch of contributor-ready GitHub issues from the seeds backlog, re-verifying every candidate against HEAD first so no dead issue reaches a contributor.
Good First Issue Batch fits situations like: devOps & Cloud work in your project.
Run `npx skills add jayminwest/warren --skill good-first-issue-batch -a claude-code`. Or copy the skill folder (.agents/skills/good-first-issue-batch in jayminwest/warren) into .claude/skills/good-first-issue-batch in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jayminwest/warren --skill good-first-issue-batch -a codex`. Or copy the skill folder (.agents/skills/good-first-issue-batch in jayminwest/warren) into .agents/skills/good-first-issue-batch 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 jayminwest/warren --skill good-first-issue-batch -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/good-first-issue-batch, .gemini/skills/good-first-issue-batch, .github/skills/good-first-issue-batch and .opencode/skills/good-first-issue-batch in your project.
Going by SKILL.md and its folder, Good First Issue Batch needs the command-line tools its instructions call (git, rg, gh, bun and python3). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. 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.
Good First Issue Batch is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 9k 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 Good First Issue Batch: CI CD (EliasOulkadi/shokunin, 114 stars), Triage Issues (kubernetes-sigs/agent-sandbox, 4.2k stars), Devops Pipeline (luongnv89/skills, 131 stars) and Project References (aiskillstore/marketplace, 430 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jayminwest (a GitHub user) maintains it in jayminwest/warren, which has 476 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 7, 2026.
Source: jayminwest/warren on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.