Verdaccio Pull Request Workflow
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.
Answers questions about contributing to the evlog repository: changesets, commit and PR title rules, the Definition of Done and where its authored build guides live.
$ npx skills add evloghq/evlog --skill contributing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install evloghq/evlog contributing --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/evloghq/evlog.git skills-src && mkdir -p .claude/skills && cp -r skills-src/apps/evi/agent/skills/contributing .claude/skills/contributing && 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 "contributing" agent skill from https://github.com/evloghq/evlog/tree/main/apps/evi/agent/skills/contributing into .claude/skills/contributing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "contributing", 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/evloghq/evlog/tree/main/apps/evi/agent/skills/contributingType 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 evloghq/evlog --skill contributing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install evloghq/evlog contributing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/evloghq/evlog.git skills-src && mkdir -p .agents/skills && cp -r skills-src/apps/evi/agent/skills/contributing .agents/skills/contributing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "contributing" agent skill from https://github.com/evloghq/evlog/tree/main/apps/evi/agent/skills/contributing into .agents/skills/contributing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "contributing", 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 evloghq/evlog --skill contributing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install evloghq/evlog contributing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/evloghq/evlog.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/apps/evi/agent/skills/contributing .cursor/skills/contributing && 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 "contributing" agent skill from https://github.com/evloghq/evlog/tree/main/apps/evi/agent/skills/contributing into .cursor/skills/contributing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "contributing", 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/evloghq/evlog.git --path apps/evi/agent/skills/contributing--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 evloghq/evlog --skill contributing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install evloghq/evlog contributing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/evloghq/evlog.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/apps/evi/agent/skills/contributing .gemini/skills/contributing && 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 "contributing" agent skill from https://github.com/evloghq/evlog/tree/main/apps/evi/agent/skills/contributing into .gemini/skills/contributing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "contributing", 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 evloghq/evlog contributingInstalls 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 evloghq/evlog --skill contributing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/evloghq/evlog.git skills-src && mkdir -p .github/skills && cp -r skills-src/apps/evi/agent/skills/contributing .github/skills/contributing && 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 "contributing" agent skill from https://github.com/evloghq/evlog/tree/main/apps/evi/agent/skills/contributing into .github/skills/contributing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "contributing", 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 evloghq/evlog --skill contributing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install evloghq/evlog contributing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/evloghq/evlog.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/apps/evi/agent/skills/contributing .opencode/skills/contributing && 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 "contributing" agent skill from https://github.com/evloghq/evlog/tree/main/apps/evi/agent/skills/contributing into .opencode/skills/contributing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "contributing", 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.
contributingAnswers questions about contributing to the evlog repository: changesets, commit and PR title rules, the Definition of Done and where its authored build guides live.
This one is deliberately short and sends the agent to the repository's own AGENTS.md before it gives specifics, because that file changes. It then lists the points contributors most often get wrong: a changeset is required for any change users would notice, commits follow Conventional Commits with a lowercase subject, and PR title scopes must come from the closed list in the semantic-pull-request workflow.
Other rules are writing a failing regression test before a bug fix, registering new exports in package.json and tsdown.config.ts, and updating SKILL.md files in the same PR when a change touches something they document. The Definition of Done asks for lint, typecheck and test to exit 0, a matching test, and JSDoc on new public APIs, and the skill points to authored procedures for adding an adapter, enricher, framework integration or map rule.
7 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 59a105f. 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:
pnpmgitnpxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pnpm, git and npx, 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.
evlog Contributing Guide loads about 2.4k tokens when it runs. Until then it costs about 84 tokens; SKILL.md has 1,384 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 evloghq/evlog at commit 59a105f, republished under its MIT licence (© evloghq). 1,384 words, ~2,406 tokens.
.claude/skills/contributing/SKILL.md (or your agent's skills folder).The repository's own AGENTS.md is the source of truth for all of this. It changes; this skill does not restate it in full on purpose. Read AGENTS.md from the repo before giving specifics.
Your system context has a Workspace section saying whether the repository is checked out on this turn. With a checkout, read_file /workspace/AGENTS.md: free, and at the ref you were summoned on. Without one, github__getFileContent on AGENTS.md at the root of the repository that section names.
What follows is the shape of the answer, so you know what to look for and what to warn about.
pnpm changeset, committed alongside the code. Changes confined to apps/* or examples/* never need one. A PR without a changeset for a user-facing change does not merge.feat: add stream server, not feat: Add stream server. Omit the scope when the change is cross-cutting; never use evlog as a scope. A new subsystem needs its scope registered in both .github/workflows/semantic-pull-request.yml and .github/pull_request_template.md, and because title validation reads the base branch, that registration has to land in an earlier PR..github/workflows/semantic-pull-request.yml holds the only scopes CI accepts. Anything else fails Validate PR title, and a scope that merely sounds plausible (evlog, the package name, the app directory) is the usual way that happens. A change confined to apps/docs is docs:, with no scope: docs is already the type.packages/evlog/package.json (exports and typesVersions) and tsdown.config.ts..agents/skills/ and the published skills/.AGENTS.md lists eight conditions. The ones worth repeating up front: pnpm run lint, pnpm run typecheck and pnpm run test all exit 0; the change has a matching test; new public APIs have JSDoc.
For anything substantial, the repo already has a step-by-step skill. Read the relevant one with github__getFileContent rather than improvising:
| Task | Skill |
|---|---|
| New drain adapter | .agents/skills/create-adapter/SKILL.md |
| New enricher | .agents/skills/create-enricher/SKILL.md |
| New framework integration | .agents/skills/create-framework-integration/SKILL.md |
New evlog map rule or framework adapter | .agents/skills/create-map-rule/SKILL.md |
Each covers source, build config, package exports, tests, and every doc page that has to move with it. They are long and specific; point people at them and read the relevant section rather than summarizing from memory. On a GitHub turn they are on disk under /workspace/.agents/skills/.
The sandbox carries a ready-to-work checkout at /workspace/repo, with dependencies installed and dev:prepare already run; each session starts on the current main. When you have written or edited code, run the checks there rather than asserting they pass:
cd /workspace/repo
pnpm run lint
pnpm run typecheck
pnpm --filter evlog exec vitest run test/path/to/fileIf you could not run the checks, say so plainly in the pull request body instead of implying a green build.
For authored or changed prose, run the content review even when the scanner scores 100. Capture each page with content_snapshot and send its identity to content_review, along with sources and executed-check results. Source edits must be committed before this handoff; page text can remain uncommitted. The reviewer shares the parent workspace and must use content_load. Do not edit files or change Git state while reviewers are reading. Wait for all readers to finish, recapture and compare the current identity with the rewrite input, then apply reviewed changes serially with the parent’s existing editing tools. A changed identity requires a fresh review first. Capture and review the saved file again after editing; a proposed rewrite is not verification of the saved result. A critical factual error or missing evidence blocks readiness. Follow content-pass for the verification procedure, while keeping the scope the maintainer requested.
Read the changed pages together before shipping. Each should answer a distinct reader question, agree on behavior and link to shared explanations instead of repeating them. Record the revision, command and observed result for runtime claims. After changing relevant code or examples, rerun the affected checks.
The whole flow runs in /workspace/repo; nothing ships through the GitHub file API.
main the session starts on: git checkout -b <branch>.before-after, step 0) so it warms while they run. Before the first check of the session, call turbo__enable_remote_cache once, then prefix each check with TURBO_REMOTE_CACHE_READ_ONLY=true: turbo reuses the artifacts CI already built, and the template cache covers the rest, so only what the diff affects actually runs..changeset/<some-name>.md by hand with the --- frontmatter naming the package and bump plus a consumer-facing description (pnpm changeset is interactive and cannot run here). Look at an existing file in .changeset/ for the exact shape.git__push. That tool is the only way code reaches the remote: never the GitHub file API. It refuses main and master, and only maintainer sessions have it. For a repository other than the home one, git__checkout it, git__install its dependencies, and pass the same repository to git__push; the whole flow then runs in that checkout instead of /workspace/repo, with no cache, so its checks run cold.github__createPullRequest only after the local readiness gate is complete: the diff is coherent, required tests and changesets are present, and every applicable local check is green. A draft is not a holding area for unfinished autonomous work; if the gate is incomplete, keep the result local and report the blocker instead.Validate PR title settles in seconds and is the check your own title most often breaks. Fix any required failure before requesting hugorcd via github__requestReviewers. A reviewer request means Evi considers the pull request mergeable.A pull request is not finished when it is open. Before you report it and request review, the local checks are green, CI is green, and you have looked at the rendered result of anything visual. "Lint and typecheck pass" is a claim about the build, not about whether the thing you wrote is correct or reads well.
pnpm --filter @evlog/cli exec evlog map --json --no-write scores an entry point's observability and is built for exactly this: it is the fastest way to ground a "should this be logged" answer in the tree you are working in. Run the workspace copy rather than npx @evlog/cli, which would fetch and execute whatever version the registry currently serves.
A body that only describes its change in prose is not finished, whatever kind of PR it carries. Show it:
| Change | Evidence in the body |
|---|---|
| New or changed public API | A usage snippet, even for a one-line addition |
| Bug fix | The input and output before and after, in a fenced or diff block |
| CLI change | The real terminal output, captured while running it |
| Anything rendered, docs edits included | A before-after capture |
Prose alone is only for cases where none of these is possible, and the body says so plainly when that is the case. A snippet or captured output is evidence, not filler: the style rule keeps the prose short, not the proof.
packages/evlog/test/ mirrors src/ and uses Vitest. packages/evlog/test/README.md has the file layout, the framework runtime fidelity matrix, and the helper decision table; read it before answering a testing question. Framework tests must drive the framework's real request driver (supertest, app.inject, app.handle, ...), never a hand-rolled stand-in.
The repo has an explicit "no slop" section: no defensive code the surrounding file does not have, no silent fallbacks, no as any, comments only for constraints the code cannot express, no speculative options. It applies to prose too: test names, error messages, changeset descriptions, PR bodies. Factual and plain.
© evloghq, 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 apps/evi/agent/skills/contributing of evloghq/evlog.
Open the folder on GitHubat commit 59a105f
evlog Contributing Guide 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 |
|---|---|---|---|---|---|---|
| evlog Contributing Guide this skillevloghq/evlog | 1.9k | — | ~2.4k | Automated safety check: Pass | MIT | |
| Verdaccio Pull Request Workflowverdaccio/verdaccio | 18k | — | ~1.9k | Automated safety check: Pass | MIT | |
| React Router Release Notes Prepremix-run/react-router | 57k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Git Workflow and Versioningaddyosmani/agent-skills | 103k | 2 repos | ~3.5k | Automated safety check: Notes | MIT | |
| Verdaccio PR Reviewverdaccio/verdaccio | 18k | — | ~1.7k | Automated safety check: Pass | MIT | |
| Commit And PR Messagessuperplanehq/superplane | 7.7k | — | ~1.6k | Automated safety check: Pass | Custom licence |
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.
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.
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.
verdaccio/verdaccio
Reviews an existing verdaccio/verdaccio pull request end to end, verifies each finding and reports whether it is mergeable, optionally fixing it on the PR branch.
superplanehq/superplane
Write Git commit messages and pull request titles/descriptions using the Chris Beams / Tim Pope conventions (subject/body split, ~50-char subject, imperative mood, why-not-how body) plus ASD-STE100…
codewhale-hq/Codewhale
Decides how verified work should reach main, directly, in a worktree or on an integration branch, while keeping contributor credit and respecting merge gates.
evloghq/evlog
Walks through adding a new built-in evlog drain adapter for an observability platform: source, build config, exports, tests, docs and PR scope.
evloghq/evlog
Guides adding a new built-in enricher to the evlog package, covering the source, tests, docs, README, a related skill and a changeset.
evloghq/evlog
Walks a contributor through adding a new HTTP framework integration to the evlog logging package: middleware source, build entry, exports, tests, example app and docs.
evloghq/evlog
Walks through adding a new rule or framework adapter to `evlog map` in @evlog/cli, from the rule source and registry to types, tests, docs and the published skill.
evloghq/evlog
Rules for writing and reviewing evlog docs, blog posts, READMEs, skills and AGENTS.md files, with separate review and rewrite roles, a house voice and a catalog of AI-sounding tells.
evloghq/evlog
Produce a before/after visual comparison of an evlog surface (landing, docs, telemetry, playgrounds) and share it as public Blob URLs.
Works with
Categories
Answers questions about contributing to the evlog repository: changesets, commit and PR title rules, the Definition of Done and where its authored build guides live. md before it gives specifics, because that file changes. It then lists the points contributors most often get wrong: a changeset is required for any change users would notice, commits follow Conventional Commits with a lowercase subject, and PR title scopes must come from the closed list in the semantic-pull-request workflow.
evlog Contributing Guide fits situations like: opening a pull request to the evlog repository; choosing a valid Conventional Commit type and scope for an evlog change; checking whether a change needs a changeset; adding a new adapter, enricher or framework integration to evlog.
Run `npx skills add evloghq/evlog --skill contributing -a claude-code`. Or copy the skill folder (apps/evi/agent/skills/contributing in evloghq/evlog) into .claude/skills/contributing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add evloghq/evlog --skill contributing -a codex`. Or copy the skill folder (apps/evi/agent/skills/contributing in evloghq/evlog) into .agents/skills/contributing 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 evloghq/evlog --skill contributing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/contributing, .gemini/skills/contributing, .github/skills/contributing and .opencode/skills/contributing in your project.
Going by SKILL.md and its folder, evlog Contributing Guide needs the command-line tools its instructions call (pnpm, git and npx). Our summary lists: Access to the evlog repository's AGENTS.md; pnpm.
SKILL.md contains no URLs. Its commands use git and npx, 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.
evlog Contributing Guide 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.4k tokens (SKILL.md is roughly 9.6k 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 evlog Contributing Guide: Verdaccio Pull Request Workflow (verdaccio/verdaccio, 18k stars), React Router Release Notes Prep (remix-run/react-router, 57k stars), Git Workflow and Versioning (addyosmani/agent-skills, 103k stars) and Verdaccio PR Review (verdaccio/verdaccio, 18k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
evloghq (a GitHub organization) maintains it in evloghq/evlog, which has 1,887 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on October 7, 2026.
Source: evloghq/evlog on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.