

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
1## Events Triggering Workflows23- Use `pull_request`, not `pull_request_target`. If you genuinely need secrets on a fork PR, never check out the PR's HEAD ref in the privileged job.4- Be extremely careful with `workflow_run` for similar to `pull_request_target`.5- When operating on `pull_request`, think if the workflow should use `concurrency` to cancel superseded runs.67## Workflow Permissions89Set `permissions: {}` at the workflow level and grant the minimum needed per-job.1011```yaml12permissions: {}1314jobs:15 lint:16 permissions:17 contents: read18 # ...19 comment-on-pr:20 permissions:21 contents: read22 pull-requests: write23 # ...24```2526## Third-party GitHub Actions2728Prefer GitHub-provided (`actions/*`) and Vercel-owned actions. For third-party actions:2930- Don't include the third-party action if it doesn't provide much value, e.g. if a `pnpm`-installable tool can do the same job without much more code.31- Pin to a full commit SHA, never a tag or branch. Include the tag as a trailing comment:3233```yaml34 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.235```3637- Before pinning, `git grep -n 'owner/repo@'` and reuse the SHA already in the repo if one exists. Otherwise look up the latest tag:3839```sh40 gh api repos/{owner}/{repo}/tags --jq '.[0:10] | .[] | {name, sha: .commit.sha}'41```4243- When using `actions/checkout`, pass `persist-credentials: false` unless the job actually needs to push or call the GitHub API as the checkout token.4445## Installing CLIs from npm4647- Use pnpm, not npm. Add the CLI to `devDependencies` (root `package.json` for CI-only tooling).48- Use `pnpm add -D` over directly modifying `package.json`. Let pnpm figure out the latest version number.49- `pnpm dlx` does not pin transitive deps; don't rely on it.50- Bootstrap pnpm via corepack so it picks up `packageManager` from the root `package.json`.5152## Downloading binaries (e.g. GitHub Releases)5354- Hardcode the expected sha256 and validate before `chmod +x`.55- Prefer official GitHub Releases assets over raw URLs.56- Choose stable URLs. Use the `gh` CLI or GitHub API as needed to find releases.57- Use `curl --retry 3` (or equivalent) so transient failures don't fail the workflow.5859## Script injection6061`${{ ... }}` is interpolated into the script before bash runs, so untrusted values (PR title, branch name, issue body) can break out and execute. Route them through an env var and quote on use:6263```yaml64- name: Check PR title65 env:66 TITLE: ${{ github.event.pull_request.title }}67 run: |68 set -euo pipefail69 case "$TITLE" in70 octocat*) echo "starts with octocat" ;;71 *) exit 1 ;;72 esac73```7475- Start multi-line `run:` blocks with `set -euo pipefail`.76- Quote every `"$VAR"`.77- Never `echo`/`printf` a secret. Use `::add-mask::` for dynamic secrets.78- The same risk applies to `bash -c`, `sh -c`, and `child_process` invocations that build command strings.79
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| vercel/next.jsAGENTS.md · 142k | AGENTS.md | setupbuildtestlint-format+11 | 84/100 | 7 days ago | |
| vercel/next.jspackages/next/AGENTS.md · 142k | AGENTS.md | no sections | 16/100 | 14 days ago | |
| vercel/next.jstest/AGENTS.md · 142k | AGENTS.md | teststylegitagent-behaviour | 24/100 | 11 days ago | |
| vercel/next.jsturbopack/AGENTS.md · 142k | AGENTS.md | no sections | 16/100 | 14 days ago |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| n8n-io/n8npackages/@n8n/agents/AGENTS.md · 200k | AGENTS.md | buildteststylearch+3 | 100/100 | 14 days ago | |
| aaif-goose/gooseAGENTS.md · 53k | AGENTS.md | setupbuildtestlint-format+7 | 100/100 | 8 days ago | |
| duckduckgo/content-scope-scriptsspecial-pages/AGENTS.md · 70 | AGENTS.md | buildteststylearch+3 | 100/100 | 14 days ago | |
| TryGhost/Ghoste2e/AGENTS.md · 55k | AGENTS.md | setupteststylearch+2 | 100/100 | 14 days ago | |
| elastic/elasticsearchx-pack/plugin/inference/AGENTS.md · 78k | AGENTS.md | buildtestlint-formatstyle+3 | 100/100 | 14 days ago | |
| rails/railsAGENTS.md · 59k | AGENTS.md | teststylearchgit+4 | 100/100 | 14 days ago | |
| wpscanteam/wpscanAGENTS.md · 9.7k | AGENTS.md | setupbuildteststyle+6 | 100/100 | 13 days ago | |
| bagisto/bagistoAGENTS.md · 28k | AGENTS.md | setupbuildteststyle+7 | 100/100 | 7 days ago |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/vercel-next-js-github-agents)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.
Directory