@techierathore/techieflow 1.0.0
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/TechieFlow/agents/analyst.md +97 -0
- package/.claude/commands/TechieFlow/agents/architect.md +84 -0
- package/.claude/commands/TechieFlow/agents/flow-master.md +217 -0
- package/.claude/commands/TechieFlow/agents/verifier.md +72 -0
- package/.claude/commands/TechieFlow/tasks/_metrics-emit-gate.md +138 -0
- package/.claude/commands/TechieFlow/tasks/_smoke-test-policy.md +98 -0
- package/.claude/commands/TechieFlow/tasks/_status-update-gate.md +78 -0
- package/.claude/commands/TechieFlow/tasks/_yolo-mode.md +77 -0
- package/.claude/commands/TechieFlow/tasks/advanced-elicitation.md +117 -0
- package/.claude/commands/TechieFlow/tasks/amend-docs.md +149 -0
- package/.claude/commands/TechieFlow/tasks/author-brd.md +79 -0
- package/.claude/commands/TechieFlow/tasks/build-phase.md +231 -0
- package/.claude/commands/TechieFlow/tasks/create-deep-research-prompt.md +278 -0
- package/.claude/commands/TechieFlow/tasks/create-doc.md +101 -0
- package/.claude/commands/TechieFlow/tasks/day1-brownfield.md +507 -0
- package/.claude/commands/TechieFlow/tasks/day1-greenfield.md +224 -0
- package/.claude/commands/TechieFlow/tasks/devguide.md +224 -0
- package/.claude/commands/TechieFlow/tasks/document-project.md +343 -0
- package/.claude/commands/TechieFlow/tasks/execute-checklist.md +86 -0
- package/.claude/commands/TechieFlow/tasks/facilitate-brainstorming-session.md +136 -0
- package/.claude/commands/TechieFlow/tasks/fix-issues.md +134 -0
- package/.claude/commands/TechieFlow/tasks/generate-html.md +115 -0
- package/.claude/commands/TechieFlow/tasks/handoff-phase.md +126 -0
- package/.claude/commands/TechieFlow/tasks/index-docs.md +173 -0
- package/.claude/commands/TechieFlow/tasks/kb-mode-interaction.md +75 -0
- package/.claude/commands/TechieFlow/tasks/log-miss.md +160 -0
- package/.claude/commands/TechieFlow/tasks/metrics-report.md +143 -0
- package/.claude/commands/TechieFlow/tasks/mockups.md +122 -0
- package/.claude/commands/TechieFlow/tasks/productguide.md +105 -0
- package/.claude/commands/TechieFlow/tasks/refresh-status.md +135 -0
- package/.claude/commands/TechieFlow/tasks/render-workflow-docs.md +117 -0
- package/.claude/commands/TechieFlow/tasks/shard-doc.md +185 -0
- package/.claude/commands/TechieFlow/tasks/split-brd.md +131 -0
- package/.claude/commands/TechieFlow/tasks/triage-issues.md +157 -0
- package/.claude/commands/TechieFlow/tasks/verify-phase.md +579 -0
- package/.claude/commands/generate-html.md +124 -0
- package/.codex/config.toml +46 -0
- package/.codex/hooks.json +63 -0
- package/.codex/rules/techieflow.rules +8 -0
- package/.opencode/command/generate-html.md +129 -0
- package/.opencode/plugin/techieflow.js +350 -0
- package/.tfcore/TOKEN-GUIDE.md +59 -0
- package/.tfcore/agents/analyst.md +97 -0
- package/.tfcore/agents/architect.md +84 -0
- package/.tfcore/agents/flow-master.md +217 -0
- package/.tfcore/agents/verifier.md +72 -0
- package/.tfcore/checklists/architect-checklist.md +438 -0
- package/.tfcore/core-config.yaml +47 -0
- package/.tfcore/data/brainstorming-techniques.md +36 -0
- package/.tfcore/data/elicitation-methods.md +154 -0
- package/.tfcore/data/techieflow-kb.md +807 -0
- package/.tfcore/data/technical-preferences.md +3 -0
- package/.tfcore/enhanced-ide-development-workflow.md +248 -0
- package/.tfcore/hooks/block-git.sh +301 -0
- package/.tfcore/hooks/codex-adapter.py +248 -0
- package/.tfcore/hooks/guard-artifacts.sh +101 -0
- package/.tfcore/hooks/guard-status-html.sh +102 -0
- package/.tfcore/hooks/guard-status.sh +124 -0
- package/.tfcore/hooks/guard-verify.sh +108 -0
- package/.tfcore/hooks/metrics-session.sh +129 -0
- package/.tfcore/hooks/session-pointer.sh +52 -0
- package/.tfcore/hooks/sweep-artifacts.sh +198 -0
- package/.tfcore/install-manifest.yaml +231 -0
- package/.tfcore/routing.yaml +105 -0
- package/.tfcore/tasks/_metrics-emit-gate.md +138 -0
- package/.tfcore/tasks/_smoke-test-policy.md +98 -0
- package/.tfcore/tasks/_status-update-gate.md +78 -0
- package/.tfcore/tasks/_yolo-mode.md +77 -0
- package/.tfcore/tasks/advanced-elicitation.md +117 -0
- package/.tfcore/tasks/amend-docs.md +149 -0
- package/.tfcore/tasks/author-brd.md +79 -0
- package/.tfcore/tasks/build-phase.md +231 -0
- package/.tfcore/tasks/create-deep-research-prompt.md +278 -0
- package/.tfcore/tasks/create-doc.md +101 -0
- package/.tfcore/tasks/day1-brownfield.md +507 -0
- package/.tfcore/tasks/day1-greenfield.md +224 -0
- package/.tfcore/tasks/devguide.md +224 -0
- package/.tfcore/tasks/document-project.md +343 -0
- package/.tfcore/tasks/execute-checklist.md +86 -0
- package/.tfcore/tasks/facilitate-brainstorming-session.md +136 -0
- package/.tfcore/tasks/fix-issues.md +134 -0
- package/.tfcore/tasks/generate-html.md +115 -0
- package/.tfcore/tasks/handoff-phase.md +126 -0
- package/.tfcore/tasks/index-docs.md +173 -0
- package/.tfcore/tasks/kb-mode-interaction.md +75 -0
- package/.tfcore/tasks/log-miss.md +160 -0
- package/.tfcore/tasks/metrics-report.md +143 -0
- package/.tfcore/tasks/mockups.md +122 -0
- package/.tfcore/tasks/productguide.md +105 -0
- package/.tfcore/tasks/refresh-status.md +135 -0
- package/.tfcore/tasks/render-workflow-docs.md +117 -0
- package/.tfcore/tasks/shard-doc.md +185 -0
- package/.tfcore/tasks/split-brd.md +131 -0
- package/.tfcore/tasks/triage-issues.md +157 -0
- package/.tfcore/tasks/verify-phase.md +579 -0
- package/.tfcore/telemetry/SCHEMA.md +678 -0
- package/.tfcore/telemetry/install-metrics.sh +390 -0
- package/.tfcore/telemetry/pre-commit +94 -0
- package/.tfcore/telemetry/tf-metrics.sh +1415 -0
- package/.tfcore/templates/architecture-tmpl.yaml +650 -0
- package/.tfcore/templates/brainstorming-output-tmpl.yaml +156 -0
- package/.tfcore/templates/brownfield-architecture-tmpl.yaml +476 -0
- package/.tfcore/templates/competitor-analysis-tmpl.yaml +306 -0
- package/.tfcore/templates/front-end-architecture-tmpl.yaml +218 -0
- package/.tfcore/templates/fullstack-architecture-tmpl.yaml +823 -0
- package/.tfcore/templates/market-research-tmpl.yaml +252 -0
- package/.tfcore/templates/project-brief-tmpl.yaml +221 -0
- package/.tfcore/templates/v4custom/app-agents-md-tmpl.md +61 -0
- package/.tfcore/templates/v4custom/app-architecture-tmpl.md +127 -0
- package/.tfcore/templates/v4custom/app-brd-tmpl.md +204 -0
- package/.tfcore/templates/v4custom/app-checklist-tmpl.md +90 -0
- package/.tfcore/templates/v4custom/app-claude-md-tmpl.md +33 -0
- package/.tfcore/templates/v4custom/app-devguide-tmpl.md +167 -0
- package/.tfcore/templates/v4custom/app-editorconfig-tmpl.editorconfig +44 -0
- package/.tfcore/templates/v4custom/app-library-feedback-tmpl.md +31 -0
- package/.tfcore/templates/v4custom/app-productguide-tmpl.md +54 -0
- package/.tfcore/templates/v4custom/app-project-status-tmpl.md +98 -0
- package/.tfcore/templates/v4custom/app-uidesign-tmpl.md +48 -0
- package/.tfcore/templates/v4custom/app-usageguide-tmpl.md +67 -0
- package/.tfcore/templates/v4custom/build-invocation-ladder.md +190 -0
- package/.tfcore/templates/v4custom/html-render-shell.md +502 -0
- package/.tfcore/templates/v4custom/metrics-report-template.md +273 -0
- package/.tfcore/templates/v4custom/opencode-operating-contract.md +56 -0
- package/.tfcore/user-guide.md +633 -0
- package/.tfcore/utils/techieflow-doc-template.md +325 -0
- package/.tfcore/utils/tf-assets.sh +310 -0
- package/.tfcore/utils/tf-codex-bind.py +196 -0
- package/.tfcore/utils/tf-codex-telemetry.py +60 -0
- package/.tfcore/utils/tf-emit.sh +1075 -0
- package/.tfcore/utils/tf-gitignore-audit.sh +281 -0
- package/.tfcore/utils/tf-goal.sh +421 -0
- package/.tfcore/utils/tf-harness.sh +160 -0
- package/.tfcore/utils/tf-mockup-parity.mjs +555 -0
- package/.tfcore/utils/tf-mockup-parity.sh +65 -0
- package/.tfcore/utils/tf-opencode-audit.py +126 -0
- package/.tfcore/utils/tf-perf.sh +241 -0
- package/.tfcore/utils/tf-render-html.py +715 -0
- package/.tfcore/utils/tf-render-html.sh +28 -0
- package/.tfcore/utils/tf-routing-bind.sh +216 -0
- package/.tfcore/utils/tf-routing.sh +247 -0
- package/.tfcore/utils/tf-yolo.sh +119 -0
- package/.tfcore/working-in-the-brownfield.md +606 -0
- package/LICENSE +201 -0
- package/README.md +1212 -0
- package/WORKFLOW.html +1986 -0
- package/docs/TechieFlow-Installation.md +299 -0
- package/opencode.jsonc +929 -0
- package/package.json +60 -0
- package/scripts/install.mjs +992 -0
- package/scripts/test-install.mjs +505 -0
- package/scripts/validate.mjs +155 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
template:
|
|
2
|
+
id: market-research-template-v2
|
|
3
|
+
name: Market Research Report
|
|
4
|
+
version: 2.0
|
|
5
|
+
output:
|
|
6
|
+
format: markdown
|
|
7
|
+
filename: docs/market-research.md
|
|
8
|
+
title: "Market Research Report: {{project_product_name}}"
|
|
9
|
+
|
|
10
|
+
workflow:
|
|
11
|
+
mode: interactive
|
|
12
|
+
elicitation: advanced-elicitation
|
|
13
|
+
custom_elicitation:
|
|
14
|
+
title: "Market Research Elicitation Actions"
|
|
15
|
+
options:
|
|
16
|
+
- "Expand market sizing calculations with sensitivity analysis"
|
|
17
|
+
- "Deep dive into a specific customer segment"
|
|
18
|
+
- "Analyze an emerging market trend in detail"
|
|
19
|
+
- "Compare this market to an analogous market"
|
|
20
|
+
- "Stress test market assumptions"
|
|
21
|
+
- "Explore adjacent market opportunities"
|
|
22
|
+
- "Challenge market definition and boundaries"
|
|
23
|
+
- "Generate strategic scenarios (best/base/worst case)"
|
|
24
|
+
- "If only we had considered [X market factor]..."
|
|
25
|
+
- "Proceed to next section"
|
|
26
|
+
|
|
27
|
+
sections:
|
|
28
|
+
- id: executive-summary
|
|
29
|
+
title: Executive Summary
|
|
30
|
+
instruction: Provide a high-level overview of key findings, market opportunity assessment, and strategic recommendations. Write this section LAST after completing all other sections.
|
|
31
|
+
|
|
32
|
+
- id: research-objectives
|
|
33
|
+
title: Research Objectives & Methodology
|
|
34
|
+
instruction: This template guides the creation of a comprehensive market research report. Begin by understanding what market insights the user needs and why. Work through each section systematically, using the appropriate analytical frameworks based on the research objectives.
|
|
35
|
+
sections:
|
|
36
|
+
- id: objectives
|
|
37
|
+
title: Research Objectives
|
|
38
|
+
instruction: |
|
|
39
|
+
List the primary objectives of this market research:
|
|
40
|
+
- What decisions will this research inform?
|
|
41
|
+
- What specific questions need to be answered?
|
|
42
|
+
- What are the success criteria for this research?
|
|
43
|
+
- id: methodology
|
|
44
|
+
title: Research Methodology
|
|
45
|
+
instruction: |
|
|
46
|
+
Describe the research approach:
|
|
47
|
+
- Data sources used (primary/secondary)
|
|
48
|
+
- Analysis frameworks applied
|
|
49
|
+
- Data collection timeframe
|
|
50
|
+
- Limitations and assumptions
|
|
51
|
+
|
|
52
|
+
- id: market-overview
|
|
53
|
+
title: Market Overview
|
|
54
|
+
sections:
|
|
55
|
+
- id: market-definition
|
|
56
|
+
title: Market Definition
|
|
57
|
+
instruction: |
|
|
58
|
+
Define the market being analyzed:
|
|
59
|
+
- Product/service category
|
|
60
|
+
- Geographic scope
|
|
61
|
+
- Customer segments included
|
|
62
|
+
- Value chain position
|
|
63
|
+
- id: market-size-growth
|
|
64
|
+
title: Market Size & Growth
|
|
65
|
+
instruction: |
|
|
66
|
+
Guide through TAM, SAM, SOM calculations with clear assumptions. Use one or more approaches:
|
|
67
|
+
- Top-down: Start with industry data, narrow down
|
|
68
|
+
- Bottom-up: Build from customer/unit economics
|
|
69
|
+
- Value theory: Based on value provided vs. alternatives
|
|
70
|
+
sections:
|
|
71
|
+
- id: tam
|
|
72
|
+
title: Total Addressable Market (TAM)
|
|
73
|
+
instruction: Calculate and explain the total market opportunity
|
|
74
|
+
- id: sam
|
|
75
|
+
title: Serviceable Addressable Market (SAM)
|
|
76
|
+
instruction: Define the portion of TAM you can realistically reach
|
|
77
|
+
- id: som
|
|
78
|
+
title: Serviceable Obtainable Market (SOM)
|
|
79
|
+
instruction: Estimate the portion you can realistically capture
|
|
80
|
+
- id: market-trends
|
|
81
|
+
title: Market Trends & Drivers
|
|
82
|
+
instruction: Analyze key trends shaping the market using appropriate frameworks like PESTEL
|
|
83
|
+
sections:
|
|
84
|
+
- id: key-trends
|
|
85
|
+
title: Key Market Trends
|
|
86
|
+
instruction: |
|
|
87
|
+
List and explain 3-5 major trends:
|
|
88
|
+
- Trend 1: Description and impact
|
|
89
|
+
- Trend 2: Description and impact
|
|
90
|
+
- etc.
|
|
91
|
+
- id: growth-drivers
|
|
92
|
+
title: Growth Drivers
|
|
93
|
+
instruction: Identify primary factors driving market growth
|
|
94
|
+
- id: market-inhibitors
|
|
95
|
+
title: Market Inhibitors
|
|
96
|
+
instruction: Identify factors constraining market growth
|
|
97
|
+
|
|
98
|
+
- id: customer-analysis
|
|
99
|
+
title: Customer Analysis
|
|
100
|
+
sections:
|
|
101
|
+
- id: segment-profiles
|
|
102
|
+
title: Target Segment Profiles
|
|
103
|
+
instruction: For each segment, create detailed profiles including demographics/firmographics, psychographics, behaviors, needs, and willingness to pay
|
|
104
|
+
repeatable: true
|
|
105
|
+
sections:
|
|
106
|
+
- id: segment
|
|
107
|
+
title: "Segment {{segment_number}}: {{segment_name}}"
|
|
108
|
+
template: |
|
|
109
|
+
- **Description:** {{brief_overview}}
|
|
110
|
+
- **Size:** {{number_of_customers_market_value}}
|
|
111
|
+
- **Characteristics:** {{key_demographics_firmographics}}
|
|
112
|
+
- **Needs & Pain Points:** {{primary_problems}}
|
|
113
|
+
- **Buying Process:** {{purchasing_decisions}}
|
|
114
|
+
- **Willingness to Pay:** {{price_sensitivity}}
|
|
115
|
+
- id: jobs-to-be-done
|
|
116
|
+
title: Jobs-to-be-Done Analysis
|
|
117
|
+
instruction: Uncover what customers are really trying to accomplish
|
|
118
|
+
sections:
|
|
119
|
+
- id: functional-jobs
|
|
120
|
+
title: Functional Jobs
|
|
121
|
+
instruction: List practical tasks and objectives customers need to complete
|
|
122
|
+
- id: emotional-jobs
|
|
123
|
+
title: Emotional Jobs
|
|
124
|
+
instruction: Describe feelings and perceptions customers seek
|
|
125
|
+
- id: social-jobs
|
|
126
|
+
title: Social Jobs
|
|
127
|
+
instruction: Explain how customers want to be perceived by others
|
|
128
|
+
- id: customer-journey
|
|
129
|
+
title: Customer Journey Mapping
|
|
130
|
+
instruction: Map the end-to-end customer experience for primary segments
|
|
131
|
+
template: |
|
|
132
|
+
For primary customer segment:
|
|
133
|
+
|
|
134
|
+
1. **Awareness:** {{discovery_process}}
|
|
135
|
+
2. **Consideration:** {{evaluation_criteria}}
|
|
136
|
+
3. **Purchase:** {{decision_triggers}}
|
|
137
|
+
4. **Onboarding:** {{initial_expectations}}
|
|
138
|
+
5. **Usage:** {{interaction_patterns}}
|
|
139
|
+
6. **Advocacy:** {{referral_behaviors}}
|
|
140
|
+
|
|
141
|
+
- id: competitive-landscape
|
|
142
|
+
title: Competitive Landscape
|
|
143
|
+
sections:
|
|
144
|
+
- id: market-structure
|
|
145
|
+
title: Market Structure
|
|
146
|
+
instruction: |
|
|
147
|
+
Describe the overall competitive environment:
|
|
148
|
+
- Number of competitors
|
|
149
|
+
- Market concentration
|
|
150
|
+
- Competitive intensity
|
|
151
|
+
- id: major-players
|
|
152
|
+
title: Major Players Analysis
|
|
153
|
+
instruction: |
|
|
154
|
+
For top 3-5 competitors:
|
|
155
|
+
- Company name and brief description
|
|
156
|
+
- Market share estimate
|
|
157
|
+
- Key strengths and weaknesses
|
|
158
|
+
- Target customer focus
|
|
159
|
+
- Pricing strategy
|
|
160
|
+
- id: competitive-positioning
|
|
161
|
+
title: Competitive Positioning
|
|
162
|
+
instruction: |
|
|
163
|
+
Analyze how competitors are positioned:
|
|
164
|
+
- Value propositions
|
|
165
|
+
- Differentiation strategies
|
|
166
|
+
- Market gaps and opportunities
|
|
167
|
+
|
|
168
|
+
- id: industry-analysis
|
|
169
|
+
title: Industry Analysis
|
|
170
|
+
sections:
|
|
171
|
+
- id: porters-five-forces
|
|
172
|
+
title: Porter's Five Forces Assessment
|
|
173
|
+
instruction: Analyze each force with specific evidence and implications
|
|
174
|
+
sections:
|
|
175
|
+
- id: supplier-power
|
|
176
|
+
title: "Supplier Power: {{power_level}}"
|
|
177
|
+
template: "{{analysis_and_implications}}"
|
|
178
|
+
- id: buyer-power
|
|
179
|
+
title: "Buyer Power: {{power_level}}"
|
|
180
|
+
template: "{{analysis_and_implications}}"
|
|
181
|
+
- id: competitive-rivalry
|
|
182
|
+
title: "Competitive Rivalry: {{intensity_level}}"
|
|
183
|
+
template: "{{analysis_and_implications}}"
|
|
184
|
+
- id: threat-new-entry
|
|
185
|
+
title: "Threat of New Entry: {{threat_level}}"
|
|
186
|
+
template: "{{analysis_and_implications}}"
|
|
187
|
+
- id: threat-substitutes
|
|
188
|
+
title: "Threat of Substitutes: {{threat_level}}"
|
|
189
|
+
template: "{{analysis_and_implications}}"
|
|
190
|
+
- id: adoption-lifecycle
|
|
191
|
+
title: Technology Adoption Lifecycle Stage
|
|
192
|
+
instruction: |
|
|
193
|
+
Identify where the market is in the adoption curve:
|
|
194
|
+
- Current stage and evidence
|
|
195
|
+
- Implications for strategy
|
|
196
|
+
- Expected progression timeline
|
|
197
|
+
|
|
198
|
+
- id: opportunity-assessment
|
|
199
|
+
title: Opportunity Assessment
|
|
200
|
+
sections:
|
|
201
|
+
- id: market-opportunities
|
|
202
|
+
title: Market Opportunities
|
|
203
|
+
instruction: Identify specific opportunities based on the analysis
|
|
204
|
+
repeatable: true
|
|
205
|
+
sections:
|
|
206
|
+
- id: opportunity
|
|
207
|
+
title: "Opportunity {{opportunity_number}}: {{name}}"
|
|
208
|
+
template: |
|
|
209
|
+
- **Description:** {{what_is_the_opportunity}}
|
|
210
|
+
- **Size/Potential:** {{quantified_potential}}
|
|
211
|
+
- **Requirements:** {{needed_to_capture}}
|
|
212
|
+
- **Risks:** {{key_challenges}}
|
|
213
|
+
- id: strategic-recommendations
|
|
214
|
+
title: Strategic Recommendations
|
|
215
|
+
sections:
|
|
216
|
+
- id: go-to-market
|
|
217
|
+
title: Go-to-Market Strategy
|
|
218
|
+
instruction: |
|
|
219
|
+
Recommend approach for market entry/expansion:
|
|
220
|
+
- Target segment prioritization
|
|
221
|
+
- Positioning strategy
|
|
222
|
+
- Channel strategy
|
|
223
|
+
- Partnership opportunities
|
|
224
|
+
- id: pricing-strategy
|
|
225
|
+
title: Pricing Strategy
|
|
226
|
+
instruction: |
|
|
227
|
+
Based on willingness to pay analysis and competitive landscape:
|
|
228
|
+
- Recommended pricing model
|
|
229
|
+
- Price points/ranges
|
|
230
|
+
- Value metric
|
|
231
|
+
- Competitive positioning
|
|
232
|
+
- id: risk-mitigation
|
|
233
|
+
title: Risk Mitigation
|
|
234
|
+
instruction: |
|
|
235
|
+
Key risks and mitigation strategies:
|
|
236
|
+
- Market risks
|
|
237
|
+
- Competitive risks
|
|
238
|
+
- Execution risks
|
|
239
|
+
- Regulatory/compliance risks
|
|
240
|
+
|
|
241
|
+
- id: appendices
|
|
242
|
+
title: Appendices
|
|
243
|
+
sections:
|
|
244
|
+
- id: data-sources
|
|
245
|
+
title: A. Data Sources
|
|
246
|
+
instruction: List all sources used in the research
|
|
247
|
+
- id: calculations
|
|
248
|
+
title: B. Detailed Calculations
|
|
249
|
+
instruction: Include any complex calculations or models
|
|
250
|
+
- id: additional-analysis
|
|
251
|
+
title: C. Additional Analysis
|
|
252
|
+
instruction: Any supplementary analysis not included in main body
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
template:
|
|
2
|
+
id: project-brief-template-v2
|
|
3
|
+
name: Project Brief
|
|
4
|
+
version: 2.0
|
|
5
|
+
output:
|
|
6
|
+
format: markdown
|
|
7
|
+
filename: docs/brief.md
|
|
8
|
+
title: "Project Brief: {{project_name}}"
|
|
9
|
+
|
|
10
|
+
workflow:
|
|
11
|
+
mode: interactive
|
|
12
|
+
elicitation: advanced-elicitation
|
|
13
|
+
custom_elicitation:
|
|
14
|
+
title: "Project Brief Elicitation Actions"
|
|
15
|
+
options:
|
|
16
|
+
- "Expand section with more specific details"
|
|
17
|
+
- "Validate against similar successful products"
|
|
18
|
+
- "Stress test assumptions with edge cases"
|
|
19
|
+
- "Explore alternative solution approaches"
|
|
20
|
+
- "Analyze resource/constraint trade-offs"
|
|
21
|
+
- "Generate risk mitigation strategies"
|
|
22
|
+
- "Challenge scope from MVP minimalist view"
|
|
23
|
+
- "Brainstorm creative feature possibilities"
|
|
24
|
+
- "If only we had [resource/capability/time]..."
|
|
25
|
+
- "Proceed to next section"
|
|
26
|
+
|
|
27
|
+
sections:
|
|
28
|
+
- id: introduction
|
|
29
|
+
instruction: |
|
|
30
|
+
This template guides creation of a comprehensive Project Brief that serves as the foundational input for product development.
|
|
31
|
+
|
|
32
|
+
Start by asking the user which mode they prefer:
|
|
33
|
+
|
|
34
|
+
1. **Interactive Mode** - Work through each section collaboratively
|
|
35
|
+
2. **YOLO Mode** - Generate complete draft for review and refinement
|
|
36
|
+
|
|
37
|
+
Before beginning, understand what inputs are available (brainstorming results, market research, competitive analysis, initial ideas) and gather project context.
|
|
38
|
+
|
|
39
|
+
- id: executive-summary
|
|
40
|
+
title: Executive Summary
|
|
41
|
+
instruction: |
|
|
42
|
+
Create a concise overview that captures the essence of the project. Include:
|
|
43
|
+
- Product concept in 1-2 sentences
|
|
44
|
+
- Primary problem being solved
|
|
45
|
+
- Target market identification
|
|
46
|
+
- Key value proposition
|
|
47
|
+
template: "{{executive_summary_content}}"
|
|
48
|
+
|
|
49
|
+
- id: problem-statement
|
|
50
|
+
title: Problem Statement
|
|
51
|
+
instruction: |
|
|
52
|
+
Articulate the problem with clarity and evidence. Address:
|
|
53
|
+
- Current state and pain points
|
|
54
|
+
- Impact of the problem (quantify if possible)
|
|
55
|
+
- Why existing solutions fall short
|
|
56
|
+
- Urgency and importance of solving this now
|
|
57
|
+
template: "{{detailed_problem_description}}"
|
|
58
|
+
|
|
59
|
+
- id: proposed-solution
|
|
60
|
+
title: Proposed Solution
|
|
61
|
+
instruction: |
|
|
62
|
+
Describe the solution approach at a high level. Include:
|
|
63
|
+
- Core concept and approach
|
|
64
|
+
- Key differentiators from existing solutions
|
|
65
|
+
- Why this solution will succeed where others haven't
|
|
66
|
+
- High-level vision for the product
|
|
67
|
+
template: "{{solution_description}}"
|
|
68
|
+
|
|
69
|
+
- id: target-users
|
|
70
|
+
title: Target Users
|
|
71
|
+
instruction: |
|
|
72
|
+
Define and characterize the intended users with specificity. For each user segment include:
|
|
73
|
+
- Demographic/firmographic profile
|
|
74
|
+
- Current behaviors and workflows
|
|
75
|
+
- Specific needs and pain points
|
|
76
|
+
- Goals they're trying to achieve
|
|
77
|
+
sections:
|
|
78
|
+
- id: primary-segment
|
|
79
|
+
title: "Primary User Segment: {{segment_name}}"
|
|
80
|
+
template: "{{primary_user_description}}"
|
|
81
|
+
- id: secondary-segment
|
|
82
|
+
title: "Secondary User Segment: {{segment_name}}"
|
|
83
|
+
condition: Has secondary user segment
|
|
84
|
+
template: "{{secondary_user_description}}"
|
|
85
|
+
|
|
86
|
+
- id: goals-metrics
|
|
87
|
+
title: Goals & Success Metrics
|
|
88
|
+
instruction: Establish clear objectives and how to measure success. Make goals SMART (Specific, Measurable, Achievable, Relevant, Time-bound)
|
|
89
|
+
sections:
|
|
90
|
+
- id: business-objectives
|
|
91
|
+
title: Business Objectives
|
|
92
|
+
type: bullet-list
|
|
93
|
+
template: "- {{objective_with_metric}}"
|
|
94
|
+
- id: user-success-metrics
|
|
95
|
+
title: User Success Metrics
|
|
96
|
+
type: bullet-list
|
|
97
|
+
template: "- {{user_metric}}"
|
|
98
|
+
- id: kpis
|
|
99
|
+
title: Key Performance Indicators (KPIs)
|
|
100
|
+
type: bullet-list
|
|
101
|
+
template: "- {{kpi}}: {{definition_and_target}}"
|
|
102
|
+
|
|
103
|
+
- id: mvp-scope
|
|
104
|
+
title: MVP Scope
|
|
105
|
+
instruction: Define the minimum viable product clearly. Be specific about what's in and what's out. Help user distinguish must-haves from nice-to-haves.
|
|
106
|
+
sections:
|
|
107
|
+
- id: core-features
|
|
108
|
+
title: Core Features (Must Have)
|
|
109
|
+
type: bullet-list
|
|
110
|
+
template: "- **{{feature}}:** {{description_and_rationale}}"
|
|
111
|
+
- id: out-of-scope
|
|
112
|
+
title: Out of Scope for MVP
|
|
113
|
+
type: bullet-list
|
|
114
|
+
template: "- {{feature_or_capability}}"
|
|
115
|
+
- id: mvp-success-criteria
|
|
116
|
+
title: MVP Success Criteria
|
|
117
|
+
template: "{{mvp_success_definition}}"
|
|
118
|
+
|
|
119
|
+
- id: post-mvp-vision
|
|
120
|
+
title: Post-MVP Vision
|
|
121
|
+
instruction: Outline the longer-term product direction without overcommitting to specifics
|
|
122
|
+
sections:
|
|
123
|
+
- id: phase-2-features
|
|
124
|
+
title: Phase 2 Features
|
|
125
|
+
template: "{{next_priority_features}}"
|
|
126
|
+
- id: long-term-vision
|
|
127
|
+
title: Long-term Vision
|
|
128
|
+
template: "{{one_two_year_vision}}"
|
|
129
|
+
- id: expansion-opportunities
|
|
130
|
+
title: Expansion Opportunities
|
|
131
|
+
template: "{{potential_expansions}}"
|
|
132
|
+
|
|
133
|
+
- id: technical-considerations
|
|
134
|
+
title: Technical Considerations
|
|
135
|
+
instruction: Document known technical constraints and preferences. Note these are initial thoughts, not final decisions.
|
|
136
|
+
sections:
|
|
137
|
+
- id: platform-requirements
|
|
138
|
+
title: Platform Requirements
|
|
139
|
+
template: |
|
|
140
|
+
- **Target Platforms:** {{platforms}}
|
|
141
|
+
- **Browser/OS Support:** {{specific_requirements}}
|
|
142
|
+
- **Performance Requirements:** {{performance_specs}}
|
|
143
|
+
- id: technology-preferences
|
|
144
|
+
title: Technology Preferences
|
|
145
|
+
template: |
|
|
146
|
+
- **Frontend:** {{frontend_preferences}}
|
|
147
|
+
- **Backend:** {{backend_preferences}}
|
|
148
|
+
- **Database:** {{database_preferences}}
|
|
149
|
+
- **Hosting/Infrastructure:** {{infrastructure_preferences}}
|
|
150
|
+
- id: architecture-considerations
|
|
151
|
+
title: Architecture Considerations
|
|
152
|
+
template: |
|
|
153
|
+
- **Repository Structure:** {{repo_thoughts}}
|
|
154
|
+
- **Service Architecture:** {{service_thoughts}}
|
|
155
|
+
- **Integration Requirements:** {{integration_needs}}
|
|
156
|
+
- **Security/Compliance:** {{security_requirements}}
|
|
157
|
+
|
|
158
|
+
- id: constraints-assumptions
|
|
159
|
+
title: Constraints & Assumptions
|
|
160
|
+
instruction: Clearly state limitations and assumptions to set realistic expectations
|
|
161
|
+
sections:
|
|
162
|
+
- id: constraints
|
|
163
|
+
title: Constraints
|
|
164
|
+
template: |
|
|
165
|
+
- **Budget:** {{budget_info}}
|
|
166
|
+
- **Timeline:** {{timeline_info}}
|
|
167
|
+
- **Resources:** {{resource_info}}
|
|
168
|
+
- **Technical:** {{technical_constraints}}
|
|
169
|
+
- id: key-assumptions
|
|
170
|
+
title: Key Assumptions
|
|
171
|
+
type: bullet-list
|
|
172
|
+
template: "- {{assumption}}"
|
|
173
|
+
|
|
174
|
+
- id: risks-questions
|
|
175
|
+
title: Risks & Open Questions
|
|
176
|
+
instruction: Identify unknowns and potential challenges proactively
|
|
177
|
+
sections:
|
|
178
|
+
- id: key-risks
|
|
179
|
+
title: Key Risks
|
|
180
|
+
type: bullet-list
|
|
181
|
+
template: "- **{{risk}}:** {{description_and_impact}}"
|
|
182
|
+
- id: open-questions
|
|
183
|
+
title: Open Questions
|
|
184
|
+
type: bullet-list
|
|
185
|
+
template: "- {{question}}"
|
|
186
|
+
- id: research-areas
|
|
187
|
+
title: Areas Needing Further Research
|
|
188
|
+
type: bullet-list
|
|
189
|
+
template: "- {{research_topic}}"
|
|
190
|
+
|
|
191
|
+
- id: appendices
|
|
192
|
+
title: Appendices
|
|
193
|
+
sections:
|
|
194
|
+
- id: research-summary
|
|
195
|
+
title: A. Research Summary
|
|
196
|
+
condition: Has research findings
|
|
197
|
+
instruction: |
|
|
198
|
+
If applicable, summarize key findings from:
|
|
199
|
+
- Market research
|
|
200
|
+
- Competitive analysis
|
|
201
|
+
- User interviews
|
|
202
|
+
- Technical feasibility studies
|
|
203
|
+
- id: stakeholder-input
|
|
204
|
+
title: B. Stakeholder Input
|
|
205
|
+
condition: Has stakeholder feedback
|
|
206
|
+
template: "{{stakeholder_feedback}}"
|
|
207
|
+
- id: references
|
|
208
|
+
title: C. References
|
|
209
|
+
template: "{{relevant_links_and_docs}}"
|
|
210
|
+
|
|
211
|
+
- id: next-steps
|
|
212
|
+
title: Next Steps
|
|
213
|
+
sections:
|
|
214
|
+
- id: immediate-actions
|
|
215
|
+
title: Immediate Actions
|
|
216
|
+
type: numbered-list
|
|
217
|
+
template: "{{action_item}}"
|
|
218
|
+
- id: pm-handoff
|
|
219
|
+
title: PM Handoff
|
|
220
|
+
content: |
|
|
221
|
+
This Project Brief provides the full context for {{project_name}}. Please start in 'PRD Generation Mode', review the brief thoroughly to work with the user to create the PRD section by section as the template indicates, asking for any necessary clarification or suggesting improvements.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# {AppName} — project session memory (all harnesses)
|
|
2
|
+
|
|
3
|
+
<!-- This file is COMMITTED (unlike CLAUDE.md, which is gitignored and imports it).
|
|
4
|
+
OpenCode and Codex auto-load AGENTS.md; Claude Code loads it through CLAUDE.md's
|
|
5
|
+
@AGENTS.md import. Keep everything in here harness-neutral — Claude-only
|
|
6
|
+
material (permissions, tool preference) lives in app-claude-md-tmpl.md. -->
|
|
7
|
+
|
|
8
|
+
## Required reading before any code change
|
|
9
|
+
ALWAYS read and follow:
|
|
10
|
+
- **docs/{AppName}-Coding-Standards.md** — strict compliance for every line of code you write or modify.
|
|
11
|
+
- **docs/{AppName}-Architecture.md** — respect module boundaries.
|
|
12
|
+
- **PROJECT-STATUS.md** — for current phase & next-step context.
|
|
13
|
+
|
|
14
|
+
## Hard rules (non-negotiable — the harness enforces #1)
|
|
15
|
+
|
|
16
|
+
1. **Git is manual — agents NEVER run `git` or `gh`.** Not to commit, and not to read (`status`/`log`/`diff`/`grep`/`blame`). All harnesses enforce this mechanically: Claude Code via `.claude/settings.json` and `block-git.sh`; OpenCode via `opencode.jsonc` plus its plugin bridge; Codex via `.codex/rules/techieflow.rules` plus `.codex/hooks.json`. A blocked git call is the policy working, not an obstacle to route around. Evidence for status updates / "what changed" = the checklist Requirements Status table + the working-tree files (+ mtimes) + a fresh `dotnet build` (`.tfcore/tasks/_status-update-gate.md`). The OWNER commits, in a separate terminal.
|
|
17
|
+
2. **Run the app yourself — the test harness is fully set up.** Headless Playwright + Chromium live in WSL; the Windows/MAUI dotnet bridge is rung #4 of the build ladder; MAUI Android/iOS/Mac Catalyst are driven over the Appium bridge (`core-config.yaml → runtimeVerification.appium`). NEVER ask the owner to boot the app, run a build, or execute a command — "can't run on Linux/WSL", "it targets Windows", "it's MAUI", "Playwright needs a GUI", "the dependent service is down" are BANNED excuses (`.tfcore/tasks/_smoke-test-policy.md`). Asking the owner is the LAST resort, only after the build ladder + `verify-phase §3a` escalation genuinely fail — and even then you still run the test yourself once they reply.
|
|
18
|
+
3. **The framework tree is invisible to search — a search that finds nothing is NOT proof a file is missing.** `.tfcore/`, `.claude/`, `.codex/`, `.opencode/` and `.agents/skills/` are hidden dot-directories AND gitignored here (deliberate — deployed framework copies are never committed). File search skips hidden paths *and* honours `.gitignore`, so it takes **both** (`rg -uu`; `--hidden` alone is not enough), and `git grep`/`git ls-files` see nothing at all. Confirm a framework file by **reading its literal path** — every one has a single canonical location, and whatever needs it names that path. Never write "not present in this tree" into a verdict, a checklist Remarks cell, a BRD row, or a blocker without having tried the path and failed: that false negative propagates into the docs and the next agent treats it as fact. If a framework file really is absent, the repo needs `update-framework.sh <repo>` run once on this machine — report that instead of reimplementing what it does. (`.tfcore/tasks/_status-update-gate.md` §"The framework tree is INVISIBLE to search".)
|
|
19
|
+
4. **Native-head automation binds to the app's own window.** Drive a MAUI head only through a session attached to the app under test (Windows: launched PID → its top-level window handle; Android/iOS/Catalyst: the app's package/bundle id), interact element-by-element via `AutomationId`, and NEVER inject global keyboard/mouse input — it lands in whatever window happens to have focus, not the app (`verify-phase.md §3b`).
|
|
20
|
+
|
|
21
|
+
## Project basics
|
|
22
|
+
- Stack: .NET 9, Blazor [Server], TrBlazeUI, [TechieRag if AI features].
|
|
23
|
+
- Field-prefix convention: {obj prefix on instance fields (e.g. `private readonly ILogger<X> objLogger;`) | bare PascalCase, no prefix} — PER-PROJECT day-1 decision; this project's choice is recorded in Coding Standards §"Fields, Parameters, Locals", which is authoritative.
|
|
24
|
+
- Test naming: short PascalCase, NO underscores. Full scenario in XML `<summary>` doc.
|
|
25
|
+
|
|
26
|
+
## Requirement ID prefixes used in this repo
|
|
27
|
+
- `REQ-UI-*` — UI work, routed to /trblazeui
|
|
28
|
+
- `REQ-FN-*` — backend, routed to /flow-master
|
|
29
|
+
- `REQ-RAG-*` — AI/RAG, routed to /techierag
|
|
30
|
+
- `REQ-NFR-*` — non-functional
|
|
31
|
+
|
|
32
|
+
Always tag work with its REQ ID in the checklist's Requirements Status **Remarks** cell (e.g. `[REQ-UI-007] settings form validation added`). Agents never git-commit (Hard rule 1); the owner's own manual commits use the same `[REQ-*]` tags.
|
|
33
|
+
|
|
34
|
+
## Verification
|
|
35
|
+
After every implementation phase, the verifier runs and writes per-REQ verdicts into the
|
|
36
|
+
owning checklist's Requirements Status table (the single source of truth — no dated
|
|
37
|
+
docs/qa files). PROJECT-STATUS.md is updated after EVERY phase (mandatory gate).
|
|
38
|
+
Library issues go in the owning library's feedback file — docs/{AppName}-TrBlazeUI-Feedback.md
|
|
39
|
+
or docs/{AppName}-TechieRag-Feedback.md (one file per library; each goes to its own team) —
|
|
40
|
+
never silently worked around.
|
|
41
|
+
|
|
42
|
+
## Slash-command syntax (READ ME if a `/agent *command` invocation fails)
|
|
43
|
+
|
|
44
|
+
**Codex:** use repository skills such as `$techieflow-build`, `$techieflow-verify`, and `$techieflow-refresh-status`, or ask for the skill by name in plain language. Skills load the canonical `.tfcore/tasks/*.md` workflow. When a task calls for fan-out, delegate to the registered `tf_builder`, `tf_test_writer`, `tf_explorer`, `trblazeui`, or `techierag` Codex role and wait for its result. Defining a role alone does not authorize delegation; the user request or applicable skill must call for it. Project config and hooks require repository trust; review changed hooks with `/hooks`.
|
|
45
|
+
|
|
46
|
+
**Claude Code** registers TechieFlow-native agents under the path-derived namespace `TechieFlow:agents:<name>`. The short `/<agent>` form does NOT always resolve. When in doubt use the full form:
|
|
47
|
+
|
|
48
|
+
| Agent | Claude Code | OpenCode |
|
|
49
|
+
|-------|-------------|----------|
|
|
50
|
+
| analyst | `/TechieFlow:agents:analyst` (or `/analyst` if it resolves) | `/flow-analyst` |
|
|
51
|
+
| architect | `/TechieFlow:agents:architect` | `/flow-architect` |
|
|
52
|
+
| flow-master | `/TechieFlow:agents:flow-master` | `/flow-master` |
|
|
53
|
+
| verifier | `/TechieFlow:agents:verifier` | `/flow-verifier` |
|
|
54
|
+
| trblazeui | `/trblazeui` (NuGet-deployed to `.claude/commands/trblazeui.md`) | `/trblazeui` |
|
|
55
|
+
| techierag | `/techierag` (NuGet-deployed to `.claude/commands/techierag.md`) | `/techierag` |
|
|
56
|
+
|
|
57
|
+
If `/trblazeui` or `/techierag` is missing: run `dotnet build` (the NuGet target writes `.claude/commands/<lib>.md` directly), then restart the harness. Older app repos may instead hold the legacy `.claude/<lib>.md`, which `update-framework.sh` shims forward — but nothing creates that legacy path in a current app, so never treat its absence as "the library is not deployed". Resolve a persona as `.claude/commands/<lib>.md` → `.claude/<lib>.md` → `.<lib>/<Lib>-AI-Reference.md`.
|
|
58
|
+
|
|
59
|
+
Under Claude Code, if `/flow-master *render-workflow-docs <App>` returns "Unknown command", use `/TechieFlow:agents:flow-master *render-workflow-docs <App>` instead. (Under OpenCode `/flow-master` is the registered agent name — there is no fuller form to fall back to.)
|
|
60
|
+
|
|
61
|
+
After the agent is loaded, every TechieFlow-native agent (analyst, architect, flow-master, verifier) accepts `*command args` style invocations. trblazeui and techierag are free-form personas — normally `flow-master *build-phase <App>` calls them as sub-agents, but you can also drive them directly with prompts like `Implement REQ-UI-* from docs/<App>-Checklist.md to match the mockups in docs/mockups/.`
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# {AppName} — Architecture
|
|
2
|
+
|
|
3
|
+
**Last updated:** {YYYY-MM-DD}
|
|
4
|
+
**Status:** Current (brownfield) | Target (greenfield) | Current + planned target (brownfield with structural change)
|
|
5
|
+
|
|
6
|
+
<!-- AGENT-ONLY AUTHORING NOTES. Everything in this comment is an instruction to the DRAFTING
|
|
7
|
+
AGENT, not content for the document's human reader. Carry it into the generated document
|
|
8
|
+
ONLY as this HTML comment (or drop it entirely) — NEVER as visible text: the owner reads
|
|
9
|
+
the rendered HTML and must not see authoring instructions (generate-html.md strips any
|
|
10
|
+
that leaked from older templates).
|
|
11
|
+
|
|
12
|
+
DEPTH MANDATE: this is a HUMAN document, read as rendered HTML. Module rows in §4 with
|
|
13
|
+
non-trivial behavior get a prose paragraph beneath the table, and every significant runtime
|
|
14
|
+
flow beyond §3's primary path (background jobs, ingestion pipelines, auth handshakes,
|
|
15
|
+
external-API round-trips) gets its own sequenceDiagram/flowchart. When harvesting source
|
|
16
|
+
docs, preserve their architecture content — superset, never summary.
|
|
17
|
+
|
|
18
|
+
MERMAID MANDATE: every diagram MUST follow the authoring rules in
|
|
19
|
+
.tfcore/templates/v4custom/html-render-shell.md §5.5 — quote every node/edge/subgraph label
|
|
20
|
+
(API["ASP.NET API (v2)"], not API[ASP.NET API (v2)]) and never use `end` as a node id.
|
|
21
|
+
Unquoted special characters ( ( ) / & : , … ) in flowchart labels are the #1 cause of
|
|
22
|
+
"Syntax error" diagrams in the rendered HTML.
|
|
23
|
+
-->
|
|
24
|
+
|
|
25
|
+
## Table of Contents
|
|
26
|
+
|
|
27
|
+
<!-- Auto-maintained by the analyst/day-1 tasks. Use the slug rule from .tfcore/templates/v4custom/html-render-shell.md §1 so links work in both MD and rendered HTML. Update this list whenever you add/rename a section. -->
|
|
28
|
+
|
|
29
|
+
1. [Tech stack](#tech-stack)
|
|
30
|
+
2. [Component map](#component-map)
|
|
31
|
+
3. [Data flow — primary path](#data-flow-primary-path)
|
|
32
|
+
4. [Module responsibilities](#module-responsibilities)
|
|
33
|
+
5. [Cross-cutting concerns](#cross-cutting-concerns)
|
|
34
|
+
6. [Deployment architecture](#deployment-architecture)
|
|
35
|
+
7. [Architectural decisions (ADR-style log)](#architectural-decisions-adr-style-log)
|
|
36
|
+
8. [Target architecture (brownfield only — if enhancement changes structure)](#target-architecture-brownfield-only-if-enhancement-changes-structure)
|
|
37
|
+
9. [Open questions / risks](#open-questions-risks)
|
|
38
|
+
|
|
39
|
+
## 1. Tech stack
|
|
40
|
+
| Layer | Choice | Version | Notes |
|
|
41
|
+
|-------|--------|---------|-------|
|
|
42
|
+
| Runtime | .NET 9 | … | … |
|
|
43
|
+
| UI | Blazor [Server/WASM/Auto] + TrBlazeUI | … | … |
|
|
44
|
+
| AI/RAG | TechieRag | … | If applicable |
|
|
45
|
+
| DB | SQL Server / SQLite / Postgres | … | … |
|
|
46
|
+
| Vector store | SqliteVec / PgVector / Qdrant | … | If RAG |
|
|
47
|
+
| Auth | … | … | … |
|
|
48
|
+
|
|
49
|
+
## 2. Component map
|
|
50
|
+
```mermaid
|
|
51
|
+
flowchart TB
|
|
52
|
+
subgraph UI["Blazor UI"]
|
|
53
|
+
Dash["Dashboard"]
|
|
54
|
+
Settings["Settings"]
|
|
55
|
+
end
|
|
56
|
+
subgraph BE["Backend"]
|
|
57
|
+
API["API"]
|
|
58
|
+
Auth["Auth"]
|
|
59
|
+
Rag["RAG service"]
|
|
60
|
+
end
|
|
61
|
+
subgraph Data["Data"]
|
|
62
|
+
SQL[("SQL")]
|
|
63
|
+
Vec[("Vector")]
|
|
64
|
+
end
|
|
65
|
+
UI --> API
|
|
66
|
+
API --> Auth
|
|
67
|
+
API --> Rag
|
|
68
|
+
Rag --> Vec
|
|
69
|
+
API --> SQL
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## 3. Data flow — primary path
|
|
73
|
+
```mermaid
|
|
74
|
+
sequenceDiagram
|
|
75
|
+
actor U
|
|
76
|
+
participant UI
|
|
77
|
+
participant API
|
|
78
|
+
participant Svc as Service
|
|
79
|
+
participant DB
|
|
80
|
+
U->>UI: action
|
|
81
|
+
UI->>API: HTTPS
|
|
82
|
+
API->>Svc: call
|
|
83
|
+
Svc->>DB: query
|
|
84
|
+
DB-->>Svc: rows
|
|
85
|
+
Svc-->>API: dto
|
|
86
|
+
API-->>UI: json
|
|
87
|
+
UI-->>U: render
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## 4. Module responsibilities
|
|
91
|
+
| Module | Responsibility | Depends on |
|
|
92
|
+
|--------|----------------|------------|
|
|
93
|
+
| `src/{AppName}.Web` | UI host | Domain, Infra |
|
|
94
|
+
| `src/{AppName}.Domain` | Entities, business rules | (none) |
|
|
95
|
+
| `src/{AppName}.Infrastructure` | EF, external services | Domain |
|
|
96
|
+
| `src/{AppName}.Rag` | TechieRag wiring (if applicable) | Domain |
|
|
97
|
+
|
|
98
|
+
## 5. Cross-cutting concerns
|
|
99
|
+
- Logging — Serilog file-based logging (rolling file sink under `logs/`, wired at startup in EVERY executable head — web, API, MAUI, desktop, console; app code logs via `ILogger<T>`). This is a TechieFlow standing requirement, not a per-app choice — see Coding Standards §Logging.
|
|
100
|
+
- Error handling — global middleware; ProblemDetails responses
|
|
101
|
+
- Auth — JWT / cookie / Azure AD
|
|
102
|
+
- Caching — IMemoryCache / Redis
|
|
103
|
+
- Telemetry — OpenTelemetry / Application Insights
|
|
104
|
+
|
|
105
|
+
## 6. Deployment architecture
|
|
106
|
+
```mermaid
|
|
107
|
+
flowchart LR
|
|
108
|
+
Dev["Dev"] --> CI["GitHub Actions"]
|
|
109
|
+
CI --> Reg["Container Reg"]
|
|
110
|
+
Reg --> AKS["Azure App Service / AKS"]
|
|
111
|
+
AKS --> ProdDB[("SQL")]
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## 7. Architectural decisions (ADR-style log)
|
|
115
|
+
- **ADR-001 — <decision>.** Reason: …
|
|
116
|
+
- **ADR-002 — <decision>.** Reason: …
|
|
117
|
+
|
|
118
|
+
## 8. Target architecture (brownfield only — if enhancement changes structure)
|
|
119
|
+
```mermaid
|
|
120
|
+
flowchart TB
|
|
121
|
+
Existing["existing module"] --> New["new / changed module"]
|
|
122
|
+
New --> Removed["removed box (struck through in prose)"]
|
|
123
|
+
```
|
|
124
|
+
Describe deltas: what's added, what's removed, what's renamed, migration path.
|
|
125
|
+
|
|
126
|
+
## 9. Open questions / risks
|
|
127
|
+
- …
|