chore: initial monorepo scaffold + WDS Phase 1+2 artifacts
- Nx 22.7 monorepo (pnpm 11.1, TypeScript 5.9, Node 24) - apps/api: NestJS 11 (CJS conforme CODING-RULES.md PGD-DB-004) - apps/web: React 19 + Vite 8 (ESM) - libs/shared/api-interface: Zod contract base - Docker Compose dev: Postgres 18, Valkey 8, MinIO, Mailpit - WDS artifacts: - design-artifacts/A-Product-Brief/ (5 docs canônicos + 16 dialogs) - design-artifacts/B-Trigger-Map/ (hub + 4 personas + feature impact) - Stack canon: STACK.md v2.2 + CODING-RULES.md v2.0 + brand.md - AGENTS.md + README.md como entrada para devs/agentes Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
132
.agents/skills/bmad-story-automator/steps-c/step-04-wrapup.md
Normal file
132
.agents/skills/bmad-story-automator/steps-c/step-04-wrapup.md
Normal file
@@ -0,0 +1,132 @@
|
||||
---
|
||||
name: 'step-04-wrapup'
|
||||
description: 'Finalize: summary, learnings, recommendations (terminal step)'
|
||||
learningsFile: '{output_folder}/story-automator/learnings.md'
|
||||
templates: '../data/wrapup-templates.md'
|
||||
stateFilePattern: '{output_folder}/story-automator/orchestration-*.md'
|
||||
outputFile: '{output_folder}/story-automator/orchestration-{epic_id}-{timestamp}.md'
|
||||
stateHelper: '../scripts/story-automator'
|
||||
stateMetrics: '../scripts/story-automator'
|
||||
reportRetentionPolicy: '../data/report-retention-policy.md'
|
||||
---
|
||||
|
||||
# Step 4: Wrap-up
|
||||
|
||||
**Goal:** Generate summary, capture learnings, finalize state.
|
||||
**Interaction mode:** Structured wrap-up with recommendation output.
|
||||
|
||||
---
|
||||
|
||||
## Do
|
||||
|
||||
### 1. Load Final State
|
||||
From state document (located via `{stateFilePattern}`; resolved path stored as `{outputFile}` for this run), extract:
|
||||
- Story progress table
|
||||
- Action log
|
||||
- Session references
|
||||
|
||||
Calculate:
|
||||
- Stories completed vs total
|
||||
- Code review cycles
|
||||
- Escalations encountered
|
||||
|
||||
Use the existing state document path from execution, and derive `story_range_csv` from frontmatter `storyRange`.
|
||||
|
||||
Deterministic metrics:
|
||||
```bash
|
||||
metrics=$("{stateMetrics}" state-metrics --state "{state_document_path}")
|
||||
```
|
||||
|
||||
Parallel optimization (metrics + retention policy extraction):
|
||||
```bash
|
||||
tmp_metrics=$(mktemp)
|
||||
tmp_retention=$(mktemp)
|
||||
|
||||
("{stateMetrics}" state-metrics --state "{state_document_path}" > "$tmp_metrics") &
|
||||
metrics_pid=$!
|
||||
|
||||
(awk '/^```bash/{flag=1;next}/^```/{flag=0}flag{print}' "{reportRetentionPolicy}" > "$tmp_retention") &
|
||||
retention_pid=$!
|
||||
|
||||
wait "$metrics_pid"
|
||||
wait "$retention_pid"
|
||||
|
||||
metrics=$(cat "$tmp_metrics")
|
||||
retention_cmds=$(cat "$tmp_retention")
|
||||
rm -f "$tmp_metrics" "$tmp_retention"
|
||||
```
|
||||
|
||||
**Optimization (data ops):** If action log exceeds 200 lines, use compact summary by default.
|
||||
```bash
|
||||
log_block=$(awk '/^## Action Log/{flag=1;next}/^## /{if(flag){exit}}flag{print}' "{state_document_path}")
|
||||
log_lines=$(printf "%s\n" "$log_block" | wc -l | tr -d ' ')
|
||||
if [ "$log_lines" -gt 200 ]; then
|
||||
log_focus=$(printf "%s\n" "$log_block" | tail -n 50)
|
||||
else
|
||||
log_focus="$log_block"
|
||||
fi
|
||||
```
|
||||
|
||||
### 2. Generate Summary
|
||||
From `{templates}`, use **Summary Report Template**.
|
||||
|
||||
Fill in all stats and display to user.
|
||||
|
||||
### 3. Capture Learnings
|
||||
Analyze run for patterns:
|
||||
- Common code review issues
|
||||
- Steps needing escalation
|
||||
- Timing patterns
|
||||
- What worked well
|
||||
|
||||
**IF `{learningsFile}` exists:** Load and merge
|
||||
**ELSE:** Create new
|
||||
|
||||
Append entry using **Learnings Entry Template** from `{templates}`.
|
||||
|
||||
### 4. Recommendations
|
||||
From `{templates}`, use **Recommendations Template**.
|
||||
|
||||
Present actionable suggestions based on patterns observed.
|
||||
|
||||
### 4b. Validation Report Housekeeping
|
||||
Load `{reportRetentionPolicy}` and apply its retention guidance when needed.
|
||||
|
||||
If validation report history is large, run the suggested maintenance command from that policy file.
|
||||
|
||||
### 5. Finalize State
|
||||
Update state document:
|
||||
- `status = 'COMPLETE'`
|
||||
- `completedAt = {timestamp}`
|
||||
- Append final summary to action log
|
||||
|
||||
Display: "**State document finalized.**"
|
||||
|
||||
### 6. Remove Marker File
|
||||
Remove the active runtime marker:
|
||||
```bash
|
||||
"{stateHelper}" orchestrator-helper marker remove
|
||||
```
|
||||
|
||||
This allows the Stop hook to stop normally after workflow completion by clearing the marker from the active runtime layout.
|
||||
|
||||
### 7. Workflow Complete
|
||||
|
||||
Display:
|
||||
```
|
||||
**🎉 Story Automator workflow complete!**
|
||||
|
||||
All stories have been processed through the build cycle.
|
||||
Retrospectives were triggered automatically when each epic completed (during execution loop).
|
||||
|
||||
State document: {outputFile}
|
||||
Learnings: {learningsFile}
|
||||
```
|
||||
|
||||
Persist final state to `{outputFile}`.
|
||||
|
||||
---
|
||||
|
||||
## End
|
||||
|
||||
**Workflow terminates here.** Retrospectives are now handled within the execution loop (step-03b) when each epic completes, not as a separate terminal step.
|
||||
Reference in New Issue
Block a user