Git Workflow and Versioning
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.
The CodeTrial conventions the gate does not settle on its own, several of them enforced by the git hooks instead - the register a comment, a commit message, an issue or PR title and a PR reply are…
$ npx skills add sysprog21/codetrial --skill codetrial-conventions -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install sysprog21/codetrial codetrial-conventions --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/sysprog21/codetrial.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/codetrial-conventions .claude/skills/codetrial-conventions && 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 "codetrial-conventions" agent skill from https://github.com/sysprog21/codetrial/tree/main/.claude/skills/codetrial-conventions into .claude/skills/codetrial-conventions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codetrial-conventions", 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/sysprog21/codetrial/tree/main/.claude/skills/codetrial-conventionsType 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 sysprog21/codetrial --skill codetrial-conventions -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install sysprog21/codetrial codetrial-conventions --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sysprog21/codetrial.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/codetrial-conventions .agents/skills/codetrial-conventions && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "codetrial-conventions" agent skill from https://github.com/sysprog21/codetrial/tree/main/.claude/skills/codetrial-conventions into .agents/skills/codetrial-conventions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codetrial-conventions", 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 sysprog21/codetrial --skill codetrial-conventions -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install sysprog21/codetrial codetrial-conventions --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sysprog21/codetrial.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/codetrial-conventions .cursor/skills/codetrial-conventions && 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 "codetrial-conventions" agent skill from https://github.com/sysprog21/codetrial/tree/main/.claude/skills/codetrial-conventions into .cursor/skills/codetrial-conventions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codetrial-conventions", 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/sysprog21/codetrial.git --path .claude/skills/codetrial-conventions--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 sysprog21/codetrial --skill codetrial-conventions -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install sysprog21/codetrial codetrial-conventions --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sysprog21/codetrial.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/codetrial-conventions .gemini/skills/codetrial-conventions && 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 "codetrial-conventions" agent skill from https://github.com/sysprog21/codetrial/tree/main/.claude/skills/codetrial-conventions into .gemini/skills/codetrial-conventions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codetrial-conventions", 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 sysprog21/codetrial codetrial-conventionsInstalls 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 sysprog21/codetrial --skill codetrial-conventions -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/sysprog21/codetrial.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/codetrial-conventions .github/skills/codetrial-conventions && 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 "codetrial-conventions" agent skill from https://github.com/sysprog21/codetrial/tree/main/.claude/skills/codetrial-conventions into .github/skills/codetrial-conventions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codetrial-conventions", 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 sysprog21/codetrial --skill codetrial-conventions -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install sysprog21/codetrial codetrial-conventions --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sysprog21/codetrial.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/codetrial-conventions .opencode/skills/codetrial-conventions && 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 "codetrial-conventions" agent skill from https://github.com/sysprog21/codetrial/tree/main/.claude/skills/codetrial-conventions into .opencode/skills/codetrial-conventions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codetrial-conventions", 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.
codetrial-conventionsThe CodeTrial conventions the gate does not settle on its own, several of them enforced by the git hooks instead - the register a comment, a commit message, an issue or PR title and a PR reply are…
Codetrial Conventions is an agent skill from sysprog21/codetrial. The CodeTrial conventions the gate does not settle on its own, several of them enforced by the git hooks instead - the register a comment, a commit message, an issue or PR title and a PR reply are written in, what stays out of a public issue or PR, the untracked working docs at the repo root, where multi-byte characters are allowed and where they are not, deleting a redundant surface instead of deprecating it, the contracts in docs/ that refuse a change, and the repository layout. Use when drafting a commit…
Its SKILL.md is about 2.3k 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 and Pull requests. It works with Git. The repository describes itself as: A live technical interview simulator. The licence is MIT.
Read from SKILL.md and the folder at commit a77b0db. 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:
gitcargomakeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use 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.
Codetrial Conventions loads about 2.3k tokens when it runs. Until then it costs about 214 tokens; SKILL.md has 1,287 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 sysprog21/codetrial at commit a77b0db, republished under its MIT licence (© sysprog21). 1,287 words, ~2,321 tokens.
.claude/skills/codetrial-conventions/SKILL.md (or your agent's skills folder).The gate settles formatting and correctness. cargo fmt, Prettier, ESLint,
ruff and shellcheck run in scripts/test.sh, so none of that is here. What
is here is what a reviewer would otherwise have to say out loud, plus the rules
the git hooks enforce, so an agent knows them before a hook refuses. Install
them with make hooks.
Two tracked files carry the rest, and this one restates neither. README.md
wins on what the project is and how it runs.
CONTRIBUTING.md is the public half of the rules
below, the commit message, the issue and pull request register, and the branch a
pull request comes from, and it wins where the two disagree. Read it. What is
left here is the agent's half: the calibration this tree's own log gives, which
repository gh is pointed at, how drafted text reaches it, and what needs the
user's approval first.
./scripts/git-commit-msg.sh --rules prints what the hook enforces, and
CONTRIBUTING.md says what the body has to carry. Neither gives the
calibration, so run this when a subject is hard to fit:
git log --no-merges --format=%s | awk '{print length}' | sort -nMarkdown files are exempt from the ASCII rule and use ordinary GitHub Markdown,
so a backtick belongs in docs/ and not in a commit subject.
Chinese, and CJK generally, stays out of src/, web/ and tests/ even when
the conversation that produced the change was in Chinese. The product's
surfaces are English. A test that genuinely needs multi-byte input to pin a
character-boundary rule should use characters that read as a fixture rather
than as prose in any language: Greek letters, accented Latin, an emoji. Say in
the comment that the byte width is the point.
Every line of a comment says something the code cannot, and this tree carries long ones where the reasoning is long. Delete anything restating the statement below it.
let deadline = start + duration; // add the durationlet deadline = start + duration; // truncated to whole minutes above, so the page and the interviewer end at the same numberNever point a comment, a docstring or a docs/ page at TODO.md. It is
untracked and per-developer, so the reference dangles for everyone else. Code
may name the path where it genuinely reads the file, and a runtime diagnostic
may print it so the reader can navigate.
TODO.md, DONE.md and CLAUDE.md are excluded through .git/info/exclude,
not through .gitignore, because the exclusion is one person's habit and
.gitignore would push it onto everybody. Never git add, stage, commit or
delete them, and never assume a clone has them. Reports and analyses stay out
of the tree the same way: a scratch directory, not a new tracked file.
CONTRIBUTING.md names the owning documents and the rule that a document
refusing your change is the answer rather than an oversight. Two things it does
not say.
Never restate one of these rules from memory or from this file: a paraphrase drifts, and the document is what binds.
And what being refused looks like. "Persist the finished session and regenerate
the report later" reads as an obvious improvement, and the caching rule in
docs/provider-cost-and-degradation.md refuses it. The move is to propose
changing that document on purpose, with the reason, or to leave it alone.
In CONTRIBUTING.md, together with the compatibility promise it answers to.
CONTRIBUTING.md has the register, the titles, the bodies, the redaction rule
and the branch rules. What follows is only what an agent needs on top of them.
Conversation may use the contributor's language; everything posted to GitHub is
clear English, with identifiers and error messages kept verbatim. The target is
sysprog21/codetrial; pass --repo sysprog21/codetrial to gh, because on a
fork or a copy the checkout's default resolves elsewhere.
A vulnerability report goes to the user to hand to a maintainer, never into a public issue. A public thread may carry a request for a private contact and nothing else.
Nothing is written to GitHub until the user has approved the exact text, by saying yes to it or by dictating it and asking for it to be posted. The approval covers the writes shown. Approving a PR submission also covers later fix pushes to that branch and the review replies gh-submit makes while getting its checks green; any other comment, edit, close or merge needs its own.
Never paste drafted text into shell source, where backticks and $() in a
quoted error would run. Write the body to a UTF-8 file in a scratch directory
with a file tool and pass --body-file; put the title in a file too and pass
--title "$(cat "$SCRATCH/title.txt")". Read the result back, and after a
timeout check whether the write landed before retrying.
Drafting an issue or PR body, or planning a first contribution, is codetrial-contribute. Reviewing the backlog for duplicates and incomplete reports, and sweeping the open pull requests, is codetrial-triage. Approving a held workflow run, resolving an outdated review thread, hiding a superseded review and posting its fixed rebase request need no per-thread approval of text; that skill says when a sweep applies them without a separate confirmation.
The branch rules and what a review thread may carry are in CONTRIBUTING.md.
The addition here is why the thread stays thin: the commit body already carries
what and why, so a reply that re-summarizes the diff is telling the reviewer
what git is showing them.
README.md has the tree under "Repository layout" and wins on it. Two
directories it does not name matter as soon as you add a test:
tests/unit/ Unit test bodies, compiled into src/ by `#[path]`
tests/common/ What the integration tests sharesrc/ holds implementation. A file there may declare a test module, and may
carry a #[cfg(test)] item that a test needs to reach, but must not contain a
test body. No gate lane enforces that, so grep -rn '#\[test\]' src/ is the
check, and it returns nothing today.
#[cfg(test)]
#[path = "../tests/unit/gemini.rs"]
mod tests;Three lines, and the body lives in tests/unit/, mirroring the path under
src/. tests/unit/web/pool.rs holds what src/web/pool.rs declares.
The indirection is what keeps both halves of the promise. A test under
tests/*.rs is an integration test: it links the plain rlib and can reach only
the public API, so moving these outright would have meant publishing internals
for the tests' benefit. Declared this way they are still unit tests -- same
module path, super:: still the containing module, private and pub(crate)
items still in reach -- and none of it is visible to a dependent. The two halves
cannot share a module, which is why tests/common/ exists and why the credential
predicate is deliberately written twice.
Four rules follow, and each of them cost something to learn:
tests/<dir>/main.rs. Cargo reads that as an
integration-test target and compiles it a second time as a crate root, where
every super:: in it fails. src/main.rs declares tests/unit/bin.rs for
this reason. Any other name under tests/unit/ is inert to autodiscovery.include_str! and include_bytes! resolve against the file that writes
them, so a test reading its own production source needs the path rewritten
when it moves. Two such tests failed loudly on the move and two more kept
passing while reading the test file instead of the source, which is worse.src/accounts/schema.rs declares tests/unit/accounts/schema.migration_tests.rs.tests/unit/ is not scanned by the gate's browser or Python lanes and has no
main.rs, so nothing under it becomes a target on its own. It compiles only
because something in src/ names it.Generated files live under web/ but are owned by problem-bank/ and by the
generators in scripts/; editing one by hand is a drift the gate catches.
codetrial-verify names the generators.
© sysprog21, 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 .claude/skills/codetrial-conventions of sysprog21/codetrial.
Open the folder on GitHubat commit a77b0db
Codetrial Conventions 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 |
|---|---|---|---|---|---|---|
| Codetrial Conventions this skillsysprog21/codetrial | 149 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Git Workflow and Versioningaddyosmani/agent-skills | 103k | 2 repos | ~3.5k | Automated safety check: Notes | MIT | |
| React Router Pull Request Creatorremix-run/react-router | 57k | — | ~2.5k | Automated safety check: Pass | MIT | |
| Verdaccio Pull Request Workflowverdaccio/verdaccio | 18k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Emoji Commit ConventionsbaptisteArno/typebot.io | 11k | — | ~424 | Automated safety check: Pass | Custom licence | |
| Draft Pull Request Creatorwordpress-mobile/WordPress-Android | 3.2k | — | ~881 | Automated safety check: Notes | GPL-2.0 |
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.
remix-run/react-router
Packages finished React Router work into a draft pull request: branch, commit, push, a written PR body and the right GitHub labels.
verdaccio/verdaccio
Takes a change through a verdaccio pull request: branch, local checks, changeset, title and body, labels, CI and review rounds, and ports to other release lines.
baptisteArno/typebot.io
Sets the repository's convention for commit messages and pull request titles: one emoji prefix for the main intent, a concise title and clean follow-up commits.
wordpress-mobile/WordPress-Android
Commits and pushes current changes, writes a pull request title and body from the branch history and template, and opens a draft PR on GitHub after you approve it.
tisfeng/Easydict
创建或复用当前 checkout 已提交变更的 GitHub PR,必要时推送任务分支。PR 审查使用 review-pr;仅本地提交使用 git-commit。
sysprog21/codetrial
Help CodeTrial contributors turn observations into clear English GitHub issues, small contribution plans, and pull request descriptions, and see them through.
sysprog21/codetrial
How a CodeTrial change is validated - scripts/test.sh as the credential-free gate, which generated artifacts have to be regenerated before it passes, the checks that need credentials or a browser…
sysprog21/codetrial
The CodeTrial browser half and the boundary it talks across - why web/ has no build step, how a file reaches the browser embedded or from disk, the vendored checksum-pinned assets, the data-channel…
Works with
Categories
The CodeTrial conventions the gate does not settle on its own, several of them enforced by the git hooks instead - the register a comment, a commit message, an issue or PR title and a PR reply are…. Codetrial Conventions is an agent skill from sysprog21/codetrial. The CodeTrial conventions the gate does not settle on its own, several of them enforced by the git hooks instead - the register a comment, a commit message, an issue or PR title and a PR reply are written in, what stays out of a public issue or PR, the untracked working docs at the repo root, where multi-byte characters are allowed and where they are not, deleting a redundant surface instead of deprecating it, the contracts in docs/ that refuse a change, and the repository layout.
Codetrial Conventions fits situations like: drafting a commit message; choosing an issue; pushing a branch to open a pull request from; A public surface.
Run `npx skills add sysprog21/codetrial --skill codetrial-conventions -a claude-code`. Or copy the skill folder (.claude/skills/codetrial-conventions in sysprog21/codetrial) into .claude/skills/codetrial-conventions in your project. Claude Code loads it when a task matches its description.
Run `npx skills add sysprog21/codetrial --skill codetrial-conventions -a codex`. Or copy the skill folder (.claude/skills/codetrial-conventions in sysprog21/codetrial) into .agents/skills/codetrial-conventions 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 sysprog21/codetrial --skill codetrial-conventions -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/codetrial-conventions, .gemini/skills/codetrial-conventions, .github/skills/codetrial-conventions and .opencode/skills/codetrial-conventions in your project.
Going by SKILL.md and its folder, Codetrial Conventions needs the command-line tools its instructions call (git, cargo and make). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use 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.
Codetrial Conventions 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.3k tokens (SKILL.md is roughly 9.3k 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 Codetrial Conventions: Git Workflow and Versioning (addyosmani/agent-skills, 103k stars), React Router Pull Request Creator (remix-run/react-router, 57k stars), Verdaccio Pull Request Workflow (verdaccio/verdaccio, 18k stars) and Emoji Commit Conventions (baptisteArno/typebot.io, 11k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
sysprog21 (a GitHub organization) maintains it in sysprog21/codetrial, which has 149 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 7, 2026.
Source: sysprog21/codetrial on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.