# Test First

> Use when fixing a bug or adding behavior that can be covered by an automated test — especially bug fixes, where a test should reproduce the problem before any fix is written. Makes the agent write a failing test first, then the code that makes it pass, so the change is provably correct and stays fixed.

- **Type:** Skill
- **Install:** `agentstack add skill-buildmoonshot-skillpacks-test-first`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [buildmoonshot](https://agentstack.voostack.com/s/buildmoonshot)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [buildmoonshot](https://github.com/buildmoonshot)
- **Source:** https://github.com/buildmoonshot/skillpacks/tree/main/skills/engineering/intermediate/test-first

## Install

```sh
agentstack add skill-buildmoonshot-skillpacks-test-first
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Test First

When the change can be tested, **write the test before the implementation.**

## For a bug fix

1. **Reproduce it with a failing test.** Write a test that asserts the *correct* behavior — it should fail against the current buggy code. This proves you understand the bug.
2. **Run it and watch it fail** for the expected reason. A test that passes before you've fixed anything is testing the wrong thing.
3. **Write the minimal fix** that makes it pass.
4. **Run the full suite** to confirm the fix works and breaks nothing else.

## For a new feature

1. Write a test describing the behavior you want (it fails — the feature doesn't exist yet).
2. Implement until it passes.
3. Add tests for the obvious edge cases (empty input, boundaries, error paths).

## Keep it honest

- The test must actually fail first. "I wrote a test and it passes" on unwritten code means the test is hollow.
- Test **behavior**, not implementation details — assert *what* the code does, not *how*, so the test survives refactors.
- If something genuinely can't be tested (UI nuance, external service), say so and fall back to a concrete manual check instead of pretending.

## Why this matters

A bug with a failing-then-passing test around it is a bug that won't silently come back — the test stands guard forever. Writing the test first also forces you to define "done" before you write code, which is exactly when it's cheapest to get the definition right.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [buildmoonshot](https://github.com/buildmoonshot)
- **Source:** [buildmoonshot/skillpacks](https://github.com/buildmoonshot/skillpacks)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-buildmoonshot-skillpacks-test-first
- Seller: https://agentstack.voostack.com/s/buildmoonshot
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
