Testing

SkillProductivity

Test-driven development workflow for Noodle. Use when testing changes, writing tests, fixing bugs, creating fixtures, or running the test suite. Triggers: "test", "write a test", "fix this bug", "add a fixture", "run tests", "TDD", or any task involving verification of code changes.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Testing skill

What this skill tells your AI

The instructions your AI receives, as published by poteto/noodle in .agents/skills/testing/SKILL.md and read by ahel’s review.

Test-driven by default. Prove the problem before solving it.

Core Workflow: Bug First

  1. Reproduce — Run the failing scenario and observe the actual behavior
  2. Write a failing test — Minimal reproduction as a test case
  3. Commit the failing test — Use Skill(commit) with message like test: reproduce #issue-description
  4. Fix the code — Only now attempt the fix
  5. Verify — Run pnpm test and confirm the test passes
  6. Commit the fix — Separate commit from the test

This applies to all bug fixes. The failing test proves the bug exists and prevents regressions.

Fixture Tests

Noodle uses directory-based fixtures in testdata/. Read references/fixtures.md for full format, helper API, and code patterns.

Creating a New Fixture

./scripts/scaffold-fixture.sh <package-dir> <fixture-name> [state-count]

Fill in the generated input.json/input.ndjson and expected.md, then:

pnpm fixtures:hash:sync

Bug Fixtures

See references/fixtures.md for full bug fixture format (frontmatter fields, expected error sections, and the fix workflow).

Key Commands

CommandPurpose
pnpm testRun all tests
pnpm test:shortSkip integration tests
pnpm checkFull local CI (test + vet + lint + fixtures)
pnpm bugsList fixtures marked as known bugs
pnpm fixtures:loopVerify loop fixtures match expected
pnpm fixtures:loop:recordRegenerate loop fixture expected output
pnpm fixtures:hashVerify fixture input hashes
pnpm fixtures:hash:syncUpdate fixture input hashes
pnpm vetRun go vet
pnpm lint:archArchitecture lint (file sizes, legacy patterns)

Running Specific Tests

# Single package
go test ./loop

# Single test
go test ./loop -run TestLoopDirectoryFixtures

# Bypass cache
go test -count=1 ./parse

# With race detector
go test -race ./...

# Verbose
go test -v ./tui

Integration Tests

Long-running or external-dependency tests use testing.Short():

if testing.Short() {
    t.Skip("skipping integration test in short mode")
}

pnpm test:short skips these. pnpm test runs everything.

Signals

GitHub stars
270
Forks
15
Last commit
Mar 2026
Hacker News mentions
20
Advanced
Catalog kind
skill
Gateway key
testing-poteto
Source
github.com/poteto/noodle