Go Pedantry
chromedp/chromedp
This skill should be used when the user is writing Go code and needs guidance on Go-specific pedantry: error wrapping with fmt.Errorf and %w, interface design (accept interfaces return structs)…
End-to-end procedure for shipping a change to the Petrinaut packages (libs/@hashintel/petrinaut, petrinaut-core, petrinaut-cli, apps/petrinaut-opt, apps/petrinaut-website): the verification gates…
$ npx skills add hashintel/hash --skill petrinaut-shipping -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hashintel/hash petrinaut-shipping --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/hashintel/hash.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/petrinaut-shipping .claude/skills/petrinaut-shipping && 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 "petrinaut-shipping" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/petrinaut-shipping into .claude/skills/petrinaut-shipping/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "petrinaut-shipping", 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/hashintel/hash/tree/main/.agents/skills/petrinaut-shippingType 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 hashintel/hash --skill petrinaut-shipping -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hashintel/hash petrinaut-shipping --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashintel/hash.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/petrinaut-shipping .agents/skills/petrinaut-shipping && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "petrinaut-shipping" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/petrinaut-shipping into .agents/skills/petrinaut-shipping/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "petrinaut-shipping", 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 hashintel/hash --skill petrinaut-shipping -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hashintel/hash petrinaut-shipping --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashintel/hash.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/petrinaut-shipping .cursor/skills/petrinaut-shipping && 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 "petrinaut-shipping" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/petrinaut-shipping into .cursor/skills/petrinaut-shipping/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "petrinaut-shipping", 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/hashintel/hash.git --path .agents/skills/petrinaut-shipping--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 hashintel/hash --skill petrinaut-shipping -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hashintel/hash petrinaut-shipping --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashintel/hash.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/petrinaut-shipping .gemini/skills/petrinaut-shipping && 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 "petrinaut-shipping" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/petrinaut-shipping into .gemini/skills/petrinaut-shipping/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "petrinaut-shipping", 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 hashintel/hash petrinaut-shippingInstalls 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 hashintel/hash --skill petrinaut-shipping -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hashintel/hash.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/petrinaut-shipping .github/skills/petrinaut-shipping && 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 "petrinaut-shipping" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/petrinaut-shipping into .github/skills/petrinaut-shipping/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "petrinaut-shipping", 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 hashintel/hash --skill petrinaut-shipping -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hashintel/hash petrinaut-shipping --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashintel/hash.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/petrinaut-shipping .opencode/skills/petrinaut-shipping && 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 "petrinaut-shipping" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/petrinaut-shipping into .opencode/skills/petrinaut-shipping/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "petrinaut-shipping", 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.
petrinaut-shippingEnd-to-end procedure for shipping a change to the Petrinaut packages (libs/@hashintel/petrinaut, petrinaut-core, petrinaut-cli, apps/petrinaut-opt, apps/petrinaut-website): the verification gates…
Petrinaut Shipping is an agent skill from hashintel/hash. End-to-end procedure for shipping a change to the Petrinaut packages (libs/@hashintel/petrinaut, petrinaut-core, petrinaut-cli, apps/petrinaut-opt, apps/petrinaut-website): the verification gates per package, the changeset step, docs sync, pre-PR hygiene checks, and CI expectations from draft to ready. Use when implementing any change in these packages, when creating a PR for Petrinaut work, when running tests or lints for them, or when checking CI on a Petrinaut PR.
Its SKILL.md is about 1.4k 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 Linting and formatting. The repository describes itself as: 🚀 The open-source, multi-tenant platform for self-building knowledge graphs and simulation. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit 6d23153. 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:
yarnghturbomiseuvgitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use yarn, gh, uv 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.
Petrinaut Shipping loads about 1.4k tokens when it runs. Until then it costs about 123 tokens; SKILL.md has 612 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 hashintel/hash at commit 6d23153, republished under its Apache-2.0 licence (© hashintel). 612 words, ~1,357 tokens.
.claude/skills/petrinaut-shipping/SKILL.md (or your agent's skills folder).Standing conventions (changeset policy, docs and diagram placement, CI quirks, the petrinaut-opt boundary) live in libs/@hashintel/petrinaut/AGENTS.md and apps/petrinaut-opt/AGENTS.md. This skill is the procedure that applies them.
Run for every touched package, after every increment:
yarn fix:format >/dev/null 2>&1
turbo run build test:unit lint:tsc lint:eslint --filter @hashintel/petrinaut --filter @hashintel/petrinaut-core --filter @hashintel/petrinaut-cli --force --output-logs errors-only
yarn lint:formatturbo is the version pinned by mise in .config/mise/config.toml; running it through npx bypasses the pin and downloads the latest release.--filters to the touched packages; add --filter @apps/petrinaut-website when it consumes the change.build belongs in that list. test:unit depends on ^build, which builds dependencies and not the selected package, so the React Compiler check, the browser-entry check, and the website's Vite build are otherwise never run.yarn workspace @local/petrinaut-arch-docs lint:arch-docs, and add the layer declaration the AGENTS.md architecture section calls for.content/diagrams/*.d2 changed: lint:arch-docs does not compile MDX or render D2. Run the site build once before pushing: mise x -- yarn exec turbo run build --filter @apps/petrinaut-docs. D2 labels containing : or [ must be quoted.turbo run test:unit lint:ruff lint:types --filter @apps/petrinaut-opt --filter @local/petrinaut-python --force. A plain uv run pytest skips the end-to-end tests when the CLI bundle is missing, and skips the comparison of regenerated openapi.json that @apps/petrinaut-opt runs as part of its own test:unit.yarn lint:format prints its verdict before its final line, so check the exit code rather than the last line of output.One patch changeset per PR covering the published packages the PR touches (@hashintel/petrinaut, @hashintel/petrinaut-core); none for pure refactors. Keep the text to one or two plain sentences. See the AGENTS.md conventions for the full policy.
User-visible behaviour changes update the user guide in the same PR; new pages need registration and a raw import, both test-enforced. The steps are in the "User-facing docs" section of libs/@hashintel/petrinaut/AGENTS.md. Doc screenshots cannot be uploaded by an agent: produce candidate captures, list the exact pages and sections to re-capture, and flag "screenshots pending" in the PR body and the summary.
git diff --stat against the base: no accidental directories, no unstaged leftovers, no generated output, no mise.lock churn.Bin line in the stat for a text file means escape sequences became literal control bytes; fix it before pushing or the diff is unreviewable.Open the PR as a draft, body per the repo PR template.
Watch checks until the run settles, and decide that in jq. Neither the exit status nor a pending count answers it alone: gh pr checks exits non-zero when checks are pending, when they failed, and when none are scheduled yet, and with --json it prints [] before any exist, so a pending count of zero also reads as "finished" on a PR that has not started.
settled='[length, ([.[] | select(.bucket == "pending")] | length)] | .[0] > 0 and .[1] == 0'
for _ in $(seq 60); do
[ "$(gh pr checks NNNN --json bucket --jq "$settled" 2>/dev/null)" = "true" ] && break
sleep 60
done
gh pr checks NNNNThe wait ends once checks exist and none are pending, failures included, so the table below reports them. Anything else, an empty list or a failed call, keeps waiting. The loop is bounded and the last call keeps its output, so an expired token or an unreachable API surfaces as an error rather than sleeping for ever.
Judge failures against the CI bullet in the AGENTS.md conventions (Bench-CI non-blocking, the known flaky check, Vercel-side docs failures) before treating them as caused by the diff.
Flip to ready only when checks are green. AI reviewers run at that point; triage their threads rather than leaving them unresolved.
End any turn that changed the branch by stating what was committed and pushed, or that nothing was.
© hashintel, 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/petrinaut-shipping of hashintel/hash.
Open the folder on GitHubat commit 6d23153
Petrinaut Shipping 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 |
|---|---|---|---|---|---|---|
| Petrinaut Shipping this skillhashintel/hash | 1.7k | — | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| Go Pedantrychromedp/chromedp | 13k | — | ~3.7k | Automated safety check: Pass | MIT | |
| Kedro Babysitkedro-org/kedro | 11k | — | ~4k | Automated safety check: Pass | Custom licence | |
| Trellis Checkanjiemo/SunnyBeach | 178 | 7 repos | ~666 | Automated safety check: Pass | Apache-2.0 | |
| WooCommerce Dev Cyclewoocommerce/woocommerce | 11k | 3 repos | ~431 | Automated safety check: Pass | Custom licence | |
| Adk Setupgoogle/adk-python | 22k | — | ~993 | Automated safety check: Notes | Apache-2.0 |
chromedp/chromedp
This skill should be used when the user is writing Go code and needs guidance on Go-specific pedantry: error wrapping with fmt.Errorf and %w, interface design (accept interfaces return structs)…
kedro-org/kedro
Run Kedro's local lint / format / type-check / tests on changed files (uses the project's pre-commit hooks, ruff, mypy, pytest, lint-imports, detect-secrets, Make targets — in the right venv), or…
anjiemo/SunnyBeach
Comprehensive quality verification: spec compliance, lint, type-check, tests, cross-layer data flow, code reuse, and consistency checks.
woocommerce/woocommerce
Workflow for WooCommerce development: run PHP and JavaScript tests, lint and fix code style on the current branch, and follow guides for i18n and markdown.
google/adk-python
Sets up a local ADK Python development environment in a git clone of the open-source adk-python repository: a uv virtual environment, all dependency extras, pre-commit hooks, and a first unit-test…
blokadaorg/blokada
A skill your agent uses to validate risky dependency bumps end to end as a local or cloud-launched agent.
hashintel/hash
Rust documentation practices for HASH codebase. An agent skill from hashintel/hash.
hashintel/hash
HASH error handling patterns using error-stack crate. An agent skill from hashintel/hash.
hashintel/hash
Cargo.toml dependency management patterns for HASH workspace.
hashintel/hash
HashQL testing strategies including compiletest (UI tests), unit tests, and snapshot tests.
hashintel/hash
HashQL diagnostic writing patterns using hashql-diagnostics crate.
hashintel/hash
HashQL J-Expr syntax for writing queries. An agent skill from hashintel/hash.
Categories
End-to-end procedure for shipping a change to the Petrinaut packages (libs/@hashintel/petrinaut, petrinaut-core, petrinaut-cli, apps/petrinaut-opt, apps/petrinaut-website): the verification gates…. Petrinaut Shipping is an agent skill from hashintel/hash. End-to-end procedure for shipping a change to the Petrinaut packages (libs/@hashintel/petrinaut, petrinaut-core, petrinaut-cli, apps/petrinaut-opt, apps/petrinaut-website): the verification gates per package, the changeset step, docs sync, pre-PR hygiene checks, and CI expectations from draft to ready.
Petrinaut Shipping fits situations like: implementing any change in these packages; creating a PR for Petrinaut work; checking CI on a Petrinaut PR.
Run `npx skills add hashintel/hash --skill petrinaut-shipping -a claude-code`. Or copy the skill folder (.agents/skills/petrinaut-shipping in hashintel/hash) into .claude/skills/petrinaut-shipping in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hashintel/hash --skill petrinaut-shipping -a codex`. Or copy the skill folder (.agents/skills/petrinaut-shipping in hashintel/hash) into .agents/skills/petrinaut-shipping 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 hashintel/hash --skill petrinaut-shipping -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/petrinaut-shipping, .gemini/skills/petrinaut-shipping, .github/skills/petrinaut-shipping and .opencode/skills/petrinaut-shipping in your project.
Going by SKILL.md and its folder, Petrinaut Shipping needs the command-line tools its instructions call (yarn, gh, turbo, mise, uv and git). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use gh, uv 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.
Petrinaut Shipping is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.4k tokens (SKILL.md is roughly 5.4k 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 Petrinaut Shipping: Go Pedantry (chromedp/chromedp, 13k stars), Kedro Babysit (kedro-org/kedro, 11k stars), Trellis Check (anjiemo/SunnyBeach, 178 stars) and WooCommerce Dev Cycle (woocommerce/woocommerce, 11k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hashintel (a GitHub organization) maintains it in hashintel/hash, which has 1,670 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 9, 2026.
Source: hashintel/hash on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.