{"owner":"Schniz","repo":"fnm","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"skills":{"AGENTS.md":"# fnm (fast node manager)\n\nthis project is focused on optimizations. the fact it is written in Rust is NOT the reason it's performant.\n\"what we do\" and \"what we do not do\" are the main reasons for fnm's performance. we have a very specific scope and we have to do it well.\n\nuse tools like `hyperfine` to measure performance.\nadd end to end tests to avoid regressions and to prove that features actually work.\n\n## End-to-end tests\n\nE2E tests validate real-shell user behavior (`fnm env`, `fnm use`, PATH updates, global binaries, cross-version workflows).\n\n- Tests: `e2e/*.test.ts`; repros: `e2e/repros/*.test.ts`.\n- Use shell matrix with `describe(shell, () => { ... })` unless behavior is shell-specific.\n- Build scripts with `script(shell)` and use `shell.env({...})`, `shell.call(...)`, `shell.scriptOutputContains(...)`, `shell.hasCommandOutput(...)`.\n- Keep assertions deterministic (`found`/`missing`, explicit versions, exact outputs); prefer shell-agnostic checks.\n- Write JavaScript code to disk and evaluate with Node.js if you need complex assertions as they are more maintainable than shell scripts.\n- Keep setup local/minimal and include issue id in repro test names.\n- Mirror is `FNM_NODE_DIST_MIRROR=http://localhost:8080`; avoid unrelated network dependencies.\n\n- Interfaces: `e2e/shellcode/script.ts`, `e2e/shellcode/shells.ts`, `e2e/shellcode/shells/types.ts`.\n- Helpers: `e2e/shellcode/shells/output-contains.ts`, `e2e/shellcode/shells/expect-command-output.ts`, `e2e/shellcode/shells/cmdCall.ts`.\n- Shell coverage behavior: `e2e/describe.ts`.\n- Examples: `e2e/basic.test.ts`, `e2e/use-on-cd.test.ts`, `e2e/exec.test.ts`, `e2e/corepack.test.ts`, `e2e/repros/issue-1527.test.ts`.\n\n- Run one file: `pnpm test -- e2e/repros/issue-1527.test.ts`\n- Run all e2e: `pnpm test -- e2e`\n\n## Features, Bugfixes and Changes\n\nEvery code change requires a changeset in <repo_root>/.changeset/some-random-name.md\nWe should avoid breaking changes. Therefore 99.9% of changesets should be \"patch\" or \"minor\".\nBe concise and clear in the changeset title, and provide examples or links to related issues if necessary.\nSee ./.changeset/EXAMPLE.md for an example of a changeset format.\n"},"files":{"AGENTS.md":"# fnm (fast node manager)\n\nthis project is focused on optimizations. the fact it is written in Rust is NOT the reason it's performant.\n\"what we do\" and \"what we do not do\" are the main reasons for fnm's performance. we have a very specific scope and we have to do it well.\n\nuse tools like `hyperfine` to measure performance.\nadd end to end tests to avoid regressions and to prove that features actually work.\n\n## End-to-end tests\n\nE2E tests validate real-shell user behavior (`fnm env`, `fnm use`, PATH updates, global binaries, cross-version workflows).\n\n- Tests: `e2e/*.test.ts`; repros: `e2e/repros/*.test.ts`.\n- Use shell matrix with `describe(shell, () => { ... })` unless behavior is shell-specific.\n- Build scripts with `script(shell)` and use `shell.env({...})`, `shell.call(...)`, `shell.scriptOutputContains(...)`, `shell.hasCommandOutput(...)`.\n- Keep assertions deterministic (`found`/`missing`, explicit versions, exact outputs); prefer shell-agnostic checks.\n- Write JavaScript code to disk and evaluate with Node.js if you need complex assertions as they are more maintainable than shell scripts.\n- Keep setup local/minimal and include issue id in repro test names.\n- Mirror is `FNM_NODE_DIST_MIRROR=http://localhost:8080`; avoid unrelated network dependencies.\n\n- Interfaces: `e2e/shellcode/script.ts`, `e2e/shellcode/shells.ts`, `e2e/shellcode/shells/types.ts`.\n- Helpers: `e2e/shellcode/shells/output-contains.ts`, `e2e/shellcode/shells/expect-command-output.ts`, `e2e/shellcode/shells/cmdCall.ts`.\n- Shell coverage behavior: `e2e/describe.ts`.\n- Examples: `e2e/basic.test.ts`, `e2e/use-on-cd.test.ts`, `e2e/exec.test.ts`, `e2e/corepack.test.ts`, `e2e/repros/issue-1527.test.ts`.\n\n- Run one file: `pnpm test -- e2e/repros/issue-1527.test.ts`\n- Run all e2e: `pnpm test -- e2e`\n\n## Features, Bugfixes and Changes\n\nEvery code change requires a changeset in <repo_root>/.changeset/some-random-name.md\nWe should avoid breaking changes. Therefore 99.9% of changesets should be \"patch\" or \"minor\".\nBe concise and clear in the changeset title, and provide examples or links to related issues if necessary.\nSee ./.changeset/EXAMPLE.md for an example of a changeset format.\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"# fnm (fast node manager)\n\nthis project is focused on optimizations. the fact it is written in Rust is NOT the reason it's performant.\n\"what we do\" and \"what we do not do\" are the main reasons for fnm's performance. we have a very specific scope and we have to do it well.\n\nuse tools like `hyperfine` to measure performance.\nadd end to end tests to avoid regressions and to prove that features actually work.\n\n## End-to-end tests\n\nE2E tests validate real-shell user behavior (`fnm env`, `fnm use`, PATH updates, global binaries, cross-version workflows).\n\n- Tests: `e2e/*.test.ts`; repros: `e2e/repros/*.test.ts`.\n- Use shell matrix with `describe(shell, () => { ... })` unless behavior is shell-specific.\n- Build scripts with `script(shell)` and use `shell.env({...})`, `shell.call(...)`, `shell.scriptOutputContains(...)`, `shell.hasCommandOutput(...)`.\n- Keep assertions deterministic (`found`/`missing`, explicit versions, exact outputs); prefer shell-agnostic checks.\n- Write JavaScript code to disk and evaluate with Node.js if you need complex assertions as they are more maintainable than shell scripts.\n- Keep setup local/minimal and include issue id in repro test names.\n- Mirror is `FNM_NODE_DIST_MIRROR=http://localhost:8080`; avoid unrelated network dependencies.\n\n- Interfaces: `e2e/shellcode/script.ts`, `e2e/shellcode/shells.ts`, `e2e/shellcode/shells/types.ts`.\n- Helpers: `e2e/shellcode/shells/output-contains.ts`, `e2e/shellcode/shells/expect-command-output.ts`, `e2e/shellcode/shells/cmdCall.ts`.\n- Shell coverage behavior: `e2e/describe.ts`.\n- Examples: `e2e/basic.test.ts`, `e2e/use-on-cd.test.ts`, `e2e/exec.test.ts`, `e2e/corepack.test.ts`, `e2e/repros/issue-1527.test.ts`.\n\n- Run one file: `pnpm test -- e2e/repros/issue-1527.test.ts`\n- Run all e2e: `pnpm test -- e2e`\n\n## Features, Bugfixes and Changes\n\nEvery code change requires a changeset in <repo_root>/.changeset/some-random-name.md\nWe should avoid breaking changes. Therefore 99.9% of changesets should be \"patch\" or \"minor\".\nBe concise and clear in the changeset title, and provide examples or links to related issues if necessary.\nSee ./.changeset/EXAMPLE.md for an example of a changeset format.\n","category":"root","tokens":546}]}