Contextual Commit Messages
yamadashy/repomix
Writes Conventional Commits whose bodies carry action lines recording the intent, decisions and constraints behind a change, not only what changed.
Start here before the first edit of any file — a one-liner and a docs change included.
$ npx skills add epam/cloud-pipeline --skill implement-task -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install epam/cloud-pipeline implement-task --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/epam/cloud-pipeline.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/implement-task .claude/skills/implement-task && 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 "implement-task" agent skill from https://github.com/epam/cloud-pipeline/tree/develop/.agents/skills/implement-task into .claude/skills/implement-task/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implement-task", 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/epam/cloud-pipeline/tree/develop/.agents/skills/implement-taskType 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 epam/cloud-pipeline --skill implement-task -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install epam/cloud-pipeline implement-task --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/epam/cloud-pipeline.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/implement-task .agents/skills/implement-task && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "implement-task" agent skill from https://github.com/epam/cloud-pipeline/tree/develop/.agents/skills/implement-task into .agents/skills/implement-task/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implement-task", 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 epam/cloud-pipeline --skill implement-task -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install epam/cloud-pipeline implement-task --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/epam/cloud-pipeline.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/implement-task .cursor/skills/implement-task && 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 "implement-task" agent skill from https://github.com/epam/cloud-pipeline/tree/develop/.agents/skills/implement-task into .cursor/skills/implement-task/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implement-task", 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/epam/cloud-pipeline.git --path .agents/skills/implement-task--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 epam/cloud-pipeline --skill implement-task -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install epam/cloud-pipeline implement-task --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/epam/cloud-pipeline.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/implement-task .gemini/skills/implement-task && 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 "implement-task" agent skill from https://github.com/epam/cloud-pipeline/tree/develop/.agents/skills/implement-task into .gemini/skills/implement-task/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implement-task", 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 epam/cloud-pipeline implement-taskInstalls 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 epam/cloud-pipeline --skill implement-task -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/epam/cloud-pipeline.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/implement-task .github/skills/implement-task && 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 "implement-task" agent skill from https://github.com/epam/cloud-pipeline/tree/develop/.agents/skills/implement-task into .github/skills/implement-task/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implement-task", 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 epam/cloud-pipeline --skill implement-task -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install epam/cloud-pipeline implement-task --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/epam/cloud-pipeline.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/implement-task .opencode/skills/implement-task && 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 "implement-task" agent skill from https://github.com/epam/cloud-pipeline/tree/develop/.agents/skills/implement-task into .opencode/skills/implement-task/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implement-task", 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.
implement-taskStart here before the first edit of any file — a one-liner and a docs change included.
Implement Task is an agent skill from epam/cloud-pipeline. Start here before the first edit of any file — a one-liner and a docs change included. Holds the steps a task passes through, the issue number and branch it needs, the tests and docs it owes, and where the branch ends up. The plan-change, verify-changes and commit-changes skills are steps within it.
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 Commit messages. The repository describes itself as: Cloud agnostic genomics analysis, scientific computation and storage platform. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit 5017688. 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.
Implement Task loads about 2.9k tokens when it runs. Until then it costs about 79 tokens; SKILL.md has 1,832 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 epam/cloud-pipeline at commit 5017688, republished under its Apache-2.0 licence (© epam). 1,832 words, ~2,853 tokens.
.claude/skills/implement-task/SKILL.md (or your agent's skills folder).Ten steps. Every task passes all of them, and most collapse to a sentence on a small change — Verify and Diff review never collapse. They are internal structure rather than a script to recite: name a step in prose where you need to ("the Verify step"), never a bare number, and don't narrate the walk through them at whoever asked.
| # | Step | Leave it when | Mechanics |
|---|---|---|---|
| 0 | Intake | you can state the task, the area(s) it touches, and its issue number without guessing at any of the three — Issue number, below | gh issue view |
| 1 | Orient | you can name the files that will change and the ones that constrain them | the subtree's AGENTS.md, the module's README.md |
| 2 | Plan | attended: the person asking has agreed to it · unattended: it is written down, to go in the pull request body | plan-change skill |
| 3 | Workspace | the branch exists, on a base you established rather than assumed, and you are working where you were told to — Workspace, below | git worktree add |
| 4 | Implement | the change is complete, including the tests and docs it owes — Tests and Docs, below | CONTRIBUTIONS.md |
| 5 | Verify | the checks you owe for everything the diff touches, and everything it reaches, have run — or are recorded as skipped, and what was missing | verify-changes skill |
| 6 | Diff review | you have read your own diff (no debug leftovers, no unrelated files, nothing outside the scope agreed at Plan), and an agent that did not write it has reviewed it — Fresh-eyes review, below | a fresh subagent |
| 7 | Publish | attended: you were told to · unattended: the trigger is the instruction, and the pull request is a draft | commit-changes skill |
| 8 | Review | every comment answered, checks re-run, pushed to the same pull request — never a second one | gh api .../pulls/{n}/comments (inline review comments), gh pr checks |
| 9 | Aftercare | the issue's labels match reality — its state/* one, and intel/artificial 🤖 — and the branch has gone where it was meant to — Handing the branch back, below | gh issue edit |
Plans live under .agents/plans.local/ (gitignored) or .agents/plans/ (shared), each with a
.ledger.md beside it. A branch you did not create may carry some, and the ledger is the only record
of where that work stopped — so read them at Intake rather than re-deriving the task.
Unattended when you cannot get an answer before the next step — no user in the loop, empty stdin,
or CI/GITHUB_ACTIONS set. Where a step below would have you ask, the unattended answer is given
alongside it; where none is given, stop and report rather than guess. A stopped task is a useful
result; a wrong base or an invented issue number is not.
Skip only what this table names; an unstated skip is still an oversight.
| Kind | May skip |
|---|---|
| Question / read-only | this whole skill |
| Instruction, skill or comment text only — no product behaviour | tests, live browser, user-manual docs |
client/ with no user-visible pixel, route or client state | the verify-client-live skill |
| Small, one module, no new behaviour, attended | a plan file |
The hand-back is what you say when the work is done, and it is the same four things whether the reader is a terminal or a pull request body: what changed, and why where the diff doesn't say so; checks, which ran, what they said, which were skipped and what was missing; assumptions, every point where you decided something the request left open; and left out, anything in scope you did not do. An empty "left out" is a claim about the work rather than a formality — make sure it is true.
A task has an issue number, and Intake is where you get it. Attended, ask for it whenever the request arrives without one, and ask before the branch exists — the branch name embeds the number, and renaming a branch that already carries commits is worse than a question.
If the answer is that no issue exists, say that the task needs one and offer to file it (the
file-issue skill): the state/* labels, the branch, the pull request and the verification that
follows all key off the number, so work without one is invisible to everyone not in the room. Only once
the person declines does the change proceed unnumbered, on a feature/ or fix/ branch, and the
hand-back records that as an assumption.
Unattended, the trigger names the number or states that there is none. Neither: stop and report.
Never invent a number, and never reach for a plain descriptive subject to sidestep the question — a number belonging to an unrelated issue silently attaches your change to someone else's work.
A task gets its own branch. What varies is whether you ask first.
| You are on | Attended | Unattended |
|---|---|---|
develop matched exactly, release/*, stage/* | new branch, no question — nothing gets committed on a shared branch | new branch |
| any other branch | ask whether to cut a new branch from it; if the answer is no, keep working on it | new branch |
The base is an exact ref name, or the current HEAD. A version like "0.16", a release line or a
description is not one — ask, or stop and report where you cannot. Never fall back to develop: it is
the base only when it is what is checked out.
CONTRIBUTIONS.md → "Branch naming" owns the name. The rule to get right is that the area is a
_<area> suffix and never a second path segment: issue_4538/tags/<area> makes issue_4538/tags
permanently unusable. Given a name, use it exactly.
Where that branch already exists and it is this task's branch, it is the branch — a re-run continues
on it rather than inventing a -2. Where you cannot tell whose branch an existing one is, treat it as
someone else's and pick another name.
Once the branch exists, add state/underway to the issue if it doesn't carry it already.
A new branch is what gets a worktree. Attended, ask whether to work in one, together with the branch question rather than as a second round; staying in this checkout is a legitimate answer, not the default you assume. Unattended, always use one.
Its path is .worktrees/<branch>, which is gitignored. A vendor's own worktree action picks its own
location and names the branch itself, so use it only if it can be pointed at that path — the name is
CONTRIBUTIONS.md's to decide.
Copy or link the gitignored working state a check needs — installed dependencies, build caches,
.agents/localenv/, local environment files — from the main checkout instead of reinstalling it. Copy
an environment file without opening it: those are among the files agents must not read.
Remove the worktree once the branch has been handed back.
Every code change needs a test. Test every file you changed, not the easiest one: if you move logic into a new helper and edit the files that call it, the helper's test covers the helper, and the callers still need their own. If nothing in the module is tested at that level today, that is the gap, not a reason to skip.
Where the change is testable but the module has no runner for it, the runner is part of the work. Attended, say what is missing and ask whether to stand it up, since it is larger than the change that revealed it and may be wanted as its own task; where the answer is no, the test you could not write is a stated skip in the hand-back. Unattended, make the change and record the missing runner in the pull request body as a skip. Never stand one up silently, and never let its absence quietly cost the test.
Where the thing you changed has no behaviour to test at all, say so in the hand-back. An unstated skip reads as an oversight, and stating it is the only way anyone can tell the two apart.
The test you owe is for what you changed, never for the area's accumulated coverage debt: broadening past that is scope creep, and Diff review should catch it.
A user-visible change updates the manual page covering it — under docs/md/manual/, as its own
Docs: <what> commit on the same branch. That the functionality is undocumented today is not a reason
to leave it undocumented; it is the gap itself. Where no page covers it, attended, ask which page it
belongs in or whether to add one; unattended, add the page and say so in the pull request body. A new
page also goes into the nav in docs/mkdocs.yml, which lists every page by hand — one that isn't there
is not in the built manual.
Where the page already describes the behaviour correctly — a fix restoring what the manual says all along — the change owes nothing but the sentence saying so. That is the third answer, and reaching it is not the same as deciding a change needs no documentation.
The release note a change owes is CONTRIBUTIONS.md → "Documenting". The notes are kept per version
under docs/md/release_notes/.
A change with no user-visible surface — internal refactoring, build wiring, agent instructions — owes neither. Say so in the hand-back rather than leaving documentation unmentioned: deciding on your own that a change needs none, and staying quiet about it, is what this rule exists to catch.
The diff is reviewed by an agent that did not write it — spawn a subagent with its own context, never a fork, and hand it the diff rather than the conversation.
Give it the range — the branch against its base, or the pull request number — and tell it to read the
AGENTS.md covering every path in that diff. Give it no checklist of conventions; those files are
the checklist.
Where the session cannot spawn one, review the diff yourself as its own pass, reading those
AGENTS.md files rather than trusting your memory of having written it, and say in the hand-back that
no second agent saw it — weaker, not a skip.
It reports findings back as a short list (none is allowed). The implementing agent decides what
to act on, and acting on one owes the Verify step again.
Attended, this runs before the branch is published, and again after a push that changes the diff. Unattended, once before the draft pull request opens.
Attended, once the work is done and its checks pass, ask what happens to the branch: merged into the one you cut it from, or left as it is for a pull request. Where merging is asked for and the new branch has never been pushed, rebase it onto that branch and fast-forward — linear history, and nothing published gets rewritten. Once the branch has been pushed, merge instead: rewriting published history invalidates the review comments already on it, and force-pushing is out of the question either way.
Unattended, do what the task asked for and nothing more. No instruction means the branch stays as it is, with its draft pull request — finishing the work does not imply merging it.
Then the issue's labels, which the commit-changes skill → "Hand back" covers.
© epam, 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/implement-task of epam/cloud-pipeline.
Open the folder on GitHubat commit 5017688
Implement Task 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 |
|---|---|---|---|---|---|---|
| Implement Task this skillepam/cloud-pipeline | 162 | — | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| Contextual Commit Messagesyamadashy/repomix | 29k | 1 repos | ~2.7k | Automated safety check: Pass | MIT | |
| React Router Release Notes Prepremix-run/react-router | 57k | — | ~1.1k | Automated safety check: Pass | MIT | |
| PR Finalize Reviewmicrosoft/garnet | 12k | — | ~3.1k | Automated safety check: Pass | MIT | |
| Caveman Commitvishiri/fantasia-archive | 409 | 13 repos | ~642 | Automated safety check: Pass | GPL-3.0 | |
| ToolJet Multi-Repo CommitToolJet/ToolJet | 41k | — | ~1.3k | Automated safety check: Pass | AGPL-3.0 |
yamadashy/repomix
Writes Conventional Commits whose bodies carry action lines recording the intent, decisions and constraints behind a change, not only what changed.
remix-run/react-router
Polishes pending React Router change files before the versioning scripts run, and decides whether a long-form What's Changed section is warranted.
microsoft/garnet
Checks that a pull request's title and description match its implementation and reviews the code for Garnet best practices, reporting findings without posting them.
vishiri/fantasia-archive
Ultra-compressed commit message generator. An agent skill from vishiri/fantasia-archive.
ToolJet/ToolJet
Commits changes across ToolJet's root repo and its server/ee and frontend/ee submodules, writing messages from the diffs and updating submodule pointers in order.
addyosmani/agent-skills
Sets git habits for every change: short-lived branches, atomic commits with descriptive messages, clean pull requests, plus versioning, tagging and changelogs for releases.
epam/cloud-pipeline
Open a user-visible client/ change in a browser against a real Cloud Pipeline deployment.
epam/cloud-pipeline
Learn which toolchains and environments this workstation has and how to invoke them, or set them up when they are missing.
epam/cloud-pipeline
Required before you commit, push or open a pull request here, asked or not.
epam/cloud-pipeline
Required before adding or changing anything an agent reads — a convention in AGENTS.md, a procedure as a skill, a pattern-scoped rule.
epam/cloud-pipeline
Plan the work before you edit — its phases, the model and effort each takes, and whether it is worth a plan file with a ledger beside it.
epam/cloud-pipeline
Find and run the checks a change owes, from what it touches and what that can reach.
Categories
Start here before the first edit of any file — a one-liner and a docs change included. Implement Task is an agent skill from epam/cloud-pipeline. Start here before the first edit of any file — a one-liner and a docs change included.
Implement Task fits situations like: tasks that involve Commit messages.
Run `npx skills add epam/cloud-pipeline --skill implement-task -a claude-code`. Or copy the skill folder (.agents/skills/implement-task in epam/cloud-pipeline) into .claude/skills/implement-task in your project. Claude Code loads it when a task matches its description.
Run `npx skills add epam/cloud-pipeline --skill implement-task -a codex`. Or copy the skill folder (.agents/skills/implement-task in epam/cloud-pipeline) into .agents/skills/implement-task 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 epam/cloud-pipeline --skill implement-task -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/implement-task, .gemini/skills/implement-task, .github/skills/implement-task and .opencode/skills/implement-task in your project.
Going by SKILL.md and its folder, Implement Task 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.
Implement Task 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 11k 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 Implement Task: Contextual Commit Messages (yamadashy/repomix, 29k stars), React Router Release Notes Prep (remix-run/react-router, 57k stars), PR Finalize Review (microsoft/garnet, 12k stars) and Caveman Commit (vishiri/fantasia-archive, 409 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
epam (a GitHub organization) maintains it in epam/cloud-pipeline, which has 162 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 6, 2026.
Source: epam/cloud-pipeline on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.