aws-test-plugin 0.1.0__tar.gz → 0.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. aws_test_plugin-0.1.2/.claude-plugin/marketplace.json +17 -0
  2. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.claude-plugin/plugin.json +1 -1
  3. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/CONTRIBUTING.md +5 -3
  4. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/PKG-INFO +2 -1
  5. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/README.md +1 -0
  6. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/agents/aws-test-engineer.md +28 -24
  7. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/pyproject.toml +1 -1
  8. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-contract-testing/SKILL.md +0 -4
  9. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-e2e-testing/SKILL.md +0 -4
  10. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-integration-testing/SKILL.md +0 -4
  11. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-perf-load-testing/SKILL.md +0 -4
  12. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-test-orchestrator/SKILL.md +0 -4
  13. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-unit-testing/SKILL.md +0 -4
  14. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/src/aws_test_plugin/__init__.py +1 -1
  15. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/tests/test_cli.py +0 -16
  16. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/uv.lock +2 -2
  17. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.gitattributes +0 -0
  18. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.github/CODEOWNERS +0 -0
  19. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.github/pull_request_template.md +0 -0
  20. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.github/workflows/ci.yml +0 -0
  21. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.github/workflows/codeql.yml +0 -0
  22. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.github/workflows/publish.yml +0 -0
  23. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.gitignore +0 -0
  24. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.python-version +0 -0
  25. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/LICENSE +0 -0
  26. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/PLAN.md +0 -0
  27. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-contract-testing/references/openapi-patterns.md +0 -0
  28. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-e2e-testing/references/api-gateway-patterns.md +0 -0
  29. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-e2e-testing/references/batch-patterns.md +0 -0
  30. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-e2e-testing/references/step-function-patterns.md +0 -0
  31. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-integration-testing/references/lambda-dynamodb-patterns.md +0 -0
  32. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-integration-testing/references/lambda-eventbridge-patterns.md +0 -0
  33. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-integration-testing/references/lambda-kinesis-patterns.md +0 -0
  34. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-integration-testing/references/lambda-rds-patterns.md +0 -0
  35. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-integration-testing/references/lambda-s3-patterns.md +0 -0
  36. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-integration-testing/references/lambda-sns-patterns.md +0 -0
  37. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-integration-testing/references/lambda-sqs-patterns.md +0 -0
  38. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-perf-load-testing/references/benchmark-patterns.md +0 -0
  39. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-perf-load-testing/references/locust-patterns.md +0 -0
  40. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-test-orchestrator/references/secrets-and-config.md +0 -0
  41. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-unit-testing/references/boundary-branch-patterns.md +0 -0
  42. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-unit-testing/references/edge-case-patterns.md +0 -0
  43. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/src/aws_test_plugin/AGENTS.md +0 -0
  44. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/src/aws_test_plugin/cli.py +0 -0
  45. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/src/aws_test_plugin/scripts/analyze_results.py +0 -0
  46. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/src/aws_test_plugin/scripts/run_tests.py +0 -0
  47. {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/src/aws_test_plugin/scripts/scaffold.py +0 -0
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "claude-aws-test-plugin",
3
+ "owner": {
4
+ "name": "whitewhiteqq"
5
+ },
6
+ "metadata": {
7
+ "description": "AI-powered test generation skills for AWS Python projects — Lambda, API Gateway, Step Functions, and Batch."
8
+ },
9
+ "plugins": [
10
+ {
11
+ "name": "claude-aws-test-plugin",
12
+ "source": "./",
13
+ "description": "Generates E2E, integration, contract, performance, and load tests by reading actual handler code.",
14
+ "version": "0.1.2"
15
+ }
16
+ ]
17
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "aws-test-plugin",
3
3
  "description": "AI-powered test generation skills for AWS Python projects — Lambda, API Gateway, Step Functions, and Batch. Generates E2E, integration, contract, performance, and load tests by reading actual handler code.",
4
- "version": "0.1.0",
4
+ "version": "0.1.2",
5
5
  "author": {
6
6
  "name": "whitewhiteqq"
7
7
  },
@@ -130,7 +130,7 @@ Principles:
130
130
  - Default to `Rebase and merge` for pull requests into `develop` so that every individual commit — and its reasoning — is preserved in the public history. Use `Squash and merge` only when the branch contains exploratory or fixup commits that add no lasting value; when squashing, the single merge commit must capture all essential context from the branch (see Commit Message Style).
131
131
  - Avoid GitHub merge commits for routine pull requests because they create noisy branch divergence and a less readable graph.
132
132
  - Promote releases from `develop` to `main` with a maintainer-run fast-forward update so both branches share identical history.
133
- - Tag every release on `main` with an annotated tag (`git tag -a v0.1.0 -m "..."`). The tag message should summarize what shipped, key decisions made since the prior release, and any known limitations. Annotated tags are git objects — they survive cloning and forking, unlike GitHub-only release notes.
133
+ - Tag every release on `main` with an annotated tag (`git tag -a v0.1.0 -m "..."`). Then create a GitHub Release targeting that tag — creating the Release is the PyPI publish trigger. Releases follow one path only: feature branch -> `develop` -> `main` -> version tag -> GitHub Release -> PyPI. The tag message should summarize what shipped, key decisions made since the prior release, and any known limitations. Annotated tags are git objects — they survive cloning and forking, unlike GitHub-only release notes.
134
134
 
135
135
  ## Commit Message Style
136
136
 
@@ -267,18 +267,20 @@ must also land in the commit messages that enter `develop`.
267
267
  6. Submit a pull request to `develop` using `.github/pull_request_template.md`
268
268
  7. Merge pull requests with `Rebase and merge` (preferred — preserves individual commit reasoning) or `Squash and merge` (only when intermediate commits are noise); do not use merge commits
269
269
  8. Release `develop` to `main` with a maintainer-run fast-forward update after CI passes on `develop`; use `git merge --ff-only develop` from a local checkout of `main` so `main` advances without rewriting or duplicating commit history
270
- 9. Review responsibility is assigned through `.github/CODEOWNERS`
270
+ 9. Create and push an annotated version tag from `main`, then create a GitHub Release targeting that tag; the Release is the PyPI publish trigger
271
+ 10. Review responsibility is assigned through `.github/CODEOWNERS`
271
272
 
272
273
  ## Maintainer Notes
273
274
 
274
275
  - Protect `main` and `develop` against direct pushes.
275
276
  - Enable `Rebase and merge` (preferred) and `Squash and merge` (fallback) for contributor pull requests into `develop`. Disable `Create a merge commit` to enforce linear history.
276
277
  - Do not rely on GitHub merge buttons for release promotion to `main`; use a local `git merge --ff-only develop` followed by `git push origin main`.
278
+ - Do not publish to PyPI from a feature branch or from `develop`. PyPI releases are triggered only by creating a GitHub Release after `develop` has been fast-forwarded into `main` and an annotated `v*` tag has been pushed from that `main` commit.
277
279
  - Configure `develop` branch protection or rulesets to require linear history and the CI checks `Test (Python 3.10)`, `Test (Python 3.11)`, `Test (Python 3.12)`, `Test (Python 3.13)`, `Lint`, `Type Check`, and `Security`.
278
280
  - Configure `main` so only maintainers can update it, with no force pushes or deletions.
279
281
  - Keep release updates focused. Avoid mixing repository governance, experiments, and product changes in the same release.
280
282
  - Do not rewrite shared branch history unless there is a clear operational reason and the change is communicated.
281
- - After each fast-forward update to `main`, create an annotated tag and push it:
283
+ - After each fast-forward update to `main`, create an annotated tag, push it, and then create a GitHub Release targeting that tag to publish to PyPI:
282
284
  ```bash
283
285
  git tag -a v<VERSION> -m "v<VERSION>: <one-line theme>
284
286
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aws-test-plugin
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: AI-powered test generation skills for AWS Python projects — works with Claude Code, GitHub Copilot, and Codex
5
5
  Project-URL: Homepage, https://github.com/whitewhiteqq/aws-test-plugin
6
6
  Project-URL: Repository, https://github.com/whitewhiteqq/aws-test-plugin
@@ -329,6 +329,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
329
329
  ## Review Flow
330
330
 
331
331
  - Pull requests should target `develop`; maintainers promote `develop` to `main` with a fast-forward release update.
332
+ - PyPI publishing is triggered by creating a GitHub Release targeting an annotated `v*` tag on `main`.
332
333
  - Review ownership is defined in `.github/CODEOWNERS`.
333
334
  - Pull request expectations are defined in `.github/pull_request_template.md`.
334
335
 
@@ -267,6 +267,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
267
267
  ## Review Flow
268
268
 
269
269
  - Pull requests should target `develop`; maintainers promote `develop` to `main` with a fast-forward release update.
270
+ - PyPI publishing is triggered by creating a GitHub Release targeting an annotated `v*` tag on `main`.
270
271
  - Review ownership is defined in `.github/CODEOWNERS`.
271
272
  - Pull request expectations are defined in `.github/pull_request_template.md`.
272
273
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: aws-test-engineer
3
- purpose: >
3
+ description: >
4
4
  Generate, run, and fix comprehensive tests for AWS Python projects.
5
5
  Analyzes actual handler code to produce E2E, integration, contract,
6
6
  performance, and load tests. Works with Lambda, API Gateway,
@@ -12,29 +12,6 @@ skills:
12
12
  - aws-integration-testing
13
13
  - aws-contract-testing
14
14
  - aws-perf-load-testing
15
- definition_of_done:
16
- - All discovered AWS components have corresponding test files
17
- - Unit tests cover every branch, boundary value, and edge case in business logic
18
- - Every code path (happy path, error handling, edge cases) has a test
19
- - Tests pass locally with moto/testcontainers (no real AWS calls)
20
- - Test coverage for handler logic is >= 80% (branch coverage)
21
- - Performance benchmarks have defined thresholds
22
- - Load test locustfiles match API spec endpoints
23
- - Test data uses prefixes for easy cleanup (TEST-, E2E-TEST-, LOAD-TEST-)
24
- - conftest.py provides shared fixtures for all test types
25
- - pytest.ini configures markers and test paths
26
- - No secrets, API keys, or tokens hardcoded in test files
27
- - .env.example documents required configuration variables
28
- - All offline tests can run in 1 click via `python scripts/run_tests.py all`
29
- - Installation guidance lists the required test dependency groups
30
- safety:
31
- - Never run tests against production without explicit user confirmation
32
- - Never make real AWS API calls — use moto or testcontainers
33
- - Never store credentials, API keys, or tokens in test files
34
- - Never delete production data
35
- - Load tests must have --run-time set (no unbounded runs)
36
- - All test data is prefixed and self-cleaning
37
- - Use .env files (gitignored) for secrets, never commit .env
38
15
  ---
39
16
 
40
17
  # AWS Test Engineer Agent
@@ -93,3 +70,30 @@ source code, not from generic templates.
93
70
  | Performance | pytest-benchmark | Yes | No |
94
71
  | E2E | requests + pytest | No | Yes |
95
72
  | Load | Locust | No | Yes |
73
+
74
+ ## Definition of Done
75
+
76
+ - All discovered AWS components have corresponding test files
77
+ - Unit tests cover every branch, boundary value, and edge case in business logic
78
+ - Every code path (happy path, error handling, edge cases) has a test
79
+ - Tests pass locally with moto/testcontainers (no real AWS calls)
80
+ - Test coverage for handler logic is >= 80% (branch coverage)
81
+ - Performance benchmarks have defined thresholds
82
+ - Load test locustfiles match API spec endpoints
83
+ - Test data uses prefixes for easy cleanup (TEST-, E2E-TEST-, LOAD-TEST-)
84
+ - conftest.py provides shared fixtures for all test types
85
+ - pytest.ini configures markers and test paths
86
+ - No secrets, API keys, or tokens hardcoded in test files
87
+ - .env.example documents required configuration variables
88
+ - All offline tests can run in 1 click via `python scripts/run_tests.py all`
89
+ - Installation guidance lists the required test dependency groups
90
+
91
+ ## Safety Rules
92
+
93
+ - Never run tests against production without explicit user confirmation
94
+ - Never make real AWS API calls — use moto or testcontainers
95
+ - Never store credentials, API keys, or tokens in test files
96
+ - Never delete production data
97
+ - Load tests must have --run-time set (no unbounded runs)
98
+ - All test data is prefixed and self-cleaning
99
+ - Use .env files (gitignored) for secrets, never commit .env
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "aws-test-plugin"
3
- version = "0.1.0"
3
+ version = "0.1.2"
4
4
  description = "AI-powered test generation skills for AWS Python projects — works with Claude Code, GitHub Copilot, and Codex"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -1,9 +1,5 @@
1
1
  ---
2
2
  name: aws-contract-testing
3
- license: Apache-2.0
4
- metadata:
5
- author: whitewhiteqq
6
- version: "0.1.0"
7
3
  description: >
8
4
  Generate contract tests that validate API schemas, request/response shapes,
9
5
  required fields, security definitions, and step function input/output
@@ -1,9 +1,5 @@
1
1
  ---
2
2
  name: aws-e2e-testing
3
- license: Apache-2.0
4
- metadata:
5
- author: whitewhiteqq
6
- version: "0.1.0"
7
3
  description: >
8
4
  Generate comprehensive end-to-end tests for AWS Python services by reading
9
5
  the actual handler code logic. Covers API Gateway Lambda proxies,
@@ -1,9 +1,5 @@
1
1
  ---
2
2
  name: aws-integration-testing
3
- license: Apache-2.0
4
- metadata:
5
- author: whitewhiteqq
6
- version: "0.1.0"
7
3
  description: >
8
4
  Generate comprehensive integration tests for AWS Python Lambda functions,
9
5
  Batch jobs, and services that interact with S3, DynamoDB, RDS/PostgreSQL,
@@ -1,9 +1,5 @@
1
1
  ---
2
2
  name: aws-perf-load-testing
3
- license: Apache-2.0
4
- metadata:
5
- author: whitewhiteqq
6
- version: "0.1.0"
7
3
  description: >
8
4
  Generate performance benchmarks and load tests for AWS Python services.
9
5
  Performance tests measure Lambda latency, memory usage, cold start time,
@@ -1,9 +1,5 @@
1
1
  ---
2
2
  name: aws-test-orchestrator
3
- license: Apache-2.0
4
- metadata:
5
- author: whitewhiteqq
6
- version: "0.1.0"
7
3
  description: >
8
4
  Master skill for testing AWS Python projects. Discovers project components
9
5
  (Lambda, API Gateway, Step Functions, Batch), reads handler code logic,
@@ -1,9 +1,5 @@
1
1
  ---
2
2
  name: aws-unit-testing
3
- license: Apache-2.0
4
- metadata:
5
- author: whitewhiteqq
6
- version: "0.1.0"
7
3
  description: >
8
4
  Generate thorough unit tests for AWS Python business logic with full branch
9
5
  coverage, boundary value analysis, and edge case testing. Isolates pure
@@ -1,3 +1,3 @@
1
1
  """aws-test-plugin — AI-powered test generation for AWS Python projects."""
2
2
 
3
- __version__ = "0.1.0"
3
+ __version__ = "0.1.2"
@@ -102,22 +102,6 @@ def test_skill_description_under_1024_chars():
102
102
  assert len(desc) <= 1024, f"{skill.name}: description is {len(desc)} chars (max 1024)"
103
103
 
104
104
 
105
- def test_skill_has_license():
106
- """Every SKILL.md should have a license field."""
107
- skills_dir = _get_data_dir() / "skills"
108
- for skill in skills_dir.iterdir():
109
- if not skill.is_dir():
110
- continue
111
- skill_md = skill / "SKILL.md"
112
- if not skill_md.exists():
113
- continue
114
-
115
- content = skill_md.read_text(encoding="utf-8")
116
- parts = content.split("---", 2)
117
- if len(parts) >= 3:
118
- assert "license:" in parts[1], f"{skill.name}/SKILL.md missing license"
119
-
120
-
121
105
  def test_skill_reference_links_resolve():
122
106
  """Reference file links in SKILL.md must point to existing files."""
123
107
  skills_dir = _get_data_dir() / "skills"
@@ -1,5 +1,5 @@
1
1
  version = 1
2
- revision = 2
2
+ revision = 3
3
3
  requires-python = ">=3.10"
4
4
  resolution-markers = [
5
5
  "python_full_version >= '3.11'",
@@ -76,7 +76,7 @@ wheels = [
76
76
 
77
77
  [[package]]
78
78
  name = "aws-test-plugin"
79
- version = "0.1.0"
79
+ version = "0.1.1"
80
80
  source = { editable = "." }
81
81
  dependencies = [
82
82
  { name = "defusedxml" },
File without changes
File without changes