Loading...
Loading...
AI SDLC test-case-driven testing workflow. Use when an AI assistant is asked to derive test cases, create a test plan, expand coverage, or write tests from explicit scenarios before implementing unit, service, transport, or integration tests. Supports `--quick-flow` for fast assumption-driven execution and `--full-flow` for question-driven verified execution. Explicit full or end-to-end spec refinement requests continue through the existing 18-stage refinement cascade.
npx skill4agent add mikegorelikoff/ai-sdlc-harness ai-sdlc-test-casesInternal AI SDLC skill, not client-facing by default. Every rule below is important to follow. None of it can be skipped. Before producing the final artifact, confirm required inputs, target audience, missing facts, output format, and constraints when they are unclear. Do not invent missing information. Ask concise clarification questions when required inputs are absent.
ai-sdlc-test-casesspecs-refiniment/<feature-name>/<file.md>TBDNot providedAssumption--quick-flow--full-flow--full-flow--quick-flow--quick-flowdecision-log.md--quick-flow--full-flow--full-flow--full-flowspecs-refiniment/<feature-name>/<file.md>ai-sdlc-handoff/v1resultblockersnext_requirednext_optionalreasoncommandexpected_artifactsummary.txt*-summary.txt_ai_sdlcspecs-refiniment/<feature-name>/decision-log.mdspecs/<feature-name>/decision-log.md# Decision Log
| ID | Date | Status | Owner | Decision | Context/Evidence | Options Considered | Affected Artifacts | Validation/Trace Links |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| DEC-001 | YYYY-MM-DD | proposed / accepted / superseded / rejected | role or name | concise decision | source facts, artifact links, or evidence | option A; option B; recommended default | affected docs, tasks, code, tests, or rollout notes | requirement IDs, test IDs, validation commands, PRs, commits, or tickets |specs-refiniment/<feature-name>/<file.md>specs-refiniment/<feature-name>/<file.md>tbd-<short-topic><feature-name>specs/$ai-sdlc-sddspecs-refiniment/<feature-name>/_ai_sdlc/state.toonspecs/<feature-name>/_ai_sdlc/state.toonpython3 skills/_shared/state_machine.py check --feature <feature-name> --skill <this-skill-name> --workspace <refinement|implementation> --quick-flow|--full-flowbegincomplete--artifacts <path>--decision-ref DEC-###--full-flow--quick-flow--assumption "..."--decision-ref DEC-###decision-log.mdpython3 skills/_shared/state_machine.py status --feature <feature-name> --workspace <refinement|implementation> --format toonstate.toonartifact_metadataai-sdlc-artifact-metadata/v1featureartifactpathworkspaceskillflow_modestate_filedecision_logstatusownercreated_atupdated_attrace_idsrelated_artifactsvalidationmetatagsmetatagsai-sdlcrefinementimplementationdraftreviewapprovedvalidated--quick-flowflow_mode: quick--full-flowflow_mode: fullstatusvalidationtrace_idsrelated_artifactsdecision-log.mdstate.toonspecs-refiniment/_ai_sdlc/specs-index.toonspecs/_ai_sdlc/specs-index.toonspecs-refiniment/specs-index.mdspecs/specs-index.mdpython3 skills/_shared/ai_sdlc_specs_index.py --workspace <refinement|implementation> --quick-flow|--full-flow--quick-flowspecs-index.toon--full-flowspecs-index.toonspecs-index.md--full-flowpython3 skills/_shared/refinement_status.py --feature <feature-name> --gate full --format toonnext_skill--full-flowrelease-slicing.mddonepython3 skills/_shared/refinement_status.py --feature <feature-name> --gate full --format markdown18/18scripts/case_matrix.py--quick-flow--full-flowreferences/test-case-template.md--format toon --budget-tokens 24000--emit-templatenext_readsSource Coverage--max-artifact-tokens 24000scripts/case_matrix.py--format toonanchorsnext_readspython3 skills/ai-sdlc-test-cases/scripts/case_matrix.py --feature <feature-name> --quick-flow <input.md>...python3 skills/ai-sdlc-test-cases/scripts/case_matrix.py --feature <feature-name> --full-flow <input.md>...--section "<section>"--section--finalize--decision-row--emit-template--emit-decision-log-entry--write--quick-flow--full-flowspecs-refiniment/<feature-name>/<file.md>references/test-case-template.mdIn scopeOut of scopeOut of scopeTC-001TC-002Manual — automate by YYYY-MM-DD — blocker: concrete blockerDecisions requiredExecution orderspecs-refiniment/<feature-name>/<file.md>Scope:
- In scope:
- Behavior, contract, endpoint, workflow, or artifact covered.
- Out of scope:
- Behavior, contract, endpoint, workflow, or artifact deliberately excluded.
Scenario matrix:
| ID | Requirement ref | Scenario | Setup | Trigger | Verifiable outcome | Layer | Automation |
| --- | --- | --- | --- | --- | --- | --- | --- |
| TC-001 | AC-001, story ID, workflow, risk, or artifact section | Scenario name | Fixture/state | Action | Command, checklist, or before/after pair | unit/service/transport/integration/QA/manual | script path + invocation, CI step, or manual blocker |
Automation plan:
- TC-001: exact command or CI step, target file if new, expected pass condition.
Execution order:
1. Layer: run condition; blocks: later layer or release gate; failure action: stop, fix, rerun, or escalate.
Decisions required:
- Question: decision needed.
Options:
A. Option A
B. Option B
C. Option C
Recommended default: option and reason.
Owner: role or person.
Blocking: yes | no.Manual — automate by YYYY-MM-DD — blocker: reasonManual reviewTODOScenario matrix:
| ID | Requirement ref | Scenario | Setup | Trigger | Verifiable outcome | Layer | Automation |
| --- | --- | --- | --- | --- | --- | --- | --- |
| TC-003 | AC-003 | Reject unsupported provider asset | BitGo wallet fixture contains BTC only | Submit a USDC transfer request | `GOCACHE=/tmp/ai-sdlc-go-cache go test ./internal/service -run TestRejectUnsupportedProviderAsset -count=1` exits 0 and asserts no transfer row is created | service | `skills/ai-sdlc-validation/scripts/validation_plan.py internal/service/transfer_service.go`; implement `TestRejectUnsupportedProviderAsset` |
Execution order:
1. Service tests: run after scenario matrix is approved; blocks transport tests; failure action: fix service validation and rerun focused service test.
Decisions required:
- Question: Should unsupported provider assets return 400 validation error or 409 conflict?
Options:
A. 400 validation error
B. 409 conflict
C. Provider-specific 502
Recommended default: A, because the request is invalid before provider submission.
Owner: Delivery Manager
Blocking: yes| TC-003 | | Test bad inputs | Existing tests | Run tests | Service rejects bad data | service | Manual review |Manual reviewManual — automate by YYYY-MM-DD — blocker: reasonTODOTBDmanual reviewneeds confirmation$ai-sdlc-qa$ai-sdlc-validation$ai-sdlc-sddtasks.md