AI-powered test generation skills for AWS Python projects — works with Claude Code, GitHub Copilot, and Codex
Project description
aws-test-plugin
AI agent skills for generating comprehensive tests for any AWS Python project — Lambda, API Gateway, Step Functions, and Batch.
Works with Claude Code, GitHub Copilot, and OpenAI Codex.
What It Does
Install this plugin into your AWS project, and your AI coding agent can:
- Discover all Lambdas, Batch jobs, Step Functions, and API specs in your repo
- Read handler code to understand branches, AWS calls, validation rules, error handling
- Generate tests covering every code path — not just happy-path templates
- Run & fix — execute tests, parse failures, fix root causes, re-run until green
Test Types
| Type | Tool | Needs Deploy? |
|---|---|---|
| Integration | moto + pytest | No |
| Contract | jsonschema + pytest | No |
| Performance | pytest-benchmark | No |
| E2E | requests + pytest | Yes |
| Load | Locust | Yes |
AWS Components Covered
| Component | Integration | E2E | Contract | Perf | Load |
|---|---|---|---|---|---|
| API Gateway + Lambda | ✓ | ✓ | ✓ | ✓ | ✓ |
| Step Functions | ✓ | ✓ | ✓ | ✓ | |
| Batch Jobs | ✓ | ✓ | ✓ | ||
| Lambda + DynamoDB | ✓ | ✓ | |||
| Lambda + S3 | ✓ | ||||
| Lambda + RDS/PostgreSQL | ✓ |
Installation
Option 1: Claude Code Plugin (recommended for Claude Code users)
This repo is a native Claude Code plugin. Install it directly:
# Test locally — load the plugin for one session
claude --plugin-dir /path/to/aws-test-plugin
After loading, skills are namespaced as /aws-test-plugin:aws-test-orchestrator, etc.
Use /reload-plugins to pick up changes during development.
Option 2: npx skills add
# Install skills into your project — auto-detects Claude Code, Copilot, Codex
npx skills add whitewhiteqq/aws-test-plugin
Flags:
npx skills add whitewhiteqq/aws-test-plugin --skill aws-e2e-testing # Single skill
npx skills add whitewhiteqq/aws-test-plugin --list # List skills
npx skills add whitewhiteqq/aws-test-plugin -a copilot # Copilot only
npx skills add whitewhiteqq/aws-test-plugin -g # Install globally
Option 3: uv (with CLI tools)
# Install the CLI tool globally (isolated venv, auto-managed by uv)
uv tool install git+https://github.com/whitewhiteqq/aws-test-plugin
# Then install skills into your project
cd your-aws-project
aws-test-plugin init .
Option 4: pip
pip install git+https://github.com/whitewhiteqq/aws-test-plugin
cd your-aws-project
aws-test-plugin init .
Option 5: Manual copy
git clone https://github.com/whitewhiteqq/aws-test-plugin.git
cd your-aws-project
# For Claude Code
cp -r aws-test-plugin/skills/* .claude/skills/
cp -r aws-test-plugin/agents/* .claude/agents/
# For GitHub Copilot
cp -r aws-test-plugin/skills/* .github/skills/
cp -r aws-test-plugin/agents/* .github/agents/
Install test dependencies
# All test deps at once
pip install "aws-test-plugin[all] @ git+https://github.com/whitewhiteqq/aws-test-plugin"
# Or just what you need
pip install "aws-test-plugin[test] @ git+https://github.com/whitewhiteqq/aws-test-plugin" # moto + pytest
pip install "aws-test-plugin[load] @ git+https://github.com/whitewhiteqq/aws-test-plugin" # Locust
pip install "aws-test-plugin[db] @ git+https://github.com/whitewhiteqq/aws-test-plugin" # testcontainers
pip install "aws-test-plugin[perf] @ git+https://github.com/whitewhiteqq/aws-test-plugin" # pytest-benchmark
CLI Commands
# Install skills for all agents (Claude Code + Copilot + Codex)
aws-test-plugin init .
# Install for specific agents only
aws-test-plugin init . --agent claude
aws-test-plugin init . --agent copilot
# List available skills
aws-test-plugin list
# Scaffold test directories (discovers Lambdas, creates conftest.py, pytest.ini)
aws-test-plugin scaffold .
What Gets Installed
Running aws-test-plugin init . creates:
your-project/
├── .claude/ # Claude Code
│ ├── skills/
│ │ ├── aws-test-orchestrator/ # Master skill: discover → delegate
│ │ ├── aws-e2e-testing/ # E2E patterns for API GW, SFN, Batch
│ │ ├── aws-integration-testing/ # moto patterns for S3, DDB, RDS
│ │ ├── aws-contract-testing/ # OpenAPI schema validation
│ │ └── aws-perf-load-testing/ # Benchmarks + Locust load tests
│ └── agents/
│ └── aws-test-engineer.md # Agent definition
├── .github/ # GitHub Copilot
│ ├── skills/ (same skills)
│ └── agents/ (same agent)
└── AGENTS.md # OpenAI Codex instructions
Usage
After installing, ask your AI agent:
| Request | What Happens |
|---|---|
| "Write integration tests for my Lambda" | Reads handler code → generates moto tests for all branches |
| "Create E2E tests for my API" | Finds spec → reads handlers → generates endpoint tests |
| "Test my Step Function" | Finds ASL definition → reads state handlers → tests flow |
| "Benchmark my handler" | Reads handler → mocks deps → pytest-benchmark tests |
| "Load test my API at 100 users" | Reads spec → generates Locust users with weighted endpoints |
| "Scaffold test directories" | Creates tests/ with conftest.py, pytest.ini, layout |
| "What's not tested?" | Compares code paths vs existing tests → reports gaps |
How Test Generation Works
This plugin doesn't fill in templates — it reads your actual code and generates tests based on:
- Handler signatures — event shapes, input parameters
- Branching logic — if/else, try/except → one test per code path
- AWS service calls — which boto3 clients → mock them with moto
- Validation rules — pydantic models, manual checks → test valid + invalid
- Error handling — exceptions caught/raised → verify error responses
- Return shapes — response structures → contract assertions
- Environment deps — env vars → set up in fixtures
Skills Included
| Skill | Triggers When You Say | Reference Patterns |
|---|---|---|
aws-test-orchestrator |
"test my project", "set up testing" | — |
aws-e2e-testing |
"E2E tests", "endpoint tests" | API Gateway, Step Function, Batch |
aws-integration-testing |
"integration tests", "moto tests" | S3, DynamoDB, RDS/PostgreSQL |
aws-contract-testing |
"contract tests", "schema validation" | OpenAPI validation |
aws-perf-load-testing |
"benchmark", "load test", "Locust" | Benchmark, Locust |
Agent Compatibility
| Feature | Claude Code | GitHub Copilot | OpenAI Codex |
|---|---|---|---|
| Native plugin system | ✓ .claude-plugin/ |
— | — |
| Skills auto-loaded | ✓ skills/ |
✓ .github/skills/ |
— |
| Agent definitions | ✓ agents/ |
✓ .github/agents/ |
— |
| Project instructions | ✓ CLAUDE.md |
✓ AGENTS.md |
✓ AGENTS.md |
| Marketplace distribution | ✓ plugin marketplace | — | — |
| Triggered by description | ✓ | ✓ | — |
| Reference files on-demand | ✓ | ✓ | — |
Project Structure
aws-test-plugin/
├── .claude-plugin/
│ └── plugin.json # Claude Code plugin manifest
├── pyproject.toml # uv/pip package config
├── LICENSE # Apache 2.0
├── README.md
├── CONTRIBUTING.md
├── .python-version # 3.12
├── skills/ # Plugin skills (Claude Code auto-discovers)
│ ├── aws-test-orchestrator/SKILL.md
│ ├── aws-e2e-testing/
│ │ ├── SKILL.md
│ │ └── references/ # api-gateway, step-function, batch
│ ├── aws-integration-testing/
│ │ ├── SKILL.md
│ │ └── references/ # S3, DynamoDB, RDS
│ ├── aws-contract-testing/
│ │ ├── SKILL.md
│ │ └── references/ # OpenAPI patterns
│ └── aws-perf-load-testing/
│ ├── SKILL.md
│ └── references/ # benchmark, Locust
├── agents/
│ └── aws-test-engineer.md # Agent definition
├── src/
│ └── aws_test_plugin/
│ ├── __init__.py
│ ├── cli.py # aws-test-plugin CLI
│ ├── AGENTS.md # Bundled Codex instructions
│ └── scripts/
│ ├── scaffold.py # Auto-discover project & create test dirs
│ ├── run_tests.py # Run tests by category
│ └── analyze_results.py # Parse JUnit/Locust/benchmark output
└── tests/
└── test_cli.py
Development
git clone https://github.com/whitewhiteqq/aws-test-plugin.git
cd aws-test-plugin
# Install with uv (creates .venv automatically)
uv sync
# Run tests
uv run pytest tests/ -v
# Lint
uv run ruff check src/
uv run ruff format --check src/
# Type checking
uv run mypy src/
# Security scans
uv run bandit -q -c pyproject.toml -r src/
uv run pip-audit
See CONTRIBUTING.md for details.
Review Flow
- Pull requests should target
develop; maintainers promotedeveloptomainwith a fast-forward release update. - PyPI publishing happens only from an annotated
v*tag pushed frommainafter that promotion. - Review ownership is defined in
.github/CODEOWNERS. - Pull request expectations are defined in
.github/pull_request_template.md.
Requirements
- Python 3.10+
- uv (recommended) or pip
License
Apache 2.0 — see LICENSE
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aws_test_plugin-0.1.1.tar.gz.
File metadata
- Download URL: aws_test_plugin-0.1.1.tar.gz
- Upload date:
- Size: 266.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0205fd30ff121c4d231d7d653250c878001e3e25cdb0dfe670e4cc1d1d451f5
|
|
| MD5 |
c8c50991119c5a2101f8d11e6f8b4072
|
|
| BLAKE2b-256 |
495d779cb8a78fdf61eab7852563175e8e5c97f219a6c3c394366a68cb148bb6
|
Provenance
The following attestation bundles were made for aws_test_plugin-0.1.1.tar.gz:
Publisher:
publish.yml on whitewhiteqq/aws-test-plugin
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aws_test_plugin-0.1.1.tar.gz -
Subject digest:
a0205fd30ff121c4d231d7d653250c878001e3e25cdb0dfe670e4cc1d1d451f5 - Sigstore transparency entry: 1170884666
- Sigstore integration time:
-
Permalink:
whitewhiteqq/aws-test-plugin@31f2d29c84e396de84df95d528376b723a99b4a9 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/whitewhiteqq
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@31f2d29c84e396de84df95d528376b723a99b4a9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aws_test_plugin-0.1.1-py3-none-any.whl.
File metadata
- Download URL: aws_test_plugin-0.1.1-py3-none-any.whl
- Upload date:
- Size: 99.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d369bbd1283c372d7bb4a8c247ecd9714a81e110fd43df33e58c676b0c57a4c
|
|
| MD5 |
d766ac6a61ff56893e1b170de1e229a9
|
|
| BLAKE2b-256 |
79c49e3a31eac5fb7d30bf88a386e8eee57f08b6a6e281916b787cb2fd03072c
|
Provenance
The following attestation bundles were made for aws_test_plugin-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on whitewhiteqq/aws-test-plugin
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aws_test_plugin-0.1.1-py3-none-any.whl -
Subject digest:
8d369bbd1283c372d7bb4a8c247ecd9714a81e110fd43df33e58c676b0c57a4c - Sigstore transparency entry: 1170884753
- Sigstore integration time:
-
Permalink:
whitewhiteqq/aws-test-plugin@31f2d29c84e396de84df95d528376b723a99b4a9 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/whitewhiteqq
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@31f2d29c84e396de84df95d528376b723a99b4a9 -
Trigger Event:
push
-
Statement type: