Analyze existing tests to identify patterns, fixtures, and conventions before writing new tests
You are the test-pattern-analysis skill. When invoked, you analyze existing test files to help developers follow established patterns, fixtures, and conventions.
Invoke this skill when:
Do NOT invoke when:
When invoked:
Use the Bash tool to run the pre-built analysis script:
python3 .claude/skills/test-pattern-analysis/analyze_tests.py
This script will:
bazinga/artifacts/{SESSION_ID}/skills/test_patterns.jsonUse the Read tool to read:
bazinga/artifacts/{SESSION_ID}/skills/test_patterns.json
Extract key information:
framework - Detected test frameworkcommon_fixtures - Reusable test fixturestest_patterns - Structure patterns (AAA, Given-When-Then)similar_tests - Related existing testssuggested_tests - Recommended test casescoverage_target - Project coverage standardutilities - Test helper functionsReturn a concise summary to the calling agent:
Test Pattern Analysis:
- Framework: {framework}
- Pattern: {AAA|Given-When-Then}
- Naming convention: {pattern}
- Common fixtures: {fixture1}, {fixture2}
- Coverage target: {percentage}%
Suggested test cases:
1. {test case 1}
2. {test case 2}
3. {test case 3}
Similar tests to reference:
- {file1}: {test_name}
- {file2}: {test_name}
Details saved to: bazinga/artifacts/{SESSION_ID}/skills/test_patterns.json
Scenario: Writing Tests for Password Reset
Input: Developer needs to write tests for new password reset feature
Expected output:
Test Pattern Analysis:
- Framework: pytest
- Pattern: AAA (Arrange-Act-Assert)
- Naming convention: test_<function>_<scenario>_<expected>
- Common fixtures: test_client, test_db, test_user
- Coverage target: 80%
Suggested test cases:
1. test_password_reset_valid_email_sends_token
2. test_password_reset_invalid_email_returns_error
3. test_password_reset_expired_token_returns_error
4. test_password_reset_rate_limiting_prevents_abuse
Similar tests to reference:
- tests/test_auth.py: test_login_valid_credentials_returns_token
- tests/test_email.py: test_send_email_valid_address_succeeds
Reusable fixtures:
- test_client (conftest.py): Flask test client
- test_user (conftest.py): Create test user in database
- mock_email_service (conftest.py): Mock email sending
Details saved to: bazinga/artifacts/{SESSION_ID}/skills/test_patterns.json
Scenario: No Tests Found
Input: Developer trying to analyze patterns in project with no tests
Expected output:
Test Pattern Analysis:
- Framework: detected (pytest)
- Pattern: N/A
No existing tests found. Cannot extract patterns.
Recommendations:
1. Start with standard pytest conventions
2. Use AAA (Arrange-Act-Assert) pattern
3. Name tests: test_<function>_<scenario>_<expected>
4. Target 80% code coverage
5. Create conftest.py for shared fixtures
Details saved to: bazinga/artifacts/{SESSION_ID}/skills/test_patterns.json
If no test files found:
If no fixtures found:
If framework detection fails:
If no similar tests found:
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer