@techierathore/techieflow 1.0.2 → 1.0.4

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.
Files changed (204) hide show
  1. package/.claude/commands/TechieFlow/agents/analyst.md +5 -13
  2. package/.claude/commands/TechieFlow/agents/architect.md +1 -16
  3. package/.claude/commands/TechieFlow/agents/flow-master.md +42 -215
  4. package/.claude/commands/TechieFlow/agents/verifier.md +24 -64
  5. package/.claude/commands/TechieFlow/tasks/_metrics-emit-gate.md +24 -117
  6. package/.claude/commands/TechieFlow/tasks/_owner-language.md +26 -0
  7. package/.claude/commands/TechieFlow/tasks/_smoke-test-policy.md +20 -84
  8. package/.claude/commands/TechieFlow/tasks/_status-update-gate.md +10 -74
  9. package/.claude/commands/TechieFlow/tasks/_yolo-mode.md +20 -58
  10. package/.claude/commands/TechieFlow/tasks/amend-docs.md +21 -143
  11. package/.claude/commands/TechieFlow/tasks/build-phase.md +14 -224
  12. package/.claude/commands/TechieFlow/tasks/create-deep-research-prompt.md +4 -0
  13. package/.claude/commands/TechieFlow/tasks/create-doc.md +4 -0
  14. package/.claude/commands/TechieFlow/tasks/create-project-brief.md +22 -0
  15. package/.claude/commands/TechieFlow/tasks/day1-brownfield.md +31 -505
  16. package/.claude/commands/TechieFlow/tasks/day1-greenfield.md +28 -213
  17. package/.claude/commands/TechieFlow/tasks/deploy-checklist.md +19 -0
  18. package/.claude/commands/TechieFlow/tasks/devguide.md +10 -219
  19. package/.claude/commands/TechieFlow/tasks/facilitate-brainstorming-session.md +4 -0
  20. package/.claude/commands/TechieFlow/tasks/fix-issues.md +10 -129
  21. package/.claude/commands/TechieFlow/tasks/generate-html.md +5 -1
  22. package/.claude/commands/TechieFlow/tasks/handoff-phase.md +18 -16
  23. package/.claude/commands/TechieFlow/tasks/log-miss.md +19 -158
  24. package/.claude/commands/TechieFlow/tasks/metrics-report.md +3 -1
  25. package/.claude/commands/TechieFlow/tasks/mockups.md +12 -117
  26. package/.claude/commands/TechieFlow/tasks/refresh-status.md +9 -130
  27. package/.claude/commands/TechieFlow/tasks/split-brd.md +10 -126
  28. package/.claude/commands/TechieFlow/tasks/triage-and-fix.md +14 -0
  29. package/.claude/commands/TechieFlow/tasks/triage-issues.md +11 -152
  30. package/.claude/commands/TechieFlow/tasks/verify-phase.md +36 -572
  31. package/.opencode/plugin/techieflow.js +40 -13
  32. package/.tfcore/agents/analyst.md +5 -13
  33. package/.tfcore/agents/architect.md +1 -16
  34. package/.tfcore/agents/flow-master.md +42 -215
  35. package/.tfcore/agents/verifier.md +24 -64
  36. package/.tfcore/core-config.yaml +10 -0
  37. package/.tfcore/hooks/block-git.sh +4 -4
  38. package/.tfcore/hooks/guard-artifacts.sh +2 -2
  39. package/.tfcore/hooks/guard-build.sh +76 -0
  40. package/.tfcore/hooks/guard-db.sh +90 -0
  41. package/.tfcore/hooks/guard-metrics.sh +68 -0
  42. package/.tfcore/hooks/guard-status-html.sh +116 -71
  43. package/.tfcore/hooks/guard-status.sh +43 -16
  44. package/.tfcore/hooks/guard-verify-deps.sh +124 -0
  45. package/.tfcore/hooks/guard-verify.sh +70 -48
  46. package/.tfcore/hooks/sweep-artifacts.sh +2 -2
  47. package/.tfcore/install-manifest.yaml +0 -18
  48. package/.tfcore/routing.yaml +86 -14
  49. package/.tfcore/standards/coding-standards-core.md +61 -0
  50. package/.tfcore/standards/coding-standards-dotnet.md +93 -0
  51. package/.tfcore/tasks/_metrics-emit-gate.md +24 -117
  52. package/.tfcore/tasks/_owner-language.md +26 -0
  53. package/.tfcore/tasks/_smoke-test-policy.md +20 -84
  54. package/.tfcore/tasks/_status-update-gate.md +10 -74
  55. package/.tfcore/tasks/_yolo-mode.md +20 -58
  56. package/.tfcore/tasks/amend-docs.md +21 -143
  57. package/.tfcore/tasks/build-phase.md +14 -224
  58. package/.tfcore/tasks/create-deep-research-prompt.md +4 -0
  59. package/.tfcore/tasks/create-doc.md +4 -0
  60. package/.tfcore/tasks/create-project-brief.md +22 -0
  61. package/.tfcore/tasks/day1-brownfield.md +31 -505
  62. package/.tfcore/tasks/day1-greenfield.md +28 -213
  63. package/.tfcore/tasks/deploy-checklist.md +19 -0
  64. package/.tfcore/tasks/devguide.md +10 -219
  65. package/.tfcore/tasks/facilitate-brainstorming-session.md +4 -0
  66. package/.tfcore/tasks/fix-issues.md +10 -129
  67. package/.tfcore/tasks/generate-html.md +5 -1
  68. package/.tfcore/tasks/handoff-phase.md +18 -16
  69. package/.tfcore/tasks/log-miss.md +19 -158
  70. package/.tfcore/tasks/metrics-report.md +3 -1
  71. package/.tfcore/tasks/mockups.md +12 -117
  72. package/.tfcore/tasks/refresh-status.md +9 -130
  73. package/.tfcore/tasks/split-brd.md +10 -126
  74. package/.tfcore/tasks/triage-and-fix.md +14 -0
  75. package/.tfcore/tasks/triage-issues.md +11 -152
  76. package/.tfcore/tasks/verify-phase.md +36 -572
  77. package/.tfcore/telemetry/SCHEMA.md +100 -8
  78. package/.tfcore/telemetry/tf-metrics.sh +564 -32
  79. package/.tfcore/templates/stack-defaults/dotnet.md +35 -0
  80. package/.tfcore/templates/stack-questions.md +77 -0
  81. package/.tfcore/templates/v4custom/app-agents-md-tmpl.md +3 -4
  82. package/.tfcore/templates/v4custom/app-architecture-tmpl.md +107 -115
  83. package/.tfcore/templates/v4custom/app-brd-tmpl.md +108 -184
  84. package/.tfcore/templates/v4custom/app-brief-tmpl.md +65 -0
  85. package/.tfcore/templates/v4custom/app-checklist-tmpl.md +48 -73
  86. package/.tfcore/templates/v4custom/app-claude-md-tmpl.md +1 -1
  87. package/.tfcore/templates/v4custom/app-coding-standards-tmpl.md +52 -0
  88. package/.tfcore/templates/v4custom/app-decision-request-tmpl.md +85 -0
  89. package/.tfcore/templates/v4custom/app-deployment-checklist-tmpl.md +86 -0
  90. package/.tfcore/templates/v4custom/app-devguide-tmpl.md +69 -146
  91. package/.tfcore/templates/v4custom/app-library-feedback-tmpl.md +86 -31
  92. package/.tfcore/templates/v4custom/app-phases-tmpl.md +35 -0
  93. package/.tfcore/templates/v4custom/app-productguide-tmpl.md +38 -35
  94. package/.tfcore/templates/v4custom/app-project-status-tmpl.md +63 -73
  95. package/.tfcore/templates/v4custom/app-uidesign-tmpl.md +62 -37
  96. package/.tfcore/templates/v4custom/app-usageguide-tmpl.md +69 -54
  97. package/.tfcore/templates/v4custom/build-invocation-ladder.md +17 -180
  98. package/.tfcore/templates/v4custom/build-subagent-prompt.md +17 -0
  99. package/.tfcore/templates/v4custom/html-render-shell.md +1 -1
  100. package/.tfcore/templates/v4custom/metrics-report-template.md +2 -2
  101. package/.tfcore/user-guide.md +0 -23
  102. package/.tfcore/utils/__pycache__/tf-brd-status.cpython-312.pyc +0 -0
  103. package/.tfcore/utils/__pycache__/tf-checklist-edit.cpython-312.pyc +0 -0
  104. package/.tfcore/utils/__pycache__/tf-codex-bind.cpython-312.pyc +0 -0
  105. package/.tfcore/utils/__pycache__/tf-codex-telemetry.cpython-312.pyc +0 -0
  106. package/.tfcore/utils/__pycache__/tf-day1-files.cpython-312.pyc +0 -0
  107. package/.tfcore/utils/__pycache__/tf-devguide-list.cpython-312.pyc +0 -0
  108. package/.tfcore/utils/__pycache__/tf-doc-check.cpython-312.pyc +0 -0
  109. package/.tfcore/utils/__pycache__/tf-log-miss.cpython-312.pyc +0 -0
  110. package/.tfcore/utils/__pycache__/tf-misses-md.cpython-312.pyc +0 -0
  111. package/.tfcore/utils/__pycache__/tf-mockups-locate.cpython-312.pyc +0 -0
  112. package/.tfcore/utils/__pycache__/tf-opencode-audit.cpython-312.pyc +0 -0
  113. package/.tfcore/utils/__pycache__/tf-perf-grade.cpython-312.pyc +0 -0
  114. package/.tfcore/utils/__pycache__/tf-render-html.cpython-312.pyc +0 -0
  115. package/.tfcore/utils/__pycache__/tf-split-brd.cpython-312.pyc +0 -0
  116. package/.tfcore/utils/__pycache__/tf-status-facts.cpython-312.pyc +0 -0
  117. package/.tfcore/utils/__pycache__/tf-triage.cpython-312.pyc +0 -0
  118. package/.tfcore/utils/__pycache__/tf-verify-list.cpython-312.pyc +0 -0
  119. package/.tfcore/utils/__pycache__/tf-verify-verdict.cpython-312.pyc +0 -0
  120. package/.tfcore/utils/tf-brd-status.py +176 -0
  121. package/.tfcore/utils/tf-brd-status.sh +19 -0
  122. package/.tfcore/utils/tf-build-list.py +211 -0
  123. package/.tfcore/utils/tf-build-list.sh +21 -0
  124. package/.tfcore/utils/tf-build.sh +143 -0
  125. package/.tfcore/utils/tf-cdp-relay.ps1 +64 -0
  126. package/.tfcore/utils/tf-checklist-edit.py +133 -0
  127. package/.tfcore/utils/tf-day1-files.py +208 -0
  128. package/.tfcore/utils/tf-day1-files.sh +20 -0
  129. package/.tfcore/utils/tf-devguide-list.py +249 -0
  130. package/.tfcore/utils/tf-devguide-list.sh +18 -0
  131. package/.tfcore/utils/tf-doc-check.py +1369 -0
  132. package/.tfcore/utils/tf-doc-check.sh +29 -0
  133. package/.tfcore/utils/tf-emit.sh +545 -18
  134. package/.tfcore/utils/tf-fix-close.sh +115 -0
  135. package/.tfcore/utils/tf-gitignore-audit.sh +50 -3
  136. package/.tfcore/utils/tf-goal.sh +284 -66
  137. package/.tfcore/utils/tf-harness.sh +4 -9
  138. package/.tfcore/utils/tf-log-miss.py +197 -0
  139. package/.tfcore/utils/tf-log-miss.sh +14 -0
  140. package/.tfcore/utils/tf-misses-md.py +208 -0
  141. package/.tfcore/utils/tf-misses-md.sh +14 -0
  142. package/.tfcore/utils/tf-mockups-locate.py +66 -0
  143. package/.tfcore/utils/tf-mockups-locate.sh +18 -0
  144. package/.tfcore/utils/tf-model-pick.sh +475 -0
  145. package/.tfcore/utils/tf-opencode-audit.py +23 -7
  146. package/.tfcore/utils/tf-perf-grade.py +97 -0
  147. package/.tfcore/utils/tf-perf-grade.sh +12 -0
  148. package/.tfcore/utils/tf-phase.sh +92 -0
  149. package/.tfcore/utils/tf-render-html.py +20 -0
  150. package/.tfcore/utils/tf-routing-bind.sh +97 -6
  151. package/.tfcore/utils/tf-routing.sh +13 -7
  152. package/.tfcore/utils/tf-selfcheck.sh +323 -0
  153. package/.tfcore/utils/tf-split-brd.py +309 -0
  154. package/.tfcore/utils/tf-split-brd.sh +22 -0
  155. package/.tfcore/utils/tf-status-evidence.sh +68 -0
  156. package/.tfcore/utils/tf-status-facts.py +358 -0
  157. package/.tfcore/utils/tf-status-facts.sh +20 -0
  158. package/.tfcore/utils/tf-triage.py +243 -0
  159. package/.tfcore/utils/tf-triage.sh +16 -0
  160. package/.tfcore/utils/tf-verify-boot.sh +250 -0
  161. package/.tfcore/utils/tf-verify-emit.sh +110 -0
  162. package/.tfcore/utils/tf-verify-env.sh +88 -0
  163. package/.tfcore/utils/tf-verify-list.py +270 -0
  164. package/.tfcore/utils/tf-verify-list.sh +13 -0
  165. package/.tfcore/utils/tf-verify-screens.mjs +355 -0
  166. package/.tfcore/utils/tf-verify-screens.sh +31 -0
  167. package/.tfcore/utils/tf-verify-tests.sh +166 -0
  168. package/.tfcore/utils/tf-verify-verdict.py +292 -0
  169. package/.tfcore/utils/tf-verify-verdict.sh +15 -0
  170. package/.tfcore/utils/tf-yolo.sh +59 -0
  171. package/README.md +120 -1145
  172. package/docs/TechieFlow-Installation.md +1 -5
  173. package/opencode.jsonc +37 -33
  174. package/package.json +1 -5
  175. package/scripts/install.mjs +56 -46
  176. package/.claude/commands/TechieFlow/tasks/advanced-elicitation.md +0 -117
  177. package/.claude/commands/TechieFlow/tasks/author-brd.md +0 -79
  178. package/.claude/commands/TechieFlow/tasks/document-project.md +0 -343
  179. package/.claude/commands/TechieFlow/tasks/execute-checklist.md +0 -86
  180. package/.claude/commands/TechieFlow/tasks/index-docs.md +0 -173
  181. package/.claude/commands/TechieFlow/tasks/kb-mode-interaction.md +0 -75
  182. package/.claude/commands/TechieFlow/tasks/shard-doc.md +0 -185
  183. package/.codex/config.toml +0 -46
  184. package/.codex/hooks.json +0 -63
  185. package/.codex/rules/techieflow.rules +0 -8
  186. package/.tfcore/hooks/codex-adapter.py +0 -248
  187. package/.tfcore/tasks/advanced-elicitation.md +0 -117
  188. package/.tfcore/tasks/author-brd.md +0 -79
  189. package/.tfcore/tasks/document-project.md +0 -343
  190. package/.tfcore/tasks/execute-checklist.md +0 -86
  191. package/.tfcore/tasks/index-docs.md +0 -173
  192. package/.tfcore/tasks/kb-mode-interaction.md +0 -75
  193. package/.tfcore/tasks/shard-doc.md +0 -185
  194. package/.tfcore/templates/architecture-tmpl.yaml +0 -650
  195. package/.tfcore/templates/brownfield-architecture-tmpl.yaml +0 -476
  196. package/.tfcore/templates/competitor-analysis-tmpl.yaml +0 -306
  197. package/.tfcore/templates/front-end-architecture-tmpl.yaml +0 -218
  198. package/.tfcore/templates/fullstack-architecture-tmpl.yaml +0 -823
  199. package/.tfcore/templates/market-research-tmpl.yaml +0 -252
  200. package/.tfcore/templates/project-brief-tmpl.yaml +0 -221
  201. package/.tfcore/utils/techieflow-doc-template.md +0 -325
  202. package/.tfcore/utils/tf-codex-bind.py +0 -196
  203. package/.tfcore/utils/tf-codex-telemetry.py +0 -60
  204. package/WORKFLOW.html +0 -1986
@@ -1,54 +1,57 @@
1
- # {AppName} — Product Guide
2
-
3
- > **Audience: end users (not developers).** This is the how-to-use-the-app manual — task-oriented, screenshot-illustrated, plain language. It explains *what each screen is for* and *how to do each thing*, not how the code works (that's the DevGuide). It is a HUMAN document → always written as markdown AND rendered to HTML.
4
-
5
- ## Table of Contents
6
-
7
- <!-- Auto-maintained. Slug rule: .tfcore/templates/v4custom/html-render-shell.md §1. List each `## <Role/Area>` and its `### <Feature/Screen>` sub-entries. -->
8
-
9
- 1. [Welcome](#welcome)
10
- 2. [Getting started](#getting-started)
11
- 3. [Roles at a glance](#roles-at-a-glance)
12
- 4. [Using {AppName}](#using-appname)
1
+ <!-- tf-schema
2
+ doc: productguide
3
+ file: docs/{App}-ProductGuide.md
4
+ header: App, Size, Date
5
+ section: Welcome | required | max 150
6
+ section: Getting started | required
7
+ section: Roles at a glance | optional
8
+ section: Using* | required
9
+ section: Troubleshooting | optional
10
+ entries: Using* |
11
+ rule: entry-steps
12
+ rule: entry-screenshot
13
+ budget: S 2500 3500 | M 4500 6500 | L 4500 6500
14
+ -->
15
+ <!-- Authoring notes (agent only; never visible text).
16
+ The end user's manual: plain language, task by task, one real screenshot per task, no code and no
17
+ requirement ids. "Roles at a glance" only when there is more than one role. The Using section is
18
+ titled "Using {App}"; one `###` per task in the order a user meets them. -->
19
+
20
+ # {App} — Product Guide
21
+
22
+ | | |
23
+ |---|---|
24
+ | App | {App} |
25
+ | Size | Small, Medium or Large |
26
+ | Date | {YYYY-MM-DD} |
13
27
 
14
28
  ## Welcome
15
29
 
16
- <one short paragraph: what {AppName} is and who it's for, in product language drawn from the BRD §1/§9 — no jargon, no architecture.>
30
+ {What it does and who it is for, at most 150 words.}
17
31
 
18
32
  ## Getting started
19
33
 
20
- - **Sign in:** {how to reach the app + log in; the sign-in screen with its screenshot}.
21
- - **What you'll see first:** {the landing screen per role — keep it accurate to the real post-login landing, the same one the DevGuide's LANDING-TRUTH established}.
34
+ 1. {Open … and sign in.}
35
+ 2. {What you see first.}
22
36
 
23
- ![Sign in](./screenshots/{AppName}/{anon}-login.png)
37
+ ![Sign in](screenshots/{App}/login.png)
24
38
 
25
39
  ## Roles at a glance
26
40
 
27
- <one row per user role/persona, plain-language "what this role can do" — derived from the BRD personas + the DevGuide's role→menu map.>
28
-
29
41
  | Role | What you can do |
30
- |------|-----------------|
42
+ |---|---|
31
43
  | {Role} | {one line} |
32
44
 
33
- ## Using {AppName}
34
-
35
- <!-- One `## {Role or Area}` section, then one `### {Feature / Screen}` block per screen, in the order a
36
- user would naturally use them (navigation order from the DevGuide's menu map). Each block is
37
- task-oriented and carries the REAL screenshot captured by the DevGuide OBSERVE pass. For a large
38
- app this section is split per role into docs/productguides/ (see the task). -->
39
-
40
- ### {Feature / Screen name}
45
+ ## Using {App}
41
46
 
42
- **What it's for:** {one or two plain sentences — the user benefit, from the BRD feature catalog.}
47
+ ### {Task name}
43
48
 
44
- **How to use it:**
45
- 1. {step — what the user clicks/enters}
49
+ 1. {step}
46
50
  2. {step}
47
- 3. {what they should see / the result}
51
+ 3. {what you should see}
48
52
 
49
- ![{Screen name}](./screenshots/{AppName}/{role}-{screen-slug}.png)
53
+ ![{Task name}](screenshots/{App}/{screen-slug}.png)
50
54
 
51
- **Tips & notes:** {gotchas, limits, anything from the UsageGuide's known-limitations that a user should know — plain language, no defect IDs.}
55
+ ## Troubleshooting
52
56
 
53
- <!-- Repeat the ### block for every user-facing screen/feature. Omit purely internal/admin-plumbing
54
- screens that an external user never touches, unless the role section is the admin guide. -->
57
+ - {problem}: {what to do}
@@ -1,98 +1,88 @@
1
+ <!-- tf-schema
2
+ doc: project-status
3
+ file: PROJECT-STATUS.md
4
+ header: project, last_updated, current_phase, last_verified_build, last_verified_date
5
+ section: Where I am | required | max 80
6
+ section: Next command to run | required | max 60
7
+ section: Open requirements | required | max 200
8
+ section: Known blockers | required | max 150
9
+ section: Verification log | required | max 250
10
+ section: Library feedback summary | required | max 60
11
+ section: Standards compliance | required | max 60
12
+ section: Deferred / future | required | max 100
13
+ max-lines: 120
14
+ target-lines: 60
15
+ rule: next-command-blocks
16
+ rule: verification-log
17
+ rule: open-requirements-max-10
18
+ -->
19
+ <!-- Authoring notes (agent only; never visible text).
20
+ A one-page snapshot of the CURRENT state, overwritten in place, never appended to. Exactly the
21
+ eight sections above, in this order, with their word limits; guard-status.sh refuses any other
22
+ heading and any write over 120 lines; tf-doc-check.sh refuses over-long sections. What a run did
23
+ is not written here: a run adds ONE Verification-log row (at most five kept) and updates the
24
+ checklist Remarks; the rest lives in the telemetry streams.
25
+ Next command to run: exactly two code blocks, one line each, labelled Claude Code then OpenCode,
26
+ so either can be copied on its own. No prose about the technical work. -->
27
+
1
28
  ---
2
- project: {AppName}
3
- stack: .NET 9 / Blazor [Server|WASM|Auto] / TrBlazeUI / TechieRag / [MAUI]
29
+ project: {App}
4
30
  last_updated: {YYYY-MM-DD}
5
- current_phase: Discovery | UI build | UI verify | Functional build | Functional verify | Handoff | Released
6
- last_verified_build: PASS | FAIL | not-run
31
+ current_phase: {Day-1 | Build | Verify | UAT | Handoff | Released} — {at most a half-line qualifier}
32
+ last_verified_build: {PASS | FAIL | not-run}
7
33
  last_verified_date: {YYYY-MM-DD}
8
34
  ---
9
35
 
10
- # {AppName} — Status
11
-
12
- <!--
13
- ============================================================================
14
- THIS FILE IS A CRISP, FIXED-SHAPE SNAPSHOT — OVERWRITE IT, NEVER APPEND TO IT.
15
- It has exactly the sections below and NO others. It should stay well under
16
- ~60 lines — a human reads it in ten seconds.
17
-
18
- When you update status you REPLACE the content of these sections in place.
19
- Do NOT add a new dated section per run. The following are BANNED (they are
20
- what turns this file into an unreadable 280-line append-log):
21
- - A per-run prose H2 like "## *verify all — formal coverage matrix (DATE)",
22
- "## *fix-issues — …", "## *build-phase — …". A run records its outcome as
23
- ONE row in "## Verification log" + updated Remarks IN THE CHECKLIST. Period.
24
- - A paragraph crammed into `current_phase:` or "## Where I am". `current_phase`
25
- is ONE short line. The blow-by-blow lives in the checklist Remarks + .verify/.
26
- See .tfcore/tasks/_status-update-gate.md §"CRISP, FIXED-SHAPE snapshot".
27
- ENFORCED MECHANICALLY: the .tfcore/hooks/guard-status.sh PreToolUse hook
28
- BLOCKS any write that adds a non-template H2, a command-run heading, a
29
- paragraph current_phase, or a file longer than ~120 lines.
30
- ============================================================================
31
- -->
36
+ # {App} — Status
32
37
 
33
38
  ## Where I am
34
- <one short paragraph — the current STATE only: which phase, what is built/verified, what is open.
35
- This is a status snapshot, NOT a technical to-do list. Do not narrate the implementation work
36
- still to be done (how to wire a service, fix a binding, etc.) — that lives in the checklist REQ rows.>
39
+
40
+ {At most 80 words: which phase, what is built and verified, what is open. State, not story.}
37
41
 
38
42
  ## Next command to run
39
- <!--
40
- Express the next step ONLY as a command pointed at a checklist/scope. NOT a prose description of
41
- the technical work. The "what to do" already lives in the checklist's REQ rows — here we just say
42
- WHICH COMMAND to run against WHICH checklist/REQs. At most one line naming the target checklist or
43
- REQ IDs may accompany the command block.
44
-
45
- GOOD:
46
- ```
47
- /TechieFlow:agents:verifier *verify ui (OpenCode: /flow-verifier *verify ui)
48
- ```
49
- Resumes FAILed REQ-UI-007, REQ-UI-012 in docs/{AppName}-Checklist.md.
50
-
51
- BAD (do not do this — technical narrative belongs in the checklist, not here):
52
- Next, wire the AstroData service into the dashboard, fix the empty ruling-planet
53
- table binding, add validation to the onboarding form, then re-run verification...
54
- -->
43
+
44
+ Claude Code:
45
+ ```
46
+ /TechieFlow:agents:flow-master *build-phase {App}
47
+ ```
48
+ OpenCode:
55
49
  ```
56
- /<agent> <exact prompt> (OpenCode: <exact prompt>)
50
+ /flow-master *build-phase {App}
57
51
  ```
58
- <one optional line naming the target checklist or REQ IDs>
52
+ {Optional one line naming the target REQ ids.}
59
53
 
60
54
  ## Open requirements
61
- - [ ] REQ-UI-013 — <desc>
62
- - [ ] REQ-FN-007 — <desc>
55
+
56
+ | Status | Count |
57
+ |---|---|
58
+ | Not Started | {n} |
59
+ | In Progress | {n} |
60
+ | Implemented | {n} |
61
+ | Needs re-verify | {n} |
62
+ | Blocked | {n} |
63
+
64
+ - [ ] REQ-UI-001 — {short name} (at most ten named rows)
63
65
 
64
66
  ## Known blockers
65
- - None / <list>
66
- <!--
67
- Known blockers are PROJECT-level issues — broken code, missing tests, real compile errors, hardcoded secrets, etc.
68
- They are NOT environment / wrong-rung issues. Banned entries (these go in WORKFLOW.html §0 territory, not here):
69
- - "MAUI build cannot run on WSL"
70
- - "NETSDK1178 — iOS/Android/MacCatalyst workload missing"
71
- - "Microsoft.iOS.Sdk / Microsoft.Android.Sdk / Microsoft.MacCatalyst.Sdk missing"
72
- - "dotnet not in PATH"
73
- - Anything that means "I used the wrong build invocation ladder rung"
74
- If you wrote one of those, you skipped .tfcore/templates/v4custom/build-invocation-ladder.md.
75
- Switch rungs and rebuild.
76
- -->
77
67
 
68
+ - None
78
69
 
79
70
  ## Verification log
80
- <!-- Status detail lives in the checklist's "Requirements Status" table (the single
81
- source of truth). This log is just a dated index of verification passes. -->
71
+
72
+ Last five passes; older passes live in `docs/metrics/gates.jsonl`.
73
+
82
74
  | Date | Phase | Result | Status table |
83
- |------|-------|--------|--------------|
84
- | {YYYY-MM-DD} | UI verify | 14/14 Verified | docs/{AppName}-Checklist.md#requirements-status |
75
+ |---|---|---|---|
76
+ | {YYYY-MM-DD} | {verify all} | {14/14 Verified} | docs/{App}-Checklist.md#requirements-status |
85
77
 
86
78
  ## Library feedback summary
87
- - TrBlazeUI: 0 major, 0 minor — docs/{AppName}-TrBlazeUI-Feedback.md
88
- - TechieRag: 0 major, 0 minor — docs/{AppName}-TechieRag-Feedback.md
89
79
 
90
- <!-- One feedback file PER library (separate teams). Files are created on first issue. -->
80
+ - {Library}: {n} open — docs/{App}-{Library}-Feedback.md
81
+
82
+ ## Standards compliance
91
83
 
92
- ## Standards compliance (last verifier check)
93
- - Underscore fields: not yet run
94
- - Test method underscores: not yet run
95
- - Mis-prefixed fields: not yet run
84
+ - Last check {YYYY-MM-DD}: {n} findings, see the checklist Remarks.
96
85
 
97
86
  ## Deferred / future
98
- - <parked ideas>
87
+
88
+ - {parked ideas, one line each}
@@ -1,48 +1,73 @@
1
- # {AppName} — UI Design Spec (Mockups)
1
+ <!-- tf-schema
2
+ doc: uidesign
3
+ file: docs/{App}-UIDesign.md
4
+ header: App, Kind, Size, UI library, Theme
5
+ section: Design system | required | max 300
6
+ section: Screens | required
7
+ section: Click-through flow | optional-small
8
+ section: Branding guide | optional
9
+ entries: Screens | Screen:
10
+ per-entry: 250 400
11
+ rule: entry-mockup
12
+ rule: entry-regions-table
13
+ rule: entry-fields-table
14
+ rule: entry-states
15
+ rule: mockup-links
16
+ -->
17
+ <!-- Authoring notes (agent only; never visible text).
18
+ One `### Screen: Name (/route)` per routed page, in navigation order. The mockup shows the layout;
19
+ the entry lists what the mockup cannot say: regions to controls, fields with validation, the dialogs
20
+ the screen opens, and the empty, loading and error states. Do not describe in prose what the mockup
21
+ already shows. Use only controls that exist in the UI library's catalogue; a missing control goes
22
+ to the library feedback file, not into a workaround. The set of screens must equal the BRD's
23
+ Screens and flow table. For a library, this document is optional.
24
+ Large project: one UIDesign per phase (docs/{App}-UIDesign.md, docs/{App}-P2-UIDesign.md, …) with a
25
+ header row "| Phase | n of m |"; its screens are exactly that phase's row in docs/{App}-Phases.md.
26
+ The mockup folder stays one click-through set across every phase. -->
27
+
28
+ # {App} — UI Design
29
+
30
+ | | |
31
+ |---|---|
32
+ | App | {App} |
33
+ | Kind | app or library |
34
+ | Size | Small, Medium or Large |
35
+ | UI library | {library and version} |
36
+ | Theme | {light, dark, both} |
37
+
38
+ ## Design system
39
+
40
+ - **Layout shell:** {top nav, sidebar, both; the layout components used}
41
+ - **Theme:** {…}
42
+ - **Shared controls:** {the controls every screen uses}
43
+ - **Rules:** {spacing, density, responsive breakpoints in one line each}
2
44
 
3
- > **What this is.** The approved visual design for {AppName}, produced at day-1 (greenfield) before any UI is built. Each screen has a **rendered mockup** (`docs/mockups/{screen}.html`, styled to look like TrBlazeUI) and a **component map** that ties every region to a real **TrBlazeUI control**, so the build (`/trblazeui`) reproduces it 1:1 and the verifier's visual-truth gate (`verify-phase.md §4b`) can diff the live screen against it. This is a HUMAN document → rendered to HTML. The owner APPROVES it (alongside the BRD + Architecture) before build.
4
-
5
- ## Table of Contents
6
-
7
- <!-- Auto-maintained. Slug rule: .tfcore/templates/v4custom/html-render-shell.md §1. List each `### Screen: ...` under "Screens". -->
8
-
9
- 1. [How to use](#how-to-use)
10
- 2. [Design system (TrBlazeUI)](#design-system-trblazeui)
11
- 3. [Screens](#screens)
12
-
13
- ## How to use
14
-
15
- - Every screen below links to its rendered mockup in `docs/mockups/`. Open those `.html` files in a browser to see the intended layout.
16
- - The **Component map** is the build contract: `region → TrBlazeUI control`. Only controls that actually exist in the TrBlazeUI library are used (the analyst read the component catalog first). If a screen needs something the library lacks, it is flagged here and logged to `docs/{AppName}-TrBlazeUI-Feedback.md`.
17
- - To change a screen after approval: run `*mockups {AppName} --update` (or `*amend-docs` for a requirement change that adds screens).
18
-
19
- ## Design system (TrBlazeUI)
45
+ ## Screens
20
46
 
21
- - **Source:** TrBlazeUI component library (`.trblazeui/TrBlazeUI-AI-Reference.md`). Mockups use its components and design language (spacing, color tokens, typography) so they are replicable in Blazor.
22
- - **Layout shell:** {top nav / sidebar / both — name the TrBlazeUI layout components}.
23
- - **Theme:** light/dark per the shared shell; warm off-white light default.
24
- - **Controls inventory used:** {list the TrBlazeUI controls this app's screens rely on — e.g. `TrNavMenu`, `TrCard`, `TrDataGrid`, `TrForm`, `TrButton`, `TrChart`, `TrDialog`}.
47
+ ### Screen: {Name} (`/route`)
25
48
 
26
- ## Screens
49
+ **Mockup:** [mockups/{screen-slug}.html](mockups/{screen-slug}.html) · **Roles:** {who reaches it} · **BRD:** BRD-{N}
27
50
 
28
- <!-- One `### Screen: ...` per key screen from the BRD §9 feature catalog. Each has its mockup link,
29
- a component map (region → TrBlazeUI control + the data it shows), and state notes. -->
51
+ | Region | Control | Shows or binds |
52
+ |---|---|---|
53
+ | {Top nav} | {control} | {…} |
54
+ | {Main list} | {control} | {…} |
30
55
 
31
- ### Screen: Dashboard (`/dashboard`)
56
+ | Field | Type | Required | Validation |
57
+ |---|---|---|---|
58
+ | {Title} | text | yes | {1 to 120 characters} |
32
59
 
33
- **Mockup:** [docs/mockups/dashboard.html](./mockups/dashboard.html) · **Role(s):** {who reaches it} · **BRD:** BRD-X · **REQ:** REQ-UI-001
60
+ **Dialogs opened here:** {Dialog name: fields …; or "none"}
34
61
 
35
- **Layout (one line):** top nav fixed; 3-card KPI row; full-width chart below; recent-activity table at the bottom.
62
+ **States:** empty: {…} · loading: {…} · error: {…}
36
63
 
37
- **Component map:**
64
+ ## Click-through flow
38
65
 
39
- | Region | TrBlazeUI control | Shows / binds | States |
40
- |--------|-------------------|---------------|--------|
41
- | Top nav | `TrNavMenu` | logo, user menu, theme toggle | — |
42
- | KPI row | 3× `TrCard` | {metric} each | loading skeleton; zero-state |
43
- | Trend chart | `TrChart` (line) | {series} | empty: "no data yet" |
44
- | Activity | `TrDataGrid` | {columns} | empty row message; paged |
66
+ ```mermaid
67
+ flowchart LR
68
+ A["Login"] --> B["Home"]
69
+ ```
45
70
 
46
- **Notes / interactions:** {sort, filter, drill-through, responsive behavior — what collapses/stacks at mobile width}.
71
+ ## Branding guide
47
72
 
48
- **Empty / loading / error:** {what each control shows when there's no data, while loading, on error — the verifier checks these aren't blank-but-broken}.
73
+ {Only when colours or type differ from the library defaults.}
@@ -1,67 +1,82 @@
1
- # {AppName} — Usage Guide (Test Users · Test Plan · Setup)
1
+ <!-- tf-schema
2
+ doc: usageguide
3
+ file: docs/{App}-UsageGuide.md
4
+ header: App, Kind, Size, Date
5
+ section: Test users | required
6
+ section: Execution guide | required
7
+ section: How to test, screen by screen | required
8
+ section: Automated tests | required
9
+ section: Known limitations | required
10
+ section: Platform notes | optional
11
+ section: How to call it | library
12
+ entries: How to test, screen by screen |
13
+ per-entry: 90 120
14
+ budget: S 2500 3500 | M 4000 6000 | L 4000 6000
15
+ rule: test-users-table
16
+ rule: execution-code
17
+ rule: entry-steps
18
+ rule: entry-expected
19
+ -->
20
+ <!-- Authoring notes (agent only; never visible text).
21
+ The owner's test plan. Every agent (smoke, verify) and the owner's UAT use the SAME test users and
22
+ the SAME walkthrough; nobody invents accounts. One `###` per screen in navigation order, at most
23
+ 120 words: who to sign in as, numbered steps, the expected result, the REQ ids covered.
24
+ The Execution guide is copy-pasteable commands, one per line, no narrative. Hosting and production
25
+ deployment are not here; they are in the Deployment Checklist after UAT.
26
+ For a library, "How to call it" says how a consumer installs and registers the package and gives one call
27
+ example per public service or component; the maintainer's map of each service is the DevGuide's. -->
28
+
29
+ # {App} — Usage Guide
30
+
31
+ | | |
32
+ |---|---|
33
+ | App | {App} |
34
+ | Kind | app or library |
35
+ | Size | Small, Medium or Large |
36
+ | Date | {YYYY-MM-DD} |
37
+
38
+ ## Test users
39
+
40
+ | # | User | Password source | Role | Exists |
41
+ |---|---|---|---|---|
42
+ | 1 | {admin@app.test} | {user secrets key, seed script} | {Admin} | {yes, no} |
43
+
44
+ ## Execution guide
45
+
46
+ Prerequisites: {runtime and version, database, anything else, one line}.
2
47
 
3
- > The single source for **how to test and run** this app. Every agent (flow-master self-smoke, the verifier) **and** the human UAT use the SAME test users and the SAME walkthrough listed here — no one invents throwaway accounts (enforced by `.tfcore/tasks/_smoke-test-policy.md`). Keep the Test-users table current: when an account is actually created, flip its `Created?` to ✅.
4
-
5
- ## Test users (canonical — use THESE for all smoke / verify / UAT)
6
-
7
- One row per account needed to exercise the app. Cover every distinct role/permission level. These are the ONLY accounts smoke/verify/UAT may use.
8
-
9
- | # | Username / Email | Password | Role / Permission | Created? | Notes |
10
- |---|------------------|----------|-------------------|----------|-------|
11
- | 1 | {admin@app.test} | {Pass!23} | Admin | ⬜ | {seeded by … / create on first build} |
12
- | 2 | {user1@app.test} | {Pass!23} | Standard user | ⬜ | {…} |
13
- | 3 | {…} | {…} | {role} | ⬜ | {…} |
48
+ ```
49
+ {restore command}
50
+ {database setup or migration command}
51
+ {build command}
52
+ {run command, with the URL it serves}
53
+ ```
14
54
 
15
- - **Created?** — ✅ = the account exists in the database now (verified). ⬜ = planned; create it on first build, but **only after confirming with the owner** (see `_smoke-test-policy.md`). Never auto-create silently.
16
- - **To add or confirm an account:** edit this table — it is the registry the whole pipeline reads from.
17
- - **Seeding:** if the project seeds users via a migration / `database/*-seed-*.sql` / a DbUp step, reference it here so the accounts above are reproducible from a clean DB.
55
+ Open {http://localhost:port} and sign in as user 1.
18
56
 
19
- ## How to test — screen by screen / menu by menu
57
+ ## How to test, screen by screen
20
58
 
21
- One subsection per screen or top-level menu, in navigation order, so a tester (human or agent) can walk the whole app and exercise **every feature**. Each subsection names which test user to log in as.
59
+ ### {Screen name}
60
+ - **Sign in as:** {user # from the table}
61
+ - **Steps:** 1) {action} 2) {action} 3) {action}
62
+ - **Expected:** {what proves it works}
63
+ - **Covers:** {REQ ids}
22
64
 
23
- **Flowchart any complex flow.** When a flow is multi-step, multi-actor, or branches (approval queues, learning/feedback loops, ingestion→processing→review pipelines, auth/token handshakes, payment/consent gates), add a Mermaid `flowchart` (or `sequenceDiagram`) right above that flow's steps so the tester sees the path at a glance. Simple linear CRUD screens don't need one. **Every diagram MUST follow the authoring rules in `.tfcore/templates/v4custom/html-render-shell.md §5.5`** — quote every node/edge/subgraph label, never use `end` as a node id — or it will throw "Syntax error" in the rendered HTML. Example:
65
+ ## Automated tests
24
66
 
25
- ```mermaid
26
- flowchart LR
27
- A["User submits form"] --> B{"Valid?"}
28
- B -->|"yes"| C["Save + confirm"]
29
- B -->|"no"| D["Show error"]
30
67
  ```
68
+ {test command}
69
+ ```
70
+ {One line: what the suite covers.}
31
71
 
32
- ### {Screen / Menu name}
33
- - **Log in as:** {user # from the table above}
34
- - **Steps:** 1) {action} → 2) {action} → 3) {action}
35
- - **Expected:** {observable result — what proves the feature works}
36
- - **Covers:** {BRD-N / REQ-* IDs this walkthrough exercises}
37
-
38
- _(Repeat one block per screen/menu until every feature in the BRD feature catalog is covered. This is the human UAT script AND the map the verifier/smoke use to decide what to exercise.)_
39
-
40
- ## Prerequisites
41
- - .NET {N} SDK
42
- - {OtherRuntime — e.g. Node 20 for Playwright, PostgreSQL 16, etc. — one line each, only if actually required}
43
-
44
- ## Setup / Deployment steps (runbook — one command per line, in order)
72
+ ## Known limitations
45
73
 
46
- Numbered, terse, copy-pasteable. No narrative. Omit any step that doesn't apply (no "N/A" placeholders).
74
+ - {one line each, with the REQ or feedback id}
47
75
 
48
- 1. `git clone <repo> && cd <repo>`
49
- 2. `dotnet restore`
50
- 3. {database setup — one line per SQL file in lexicographic order, or a single DbUp `dotnet run --project src/{AppName}.Db` step. Include the test-user seed step if one exists.}
51
- 4. `dotnet build`
52
- 5. {run the backend — one command, e.g. `dotnet run --project src/{AppName}.Api --urls http://localhost:5100`}
53
- 6. {run the frontend — one command, e.g. `dotnet run --project src/{AppName}.Web --urls http://localhost:5099`}
54
- 7. Open `http://localhost:5099` in a browser; log in as a Test user from the table above.
76
+ ## Platform notes
55
77
 
56
- ## Test (automated)
57
- ```bash
58
- dotnet test
59
- ```
60
- {Add `npx playwright test` ONLY if the repo has Playwright tests checked in.}
78
+ {Only when the app runs on more than one platform.}
61
79
 
62
- ## Smoke checklist (quick capability pass)
63
- - [ ] {one tight line per top-level BRD capability — 5-10 boxes max; each a user action using a Test user above, e.g. "Log in as Admin (user 1), open the dashboard"}
80
+ ## How to call it
64
81
 
65
- ## Known limitations
66
- - {TR-NNN — short title — see docs/{AppName}-TrBlazeUI-Feedback.md (or TR-RAG-NNN → docs/{AppName}-TechieRag-Feedback.md)}
67
- - {`Blocked` (library-gap) REQ-* items from the checklist Status tables, one line each}
82
+ {Libraries only. How to install and register the package, then one call example per public service or component. The maintainer's map of each service is in the DevGuide.}