Agent skill

Test Commander

by EliasOulkadi in EliasOulkadi/shokunin

Generate unit, integration, E2E, and visual regression tests following the Testing Trophy methodology (80% integration).

MITAuto-check: notesTesting & QA

Install Test Commander

skills CLI
$ npx skills add EliasOulkadi/shokunin --skill test-commander -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install EliasOulkadi/shokunin test-commander --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.pack/skills/test-commander .claude/skills/test-commander && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
test-commander
GitHub stars
114
Token cost
~3k tokens
SKILL.md length
825 words
Files
6 (incl. scripts, references, assets)
Skills in repo
49
Repo updated
First seen
Licence
MIT

At a glance

Generate unit, integration, E2E, and visual regression tests following the Testing Trophy methodology (80% integration).

  • Works in 7 steps: Determine test level → Write integration tests (5 mandatory… → MSW setup (exact pattern) → …
  • User asks to write tests
  • SKILL.md covers Testing Trophy (visual), Workflow, Flaky Test Protocol and Anti-Patterns, plus 7 more sections
  • Runs TypeScript and Shell scripts from its folder; calls npx

What it does

Test Commander is an agent skill from EliasOulkadi/shokunin. Generate unit, integration, E2E, and visual regression tests following the Testing Trophy methodology (80% integration). Covers Vitest/Jest, Testing Library, Playwright, MSW for API mocking, snapshot strategy, visual regression (Chromatic/Percy/Playwright), test factories with Faker, and CI sharding. Use when user asks to write tests, set up testing framework, mock API/dependencies, improve coverage, or add visual regression. Do NOT use for performance/load testing, production monitoring, or type testing (covered…

Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts, reference files and assets (for example `assets/test-api-template.ts`, `references/msw-patterns.md` and `references/visual-regression.md`). Compatibility notes: opencode

It sits in Testing & QA, covering Unit testing, Visual regression testing and End-to-end testing. It works with Playwright, Testing Library, Vitest and Jest. The repository describes itself as: 職人 Shokunin 62 AI agent skills for OpenCode, Claude Code, Cursor, Windsurf. ChromaDB memory, MCP servers, declarative self-updates. Multi-model, open source, zero cost. The licence is MIT.

When your agent uses it

  • User asks to write tests
  • Set up testing framework
  • Mock API/dependencies
  • Improve coverage

Example prompts

  • “/test-commander”

Requirements

  • Node.js
  • A Bash shell
  • Compatibility (from SKILL.md): opencode
  • Pre-approved tools (allowed-tools): Read, Bash, Write, Grep, Glob

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Determine test level
  2. Write integration tests (5 mandatory states)
  3. MSW setup (exact pattern)
  4. Test factories (Faker)
  5. E2E tests (Playwright)
  6. Visual regression
  7. CI sharding

What it can do on your machine

Read from SKILL.md and the folder at commit 4c68e5b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Bash
    • Write
    • Grep
    • Glob

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (TypeScript and Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    opencode

    From compatibility in the SKILL.md frontmatter.

Context cost

Test Commander loads about 3k tokens when it runs, and up to ~8.7k if it reads all its reference files. Until then it costs about 137 tokens; SKILL.md has 825 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~137
When it runs · the whole SKILL.md, loaded when a task matches
~3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Bash, Write, Grep, Glob

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from EliasOulkadi/shokunin at commit 4c68e5b, republished under its MIT licence (© EliasOulkadi). 825 words, ~3,018 tokens.

Download SKILL.mdSave it as .claude/skills/test-commander/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
test-commander
description
Generate unit, integration, E2E, and visual regression tests following the Testing Trophy methodology (80% integration). Covers Vitest/Jest, Testing Library, Playwright, MSW for API mocking, snapshot strategy, visual regression (Chromatic/Percy/Playwright), test factories with Faker, and CI sharding. Use when user asks to write tests, set up testing framework, mock API/dependencies, improve coverage, or add visual regression. Do NOT use for performance/load testing, production monitoring, or type testing (covered by TypeScript).
allowed-tools
Read, Bash, Write, Grep, Glob
compatibility
opencode
triggers
write tests, unit test, integration test, E2E test, test coverage, Vitest, Jest, Playwright test, Testing Library, MSW, mock API, visual regression, test setup
negatives
performance testing, load testing, production monitoring, type testing, TypeScript
license
MIT
metadata.workflow
quality
metadata.audience
developers
metadata.version
4.0.0
metadata.author
shokunin

Test Commander

Tests that catch real bugs. Following the Testing Trophy (Kent C. Dodds): 80% integration, 10% unit, 10% E2E. Based on patterns from Testing Library, Playwright, MSW, and Chromatic.

Testing Trophy (visual)

        /\
       /E2E\        ← 2-3 critical flows
      /------\
     / Visual \     ← Visual regression on key components
    /----------\
   /Integration\    ← 80% of tests. Components + API + store.
  /--------------\
 /     Unit       \ ← Pure logic. Utils, helpers, formatters.
/------------------\
     Static         ← TypeScript + ESLint

Workflow

Step 1: Determine test level
What are you testing?LevelToolSpeed
Pure logic (math, format, transform)UnitVitest< 5ms each
Component + API + store togetherIntegrationTesting Library + MSW50-200ms each
Critical user flow (checkout, signup)E2EPlaywright2-10s each
Visual appearanceVisualPlaywright / Chromatic1-5s each

Default: Integration. Catches 80% of bugs with 20% of maintenance cost.

Step 2: Write integration tests (5 mandatory states)

Every data-fetching component must test ALL five states:

tsx
describe('UserProfile', () => {
  it('shows loading skeleton initially', async () => {
    render(<UserProfile userId="123" />)
    expect(screen.getByRole('status')).toHaveTextContent('Loading...')
  })

  it('shows error state with retry button', async () => {
    server.use(http.get('/api/users/123', () => new HttpResponse(null, { status: 500 })))
    render(<UserProfile userId="123" />)
    await waitFor(() => {
      expect(screen.getByRole('alert')).toHaveTextContent('Failed to load')
    })
    expect(screen.getByRole('button', { name: /retry/i })).toBeInTheDocument()
  })

  it('shows empty state when no data', async () => {
    server.use(http.get('/api/users/123', () => HttpResponse.json(null)))
    render(<UserProfile userId="123" />)
    await waitFor(() => {
      expect(screen.getByText(/no user found/i)).toBeInTheDocument()
    })
  })

  it('renders user data on success', async () => {
    render(<UserProfile userId="123" />)
    await screen.findByText('Alice')
    expect(screen.getByText('alice@example.com')).toBeInTheDocument()
  })

  it('handles race condition: fast re-fetch', async () => {
    const { rerender } = render(<UserProfile userId="123" />)
    await screen.findByText('Alice')
    rerender(<UserProfile userId="456" />)
    await screen.findByText('Bob')
    expect(screen.queryByText('Alice')).not.toBeInTheDocument()
  })
})
Step 3: MSW setup (exact pattern)
typescript
import { http, HttpResponse } from 'msw'
import { setupServer } from 'msw/node'

const server = setupServer(
  http.get('/api/users', () => {
    return HttpResponse.json([
      { id: '1', name: 'Alice', email: 'alice@example.com' },
      { id: '2', name: 'Bob', email: 'bob@example.com' },
    ])
  }),

  http.post('/api/users', async ({ request }) => {
    const body = await request.json()
    return HttpResponse.json({ id: '3', ...body }, { status: 201 })
  })
)

beforeAll(() => server.listen({ onUnhandledRequest: 'warn' }))
afterEach(() => server.resetHandlers())
afterAll(() => server.close())
Step 4: Test factories (Faker)
typescript
import { faker } from '@faker-js/faker'

function createUser(overrides: Partial<User> = {}): User {
  return {
    id: faker.string.uuid(),
    name: faker.person.fullName(),
    email: faker.internet.email(),
    createdAt: faker.date.recent().toISOString(),
    ...overrides,
  }
}

const admin = createUser({ name: 'Admin User' })
const emptyUser = createUser({ email: '' })  // Edge case factory
Step 5: E2E tests (Playwright)
tsx
test('checkout flow', async ({ page }) => {
  await page.goto('/products')
  await page.getByTestId('add-to-cart').click()
  await page.getByTestId('cart-count').toHaveText('1')
  await page.getByTestId('checkout').click()
  await page.getByLabel('Email').fill('test@example.com')
  await page.getByRole('button', { name: 'Pay $29.99' }).click()
  await expect(page.getByTestId('order-confirmed')).toBeVisible()
  await expect(page.getByTestId('order-id')).not.toBeEmpty()
})

Always record traces on failure:

bash
npx playwright test --trace on
Step 6: Visual regression
tsx
test('homepage visual', async ({ page }) => {
  await page.goto('/')
  await expect(page).toHaveScreenshot('homepage.png', {
    fullPage: true,
    maxDiffPixelRatio: 0.01,
  })
})
Step 7: CI sharding
yaml
test:
  strategy:
    matrix:
      shard: [1/4, 2/4, 3/4, 4/4]
  run: npx vitest --shard=${{ matrix.shard }}

Flaky Test Protocol

SymptomRoot causeFix
Passes locally, fails CITiming, different envUse waitFor/findBy* instead of fixed timeouts
Fails randomlyShared mutable stateReset state in beforeEach. Use fresh factories.
Network-dependent flakeAPI response timingMSW mocks all network. No real API calls.
Visual diff flakeAnti-aliasing, OS differencesUse maxDiffPixelRatio: 0.01. Run on same OS in CI.

If a test flakes more than once: fix it same day or skip it with test.skip() + a comment explaining why. Never let flaky tests accumulate.


Anti-Patterns

Anti-patternFix
Testing implementation details (state, methods, internal props)Test behavior: what the user sees / API returns
Large snapshots (>20 lines)Snapshots only for small, stable outputs
Over-mocking (mocking business logic)Mock only network + I/O boundaries. Never mock your own code.
Too many assertions per testOne behavior per it() block
Shared mutable state between testsReset in beforeEach. Factories over literals.
Happy path onlyEvery error + empty state gets a test
No trace on E2E failureAlways --trace on in CI. Saves to test-results/.
E2E tests on every PR (slow)E2E only on merge to main. Integration on every PR.

Production Checklist

  • Every data-fetching component: loading + empty + error + success tests
  • MSW: onUnhandledRequest: 'warn' + reset between tests
  • Factory functions with Faker for all fixtures
  • E2E: 3-5 critical flows (checkout, signup, key feature)
  • Visual regression: key pages + components
  • CI: 4 shards minimum for integration tests
  • E2E: only on merge to main. Blocking merge on failure.
  • Flaky tests: zero tolerance. Fix or skip within 24 hours.
  • Accessibility: axe-core in E2E for key pages
  • Coverage: not a metric. Focus on behavior coverage, not line coverage.

Test Data Factories

typescript
import { faker } from '@faker-js/faker'

function createUser(overrides: Partial<User> = {}): User {
  return {
    id: faker.string.uuid(),
    name: faker.person.fullName(),
    email: faker.internet.email(),
    role: faker.helpers.arrayElement(['admin', 'editor', 'viewer']),
    createdAt: faker.date.recent({ days: 30 }).toISOString(),
    ...overrides
  }
}

// Edge cases
const adminUser = createUser({ role: 'admin' })
const emptyEmail = createUser({ email: '' })
const longName = createUser({ name: 'a'.repeat(256) })
const futureDate = createUser({ createdAt: faker.date.future().toISOString() })

Visual Regression Testing

typescript
// Playwright
test('homepage visual check', async ({ page }) => {
  await page.goto('/')
  await expect(page).toHaveScreenshot('homepage.png', {
    fullPage: true,
    maxDiffPixelRatio: 0.01,
  })
})

// CI update: npx playwright test --update-snapshots

Flaky Test Protocol

SymptomRoot causeFix
Passes locally, fails CITiming, different envUse waitFor/findBy* instead of fixed timeouts
Fails randomlyShared mutable stateReset state in beforeEach. Use fresh factories.
Network-dependent flakeAPI response timingMSW mocks all network. No real API calls.
Visual diff flakeAnti-aliasing, OS differencesmaxDiffPixelRatio: 0.01. Run on same OS in CI.
Flaky test not reproducibleRace condition in test setupAdd awaits. Ensure fixtures are resolved before assertions.

Rule: one flake = fix today. Two flakes = skip with test.skip() + comment. Never let flaky tests accumulate.

Show full SKILL.md (322 more words)Show less

Sources

  • Kent C. Dodds — Testing Trophy (kentcdodds.com)
  • Testing Library — Guiding Principles
  • Playwright — Best Practices
  • MSW (mswjs.io) — API mocking
  • Chromatic — Visual testing
  • Martin Fowler — TestCoverage
  • Google Testing Blog — Flaky test elimination

Error Handling

CauseFix
MSW server fails to start — port conflict in CIRun with --no-file-parallelism flag. MSW workers share the same server; parallel test files compete for port
screen.findByText() consistently times out at 1000msIncrease timeout in options: screen.findByText(..., {}, { timeout: 5000 }). Verify MSW handler path matches exactly (trailing slash matters)
Visual snapshot differs between CI (Linux) and local (macOS/Windows)Font anti-aliasing and rendering differ by OS. Run visual tests on same OS as CI. Use maxDiffPixelRatio: 0.02 for cross-OS tolerance
beforeAll MSW hook fails — entire test file skipsEnsure server.listen() is in beforeAll (not beforeEach). Register all handlers before calling listen(). Check onUnhandledRequest: 'warn' catches missing handlers
Playwright E2E passes locally, fails headless in CIUse --trace on in CI config. Check browser version: npx playwright install --with-deps chromium. Some JS executes differently headless vs headed
Test factory generates duplicate unique IDsUse faker.string.uuid() or crypto.randomUUID(). Never use sequential integers for unique IDs. Add uniqueness assertion in factory validation
E2E test flakes on dynamic content that loads after navigationUse page.waitForResponse(urlPattern) targeting the API call, not waitForTimeout(). Assert on data-dependent element, not fixed time
Snapshot test fails on every CI run with timestamp diffsCheck snapshot for timestamps, random IDs, or dynamic dates. Mock with vi.setSystemTime() or jest.useFakeTimers(). Never snapshot unstable content
CI shard times out after 10 minutesIncrease shard count from 4 to 8+ for large suites. Profile slowest test file with --reporter=verbose. Extract slow E2E tests to separate job

Checklist

  • Skill loads without errors in the AI agent
  • YAML frontmatter is valid (description, compatibility, audience)
  • Workflow section provides clear step-by-step instructions
  • Error handling section covers common failure modes
  • All referenced files (references/, scripts/, assets/) exist
  • Skill triggers correctly for intended use cases
  • No broken links or missing resources

© EliasOulkadi, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (scripts, references, assets) in .pack/skills/test-commander of EliasOulkadi/shokunin.

  • SKILL.md
  • assets/test-api-template.ts
  • assets/test-component-template.tsx
  • references/msw-patterns.md
  • references/visual-regression.md
  • scripts/scaffold-test.sh

Open the folder on GitHubat commit 4c68e5b

Compare with similar skills

Test Commander next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Test Commander compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Test Commander this skillEliasOulkadi/shokunin114—~3kAutomated safety check: NotesMIT
Playwright Testingchongdashu/vibejam-starter-pack149—~2.1kAutomated safety check: PassNone
Playwright Testingchongdashu/vibejam-starter-pack149—~2.2kAutomated safety check: PassNone
Web Testing with Playwright and Vitestwithkynam/vibecode-pro-max-kit1.1k—~892Automated safety check: PassApache-2.0
React Testingaffaan-m/ECC277k1 repos~3.3kAutomated safety check: PassMIT
Senior QAalirezarezvani/claude-skills28k1 repos~2.1kAutomated safety check: PassMIT

Similar skills

  • Playwright Testing

    chongdashu/vibejam-starter-pack

    Plan, implement, and debug frontend tests: unit/integration/E2E/visual/a11y.

    149 GitHub stars~2.1k tokensUpdated 5 mo ago
    Testing & QAAuto-check passed
  • Playwright Testing

    chongdashu/vibejam-starter-pack

    Plan, implement, and debug frontend tests: unit/integration/E2E/visual/a11y.

    149 GitHub stars~2.2k tokensUpdated 5 mo ago
    Testing & QAAuto-check passed
  • Web Testing with Playwright and Vitest

    withkynam/vibecode-pro-max-kit

    Covers web testing from unit to E2E, load, visual, accessibility and security checks, with Playwright, Vitest and k6 guides plus a Playwright setup script.

    1.1k GitHub stars~892 tokensUpdated 3 mo ago
    Testing & QAAuto-check passed
  • React Testing

    affaan-m/ECC

    React component testing with React Testing Library, Vitest/Jest, MSW for network mocking, accessibility assertions with axe, and the decision boundary between component tests and Playwright/Cypress…

    277k GitHub starsUsed in 1 repo~3.3k tokens
    Testing & QAAuto-check passed
  • Senior QA

    alirezarezvani/claude-skills

    Generates unit tests, integration tests, and E2E tests for React/Next.js applications.

    28k GitHub starsUsed in 1 repo~2.1k tokens
    Testing & QAAuto-check passed
  • Frontend Typescript Testing

    shinpr/ai-coding-project-boilerplate

    Designs frontend tests using the repository's configured React test and browser harnesses, including RTL, MSW, Vitest, and Playwright when present.

    234 GitHub stars~1.5k tokensUpdated 7 days ago
    Testing & QAAuto-check passed

More from EliasOulkadi/shokunin

All 49 skills in this repo
  • CI CD

    EliasOulkadi/shokunin

    Design CI/CD pipelines for GitHub Actions, GitLab CI, and CircleCI with matrix builds, test sharding, caching, Docker layer caching, OIDC auth, deployment strategies (rolling, blue-green, canary)…

    114 GitHub stars~3.4k tokensUpdated 6 days ago
    Auto-check: notes
  • Component Forge

    EliasOulkadi/shokunin

    Build production-grade components for React, Vue 3, and Svelte 5 with all states (loading, empty, error, success, idle), TypeScript strict, WCAG 2.2 accessibility, server components (RSC), and…

    114 GitHub stars~3.6k tokensUpdated 6 days ago
    Auto-check: notes
  • DB Admin

    EliasOulkadi/shokunin

    PostgreSQL database administration — backup/restore (pgdump, PITR, WAL archiving), health monitoring (connections, bloat, cache hit ratio, dead tuples), connection pooling (PgBouncer), replication…

    114 GitHub stars~2k tokensUpdated 6 days ago
    Auto-check: notes
  • DB Sculptor

    EliasOulkadi/shokunin

    Design database schemas with Prisma/Drizzle, PostgreSQL index strategy (B-tree, GIN, GiST, BRIN, Hash), query optimization (EXPLAIN ANALYZE), migration safety (expand/contract, zero-downtime), and…

    114 GitHub stars~3.1k tokensUpdated 6 days ago
    Auto-check: notes
  • Docker

    EliasOulkadi/shokunin

    Optimize Docker images with multi-stage builds, distroless bases, BuildKit cache mounts, multi-arch builds, compose watch, security hardening (non-root, seccomp, capabilities drop), and…

    114 GitHub stars~3.8k tokensUpdated 6 days ago
    Auto-check: notes
  • Error Handler

    EliasOulkadi/shokunin

    Design error handling, structured logging, and observability with OpenTelemetry (traces, metrics, logs), error classification, recovery patterns (retry with jitter, circuit breaker, bulkhead…

    114 GitHub stars~3.6k tokensUpdated 6 days ago
    Auto-check: notes

Categories

Questions about Test Commander

What does Test Commander do?

Generate unit, integration, E2E, and visual regression tests following the Testing Trophy methodology (80% integration). Test Commander is an agent skill from EliasOulkadi/shokunin. Generate unit, integration, E2E, and visual regression tests following the Testing Trophy methodology (80% integration).

When should I use Test Commander?

Test Commander fits situations like: user asks to write tests; set up testing framework; mock API/dependencies; improve coverage.

How do I install Test Commander in Claude Code?

Run `npx skills add EliasOulkadi/shokunin --skill test-commander -a claude-code`. Or copy the skill folder (.pack/skills/test-commander in EliasOulkadi/shokunin) into .claude/skills/test-commander in your project. Claude Code loads it when a task matches its description.

How do I install Test Commander in Codex?

Run `npx skills add EliasOulkadi/shokunin --skill test-commander -a codex`. Or copy the skill folder (.pack/skills/test-commander in EliasOulkadi/shokunin) into .agents/skills/test-commander in your project. Codex loads it when a task matches its description.

Can I use Test Commander in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add EliasOulkadi/shokunin --skill test-commander -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/test-commander, .gemini/skills/test-commander, .github/skills/test-commander and .opencode/skills/test-commander in your project.

What does Test Commander need to run?

Going by SKILL.md and its folder, Test Commander needs TypeScript and a shell for the scripts in its folder and the command-line tools its instructions call (npx). Our summary lists: Node.js; A Bash shell. Its frontmatter pre-approves these tools: Read, Bash, Write, Grep, Glob. Compatibility (from SKILL.md): opencode.

Does Test Commander access the network?

SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Test Commander safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Test Commander use?

Test Commander is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Test Commander use?

About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.6k tokens, read only when the agent opens those files.

What are the alternatives to Test Commander?

Skills that share tags, products or a category with Test Commander: Playwright Testing (chongdashu/vibejam-starter-pack, 149 stars), Playwright Testing (chongdashu/vibejam-starter-pack, 149 stars), Web Testing with Playwright and Vitest (withkynam/vibecode-pro-max-kit, 1.1k stars) and React Testing (affaan-m/ECC, 277k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Test Commander?

EliasOulkadi (a GitHub user) maintains it in EliasOulkadi/shokunin, which has 114 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 5, 2026.

Source: EliasOulkadi/shokunin on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.