.claude/skills/workflow/submit-for-review/SKILL.md
Pre-submission validation for stories before code review. Verifies all child tasks complete, tests pass, build succeeds. Required before setting review_stage to code-review.
npx skillsauth add brdohman/agile-maestro submit-for-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Before setting review_stage: "code-review" on a Story. This gate ensures all work is complete, tested, and verified before entering the review cycle.
Schema Version: 2.0
ALL items must be checked before submission. No exceptions.
status: completedlocal_checks verified (v2.0 field name)completion_signal metVerification:
TaskList → filter where parent = [story-id]
All tasks must show status: completed
Each task's local_checks should be verified in completion comment
Test Documentation Comment Format:
{
"id": "T1",
"timestamp": "2026-01-30T10:00:00Z",
"author": "macos-developer-agent",
"type": "testing",
"content": "Tests added: [TestClassName]. Test methods: testX, testY, testZ. Coverage: [files covered]. All tests passing. Local checks verified: [list from task.local_checks]."
}
xcodebuild build passes with zero errorsswiftlint returns no errorsacceptance_criteria from the Story has corresponding implementationNote: Stories use acceptance_criteria (Given/When/Then/Verify format). Tasks use local_checks (simple string array). Do not confuse these fields.
Run these commands and verify ALL pass before submission:
# 1. Build verification
xcodebuild build -scheme [AppName] -destination 'platform=macOS'
# 2. Lint verification
swiftlint
# 3. Test verification
xcodebuild test -scheme [AppName] -destination 'platform=macOS'
Expected Results:
** BUILD SUCCEEDED **** TEST SUCCEEDED ** with all tests passingWhen setting review_stage: "code-review" and review_result: "awaiting" on a Story, include a structured submission comment:
{
"id": "SUB1",
"timestamp": "2026-01-30T12:00:00Z",
"author": "macos-developer-agent",
"type": "submission",
"content": "READY FOR CODE REVIEW. Summary: [brief description of work completed]. Tasks completed: T1 (Create ViewModel): completed, T2 (Create View): completed, T3 (Add tests): completed. Files modified: [list key files]. Tests added: [list test classes]. Test results: X tests, all passing. Build: SUCCESS. Lint: PASS (0 errors). Coverage: [percentage if available]. All task local_checks verified. All story acceptance_criteria addressed."
}
local_checks are verifiedacceptance_criteria are addressed1. TaskList to get all child Tasks
|
2. Verify ALL Tasks are status: completed
|
3. Verify ALL Tasks have completion + test comments
|
4. Verify ALL task local_checks documented as verified
|
5. Run: xcodebuild build
|
6. Run: swiftlint
|
7. Run: xcodebuild test
|
8. Verify repo-level quality gates pass (see CLAUDE.md#quality-gates)
|
9. ALL PASS?
|
YES → Add submission comment + set review_stage:"code-review", review_result:"awaiting"
NO → Fix issues, do NOT submit
Note: Definition of Done is now a repo-level quality gate, not a per-task field. Refer to CLAUDE.md#quality-gates or CI configuration for quality requirements.
DO NOT SUBMIT. Instead:
Partial submissions are never acceptable. A Story with incomplete Tasks, failing tests, or build errors will be immediately rejected in code review, wasting reviewer time.
| Anti-Pattern | Why It's Wrong | Do Instead | |--------------|----------------|------------| | Submit before all Tasks complete | Incomplete work cannot be reviewed | Wait for all Tasks to reach completed status | | Submit without test documentation | Reviewer cannot verify test coverage | Add test documentation comment to each Task | | Submit with failing tests | Broken code wastes reviewer time | Fix all tests before submission | | Submit without build verification | May not compile for reviewer | Always run full build before submission | | Submit with lint errors | Code quality issues will be rejected | Run swiftlint and fix all errors | | Skip the submission comment | Reviewer lacks context | Always include full submission comment | | Submit with "will fix later" items | Technical debt accumulates | Fix everything before submission | | Submit one Task at a time | Fragments the review | Wait for complete Story |
When a Story has review_stage: "code-review" and review_result: "awaiting", the Staff Engineer expects:
local_checks documented as passingacceptance_criteria addressedIf ANY of these are missing, the Story will be immediately rejected with review_result: "rejected" (stage stays "code-review"), and the developer must fix and resubmit through the full cycle again.
| Old Field Name (v1.0) | New Field Name (v2.0) | Notes |
|-----------------------|-----------------------|-------|
| acceptance_criteria | local_checks | Simple string array for tasks |
| subtasks | checklist | Granular steps within task |
| verify | validation_hint | Quick verification summary |
| definition_of_done | REMOVED | Now repo-level quality gate |
| Field | Purpose |
|-------|---------|
| completion_signal | When is this task done? |
| validation_hint | Quick verification summary |
| ai_execution_hints | Hints for AI agents (recommended) |
| Concept | Story Field | Task Field |
|---------|-------------|------------|
| Success criteria | acceptance_criteria (Given/When/Then/Verify) | local_checks (simple strings) |
| Completion checklist | definition_of_done.completion_gates | checklist |
| How to verify | acceptance_criteria[].verify | validation_hint |
Before setting review_stage: "code-review":
[ ] All Tasks completed?
[ ] All Tasks have completion comments?
[ ] All Tasks have test documentation comments?
[ ] All task local_checks verified?
[ ] All task completion_signals met?
[ ] xcodebuild build passes?
[ ] swiftlint passes?
[ ] xcodebuild test passes?
[ ] Repo-level quality gates pass?
[ ] Story acceptance_criteria addressed?
[ ] Submission comment written?
All checked? Proceed with submission. Any unchecked? Stop and fix first.
Definition of Done is no longer a per-task field in v2.0. Quality gates are enforced at the repo level:
CLAUDE.md#quality-gates or CI configurationTasks have local_checks (what must be true for this task) while quality gates apply to all submissions.
testing
XCTest patterns for macOS Swift apps. Unit tests, async tests, Core Data tests, mock patterns, and assertion reference. Use when writing or reviewing tests.
tools
How to transition workflow state between review stages. Rules for setting review_stage and review_result fields on Stories and Epics.
documentation
Comment structure and rules for task workflow updates. Use when adding any comment to a task during implementation, review, or fix cycles.
testing
Validate task/story/epic/bug/techdebt metadata against schema v2.0. Run after TaskCreate or TaskUpdate to verify compliance. Returns pass/fail with actionable details.