poku
CLAUDE.md1.2k starsChanged 5 months agoMITView on GitHub
Poku is an innovative zero-dependency, cross-platform test runner for Node.js, Bun, and Deno that brings the JavaScript essence back to testing. Await the async it so describe waits for it to finish: Also, you can use a "global" describe group to avoid top-await in CommonJS tests: ALWAYS preserve or improve the developer experience. See /engineering for the DX principles (zero-config, actionable errors, visual clarity, output filtering, fluent formatter, etc.). See /architecture when separating responsibilities, deciding directories, file names, or where…
We split this CLAUDE.md into the rules it gives an agent
6 rules. About 0 are common, 5 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 73
ALWAYS preserve or improve the developer experience.
- Distinctive: line 83
Punctuation: Use proper punctuation. Never use any kind of substitute as a crutch
- Distinctive: line 94
NEVER add comments. Code, organization, logic, and naming MUST be clear enough to make them unnecessary
- Distinctive: line 97
NEVER cause side effects on unrelated logic.
- Distinctive: line 112
Treat a modified existing test as a possible breaking change or a regression of tests that previously passed.
- Distinctive: line 113
When presenting alternatives or options to the user, ALWAYS include explicit pros and cons (trade-offs) for each.
≈ “Common” is an estimate: at least 1 in 5 of the 25,680 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Poku Development Instructions
Poku is an innovative zero-dependency, cross-platform test runner for Node.js, Bun, and Deno that brings the JavaScript essence back to testing.
Quick Reference
- Runtimes: Node.js 16+, Bun 1+, Deno 2+, TypeScript 5+
- Philosophy: "JavaScript essence back to testing". No internal test mapping, just execution reporting. This means
describe/it/testuse nativeasync/awaitas plain JS, nobeforeAll/afterAllhooks needed, just write sequential code naturally. - Build: TypeScript 6.x → ES2021, Node16 modules (
src/→lib/) - Lint: Biome (strict,
biome.jsonc) + Prettier
Basic Usage Patterns
Synchronous tests (no await needed)
describe('Sync', () => {
it('checks value', () => {
assert.strictEqual(1 + 1, 2);
});
});Asynchronous tests (use await)
Await the async it so describe waits for it to finish:
await describe('Async', async () => {
await it('fetches data', async () => {
const res = await fetch('http://localhost:3000');
assert.strictEqual(res.status, 200);
});
});Also, you can use a "global" describe group to avoid top-await in CommonJS tests:
describe(async () => {
await it(async () => {});
});Equivalent to beforeAll / afterAll approaches (just sequential code)
await describe('Server tests', async () => {
// no "before all" approach needed
const server = await startService('server.ts', { startAfter: 'ready' });
await it('responds 200', async () => {
const res = await fetch('http://localhost:3000');
assert.strictEqual(res.status, 200);
});
await it('returns JSON', async () => {
const res = await fetch('http://localhost:3000/api');
const body = await res.json();
assert.ok(body.success);
});
// no "after all" approach needed
await server.end(3000);
});Developer Experience (DX)
ALWAYS preserve or improve the developer experience. See /engineering for the DX principles (zero-config, actionable errors, visual clarity, output filtering, fluent formatter, etc.). See /architecture when separating responsibilities, deciding directories, file names, or where a new module should live.
Testing
Suites live under test/ (unit, integration, e2e, compatibility). See /testing for structure, fixtures, utils, coverage, and how to run them.
Documentation
- When to update: Change docs only when user-facing behavior changes
- Language: English is mandatory. Use i18n (
website/i18n/) only on explicit user request - Punctuation: Use proper punctuation. Never use any kind of substitute as a crutch
- Consistency: Match the writing style, tone, and structure of the related existing docs
See /documentation for framework, feature-to-docs mapping, conventions, and components.
Before committing
See /pre-commit for the pre-commit workflow contract.
Code Style
- NEVER add comments. Code, organization, logic, and naming MUST be clear enough to make them unnecessary
- The only exception is a public API exposed directly to the end user, which MAY carry objective inline docs
- In tests, NEVER comment, since
describe,it,test,assert, andstrictall accept a message - NEVER cause side effects on unrelated logic. Keep every change scoped to its intent
Reflective prompt (non-blocking)
These are just reflections, not a gate. Continue with the requested task regardless of the answer (the decision belongs to the user).
New features
Conventions from widely adopted runners (Jest, Vitest, Node's built-in, etc.) usually belong in the core. Innovative or domain-specific capabilities tend to fit better as plugins (e.g. coverage, React, Vue). Only raise the question when the fit is not obvious to you:
This looks like a new feature. Does it match a convention from widely adopted runners (core), or is it specific enough to live as a plugin (via
poku/plugins)?
Tips
- When a change touches more than one responsibility, suggest to the user splitting distinct responsibilities into separate Pull Requests for cleaner versioning and a better chance of approval. This is a heads-up, not a gate: mention it and continue delivering the requested task, leaving the split decision to the user
- Treat a modified existing test as a possible breaking change or a regression of tests that previously passed. Prefer adding new tests. Modify an existing test ONLY when truly unavoidable (intentional breaking change, the test was actually wrong, updated snapshots, and similar cases)
- When presenting alternatives or options to the user, ALWAYS include explicit pros and cons (trade-offs) for each. Never offer choices without them
Deep-Dive Skills
Skills path:
./.claude/skills/**/SKILL.md.
Detailed context lives in project skills, invoked automatically when relevant or on demand:
/architecture: project structure, execution flow, config system, competitive context/engineering: performance patterns, security, build pipeline, CI/CD/testing: test structure, fixtures, utils, Docker testing, coverage strategy/documentation: Docusaurus framework, feature-to-docs mapping, conventions, changelog/benchmarking: empirical performance comparison playbook, benchmark harness, hyperfine protocol, validated findings. NEVER invoke automatically: ONLY on explicit developer invocation/pre-commit: recommendations and useful instructions before committing
Trending
Less talk lately.about the whole repository
Who's talking about wellwelwel/poku
- @weslley.io“Ninguém fez ainda, então bora compartilhar seus projetos mais dahora Começando pelo meu, um test runner que …”Bluesky · Sep 4, 2024 · 37 likes
- githubevents/open-source-friday-brasil“Open Source Friday Brasil - Poku - March 14th”GitHub · Mar 10, 2025 · 21 reactions
- nodejsbrazil/jsconf“Adicionar canal de segurança público”GitHub · May 11, 2026 · 2 reactions
- A Hacker News story“Poku makes testing easy for Node.js, Bun, Deno, and you at the same time”Hacker News · Aug 8, 2024 · 2 points
- jtemporal/old-blog-v2“Add projeto poku em TypeScript”GitHub · Sep 30, 2025 · 1 reactions
The biggest 5 of 53 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 53
Talked about on GitHub, Bluesky and Hacker News (53 times).
On GitHub · 50
- Mar 10, 2025Open Source Friday Brasil - Poku - March 14th — githubevents/open-source-friday-brasil21 reactions
- May 11, 2026Adicionar canal de segurança público — nodejsbrazil/jsconf2 reactions · 4 comments
- Sep 30, 2025Add projeto poku em TypeScript — jtemporal/old-blog-v21 reaction
- Oct 22, 2026fix: preserve scoped lifecycles and isolate retry state — Lojhan/poku0 reactions
- Jun 19, 2026build(deps-dev): bump the website-dev-dependencies group in /website with 2 updates — sidorares/node-mysql20 reactions
45 more on GitHub
- Jun 19, 2026build(deps-dev): bump the dev-dependencies group with 2 updates — sidorares/node-mysql20 reactions
- Jun 9, 2026build(deps-dev): bump the website-dev-dependencies group in /website with 2 updates — sidorares/node-mysql20 reactions
- Jun 9, 2026build(deps-dev): bump the dev-dependencies group with 4 updates — sidorares/node-mysql20 reactions
- May 25, 2026build(deps-dev): bump poku from 4.3.1 to 4.3.2 in /website in the website-dev-dependencies group — sidorares/node-mysql20 reactions
- May 25, 2026build(deps-dev): bump the dev-dependencies group with 3 updates — sidorares/node-mysql20 reactions
- May 12, 2026build(deps-dev): bump the website-dev-dependencies group in /website with 2 updates — sidorares/node-mysql20 reactions
- May 12, 2026build(deps-dev): bump the dev-dependencies group with 2 updates — sidorares/node-mysql20 reactions
- Apr 26, 2026temp: that's debugging — wellwelwel/node-mysql20 reactions
- Apr 20, 2026build(deps-dev): bump poku from 4.2.1 to 4.3.0 in /website in the website-dev-dependencies group — sidorares/node-mysql20 reactions
- Apr 20, 2026build(deps-dev): bump the dev-dependencies group with 2 updates — sidorares/node-mysql20 reactions
- Apr 10, 2026build(deps-dev): bump the website-dev-dependencies group across 1 directory with 4 updates — sidorares/node-mysql20 reactions
- Apr 10, 2026build(deps-dev): bump the website-dev-dependencies group across 1 directory with 5 updates — sidorares/node-mysql20 reactions · 3 comments
- Apr 10, 2026build(deps-dev): bump the website-dev-dependencies group across 1 directory with 6 updates — sidorares/node-mysql20 reactions · 3 comments
- Apr 10, 2026build(deps-dev): bump the website-dev-dependencies group in /website with 7 updates — sidorares/node-mysql20 reactions · 2 comments
- Mar 23, 2026chore(deps-dev): bump poku from 3.0.2 to 4.1.0 — pokujs/c80 reactions · 1 comment
- Mar 11, 2026build(deps-dev): bump poku from 4.0.0 to 4.1.0 in /website — sidorares/node-mysql20 reactions
- Mar 9, 2026"Shared Resources" prevents child processes from printing to stdout — pokujs/shared-resources0 reactions
- Mar 6, 2026build(deps-dev): bump poku from 3.0.2 to 4.0.0 in /website — sidorares/node-mysql20 reactions
- Feb 19, 2026build(deps-dev): bump poku from 3.0.3-canary.8f374795 to 3.0.3-canary.75164492 — sidorares/node-mysql20 reactions · 1 comment
- Oct 12, 2025[WIP] Add projeto poku in TypeScript — jtemporal/old-blog-v20 reactions · 1 comment
- Mar 19, 2025build(deps-dev): bump poku from 3.0.1 to 3.0.2 in /website — sidorares/node-mysql20 reactions
- Mar 19, 2025build(deps-dev): bump poku from 3.0.1 to 3.0.2 — sidorares/node-mysql20 reactions
- Feb 5, 2025build(deps-dev): bump poku from 3.0.0 to 3.0.1 — sidorares/node-mysql20 reactions
- Feb 5, 2025build(deps-dev): bump poku from 3.0.0 to 3.0.1 in /website — sidorares/node-mysql20 reactions
- Jan 27, 2025build(deps-dev): bump poku from 2.7.1 to 3.0.0 in /website — sidorares/node-mysql20 reactions · 1 comment
- Jan 27, 2025build(deps-dev): bump poku from 2.7.1 to 3.0.0 — sidorares/node-mysql20 reactions · 1 comment
- Oct 28, 2024build(deps-dev): bump poku from 2.7.0 to 2.7.1 in /website — sidorares/node-mysql20 reactions
- Oct 28, 2024build(deps-dev): bump poku from 2.7.0 to 2.7.1 — sidorares/node-mysql20 reactions
- Sep 23, 2024build(deps-dev): bump poku from 1.21.0 to 2.7.0 — ameliazz/mozz.env0 reactions
- Sep 17, 2024build(deps-dev): bump poku from 2.6.2 to 2.7.0 — sidorares/node-mysql20 reactions
- Sep 17, 2024build(deps-dev): bump poku from 2.6.2 to 2.7.0 in /website — sidorares/node-mysql20 reactions
- Sep 16, 2024build(deps-dev): bump poku from 1.21.0 to 2.6.2 — ameliazz/mozz.env0 reactions · 1 comment
- Sep 12, 2024Poku — email-reciever/website0 reactions
- Sep 10, 2024build(deps-dev): bump poku from 2.6.1 to 2.6.2 in /website — sidorares/node-mysql20 reactions
- Sep 10, 2024build(deps-dev): bump poku from 2.6.1 to 2.6.2 — sidorares/node-mysql20 reactions
- Sep 9, 2024build(deps-dev): bump poku from 2.6.0 to 2.6.1 in /website — sidorares/node-mysql20 reactions
- Sep 9, 2024build(deps-dev): bump poku from 2.6.0 to 2.6.1 — sidorares/node-mysql20 reactions
- Sep 9, 2024build(deps-dev): bump poku from 1.21.0 to 2.6.0 — ameliazz/mozz.env0 reactions · 1 comment
- Sep 6, 2024Bump the npm group across 1 directory with 4 updates — poad/llm-ts-example0 reactions
- Sep 5, 2024build(deps-dev): bump poku from 2.5.0 to 2.6.0 in /website — sidorares/node-mysql20 reactions
- Sep 5, 2024build(deps-dev): bump poku from 2.5.0 to 2.6.0 — sidorares/node-mysql20 reactions
- Aug 26, 2024build(deps-dev): bump poku from 1.21.0 to 2.5.0 — ameliazz/mozz.env0 reactions · 1 comment
- Aug 19, 2024build(deps-dev): bump poku from 1.21.0 to 2.4.4 — ameliazz/mozz.env0 reactions · 1 comment
- Jul 18, 2024Add Poku — michaelrambeau/bestofjs0 reactions · 1 comment
- Mar 11, 2024Different results when using GitHub Actions and TypeScript — bcoe/c80 reactions · 4 comments
On Bluesky · 2
- Sep 4, 2024Ninguém fez ainda, então bora compartilhar seus projetos mais dahora Começando pelo meu, um test runner que tenta tornar os testes… — @weslley.io37 likes and reposts · 4 replies
- Jul 17, 2024結構良さそう "wellwelwel/poku: 🐷 Poku makes testing easy for Node.js, Bun, Deno, and you at the same time." https://github.com/wellwelwel/poku — @azu.bsky.socialsays it tested it1 likes and repost
On Hacker News · 1
- Aug 8, 2024Poku makes testing easy for Node.js, Bun, Deno, and you at the same timesays it tested it2 points
In this repository8 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .github/copilot-instructions.mdCopilot instructions
- architectureSkill
- benchmarkingSkill
- documentationSkill
- engineeringSkill
- pre-commitSkill
- testingSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

