@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,134 @@
|
|
|
1
|
+
# fix-issues
|
|
2
|
+
|
|
3
|
+
The single front door for fixing bugs the owner found by running the app — UI layout, broken rendering, wrong data, or logic. You drop **a folder of screenshots (+ an optional description file)**; flow-master reproduces each issue, triages where it lives, fans the fix out to the right builder, re-verifies, and updates the docs. **You never invoke the UI / functional / RAG agents yourself — flow-master calls them as sub-agents.**
|
|
4
|
+
|
|
5
|
+
## Why this exists
|
|
6
|
+
|
|
7
|
+
When the verifier passes but the running UI is still broken (overlapping controls, blank screens, wrong behavior), the owner needs ONE command to hand a pile of evidence to and have it fixed end-to-end — not to choreograph trblazeui, techierag, and the verifier by hand. `*fix-issues` is that command. It is generic: a bug can be anywhere (layout, data, logic, RAG), so it triages first and routes second. (Analysis WITHOUT fixing — "log these UAT bugs, don't fix yet" — is `*triage-issues`, not this task; see §0.)
|
|
8
|
+
|
|
9
|
+
## Inputs
|
|
10
|
+
|
|
11
|
+
- `{AppName}` (required; or resolve from `core-config.yaml`).
|
|
12
|
+
- `{Folder}` (required) — a path to a folder the owner filled with **screenshots** of the broken screens and, optionally, a **description file** (`bugs.md` / `README.md` / `notes.txt`) naming what's wrong on each (e.g. "Dashboard: KPI cards overlap the chart; Clients list shows count 16 but rows are blank"). If `{Folder}` is omitted, ask once for the folder path. (Screenshots-in-a-folder is the intended evidence channel — do not require the owner to describe bugs in chat.)
|
|
13
|
+
|
|
14
|
+
## SEQUENTIAL Execution
|
|
15
|
+
|
|
16
|
+
### 0. Scope guard — was a FIX actually requested?
|
|
17
|
+
|
|
18
|
+
**`*fix-issues` fixes.** If the owner's words ask only to **analyze / triage / log / document** the bugs, update the checklist, or re-verify other features — and do NOT ask for a fix — STOP: execute `.tfcore/tasks/triage-issues.md` instead (same evidence channel, docs-only deliverable) and let the owner decide about fixing afterwards. "Analyze these bugs" is NEVER permission to edit code.
|
|
19
|
+
|
|
20
|
+
### 1. Ingest the evidence
|
|
21
|
+
|
|
22
|
+
- List the folder. **Read every screenshot** (vision) and the description file if present. Build a working list of issues: `{ id, screen/route guess, role guess, symptom, evidence-image }`.
|
|
23
|
+
- For each issue, classify a first-guess **kind**: `layout` (overlap/clip/off-viewport/unstyled), `render-empty` (blank table/chart/value), `data/logic` (wrong values, failed action), `rag` (bad/empty AI answer). Final classification happens after repro (§3).
|
|
24
|
+
- If the description names screens/roles, use them; otherwise infer the screen from the screenshot (match against the DevGuide screen list / routes).
|
|
25
|
+
|
|
26
|
+
### 2. Boot the app (per `_smoke-test-policy.md` + `verify-phase.md §Local-only`)
|
|
27
|
+
|
|
28
|
+
- Boot the app yourself via the build-invocation-ladder; bring up dependent services (DB/LLM/API) in dependency order for a multi-service stack. "Can't run on Linux / it's multi-service / it targets Windows" are BANNED excuses; escalate per `verify-phase.md §3a` (rung #4 Windows-side → another port → ask the owner only as a last resort). Never propose a cloud deploy.
|
|
29
|
+
- Resolve a test login from `docs/{AppName}-UsageGuide.md` / the DB — never auto-create a random user.
|
|
30
|
+
|
|
31
|
+
### 3. Reproduce each issue live with Playwright
|
|
32
|
+
|
|
33
|
+
For each issue, log in as the relevant role, navigate to the screen, and **reproduce the symptom**:
|
|
34
|
+
- Take a fresh screenshot at desktop + a mobile width and compare to the owner's evidence.
|
|
35
|
+
- Apply the **data render gate** (`verify-phase.md §4a`) and the **visual-truth gate** (`§4b`): is the control blank? do controls overlap / clip / sit off-viewport? is it unstyled?
|
|
36
|
+
- Settle the issue's **kind** from what you observe (not just the owner's guess), and map it to the owning screen + `REQ-*` in `docs/{AppName}-Checklist.md` (use the DevGuide screen→REQ map). If an issue can't be reproduced, note it (maybe environment/data-specific) and ask the owner rather than guessing a fix.
|
|
37
|
+
|
|
38
|
+
Echo a triage table before fixing:
|
|
39
|
+
```
|
|
40
|
+
Issue 1 → REQ-UI-007 (Dashboard) — kind: layout (KPI cards overlap chart @ both widths) → /trblazeui
|
|
41
|
+
Issue 2 → REQ-FN-014 (Clients) — kind: render-empty (grid 16 count, 0 rows) → flow-master (data)
|
|
42
|
+
Issue 3 → REQ-RAG-003 (Assistant)— kind: rag (empty answer) → /techierag
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 4. Fan out the fixes to the right builder (flow-master calls them — the owner does not)
|
|
46
|
+
|
|
47
|
+
In ONE turn, route each issue to its builder as a sub-agent, in parallel where they don't share files:
|
|
48
|
+
- **`layout` / UI** → invoke **`/trblazeui`** as a sub-agent: fix the Razor/CSS/component so it renders correctly and matches the mockup (greenfield) / intended layout; cite the REQ + the symptom + the screenshot. Page-layout fixes are trblazeui's job.
|
|
49
|
+
- **`render-empty` / `data` / `logic`** → spawn a **builder subagent** (`tf-builder` if the harness registers it, otherwise the harness's general subagent — Claude Code `Agent` tool / OpenCode `task` tool): fix the binding/guard/column-mapping/service/query so the control actually renders its data (the `verify-phase §4a` failure modes — undeclared params, column→property mismatch, throwing computed getters, null guards).
|
|
50
|
+
- **`rag`** → invoke **`/techierag`** as a sub-agent: fix the RAG flow (ingestion/search/prompt/provider config).
|
|
51
|
+
- Each sub-agent tags its fix with the `[REQ-*]` tag in the checklist Remarks (**NEVER a git commit — git is manual; agents never run git/gh**), logs any library gap to the owning feedback file, and returns `{ reqsFixed[], filesChanged[], notes[] }`. Every sub-agent prompt MUST carry the two standing rules from `build-phase.md §3` verbatim (no git; smoke it yourself — library agents don't read `.tfcore/` tasks). Wait for all to return.
|
|
52
|
+
|
|
53
|
+
### 5. Re-smoke (data + visual) then re-verify the affected REQs
|
|
54
|
+
|
|
55
|
+
- Rebuild (invocation ladder). Re-smoke each fixed screen yourself: data renders AND it looks right at desktop + mobile (per `_smoke-test-policy.md` — both gates). If a fix didn't take, loop back to §4 for that issue.
|
|
56
|
+
- Chain the verifier: read `.tfcore/tasks/verify-phase.md` and run it inline scoped to the affected REQ IDs (skip its §0 question — scope is known). It applies §4a + §4b and writes verdicts into `docs/{AppName}-Checklist.md`.
|
|
57
|
+
|
|
58
|
+
### 6. Update the docs (status gate)
|
|
59
|
+
|
|
60
|
+
- **Checklist:** the verifier already wrote verdicts; confirm each fixed REQ is `Verified` (or note why not).
|
|
61
|
+
- **DevGuide:** refresh the affected screens' observed render/visual status + Known issues (the verifier's §6b does this; if a screen wasn't in scope, update it via `*devguide {AppName} --update`).
|
|
62
|
+
- **PROJECT-STATUS (FINAL GATE, per `_status-update-gate.md`):** update `PROJECT-STATUS.md` AND re-render `PROJECT-STATUS.html` — open requirements, a verification-log row, next command. A markdown-only update is incomplete.
|
|
63
|
+
- **Never run git.** Investigate by reading working-tree files at `file:line`, never a diff.
|
|
64
|
+
|
|
65
|
+
### 6a. Emit the run record — and CLOSE the misses you fixed
|
|
66
|
+
|
|
67
|
+
Same turn as the status gate. Doctrine: `.tfcore/tasks/_metrics-emit-gate.md`; schema `.tfcore/telemetry/SCHEMA.md` §2 + §5.5. Stamp `started` with `date -u +%Y-%m-%dT%H:%M:%SZ` at §1, before you ingest anything.
|
|
68
|
+
|
|
69
|
+
**Emit the run record FIRST.** The `miss-fix` records below carry no numbers of their own — they name this run, and `tf-emit.sh` copies its token window. A `miss-fix` emitted before its run record finds nothing and is costed `none`.
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
cat <<'JSON' | bash .tfcore/utils/tf-emit.sh runs
|
|
73
|
+
{"kind":"run","app":"{AppName}","cmd":"fix-issues","mode":"fix",
|
|
74
|
+
"started":"<start>","ended":"<now>","duration_s":<n>,
|
|
75
|
+
"reqs_touched":["REQ-UI-009"],"reqs_count":1,
|
|
76
|
+
"subagents":["trblazeui"],"files_written":<n>,"build_result":"pass"}
|
|
77
|
+
JSON
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
`mode` is always `"fix"` here — that is the whole point of this command. The verifier chained in §5 emits its own `gates.jsonl` and `misses.jsonl` records; do not emit those yourself.
|
|
81
|
+
|
|
82
|
+
**Then one `miss-fix` per REQ you repaired.** This is what makes "what did that miss cost to fix" answerable at all:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
for REQ in REQ-UI-009 REQ-FN-014; do
|
|
86
|
+
MID=$(bash .tfcore/utils/tf-emit.sh --open-miss "$REQ" | cut -d' ' -f1)
|
|
87
|
+
[ -z "$MID" ] && continue # no open miss for this REQ — nothing to close
|
|
88
|
+
FA=$(bash .tfcore/utils/tf-emit.sh --next-fix-attempt "$MID")
|
|
89
|
+
cat <<JSON | bash .tfcore/utils/tf-emit.sh misses
|
|
90
|
+
{"kind":"miss-fix","miss_id":"$MID","req_id":"$REQ",
|
|
91
|
+
"fix_run_id":"<the §1 start timestamp>","fix_cmd":"fix-issues",
|
|
92
|
+
"fix_attempt":$FA,"verdict_after":"<the verifier's verdict>","reopened":false}
|
|
93
|
+
JSON
|
|
94
|
+
done
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
- **`verdict_after` is the verifier's verdict from §5, not your assessment of your own fix.** `Verified` only where the verifier actually wrote it. A miss closed on the fixer's word is the same failure as a self-attested `Verified`.
|
|
98
|
+
- **A REQ with no open miss is normal** — the owner reported something the gates never recorded as a miss. Open one first (`--next-miss-id`, `found_by:"owner"`, per `triage-issues` §6a) and then close it in the same run, so the defect has both a cause and a cost.
|
|
99
|
+
- **Write no token, dollar, or `cost_attribution` field.** `tf-emit.sh` copies the window from `fix_run_id` and derives the attribution from that run's `reqs_touched` — `sole` when this fix touched one REQ, `shared:<n>` when it touched several. That distinction is the whole reason the cost figure can be defended, and it is not yours to assert (constraint 10).
|
|
100
|
+
|
|
101
|
+
**Telemetry has no veto:** a failed emit never changes the outcome and is not worth reporting.
|
|
102
|
+
|
|
103
|
+
### 7. HALT — report
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
# Fix-issues — {AppName}
|
|
107
|
+
Evidence: {Folder} ({S} screenshots, {desc|no} description)
|
|
108
|
+
Issues: {N} triaged → {u} UI/layout, {d} data/render, {r} RAG, {x} could-not-reproduce
|
|
109
|
+
Fixed + re-verified: {f} REQs now Verified | Still open: {o} (reason)
|
|
110
|
+
Docs: checklist + DevGuide + PROJECT-STATUS updated (+ HTML re-rendered)
|
|
111
|
+
Next: {if open issues → re-run *fix-issues with the still-broken shots / *verify all ; else "all reported issues fixed and re-verified"}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Hard rules
|
|
115
|
+
|
|
116
|
+
- **A fix must be ASKED for.** Analyze/log/document-only requests route to `.tfcore/tasks/triage-issues.md` (§0) — never start fixing on an analysis request.
|
|
117
|
+
- **One front door, flow-master routes.** The owner runs only `*fix-issues`; flow-master calls trblazeui / techierag / its own subagents. Never tell the owner to invoke a builder agent themselves.
|
|
118
|
+
- **Triage from what you OBSERVE, not just the owner's words.** Reproduce live before fixing; classify by the actual data + visual gates.
|
|
119
|
+
- **Both gates before "fixed".** A fix is done only when the screen renders its data AND looks right (no overlap/clip/off-viewport), confirmed by re-smoke + the verifier.
|
|
120
|
+
- **Boot the app yourself**, incl. multi-service stacks; asking the owner to run it is the last resort. Never propose a cloud deploy.
|
|
121
|
+
- **Use documented test users; never auto-create random ones.**
|
|
122
|
+
- **Status gate is the last action** — PROJECT-STATUS `.md` AND `.html`. Never run git.
|
|
123
|
+
|
|
124
|
+
## Output Checklist
|
|
125
|
+
|
|
126
|
+
- [ ] Evidence folder ingested — screenshots read (vision) + description parsed; issue list built
|
|
127
|
+
- [ ] App booted (incl. dependent services); documented test user used
|
|
128
|
+
- [ ] Each issue reproduced live and triaged (kind + owning REQ) — triage table echoed
|
|
129
|
+
- [ ] Fixes fanned out to the right builder (trblazeui / flow-master subagent / techierag) — owner did NOT invoke any agent
|
|
130
|
+
- [ ] Re-smoked (data + visual) and verifier re-run on the affected REQs (verdicts in the checklist)
|
|
131
|
+
- [ ] DevGuide affected screens refreshed; PROJECT-STATUS.md + .html updated (status gate)
|
|
132
|
+
- [ ] `runs.jsonl` record emitted with `cmd:"fix-issues"`, `mode:"fix"` (§6a) — **before** the miss-fix records, so the token window exists to copy
|
|
133
|
+
- [ ] One `misses.jsonl` `miss-fix` per repaired REQ that had an open miss, carrying the verifier's verdict — no token/cost/attribution field written by hand
|
|
134
|
+
- [ ] Report printed with fixed vs still-open counts
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# generate-html
|
|
2
|
+
|
|
3
|
+
Convert one or more **human-readable** markdown files to self-contained HTML using the shared shell. Use this when you need to render documents that `*render-workflow-docs` does not cover (the UsageGuide, the DevGuide, library-feedback docs, ad-hoc design notes, legacy/archived docs). Note: suffixed doc variants like `-v2` are banned by the collision policy (day1-brownfield §1.6) — superseded docs live unmodified in `docs/OldDocs/`.
|
|
4
|
+
|
|
5
|
+
**NEVER render the checklist to HTML.** The `*-Checklist.md` (and its Requirements Status table) is an **AI-agent working document** — agents read it in markdown. An HTML mirror just burns tokens and drifts from the source. If asked to render a `*-Checklist.md`, decline and explain it's an agent doc; if a stale `*-Checklist.html` exists from before this rule, the user may delete it.
|
|
6
|
+
|
|
7
|
+
## Why this exists
|
|
8
|
+
|
|
9
|
+
`*render-workflow-docs` only renders the three canonical files (`{App}-BRD.md`, `{App}-Architecture.md`, `PROJECT-STATUS.md`). When the user has additional or versioned docs, this task accepts explicit paths.
|
|
10
|
+
|
|
11
|
+
## Invocation forms
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
*generate-html @path/to/file.md
|
|
15
|
+
*generate-html @path/to/file1.md @path/to/file2.md @path/to/file3.md
|
|
16
|
+
*generate-html @docs/SomeFolder/
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
(Or via the slash-command wrapper: `/TechieFlow:tasks:generate-html @path/to/file.md` in Claude Code; `/techieflow:tasks:generate-html path/to/file.md` in OpenCode. **The `@` sigil is Claude Code's file-mention; under OpenCode type the plain path WITHOUT `@`** — an `@file` in an OpenCode prompt inlines the entire file into context, wasting tokens. This task accepts both forms and treats them identically.)
|
|
20
|
+
|
|
21
|
+
Note: the `@` prefix is Claude Code's file-mention sigil. OpenCode treats a leading `@` as file-content-inclusion, so pass plain paths there.
|
|
22
|
+
|
|
23
|
+
- **Single file:** convert that one MD to a sibling HTML.
|
|
24
|
+
- **Multiple files:** convert each. List separated by spaces. Each becomes a sibling HTML.
|
|
25
|
+
- **Directory:** convert every `*.md` directly inside that directory. **Non-recursive** — do not descend into subdirectories. If the user wants subdirectories included, they can pass each subdir as another argument.
|
|
26
|
+
|
|
27
|
+
If no arguments are passed, HALT and tell the user: `Usage: *generate-html @<path-to-md-or-dir> [@<more-paths>]`.
|
|
28
|
+
|
|
29
|
+
## Inputs
|
|
30
|
+
|
|
31
|
+
- One or more `@`-prefixed paths (the `@` is Claude Code's file-mention sigil; strip it when resolving the actual path).
|
|
32
|
+
- Paths may be absolute or relative to project root.
|
|
33
|
+
|
|
34
|
+
## SEQUENTIAL Execution
|
|
35
|
+
|
|
36
|
+
### 1. Resolve the input set
|
|
37
|
+
|
|
38
|
+
For each argument:
|
|
39
|
+
- Strip leading `@`.
|
|
40
|
+
- If the path ends with `/` or is a directory: use the Read tool to read each `*.md` directly under that directory (non-recursive, no subdirs).
|
|
41
|
+
- Otherwise: treat as a single file path.
|
|
42
|
+
- Skip any path that doesn't exist; emit a one-line note for each skip and continue with the rest. Do not HALT unless ZERO paths resolve.
|
|
43
|
+
|
|
44
|
+
If ZERO paths resolve, HALT with: `No markdown files found at the given paths. Check the paths and retry.`
|
|
45
|
+
|
|
46
|
+
Echo a one-line summary: `Rendering N markdown file(s): file1.md, file2.md, ...`.
|
|
47
|
+
|
|
48
|
+
### 2. For each MD, build the HTML
|
|
49
|
+
|
|
50
|
+
**Run the renderer. Do NOT hand-author HTML.**
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
bash .tfcore/utils/tf-render-html.sh docs/{AppName}-BRD.md PROJECT-STATUS.md
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
It takes one or more `.md` paths, writes a sibling `.html` for each, and implements `html-render-shell.md` in full — §1 slugs (with dedupe), §2 CSS, §3 skeleton + flash-free theme script, §4 heading anchors *and* hand-written `<a id="…"></a>` anchors preserved verbatim, §5 mermaid toolbar wrapper, §5.5 label self-check, §6 escaped code blocks, §6b agent-note strip, §7 JS, §8 inline + sidebar TOC (sidebar only above 6 H2s). It reads the CSS and JS **out of the spec file at render time**, so the output cannot drift from the spec.
|
|
57
|
+
|
|
58
|
+
Hand-authoring the HTML through the Write tool is no longer the path: it cost 75–80k output tokens per phase for documents whose content barely changed, produced non-reproducible output, and risked silent truncation on large files (TfLens TF-003, 2026-08-27). Reserve it for the case where the renderer genuinely cannot express something — and report that as a framework defect rather than hand-rolling around it.
|
|
59
|
+
|
|
60
|
+
**Read the output.** The renderer prints one line per file (size, H2 count, sidebar yes/no, diagram count, notes stripped) and warns on `⚠ mermaid §5.5` for an unquoted flowchart label or a reserved `end` node id. Those warnings are about the **source `.md`** — fix the diagram in the markdown and re-render; never edit the generated HTML.
|
|
61
|
+
|
|
62
|
+
**It refuses to render a checklist** (`*-Checklist.md`, exit 2) — that ban is now mechanical, not just prose.
|
|
63
|
+
|
|
64
|
+
Read `.tfcore/templates/v4custom/html-render-shell.md` when you need to understand or change the shell; it remains the specification. You do not need to read it just to render.
|
|
65
|
+
|
|
66
|
+
For each MD file:
|
|
67
|
+
|
|
68
|
+
1. **Read** the source MD content.
|
|
69
|
+
2. **Extract title** from the first `#` heading; if none, derive from the filename (humanize: replace `-` and `_` with spaces, title-case).
|
|
70
|
+
3. **Build the heading list** (every `##`, `###`, `####`): for each, compute the slug per shell §1, attach an `id` to the heading, and decorate with the anchor link `<a class="anchor-link" href="#{slug}">#</a>`. Dedupe slugs by appending `-2`, `-3`, ... when a slug already exists in the doc.
|
|
71
|
+
4. **Decide TOC mode:**
|
|
72
|
+
- If H2 count > 6: render with sidebar TOC (no `no-toc` class).
|
|
73
|
+
- Otherwise: render with `no-toc` class on `.layout` and omit the `<nav class="side">` block.
|
|
74
|
+
- **Always** render the inline `.toc-inline` block at the top of `<main>` when H2 count ≥ 2.
|
|
75
|
+
5. **If the MD source already contains a `## Table of Contents` section**, replace it inline with the inline `.toc-inline` HTML block (don't double-render). Use the same slugs you assigned in step 3 so links work.
|
|
76
|
+
6. **Convert body markdown** to HTML:
|
|
77
|
+
- Paragraphs, bold/italic, links, lists, tables, blockquotes — standard markdown → HTML.
|
|
78
|
+
- Code fences: `` ```mermaid `` → §5 `<div class="diagram">` wrapper with toolbar buttons; any other code fence → §6 `<pre><code class="language-{lang}">{escaped}</code></pre>`.
|
|
79
|
+
- Inline code: `<code>...</code>`.
|
|
80
|
+
- HTML comments in source (`<!-- ... -->`): pass through.
|
|
81
|
+
- **Agent-facing authoring notes NEVER render as visible text.** The doc templates carry drafting-agent instructions (the "Depth mandate", "Mermaid mandate", "read before drafting" notes, how-to-use-this-template guidance) as HTML comments, which pass through invisibly. If the source MD still carries such a note as a **visible** blockquote or paragraph — text addressed to the drafting/authoring AGENT rather than to the document's human reader (typical in docs generated from pre-2026-07 templates) — **OMIT it from the rendered HTML** and, if you are also allowed to edit the MD, convert it to an HTML comment there. List every such omission in the output summary. Reader-facing blockquotes (a DevGuide's verification-status banner or Purpose note, a UsageGuide's test-user rules, etc.) stay.
|
|
82
|
+
7. **Assemble** using the §3 skeleton, with §2 CSS inlined verbatim in `<head>`, and §7 JS inlined verbatim at end of `<body>`. The mermaid + svg-pan-zoom CDN scripts go just before the JS.
|
|
83
|
+
8. **Write** the output to `{same-dir}/{basename}.html` (replace `.md` with `.html`). If the file already exists, overwrite.
|
|
84
|
+
|
|
85
|
+
### 3. Validate (mental review — no shell-out)
|
|
86
|
+
|
|
87
|
+
Per shell §9 checklist, for each rendered file confirm:
|
|
88
|
+
- CSS palette and JS pasted verbatim.
|
|
89
|
+
- Every TOC entry's `href` matches an existing heading `id`.
|
|
90
|
+
- Every mermaid fence wrapped in `.diagram` with all 6 toolbar buttons.
|
|
91
|
+
- Sidebar present iff H2 count > 6.
|
|
92
|
+
- No external resource references except the two CDN scripts.
|
|
93
|
+
|
|
94
|
+
**Mermaid validity pass (do this for EVERY diagram — it is the #1 reported bug).** Apply the shell §5.5 self-check to each mermaid block before emitting it:
|
|
95
|
+
- Each node/edge/subgraph label that contains anything other than letters, digits, and spaces (i.e. has `(` `)` `/` `&` `:` `,` `[` `]` `{` `}` `#` `@` `<` `>` `|` `"` etc.) MUST be wrapped in double quotes, with the quotes INSIDE the shape brackets (`API["ASP.NET API (v2)"]`, `DB[("SQL Server")]`).
|
|
96
|
+
- No node id is a reserved word (lowercase `end`).
|
|
97
|
+
- If you find a bare label in the source MD, **fix it in the emitted HTML** (quote it) rather than copying through a diagram you know will throw "Syntax error" in the browser. Note any such fix in the output summary so the author can also fix the MD source.
|
|
98
|
+
|
|
99
|
+
Do NOT shell out to an HTML validator. Do NOT `wc -c` the files. Do NOT `du`.
|
|
100
|
+
|
|
101
|
+
### 4. Output summary
|
|
102
|
+
|
|
103
|
+
Print one line per rendered file: the absolute output path. End with: `Open each in a browser to confirm Mermaid renders correctly and copy buttons / diagram toolbars work.`
|
|
104
|
+
|
|
105
|
+
## Output Checklist
|
|
106
|
+
|
|
107
|
+
- [ ] Every input MD has a sibling HTML produced
|
|
108
|
+
- [ ] Each HTML is self-contained (no broken local refs)
|
|
109
|
+
- [ ] Sidebar TOC present only when H2 count > 6
|
|
110
|
+
- [ ] Inline TOC present when H2 count ≥ 2
|
|
111
|
+
- [ ] Every heading has an id matching the TOC link
|
|
112
|
+
- [ ] Mermaid diagrams have working toolbar (zoom, fit, 1:1, fullscreen, popout)
|
|
113
|
+
- [ ] Mermaid validity pass done (shell §5.5): every non-trivial label double-quoted, no `end` node ids, bare labels fixed not emitted
|
|
114
|
+
- [ ] No agent-facing authoring note (Depth/Mermaid mandate, template how-to) rendered as visible text — leaked ones omitted and reported
|
|
115
|
+
- [ ] Copy buttons present on every `<pre>` (added by JS, no need to inject manually)
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# handoff-phase
|
|
2
|
+
|
|
3
|
+
Final-phase wrap-up: usage doc + status refresh + library-feedback consolidation + HTML re-render.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
After the checklist's Requirements Status table is green (or `Blocked` library-gap items accepted), produce the artifacts the user needs to ship and the artifacts future-you needs to resume.
|
|
8
|
+
|
|
9
|
+
**Run-once-per-UAT-cycle guard:** handoff *produces* the UAT bundle — it runs BEFORE owner UAT, once. If the PROJECT-STATUS Verification log already has a READY-FOR-UAT handoff row for the current cycle and the only open rows are documented owner-run UAT, there is nothing for this task to add: say so and point at the UsageGuide UAT plan instead of re-running. Execute anyway ONLY when the owner explicitly invoked `*handoff-phase` themselves, or when substantive doc-affecting work landed after the last handoff (then note in the Verification log row what changed). Agents never *suggest* a repeat handoff while non-terminal rows remain (`_status-update-gate.md` item 5, UAT tier).
|
|
10
|
+
|
|
11
|
+
## Inputs
|
|
12
|
+
|
|
13
|
+
- `{AppName}` argument (required; or resolve from core-config.yaml).
|
|
14
|
+
|
|
15
|
+
## SEQUENTIAL Execution
|
|
16
|
+
|
|
17
|
+
### 1. Finalize `docs/{AppName}-UsageGuide.md`
|
|
18
|
+
|
|
19
|
+
The Usage Guide was created at day-1 (`day1-*` §7.4) from `.tfcore/templates/v4custom/app-usageguide-tmpl.md`. **Update it in place — do not create a new doc.** (If it's missing — a project that predates this step — create it now from that template.) At handoff, bring every section up to ship-reality and **TERSELY**. Hard rules:
|
|
20
|
+
|
|
21
|
+
- **Test-users table:** reconcile with the database — every account that actually exists now is marked `Created? = ✅`; drop or mark any planned ⬜ account that was never created. This table is what UAT logs in with, so it must match the live DB.
|
|
22
|
+
- **Screen-by-screen test plan:** ensure every shipped feature has a walkthrough block; remove blocks for cut features.
|
|
23
|
+
|
|
24
|
+
Below, "populate" means refresh these sections of the existing doc. Hard rules:
|
|
25
|
+
|
|
26
|
+
- **No narrative prose anywhere.** No "this app uses Blazor Server because…", no caveats, no explanations. The deployment-steps section must look like a runbook — one command per line, numbered in execution order.
|
|
27
|
+
- **Skip any step that doesn't apply.** If the repo has no SQL migrations, omit the database-setup step entirely — do not leave "N/A" placeholders or "// not applicable" comments.
|
|
28
|
+
- **No optional steps in the numbered list.** The numbered deployment-steps section is the minimum sufficient set of commands to go from `git clone` to a running app. Anything optional goes in "Known limitations" or a separate doc.
|
|
29
|
+
|
|
30
|
+
Detection sources for each section:
|
|
31
|
+
|
|
32
|
+
- **Prerequisites**: SDK version from `global.json` / `.csproj` `<TargetFramework>`. Add a one-line entry for each external runtime the build/test commands depend on (Node only if Playwright tests exist; Postgres/SQL Server/etc. only if migrations exist; MAUI workload only if there's a MAUI project). One line each. No prose.
|
|
33
|
+
- **Deployment steps**: detect in this order and emit one numbered step per command:
|
|
34
|
+
1. `git clone <repo>` (always)
|
|
35
|
+
2. `dotnet restore` (always)
|
|
36
|
+
3. SQL migrations — scan `database/`, `db/migrations/`, `src/*Db/Scripts/`, and any DbUp project's `<EmbeddedResource>` paths. List `.sql` files in lexicographic order, one per line. If a DbUp project exists, prefer `dotnet run --project src/{AppName}.Db` as a single step instead of listing each SQL file.
|
|
37
|
+
4. `dotnet build`
|
|
38
|
+
5. Backend run — find the API/service startup project. One `dotnet run --project ... --urls http://localhost:5100` line.
|
|
39
|
+
6. Frontend run — find the Web/UI startup project. One `dotnet run --project ... --urls http://localhost:5099` line.
|
|
40
|
+
7. "Open http://localhost:5099 in a browser."
|
|
41
|
+
- For MAUI: replace step 5/6 with `winrun "dotnet build src/{AppName}.Maui"` then `winrun "dotnet run --project src/{AppName}.Maui"`.
|
|
42
|
+
- If frontend and backend are the same project (Blazor Server-only): collapse steps 5+6 into one.
|
|
43
|
+
- **Test**: `dotnet test`. Add `npx playwright test` ONLY if the repo has Playwright tests checked in.
|
|
44
|
+
- **Smoke checklist**: one checkbox per top-level BRD capability (5–10 max). Each line is a user action, not a technical step ("Log in as admin and load the dashboard" — NOT "verify JWT validation").
|
|
45
|
+
- **Known limitations**: pull every `Blocked` REQ row from the checklist Status table + every entry from the per-library feedback files (`docs/{AppName}-TrBlazeUI-Feedback.md`, `docs/{AppName}-TechieRag-Feedback.md`). One line each. Cross-reference to issue IDs (TR-NNN, TR-RAG-NNN).
|
|
46
|
+
|
|
47
|
+
**If you find yourself writing more than one line per numbered step, you're doing it wrong** — the user has explicitly called out that the deployment steps got polluted with "unnecessary details" in past runs. Strip aggressively.
|
|
48
|
+
|
|
49
|
+
### 2. Update `PROJECT-STATUS.md` (per `.tfcore/tasks/_status-update-gate.md`)
|
|
50
|
+
|
|
51
|
+
- `current_phase: Handoff` (the user manually sets `Released` after UAT passes — §5)
|
|
52
|
+
- `last_updated`: today
|
|
53
|
+
- `last_verified_build: PASS` (you just verified — confirm with `dotnet build` if uncertain)
|
|
54
|
+
- `last_verified_date`: today
|
|
55
|
+
- "Where I am": one paragraph — "All REQ-* verified; awaiting UAT per usage doc."
|
|
56
|
+
- "Next command to run": `Manual UAT per docs/{AppName}-UsageGuide.md smoke checklist.`
|
|
57
|
+
- "Open requirements": list any REQ-* not `Verified` in the checklist Status table (`Blocked`-by-library or deferred). Empty if all clear.
|
|
58
|
+
- "Library feedback summary": refresh counts from the consolidated library-feedback doc (§4 below)
|
|
59
|
+
- "Standards compliance": copy from the latest verifier run (recorded in the checklist Status table Remarks / prior PROJECT-STATUS entry)
|
|
60
|
+
- Append a "Verification log" row for the handoff (Result = ship-readiness verdict; Status table column → `docs/{AppName}-Checklist.md#requirements-status`)
|
|
61
|
+
- **BRD §4 Development status** — per the gate's item 9, roll the now-final checklist statuses up into the BRD §4 table (at handoff, most features should land on `Done`). If the BRD has no §4 section (legacy), say so and point the user at `*refresh-status {AppName}` to add it. The re-render in §3 picks up the change.
|
|
62
|
+
|
|
63
|
+
### 2a. Emit the run record (telemetry)
|
|
64
|
+
|
|
65
|
+
Same turn as the status/PROJECT-STATUS write. Doctrine + the ten constraints: `.tfcore/tasks/_metrics-emit-gate.md`. Schema: `.tfcore/telemetry/SCHEMA.md` §2. Stamp `started` with `date -u +%Y-%m-%dT%H:%M:%SZ` as your FIRST action of this task — it cannot be reconstructed at the end.
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
cat <<'JSON' | bash .tfcore/utils/tf-emit.sh runs
|
|
69
|
+
{"kind":"run","app":"{AppName}","cmd":"handoff-phase","mode":null,
|
|
70
|
+
"started":"<start>","ended":"<now>","duration_s":<n>,
|
|
71
|
+
"reqs_touched":[],"reqs_count":0,
|
|
72
|
+
"subagents":[],"files_written":<n>,"build_result":"not-run"}
|
|
73
|
+
JSON
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`reqs_touched` carries REQ IDs only — never requirement text — and `[]` is correct when this task touched no specific REQ. **Telemetry has no veto:** if the emit fails, the phase still succeeded; do not retry, do not diagnose, do not mention it.
|
|
77
|
+
|
|
78
|
+
### 3. Re-render the HTMLs
|
|
79
|
+
|
|
80
|
+
Invoke `render-workflow-docs {AppName}` as a subtask. Specifically:
|
|
81
|
+
- `docs/{AppName}-BRD.html` — always re-render (do NOT mtime-compare with bash; the Write tool is cheap and a stale HTML is worse than a redundant re-render)
|
|
82
|
+
- `docs/{AppName}-Architecture.html` — if implementation revealed "as-built" deltas from "Target", update Architecture.md first, then re-render. Set status to "Current (post-implementation)" or "Current + planned target" as appropriate.
|
|
83
|
+
- `PROJECT-STATUS.html` — always re-render (just updated in §2)
|
|
84
|
+
|
|
85
|
+
Then re-render the **Usage Guide** (updated in §1) and the **DevGuide** (refreshed in §3a) via `.tfcore/tasks/generate-html.md`: `docs/{AppName}-UsageGuide.md` (+ the DevGuide — `docs/{AppName}-DevGuide.md` if single, or every file under `docs/devguides/` if split) → sibling `.html`. **Do NOT render the checklist to HTML** — it is an AI-agent working document kept in markdown only; its Status table stays accurate in markdown.
|
|
86
|
+
|
|
87
|
+
### 3a. Refresh the Developer Guide
|
|
88
|
+
|
|
89
|
+
Run `.tfcore/tasks/devguide.md` for `{AppName}` (`*devguide {AppName}`) so the screen-by-screen code map reflects the final as-built code — this is the doc a human developer uses to chase bugs and verify the AI-generated code from page → control → service → data-access → stored proc. If a DevGuide already exists, an incremental `--update` is enough (remap only changed screens). It produces `docs/{AppName}-DevGuide.md` (single) — or, for a large app, an index + per-role files under `docs/devguides/` — and their `.html`; §3 above already lists them in the re-render set.
|
|
90
|
+
|
|
91
|
+
### 4. Consolidate the per-library feedback files
|
|
92
|
+
|
|
93
|
+
For EACH of `docs/{AppName}-TrBlazeUI-Feedback.md` and `docs/{AppName}-TechieRag-Feedback.md` (and any other `docs/{AppName}-{LibName}-Feedback.md`) that exists — they are separate files because each goes to a different team:
|
|
94
|
+
- Deduplicate entries (same expected/actual pair = duplicate; merge them).
|
|
95
|
+
- Sort by severity: blocker → major → minor → nice-to-have.
|
|
96
|
+
- Ensure each entry has all the schema fields (Severity, Repro, Expected, Actual, Encountered in, Workaround, Suggested fix). Fill in missing ones from context if possible.
|
|
97
|
+
- Refresh the file's summary block:
|
|
98
|
+
```markdown
|
|
99
|
+
## Summary
|
|
100
|
+
- {N blockers, M majors, P minors, Q nice-to-haves}
|
|
101
|
+
- Last consolidated: {today}
|
|
102
|
+
```
|
|
103
|
+
- If a legacy combined `docs/{AppName}-Library-Feedback.md` exists (pre-split projects), split its sections into the per-library files first, then archive it to `docs/OldDocs/`.
|
|
104
|
+
|
|
105
|
+
If no feedback file exists (no library issues encountered), skip this step.
|
|
106
|
+
|
|
107
|
+
### 5. Output summary + ship-readiness verdict
|
|
108
|
+
|
|
109
|
+
Deliver:
|
|
110
|
+
- "✔ {AppName} is ready for UAT." OR
|
|
111
|
+
- "⚠ {AppName} has {N} `Blocked` (library-gap) items — see docs/{AppName}-TrBlazeUI-Feedback.md / docs/{AppName}-TechieRag-Feedback.md before UAT."
|
|
112
|
+
|
|
113
|
+
Then explicitly tell the user:
|
|
114
|
+
1. Open `docs/{AppName}-UsageGuide.md` and run the smoke checklist.
|
|
115
|
+
2. Hand each per-library feedback file to its team (or file as GitHub issues against that library's repo): `docs/{AppName}-TrBlazeUI-Feedback.md` → TrBlazeUI team, `docs/{AppName}-TechieRag-Feedback.md` → TechieRag team. The library teams use this same framework, so the file drops straight into their flow.
|
|
116
|
+
3. After UAT passes, manually update `PROJECT-STATUS.md`: `current_phase: Released`.
|
|
117
|
+
4. For end-user / external documentation, run `*productguide {AppName}` (flow-master) — it builds a screenshot-illustrated, task-oriented user manual (MD + HTML) from the DevGuide's screen map + captured screenshots. On-demand; re-run with `--update` as the UI evolves.
|
|
118
|
+
|
|
119
|
+
## Output Checklist
|
|
120
|
+
|
|
121
|
+
- [ ] `docs/{AppName}-UsageGuide.md` finalized — Test-users table reconciled with the DB (created accounts ✅) + screen-by-screen plan current + prereqs/build/run/test/smoke; its `.html` re-rendered
|
|
122
|
+
- [ ] Developer Guide generated/refreshed (`*devguide {AppName}`) — screen-by-screen code map (page→control→service→data-access→proc) + its `.html`
|
|
123
|
+
- [ ] `PROJECT-STATUS.md` updated with handoff phase + UAT next-step
|
|
124
|
+
- [ ] `docs/{AppName}-BRD.html`, `docs/{AppName}-Architecture.html`, `PROJECT-STATUS.html`, the UsageGuide + DevGuide HTML re-rendered (the checklist is NOT rendered to HTML — markdown only)
|
|
125
|
+
- [ ] Per-library feedback files consolidated, one per library (if applicable; legacy combined file split + archived)
|
|
126
|
+
- [ ] Ship-readiness verdict delivered with explicit next steps
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# Index Documentation Task
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
This task maintains the integrity and completeness of the `docs/index.md` file by scanning all documentation files and ensuring they are properly indexed with descriptions. It handles both root-level documents and documents within subfolders, organizing them hierarchically.
|
|
6
|
+
|
|
7
|
+
## Task Instructions
|
|
8
|
+
|
|
9
|
+
You are now operating as a Documentation Indexer. Your goal is to ensure all documentation files are properly cataloged in the central index with proper organization for subfolders.
|
|
10
|
+
|
|
11
|
+
### Required Steps
|
|
12
|
+
|
|
13
|
+
1. First, locate and scan:
|
|
14
|
+
- The `docs/` directory and all subdirectories
|
|
15
|
+
- The existing `docs/index.md` file (create if absent)
|
|
16
|
+
- All markdown (`.md`) and text (`.txt`) files in the documentation structure
|
|
17
|
+
- Note the folder structure for hierarchical organization
|
|
18
|
+
|
|
19
|
+
2. For the existing `docs/index.md`:
|
|
20
|
+
- Parse current entries
|
|
21
|
+
- Note existing file references and descriptions
|
|
22
|
+
- Identify any broken links or missing files
|
|
23
|
+
- Keep track of already-indexed content
|
|
24
|
+
- Preserve existing folder sections
|
|
25
|
+
|
|
26
|
+
3. For each documentation file found:
|
|
27
|
+
- Extract the title (from first heading or filename)
|
|
28
|
+
- Generate a brief description by analyzing the content
|
|
29
|
+
- Create a relative markdown link to the file
|
|
30
|
+
- Check if it's already in the index
|
|
31
|
+
- Note which folder it belongs to (if in a subfolder)
|
|
32
|
+
- If missing or outdated, prepare an update
|
|
33
|
+
|
|
34
|
+
4. For any missing or non-existent files found in index:
|
|
35
|
+
- Present a list of all entries that reference non-existent files
|
|
36
|
+
- For each entry:
|
|
37
|
+
- Show the full entry details (title, path, description)
|
|
38
|
+
- Ask for explicit confirmation before removal
|
|
39
|
+
- Provide option to update the path if file was moved
|
|
40
|
+
- Log the decision (remove/update/keep) for final report
|
|
41
|
+
|
|
42
|
+
5. Update `docs/index.md`:
|
|
43
|
+
- Maintain existing structure and organization
|
|
44
|
+
- Create level 2 sections (`##`) for each subfolder
|
|
45
|
+
- List root-level documents first
|
|
46
|
+
- Add missing entries with descriptions
|
|
47
|
+
- Update outdated entries
|
|
48
|
+
- Remove only entries that were confirmed for removal
|
|
49
|
+
- Ensure consistent formatting throughout
|
|
50
|
+
|
|
51
|
+
### Index Structure Format
|
|
52
|
+
|
|
53
|
+
The index should be organized as follows:
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
# Documentation Index
|
|
57
|
+
|
|
58
|
+
## Root Documents
|
|
59
|
+
|
|
60
|
+
### [Document Title](./document.md)
|
|
61
|
+
|
|
62
|
+
Brief description of the document's purpose and contents.
|
|
63
|
+
|
|
64
|
+
### [Another Document](./another.md)
|
|
65
|
+
|
|
66
|
+
Description here.
|
|
67
|
+
|
|
68
|
+
## Folder Name
|
|
69
|
+
|
|
70
|
+
Documents within the `folder-name/` directory:
|
|
71
|
+
|
|
72
|
+
### [Document in Folder](./folder-name/document.md)
|
|
73
|
+
|
|
74
|
+
Description of this document.
|
|
75
|
+
|
|
76
|
+
### [Another in Folder](./folder-name/another.md)
|
|
77
|
+
|
|
78
|
+
Description here.
|
|
79
|
+
|
|
80
|
+
## Another Folder
|
|
81
|
+
|
|
82
|
+
Documents within the `another-folder/` directory:
|
|
83
|
+
|
|
84
|
+
### [Nested Document](./another-folder/document.md)
|
|
85
|
+
|
|
86
|
+
Description of nested document.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Index Entry Format
|
|
90
|
+
|
|
91
|
+
Each entry should follow this format:
|
|
92
|
+
|
|
93
|
+
```markdown
|
|
94
|
+
### [Document Title](relative/path/to/file.md)
|
|
95
|
+
|
|
96
|
+
Brief description of the document's purpose and contents.
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Rules of Operation
|
|
100
|
+
|
|
101
|
+
1. NEVER modify the content of indexed files
|
|
102
|
+
2. Preserve existing descriptions in index.md when they are adequate
|
|
103
|
+
3. Maintain any existing categorization or grouping in the index
|
|
104
|
+
4. Use relative paths for all links (starting with `./`)
|
|
105
|
+
5. Ensure descriptions are concise but informative
|
|
106
|
+
6. NEVER remove entries without explicit confirmation
|
|
107
|
+
7. Report any broken links or inconsistencies found
|
|
108
|
+
8. Allow path updates for moved files before considering removal
|
|
109
|
+
9. Create folder sections using level 2 headings (`##`)
|
|
110
|
+
10. Sort folders alphabetically, with root documents listed first
|
|
111
|
+
11. Within each section, sort documents alphabetically by title
|
|
112
|
+
|
|
113
|
+
### Process Output
|
|
114
|
+
|
|
115
|
+
The task will provide:
|
|
116
|
+
|
|
117
|
+
1. A summary of changes made to index.md
|
|
118
|
+
2. List of newly indexed files (organized by folder)
|
|
119
|
+
3. List of updated entries
|
|
120
|
+
4. List of entries presented for removal and their status:
|
|
121
|
+
- Confirmed removals
|
|
122
|
+
- Updated paths
|
|
123
|
+
- Kept despite missing file
|
|
124
|
+
5. Any new folders discovered
|
|
125
|
+
6. Any other issues or inconsistencies found
|
|
126
|
+
|
|
127
|
+
### Handling Missing Files
|
|
128
|
+
|
|
129
|
+
For each file referenced in the index but not found in the filesystem:
|
|
130
|
+
|
|
131
|
+
1. Present the entry:
|
|
132
|
+
|
|
133
|
+
```markdown
|
|
134
|
+
Missing file detected:
|
|
135
|
+
Title: [Document Title]
|
|
136
|
+
Path: relative/path/to/file.md
|
|
137
|
+
Description: Existing description
|
|
138
|
+
Section: [Root Documents | Folder Name]
|
|
139
|
+
|
|
140
|
+
Options:
|
|
141
|
+
|
|
142
|
+
1. Remove this entry
|
|
143
|
+
2. Update the file path
|
|
144
|
+
3. Keep entry (mark as temporarily unavailable)
|
|
145
|
+
|
|
146
|
+
Please choose an option (1/2/3):
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
2. Wait for user confirmation before taking any action
|
|
150
|
+
3. Log the decision for the final report
|
|
151
|
+
|
|
152
|
+
### Special Cases
|
|
153
|
+
|
|
154
|
+
1. **Sharded Documents**: If a folder contains an `index.md` file, treat it as a sharded document:
|
|
155
|
+
- Use the folder's `index.md` title as the section title
|
|
156
|
+
- List the folder's documents as subsections
|
|
157
|
+
- Note in the description that this is a multi-part document
|
|
158
|
+
|
|
159
|
+
2. **README files**: Convert `README.md` to more descriptive titles based on content
|
|
160
|
+
|
|
161
|
+
3. **Nested Subfolders**: For deeply nested folders, maintain the hierarchy but limit to 2 levels in the main index. Deeper structures should have their own index files.
|
|
162
|
+
|
|
163
|
+
## Required Input
|
|
164
|
+
|
|
165
|
+
Please provide:
|
|
166
|
+
|
|
167
|
+
1. Location of the `docs/` directory (default: `./docs`)
|
|
168
|
+
2. Confirmation of write access to `docs/index.md`
|
|
169
|
+
3. Any specific categorization preferences
|
|
170
|
+
4. Any files or directories to exclude from indexing (e.g., `.git`, `node_modules`)
|
|
171
|
+
5. Whether to include hidden files/folders (starting with `.`)
|
|
172
|
+
|
|
173
|
+
Would you like to proceed with documentation indexing? Please provide the required input above.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# KB Mode Interaction Task
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Provide a user-friendly interface to the TechieFlow knowledge base without overwhelming users with information upfront.
|
|
6
|
+
|
|
7
|
+
## Instructions
|
|
8
|
+
|
|
9
|
+
When entering KB mode (\*kb-mode), follow these steps:
|
|
10
|
+
|
|
11
|
+
### 1. Welcome and Guide
|
|
12
|
+
|
|
13
|
+
Announce entering KB mode with a brief, friendly introduction.
|
|
14
|
+
|
|
15
|
+
### 2. Present Topic Areas
|
|
16
|
+
|
|
17
|
+
Offer a concise list of main topic areas the user might want to explore:
|
|
18
|
+
|
|
19
|
+
**What would you like to know more about?**
|
|
20
|
+
|
|
21
|
+
1. **Setup & Installation** - Getting started with TechieFlow
|
|
22
|
+
2. **Workflows** - Choosing the right workflow for your project
|
|
23
|
+
3. **Web vs IDE** - When to use each environment
|
|
24
|
+
4. **Agents** - Understanding specialized agents and their roles
|
|
25
|
+
5. **Documents** - PRDs, Architecture, Stories, and more
|
|
26
|
+
6. **Agile Process** - How TechieFlow implements Agile methodologies
|
|
27
|
+
7. **Configuration** - Customizing TechieFlow for your needs
|
|
28
|
+
8. **Best Practices** - Tips for effective TechieFlow usage
|
|
29
|
+
|
|
30
|
+
Or ask me about anything else related to TechieFlow!
|
|
31
|
+
|
|
32
|
+
### 3. Respond Contextually
|
|
33
|
+
|
|
34
|
+
- Wait for user's specific question or topic selection
|
|
35
|
+
- Provide focused, relevant information from the knowledge base
|
|
36
|
+
- Offer to dive deeper or explore related topics
|
|
37
|
+
- Keep responses concise unless user asks for detailed explanations
|
|
38
|
+
|
|
39
|
+
### 4. Interactive Exploration
|
|
40
|
+
|
|
41
|
+
- After answering, suggest related topics they might find helpful
|
|
42
|
+
- Maintain conversational flow rather than data dumping
|
|
43
|
+
- Use examples when appropriate
|
|
44
|
+
- Reference specific documentation sections when relevant
|
|
45
|
+
|
|
46
|
+
### 5. Exit Gracefully
|
|
47
|
+
|
|
48
|
+
When user is done or wants to exit KB mode:
|
|
49
|
+
|
|
50
|
+
- Summarize key points discussed if helpful
|
|
51
|
+
- Remind them they can return to KB mode anytime with \*kb-mode
|
|
52
|
+
- Suggest next steps based on what was discussed
|
|
53
|
+
|
|
54
|
+
## Example Interaction
|
|
55
|
+
|
|
56
|
+
**User**: \*kb-mode
|
|
57
|
+
|
|
58
|
+
**Assistant**: I've entered KB mode and have access to the full TechieFlow knowledge base. I can help you with detailed information about any aspect of TechieFlow.
|
|
59
|
+
|
|
60
|
+
**What would you like to know more about?**
|
|
61
|
+
|
|
62
|
+
1. **Setup & Installation** - Getting started with TechieFlow
|
|
63
|
+
2. **Workflows** - Choosing the right workflow for your project
|
|
64
|
+
3. **Web vs IDE** - When to use each environment
|
|
65
|
+
4. **Agents** - Understanding specialized agents and their roles
|
|
66
|
+
5. **Documents** - PRDs, Architecture, Stories, and more
|
|
67
|
+
6. **Agile Process** - How TechieFlow implements Agile methodologies
|
|
68
|
+
7. **Configuration** - Customizing TechieFlow for your needs
|
|
69
|
+
8. **Best Practices** - Tips for effective TechieFlow usage
|
|
70
|
+
|
|
71
|
+
Or ask me about anything else related to TechieFlow!
|
|
72
|
+
|
|
73
|
+
**User**: Tell me about workflows
|
|
74
|
+
|
|
75
|
+
**Assistant**: [Provides focused information about workflows from the KB, then offers to explore specific workflow types or related topics]
|