Skip to content
Back to skills

Integration Test Designer

ASecurity

Design integration tests — the layer BETWEEN unit and E2E — that exercise modules through REAL service, command, database, auth, and permission boundaries with no browser. Every suite names exactly which boundaries are real and which seams stay faked (third-party APIs, clocks, email), with rationale per seam; defines the seeded-data and transaction/cleanup strategy, auth-context minting through real code paths, and per-boundary negative cases. Produces implementable specs and hands implementa...

  • 4 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 11, 2026
testinggoapidatabasesecurity

Works with

  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned October 5, 2026

npx -y skills add ModernNomad-98/Project-Aegis --skill integration-test-designer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Integration Test Designer?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Integration Test Designer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/modernnomad-98-integration-test-designer/badge)](https://www.skillsdirectory.com/skills/modernnomad-98-integration-test-designer)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: integration-test-designer
description: Design integration tests — the layer BETWEEN unit and E2E — that exercise modules through REAL service, command, database, auth, and permission boundaries with no browser. Every suite names exactly which boundaries are real and which seams stay faked (third-party APIs, clocks, email), with rationale per seam; defines the seeded-data and transaction/cleanup strategy, auth-context minting through real code paths, and per-boundary negative cases. Produces implementable specs and hands implementation off. Use when asked to design integration tests, test a command/service through the real database and permission checks, verify module wiring beyond mocked units, or when mocked-everything tests keep passing while real wiring breaks. Do NOT use for isolated unit/component tests (vitest-unit-component-engineer), browser journeys (playwright-e2e-engineer), API schema/compatibility verification (api-contract-test-designer), or cross-tenant/authz negative suites (multi-tenant-security-tester).
---

# Integration Test Designer

Terms: **E2E** means end to end; **CI** means continuous integration;
**API** means application programming interface; **DB** means database;
**UI** means user interface; **IDOR** means insecure direct object reference;
**HTTP** means Hypertext Transfer Protocol; **SMS** means Short Message
Service; **PR** means pull request; **SDK** means software development kit.

## Purpose

Design the test layer that proves modules work through their REAL boundaries
— service to command to database, with real auth context and real permission
checks — while explicitly naming the seams that stay faked. This is the layer
between unit (everything isolated) and E2E (browser journey): no browser, no
mocked database, no pretending. The deliverable is an implementable suite
design: boundary map, fixture/transaction strategy, per-behavior specs with
negative cases, and CI placement.

## Use When

- Use when: asked to design integration tests for commands, services, API
  handlers, repositories, or background jobs through real infrastructure.
- Use when: units are green but wiring keeps breaking — mocks drifted from
  real service/DB behavior.
- Use when: a test plan hands over items marked "integration layer".
- Use when: a module's auth/permission enforcement must be tested through the
  real middleware/guard path (functional correctness of the check).
- Do NOT use when: the subject is pure logic or an isolated component —
  `vitest-unit-component-engineer` *(manual-only)*.
- Do NOT use when: the ask is a user journey through the real UI —
  `playwright-e2e-engineer` *(manual-only)*.
- Do NOT use when: the ask is schema/shape/version compatibility of an API or
  webhook — `api-contract-test-designer` (contract ≠ flow).
- Do NOT use when: the ask is PROVING tenant isolation or authorization as a
  security property (cross-tenant matrices, IDOR enumeration, escalation) —
  the shipped `multi-tenant-security-tester` *(manual-only)* owns that negative suite; this
  skill covers functional boundary behavior and defers security matrices to it.

## Inputs to Inspect

1. The module and its real dependencies: which services, DB tables,
   auth/permission middleware, queues it actually touches (read the code, not
   the diagram).
2. Infrastructure availability: can tests get a real database (local
   container, CI service)? Existing integration setup/config if any.
3. How auth context is established in production code (session, token,
   middleware) — tests must mint context through that path, not by faking
   internals.
4. Existing fixtures/factories (`test-data-architect` output) and migration
   state — what schema the suite runs against.
5. The plan items or bug history this suite must verify (risk-traced).

## Workflow

When a human must choose a real-dependency environment for a local or CI
integration suite, define unfamiliar terms and each viable option and why it
fits. Compare case-specific fidelity, isolation, CI runtime, money, setup
time, and ongoing upkeep; state unknown costs instead of guessing. Recommend
one from the affected environment's constraints and explain why it fits the
user's goals and what fact would change the recommendation before one atomic
decision question. Ask for a missing deciding fact first when needed. Keep
routine design choices within this skill; a preference does not authorize
provisioning or test execution.

1. **Draw the boundary map first.** For the module under test, list every
   boundary and classify: REAL in this suite (service calls, DB reads/writes,
   auth middleware, permission checks) or FAKED seam (third-party HTTP, email/
   SMS, payment provider, clock, randomness). Every fake gets a one-line
   rationale (non-deterministic, costs money, external ownership). The
   classification table template is in
   [references/boundary-catalog.md](references/boundary-catalog.md).
2. **Define the data strategy:** seeded baseline via real
   migrations + factories; per-test isolation via transaction-rollback or
   per-worker schema (pick per the automation blueprint; compose
   `test-data-architect` for fixture design). Cleanup is structural, not
   manual DELETE lists.
3. **Define auth-context minting:** create users/roles through real code
   paths (signup service, membership creation) or documented test bootstrap
   endpoints — never by injecting a fabricated session object the middleware
   would have rejected.
4. **Specify behaviors per boundary:** for each command/service under test —
   happy path through the full real stack (assert the DB state AND the
   response), negative paths (invalid input rejected at the boundary,
   permission denied for wrong role — functional check), and failure modes of
   faked seams (provider timeout/error surfaced correctly).
5. **Keep the layer honest:** if a spec needs a browser, it moved to E2E; if
   it mocks the DB, it moved to unit; if it enumerates cross-tenant access,
   it belongs to `multi-tenant-security-tester` *(manual-only)* — record these reroutes.
6. **Define execution & CI placement:** runtime budget, parallelization
   constraints (per-worker DB), which tier runs the suite (usually PR,
   blocking). If the owner must choose the real test database environment,
   define an ephemeral local/CI database (created for a run and discarded)
   and a shared CI/staging database (reused across runs). Explain why each
   is viable, its production-fidelity and data-isolation benefits and
   drawbacks, setup/run/upkeep effort, and money cost or unknowns.
   Recommend the path fitting the boundary and parallel-run evidence,
   explain why and what constraint could change it, then ask one decision
   question. Keep third-party seams faked and design only; this skill does
   not provision either environment.
7. **Hand off implementation** with the spec quality bar: each spec names
   setup, action, and observable assertions: response plus relevant persisted
   state for writes, unchanged state for rejected writes, and response plus
   relevant baseline for reads.

## Output Format

When asking for this build choice, show each option's meaning, reason,
case-specific benefits and limits, money/setup/upkeep or unknowns, and
a justified recommendation before the one decision question.

```
INTEGRATION TEST DESIGN — <module/scope>
Boundary map: <boundary → REAL | FAKED (rationale)>
Data strategy: <seed/factory source, isolation mechanism, cleanup>
Auth-context minting: <how personas/roles are created via real paths>
Specs:
  <id> — <behavior> — setup <fixtures/persona> — action <real call path>
       — assert <response + write state | rejected-write unchanged state |
         read response + relevant baseline> — negatives <invalid/denied/failure>
Rerouted items: <specs that belong to unit/E2E/security layers + where sent>
Environment assumptions: <DB/container/CI services required>
Owner environment choice (only if needed): <plain terms; ephemeral/local vs
  shared CI/staging; reasons, fidelity/isolation pros/cons, setup/run/upkeep
  and money costs or unknowns; recommendation and why; one question>
CI placement: <tier, runtime budget, parallelization constraints>
Handoffs: <implementation → engineer executing the suite;
          security matrices → multi-tenant-security-tester>
Exit criteria: <what "this layer is covered" means for the module>
```

## Validation Checklist

- [ ] User-facing build choices explain terms, reasons, costs or unknowns,
      pros/cons, and a justified recommendation before one atomic question.
- [ ] Boundary map classifies EVERY dependency as real or faked, each fake
      with rationale — no ambient unlisted mocks.
- [ ] Database, auth, and permission paths under test are REAL; any mock of
      them reroutes the spec to unit.
- [ ] Auth context minted through real code paths, not fabricated internals.
- [ ] Write specs assert relevant persisted state; rejected writes assert
      unchanged state; read-only specs assert response and relevant baseline.
- [ ] Negative cases present per boundary (invalid, denied, seam failure).
- [ ] Data isolation strategy supports parallel runs.
- [ ] No browser anywhere in the design; no cross-tenant security matrices
      re-owned from `multi-tenant-security-tester`.
- [ ] CI placement and runtime budget stated.
- [ ] Any owner-facing database-environment choice explains terms, viable
      paths, fidelity/isolation tradeoffs, costs or unknowns, and a
      reasoned recommendation before one question; nothing is provisioned.

## Gotchas

- "Integration" suites where the DB is mocked test serialization, not
  integration — the most common false-confidence pattern; reroute honestly.
- Asserting only the HTTP response misses write bugs — a 200 with the wrong
  row persisted passes such tests; always assert stored state.
- Fabricated auth contexts (injecting a session object directly) skip the
  middleware being tested and rot silently when auth changes.
- Faked seams drift: a payment-provider fake that never returns the real
  error shape hides handling bugs — pin fakes to recorded/documented shapes
  and note drift risk (contract verification of the real provider belongs to
  `api-contract-test-designer`).
- Shared seed data across parallel workers causes intermittent failures that
  get misfiled as flakes — isolation is a design property, not a retrofit.

## Stop Conditions

- A real database/service is unavailable for local test runs, CI runs, or
  both → identify the affected environment. Compare viable ways to provision
  a real dependency there; a local container and a CI service may both be
  needed. Explain each option under the build-choice rule and ask only one
  environment's decision per turn. Never silently degrade to mocked
  "integration".
- The module has no seam between it and a third-party dependency (direct SDK
  calls everywhere) → designing the test requires a product refactor;
  surface it as a separate classified change.
- Tenant semantics/authorization matrix undefined while permission behavior
  is in scope → functional checks proceed, but security-matrix design halts
  and routes to `multi-tenant-security-tester` *(manual-only)* / `tenant-modeler`.
- Asked to also implement and run the suite → implementation is a separate
  side-effecting step; hand off with the specs.

## Supporting Files

- [references/boundary-catalog.md](references/boundary-catalog.md) —
  boundary classification table, transaction/cleanup patterns compared,
  auth-minting recipes, and seam-failure case catalog.
- `evals/evals.json` — trigger + behavior cases.
- `evals/trigger-evals.json` — discrimination within the test-level cluster
  and against the shipped `multi-tenant-security-tester`.

Files in this skill

  • SKILL.md8.7 KB
  • evals/evals.json3 KB
  • evals/trigger-evals.json2.3 KB
  • references/boundary-catalog.md2.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…