chati-dev 2.0.9 → 2.1.2
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/README.md +167 -176
- package/assets/logo - co/314/201pia.png +0 -0
- package/assets/logo - co/314/201pia.svg" +42 -0
- package/bin/chati.js +3 -3
- package/framework/agents/{planning → discover}/brief.md +24 -2
- package/framework/agents/{planning → discover}/brownfield-wu.md +1 -1
- package/framework/agents/{planning → discover}/greenfield-wu.md +1 -1
- package/framework/agents/{planning → plan}/architect.md +1 -1
- package/framework/agents/{planning → plan}/detail.md +1 -1
- package/framework/agents/{planning → plan}/phases.md +1 -1
- package/framework/agents/{planning → plan}/tasks.md +1 -1
- package/framework/agents/{planning → plan}/ux.md +1 -1
- package/framework/agents/quality/qa-implementation.md +53 -4
- package/framework/agents/quality/qa-planning.md +53 -2
- package/framework/config.yaml +3 -3
- package/framework/constitution.md +4 -4
- package/framework/context/quality.md +1 -1
- package/framework/context/root.md +5 -4
- package/framework/data/entity-registry.yaml +35 -11
- package/framework/domains/agents/brief.yaml +14 -0
- package/framework/domains/agents/qa-implementation.yaml +16 -0
- package/framework/domains/agents/qa-planning.yaml +16 -0
- package/framework/domains/constitution.yaml +6 -2
- package/framework/domains/workflows/brownfield-discovery.yaml +5 -4
- package/framework/domains/workflows/quick-flow.yaml +23 -0
- package/framework/hooks/mode-governance.js +14 -2
- package/framework/hooks/model-governance.js +5 -1
- package/framework/hooks/prism-engine.js +1 -1
- package/framework/hooks/session-digest.js +6 -2
- package/framework/hooks/settings.json +11 -0
- package/framework/i18n/en.yaml +3 -3
- package/framework/i18n/es.yaml +3 -3
- package/framework/i18n/fr.yaml +3 -3
- package/framework/i18n/pt.yaml +3 -3
- package/framework/intelligence/context-engine.md +2 -2
- package/framework/intelligence/decision-engine.md +2 -2
- package/framework/manifest.json +5 -0
- package/framework/manifest.sig +1 -0
- package/framework/orchestrator/chati.md +68 -20
- package/framework/patterns/elicitation-library.yaml +592 -0
- package/framework/patterns/elicitation.md +2 -0
- package/framework/quality-gates/planning-gate.md +1 -1
- package/framework/schemas/session.schema.json +36 -3
- package/framework/tasks/architect-api-design.md +1 -1
- package/framework/tasks/architect-consolidate.md +1 -1
- package/framework/tasks/architect-db-design.md +1 -1
- package/framework/tasks/architect-design.md +1 -1
- package/framework/tasks/architect-security-review.md +1 -1
- package/framework/tasks/architect-stack-selection.md +1 -1
- package/framework/tasks/brief-consolidate.md +1 -1
- package/framework/tasks/brief-constraint-identify.md +1 -1
- package/framework/tasks/brief-extract-requirements.md +1 -1
- package/framework/tasks/brief-stakeholder-map.md +1 -1
- package/framework/tasks/brief-validate-completeness.md +1 -1
- package/framework/tasks/brownfield-wu-architecture-map.md +1 -1
- package/framework/tasks/brownfield-wu-deep-discovery.md +1 -1
- package/framework/tasks/brownfield-wu-dependency-scan.md +1 -1
- package/framework/tasks/brownfield-wu-migration-plan.md +1 -1
- package/framework/tasks/brownfield-wu-report.md +1 -1
- package/framework/tasks/brownfield-wu-risk-assess.md +1 -1
- package/framework/tasks/detail-acceptance-criteria.md +1 -1
- package/framework/tasks/detail-consolidate.md +1 -1
- package/framework/tasks/detail-edge-case-analysis.md +1 -1
- package/framework/tasks/detail-expand-prd.md +1 -1
- package/framework/tasks/detail-nfr-extraction.md +1 -1
- package/framework/tasks/greenfield-wu-analyze-empty.md +1 -1
- package/framework/tasks/greenfield-wu-report.md +1 -1
- package/framework/tasks/greenfield-wu-scaffold-detection.md +1 -1
- package/framework/tasks/greenfield-wu-tech-stack-assess.md +1 -1
- package/framework/tasks/orchestrator-deviation.md +2 -2
- package/framework/tasks/orchestrator-escalate.md +1 -1
- package/framework/tasks/orchestrator-handoff.md +3 -3
- package/framework/tasks/orchestrator-mode-switch.md +16 -5
- package/framework/tasks/orchestrator-preview.md +181 -0
- package/framework/tasks/orchestrator-resume.md +2 -2
- package/framework/tasks/orchestrator-route.md +5 -4
- package/framework/tasks/orchestrator-status.md +4 -4
- package/framework/tasks/orchestrator-suggest-mode.md +7 -7
- package/framework/tasks/phases-breakdown.md +1 -1
- package/framework/tasks/phases-dependency-mapping.md +1 -1
- package/framework/tasks/phases-mvp-scoping.md +1 -1
- package/framework/tasks/qa-impl-consolidate.md +2 -2
- package/framework/tasks/qa-impl-verdict.md +2 -2
- package/framework/tasks/qa-planning-consolidate.md +1 -1
- package/framework/tasks/qa-planning-coverage-plan.md +2 -2
- package/framework/tasks/qa-planning-gate-define.md +1 -1
- package/framework/tasks/qa-planning-risk-matrix.md +1 -1
- package/framework/tasks/qa-planning-test-strategy.md +1 -1
- package/framework/tasks/tasks-acceptance-write.md +1 -1
- package/framework/tasks/tasks-consolidate.md +1 -1
- package/framework/tasks/tasks-decompose.md +1 -1
- package/framework/tasks/tasks-estimate.md +1 -1
- package/framework/tasks/ux-a11y-check.md +1 -1
- package/framework/tasks/ux-component-map.md +1 -1
- package/framework/tasks/ux-consolidate.md +1 -1
- package/framework/tasks/ux-user-flow.md +1 -1
- package/framework/tasks/ux-wireframe.md +1 -1
- package/framework/templates/quick-brief-tmpl.yaml +90 -0
- package/framework/workflows/brownfield-discovery.yaml +7 -7
- package/framework/workflows/brownfield-fullstack.yaml +24 -10
- package/framework/workflows/brownfield-service.yaml +41 -5
- package/framework/workflows/brownfield-ui.yaml +41 -5
- package/framework/workflows/greenfield-fullstack.yaml +24 -10
- package/framework/workflows/quick-flow.yaml +125 -0
- package/package.json +2 -2
- package/scripts/bundle-framework.js +1 -1
- package/scripts/populate-entity-registry.js +1 -1
- package/scripts/semantic-lint.js +2 -2
- package/scripts/validate-agents.js +2 -1
- package/scripts/validate-package.js +1 -1
- package/scripts/validate-tasks.js +1 -1
- package/src/autonomy/progress-reporter.js +26 -19
- package/src/context/engine.js +1 -1
- package/src/context/layers/l1-global.js +17 -5
- package/src/dashboard/layout.js +2 -1
- package/src/gates/g1-planning-complete.js +10 -10
- package/src/installer/core.js +14 -12
- package/src/installer/templates.js +1 -1
- package/src/installer/validator.js +8 -8
- package/src/intelligence/registry-manager.js +4 -4
- package/src/memory/session-digest.js +1 -1
- package/src/orchestrator/agent-selector.js +11 -11
- package/src/orchestrator/intent-classifier.js +12 -8
- package/src/orchestrator/pipeline-manager.js +100 -3
- package/src/orchestrator/pipeline-state.js +1 -1
- package/src/orchestrator/session-manager.js +13 -4
- package/src/preview/detector.js +238 -0
- package/src/preview/index.js +20 -0
- package/src/preview/launcher.js +235 -0
- package/src/preview/log-buffer.js +103 -0
- package/src/tasks/executor.js +1 -1
- package/src/tasks/loader.js +1 -1
- package/src/terminal/prompt-builder.js +10 -10
- package/src/wizard/i18n.js +3 -3
|
@@ -0,0 +1,592 @@
|
|
|
1
|
+
# Elicitation Library — Structured Methods Catalog
|
|
2
|
+
# 24 methods organized by category, each with triggers, steps, and agent mapping.
|
|
3
|
+
# Referenced by Brief agent and all DISCOVER/PLAN agents via PRISM L2.
|
|
4
|
+
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
description: >
|
|
7
|
+
Comprehensive catalog of elicitation methods for extracting, validating,
|
|
8
|
+
and refining requirements. Each method includes when to use it, step-by-step
|
|
9
|
+
execution, and which agents benefit most from it.
|
|
10
|
+
|
|
11
|
+
categories:
|
|
12
|
+
divergent:
|
|
13
|
+
description: "Methods that expand thinking and generate new ideas"
|
|
14
|
+
methods:
|
|
15
|
+
- id: brain-dump
|
|
16
|
+
name: Brain Dump
|
|
17
|
+
purpose: "Get unfiltered, raw ideas out of the user's head"
|
|
18
|
+
when:
|
|
19
|
+
- "First contact with user (Brief Phase 1)"
|
|
20
|
+
- "User has a vague idea but hasn't structured it"
|
|
21
|
+
- "Starting a greenfield project"
|
|
22
|
+
steps:
|
|
23
|
+
- "Ask: 'Tell me everything about what you want to build. Don't filter, just talk.'"
|
|
24
|
+
- "Listen without interrupting for at least 2 minutes"
|
|
25
|
+
- "Ask: 'What else?' at least once"
|
|
26
|
+
- "Capture verbatim — do not restructure yet"
|
|
27
|
+
- "Note emotional cues (frustration, excitement, uncertainty)"
|
|
28
|
+
anti_patterns:
|
|
29
|
+
- "Interrupting the user's flow"
|
|
30
|
+
- "Asking structured questions too early"
|
|
31
|
+
- "Filtering or categorizing during capture"
|
|
32
|
+
agents: [brief, greenfield-wu]
|
|
33
|
+
duration: "5-15 min"
|
|
34
|
+
user_level: all
|
|
35
|
+
|
|
36
|
+
- id: scamper
|
|
37
|
+
name: SCAMPER
|
|
38
|
+
purpose: "Generate alternatives by systematically transforming existing ideas"
|
|
39
|
+
when:
|
|
40
|
+
- "User is stuck on a single approach"
|
|
41
|
+
- "Exploring feature variations"
|
|
42
|
+
- "Brownfield: reimagining existing features"
|
|
43
|
+
steps:
|
|
44
|
+
- "Substitute: What can be replaced? (tech, process, user flow)"
|
|
45
|
+
- "Combine: What can be merged? (features, screens, APIs)"
|
|
46
|
+
- "Adapt: What can be borrowed from similar products?"
|
|
47
|
+
- "Modify: What can be enlarged, shrunk, or changed?"
|
|
48
|
+
- "Put to other use: Can this serve a different audience?"
|
|
49
|
+
- "Eliminate: What can be removed without losing value?"
|
|
50
|
+
- "Reverse: What if the flow went backward?"
|
|
51
|
+
anti_patterns:
|
|
52
|
+
- "Applying all 7 to every feature (only use relevant ones)"
|
|
53
|
+
- "Using with vibecoders without explaining the framework"
|
|
54
|
+
agents: [brief, detail, architect]
|
|
55
|
+
duration: "10-20 min"
|
|
56
|
+
user_level: intermediate
|
|
57
|
+
|
|
58
|
+
- id: six-thinking-hats
|
|
59
|
+
name: Six Thinking Hats
|
|
60
|
+
purpose: "Explore a problem from 6 different perspectives"
|
|
61
|
+
when:
|
|
62
|
+
- "Complex decision with many stakeholders"
|
|
63
|
+
- "Team disagreement on approach"
|
|
64
|
+
- "Evaluating controversial features"
|
|
65
|
+
steps:
|
|
66
|
+
- "White Hat (Facts): What do we know? What data do we have?"
|
|
67
|
+
- "Red Hat (Feelings): What's your gut feeling about this?"
|
|
68
|
+
- "Black Hat (Caution): What could go wrong? What are the risks?"
|
|
69
|
+
- "Yellow Hat (Benefits): What are the advantages? Best case?"
|
|
70
|
+
- "Green Hat (Creativity): What alternatives exist? Any wild ideas?"
|
|
71
|
+
- "Blue Hat (Process): What's our conclusion? What do we decide?"
|
|
72
|
+
anti_patterns:
|
|
73
|
+
- "Skipping the Red Hat (emotions matter in product decisions)"
|
|
74
|
+
- "Spending too long on Black Hat (negativity spiral)"
|
|
75
|
+
agents: [brief, detail, architect]
|
|
76
|
+
duration: "15-30 min"
|
|
77
|
+
user_level: all
|
|
78
|
+
|
|
79
|
+
- id: what-if
|
|
80
|
+
name: What-If Scenarios
|
|
81
|
+
purpose: "Explore edge cases and future states through hypotheticals"
|
|
82
|
+
when:
|
|
83
|
+
- "Defining non-functional requirements"
|
|
84
|
+
- "Stress-testing architecture decisions"
|
|
85
|
+
- "Exploring scalability concerns"
|
|
86
|
+
steps:
|
|
87
|
+
- "Ask: 'What if you had 10x users tomorrow?'"
|
|
88
|
+
- "Ask: 'What if your main database went down?'"
|
|
89
|
+
- "Ask: 'What if a competitor launched this feature first?'"
|
|
90
|
+
- "Ask: 'What if your team doubled/halved in size?'"
|
|
91
|
+
- "Capture implications for each scenario"
|
|
92
|
+
- "Identify which scenarios need architectural mitigation"
|
|
93
|
+
anti_patterns:
|
|
94
|
+
- "Asking unrealistic scenarios (100,000x users for a hobby project)"
|
|
95
|
+
- "Using this for simple CRUD features"
|
|
96
|
+
agents: [architect, detail, phases]
|
|
97
|
+
duration: "10-15 min"
|
|
98
|
+
user_level: all
|
|
99
|
+
|
|
100
|
+
convergent:
|
|
101
|
+
description: "Methods that narrow options and reach decisions"
|
|
102
|
+
methods:
|
|
103
|
+
- id: five-whys
|
|
104
|
+
name: 5 Whys
|
|
105
|
+
purpose: "Drill to root cause by asking 'why' repeatedly"
|
|
106
|
+
when:
|
|
107
|
+
- "User states a problem but the real issue is deeper"
|
|
108
|
+
- "Debugging requirement contradictions"
|
|
109
|
+
- "Understanding motivation behind a feature request"
|
|
110
|
+
steps:
|
|
111
|
+
- "User states the problem"
|
|
112
|
+
- "Ask: 'Why is that a problem?' (Why 1)"
|
|
113
|
+
- "Take the answer, ask 'Why?' again (Why 2)"
|
|
114
|
+
- "Repeat until you reach the root cause (usually 3-5 levels)"
|
|
115
|
+
- "Validate: 'So the real problem is {root cause}?'"
|
|
116
|
+
anti_patterns:
|
|
117
|
+
- "Being mechanical — adapt the phrasing of 'why'"
|
|
118
|
+
- "Going beyond 5 levels (diminishing returns)"
|
|
119
|
+
- "Making the user feel interrogated"
|
|
120
|
+
agents: [brief, detail]
|
|
121
|
+
duration: "5-10 min"
|
|
122
|
+
user_level: all
|
|
123
|
+
|
|
124
|
+
- id: moscow
|
|
125
|
+
name: MoSCoW Prioritization
|
|
126
|
+
purpose: "Categorize requirements by priority (Must/Should/Could/Won't)"
|
|
127
|
+
when:
|
|
128
|
+
- "Too many requirements for MVP"
|
|
129
|
+
- "Need to cut scope"
|
|
130
|
+
- "Defining phases/milestones"
|
|
131
|
+
steps:
|
|
132
|
+
- "List all identified requirements"
|
|
133
|
+
- "For each, ask: 'Is this Must Have, Should Have, Could Have, or Won't Have (this version)?'"
|
|
134
|
+
- "Validate Must Haves: 'If we remove this, does the product still work?'"
|
|
135
|
+
- "Ensure Won't Have items are explicitly documented (negative scope)"
|
|
136
|
+
- "Present final categorization for user approval"
|
|
137
|
+
anti_patterns:
|
|
138
|
+
- "Making everything Must Have"
|
|
139
|
+
- "Skipping Won't Have (essential for scope control)"
|
|
140
|
+
- "Not challenging the user when Must Have list is > 60% of total"
|
|
141
|
+
agents: [brief, detail, phases]
|
|
142
|
+
duration: "10-20 min"
|
|
143
|
+
user_level: all
|
|
144
|
+
|
|
145
|
+
- id: decision-matrix
|
|
146
|
+
name: Weighted Decision Matrix
|
|
147
|
+
purpose: "Objectively compare options using weighted criteria"
|
|
148
|
+
when:
|
|
149
|
+
- "Choosing between tech stacks"
|
|
150
|
+
- "Selecting architecture patterns"
|
|
151
|
+
- "Evaluating third-party services"
|
|
152
|
+
steps:
|
|
153
|
+
- "List the options to evaluate"
|
|
154
|
+
- "Define evaluation criteria (performance, cost, maintainability, etc.)"
|
|
155
|
+
- "Assign weight to each criterion (total = 100%)"
|
|
156
|
+
- "Score each option per criterion (1-5)"
|
|
157
|
+
- "Calculate weighted totals"
|
|
158
|
+
- "Present matrix with recommendation"
|
|
159
|
+
anti_patterns:
|
|
160
|
+
- "Using equal weights for everything"
|
|
161
|
+
- "Not involving the user in weight definition"
|
|
162
|
+
- "Having more than 7 criteria (cognitive overload)"
|
|
163
|
+
agents: [architect, detail, ux]
|
|
164
|
+
duration: "10-15 min"
|
|
165
|
+
user_level: intermediate
|
|
166
|
+
|
|
167
|
+
- id: dot-voting
|
|
168
|
+
name: Dot Voting
|
|
169
|
+
purpose: "Quick prioritization when many options exist"
|
|
170
|
+
when:
|
|
171
|
+
- "Multiple feature ideas to prioritize"
|
|
172
|
+
- "Choosing between design alternatives"
|
|
173
|
+
- "User overwhelmed by options"
|
|
174
|
+
steps:
|
|
175
|
+
- "Present all options as a numbered list"
|
|
176
|
+
- "Give user 3-5 'votes' to distribute"
|
|
177
|
+
- "User assigns votes (can give multiple to one option)"
|
|
178
|
+
- "Rank by vote count"
|
|
179
|
+
- "Discuss top 3 to confirm"
|
|
180
|
+
anti_patterns:
|
|
181
|
+
- "More than 10 options (split into categories first)"
|
|
182
|
+
- "Not discussing results (votes are input, not final decision)"
|
|
183
|
+
agents: [brief, ux, phases]
|
|
184
|
+
duration: "5 min"
|
|
185
|
+
user_level: all
|
|
186
|
+
|
|
187
|
+
analytical:
|
|
188
|
+
description: "Methods for structured analysis and gap identification"
|
|
189
|
+
methods:
|
|
190
|
+
- id: stakeholder-map
|
|
191
|
+
name: Stakeholder Mapping
|
|
192
|
+
purpose: "Identify all people/systems affected by the project"
|
|
193
|
+
when:
|
|
194
|
+
- "Enterprise projects with multiple user types"
|
|
195
|
+
- "Projects with external integrations"
|
|
196
|
+
- "When user says 'it's for everyone' (red flag)"
|
|
197
|
+
steps:
|
|
198
|
+
- "List all direct users (who interacts with the system?)"
|
|
199
|
+
- "List indirect stakeholders (who is affected by the system?)"
|
|
200
|
+
- "For each: define role, needs, pain points, access level"
|
|
201
|
+
- "Map relationships between stakeholders"
|
|
202
|
+
- "Identify conflicting needs between stakeholder groups"
|
|
203
|
+
- "Prioritize stakeholders by impact/influence"
|
|
204
|
+
anti_patterns:
|
|
205
|
+
- "Treating 'admin' and 'user' as the only two roles"
|
|
206
|
+
- "Forgetting the system itself as a stakeholder (monitoring, ops)"
|
|
207
|
+
agents: [brief, detail, ux]
|
|
208
|
+
duration: "10-20 min"
|
|
209
|
+
user_level: all
|
|
210
|
+
|
|
211
|
+
- id: gap-analysis
|
|
212
|
+
name: Gap Analysis
|
|
213
|
+
purpose: "Identify the delta between current state and desired state"
|
|
214
|
+
when:
|
|
215
|
+
- "Brownfield projects"
|
|
216
|
+
- "User knows what they want but not what's missing"
|
|
217
|
+
- "Migration or upgrade projects"
|
|
218
|
+
steps:
|
|
219
|
+
- "Document current state (what exists today)"
|
|
220
|
+
- "Document desired state (what should exist)"
|
|
221
|
+
- "Identify gaps (what's missing)"
|
|
222
|
+
- "Categorize gaps: feature gaps, quality gaps, process gaps"
|
|
223
|
+
- "Prioritize gaps by business impact"
|
|
224
|
+
- "Map gaps to requirements"
|
|
225
|
+
anti_patterns:
|
|
226
|
+
- "Only looking at feature gaps (quality and process matter too)"
|
|
227
|
+
- "Skipping current state documentation"
|
|
228
|
+
agents: [brownfield-wu, brief, detail]
|
|
229
|
+
duration: "15-30 min"
|
|
230
|
+
user_level: intermediate
|
|
231
|
+
|
|
232
|
+
- id: constraint-mapping
|
|
233
|
+
name: Constraint Mapping
|
|
234
|
+
purpose: "Systematically identify all project constraints"
|
|
235
|
+
when:
|
|
236
|
+
- "Early project phases (Brief, Detail)"
|
|
237
|
+
- "Before architecture decisions"
|
|
238
|
+
- "When user says 'no constraints' (always dig deeper)"
|
|
239
|
+
steps:
|
|
240
|
+
- "Technical constraints: existing stack, platform, browser support"
|
|
241
|
+
- "Business constraints: budget, timeline, team size, compliance"
|
|
242
|
+
- "User constraints: accessibility, offline support, device types"
|
|
243
|
+
- "Operational constraints: hosting, deployment, monitoring"
|
|
244
|
+
- "Legal constraints: GDPR, HIPAA, data residency"
|
|
245
|
+
- "Classify each as HARD (non-negotiable) or SOFT (preference)"
|
|
246
|
+
- "Flag constraint conflicts"
|
|
247
|
+
anti_patterns:
|
|
248
|
+
- "Accepting 'no constraints' at face value"
|
|
249
|
+
- "Not distinguishing hard vs soft constraints"
|
|
250
|
+
agents: [brief, architect, detail]
|
|
251
|
+
duration: "10-15 min"
|
|
252
|
+
user_level: all
|
|
253
|
+
|
|
254
|
+
- id: impact-effort-matrix
|
|
255
|
+
name: Impact/Effort Matrix
|
|
256
|
+
purpose: "Visualize features by value vs implementation cost"
|
|
257
|
+
when:
|
|
258
|
+
- "Prioritizing features for MVP"
|
|
259
|
+
- "Deciding phase boundaries"
|
|
260
|
+
- "Too many 'Must Have' requirements"
|
|
261
|
+
steps:
|
|
262
|
+
- "List all features/requirements"
|
|
263
|
+
- "For each, estimate: Impact (1-5) and Effort (1-5)"
|
|
264
|
+
- "Plot on 2x2 matrix: Quick Wins (high impact, low effort), Big Bets (high/high), Fill-Ins (low/low), Time Sinks (low impact, high effort)"
|
|
265
|
+
- "MVP = Quick Wins + selected Big Bets"
|
|
266
|
+
- "Time Sinks = Won't Have (or defer to later phase)"
|
|
267
|
+
anti_patterns:
|
|
268
|
+
- "Debating exact scores (relative comparison is what matters)"
|
|
269
|
+
- "Not involving the user in impact scoring"
|
|
270
|
+
agents: [phases, tasks, detail]
|
|
271
|
+
duration: "10-15 min"
|
|
272
|
+
user_level: intermediate
|
|
273
|
+
|
|
274
|
+
- id: pre-mortem
|
|
275
|
+
name: Pre-Mortem Analysis
|
|
276
|
+
purpose: "Imagine the project failed and work backward to identify risks"
|
|
277
|
+
when:
|
|
278
|
+
- "Before finalizing architecture"
|
|
279
|
+
- "Before BUILD phase"
|
|
280
|
+
- "High-stakes or enterprise projects"
|
|
281
|
+
steps:
|
|
282
|
+
- "Imagine: 'It's 6 months from now, the project failed. What happened?'"
|
|
283
|
+
- "List all possible failure modes (technical, business, team, market)"
|
|
284
|
+
- "For each: estimate likelihood (1-5) and impact (1-5)"
|
|
285
|
+
- "Identify mitigation for high-risk items"
|
|
286
|
+
- "Feed mitigations back into requirements/architecture as constraints"
|
|
287
|
+
anti_patterns:
|
|
288
|
+
- "Being too optimistic (the point is to think about failure)"
|
|
289
|
+
- "Listing only technical risks (business and team risks matter)"
|
|
290
|
+
agents: [qa-planning, architect, detail]
|
|
291
|
+
duration: "10-20 min"
|
|
292
|
+
user_level: all
|
|
293
|
+
|
|
294
|
+
creative:
|
|
295
|
+
description: "Methods for innovative thinking and user empathy"
|
|
296
|
+
methods:
|
|
297
|
+
- id: persona-building
|
|
298
|
+
name: Persona Building
|
|
299
|
+
purpose: "Create detailed user personas for design decisions"
|
|
300
|
+
when:
|
|
301
|
+
- "Multiple user types identified"
|
|
302
|
+
- "UX decisions need user context"
|
|
303
|
+
- "Brief Phase 2 (Structured Analysis)"
|
|
304
|
+
steps:
|
|
305
|
+
- "For each user type from stakeholder map:"
|
|
306
|
+
- "Name, age range, role, technical proficiency"
|
|
307
|
+
- "Goals: What do they want to achieve?"
|
|
308
|
+
- "Frustrations: What annoys them about current solutions?"
|
|
309
|
+
- "Typical day: When/where/how do they use the product?"
|
|
310
|
+
- "Key scenario: Write one user story for this persona"
|
|
311
|
+
- "Prioritize personas by frequency of use"
|
|
312
|
+
anti_patterns:
|
|
313
|
+
- "Creating too many personas (3-5 is ideal)"
|
|
314
|
+
- "Making personas too generic ('tech-savvy millennial')"
|
|
315
|
+
- "Skipping frustrations (this drives design decisions)"
|
|
316
|
+
agents: [brief, ux, detail]
|
|
317
|
+
duration: "10-15 min per persona"
|
|
318
|
+
user_level: all
|
|
319
|
+
|
|
320
|
+
- id: user-journey-map
|
|
321
|
+
name: User Journey Mapping
|
|
322
|
+
purpose: "Map the end-to-end experience for each user type"
|
|
323
|
+
when:
|
|
324
|
+
- "Designing user flows"
|
|
325
|
+
- "Identifying pain points in existing products"
|
|
326
|
+
- "Before UX specification"
|
|
327
|
+
steps:
|
|
328
|
+
- "Select persona"
|
|
329
|
+
- "Map stages: Awareness -> Onboarding -> Core Usage -> Advanced -> Retention"
|
|
330
|
+
- "For each stage: Actions, Thoughts, Emotions, Pain Points, Opportunities"
|
|
331
|
+
- "Identify 'moments of truth' (critical success points)"
|
|
332
|
+
- "Flag drop-off risks (where users might leave)"
|
|
333
|
+
- "Feed opportunities into requirements"
|
|
334
|
+
anti_patterns:
|
|
335
|
+
- "Making the happy path only (map the frustrated path too)"
|
|
336
|
+
- "Forgetting error states and edge cases"
|
|
337
|
+
agents: [ux, brief, detail]
|
|
338
|
+
duration: "15-20 min"
|
|
339
|
+
user_level: intermediate
|
|
340
|
+
|
|
341
|
+
- id: crazy-eights
|
|
342
|
+
name: Crazy Eights
|
|
343
|
+
purpose: "Generate 8 different solutions in 8 minutes"
|
|
344
|
+
when:
|
|
345
|
+
- "Design exploration needed"
|
|
346
|
+
- "User stuck on a single approach"
|
|
347
|
+
- "Need creative alternatives quickly"
|
|
348
|
+
steps:
|
|
349
|
+
- "Define the problem to solve in one sentence"
|
|
350
|
+
- "Set timer: 1 minute per idea, 8 ideas total"
|
|
351
|
+
- "Describe each idea in 2-3 sentences (no detail needed)"
|
|
352
|
+
- "Evaluate: Which ideas are most promising?"
|
|
353
|
+
- "Combine: Can any be merged?"
|
|
354
|
+
- "Select top 2-3 for further development"
|
|
355
|
+
anti_patterns:
|
|
356
|
+
- "Judging ideas during generation (separate generation from evaluation)"
|
|
357
|
+
- "Spending too long on any single idea"
|
|
358
|
+
agents: [ux, architect, brief]
|
|
359
|
+
duration: "10 min"
|
|
360
|
+
user_level: all
|
|
361
|
+
|
|
362
|
+
validation:
|
|
363
|
+
description: "Methods for verifying and confirming understanding"
|
|
364
|
+
methods:
|
|
365
|
+
- id: playback
|
|
366
|
+
name: Playback / Mirror
|
|
367
|
+
purpose: "Confirm understanding by restating what was heard"
|
|
368
|
+
when:
|
|
369
|
+
- "After each extraction phase"
|
|
370
|
+
- "Before finalizing any document"
|
|
371
|
+
- "When user seems uncertain about a decision"
|
|
372
|
+
steps:
|
|
373
|
+
- "Restate the key points in your own words"
|
|
374
|
+
- "Ask: 'Did I get this right?'"
|
|
375
|
+
- "Accept corrections without justifying"
|
|
376
|
+
- "Update artifacts immediately"
|
|
377
|
+
- "Re-confirm if correction was significant"
|
|
378
|
+
anti_patterns:
|
|
379
|
+
- "Reading back verbatim (rephrase to prove understanding)"
|
|
380
|
+
- "Getting defensive when corrected"
|
|
381
|
+
agents: [brief, detail, architect, ux, phases, tasks]
|
|
382
|
+
duration: "2-5 min"
|
|
383
|
+
user_level: all
|
|
384
|
+
|
|
385
|
+
- id: assumption-audit
|
|
386
|
+
name: Assumption Audit
|
|
387
|
+
purpose: "Surface and validate hidden assumptions"
|
|
388
|
+
when:
|
|
389
|
+
- "Before architecture decisions"
|
|
390
|
+
- "When requirements feel 'obvious' (danger zone)"
|
|
391
|
+
- "QA-Planning validation"
|
|
392
|
+
steps:
|
|
393
|
+
- "List all assumptions made so far (explicit and implicit)"
|
|
394
|
+
- "For each: 'Is this actually validated or just assumed?'"
|
|
395
|
+
- "Categorize: Validated, Reasonable, Risky, Unknown"
|
|
396
|
+
- "For Risky/Unknown: define how to validate"
|
|
397
|
+
- "Feed back into requirements as either constraints or open questions"
|
|
398
|
+
anti_patterns:
|
|
399
|
+
- "Only checking explicit assumptions"
|
|
400
|
+
- "Assuming technical assumptions are always correct"
|
|
401
|
+
agents: [qa-planning, architect, detail]
|
|
402
|
+
duration: "10-15 min"
|
|
403
|
+
user_level: intermediate
|
|
404
|
+
|
|
405
|
+
- id: acceptance-criteria-review
|
|
406
|
+
name: Acceptance Criteria Review
|
|
407
|
+
purpose: "Validate that acceptance criteria are testable and complete"
|
|
408
|
+
when:
|
|
409
|
+
- "After Tasks agent generates criteria"
|
|
410
|
+
- "QA-Planning validation"
|
|
411
|
+
- "Before BUILD phase"
|
|
412
|
+
steps:
|
|
413
|
+
- "For each criterion: Is it in Given-When-Then format?"
|
|
414
|
+
- "Is it binary (pass/fail)? Not subjective?"
|
|
415
|
+
- "Is it specific to this feature? Not generic?"
|
|
416
|
+
- "Does it cover the happy path AND at least one edge case?"
|
|
417
|
+
- "Can a developer implement a test for this criterion?"
|
|
418
|
+
- "Flag any criterion that fails these checks"
|
|
419
|
+
anti_patterns:
|
|
420
|
+
- "Accepting criteria like 'it should work well'"
|
|
421
|
+
- "Not checking edge cases"
|
|
422
|
+
- "Not validating that criteria are implementable"
|
|
423
|
+
agents: [qa-planning, tasks]
|
|
424
|
+
duration: "5-10 min"
|
|
425
|
+
user_level: intermediate
|
|
426
|
+
|
|
427
|
+
- id: delphi
|
|
428
|
+
name: Delphi Technique
|
|
429
|
+
purpose: "Reach consensus through iterative refinement"
|
|
430
|
+
when:
|
|
431
|
+
- "Disagreement on estimates (timeline, effort, priority)"
|
|
432
|
+
- "Multiple valid perspectives on a decision"
|
|
433
|
+
- "Complex projects with uncertainty"
|
|
434
|
+
steps:
|
|
435
|
+
- "Present the question/estimate to decide"
|
|
436
|
+
- "Collect initial estimate/opinion"
|
|
437
|
+
- "Present reasoning for the estimate"
|
|
438
|
+
- "Ask: 'Considering {reasoning}, would you adjust?'"
|
|
439
|
+
- "Iterate until convergence (max 3 rounds)"
|
|
440
|
+
- "Document final estimate with confidence level"
|
|
441
|
+
anti_patterns:
|
|
442
|
+
- "Anchoring on the first estimate"
|
|
443
|
+
- "More than 3 rounds (diminishing returns)"
|
|
444
|
+
agents: [phases, tasks, architect]
|
|
445
|
+
duration: "5-10 min per decision"
|
|
446
|
+
user_level: intermediate
|
|
447
|
+
|
|
448
|
+
contextual:
|
|
449
|
+
description: "Methods adapted to specific project contexts"
|
|
450
|
+
methods:
|
|
451
|
+
- id: competitor-teardown
|
|
452
|
+
name: Competitor Teardown
|
|
453
|
+
purpose: "Analyze competitors to inform feature decisions"
|
|
454
|
+
when:
|
|
455
|
+
- "User mentions competitors or references"
|
|
456
|
+
- "SaaS or marketplace projects"
|
|
457
|
+
- "Brief Phase 3 (Research)"
|
|
458
|
+
steps:
|
|
459
|
+
- "List mentioned competitors/references"
|
|
460
|
+
- "For each: What do they do well? What do they do poorly?"
|
|
461
|
+
- "Feature comparison matrix: has/doesn't have"
|
|
462
|
+
- "Identify differentiation opportunities"
|
|
463
|
+
- "Ask: 'What would make someone choose your product over {competitor}?'"
|
|
464
|
+
- "Feed differentiators into requirements"
|
|
465
|
+
anti_patterns:
|
|
466
|
+
- "Copying competitor features blindly"
|
|
467
|
+
- "Only looking at direct competitors (adjacent products matter)"
|
|
468
|
+
agents: [brief, detail]
|
|
469
|
+
duration: "10-20 min"
|
|
470
|
+
user_level: all
|
|
471
|
+
|
|
472
|
+
- id: event-storming-lite
|
|
473
|
+
name: Event Storming Lite
|
|
474
|
+
purpose: "Map business processes as domain events"
|
|
475
|
+
when:
|
|
476
|
+
- "Complex business logic"
|
|
477
|
+
- "Multi-step workflows"
|
|
478
|
+
- "Before architecture design"
|
|
479
|
+
steps:
|
|
480
|
+
- "List domain events (things that happen): 'User registered', 'Order placed'"
|
|
481
|
+
- "Arrange events chronologically"
|
|
482
|
+
- "For each event: What triggers it? What's the result?"
|
|
483
|
+
- "Identify aggregates (clusters of related events)"
|
|
484
|
+
- "Identify bounded contexts (independent domains)"
|
|
485
|
+
- "Feed into architecture design"
|
|
486
|
+
anti_patterns:
|
|
487
|
+
- "Going too granular too early"
|
|
488
|
+
- "Mixing technical events with business events"
|
|
489
|
+
agents: [architect, detail]
|
|
490
|
+
duration: "15-30 min"
|
|
491
|
+
user_level: intermediate
|
|
492
|
+
|
|
493
|
+
- id: story-mapping
|
|
494
|
+
name: Story Mapping
|
|
495
|
+
purpose: "Organize features into a user-centric release plan"
|
|
496
|
+
when:
|
|
497
|
+
- "Planning MVP scope"
|
|
498
|
+
- "Defining phase boundaries"
|
|
499
|
+
- "Prioritizing features across releases"
|
|
500
|
+
steps:
|
|
501
|
+
- "Top row: user activities (high-level goals)"
|
|
502
|
+
- "Second row: user tasks (steps within each activity)"
|
|
503
|
+
- "Below each task: user stories (specific features)"
|
|
504
|
+
- "Draw horizontal lines for release boundaries"
|
|
505
|
+
- "Everything above first line = MVP"
|
|
506
|
+
- "Validate: Does MVP deliver end-to-end value?"
|
|
507
|
+
anti_patterns:
|
|
508
|
+
- "Making MVP too feature-rich"
|
|
509
|
+
- "Not validating that MVP is usable end-to-end"
|
|
510
|
+
agents: [phases, tasks, detail]
|
|
511
|
+
duration: "15-25 min"
|
|
512
|
+
user_level: intermediate
|
|
513
|
+
|
|
514
|
+
- id: risk-radar
|
|
515
|
+
name: Risk Radar
|
|
516
|
+
purpose: "Visualize and track project risks by category"
|
|
517
|
+
when:
|
|
518
|
+
- "QA-Planning validation"
|
|
519
|
+
- "Before BUILD phase"
|
|
520
|
+
- "Enterprise or high-stakes projects"
|
|
521
|
+
steps:
|
|
522
|
+
- "Categorize risks: Technical, Business, Team, External, Security"
|
|
523
|
+
- "For each risk: Likelihood (1-5) x Impact (1-5) = Risk Score"
|
|
524
|
+
- "High risk (score > 15): Must mitigate before BUILD"
|
|
525
|
+
- "Medium risk (8-15): Document mitigation strategy"
|
|
526
|
+
- "Low risk (< 8): Accept and monitor"
|
|
527
|
+
- "Assign risk owner for each high/medium risk"
|
|
528
|
+
anti_patterns:
|
|
529
|
+
- "Only tracking technical risks"
|
|
530
|
+
- "Not updating radar as project progresses"
|
|
531
|
+
agents: [qa-planning, architect, phases]
|
|
532
|
+
duration: "10-15 min"
|
|
533
|
+
user_level: intermediate
|
|
534
|
+
|
|
535
|
+
# Agent-method mapping for quick lookup
|
|
536
|
+
agent_recommendations:
|
|
537
|
+
greenfield-wu:
|
|
538
|
+
primary: [brain-dump, constraint-mapping]
|
|
539
|
+
secondary: [what-if]
|
|
540
|
+
brownfield-wu:
|
|
541
|
+
primary: [gap-analysis, constraint-mapping]
|
|
542
|
+
secondary: [event-storming-lite]
|
|
543
|
+
brief:
|
|
544
|
+
primary: [brain-dump, five-whys, moscow, stakeholder-map, playback]
|
|
545
|
+
secondary: [scamper, competitor-teardown, persona-building]
|
|
546
|
+
detail:
|
|
547
|
+
primary: [gap-analysis, constraint-mapping, decision-matrix]
|
|
548
|
+
secondary: [six-thinking-hats, scamper, event-storming-lite]
|
|
549
|
+
architect:
|
|
550
|
+
primary: [constraint-mapping, decision-matrix, pre-mortem, what-if]
|
|
551
|
+
secondary: [event-storming-lite, risk-radar]
|
|
552
|
+
ux:
|
|
553
|
+
primary: [persona-building, user-journey-map, crazy-eights, dot-voting]
|
|
554
|
+
secondary: [stakeholder-map, playback]
|
|
555
|
+
phases:
|
|
556
|
+
primary: [moscow, impact-effort-matrix, story-mapping]
|
|
557
|
+
secondary: [delphi, dot-voting]
|
|
558
|
+
tasks:
|
|
559
|
+
primary: [acceptance-criteria-review, story-mapping]
|
|
560
|
+
secondary: [delphi, constraint-mapping]
|
|
561
|
+
qa-planning:
|
|
562
|
+
primary: [assumption-audit, acceptance-criteria-review, pre-mortem, risk-radar]
|
|
563
|
+
secondary: [playback]
|
|
564
|
+
qa-implementation:
|
|
565
|
+
primary: [assumption-audit, acceptance-criteria-review]
|
|
566
|
+
secondary: [playback]
|
|
567
|
+
|
|
568
|
+
# Context-based auto-selection rules
|
|
569
|
+
auto_selection:
|
|
570
|
+
- condition: "project.type == greenfield AND user_level == vibecoder"
|
|
571
|
+
recommend: [brain-dump, moscow, persona-building, playback]
|
|
572
|
+
reasoning: "Vibecoders need guided extraction with visual methods"
|
|
573
|
+
|
|
574
|
+
- condition: "project.type == greenfield AND user_level == power_user"
|
|
575
|
+
recommend: [constraint-mapping, decision-matrix, pre-mortem, story-mapping]
|
|
576
|
+
reasoning: "Power users can handle analytical methods directly"
|
|
577
|
+
|
|
578
|
+
- condition: "project.type == brownfield"
|
|
579
|
+
recommend: [gap-analysis, event-storming-lite, constraint-mapping, pre-mortem]
|
|
580
|
+
reasoning: "Brownfield needs structured analysis of existing state vs desired state"
|
|
581
|
+
|
|
582
|
+
- condition: "requirement_count > 20"
|
|
583
|
+
recommend: [moscow, impact-effort-matrix, dot-voting]
|
|
584
|
+
reasoning: "Many requirements need aggressive prioritization"
|
|
585
|
+
|
|
586
|
+
- condition: "stakeholder_count > 3"
|
|
587
|
+
recommend: [stakeholder-map, six-thinking-hats, delphi]
|
|
588
|
+
reasoning: "Multiple stakeholders need structured consensus methods"
|
|
589
|
+
|
|
590
|
+
- condition: "project.complexity == enterprise"
|
|
591
|
+
recommend: [pre-mortem, risk-radar, assumption-audit, event-storming-lite]
|
|
592
|
+
reasoning: "Enterprise projects need thorough risk analysis"
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Agents use structured elicitation patterns to collect data from users. These patterns are baked into Protocol 5.8 (Interaction Model).
|
|
4
4
|
|
|
5
|
+
> **Full Library**: See `chati.dev/patterns/elicitation-library.yaml` for the complete catalog of 24 methods with triggers, steps, agent mapping, and context-based auto-selection rules.
|
|
6
|
+
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
## Pattern Types
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Planning Quality Gate
|
|
2
2
|
|
|
3
3
|
## Purpose
|
|
4
|
-
Validates traceability and consistency across all
|
|
4
|
+
Validates traceability and consistency across all PLAN artifacts before allowing transition to BUILD phase.
|
|
5
5
|
|
|
6
6
|
## When
|
|
7
7
|
After Tasks agent completes, before Dev agent starts.
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"properties": {
|
|
12
12
|
"name": { "type": "string", "description": "Project name" },
|
|
13
13
|
"type": { "enum": ["greenfield", "brownfield"], "description": "Project type" },
|
|
14
|
-
"state": { "enum": ["
|
|
14
|
+
"state": { "enum": ["discover", "plan", "build", "validate", "deploy", "completed"], "description": "Current pipeline macro-phase" }
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
17
|
"execution_mode": {
|
|
@@ -85,6 +85,39 @@
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
},
|
|
88
|
+
"preview": {
|
|
89
|
+
"type": "object",
|
|
90
|
+
"description": "User preview state (active during BUILD → DEPLOY gate)",
|
|
91
|
+
"properties": {
|
|
92
|
+
"status": {
|
|
93
|
+
"enum": ["inactive", "running", "approved", "adjusting"],
|
|
94
|
+
"default": "inactive",
|
|
95
|
+
"description": "Preview server status"
|
|
96
|
+
},
|
|
97
|
+
"url": {
|
|
98
|
+
"type": ["string", "null"],
|
|
99
|
+
"description": "Local preview URL (e.g., http://localhost:3001)"
|
|
100
|
+
},
|
|
101
|
+
"port": {
|
|
102
|
+
"type": ["integer", "null"],
|
|
103
|
+
"description": "Port the preview server is running on"
|
|
104
|
+
},
|
|
105
|
+
"framework": {
|
|
106
|
+
"type": ["string", "null"],
|
|
107
|
+
"description": "Detected framework (nextjs, vite, angular, etc.)"
|
|
108
|
+
},
|
|
109
|
+
"logs_captured": {
|
|
110
|
+
"type": "integer",
|
|
111
|
+
"default": 0,
|
|
112
|
+
"description": "Number of log lines captured in buffer"
|
|
113
|
+
},
|
|
114
|
+
"adjustment_count": {
|
|
115
|
+
"type": "integer",
|
|
116
|
+
"default": 0,
|
|
117
|
+
"description": "Number of adjustment iterations"
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
},
|
|
88
121
|
"last_handoff": { "type": "string" },
|
|
89
122
|
"deviations": {
|
|
90
123
|
"type": "array",
|
|
@@ -122,8 +155,8 @@
|
|
|
122
155
|
"required": ["timestamp", "from", "to", "trigger"],
|
|
123
156
|
"properties": {
|
|
124
157
|
"timestamp": { "type": "string", "format": "date-time" },
|
|
125
|
-
"from": { "enum": ["
|
|
126
|
-
"to": { "enum": ["
|
|
158
|
+
"from": { "enum": ["discover", "plan", "build", "validate", "deploy", "completed"] },
|
|
159
|
+
"to": { "enum": ["discover", "plan", "build", "validate", "deploy", "completed"] },
|
|
127
160
|
"trigger": { "type": "string", "description": "What caused the transition (agent completion, override, backward)" },
|
|
128
161
|
"type": { "enum": ["automatic", "backward", "override"], "description": "Transition classification" },
|
|
129
162
|
"skipped_agents": {
|