Verify
gocronx-team/gocron
Reproduce the complete gocron CI pipeline locally and report every result.
Generates Pull Request titles and descriptions according to werf conventions.
$ npx skills add werf/werf --skill pull-request -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install werf/werf pull-request --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/werf/werf.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/pull-request .claude/skills/pull-request && 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 "pull-request" agent skill from https://github.com/werf/werf/tree/main/.agents/skills/pull-request into .claude/skills/pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pull-request", 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/werf/werf/tree/main/.agents/skills/pull-requestType 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 werf/werf --skill pull-request -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install werf/werf pull-request --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/werf/werf.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/pull-request .agents/skills/pull-request && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pull-request" agent skill from https://github.com/werf/werf/tree/main/.agents/skills/pull-request into .agents/skills/pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pull-request", 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 werf/werf --skill pull-request -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install werf/werf pull-request --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/werf/werf.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/pull-request .cursor/skills/pull-request && 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 "pull-request" agent skill from https://github.com/werf/werf/tree/main/.agents/skills/pull-request into .cursor/skills/pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pull-request", 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/werf/werf.git --path .agents/skills/pull-request--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 werf/werf --skill pull-request -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install werf/werf pull-request --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/werf/werf.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/pull-request .gemini/skills/pull-request && 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 "pull-request" agent skill from https://github.com/werf/werf/tree/main/.agents/skills/pull-request into .gemini/skills/pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pull-request", 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 werf/werf pull-requestInstalls 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 werf/werf --skill pull-request -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/werf/werf.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/pull-request .github/skills/pull-request && 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 "pull-request" agent skill from https://github.com/werf/werf/tree/main/.agents/skills/pull-request into .github/skills/pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pull-request", 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 werf/werf --skill pull-request -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install werf/werf pull-request --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/werf/werf.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/pull-request .opencode/skills/pull-request && 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 "pull-request" agent skill from https://github.com/werf/werf/tree/main/.agents/skills/pull-request into .opencode/skills/pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pull-request", 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.
pull-requestGenerates Pull Request titles and descriptions according to werf conventions.
Pull Request is an agent skill from werf/werf. Generates Pull Request titles and descriptions according to werf conventions. Use when creating or updating a PR.
Its SKILL.md is about 2.9k 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 Development, covering Pull requests and CI/CD. It works with Docker. The repository describes itself as: A solution for implementing efficient and consistent software delivery to Kubernetes facilitating best practices. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit fa73c7a. 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:
ghgitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh and git, 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.
Pull Request loads about 2.9k tokens when it runs. Until then it costs about 32 tokens; SKILL.md has 1,582 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 werf/werf at commit fa73c7a, republished under its Apache-2.0 licence (© werf). 1,582 words, ~2,908 tokens.
.claude/skills/pull-request/SKILL.md (or your agent's skills folder).The description is the spec of the change: a reviewer who never opens the diff must be able to say what werf does differently after it, where it bites, and what was actually proven. The diff is the evidence, not the source.
Everything only true during the review — what you ran, where to look, what to do after the merge — goes in a comment. werf squashes, so the description becomes the commit body and outlives the review by years, while a comment never can: the kernel's --- line, with GitHub doing the cutting. The (#NNNN) in the subject keeps the comment reachable from git log.
gh pr create --draft) and leave them draft. Only the user marks a PR ready.gh pr comment), never in the description. Nothing to say — skip it; a comment holding only a mutation line is still required.<type>(<scope>): <subject>, ≤ 72 characters, mirroring the header of the main commit. Types, scopes and subject rules come from git-conventions and CONTRIBUTING.md#conventions, including the rule that a feat/fix subject names the user-visible outcome, not the mechanism. Nested scopes comma-separated from the broadest: fix(build, stapel, import): …. For a dependency bump the title states werf's outcome, never the upstream changelog subject.
## Summary
<What werf does differently now, at most 3 sentences. For a `fix`: the observed wrong behavior,
plus a pasteable repro (command / werf.yaml / Dockerfile) when it reproduces from a clean
checkout, otherwise the precondition it needs — a race, a pre-existing host state. Never a
fabricated repro. For a `feat`: what the user can now do and the workflow that needed it.>
## What
- <One falsifiable behavior claim per line, with the condition that triggers it: "under umask 001
the service script is mode 0755", never "handles umask correctly".>
- <Every user-visible surface added or changed, with its default: flag, annotation, env var,
werf.yaml field, log or error text, exit code.>
- <BREAKING: a claim that breaks an existing setup names who it breaks and the way out — "every
host without netavark fails at backend init; CONTAINERS_CONF_OVERRIDE cannot bring CNI back".>
- <VERIFIED: a check CI cannot repeat — hand-run, host-level, offline, against a cluster — named
on the claim it settles. Anything CI does is not worth the line.>
- <UNVERIFIED: a claim nothing stands behind says so, and says what would settle it.>
- <What deliberately does NOT change, where a reader would expect it to.>
## Why
<The root cause, and what leaving it alone costs. Then the rejected alternative, when there is one
someone would argue for — "a repo-wide marker instead of a per-project one" is an alternative,
"buildah exposes no typed error" is the diff. Never a reworded Summary or claim list.>fix the symptom and its cause are neighbours in one chain: what is visible from outside goes in Summary, why the code did that and what leaving it costs goes in Why. When the symptom cannot be named without its mechanism — a stale cache entry, a missing host binary — name it in Summary anyway.### Breaking group, or lead their line with BREAKING: when there is only one. VERIFIED: and UNVERIFIED: stay inside the claim they qualify and are never grouped — a claim that both breaks and is unproven is the one a group would tear in half. Capitals, never bold or emoji — git log shows both literally, and only a word greps.BREAKING CHANGE: footer, which release-please turns into a major version bump. Never add it on your own — propose it, the bump is the user's call.UNVERIFIED: — becomes the next line of the same group. Group by user workflow or surface, never by file, under ### headings once What passes eight claims.task targets. For a speed change it is the work that no longer happens plus the workload the numbers came from; a wall-clock figure alone is not a claim.BREAKING:, VERIFIED: or UNVERIFIED: marker would qualify — drop the headings: one to three sentences, a marker leading the sentence it qualifies. A typo or a wording fix qualifies; a change to a published artifact, to what a pipeline emits, or to an instruction an agent follows does not, and a change needing BREAKING: never does.werf/nelm, werf/kubedog or werf/common-go claims every user-visible change between the old pin and the new one, read from the commit range and never from the target's release notes — a pseudo-version pin sits mid-release, so the range crosses commits those notes never mention. One gh api repos/<owner>/<repo>/compare/<old>...<new> answers it in a second; a bump is trivial only after that range comes back with no user-visible change, and then the sentences name the range and say so..agents/skills, AGENTS.md or CODESTYLE.md is trivial only when it cannot change what an agent produces: a typo, a broken link, reflowed text. A changed, added or removed instruction takes the full form, and What states the delta in the artifact the agent generates.Fixes/Closes keywords live in the description — GitHub does not auto-close from a comment. A reference to werf/nelm, werf/kubedog or werf/common-go does not auto-close at all: link it, and put closing it by hand in the comment's Follow-up. When a known commit introduced the bug, pin it: Fixes: <12+ chars of sha> ("the commit subject").git-conventions and apply here unchanged, plus: a public project may be named as the workload that motivated a change, a customer may not.Before handing the PR over to the user, map it both ways:
A branch too large to walk hunk by hunk is mapped commit by commit, and the comment says so.
## Verification
- <manual or hand-run check CI cannot make, and the environment it needed>
- Mutation: <what was broken in the code> → <test that failed>.
- Not run: <check that would have covered a claim, and why it could not run>
## Review focus
- <where to look: an area that deserves care, a large generated diff>
## Follow-up
- [ ] <action outside this diff, naming where it happens (`owner/repo`, a file, a command)>
- [ ] BLOCKER: <the same, but it has to land before this PR is merged>VERIFIED:, and this block is where it is spelled out; never the same sentence twice. Only the delta over CI. CI builds and runs the whole suite, so task build/task test:unit are noise unless a scoped local run is itself the point. Which claims are unproven belongs to the claims, never written twice.test-the-tests).Not run: line names the check and what stopped it; the claim itself says it is unproven. If the line would only restate the claim, drop it. It earns its place only when the missing check leaves a claim unverified.BLOCKER: for a dependency that has to land first. Mark what must not be skipped; when a release note is the only mitigation for a breaking change, say so on the line. No speculative and no already-done items. Public repositories only: a private harness or any path under ~ is never a line in the PR.When generating only the title (e.g. for gh pr edit --title), output ONLY the title, with no additional text, quotes, or formatting.
© werf, 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/pull-request of werf/werf.
Open the folder on GitHubat commit fa73c7a
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders. This page covers the copy in werf/werf, which our catalogue first saw on October 7, 2026.
Pull Request 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 |
|---|---|---|---|---|---|---|
| Pull Request this skillwerf/werf | 4.7k | — | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| Verifygocronx-team/gocron | 808 | — | ~529 | Automated safety check: Pass | MIT | |
| PR Reviewkimdre/doco-cd | 1.7k | — | ~311 | Automated safety check: Pass | Apache-2.0 | |
| CI Adhoc Testnubjs/nub | 4.4k | — | ~1.7k | Automated safety check: Pass | MIT | |
| PR Babysitteropeninterpreter/openinterpreter | 69k | 3 repos | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Babysit PR To Pass CIsgl-project/sglang | 37k | 2 repos | ~3k | Automated safety check: Pass | Apache-2.0 |
gocronx-team/gocron
Reproduce the complete gocron CI pipeline locally and report every result.
kimdre/doco-cd
Review pull request diffs for correctness and regressions, and provide actionable feedback when asked to review a PR.
nubjs/nub
Run ad-hoc / exploratory tests on a real OS or platform via CI when the behavior CANNOT be reproduced on the local host or in Docker — macOS Seatbelt / sandbox-exec / codesigning, Windows cmd.exe /…
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
sgl-project/sglang
Start and persistently pursue a goal to babysit an SGLang pull request until selected GitHub Actions workflows pass on the latest PR head.
chewiebug/GCViewer
Run the full build-and-deploy.yaml workflow locally via act + Docker.
werf/werf
werf conventions for branch names and commit messages. An agent skill from werf/werf.
werf/werf
Code review of a pull request, branch, or diff. An agent skill from werf/werf.
werf/werf
Independent challenge pass for a non-trivial or high-risk change.
werf/werf
How to treat conclusions inherited from an earlier session — handover notes, prepared comments, verdict files, plans.
werf/werf
Analyze the current session for harness-worthy lessons — repeated corrections, discovered conventions, skill bugs — and turn them into concrete repo changes: docs, skills, task targets, linter…
werf/werf
Verify a test actually falsifies the behavior it claims to cover, via real mutation.
Works with
Categories
Generates Pull Request titles and descriptions according to werf conventions. Pull Request is an agent skill from werf/werf. Generates Pull Request titles and descriptions according to werf conventions.
Pull Request fits situations like: tasks that involve Pull requests; tasks that involve CI/CD.
Run `npx skills add werf/werf --skill pull-request -a claude-code`. Or copy the skill folder (.agents/skills/pull-request in werf/werf) into .claude/skills/pull-request in your project. Claude Code loads it when a task matches its description.
Run `npx skills add werf/werf --skill pull-request -a codex`. Or copy the skill folder (.agents/skills/pull-request in werf/werf) into .agents/skills/pull-request 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 werf/werf --skill pull-request -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pull-request, .gemini/skills/pull-request, .github/skills/pull-request and .opencode/skills/pull-request in your project.
Going by SKILL.md and its folder, Pull Request needs the command-line tools its instructions call (gh and git).
SKILL.md contains no URLs. Its commands use gh and git, 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.
Pull Request 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 2.9k tokens (SKILL.md is roughly 12k 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 Pull Request: Verify (gocronx-team/gocron, 808 stars), PR Review (kimdre/doco-cd, 1.7k stars), CI Adhoc Test (nubjs/nub, 4.4k stars) and PR Babysitter (openinterpreter/openinterpreter, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
werf (a GitHub organization) maintains it in werf/werf, which has 4,728 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 6, 2026.
Source: werf/werf on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.