using-git-worktrees
OBobra/superpowers298k近 7 天新增 2,631 个 star
Set up the hotpath Cloud CI integration in a Rust project whose pull requests come from branches of the same repository (private repositories, or public ones that do not benchmark fork pull requests). Adds the hotpath-cloud feature, a regression policy file and a GitHub Actions benchmark workflow that uploads hotpath reports, so every pull request gets a performance comment. Use when the user wants to add hotpath Cloud, benchmark pull requests in CI or set up performance regression checks.
Set up hotpath Cloud in the current Rust project. A GitHub Actions job runs a benchmark with hotpath profiling enabled and uploads the report. hotpath.rs compares each pull request's report with the default branch's, judges the difference under the repository's policy file and posts a comment on the pull request.
This skill covers pull requests from branches of the same repository. For a public repository that wants to benchmark pull requests from forks, use the hotpath_init_ci_forks skill instead (hotpath init-ci --forks).
The hotpath docs are the reference for the workflow file, every environment variable and every policy key; this skill only holds the procedure. Every page of https://hotpath.rs is served as markdown when requested with an Accept: text/markdown header:
curl -sL -H 'Accept: text/markdown' https://hotpath.rs/ci_integration
Before each step, fetch the pages it names and follow them instead of relying on memory. Keep -L (some pages redirect) and the header (there are no .md URLs). A #fragment is not sent to the server: fetch the whole page and find the heading.
The site documents the latest hotpath release, which can be newer than the version the project uses. Never change the project's hotpath version because the docs show a newer one. If the docs describe something that version does not have, tell the user it needs a newer hotpath instead of working around it.
| Page | Covers |
|---|---|
| https://hotpath.rs/ci_integration | setup, the workflow ("Pull requests from the same repository"), failing the job, environment variables, several benchmarks, troubleshooting |
| https://hotpath.rs/regression_policy | the policy file: sections, keys, validation, the pull request comment and check |
| https://hotpath.rs/performance_budgets | absolute limits in the same policy file |
| https://hotpath.rs/cloud | what hotpath Cloud is |
git symbolic-ref --short refs/remotes/origin/HEAD, usually main) and the existing workflows in .github/workflows/.hotpath dependency, #[hotpath::main] (or HotpathGuardBuilder) and instrumented functions. If it is not, set it up first by following the hotpath_init skill (https://raw.githubusercontent.com/pawurb/hotpath-rs/main/skills/hotpath_init/SKILL.md), then continue here.gh repo view --json visibility). For a public repository that accepts pull requests from forks, tell the user that fork pull requests will not be benchmarked by this setup and suggest hotpath init-ci --forks. Continue only if they confirm.The benchmark is a program instrumented with hotpath that runs a fixed workload: the same work on every run, so two runs of one commit report the same allocations. It runs to completion and exits normally, so the hotpath guard is dropped and the report is uploaded.
examples/hotpath_benchmark.rs) that drives the main code paths with fixed inputs, and write it only after the user agrees.HOTPATH_BENCHMARK: 1 to 64 characters from [A-Za-z0-9._-], for example the example's name. An invalid name skips the upload.hotpath-cloud featureDocs: https://hotpath.rs/ci_integration ("Setup").
Add the hotpath-cloud feature passthrough from the docs snippet to the benchmark crate's Cargo.toml, next to the existing hotpath features. Leave the hotpath dependency version as it is. Never add it to default.
mkdir -p hotpath
curl -fsSL https://hotpath.rs/api/v1/policy/default | jq -j .source > hotpath/policy.toml
Run it from the repository root. It writes the default policy, with comments, to hotpath/policy.toml (no token needed; with wget, use wget -qO- https://hotpath.rs/api/v1/policy/default). It is the same file hotpath cloud init of the docs writes, without needing the CLI. Never overwrite an existing policy file. Every upload must carry a policy file, so commit it. Do not change the defaults unless the user asks; https://hotpath.rs/regression_policy documents every key.
After any edit, validate the file. A valid policy answers {"valid":true}, an invalid one HTTP 422 with problems, each with its line and message:
jq -Rs '{source: .}' hotpath/policy.toml \
| curl -sS -X POST https://hotpath.rs/api/v1/policy/validate -H 'Content-Type: application/json' --data-binary @-
Docs: https://hotpath.rs/ci_integration ("Pull requests from the same repository").
Create .github/workflows/hotpath-benchmark.yml from the workflow in that section, copied as is. Then adapt only:
main: the default branch.my_benchmark: the benchmark name, in HOTPATH_BENCHMARK and in the command.cargo run line: the command that runs the benchmark (-p <crate> in a workspace, --bin or --example as appropriate). Keep --release. Drop hotpath-alloc from --features only if the crate has no such feature.Keep the test -s line, the absolute response path and HOTPATH_UPLOAD: fail-on-error; the docs explain what each guards against. The workflow needs no secret.
A regression never fails the job. If the user wants the pull request's hotpath / <benchmark> check to fail, or to block merges, follow "Failing the job" in https://hotpath.rs/ci_integration and "Pull request check" in https://hotpath.rs/regression_policy, and validate the policy after the edit.
cargo check # feature off still compiles
HOTPATH_BENCHMARK=my_benchmark HOTPATH_OUTPUT_FORMAT=json HOTPATH_OUTPUT_PATH=/tmp/hotpath-report.json \
cargo run --release --example my_benchmark --features hotpath,hotpath-alloc,hotpath-cloud
jq '{benchmark: .meta.benchmark, policy: .meta.policy.path}' /tmp/hotpath-report.json
The report must name the benchmark and hotpath/policy.toml. Run the benchmark twice and compare the function allocation totals: if they differ, the workload is not fixed, so fix that before relying on the comments.
hotpath_cloud skill and hotpath cloud diff read the same verdict as JSON.Do not commit or push unless the user asks.
hotpath, hotpath-alloc or hotpath-cloud by default; profiling stays opt-in.HOTPATH_BENCHMARK name. For several benchmarks, follow "Several benchmarks in one repository" in https://hotpath.rs/ci_integration; a benchmark's own policy file is fetched the same way as hotpath/policy.toml.OBobra/superpowers298k近 7 天新增 2,631 个 star
OBobra/superpowers298k近 7 天新增 2,631 个 star
OBobra/superpowers298k近 7 天新增 2,631 个 star
MAmattpocock/skills288k近 7 天新增 10,178 个 star
MAmattpocock/skills288k近 7 天新增 10,178 个 star
MAmattpocock/skills288k近 7 天新增 10,178 个 star