owflow 0.5.0 → 0.7.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.
Files changed (195) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +448 -261
  3. package/dist/agents/bottleneck-analyzer.md +332 -329
  4. package/dist/agents/code-quality-pragmatist.md +353 -354
  5. package/dist/agents/code-reviewer.md +238 -239
  6. package/dist/agents/codebase-analysis-reporter.md +245 -246
  7. package/dist/agents/docs-operator.md +22 -23
  8. package/dist/agents/e2e-test-verifier.md +447 -448
  9. package/dist/agents/gap-analyzer.md +501 -502
  10. package/dist/agents/implementation-completeness-checker.md +219 -220
  11. package/dist/agents/implementation-planner.md +308 -309
  12. package/dist/agents/information-gatherer.md +690 -691
  13. package/dist/agents/production-readiness-checker.md +278 -279
  14. package/dist/agents/project-analyzer.md +403 -403
  15. package/dist/agents/reality-assessor.md +365 -366
  16. package/dist/agents/research-planner.md +449 -450
  17. package/dist/agents/research-synthesizer.md +402 -403
  18. package/dist/agents/solution-brainstormer.md +256 -257
  19. package/dist/agents/solution-designer.md +371 -372
  20. package/dist/agents/spec-auditor.md +297 -298
  21. package/dist/agents/specification-creator.md +333 -334
  22. package/dist/agents/task-classifier.md +449 -450
  23. package/dist/agents/task-group-implementer.md +283 -284
  24. package/dist/agents/test-suite-runner.md +194 -195
  25. package/dist/agents/user-docs-generator.md +508 -509
  26. package/dist/commands/reviews-code.md +90 -90
  27. package/dist/commands/reviews-pragmatic.md +99 -99
  28. package/dist/commands/reviews-production-readiness.md +113 -113
  29. package/dist/commands/reviews-reality-check.md +110 -110
  30. package/dist/commands/reviews-spec-audit.md +114 -114
  31. package/dist/commands/work.md +280 -280
  32. package/dist/configuration/agents-config.d.ts +2 -0
  33. package/dist/configuration/agents-config.js +8 -44
  34. package/dist/configuration/commands-config.d.ts +23 -0
  35. package/dist/configuration/commands-config.js +17 -17
  36. package/dist/configuration/skills-config.d.ts +2 -0
  37. package/dist/configuration/skills-config.js +3 -3
  38. package/dist/hooks/hooks-diagnostics.d.ts +3 -0
  39. package/dist/hooks/hooks-diagnostics.js +21 -0
  40. package/dist/hooks/hooks-persistence.d.ts +17 -0
  41. package/dist/hooks/hooks-persistence.js +207 -0
  42. package/dist/hooks/hooks-registry.d.ts +6 -0
  43. package/dist/hooks/hooks-registry.js +104 -0
  44. package/dist/hooks/hooks-wrapper.d.ts +25 -0
  45. package/dist/hooks/hooks-wrapper.js +318 -0
  46. package/dist/hooks/internal/before-tool.d.ts +6 -0
  47. package/dist/hooks/internal/before-tool.js +13 -0
  48. package/dist/hooks/internal/session-compaction.d.ts +9 -0
  49. package/dist/hooks/{session-compaction.js → internal/session-compaction.js} +9 -7
  50. package/dist/hooks/runtime/circuit-breaker.d.ts +23 -0
  51. package/dist/hooks/runtime/circuit-breaker.js +39 -0
  52. package/dist/hooks/runtime/failure-policy.d.ts +15 -0
  53. package/dist/hooks/runtime/failure-policy.js +49 -0
  54. package/dist/hooks/runtime/process-executor.d.ts +33 -0
  55. package/dist/hooks/runtime/process-executor.js +147 -0
  56. package/dist/hooks/runtime/status-recorder.d.ts +27 -0
  57. package/dist/hooks/runtime/status-recorder.js +111 -0
  58. package/dist/index.d.ts +7 -0
  59. package/dist/index.js +111 -40
  60. package/dist/skills/agents-md-generator/SKILL.md +223 -223
  61. package/dist/skills/codebase-analyzer/SKILL.md +162 -162
  62. package/dist/skills/codebase-analyzer/references/code-analysis.md +63 -63
  63. package/dist/skills/codebase-analyzer/references/combined.md +31 -31
  64. package/dist/skills/codebase-analyzer/references/context-discovery.md +63 -63
  65. package/dist/skills/codebase-analyzer/references/file-discovery.md +51 -51
  66. package/dist/skills/codebase-analyzer/references/migration-target.md +23 -23
  67. package/dist/skills/codebase-analyzer/references/pattern-mining.md +22 -22
  68. package/dist/skills/dev-analyze/SKILL.md +115 -115
  69. package/dist/skills/dev-bugfix/SKILL.md +452 -452
  70. package/dist/skills/dev-finalize/SKILL.md +118 -118
  71. package/dist/skills/dev-implement/SKILL.md +167 -167
  72. package/dist/skills/dev-plan/SKILL.md +147 -147
  73. package/dist/skills/dev-spec/SKILL.md +182 -182
  74. package/dist/skills/dev-tdd-red/SKILL.md +94 -94
  75. package/dist/skills/dev-verify/SKILL.md +153 -153
  76. package/dist/skills/development/SKILL.md +260 -260
  77. package/dist/skills/diagrams-mermaid/SKILL.md +183 -159
  78. package/dist/skills/diagrams-mermaid/references/reference.md +220 -148
  79. package/dist/skills/docs-manager/SKILL.md +379 -379
  80. package/dist/skills/docs-manager/docs/INDEX.md +199 -199
  81. package/dist/skills/docs-manager/docs/standards/backend/api.md +25 -25
  82. package/dist/skills/docs-manager/docs/standards/backend/migrations.md +22 -22
  83. package/dist/skills/docs-manager/docs/standards/backend/models.md +25 -25
  84. package/dist/skills/docs-manager/docs/standards/backend/queries.md +22 -22
  85. package/dist/skills/docs-manager/docs/standards/frontend/accessibility.md +25 -25
  86. package/dist/skills/docs-manager/docs/standards/frontend/components.md +28 -28
  87. package/dist/skills/docs-manager/docs/standards/frontend/css.md +16 -16
  88. package/dist/skills/docs-manager/docs/standards/frontend/responsive.md +28 -28
  89. package/dist/skills/docs-manager/docs/standards/global/coding-style.md +25 -25
  90. package/dist/skills/docs-manager/docs/standards/global/commenting.md +10 -10
  91. package/dist/skills/docs-manager/docs/standards/global/conventions.md +31 -31
  92. package/dist/skills/docs-manager/docs/standards/global/error-handling.md +22 -22
  93. package/dist/skills/docs-manager/docs/standards/global/minimal-implementation.md +22 -22
  94. package/dist/skills/docs-manager/docs/standards/global/validation.md +28 -28
  95. package/dist/skills/docs-manager/docs/standards/testing/test-writing.md +25 -25
  96. package/dist/skills/docs-manager/references/agents-md-template.md +29 -29
  97. package/dist/skills/docs-manager/references/index-md-template.md +73 -73
  98. package/dist/skills/flow-init/SKILL.md +234 -234
  99. package/dist/skills/flow-init/references/architecture-template.md +45 -45
  100. package/dist/skills/flow-init/references/roadmap-templates.md +93 -93
  101. package/dist/skills/flow-init/references/tech-stack-template.md +70 -70
  102. package/dist/skills/flow-init/references/vision-templates.md +75 -75
  103. package/dist/skills/goal-development/SKILL.md +96 -96
  104. package/dist/skills/goal-migration/SKILL.md +114 -114
  105. package/dist/skills/goal-performance/SKILL.md +126 -0
  106. package/dist/skills/goal-research/SKILL.md +118 -118
  107. package/dist/skills/html-renderer/SKILL.md +173 -173
  108. package/dist/skills/html-renderer/references/index.html +318 -318
  109. package/dist/skills/html-renderer/references/styles.css +388 -388
  110. package/dist/skills/html-renderer/references/tokens.json +104 -104
  111. package/dist/skills/implementation-plan-executor/SKILL.md +378 -378
  112. package/dist/skills/implementation-verifier/SKILL.md +307 -307
  113. package/dist/skills/migration/SKILL.md +268 -268
  114. package/dist/skills/migration-analyze/SKILL.md +126 -126
  115. package/dist/skills/migration-finalize/SKILL.md +161 -161
  116. package/dist/skills/migration-fix/SKILL.md +155 -155
  117. package/dist/skills/migration-implement/SKILL.md +131 -131
  118. package/dist/skills/migration-plan/SKILL.md +131 -131
  119. package/dist/skills/migration-spec/SKILL.md +135 -135
  120. package/dist/skills/migration-spec/references/migration-strategies.md +430 -430
  121. package/dist/skills/migration-target/SKILL.md +134 -134
  122. package/dist/skills/migration-target/references/migration-types.md +489 -489
  123. package/dist/skills/migration-verify/SKILL.md +184 -184
  124. package/dist/skills/orchestrator-framework/SKILL.md +65 -65
  125. package/dist/skills/orchestrator-framework/references/command-namespacing.md +7 -7
  126. package/dist/skills/orchestrator-framework/references/confirm-or-revise-exception.md +20 -20
  127. package/dist/skills/orchestrator-framework/references/delegation-rules.md +54 -54
  128. package/dist/skills/orchestrator-framework/references/dispatcher-handoff.md +27 -27
  129. package/dist/skills/orchestrator-framework/references/fix-loop-contract.md +65 -65
  130. package/dist/skills/orchestrator-framework/references/gate-contract.md +122 -117
  131. package/dist/skills/orchestrator-framework/references/orchestrator-creation-checklist.md +51 -51
  132. package/dist/skills/orchestrator-framework/references/orchestrator-patterns.md +235 -235
  133. package/dist/skills/performance/SKILL.md +267 -437
  134. package/dist/skills/performance-analyze/SKILL.md +129 -0
  135. package/dist/skills/{performance → performance-analyze}/references/performance-optimization-guide.md +271 -365
  136. package/dist/skills/performance-finalize/SKILL.md +117 -0
  137. package/dist/skills/performance-implement/SKILL.md +114 -0
  138. package/dist/skills/performance-plan/SKILL.md +112 -0
  139. package/dist/skills/performance-spec/SKILL.md +145 -0
  140. package/dist/skills/performance-verify/SKILL.md +164 -0
  141. package/dist/skills/research/SKILL.md +249 -249
  142. package/dist/skills/research-brainstorm/SKILL.md +120 -120
  143. package/dist/skills/research-brainstorm/references/brainstorming-techniques.md +84 -84
  144. package/dist/skills/research-converge/SKILL.md +130 -130
  145. package/dist/skills/research-design/SKILL.md +146 -146
  146. package/dist/skills/research-design/references/design-techniques.md +40 -40
  147. package/dist/skills/research-finalize/SKILL.md +125 -125
  148. package/dist/skills/research-fork/SKILL.md +190 -190
  149. package/dist/skills/research-gather/SKILL.md +133 -133
  150. package/dist/skills/research-plan/SKILL.md +141 -141
  151. package/dist/skills/research-plan/references/research-methodologies.md +710 -710
  152. package/dist/skills/research-quick/SKILL.md +139 -139
  153. package/dist/skills/research-synthesize/SKILL.md +127 -127
  154. package/dist/skills/rule-reviewer/SKILL.md +334 -334
  155. package/dist/skills/standards-discover/SKILL.md +260 -260
  156. package/dist/skills/standards-discover/references/aggregation-strategy.md +76 -76
  157. package/dist/skills/standards-discover/references/code-pattern-prompt.md +68 -68
  158. package/dist/skills/standards-discover/references/config-analyzer-prompt.md +67 -67
  159. package/dist/skills/standards-discover/references/docs-extractor-prompt.md +65 -65
  160. package/dist/skills/standards-discover/references/external-analyzer-prompt.md +75 -75
  161. package/dist/skills/standards-update/SKILL.md +207 -207
  162. package/dist/templates/orchestrator-state-base.yml +17 -17
  163. package/dist/templates/orchestrator-state-development.yml +95 -95
  164. package/dist/templates/orchestrator-state-migration.yml +95 -95
  165. package/dist/templates/orchestrator-state-performance.yml +64 -53
  166. package/dist/templates/orchestrator-state-research.yml +67 -67
  167. package/dist/tools/fork_task.d.ts +17 -0
  168. package/dist/tools/fork_task.js +21 -11
  169. package/dist/tools/verify_template.d.ts +11 -0
  170. package/dist/tools/verify_template.js +32 -17
  171. package/dist/tui/hooks-dialogs.d.ts +20 -0
  172. package/dist/tui/hooks-dialogs.js +181 -0
  173. package/dist/tui/hooks-presenter.d.ts +15 -0
  174. package/dist/tui/hooks-presenter.js +70 -0
  175. package/dist/tui/hooks-sidebar.d.ts +10 -0
  176. package/dist/tui/hooks-sidebar.js +104 -0
  177. package/dist/tui/primitives.d.ts +21 -0
  178. package/dist/tui/primitives.js +47 -0
  179. package/dist/tui.d.ts +12 -0
  180. package/dist/tui.js +129 -0
  181. package/dist/types/hook-types.d.ts +125 -0
  182. package/dist/types/hook-types.js +76 -0
  183. package/dist/types/opencode-types.d.ts +13 -0
  184. package/dist/utils/file-util.d.ts +2 -0
  185. package/dist/utils/file-util.js +6 -6
  186. package/dist/utils/fork-task.d.ts +27 -0
  187. package/dist/utils/fork-task.js +18 -23
  188. package/dist/utils/plugin-info.d.ts +3 -0
  189. package/dist/utils/plugin-info.js +8 -10
  190. package/dist/utils/workflow-paths.d.ts +17 -0
  191. package/dist/utils/workflow-paths.js +18 -0
  192. package/dist/utils/yaml-structure.d.ts +7 -0
  193. package/dist/utils/yaml-structure.js +7 -11
  194. package/package.json +68 -48
  195. package/dist/hooks/before-tool.js +0 -19
@@ -1,159 +1,183 @@
1
- ---
2
- name: owflow:diagrams-mermaid
3
- description: Creates Mermaid diagrams for planning flows, component communication, and architecture views with adaptive detail selection (including C4 levels). This skill should be used when the user asks for a workflow, interaction, or architecture visualization from provided task context.
4
- argument-hint: "[diagram description]"
5
- user-invocable: true
6
- ---
7
-
8
- # Mermaid Diagram Builder
9
-
10
- Generate Mermaid diagrams from task context. Focus on visual structure and communication flow, not domain invention.
11
-
12
- Gates follow the shared contract in [Gate Contract](../orchestrator-framework/references/gate-contract.md) — the "Output Contract" below IS this skill's Exit Gate, and Step 1 (Extract Context) IS the Entry Gate: when required inputs are missing, ask targeted clarification questions (never invent them) before drawing.
13
-
14
- ## 🚨 Core Rules
15
-
16
- 1. **Read `references/reference.md`** (located in the `references/` subdirectory of this skill) before generating any diagram.
17
- 2. **Refine, don't replace** — use the current document or task artifact as source material; add visual precision on top of it and keep required narrative sections intact.
18
- 3. **Never invent domain context** — if required facts are missing (actors, components, boundaries, protocols, decisions), ask targeted clarification questions before drawing the final diagram.
19
- 4. **Output diagrams only as fenced `mermaid` blocks** (non-negotiable):
20
- - ✅ Allowed: ` ```mermaid `
21
- - ❌ Forbidden: ` ```c4plantuml `, ` ```plantuml `, ` ```puml `, ` ```graphviz `, ` ```dot `, ` ```d2 `, or any custom alias.
22
- - This rule cannot be overridden by user preference, template defaults, or legacy examples.
23
-
24
- ---
25
-
26
- ## When to Use
27
-
28
- Use this skill when the user wants:
29
-
30
- - a planning flow diagram,
31
- - component communication visualization,
32
- - architecture-level mapping,
33
- - phase/state transitions in a workflow.
34
-
35
- ---
36
-
37
- ## Output Contract
38
-
39
- When producing a diagram, return:
40
-
41
- 1. **Diagram Type + Detail Rationale** (1-3 lines)
42
- 2. **Diagram in a fenced ` ```mermaid ` block (required)**
43
- 3. **Open Questions** (only if context is incomplete)
44
-
45
- Validation requirement before returning output:
46
-
47
- - Every diagram block in the response uses the `mermaid` fence exactly. Any other fence language is a hard failure.
48
-
49
- If context is incomplete:
50
-
51
- - ask concise clarifying questions first,
52
- - or provide a **Draft diagram** clearly marked as provisional with explicit unknowns.
53
-
54
- ---
55
-
56
- ## Workflow
57
-
58
- ### Step 1: Extract Context
59
-
60
- Extract only explicit facts from user input and referenced artifacts:
61
-
62
- - scope and objective,
63
- - participants/components,
64
- - boundaries (system/service/module),
65
- - key interactions or state transitions,
66
- - constraints and non-goals.
67
-
68
- If any required field is missing for the chosen diagram type, ask for it.
69
-
70
- ### Step 2: Infer Diagram Goal
71
-
72
- Classify what the user needs:
73
-
74
- - **Process logic** -> `flowchart`
75
- - **Time-ordered communication** -> `sequenceDiagram`
76
- - **State transitions / phase gates** -> `stateDiagram-v2`
77
- - **Architecture landscape** -> C4 (`C4Context` / `C4Container` / `C4Component`)
78
-
79
- ### Step 3: Infer Detail Level
80
-
81
- Choose the minimum sufficient detail:
82
-
83
- - **System-level**: external actors/systems only -> `C4Context`
84
- - **Service/container-level**: apps/services/datastores + interfaces -> `C4Container`
85
- - **Module/component-level**: internal components in one container -> `C4Component` (only when implementation-level planning needs it)
86
-
87
- Fallback rule:
88
-
89
- - If C4 is too ambiguous or unstable for the requested artifact, use `flowchart` or `sequenceDiagram`.
90
-
91
- ### Step 4: Build Diagram
92
-
93
- Apply naming and structure rules:
94
-
95
- - Stable IDs, human-readable labels.
96
- - One concern per diagram (split large scope into multiple diagrams).
97
- - For branching logic, use explicit decisions.
98
- - For interactions, use `alt`, `opt`, `par` where needed.
99
-
100
- ### Step 5: Validate Quality
101
-
102
- Run this checklist before final output:
103
-
104
- - Diagram type matches user intent.
105
- - Detail level matches planning need (not over/under detailed).
106
- - No speculative domain entities or links.
107
- - Labels are clear and consistent.
108
- - Syntax is parser-safe.
109
- - All diagram blocks are fenced with ` ```mermaid ` (no alternatives).
110
-
111
- ---
112
-
113
- ## Mermaid/C4 Best Practices
114
-
115
- 1. **Goal-first, syntax-second**: pick the view before drawing nodes.
116
- 2. **Small readable views**: split diagrams instead of creating one overloaded graph.
117
- 3. **Consistent naming**: keep IDs stable and semantic.
118
- 4. **Explicit branching/parallelism**: model alternatives and parallel flows clearly.
119
- 5. **C4 discipline**: do not mix levels (context/container/component) in one diagram.
120
- 6. **Parser safety**:
121
- - quote labels with special characters,
122
- - avoid reserved or fragile node IDs,
123
- - avoid custom style/color directives unless explicitly required.
124
-
125
- ---
126
-
127
- ## Anti-Examples (What Not To Do)
128
-
129
- 1. **Invented domain context (critical anti-pattern)**
130
- Adding components, protocols, or dependencies not present in provided context.
131
-
132
- 2. **Mixed abstraction levels**
133
- Combining system landscape and low-level function internals in a single diagram.
134
-
135
- 3. **Unreadable mega-diagram**
136
- Packing too many nodes/edges into one chart without decomposition.
137
-
138
- 4. **Sequence without temporal semantics**
139
- Using `sequenceDiagram` while omitting real call order, branches, or optional paths.
140
-
141
- 5. **Placeholder naming**
142
- IDs and labels like `A`, `B`, `step1` with no domain meaning.
143
-
144
- 6. **Non-Mermaid diagram fence (hard failure)**
145
- Returning diagrams in ` ```c4plantuml `, ` ```plantuml `, or any other non-`mermaid` fenced format.
146
-
147
- When any anti-pattern appears, stop and refactor the output before returning it.
148
-
149
- ---
150
-
151
- ## C4 Detail Decision Matrix
152
-
153
- | Need | Recommended Type | Minimum Inputs |
154
- | ----------------------------------------------- | ---------------- | ----------------------------------------------- |
155
- | Who interacts with the system? | `C4Context` | actors, external systems, system boundary |
156
- | How services/data stores communicate? | `C4Container` | containers, interfaces, protocols/data flow |
157
- | How one service/module is internally organized? | `C4Component` | container scope, components, internal contracts |
158
-
159
- If minimum inputs are missing, ask questions instead of guessing.
1
+ ---
2
+ name: owflow:diagrams-mermaid
3
+ description: Creates Mermaid diagrams for planning flows, component communication, and architecture views, writes them into the target artifact file with context-derived labels, and themes them github-dark by default (github-light for light surfaces). This skill should be used when the user asks for a workflow, interaction, or architecture visualization from provided task context.
4
+ argument-hint: "[diagram description] [target file path]"
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Mermaid Diagram Builder
9
+
10
+ Generate Mermaid diagrams from task context and write them into the target document. Focus on visual structure and communication flow, not domain invention.
11
+
12
+ Gates follow the shared contract in [Gate Contract](../orchestrator-framework/references/gate-contract.md) — the "Input & Output Contract" below IS this skill's Exit Gate, and Step 1 (Extract Context) IS the Entry Gate: when the target file or required facts are missing, ask targeted clarification questions (never invent them) before drawing.
13
+
14
+ ## 🚨 Core Rules
15
+
16
+ 1. **Read `references/reference.md`** (located in the `references/` subdirectory of this skill) before generating any diagram — it holds the theme directives, the quick type selector, and the minimal templates.
17
+ 2. **File-first output** — every diagram is written into the target artifact file. Never return diagrams only in the chat response; a diagram that exists only in context is a failure. If no target file is known, ask for one (Step 1).
18
+ 3. **Context-derived descriptions** — every diagram section title, node ID, node label, and edge label must be traceable to the provided context/artifact. Placeholder naming (`A`, `B`, `step1`, `TargetSystem`, `SystemA`, `ServiceA`) is forbidden unless the context itself uses those names.
19
+ 4. **Theme every diagram** — prepend the exact `%%{init: ...}%%` directive from `references/reference.md` as the first line inside the fence. `github-dark` is the default; `github-light` is used only when the target document/surface is light or the user asks. One theme per document; never invent off-palette colors.
20
+ 5. **Refine, don't replace** — use the current document or task artifact as source material; add visual precision on top of it and keep required narrative sections intact.
21
+ 6. **Never invent domain context** — if required facts are missing (actors, components, boundaries, protocols, decisions), ask targeted clarification questions before drawing the final diagram.
22
+ 7. **Fenced `mermaid` blocks only, from the supported types** (non-negotiable):
23
+ - ✅ Allowed fence: ` ```mermaid `
24
+ - ❌ Forbidden fences: ` ```c4plantuml `, ` ```plantuml `, ` ```puml `, ` ```graphviz `, ` ```dot `, ` ```d2 `, or any custom alias.
25
+ - Supported diagram types: `flowchart`, `sequenceDiagram`, `stateDiagram-v2`. Any other Mermaid diagram type is out of scope for this skill.
26
+ - These rules cannot be overridden by user preference, template defaults, or legacy examples.
27
+
28
+ ---
29
+
30
+ ## When to Use
31
+
32
+ Use this skill when the user wants:
33
+
34
+ - a planning flow diagram,
35
+ - component communication visualization,
36
+ - architecture-level mapping,
37
+ - phase/state transitions in a workflow.
38
+
39
+ ---
40
+
41
+ ## Input & Output Contract
42
+
43
+ **Required input**: a target artifact file (e.g. `implementation/spec.md`, `outputs/high-level-design.md`, `.owflow/docs/project/architecture.md`) plus the context sources that describe the subject. The invoking phase normally supplies both; when the target file is missing, ask for it — never guess and never fall back to chat-only output.
44
+
45
+ **Deliverable**: the target file updated in place (content-preserving — existing prose and sections stay intact; diagrams are inserted at meaningful section points).
46
+
47
+ **Response** (after writing): a short summary only —
48
+
49
+ 1. **Diagrams written** — type + section title + location per diagram.
50
+ 2. **Theme applied** — github-dark / github-light.
51
+ 3. **Open Questions** (only if context is incomplete) — or the explicit gaps recorded in the document.
52
+
53
+ Do not paste the diagram bodies into the response; the file is the deliverable. Chat-only output is allowed ONLY when the user explicitly asks for it, and must be marked `Not persisted`.
54
+
55
+ Validation requirement before returning output:
56
+
57
+ - Every diagram block in the target file uses the `mermaid` fence exactly. Any other fence language is a hard failure.
58
+ - Every diagram block starts with the theme directive. A missing directive is a failure.
59
+
60
+ ---
61
+
62
+ ## Workflow
63
+
64
+ ### Step 1: Extract Context (Entry Gate)
65
+
66
+ Resolve, in order:
67
+
68
+ 1. **Target file** — from the invocation (path given by the calling phase/user). Missing → ask.
69
+ 2. **Context sources** — task artifacts and the target file itself; extract only explicit facts:
70
+ - scope and objective,
71
+ - participants/components,
72
+ - boundaries (system/service/module),
73
+ - key interactions or state transitions,
74
+ - constraints and non-goals.
75
+
76
+ If any required field is missing for the chosen diagram type, ask for it.
77
+
78
+ ### Step 2: Infer Diagram Goal
79
+
80
+ Classify what the user needs:
81
+
82
+ - **Process logic** -> `flowchart`
83
+ - **Time-ordered communication** -> `sequenceDiagram`
84
+ - **State transitions / phase gates** -> `stateDiagram-v2`
85
+ - **Architecture landscape** -> `flowchart` with `subgraph` boundaries
86
+
87
+ ### Step 3: Infer Detail Level
88
+
89
+ Choose the minimum sufficient detail for architecture views:
90
+
91
+ - **Landscape**: external actors/systems plus one boundary `subgraph`.
92
+ - **Container/service**: apps/services/datastores as nodes inside boundary `subgraph`s, labeled edges for interfaces.
93
+ - **Module/component**: internal components in one container (only when implementation-level planning needs it), nested `subgraph`s.
94
+
95
+ Do not mix levels in one diagram; split into multiple diagrams when scope grows.
96
+
97
+ ### Step 4: Build Diagram
98
+
99
+ Apply naming and structure rules:
100
+
101
+ - Stable IDs, human-readable labels taken from context (Rule 3).
102
+ - One concern per diagram (split large scope into multiple diagrams).
103
+ - Architecture views: `subgraph` marks the boundary; label edges with the interaction (HTTP, event, file, query).
104
+ - For branching logic, use explicit decisions; for interactions use `alt`, `opt`, `par` where needed.
105
+ - Orientation: `LR` for wide flows, `TB` for narrow documents.
106
+ - Theme directive first (Rule 4); no other style/color directives.
107
+
108
+ ### Step 5: Write to Target File
109
+
110
+ 1. Edit the target artifact in place — never rewrite the document; insert diagram sections at meaningful points (after the prose they illustrate, or under an existing architecture/flow heading).
111
+ 2. Each diagram gets a short section heading whose wording comes from the context (e.g. `### Registration request flow`), followed by the fenced block.
112
+ 3. If the target file does not exist yet, create it only when the invoking phase explicitly allows it; otherwise ask.
113
+ 4. Record gaps (missing context) as an explicit open-questions note in the document, never as invented entities.
114
+
115
+ ### Step 6: Validate Quality
116
+
117
+ Run this checklist before final output:
118
+
119
+ - Target file was actually updated (diagram text present in the file).
120
+ - Every title/label traceable to context (no placeholders).
121
+ - Diagram type matches user intent and is in the supported set.
122
+ - Detail level matches planning need (not over/under detailed).
123
+ - No speculative domain entities or links.
124
+ - Labels are clear and consistent.
125
+ - Syntax is parser-safe.
126
+ - All diagram blocks fenced with ` ```mermaid ` and each starts with the theme directive (no alternatives, no off-palette colors).
127
+
128
+ ---
129
+
130
+ ## Mermaid Best Practices
131
+
132
+ 1. **Goal-first, syntax-second**: pick the view before drawing nodes.
133
+ 2. **Small readable views**: split diagrams instead of creating one overloaded graph.
134
+ 3. **Consistent naming**: keep IDs stable and semantic; labels from context.
135
+ 4. **Explicit branching/parallelism**: model alternatives and parallel flows clearly.
136
+ 5. **Boundary discipline**: `subgraph` marks the system/service boundary; do not mix abstraction levels in one diagram.
137
+ 6. **Theme consistency**: same directive across a document; never encode meaning in color alone.
138
+ 7. **Parser safety**:
139
+ - quote labels with special characters,
140
+ - avoid reserved or fragile node IDs,
141
+ - avoid custom style/color directives beyond the theme directive.
142
+
143
+ ---
144
+
145
+ ## Anti-Examples (What Not To Do)
146
+
147
+ 1. **Chat-only diagram (critical anti-pattern)**
148
+ Returning a fenced block in the response while the target file stays unchanged.
149
+
150
+ 2. **Invented domain context (critical anti-pattern)**
151
+ Adding components, protocols, or dependencies not present in provided context.
152
+
153
+ 3. **Placeholder naming**
154
+ IDs and labels like `A`, `B`, `step1`, `TargetSystem`, `WebApp` when the context has real names.
155
+
156
+ 4. **Mixed abstraction levels**
157
+ Combining system landscape and low-level function internals in a single diagram.
158
+
159
+ 5. **Unreadable mega-diagram**
160
+ Packing too many nodes/edges into one chart without decomposition.
161
+
162
+ 6. **Sequence without temporal semantics**
163
+ Using `sequenceDiagram` while omitting real call order, branches, or optional paths.
164
+
165
+ 7. **Off-palette styling**
166
+ Custom `style`/`classDef` colors or a second theme directive fighting the github theme.
167
+
168
+ 8. **Non-Mermaid diagram fence (hard failure)**
169
+ Returning diagrams in ` ```c4plantuml `, ` ```plantuml `, or any other non-`mermaid` fenced format.
170
+
171
+ When any anti-pattern appears, stop and refactor the output before returning it.
172
+
173
+ ---
174
+
175
+ ## Architecture View Matrix
176
+
177
+ | Need | Recommended Type | Minimum Inputs |
178
+ | ----------------------------------------------- | ----------------------------------- | ----------------------------------------------- |
179
+ | Who interacts with the system? | `flowchart` + actor/external nodes | actors, external systems, system boundary |
180
+ | How services/data stores communicate? | `flowchart` + boundary `subgraph`s | containers, interfaces, protocols/data flow |
181
+ | How one service/module is internally organized? | `flowchart` + nested `subgraph`s | container scope, components, internal contracts |
182
+
183
+ If minimum inputs are missing, ask questions instead of guessing.