wogiflow 1.4.5 → 1.4.7
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.
- package/.claude/commands/wogi-decide.md +193 -0
- package/.claude/commands/wogi-help.md +7 -0
- package/.claude/commands/wogi-learn.md +242 -0
- package/.claude/commands/wogi-retrospective.md +241 -0
- package/.claude/commands/wogi-review.md +487 -148
- package/.claude/commands/wogi-start.md +27 -0
- package/.workflow/templates/claude-md.hbs +3 -0
- package/.workflow/templates/partials/user-commands.hbs +40 -0
- package/package.json +1 -1
- package/scripts/package.json +3 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
Interactive rule creation with clarifying questions. Invoke when user says "from now on...", "let's make it a rule", "always do X", "never do Y", or "standardize on...".
|
|
2
|
+
|
|
3
|
+
## Usage
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
/wogi-decide "from now on, always use error boundaries in React components"
|
|
7
|
+
/wogi-decide "the convention should be kebab-case for all config files"
|
|
8
|
+
/wogi-decide # Interactive mode — asks what rule to create
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Trigger Phrases
|
|
12
|
+
|
|
13
|
+
Auto-routed from `/wogi-start` when user says:
|
|
14
|
+
- "from now on..."
|
|
15
|
+
- "let's make it a rule..."
|
|
16
|
+
- "always do X" / "never do Y"
|
|
17
|
+
- "the convention should be..."
|
|
18
|
+
- "we should standardize on..."
|
|
19
|
+
- "update our rules to..."
|
|
20
|
+
- "add a rule for..."
|
|
21
|
+
|
|
22
|
+
## How It Works
|
|
23
|
+
|
|
24
|
+
### Step 1: Parse the Rule Intent
|
|
25
|
+
|
|
26
|
+
Extract from the user's input:
|
|
27
|
+
- **What**: The rule statement (what to do or not do)
|
|
28
|
+
- **Scope hint**: Any mentioned scope (all files? specific types? specific feature?)
|
|
29
|
+
- **Strength**: Mandatory ("always", "never", "must") vs advisory ("prefer", "try to", "when possible")
|
|
30
|
+
|
|
31
|
+
### Step 2: Check for Duplicate Rules
|
|
32
|
+
|
|
33
|
+
**BEFORE asking clarifying questions**, check for existing similar rules:
|
|
34
|
+
|
|
35
|
+
1. Read `.workflow/state/decisions.md`
|
|
36
|
+
2. Search for keywords from the proposed rule
|
|
37
|
+
3. If a similar rule exists (same topic, same intent):
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
A similar rule already exists:
|
|
41
|
+
|
|
42
|
+
> [Existing rule statement from decisions.md]
|
|
43
|
+
(Added: [date], Section: [section])
|
|
44
|
+
|
|
45
|
+
Options:
|
|
46
|
+
1. Update the existing rule (modify scope, wording, or exceptions)
|
|
47
|
+
2. Create a new separate rule (if genuinely different)
|
|
48
|
+
3. Cancel (rule already covered)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Use `AskUserQuestion` to present these options.
|
|
52
|
+
|
|
53
|
+
### Step 3: Assess Clarity
|
|
54
|
+
|
|
55
|
+
Evaluate if the rule needs clarification. **Skip questions if the rule is already clear and specific.**
|
|
56
|
+
|
|
57
|
+
A rule is clear when it has:
|
|
58
|
+
- Specific action (what to do)
|
|
59
|
+
- Obvious scope (when it applies)
|
|
60
|
+
- No ambiguity in interpretation
|
|
61
|
+
|
|
62
|
+
**Examples of clear rules (skip to Step 4):**
|
|
63
|
+
- "Catch blocks must use `err` not `e`" — Clear action, obvious scope
|
|
64
|
+
- "All file names must be kebab-case" — Clear action, universal scope
|
|
65
|
+
- "Never commit .env files" — Clear prohibition, obvious scope
|
|
66
|
+
|
|
67
|
+
**Examples of ambiguous rules (ask questions):**
|
|
68
|
+
- "Always use error boundaries" — Which components? All? Only pages?
|
|
69
|
+
- "We should validate inputs" — Which inputs? Client-side? Server-side? Both?
|
|
70
|
+
- "Use TypeScript strict mode" — New files only? Existing files too?
|
|
71
|
+
|
|
72
|
+
### Step 4: Ask Clarifying Questions (if needed)
|
|
73
|
+
|
|
74
|
+
Only ask questions that are genuinely needed. Use `AskUserQuestion` with up to 4 questions:
|
|
75
|
+
|
|
76
|
+
**Possible questions (ask only what's ambiguous):**
|
|
77
|
+
|
|
78
|
+
1. **Scope**: "When does this apply?"
|
|
79
|
+
- All files / specific file types / specific feature areas / new code only
|
|
80
|
+
2. **Exceptions**: "Are there cases where this should NOT apply?"
|
|
81
|
+
- Yes (describe) / No exceptions / Not sure yet
|
|
82
|
+
3. **Verification**: "How should we check compliance?"
|
|
83
|
+
- Code review / Lint rule / Manual check / Automated test
|
|
84
|
+
4. **Rationale** (only if not obvious): "Why is this important?"
|
|
85
|
+
- Helps future developers understand the rule
|
|
86
|
+
|
|
87
|
+
**Do NOT ask all 4 questions every time.** For most rules, 0-2 questions suffice.
|
|
88
|
+
|
|
89
|
+
### Step 5: Write the Rule to decisions.md
|
|
90
|
+
|
|
91
|
+
**Input sanitization**: Before writing, enforce these guards on user-supplied rule text:
|
|
92
|
+
- Maximum 500 characters for the rule statement
|
|
93
|
+
- Strip markdown structural characters (`---`, `##`, HTML comments `<!-- -->`) from user-supplied text
|
|
94
|
+
- Escape any markdown headings within the rule body (prefix with `\`)
|
|
95
|
+
- This prevents accidental or malicious structural alteration of decisions.md
|
|
96
|
+
|
|
97
|
+
Read `.workflow/state/decisions.md` and add the rule to the appropriate section.
|
|
98
|
+
|
|
99
|
+
**Section mapping:**
|
|
100
|
+
- Code style / naming → "Coding Standards"
|
|
101
|
+
- Component / UI patterns → "Component Architecture"
|
|
102
|
+
- Security practices → "Coding Standards > Security Patterns"
|
|
103
|
+
- Architecture / design → "Architecture Decisions"
|
|
104
|
+
- File / folder organization → "File/Folder Structure"
|
|
105
|
+
- Process / workflow → "Operational Procedures"
|
|
106
|
+
- Review / cleanup → "Review & Cleanup Procedures"
|
|
107
|
+
|
|
108
|
+
**Rule format:**
|
|
109
|
+
|
|
110
|
+
```markdown
|
|
111
|
+
### [Rule Title] (YYYY-MM-DD)
|
|
112
|
+
**Source**: user-decision
|
|
113
|
+
**Scope**: [when this applies]
|
|
114
|
+
> [Clear, actionable rule statement]
|
|
115
|
+
|
|
116
|
+
**Rationale**: [why this rule exists]
|
|
117
|
+
**Exceptions**: [when this does NOT apply, or "None"]
|
|
118
|
+
**Verification**: [how to check compliance]
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Step 6: Check for Existing Code Violations (Optional)
|
|
122
|
+
|
|
123
|
+
After writing the rule, optionally scan for existing violations:
|
|
124
|
+
|
|
125
|
+
1. Use Grep to search for patterns that violate the new rule
|
|
126
|
+
2. If violations found (N > 0):
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
Found N existing violations of this new rule.
|
|
130
|
+
|
|
131
|
+
Options:
|
|
132
|
+
1. Create a fix task for existing violations
|
|
133
|
+
2. Apply rule to new code only (grandfather existing)
|
|
134
|
+
3. Fix them right now (if small count)
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Use `AskUserQuestion` to present options.
|
|
138
|
+
|
|
139
|
+
If user chooses option 1:
|
|
140
|
+
- **Require explicit user confirmation** before writing to ready.json (display violation count and file list first)
|
|
141
|
+
- Cap display at 50 violations — if more exist, warn user about scope
|
|
142
|
+
- Create a task in `ready.json` backlog: "Fix N violations of [rule name]"
|
|
143
|
+
|
|
144
|
+
### Step 7: Update Request Log
|
|
145
|
+
|
|
146
|
+
Add entry to `.workflow/state/request-log.md`:
|
|
147
|
+
|
|
148
|
+
```markdown
|
|
149
|
+
### R-[NNN] | [YYYY-MM-DD HH:MM]
|
|
150
|
+
**Type**: new
|
|
151
|
+
**Tags**: #rule #decisions
|
|
152
|
+
**Request**: "Create rule: [rule title]"
|
|
153
|
+
**Result**: Added rule to decisions.md ([section])
|
|
154
|
+
**Files**: `.workflow/state/decisions.md`[, `.workflow/state/ready.json` if fix task created]
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Step 8: Confirm
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
Rule created: "[Rule Title]"
|
|
161
|
+
Section: [section in decisions.md]
|
|
162
|
+
Scope: [scope]
|
|
163
|
+
|
|
164
|
+
This rule will be enforced in future code reviews and task execution.
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Options
|
|
168
|
+
|
|
169
|
+
- `--quick` — Skip clarifying questions, write rule directly from input
|
|
170
|
+
- `--from-pattern` — Create rule from a pattern in feedback-patterns.md (used by /wogi-learn)
|
|
171
|
+
|
|
172
|
+
## Configuration
|
|
173
|
+
|
|
174
|
+
In `config.json`:
|
|
175
|
+
```json
|
|
176
|
+
{
|
|
177
|
+
"decide": {
|
|
178
|
+
"requireRationale": true,
|
|
179
|
+
"scanForViolations": true,
|
|
180
|
+
"maxClarifyingQuestions": 4
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## Files
|
|
186
|
+
|
|
187
|
+
| Action | File |
|
|
188
|
+
|--------|------|
|
|
189
|
+
| Read (duplicate check) | `.workflow/state/decisions.md` |
|
|
190
|
+
| Write (new rule) | `.workflow/state/decisions.md` |
|
|
191
|
+
| Read (violation scan) | Codebase files via Grep |
|
|
192
|
+
| Write (log) | `.workflow/state/request-log.md` |
|
|
193
|
+
| Write (fix task) | `.workflow/state/ready.json` (if violations found) |
|
|
@@ -57,6 +57,13 @@ DEBUGGING
|
|
|
57
57
|
/wogi-debug-hypothesis [desc] Parallel hypothesis investigation
|
|
58
58
|
/wogi-trace [feature] Code flow trace for a feature
|
|
59
59
|
|
|
60
|
+
═══════════════════════════════════════════════════════════════
|
|
61
|
+
LEARNING & RULES
|
|
62
|
+
═══════════════════════════════════════════════════════════════
|
|
63
|
+
/wogi-decide [rule] Create project rule with clarifying questions
|
|
64
|
+
/wogi-learn Promote feedback patterns to decision rules
|
|
65
|
+
/wogi-retrospective Guided session reflection with lesson capture
|
|
66
|
+
|
|
60
67
|
═══════════════════════════════════════════════════════════════
|
|
61
68
|
SEARCH & CONTEXT
|
|
62
69
|
═══════════════════════════════════════════════════════════════
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
Interactive pattern promotion from feedback to decisions. Invoke when user says "let's learn from this", "we keep making this mistake", "promote this pattern", or "what have we learned?".
|
|
2
|
+
|
|
3
|
+
## Usage
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
/wogi-learn # Show all patterns, select to promote
|
|
7
|
+
/wogi-learn --all # Bulk promote all qualifying patterns (count >= 3)
|
|
8
|
+
/wogi-learn "learn from what just happened" # Learn from recent incident
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Trigger Phrases
|
|
12
|
+
|
|
13
|
+
Auto-routed from `/wogi-start` when user says:
|
|
14
|
+
- "let's learn from this"
|
|
15
|
+
- "we keep making this mistake"
|
|
16
|
+
- "promote this pattern"
|
|
17
|
+
- "what have we learned?"
|
|
18
|
+
- "extract lessons"
|
|
19
|
+
- "capture this learning"
|
|
20
|
+
|
|
21
|
+
## How It Works
|
|
22
|
+
|
|
23
|
+
### Step 1: Load Pattern Data
|
|
24
|
+
|
|
25
|
+
Read these files:
|
|
26
|
+
1. `.workflow/state/feedback-patterns.md` — Accumulated patterns with counts
|
|
27
|
+
2. `.workflow/state/decisions.md` — Existing rules (to check for duplicates)
|
|
28
|
+
3. `.workflow/corrections/*.md` — Recent correction reports with lessons (sorted by mtime; if directory doesn't exist or is empty, skip)
|
|
29
|
+
|
|
30
|
+
### Step 2: Choose Mode
|
|
31
|
+
|
|
32
|
+
**Mode A: Browse patterns** (default — no argument)
|
|
33
|
+
**Mode B: Learn from incident** (argument provided, e.g., "learn from what just happened")
|
|
34
|
+
**Mode C: Bulk promotion** (`--all` flag)
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
### Mode A: Browse Patterns
|
|
39
|
+
|
|
40
|
+
1. Parse `feedback-patterns.md` for all patterns in the "Pending Patterns" and "Patterns Log" sections
|
|
41
|
+
2. Sort by occurrence count (highest first)
|
|
42
|
+
3. Display:
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
Accumulated Patterns (N total):
|
|
46
|
+
|
|
47
|
+
Ready to Promote (count >= 3):
|
|
48
|
+
1. [try-catch-file-reads] (4 occurrences) — File reads need try-catch
|
|
49
|
+
2. [review-similar-code] (4 occurrences) — Check similar code when fixing bugs
|
|
50
|
+
|
|
51
|
+
Approaching Threshold (count 2):
|
|
52
|
+
3. [use-safeJsonParse] (2 occurrences) — Use safeJsonParse instead of JSON.parse
|
|
53
|
+
4. [extract-duplicate-logic] (2 occurrences) — Extract shared logic
|
|
54
|
+
|
|
55
|
+
Monitoring (count 1):
|
|
56
|
+
5. [validate-shell-params] (1 occurrence) — Validate shell parameters
|
|
57
|
+
... (N more)
|
|
58
|
+
|
|
59
|
+
Which pattern would you like to promote? (Enter number, or "skip")
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Use `AskUserQuestion` to let user select.
|
|
63
|
+
|
|
64
|
+
4. When user selects a pattern, go to **Step 3: Promote Pattern**.
|
|
65
|
+
|
|
66
|
+
### Mode B: Learn from Incident
|
|
67
|
+
|
|
68
|
+
1. Read `.workflow/state/request-log.md` — last 5 entries
|
|
69
|
+
2. Read recent files in `.workflow/corrections/*.md` (last 3 by modification time; if directory doesn't exist or is empty, analyze request-log only and note: "No correction reports found — analyzing request-log entries.")
|
|
70
|
+
3. Analyze what went wrong:
|
|
71
|
+
- What was the task?
|
|
72
|
+
- What failure occurred?
|
|
73
|
+
- What was the root cause?
|
|
74
|
+
- What should have been done differently?
|
|
75
|
+
|
|
76
|
+
4. Propose a rule:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
Based on recent work, here's what I found:
|
|
80
|
+
|
|
81
|
+
Incident: [description from request-log/corrections]
|
|
82
|
+
Root Cause: [analysis]
|
|
83
|
+
Proposed Rule: "[rule statement]"
|
|
84
|
+
|
|
85
|
+
Should I create this as a project rule?
|
|
86
|
+
1. Yes, create the rule (routes to /wogi-decide flow)
|
|
87
|
+
2. Add to feedback-patterns for monitoring first
|
|
88
|
+
3. Skip — not a recurring issue
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Use `AskUserQuestion` to present options.
|
|
92
|
+
|
|
93
|
+
If option 1: Invoke `/wogi-decide --from-pattern` with the proposed rule (uses streamlined path). If user cancels within the /wogi-decide sub-flow, return to wogi-learn and display "Rule creation cancelled. Pattern not promoted."
|
|
94
|
+
If option 2: Add to `feedback-patterns.md` Pending Patterns section with count 1.
|
|
95
|
+
|
|
96
|
+
### Mode C: Bulk Promotion
|
|
97
|
+
|
|
98
|
+
1. Parse `feedback-patterns.md` for patterns with count >= 3
|
|
99
|
+
2. For each qualifying pattern, display:
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
Bulk Promotion: N patterns qualify (count >= 3)
|
|
103
|
+
|
|
104
|
+
1. [try-catch-file-reads] (4x) — Promote? [Y/n]
|
|
105
|
+
→ Proposed rule: "Always wrap fs.readFileSync in try-catch"
|
|
106
|
+
|
|
107
|
+
2. [review-similar-code] (4x) — Promote? [Y/n]
|
|
108
|
+
→ Proposed rule: "When fixing a bug, search for similar patterns elsewhere"
|
|
109
|
+
|
|
110
|
+
Approve all? Or review individually?
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Use `AskUserQuestion`:
|
|
114
|
+
- "Approve all" — Promote all qualifying patterns
|
|
115
|
+
- "Review individually" — Go through each one
|
|
116
|
+
|
|
117
|
+
For each approved pattern, run **Step 3: Promote Pattern**.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
### Step 3: Promote a Pattern
|
|
122
|
+
|
|
123
|
+
Given a pattern to promote:
|
|
124
|
+
|
|
125
|
+
1. **Extract rule from pattern:**
|
|
126
|
+
- Pattern description → Rule statement
|
|
127
|
+
- Pattern count → Evidence for rationale
|
|
128
|
+
- Correction examples → Verification criteria
|
|
129
|
+
|
|
130
|
+
2. **Delegate duplicate checking to `/wogi-decide --from-pattern`** which handles duplicate detection and the full rule-writing flow. This ensures a single source of truth for all rule-creation logic.
|
|
131
|
+
|
|
132
|
+
3. **Ask user for any additions:**
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
Promoting pattern: [pattern-name]
|
|
136
|
+
|
|
137
|
+
Proposed rule:
|
|
138
|
+
> [Rule statement derived from pattern]
|
|
139
|
+
|
|
140
|
+
Rationale: Occurred [N] times. [Brief description of why this matters]
|
|
141
|
+
Scope: [Inferred scope from pattern data]
|
|
142
|
+
|
|
143
|
+
Anything to add or change?
|
|
144
|
+
- Additional scope or exceptions?
|
|
145
|
+
- Specific verification steps?
|
|
146
|
+
|
|
147
|
+
(Press enter to accept as-is, or type modifications)
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
4. **Write to decisions.md:**
|
|
151
|
+
Use the same format as `/wogi-decide`:
|
|
152
|
+
|
|
153
|
+
```markdown
|
|
154
|
+
### [Rule Title] (YYYY-MM-DD)
|
|
155
|
+
**Source**: promoted-pattern ([N] occurrences in feedback-patterns.md)
|
|
156
|
+
**Scope**: [scope]
|
|
157
|
+
> [Rule statement]
|
|
158
|
+
|
|
159
|
+
**Rationale**: Pattern occurred [N] times. [description]
|
|
160
|
+
**Exceptions**: [exceptions or "None"]
|
|
161
|
+
**Verification**: [how to check]
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
5. **Mark as promoted in feedback-patterns.md:**
|
|
165
|
+
Update the pattern's row:
|
|
166
|
+
- Set "Promoted To" column to `decisions.md`
|
|
167
|
+
- Set "Status" column to `PROMOTED`
|
|
168
|
+
- Or move to "Promotion History" section
|
|
169
|
+
|
|
170
|
+
### Step 4: Update Request Log
|
|
171
|
+
|
|
172
|
+
```markdown
|
|
173
|
+
### R-[NNN] | [YYYY-MM-DD HH:MM]
|
|
174
|
+
**Type**: change
|
|
175
|
+
**Tags**: #learning #decisions #pattern-promotion
|
|
176
|
+
**Request**: "Promote pattern: [pattern-name]"
|
|
177
|
+
**Result**: Pattern promoted to decisions.md ([section]). [N] patterns reviewed.
|
|
178
|
+
**Files**: `.workflow/state/decisions.md`, `.workflow/state/feedback-patterns.md`
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Step 5: Summary
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
Learning Summary:
|
|
185
|
+
- Patterns reviewed: N
|
|
186
|
+
- Patterns promoted: M
|
|
187
|
+
- New rules added to decisions.md: M
|
|
188
|
+
|
|
189
|
+
These rules will be enforced in future code reviews and task execution.
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Edge Cases
|
|
193
|
+
|
|
194
|
+
### No patterns to promote
|
|
195
|
+
```
|
|
196
|
+
No patterns to promote.
|
|
197
|
+
|
|
198
|
+
Patterns are recorded during:
|
|
199
|
+
- Code reviews (/wogi-review)
|
|
200
|
+
- Corrections (/wogi-correction)
|
|
201
|
+
- Standards compliance checks
|
|
202
|
+
|
|
203
|
+
As patterns accumulate (count >= 3), they become eligible for promotion.
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### All patterns already promoted
|
|
207
|
+
```
|
|
208
|
+
All qualifying patterns have already been promoted to decisions.md.
|
|
209
|
+
|
|
210
|
+
Monitoring [N] patterns with count < 3. They'll become eligible as occurrences increase.
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## Options
|
|
214
|
+
|
|
215
|
+
- `--all` — Bulk promote all patterns with count >= threshold
|
|
216
|
+
- `--threshold N` — Override promotion threshold (default: 3, minimum: 2). Values below 2 are rejected to prevent noise promotion.
|
|
217
|
+
- `--quick` — Skip individual confirmation prompts, but still display count and require final confirmation: "About to promote N patterns — confirm? [Y/n]"
|
|
218
|
+
|
|
219
|
+
## Configuration
|
|
220
|
+
|
|
221
|
+
In `config.json`:
|
|
222
|
+
```json
|
|
223
|
+
{
|
|
224
|
+
"learning": {
|
|
225
|
+
"promotionThreshold": 3,
|
|
226
|
+
"autoPromoteEnabled": false,
|
|
227
|
+
"requireUserConfirmation": true
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## Files
|
|
233
|
+
|
|
234
|
+
| Action | File |
|
|
235
|
+
|--------|------|
|
|
236
|
+
| Read | `.workflow/state/feedback-patterns.md` |
|
|
237
|
+
| Read | `.workflow/state/decisions.md` |
|
|
238
|
+
| Read | `.workflow/corrections/*.md` |
|
|
239
|
+
| Read | `.workflow/state/request-log.md` (for incident mode) |
|
|
240
|
+
| Write | `.workflow/state/decisions.md` (new rules) |
|
|
241
|
+
| Write | `.workflow/state/feedback-patterns.md` (mark promoted) |
|
|
242
|
+
| Write | `.workflow/state/request-log.md` (log entry) |
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
Guided session retrospective that extracts lessons from recent work. Invoke when user says "let's do a retro", "what went well", "what can we improve", or "lessons learned".
|
|
2
|
+
|
|
3
|
+
## Usage
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
/wogi-retrospective # Full retrospective
|
|
7
|
+
/wogi-retrospective --quick # Quick summary + one question
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
## Trigger Phrases
|
|
11
|
+
|
|
12
|
+
Auto-routed from `/wogi-start` when user says:
|
|
13
|
+
- "let's do a retro"
|
|
14
|
+
- "what went well"
|
|
15
|
+
- "what can we improve"
|
|
16
|
+
- "session retrospective"
|
|
17
|
+
- "lessons learned"
|
|
18
|
+
|
|
19
|
+
## How It Works
|
|
20
|
+
|
|
21
|
+
### Step 0: Check for Session History
|
|
22
|
+
|
|
23
|
+
Read `.workflow/state/request-log.md` and check for recent entries (since last session end or last retro).
|
|
24
|
+
|
|
25
|
+
**If no recent work:**
|
|
26
|
+
```
|
|
27
|
+
No recent work to reflect on.
|
|
28
|
+
|
|
29
|
+
Start working with `/wogi-start` first, then run a retro
|
|
30
|
+
after completing some tasks.
|
|
31
|
+
```
|
|
32
|
+
Stop here.
|
|
33
|
+
|
|
34
|
+
### Step 1: Gather Session Data
|
|
35
|
+
|
|
36
|
+
Read these files to build a session picture:
|
|
37
|
+
|
|
38
|
+
1. **`.workflow/state/request-log.md`** — Recent entries (since last session end marker or last 10 entries)
|
|
39
|
+
- Extract: task IDs, types, results, files changed
|
|
40
|
+
2. **`.workflow/state/last-review.json`** — Last review findings (if exists)
|
|
41
|
+
- Extract: finding count, severities, categories
|
|
42
|
+
3. **`.workflow/corrections/`** — Recent correction reports
|
|
43
|
+
- Extract: patterns, root causes, lessons
|
|
44
|
+
4. **`.workflow/state/feedback-patterns.md`** — Recurring patterns
|
|
45
|
+
- Extract: high-count patterns, recently added patterns
|
|
46
|
+
5. **`.workflow/state/ready.json`** — Task completion data
|
|
47
|
+
- Extract: recently completed tasks, in-progress tasks
|
|
48
|
+
|
|
49
|
+
### Step 2: Present Session Summary
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
Session Retrospective
|
|
53
|
+
=====================
|
|
54
|
+
|
|
55
|
+
Completed Work:
|
|
56
|
+
- [N] tasks completed
|
|
57
|
+
- [List task titles from request-log/ready.json recentlyCompleted]
|
|
58
|
+
|
|
59
|
+
Issues Found:
|
|
60
|
+
- [N] review findings ([X] critical, [Y] high, [Z] medium)
|
|
61
|
+
- [N] corrections recorded
|
|
62
|
+
- [List significant issues]
|
|
63
|
+
|
|
64
|
+
Emerging Patterns:
|
|
65
|
+
- [Pattern name] ([N] occurrences) — [description]
|
|
66
|
+
- [Pattern name] ([N] occurrences) — [description]
|
|
67
|
+
|
|
68
|
+
Workflow Health:
|
|
69
|
+
- Bypass attempts: [N] (from session context)
|
|
70
|
+
- Tasks completed via workflow: [N]
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Step 3: Guided Reflection Questions
|
|
74
|
+
|
|
75
|
+
Use `AskUserQuestion` to ask reflection questions. Ask 2-3 questions max based on what's relevant:
|
|
76
|
+
|
|
77
|
+
**Always ask:**
|
|
78
|
+
1. "What went well this session that we should keep doing?"
|
|
79
|
+
- Options: specific things user can select, plus "Other" for free text
|
|
80
|
+
|
|
81
|
+
**Ask if issues were found:**
|
|
82
|
+
2. "What was frustrating or could be improved?"
|
|
83
|
+
- Options: based on actual issues found in the data
|
|
84
|
+
|
|
85
|
+
**Ask if patterns are emerging:**
|
|
86
|
+
3. "Any conventions or rules that should be established from this session?"
|
|
87
|
+
- Options: based on patterns near promotion threshold
|
|
88
|
+
|
|
89
|
+
**Ask if rule violations occurred:**
|
|
90
|
+
4. "Did any existing rules get violated that need strengthening?"
|
|
91
|
+
- Options: based on review findings matching decisions.md rules
|
|
92
|
+
|
|
93
|
+
**Maximum 3 questions per retro. Priority order when all conditions apply:**
|
|
94
|
+
1. Q1 (always — "what went well")
|
|
95
|
+
2. Q4 (violations — most actionable)
|
|
96
|
+
3. Q3 (patterns — near promotion)
|
|
97
|
+
4. Q2 (frustrations — least actionable)
|
|
98
|
+
|
|
99
|
+
**Pick top 3 by this priority order.**
|
|
100
|
+
|
|
101
|
+
### Step 4: Process Responses and Capture Lessons
|
|
102
|
+
|
|
103
|
+
For each user response, classify and route:
|
|
104
|
+
|
|
105
|
+
| Response Type | Action |
|
|
106
|
+
|---------------|--------|
|
|
107
|
+
| New rule/convention | Route to `/wogi-decide` flow |
|
|
108
|
+
| Pattern to promote | Route to `/wogi-learn` flow |
|
|
109
|
+
| Process improvement | Add to `feedback-patterns.md` |
|
|
110
|
+
| Positive feedback | Acknowledge and note in retro summary |
|
|
111
|
+
| Specific fix needed | Create task in `ready.json` backlog |
|
|
112
|
+
|
|
113
|
+
### Step 5: Save Retro Summary
|
|
114
|
+
|
|
115
|
+
Create `.workflow/reviews/retro-YYYY-MM-DD-HHMMSS.md` (include time to avoid same-day collisions):
|
|
116
|
+
|
|
117
|
+
```markdown
|
|
118
|
+
# Session Retrospective — YYYY-MM-DD
|
|
119
|
+
|
|
120
|
+
## Session Summary
|
|
121
|
+
- Tasks completed: N
|
|
122
|
+
- Issues found: N (X critical, Y high)
|
|
123
|
+
- Corrections: N
|
|
124
|
+
- Bypass attempts: N
|
|
125
|
+
|
|
126
|
+
## Completed Work
|
|
127
|
+
- [task-id]: [title] — [result]
|
|
128
|
+
- [task-id]: [title] — [result]
|
|
129
|
+
|
|
130
|
+
## Issues & Patterns
|
|
131
|
+
- [issue/pattern summary]
|
|
132
|
+
|
|
133
|
+
## Reflection
|
|
134
|
+
### What went well
|
|
135
|
+
[User's response]
|
|
136
|
+
|
|
137
|
+
### What could improve
|
|
138
|
+
[User's response]
|
|
139
|
+
|
|
140
|
+
### Actions Taken
|
|
141
|
+
- [Action 1]: [what was done — rule created / pattern promoted / task created]
|
|
142
|
+
- [Action 2]: [what was done]
|
|
143
|
+
|
|
144
|
+
## Metrics
|
|
145
|
+
- Review findings resolved: N/M
|
|
146
|
+
- Patterns promoted: N
|
|
147
|
+
- New rules created: N
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Step 6: Update Request Log
|
|
151
|
+
|
|
152
|
+
```markdown
|
|
153
|
+
### R-[NNN] | [YYYY-MM-DD HH:MM]
|
|
154
|
+
**Type**: new
|
|
155
|
+
**Tags**: #retro #learning
|
|
156
|
+
**Request**: "Session retrospective"
|
|
157
|
+
**Result**: Retro completed. [N] lessons captured. [M] actions taken.
|
|
158
|
+
**Files**: `.workflow/reviews/retro-YYYY-MM-DD-HHMMSS.md`
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Step 7: Closing
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
Retrospective Complete
|
|
165
|
+
|
|
166
|
+
Summary saved to: .workflow/reviews/retro-YYYY-MM-DD-HHMMSS.md
|
|
167
|
+
|
|
168
|
+
Actions taken:
|
|
169
|
+
- [N] new rules created (via /wogi-decide)
|
|
170
|
+
- [N] patterns promoted (via /wogi-learn)
|
|
171
|
+
- [N] improvement items captured
|
|
172
|
+
- [N] tasks created for fixes
|
|
173
|
+
|
|
174
|
+
Next session will benefit from these learnings.
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Quick Retrospective (`--quick`)
|
|
180
|
+
|
|
181
|
+
When invoked with `--quick`:
|
|
182
|
+
|
|
183
|
+
1. Read the same data sources (Step 1)
|
|
184
|
+
2. Display abbreviated summary:
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
Quick Retro
|
|
188
|
+
===========
|
|
189
|
+
Completed: [N] tasks
|
|
190
|
+
Issues: [N] findings
|
|
191
|
+
Bypasses: [N]
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
3. Ask one question:
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
Anything to capture before we move on?
|
|
198
|
+
1. No, all good
|
|
199
|
+
2. Yes, I want to add a rule
|
|
200
|
+
3. Yes, I want to note a pattern
|
|
201
|
+
4. Yes, I have feedback
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
4. Route response and save minimal retro file
|
|
205
|
+
5. Done
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Options
|
|
210
|
+
|
|
211
|
+
- `--quick` — Abbreviated flow: summary + one question
|
|
212
|
+
- `--since YYYY-MM-DD` — Retro for work since specific date. **Validate**: must match `/^\d{4}-\d{2}-\d{2}$/`. Reject any other format.
|
|
213
|
+
- `--no-save` — Don't save retro file (just display)
|
|
214
|
+
|
|
215
|
+
## Configuration
|
|
216
|
+
|
|
217
|
+
In `config.json`:
|
|
218
|
+
```json
|
|
219
|
+
{
|
|
220
|
+
"retrospective": {
|
|
221
|
+
"maxQuestions": 3,
|
|
222
|
+
"autoSuggestRules": true,
|
|
223
|
+
"saveReviewFile": true,
|
|
224
|
+
"quickModeDefault": false
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
## Files
|
|
230
|
+
|
|
231
|
+
| Action | File |
|
|
232
|
+
|--------|------|
|
|
233
|
+
| Read | `.workflow/state/request-log.md` |
|
|
234
|
+
| Read | `.workflow/state/last-review.json` |
|
|
235
|
+
| Read | `.workflow/corrections/*.md` |
|
|
236
|
+
| Read | `.workflow/state/feedback-patterns.md` |
|
|
237
|
+
| Read | `.workflow/state/ready.json` |
|
|
238
|
+
| Write | `.workflow/reviews/retro-YYYY-MM-DD-HHMMSS.md` |
|
|
239
|
+
| Write | `.workflow/state/request-log.md` |
|
|
240
|
+
| May invoke | `/wogi-decide` (for new rules) |
|
|
241
|
+
| May invoke | `/wogi-learn` (for pattern promotions) |
|