Agent skill

Test Behavior Not Implementation

by fmflurry in fmflurry/settings-opencode

A skill your agent uses when writing, reviewing, or keeping a unit/integration test (Jest, Vitest, xUnit).

MITAuto-check passedTesting & QA

Install Test Behavior Not Implementation

skills CLI
$ npx skills add fmflurry/settings-opencode --skill test-behavior-not-implementation -a claude-code

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

GitHub CLI
$ gh skill install fmflurry/settings-opencode test-behavior-not-implementation --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/fmflurry/settings-opencode.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/test-behavior-not-implementation .claude/skills/test-behavior-not-implementation && 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-behavior-not-implementation
GitHub stars
171
Token cost
~736 tokens
SKILL.md length
341 words
Files
1
Skills in repo
20
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when writing, reviewing, or keeping a unit/integration test (Jest, Vitest, xUnit).

  • Keeping a unit/integration test (Jest
  • SKILL.md covers Five Weak Shapes, The Fix and Keep These
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Tasks that involve Unit testing

What it does

Test Behavior Not Implementation is an agent skill from fmflurry/settings-opencode. Use when writing, reviewing, or keeping a unit/integration test (Jest, Vitest, xUnit). Detects tests that cannot fail for a defect: mock-only, weak, self-referential, constant-pin, fixture-asserts-fixture.

Its SKILL.md is about 740 tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering Unit testing and Integration testing. It works with Jest and Vitest. The repository describes itself as: Custom OpenCode settings. The licence is MIT.

When your agent uses it

  • Keeping a unit/integration test (Jest
  • Tasks that involve Unit testing
  • Tasks that involve Integration testing

Example prompts

  • “/test-behavior-not-implementation”

What it can do on your machine

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

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).

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

  • Network

    No URLs in SKILL.md.

    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.

Context cost

Test Behavior Not Implementation loads about 736 tokens when it runs. Until then it costs about 60 tokens; SKILL.md has 341 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~60
When it runs · the whole SKILL.md, loaded when a task matches
~736

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 passed

The automated check found no risky patterns in SKILL.md.

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from fmflurry/settings-opencode at commit 0e6c33c, republished under its MIT licence (© fmflurry). 341 words, ~736 tokens.

Download SKILL.mdSave it as .claude/skills/test-behavior-not-implementation/SKILL.md (or your agent's skills folder).
name
test-behavior-not-implementation
description
Use when writing, reviewing, or keeping a unit/integration test (Jest, Vitest, xUnit). Detects tests that cannot fail for a defect: mock-only, weak, self-referential, constant-pin, fixture-asserts-fixture.

Test Behavior, Not Implementation

A test calls the code the way its users do and asserts the result they observe against a literal expected value. A test that asserts which calls the code made, or restates a constant the code contains, does neither.

The check: before you keep a test, ask whether it would still pass if every function it imports returned undefined. If yes, it observes no behavior and cannot fail for a defect. Rewrite the assertion or delete the test.

Why: A test that cannot fail for a defect costs CI time and review attention and catches nothing. A constant pin also fails when someone edits the constant or the prompt it restates, so it prevents that edit.

Five Weak Shapes

  • Weak or no assertion. No expect, or only toBeDefined, toBeTruthy, not.toThrow, toBeInstanceOf, toBeGreaterThan(0).
  • Mock or absence only. Only toHaveBeenCalled, not.toHaveBeenCalled, toHaveBeenCalledTimes(N), toBeUndefined, toEqual([]), toHaveLength(0), not.toBe(wrongValue).
  • Self-referential. The expected value comes from the code under test: expect(f(a)).toBe(f(a)), expect(parsed.url).toBe(buildUrl(...)).
  • Constant pin. The assertion restates a hand-maintained constant: expect(LIMITS.maxTools).toBe(8), expect(PROMPT).toContain("You are").
  • Fixture asserts fixture. The assertion reads data the test built in beforeEach, and the subject never runs inside the test body.

The Fix

For mock-only: Assert the payload the mock received or the state after the call, not that it was called.

typescript
// WRONG
expect(handleClick).toHaveBeenCalledTimes(1)

// RIGHT
expect(handleClick).toHaveBeenCalledWith('item-42')

For weak assertion: Call the subject inside the test body with one concrete input and assert the literal output or the observable effect.

typescript
// WRONG
expect(slugify("Hello")).toBeDefined()

// RIGHT
expect(slugify("Hello, World!")).toBe("hello-world")

For self-referential: Test the mechanism that reads it with one concrete input instead of calling the same function twice.

For constant pin: Test the mechanism that reads the constant, not the constant value itself.

For fixture asserts fixture: Actually call the subject under test with the fixture as input and assert the output.

When no such assertion exists, delete the test.

Keep These

  • A test of a relation across a table's rows (a key present in two tables, a parent that exists).
  • A compile-time check in a *.test-d.ts file.
  • xUnit: Assert.NotNull(result) alone or bare mock.Verify(...) are weak — assert the returned value or persisted state instead.

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

Files

Just SKILL.md in skills/test-behavior-not-implementation of fmflurry/settings-opencode.

Open the folder on GitHubat commit 0e6c33c

Compare with similar skills

Test Behavior Not Implementation 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 Behavior Not Implementation compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Test Behavior Not Implementation this skillfmflurry/settings-opencode171—~736Automated safety check: PassMIT
Designing TestsCloudAI-X/claude-workflow-v21.4k1 repos~1.5kAutomated safety check: PassMIT
Tsed Testingtsedio/tsed3.1k—~2kAutomated safety check: PassMIT
Test Writing WorkflowiOfficeAI/AionUi33k1 repos~1.2kAutomated safety check: PassApache-2.0
Vitestsupabase/supabase111k12 repos~1.1kAutomated safety check: PassApache-2.0
Test GuardamElnagdy/guard-skills1.3k2 repos~2.1kAutomated safety check: PassMIT

Similar skills

  • Designing Tests

    CloudAI-X/claude-workflow-v2

    Designs and implements testing strategies for any codebase. An agent skill from CloudAI-X/claude-workflow-v2.

    1.4k GitHub starsUsed in 1 repo~1.5k tokens
    Testing & QAAuto-check passed
  • Tsed Testing

    tsedio/tsed

    Write unit and integration tests for Ts.ED v8 applications with Vitest (Jest as a fallback) - vitest.config with unplugin-swc, PlatformTest.create/invoke/reset from @tsed/platform-http/testing…

    3.1k GitHub stars~2k tokensUpdated today
    Testing & QAAuto-check passed
  • Test Writing Workflow

    iOfficeAI/AionUi

    Sets the test-writing workflow for the repository: risk-first scenario lists, behavior-focused Vitest tests, a full run before each commit and a coverage target.

    33k GitHub starsUsed in 1 repo~1.2k tokens
    Testing & QAAuto-check passed
  • Vitest

    supabase/supabase

    Official

    Vitest API and config reference (Jest-compatible) — mocking with vi., spies, fake timers, coverage configuration, fixtures, snapshots, and test filtering.

    111k GitHub starsUsed in 12 repos~1.1k tokens
    Testing & QAAuto-check passed
  • Test Guard

    amElnagdy/guard-skills

    Reviews newly written or edited tests against nine rules that cut test bloat, such as mock-heavy checks and near-duplicate cases, before they are committed.

    1.3k GitHub starsUsed in 2 repos~2.1k tokens
    Testing & QAAuto-check passed
  • Vitest

    pixel-point/animate-text

    Vitest testing framework patterns for test setup, async testing, mocking with vi., snapshots, and test performance (formerly test-vitest).

    149 GitHub starsUsed in 2 repos~1.3k tokens
    Testing & QAAuto-check passed

More from fmflurry/settings-opencode

All 20 skills in this repo
  • Show Your Work

    fmflurry/settings-opencode

    Keep a reviewable decision trail for long-running or unattended work: a TSV log with one row per decision (what, why, evidence, result).

    171 GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • Playwright E2E Authoring

    fmflurry/settings-opencode

    Scaffold and extend Playwright E2E tests for the gc.platform suite (tests/playwright), wiring every artifact to the real frontend (localhost:4200) + real .NET backend — never mocks.

    171 GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Why

    fmflurry/settings-opencode

    A skill your agent uses for 'why does X work this way', 'why we picked Y', design rationale, regressions, postmortems, or data-backed thresholds.

    171 GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Angular Accessibility

    fmflurry/settings-opencode

    Audit and fix common accessibility issues in Angular templates and Angular Material components.

    171 GitHub stars~2.7k tokensUpdated today
    Auto-check passed
  • Angular Clean Architecture

    fmflurry/settings-opencode

    Scaffolds and extends Angular standalone feature MODULES under src/app/modules/{name} using Clean Architecture layering (presentation/application/core/infrastructure), a self-registering module…

    171 GitHub stars~3.6k tokensUpdated today
    Auto-check passed
  • Angular Cop

    fmflurry/settings-opencode

    Pre-merge code review for Angular + TypeScript pull requests.

    171 GitHub stars~1.4k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Test Behavior Not Implementation

What does Test Behavior Not Implementation do?

A skill your agent uses when writing, reviewing, or keeping a unit/integration test (Jest, Vitest, xUnit). Test Behavior Not Implementation is an agent skill from fmflurry/settings-opencode. Use when writing, reviewing, or keeping a unit/integration test (Jest, Vitest, xUnit).

When should I use Test Behavior Not Implementation?

Test Behavior Not Implementation fits situations like: keeping a unit/integration test (Jest; tasks that involve Unit testing; tasks that involve Integration testing.

How do I install Test Behavior Not Implementation in Claude Code?

Run `npx skills add fmflurry/settings-opencode --skill test-behavior-not-implementation -a claude-code`. Or copy the skill folder (skills/test-behavior-not-implementation in fmflurry/settings-opencode) into .claude/skills/test-behavior-not-implementation in your project. Claude Code loads it when a task matches its description.

How do I install Test Behavior Not Implementation in Codex?

Run `npx skills add fmflurry/settings-opencode --skill test-behavior-not-implementation -a codex`. Or copy the skill folder (skills/test-behavior-not-implementation in fmflurry/settings-opencode) into .agents/skills/test-behavior-not-implementation in your project. Codex loads it when a task matches its description.

Can I use Test Behavior Not Implementation 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 fmflurry/settings-opencode --skill test-behavior-not-implementation -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-behavior-not-implementation, .gemini/skills/test-behavior-not-implementation, .github/skills/test-behavior-not-implementation and .opencode/skills/test-behavior-not-implementation in your project.

What does Test Behavior Not Implementation need to run?

SKILL.md names no scripts, command-line tools or credentials: Test Behavior Not Implementation is instructions for the agent only.

Does Test Behavior Not Implementation access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Test Behavior Not Implementation safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Test Behavior Not Implementation use?

Test Behavior Not Implementation is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Test Behavior Not Implementation use?

About 736 tokens (SKILL.md is roughly 2.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Test Behavior Not Implementation?

Skills that share tags, products or a category with Test Behavior Not Implementation: Designing Tests (CloudAI-X/claude-workflow-v2, 1.4k stars), Tsed Testing (tsedio/tsed, 3.1k stars), Test Writing Workflow (iOfficeAI/AionUi, 33k stars) and Vitest (supabase/supabase, 111k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Test Behavior Not Implementation?

fmflurry (a GitHub user) maintains it in fmflurry/settings-opencode, which has 171 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on October 7, 2026.

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