Use during planning to discover and document test patterns and conventions for writing consistent tests.
Install
npx skillscat add eveld/claude/discover-test-patterns Install via the SkillsCat registry.
SKILL.md
Discover Test Patterns
Automatically discover and document test patterns used in the project for reference during planning and implementation.
What to Discover
Test File Organization
- Location patterns (e.g.,
*_test.go,*.test.ts,test_*.py) - Directory structure (e.g.,
tests/,__tests__/, alongside source) - Framework being used
Common Patterns
Find and document:
- How tests are structured (describe/it, test functions, etc.)
- Assertion style (testify, chai, pytest, etc.)
- Mocking approach (mockery, jest.mock, unittest.mock, etc.)
- Setup/teardown patterns
- Table-driven test examples
Framework Detection
Identify testing frameworks:
- Go: testing, testify, ginkgo
- TypeScript/JavaScript: Jest, Mocha, Vitest
- Python: pytest, unittest
- Rust: built-in test framework
Discovery Process
- Find test files: Use glob patterns to locate tests
- Read examples: Read 2-3 representative test files
- Extract patterns: Identify common structures and styles
- Document: Use template to create reference doc
Output Format
Write to: thoughts/notes/testing.md
Use the template from templates/testing-reference.md and populate with discovered patterns.
Example Output Structure
---
last_updated: 2025-12-23T10:00:00Z
last_updated_by: Claude
project: my-project
---
# Test Patterns Reference
Last discovered: 2025-12-23
## Go Test Patterns
### File Organization
- **Location**: `*_test.go` files alongside source
- **Framework**: testify/require
- **Example**: `internal/auth/handler_test.go`
### Common Pattern: Table-Driven Tests
**Found in**: `internal/auth/handler_test.go:45-78`
```go
func TestAuthHandler(t *testing.T) {
tests := []struct {
name string
input string
expected string
}{
// test cases
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
require.Equal(t, tt.expected, result)
})
}
}Assertion Style
- Use
requirefor assertions that should stop test - Use
assertfor non-critical checks
Mocking Approach
- Mockery-generated mocks in
mocks/directory - Interface-based mocking pattern
## When to Use
Automatically invoked by the `plan` command if `thoughts/notes/testing.md` doesn't exist.