recipe-add-integration-tests
$
npx mdskill add shinpr/claude-code-workflows/recipe-add-integration-testsAdds integration tests to existing codebases by orchestrating subagents using Design Docs.
- Helps developers automate test creation for backend, frontend, or fullstack implementations.
- Depends on Design Docs and delegates tasks to subagents like acceptance-test-generator and quality-fixer.
- Decides actions by following a structured flow from document validation to test review and quality checks.
- Presents results through generated task files and reviewed test implementations in the codebase.
SKILL.md
.github/skills/recipe-add-integration-testsView on GitHub ↗
---
name: recipe-add-integration-tests
description: Add integration/E2E tests to existing codebase using Design Docs
disable-model-invocation: true
---
**Context**: Test addition workflow for existing implementations (backend, frontend, or fullstack)
## Orchestrator Definition
**Core Identity**: "I am an orchestrator."
**First Action**: Register Steps 0-8 using TaskCreate before any execution.
**Why Delegate**: Orchestrator's context is shared across all steps. Direct implementation consumes context needed for review and quality check phases. Task files create context boundaries. Subagents work in isolated context.
**Execution Method**:
- Skeleton generation → delegate to acceptance-test-generator
- Task file creation → orchestrator creates directly (minimal context usage)
- Test implementation → delegate to task-executor
- Test review → delegate to integration-test-reviewer
- Quality checks → delegate to quality-fixer
Document paths: $ARGUMENTS
## Prerequisites
- At least one Design Doc must exist (created manually or via reverse-engineer)
- Existing implementation to test
## Execution Flow
### Step 0: Execute Skill
Execute Skill: documentation-criteria (for task file template in Step 3)
### Step 1: Discover and Validate Documents
```bash
# Verify at least one document path was provided
test -n "$ARGUMENTS" || { echo "ERROR: No document paths provided"; exit 1; }
# Verify provided paths exist
ls $ARGUMENTS
# Discover additional documents
ls docs/design/*.md 2>/dev/null | grep -v template
ls docs/ui-spec/*.md 2>/dev/null
```
Classify discovered documents by filename:
- Filename contains `backend` → **Design Doc (backend)**
- Filename contains `frontend` → **Design Doc (frontend)**
- Located in `docs/ui-spec/` → **UI Spec** (optional)
- None of the above → treat as single-layer Design Doc
### Step 2: Skeleton Generation
Invoke acceptance-test-generator using Agent tool:
- `subagent_type`: "dev-workflows:acceptance-test-generator"
- `description`: "Generate test skeletons"
- `prompt`: List only the documents that exist from Step 1:
```
Generate test skeletons from the following documents:
- Design Doc (backend): [path] ← include only if exists
- Design Doc (frontend): [path] ← include only if exists
- UI Spec: [path] ← include only if exists
```
**Expected output**: `generatedFiles` containing integration and e2e paths
### Step 3: Create Task Files [GATE]
Create one task file per layer, using the monorepo-flow.md naming convention for deterministic agent routing:
- Backend skeletons exist → `docs/plans/tasks/integration-tests-backend-task-YYYYMMDD.md`
- Frontend skeletons exist → `docs/plans/tasks/integration-tests-frontend-task-YYYYMMDD.md`
- Single-layer (no backend/frontend distinction) → `docs/plans/tasks/integration-tests-backend-task-YYYYMMDD.md`
**Template** (per task file):
```markdown
---
name: Implement [layer] integration tests for [feature name]
type: test-implementation
---
## Objective
Implement test cases defined in skeleton files.
## Target Files
- Skeleton: [layer-specific paths from Step 2 generatedFiles]
- Design Doc: [layer-specific Design Doc from Step 1]
## Tasks
- [ ] Implement each test case in skeleton
- [ ] Verify all tests pass
- [ ] Ensure coverage meets requirements
## Acceptance Criteria
- All skeleton test cases implemented
- All tests passing
- quality-fixer reports approved
```
**Output**: "Task file(s) created at [path(s)]. Ready for Step 4."
### Step 4: Test Implementation
For each task file from Step 3, invoke task-executor routed by filename pattern (per monorepo-flow.md):
- `*-backend-task-*` → `subagent_type`: "dev-workflows:task-executor"
- `*-frontend-task-*` → `subagent_type`: "dev-workflows-frontend:task-executor-frontend"
- `description`: "Implement integration tests"
- `prompt`: "Task file: [task file path from Step 3]. Implement tests following the task file."
Execute one task file at a time through Steps 4→5→6→7 before starting the next.
**Expected output**: `status`, `testsAdded`
### Step 5: Test Review
Invoke integration-test-reviewer using Agent tool:
- `subagent_type`: "dev-workflows:integration-test-reviewer"
- `description`: "Review test quality"
- `prompt`: "Review test quality. Test files: [paths from Step 4 testsAdded]. Skeleton files: [layer-specific paths from Step 2 generatedFiles matching current task's layer]"
**Expected output**: `status` (approved/needs_revision), `requiredFixes`
### Step 6: Apply Review Fixes
Check Step 5 result:
- `status: approved` → Mark complete, proceed to Step 7
- `status: needs_revision` → Invoke task-executor with requiredFixes, then return to Step 5
Invoke task-executor routed by task filename pattern:
- `*-backend-task-*` → `subagent_type`: "dev-workflows:task-executor"
- `*-frontend-task-*` → `subagent_type`: "dev-workflows-frontend:task-executor-frontend"
- `description`: "Fix review findings"
- `prompt`: "Fix the following issues in test files: [requiredFixes from Step 5]"
### Step 7: Quality Check
Invoke quality-fixer routed by task filename pattern:
- `*-backend-task-*` → `subagent_type`: "dev-workflows:quality-fixer"
- `*-frontend-task-*` → `subagent_type`: "dev-workflows-frontend:quality-fixer-frontend"
- `description`: "Final quality assurance"
- `prompt`: "Final quality assurance for test files added in this workflow. Run all tests and verify coverage."
**Expected output**: `status` (approved/stub_detected/blocked)
Check quality-fixer response:
- `stub_detected` → Return to Step 4 with `incompleteImplementations[]` details, then re-execute Steps 4→5→6→7
- `blocked` → Escalate to user
- `approved` → Proceed to Step 8
### Step 8: Commit
On `approved` from quality-fixer:
- Commit test files using Bash with message format: "test: add [layer] integration tests for [feature name]"
More from shinpr/claude-code-workflows
- ai-development-guideTechnical decision criteria, anti-pattern detection, debugging techniques, and quality check workflow. Use when making technical decisions, detecting code smells, or performing quality assurance.
- coding-principlesLanguage-agnostic coding principles for maintainability, readability, and quality. Use when implementing features, refactoring code, or reviewing code quality.
- documentation-criteriaDocumentation creation criteria including PRD, ADR, Design Doc, and Work Plan requirements with templates. Use when creating or reviewing technical documents, or determining which documents are required.
- frontend-ai-guideFrontend-specific technical decision criteria, anti-patterns, debugging techniques, and quality check workflow. Use when making frontend technical decisions or performing quality assurance.
- implementation-approachImplementation strategy selection framework. Use when planning implementation strategy, selecting development approach, or defining verification criteria.
- integration-e2e-testingIntegration and E2E test design principles, ROI calculation, test skeleton specification, and review criteria. Use when designing integration tests, E2E tests, or reviewing test quality.
- recipe-buildExecute decomposed tasks in autonomous execution mode
- recipe-designExecute from requirement analysis to design document creation
- recipe-diagnoseInvestigate problem, verify findings, and derive solutions
- recipe-front-buildExecute frontend implementation in autonomous execution mode