| name | implement |
| description | Implement features, fix bugs, and modify production source code in S3Mock. Use when asked to add functionality, change behavior, or modify source files in server/, integration-tests/, or testsupport/. Not for documentation-only or test-only changes. Orchestrates lint, test, and document skills as part of the complete workflow. |
Implementation Skill
Entry Criteria
Use this skill when asked to:
- Add a new S3 API operation or sub-feature
- Fix a bug in production code
- Modify existing source files in
server/, integration-tests/, or testsupport/
Not for test-only or documentation-only changes — use the test or document skill instead.
Before Starting
- Read
AGENTS.md (root) and the relevant module AGENTS.md (server/AGENTS.md, integration-tests/AGENTS.md, or testsupport/AGENTS.md).
- Identify the AWS S3 API operation — verify element names and behavior against the AWS S3 API docs.
- Review existing similar implementations for patterns to follow.
- If nearby code would benefit from cleanup before adding new code, invoke the
refactor skill first.
Execution Steps
New S3 Operations: DTO → Store → Service → Controller
Follow this order exactly — do not skip layers or add logic in the wrong layer:
- DTO (
server/.../dto/): Create data classes with Jackson XML annotations. Verify element and attribute names match the AWS S3 API specification exactly — see INVARIANTS.md. A compile check is not sufficient; run integration tests to verify serialized output.
- Store (
server/.../store/): Add filesystem operations. Follow existing patterns for binary data and metadata JSON.
- Service (
server/.../service/): Add business logic and validation. Throw S3Exception constants only — see INVARIANTS.md.
- Controller (
server/.../controller/): Add HTTP mapping only. Delegate all logic to services. Controllers never catch exceptions — see INVARIANTS.md.
All Changes
- Update the copyright year to
2017-<current year> in the license header of every file you modify — see INVARIANTS.md.
- Invoke the
lint skill after implementation to fix formatting and verify style gates.
- Invoke the
test skill to add or update unit and integration tests.
- Invoke the
document skill to update CHANGELOG.md, README.md, and AGENTS.md where applicable.
Completion Criteria
Troubleshooting
- Build fails: Check JDK 25 is active; run
make format and fix remaining lint errors.
- Tests fail on XML: Verify element names match the AWS S3 API exactly — a compile check is insufficient. Run integration tests to confirm serialized output.
- Docker fails: Use
make skip-docker to isolate the build from Docker issues.
Resources
AGENTS.md — architecture, DO/DON'T, build commands
INVARIANTS.md — hard constraints (copyright, SDK version, XML naming, layering rules)
- Relevant module
AGENTS.md (server/AGENTS.md, integration-tests/AGENTS.md, or testsupport/AGENTS.md)
docs/KOTLIN.md — Kotlin idioms and naming conventions
docs/SPRING.md — Spring Boot patterns, DI, exception handling