@vpxa/aikit 0.1.74 → 0.1.75

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 (134) hide show
  1. package/package.json +6 -1
  2. package/packages/cli/dist/index.js +2 -2
  3. package/packages/cli/dist/{init-DQkar6Es.js → init-CuRXmyD9.js} +1 -1
  4. package/packages/cli/dist/scaffold-WMQ2uQ48.js +2 -0
  5. package/packages/cli/dist/{user-CopNWxHP.js → user-vbJwa7x2.js} +1 -1
  6. package/scaffold/dist/adapters/claude-code.mjs +4 -0
  7. package/scaffold/dist/adapters/copilot.mjs +75 -0
  8. package/scaffold/dist/adapters/flows.mjs +1 -0
  9. package/scaffold/dist/adapters/skills.mjs +1 -0
  10. package/scaffold/{compiled → dist/compiled}/flows-data.mjs +304 -446
  11. package/scaffold/{compiled → dist/compiled}/skills-data.mjs +554 -2281
  12. package/scaffold/dist/definitions/agents.mjs +9 -0
  13. package/scaffold/{definitions → dist/definitions}/bodies.mjs +6 -229
  14. package/scaffold/dist/definitions/exclusions.mjs +1 -0
  15. package/scaffold/dist/definitions/hooks.mjs +1 -0
  16. package/scaffold/dist/definitions/models.mjs +1 -0
  17. package/scaffold/dist/definitions/plugins.mjs +1 -0
  18. package/scaffold/{definitions → dist/definitions}/prompts.mjs +9 -149
  19. package/scaffold/{definitions → dist/definitions}/protocols.mjs +9 -37
  20. package/scaffold/dist/definitions/tools.mjs +1 -0
  21. package/packages/cli/dist/scaffold-ukCDW3wQ.js +0 -2
  22. package/scaffold/_preview/agents/Architect-Reviewer-Alpha.agent.md +0 -132
  23. package/scaffold/_preview/agents/Architect-Reviewer-Beta.agent.md +0 -132
  24. package/scaffold/_preview/agents/Code-Reviewer-Alpha.agent.md +0 -112
  25. package/scaffold/_preview/agents/Code-Reviewer-Beta.agent.md +0 -112
  26. package/scaffold/_preview/agents/Debugger.agent.md +0 -412
  27. package/scaffold/_preview/agents/Documenter.agent.md +0 -468
  28. package/scaffold/_preview/agents/Explorer.agent.md +0 -76
  29. package/scaffold/_preview/agents/Frontend.agent.md +0 -440
  30. package/scaffold/_preview/agents/Implementer.agent.md +0 -425
  31. package/scaffold/_preview/agents/Orchestrator.agent.md +0 -452
  32. package/scaffold/_preview/agents/Planner.agent.md +0 -481
  33. package/scaffold/_preview/agents/README.md +0 -57
  34. package/scaffold/_preview/agents/Refactor.agent.md +0 -435
  35. package/scaffold/_preview/agents/Researcher-Alpha.agent.md +0 -151
  36. package/scaffold/_preview/agents/Researcher-Beta.agent.md +0 -152
  37. package/scaffold/_preview/agents/Researcher-Delta.agent.md +0 -153
  38. package/scaffold/_preview/agents/Researcher-Gamma.agent.md +0 -152
  39. package/scaffold/_preview/agents/Security.agent.md +0 -433
  40. package/scaffold/_preview/agents/_shared/architect-reviewer-base.md +0 -104
  41. package/scaffold/_preview/agents/_shared/code-agent-base.md +0 -366
  42. package/scaffold/_preview/agents/_shared/code-reviewer-base.md +0 -87
  43. package/scaffold/_preview/agents/_shared/decision-protocol.md +0 -27
  44. package/scaffold/_preview/agents/_shared/forge-protocol.md +0 -90
  45. package/scaffold/_preview/agents/_shared/researcher-base.md +0 -114
  46. package/scaffold/_preview/agents/templates/adr-template.md +0 -28
  47. package/scaffold/_preview/agents/templates/execution-state.md +0 -26
  48. package/scaffold/_preview/flows/_epilogue/steps/docs-sync/README.md +0 -120
  49. package/scaffold/_preview/flows/aikit-advanced/README.md +0 -70
  50. package/scaffold/_preview/flows/aikit-advanced/steps/design/README.md +0 -178
  51. package/scaffold/_preview/flows/aikit-advanced/steps/execute/README.md +0 -145
  52. package/scaffold/_preview/flows/aikit-advanced/steps/plan/README.md +0 -122
  53. package/scaffold/_preview/flows/aikit-advanced/steps/spec/README.md +0 -121
  54. package/scaffold/_preview/flows/aikit-advanced/steps/task/README.md +0 -119
  55. package/scaffold/_preview/flows/aikit-advanced/steps/verify/README.md +0 -145
  56. package/scaffold/_preview/flows/aikit-basic/README.md +0 -51
  57. package/scaffold/_preview/flows/aikit-basic/steps/assess/README.md +0 -109
  58. package/scaffold/_preview/flows/aikit-basic/steps/design/README.md +0 -116
  59. package/scaffold/_preview/flows/aikit-basic/steps/implement/README.md +0 -131
  60. package/scaffold/_preview/flows/aikit-basic/steps/verify/README.md +0 -123
  61. package/scaffold/_preview/prompts/aikit-ask.prompt.md +0 -13
  62. package/scaffold/_preview/prompts/aikit-debug.prompt.md +0 -15
  63. package/scaffold/_preview/prompts/aikit-design.prompt.md +0 -15
  64. package/scaffold/_preview/prompts/aikit-flow-add.prompt.md +0 -84
  65. package/scaffold/_preview/prompts/aikit-flow-create.prompt.md +0 -80
  66. package/scaffold/_preview/prompts/aikit-flow-manage.prompt.md +0 -24
  67. package/scaffold/_preview/prompts/aikit-implement.prompt.md +0 -17
  68. package/scaffold/_preview/prompts/aikit-plan.prompt.md +0 -15
  69. package/scaffold/_preview/prompts/aikit-review.prompt.md +0 -24
  70. package/scaffold/_preview/skills/adr-skill/SKILL.md +0 -335
  71. package/scaffold/_preview/skills/adr-skill/assets/templates/adr-madr.md +0 -89
  72. package/scaffold/_preview/skills/adr-skill/assets/templates/adr-readme.md +0 -20
  73. package/scaffold/_preview/skills/adr-skill/assets/templates/adr-simple.md +0 -46
  74. package/scaffold/_preview/skills/adr-skill/references/adr-conventions.md +0 -95
  75. package/scaffold/_preview/skills/adr-skill/references/examples.md +0 -193
  76. package/scaffold/_preview/skills/adr-skill/references/review-checklist.md +0 -77
  77. package/scaffold/_preview/skills/adr-skill/references/template-variants.md +0 -52
  78. package/scaffold/_preview/skills/adr-skill/scripts/bootstrap_adr.js +0 -259
  79. package/scaffold/_preview/skills/adr-skill/scripts/new_adr.js +0 -391
  80. package/scaffold/_preview/skills/adr-skill/scripts/set_adr_status.js +0 -169
  81. package/scaffold/_preview/skills/aikit/SKILL.md +0 -754
  82. package/scaffold/_preview/skills/brainstorming/SKILL.md +0 -265
  83. package/scaffold/_preview/skills/brainstorming/spec-document-reviewer-prompt.md +0 -49
  84. package/scaffold/_preview/skills/c4-architecture/SKILL.md +0 -389
  85. package/scaffold/_preview/skills/c4-architecture/references/advanced-patterns.md +0 -552
  86. package/scaffold/_preview/skills/c4-architecture/references/c4-syntax.md +0 -510
  87. package/scaffold/_preview/skills/c4-architecture/references/common-mistakes.md +0 -437
  88. package/scaffold/_preview/skills/c4-architecture/references/html-design-system.md +0 -337
  89. package/scaffold/_preview/skills/c4-architecture/references/html-template.html +0 -627
  90. package/scaffold/_preview/skills/docs/SKILL.md +0 -553
  91. package/scaffold/_preview/skills/docs/references/diataxis-anti-patterns.md +0 -147
  92. package/scaffold/_preview/skills/docs/references/diataxis-compass.md +0 -123
  93. package/scaffold/_preview/skills/docs/references/diataxis-quadrants.md +0 -192
  94. package/scaffold/_preview/skills/docs/references/diataxis-quality.md +0 -76
  95. package/scaffold/_preview/skills/docs/references/diataxis-templates.md +0 -120
  96. package/scaffold/_preview/skills/docs/references/flow-artifacts-guide.md +0 -70
  97. package/scaffold/_preview/skills/docs/references/project-knowledge-gotchas.md +0 -32
  98. package/scaffold/_preview/skills/docs/references/project-knowledge-templates.md +0 -281
  99. package/scaffold/_preview/skills/docs/references/project-knowledge-workflow.md +0 -80
  100. package/scaffold/_preview/skills/frontend-design/SKILL.md +0 -237
  101. package/scaffold/_preview/skills/lesson-learned/SKILL.md +0 -113
  102. package/scaffold/_preview/skills/lesson-learned/references/anti-patterns.md +0 -55
  103. package/scaffold/_preview/skills/lesson-learned/references/se-principles.md +0 -109
  104. package/scaffold/_preview/skills/multi-agents-development/SKILL.md +0 -448
  105. package/scaffold/_preview/skills/multi-agents-development/architecture-review-prompt.md +0 -81
  106. package/scaffold/_preview/skills/multi-agents-development/code-quality-review-prompt.md +0 -91
  107. package/scaffold/_preview/skills/multi-agents-development/implementer-prompt.md +0 -93
  108. package/scaffold/_preview/skills/multi-agents-development/parallel-dispatch-example.md +0 -167
  109. package/scaffold/_preview/skills/multi-agents-development/spec-review-prompt.md +0 -81
  110. package/scaffold/_preview/skills/present/SKILL.md +0 -616
  111. package/scaffold/_preview/skills/react/SKILL.md +0 -309
  112. package/scaffold/_preview/skills/repo-access/SKILL.md +0 -178
  113. package/scaffold/_preview/skills/repo-access/references/error-patterns.md +0 -116
  114. package/scaffold/_preview/skills/repo-access/references/platform-matrix.md +0 -142
  115. package/scaffold/_preview/skills/requirements-clarity/SKILL.md +0 -333
  116. package/scaffold/_preview/skills/session-handoff/SKILL.md +0 -199
  117. package/scaffold/_preview/skills/session-handoff/references/handoff-template.md +0 -139
  118. package/scaffold/_preview/skills/session-handoff/references/resume-checklist.md +0 -80
  119. package/scaffold/_preview/skills/session-handoff/scripts/check_staleness.js +0 -269
  120. package/scaffold/_preview/skills/session-handoff/scripts/create_handoff.js +0 -299
  121. package/scaffold/_preview/skills/session-handoff/scripts/list_handoffs.js +0 -113
  122. package/scaffold/_preview/skills/session-handoff/scripts/validate_handoff.js +0 -241
  123. package/scaffold/_preview/skills/typescript/SKILL.md +0 -405
  124. package/scaffold/adapters/claude-code.mjs +0 -73
  125. package/scaffold/adapters/copilot.mjs +0 -292
  126. package/scaffold/adapters/flows.mjs +0 -27
  127. package/scaffold/adapters/skills.mjs +0 -25
  128. package/scaffold/definitions/agents.mjs +0 -266
  129. package/scaffold/definitions/exclusions.mjs +0 -58
  130. package/scaffold/definitions/hooks.mjs +0 -43
  131. package/scaffold/definitions/models.mjs +0 -84
  132. package/scaffold/definitions/plugins.mjs +0 -147
  133. package/scaffold/definitions/tools.mjs +0 -250
  134. package/scaffold/generate.mjs +0 -92
@@ -1,510 +0,0 @@
1
- # C4 Mermaid Diagram Syntax Reference
2
-
3
- Complete syntax reference for Mermaid C4 diagrams. Compatible with PlantUML C4 syntax.
4
-
5
- ## Table of Contents
6
-
7
- 1. [Diagram Types](#diagram-types)
8
- 2. [System Context Elements](#system-context-elements)
9
- 3. [Container Elements](#container-elements)
10
- 4. [Component Elements](#component-elements)
11
- 5. [Deployment Elements](#deployment-elements)
12
- 6. [Relationship Types](#relationship-types)
13
- 7. [Boundaries](#boundaries)
14
- 8. [Styling](#styling)
15
- 9. [Layout Configuration](#layout-configuration)
16
- 10. [Parameter Syntax](#parameter-syntax)
17
- 11. [Complete Examples](#complete-examples)
18
- 12. [Mermaid Limitations](#mermaid-limitations)
19
-
20
- ## Diagram Types
21
-
22
- Start each diagram with the appropriate type declaration:
23
-
24
- | Type | Declaration | Purpose |
25
- |------|-------------|---------|
26
- | System Context | `C4Context` | Shows system in context with users and external systems |
27
- | Container | `C4Container` | Shows high-level technical building blocks |
28
- | Component | `C4Component` | Shows internal components within a container |
29
- | Dynamic | `C4Dynamic` | Shows request flows with numbered sequence |
30
- | Deployment | `C4Deployment` | Shows infrastructure and deployment nodes |
31
-
32
- ## System Context Elements
33
-
34
- ### Person
35
- ```
36
- Person(alias, label, ?descr)
37
- Person_Ext(alias, label, ?descr) # External person
38
- ```
39
-
40
- ### System
41
- ```
42
- System(alias, label, ?descr)
43
- System_Ext(alias, label, ?descr) # External system
44
- SystemDb(alias, label, ?descr) # Database system
45
- SystemDb_Ext(alias, label, ?descr) # External database
46
- SystemQueue(alias, label, ?descr) # Message queue
47
- SystemQueue_Ext(alias, label, ?descr)
48
- ```
49
-
50
- ## Container Elements
51
-
52
- ### Container
53
- ```
54
- Container(alias, label, ?techn, ?descr)
55
- Container_Ext(alias, label, ?techn, ?descr)
56
- ContainerDb(alias, label, ?techn, ?descr)
57
- ContainerDb_Ext(alias, label, ?techn, ?descr)
58
- ContainerQueue(alias, label, ?techn, ?descr)
59
- ContainerQueue_Ext(alias, label, ?techn, ?descr)
60
- ```
61
-
62
- ## Component Elements
63
-
64
- ### Component
65
- ```
66
- Component(alias, label, ?techn, ?descr)
67
- Component_Ext(alias, label, ?techn, ?descr)
68
- ComponentDb(alias, label, ?techn, ?descr)
69
- ComponentDb_Ext(alias, label, ?techn, ?descr)
70
- ComponentQueue(alias, label, ?techn, ?descr)
71
- ComponentQueue_Ext(alias, label, ?techn, ?descr)
72
- ```
73
-
74
- ## Deployment Elements
75
-
76
- ### Deployment Node
77
- ```
78
- Deployment_Node(alias, label, ?type, ?descr) { ... }
79
- Node(alias, label, ?type, ?descr) { ... } # Shorthand
80
- Node_L(alias, label, ?type, ?descr) { ... } # Left-aligned
81
- Node_R(alias, label, ?type, ?descr) { ... } # Right-aligned
82
- ```
83
-
84
- Deployment nodes can be nested:
85
- ```mermaid
86
- C4Deployment
87
- title Nested Deployment Nodes
88
-
89
- Deployment_Node(dc, "Data Center", "Physical") {
90
- Deployment_Node(server, "Web Server", "Ubuntu 22.04") {
91
- Container(app, "Application", "Node.js", "Serves API")
92
- }
93
- }
94
- ```
95
-
96
- ## Relationship Types
97
-
98
- ### Basic Relationships
99
- ```
100
- Rel(from, to, label)
101
- Rel(from, to, label, ?techn)
102
- Rel(from, to, label, ?techn, ?descr)
103
- ```
104
-
105
- ### Bidirectional
106
- ```
107
- BiRel(from, to, label)
108
- BiRel(from, to, label, ?techn)
109
- ```
110
-
111
- ### Directional Hints
112
- ```
113
- Rel_U(from, to, label) # Upward
114
- Rel_Up(from, to, label) # Upward (alias)
115
- Rel_D(from, to, label) # Downward
116
- Rel_Down(from, to, label) # Downward (alias)
117
- Rel_L(from, to, label) # Leftward
118
- Rel_Left(from, to, label) # Leftward (alias)
119
- Rel_R(from, to, label) # Rightward
120
- Rel_Right(from, to, label)# Rightward (alias)
121
- Rel_Back(from, to, label) # Reverse direction
122
- ```
123
-
124
- ### Dynamic Diagram Relationships
125
- ```
126
- RelIndex(index, from, to, label)
127
- ```
128
- Note: Index parameter is ignored; sequence determined by statement order.
129
-
130
- ## Boundaries
131
-
132
- ### Enterprise Boundary
133
- ```
134
- Enterprise_Boundary(alias, label) {
135
- # Systems and people go here
136
- }
137
- ```
138
-
139
- ### System Boundary
140
- ```
141
- System_Boundary(alias, label) {
142
- # Containers go here
143
- }
144
- ```
145
-
146
- ### Container Boundary
147
- ```
148
- Container_Boundary(alias, label) {
149
- # Components go here
150
- }
151
- ```
152
-
153
- ### Generic Boundary
154
- ```
155
- Boundary(alias, label, ?type) {
156
- # Elements go here
157
- }
158
- ```
159
-
160
- ## Styling
161
-
162
- ### Update Element Style
163
- ```
164
- UpdateElementStyle(elementAlias, $bgColor, $fontColor, $borderColor, $shadowing, $shape)
165
- ```
166
-
167
- Available parameters (all optional, use `$name=value` syntax):
168
- - `$bgColor` - Background color
169
- - `$fontColor` - Text color
170
- - `$borderColor` - Border color
171
- - `$shadowing` - Enable/disable shadow
172
- - `$shape` - Element shape
173
-
174
- ### Update Relationship Style
175
- ```
176
- UpdateRelStyle(from, to, $textColor, $lineColor, $offsetX, $offsetY)
177
- ```
178
-
179
- Available parameters:
180
- - `$textColor` - Label text color
181
- - `$lineColor` - Line color
182
- - `$offsetX` - Horizontal label offset (pixels)
183
- - `$offsetY` - Vertical label offset (pixels)
184
-
185
- **Tip:** Use `$offsetX` and `$offsetY` to fix overlapping relationship labels:
186
- ```mermaid
187
- C4Context
188
- Person(user, "User")
189
- System(api, "API")
190
-
191
- Rel(user, api, "Uses", "HTTPS")
192
- UpdateRelStyle(user, api, $offsetY="-20")
193
- ```
194
-
195
- ## Layout Configuration
196
-
197
- ```
198
- UpdateLayoutConfig($c4ShapeInRow, $c4BoundaryInRow)
199
- ```
200
-
201
- - `$c4ShapeInRow` - Number of shapes per row (default: 4)
202
- - `$c4BoundaryInRow` - Number of boundaries per row (default: 2)
203
-
204
- **Example - Reduce crowding:**
205
- ```mermaid
206
- C4Context
207
- title Less Crowded Layout
208
-
209
- UpdateLayoutConfig($c4ShapeInRow="2", $c4BoundaryInRow="1")
210
-
211
- Person(user, "User")
212
- System(sys1, "System 1")
213
- System(sys2, "System 2")
214
- ```
215
-
216
- ## Parameter Syntax
217
-
218
- Two ways to pass optional parameters:
219
-
220
- ### Positional (in order)
221
- ```
222
- Rel(customerA, bankA, "Uses", "HTTPS")
223
- UpdateRelStyle(customerA, bankA, "red", "blue", "-40", "60")
224
- ```
225
-
226
- ### Named (with $ prefix, any order)
227
- ```
228
- UpdateRelStyle(customerA, bankA, $offsetX="-40", $offsetY="60", $lineColor="blue")
229
- ```
230
-
231
- ## Complete Examples
232
-
233
- ### C4Context Example
234
- ```mermaid
235
- C4Context
236
- title System Context diagram for Internet Banking System
237
-
238
- Enterprise_Boundary(b0, "Bank") {
239
- Person(customer, "Banking Customer", "A customer with bank accounts")
240
- System(bankingSystem, "Internet Banking System", "View accounts and make payments")
241
-
242
- Enterprise_Boundary(b1, "Internal Systems") {
243
- SystemDb_Ext(mainframe, "Mainframe", "Core banking data")
244
- System_Ext(email, "E-mail System", "Microsoft Exchange")
245
- }
246
- }
247
-
248
- BiRel(customer, bankingSystem, "Uses")
249
- Rel(bankingSystem, mainframe, "Reads/writes", "JDBC")
250
- Rel(bankingSystem, email, "Sends emails", "SMTP")
251
- Rel(email, customer, "Sends emails to")
252
-
253
- UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1")
254
- ```
255
-
256
- ### C4Container Example
257
- ```mermaid
258
- C4Container
259
- title Container diagram for Internet Banking System
260
-
261
- Person(customer, "Customer", "Bank customer with accounts")
262
- System_Ext(email, "E-Mail System", "Microsoft Exchange")
263
- System_Ext(mainframe, "Mainframe Banking System", "Core banking")
264
-
265
- Container_Boundary(c1, "Internet Banking") {
266
- Container(spa, "Single-Page App", "JavaScript, Angular", "Banking UI")
267
- Container(mobile, "Mobile App", "C#, Xamarin", "Mobile banking")
268
- Container(api, "API Application", "Java, Spring MVC", "Banking API")
269
- ContainerDb(db, "Database", "SQL Server", "User data, logs")
270
- }
271
-
272
- Rel(customer, spa, "Uses", "HTTPS")
273
- Rel(customer, mobile, "Uses")
274
- Rel(spa, api, "Uses", "JSON/HTTPS")
275
- Rel(mobile, api, "Uses", "JSON/HTTPS")
276
- Rel(api, db, "Reads/writes", "JDBC")
277
- Rel(api, mainframe, "Uses", "XML/HTTPS")
278
- Rel(api, email, "Sends emails", "SMTP")
279
- ```
280
-
281
- ### C4Component Example
282
- ```mermaid
283
- C4Component
284
- title Component diagram for API Application
285
-
286
- Container(spa, "Single Page App", "Angular", "Banking UI")
287
- ContainerDb(db, "Database", "SQL Server", "User data")
288
- System_Ext(mainframe, "Mainframe", "Core banking")
289
-
290
- Container_Boundary(api, "API Application") {
291
- Component(signIn, "Sign In Controller", "Spring MVC", "User authentication")
292
- Component(accounts, "Accounts Controller", "Spring MVC", "Account operations")
293
- Component(security, "Security Component", "Spring Bean", "Auth logic")
294
- Component(facade, "Mainframe Facade", "Spring Bean", "Mainframe integration")
295
- }
296
-
297
- Rel(spa, signIn, "Uses", "JSON/HTTPS")
298
- Rel(spa, accounts, "Uses", "JSON/HTTPS")
299
- Rel(signIn, security, "Uses")
300
- Rel(accounts, facade, "Uses")
301
- Rel(security, db, "Reads/writes", "JDBC")
302
- Rel(facade, mainframe, "Uses", "XML/HTTPS")
303
- ```
304
-
305
- ### C4Dynamic Example
306
- ```mermaid
307
- C4Dynamic
308
- title Dynamic diagram - User Sign In Flow
309
-
310
- ContainerDb(db, "Database", "SQL Server", "User credentials")
311
- Container(spa, "Single-Page App", "Angular", "Banking UI")
312
-
313
- Container_Boundary(api, "API Application") {
314
- Component(signIn, "Sign In Controller", "Spring MVC", "Authentication endpoint")
315
- Component(security, "Security Component", "Spring Bean", "Validates credentials")
316
- }
317
-
318
- Rel(spa, signIn, "1. Submit credentials", "JSON/HTTPS")
319
- Rel(signIn, security, "2. Validate")
320
- Rel(security, db, "3. Query user", "JDBC")
321
- ```
322
-
323
- ### C4Deployment Example
324
- ```mermaid
325
- C4Deployment
326
- title Deployment Diagram - Production
327
-
328
- Deployment_Node(mobile, "Customer's Mobile", "iOS/Android") {
329
- Container(mobileApp, "Mobile App", "Xamarin", "Mobile banking")
330
- }
331
-
332
- Deployment_Node(browser, "Customer's Browser", "Chrome/Firefox") {
333
- Container(spa, "SPA", "Angular", "Web banking")
334
- }
335
-
336
- Deployment_Node(dc, "Data Center", "AWS") {
337
- Deployment_Node(web, "Web Tier", "EC2") {
338
- Container(api, "API", "Spring Boot", "Banking API")
339
- }
340
- Deployment_Node(data, "Data Tier", "RDS") {
341
- ContainerDb(db, "Database", "PostgreSQL", "Banking data")
342
- }
343
- }
344
-
345
- Rel(mobileApp, api, "API calls", "HTTPS")
346
- Rel(spa, api, "API calls", "HTTPS")
347
- Rel(api, db, "Reads/writes", "JDBC")
348
- ```
349
-
350
- ### E-commerce Microservices Example
351
- ```mermaid
352
- C4Container
353
- title E-commerce Platform - Container Diagram
354
-
355
- Person(customer, "Customer", "Online shopper")
356
- Person(admin, "Admin", "Store manager")
357
-
358
- System_Ext(payment, "Stripe", "Payment processing")
359
- System_Ext(shipping, "FedEx API", "Shipping rates")
360
-
361
- Container_Boundary(platform, "E-commerce Platform") {
362
- Container(web, "Web App", "React", "Customer storefront")
363
- Container(adminApp, "Admin Portal", "React", "Management UI")
364
- Container(gateway, "API Gateway", "Kong", "Routes and auth")
365
-
366
- Container(orderSvc, "Order Service", "Node.js", "Order processing")
367
- Container(productSvc, "Product Service", "Go", "Product catalog")
368
- Container(userSvc, "User Service", "Java", "Authentication")
369
-
370
- ContainerDb(orderDb, "Order DB", "PostgreSQL", "Orders")
371
- ContainerDb(productDb, "Product DB", "MongoDB", "Products")
372
- ContainerDb(userDb, "User DB", "PostgreSQL", "Users")
373
- ContainerDb(cache, "Cache", "Redis", "Session data")
374
- }
375
-
376
- Rel(customer, web, "Browses", "HTTPS")
377
- Rel(admin, adminApp, "Manages", "HTTPS")
378
- Rel(web, gateway, "API calls", "JSON/HTTPS")
379
- Rel(adminApp, gateway, "API calls", "JSON/HTTPS")
380
-
381
- Rel(gateway, orderSvc, "Routes to", "HTTP")
382
- Rel(gateway, productSvc, "Routes to", "HTTP")
383
- Rel(gateway, userSvc, "Routes to", "HTTP")
384
-
385
- Rel(orderSvc, orderDb, "Reads/writes", "SQL")
386
- Rel(productSvc, productDb, "Reads/writes", "MongoDB")
387
- Rel(userSvc, userDb, "Reads/writes", "SQL")
388
- Rel(userSvc, cache, "Caches sessions", "Redis")
389
-
390
- Rel(orderSvc, payment, "Charges cards", "REST")
391
- Rel(orderSvc, shipping, "Gets rates", "REST")
392
-
393
- UpdateLayoutConfig($c4ShapeInRow="4", $c4BoundaryInRow="1")
394
- ```
395
-
396
- ### Event-Driven Architecture Example
397
- ```mermaid
398
- C4Container
399
- title Event-Driven Order Processing
400
-
401
- Container(orderSvc, "Order Service", "Java", "Accepts orders")
402
- Container(inventorySvc, "Inventory Service", "Go", "Manages stock")
403
- Container(paymentSvc, "Payment Service", "Node.js", "Processes payments")
404
- Container(notificationSvc, "Notification Service", "Python", "Sends emails/SMS")
405
-
406
- ContainerQueue(orderCreated, "order.created", "Kafka", "New order events")
407
- ContainerQueue(paymentProcessed, "payment.processed", "Kafka", "Payment events")
408
- ContainerQueue(orderFulfilled, "order.fulfilled", "Kafka", "Fulfillment events")
409
-
410
- Rel(orderSvc, orderCreated, "Publishes", "Avro")
411
- Rel(inventorySvc, orderCreated, "Consumes", "Avro")
412
- Rel(paymentSvc, orderCreated, "Consumes", "Avro")
413
-
414
- Rel(paymentSvc, paymentProcessed, "Publishes", "Avro")
415
- Rel(orderSvc, paymentProcessed, "Consumes", "Avro")
416
-
417
- Rel(inventorySvc, orderFulfilled, "Publishes", "Avro")
418
- Rel(notificationSvc, orderFulfilled, "Consumes", "Avro")
419
-
420
- UpdateLayoutConfig($c4ShapeInRow="4")
421
- ```
422
-
423
- ### AWS Deployment Example
424
- ```mermaid
425
- C4Deployment
426
- title Production Deployment - AWS
427
-
428
- Deployment_Node(cdn, "CloudFront", "CDN") {
429
- Container(static, "Static Assets", "S3", "HTML/CSS/JS")
430
- }
431
-
432
- Deployment_Node(vpc, "VPC", "10.0.0.0/16") {
433
- Deployment_Node(publicSubnet, "Public Subnet", "10.0.1.0/24") {
434
- Deployment_Node(alb, "Application Load Balancer", "ALB") {
435
- Container(lb, "Load Balancer", "AWS ALB", "Routes traffic")
436
- }
437
- }
438
-
439
- Deployment_Node(privateSubnet, "Private Subnet", "10.0.2.0/24") {
440
- Deployment_Node(ecs, "ECS Cluster", "Fargate") {
441
- Container(api1, "API Instance 1", "Node.js", "REST API")
442
- Container(api2, "API Instance 2", "Node.js", "REST API")
443
- }
444
-
445
- Deployment_Node(rds, "RDS", "Multi-AZ") {
446
- ContainerDb(primary, "Primary DB", "PostgreSQL", "Main database")
447
- ContainerDb(replica, "Read Replica", "PostgreSQL", "Read scaling")
448
- }
449
- }
450
- }
451
-
452
- Rel(cdn, alb, "Forwards requests", "HTTPS")
453
- Rel(lb, api1, "Routes to", "HTTP")
454
- Rel(lb, api2, "Routes to", "HTTP")
455
- Rel(api1, primary, "Writes to", "JDBC")
456
- Rel(api2, replica, "Reads from", "JDBC")
457
- ```
458
-
459
- ## Mermaid Limitations
460
-
461
- The following PlantUML C4 features are not yet supported in Mermaid:
462
-
463
- ### Unsupported Features
464
- - `sprite` - Custom icons
465
- - `tags` - Element tagging
466
- - `link` - Clickable links
467
- - `Legend` - Auto-generated legends
468
- - `AddElementTag` / `AddRelTag` - Tag styling
469
- - `RoundedBoxShape` / `EightSidedShape` - Custom shapes
470
- - `DashedLine` / `DottedLine` / `BoldLine` - Line styles
471
- - Layout directives (`Lay_U`, `Lay_D`, `Lay_L`, `Lay_R`)
472
-
473
- ### Workarounds
474
-
475
- **Layout Control:**
476
- Use `UpdateLayoutConfig` to control shape positioning instead of layout directives.
477
-
478
- **Overlapping Labels:**
479
- Use `UpdateRelStyle` with `$offsetX` and `$offsetY` to move relationship labels.
480
-
481
- **Complex Diagrams:**
482
- Keep diagrams under 15 elements. Split complex architectures into multiple focused diagrams.
483
-
484
- **Element Ordering:**
485
- Elements appear in the order they are defined. Reorder statements to adjust layout.
486
-
487
- ### Special Characters
488
-
489
- Node labels and subgraph titles containing `@`, `/`, `#`, or other special characters must be quoted:
490
-
491
- ```mermaid
492
- %% WRONG — will break parsing
493
- subgraph @scope/package
494
- NodeA[@scope/lib]
495
- end
496
-
497
- %% CORRECT — quoted labels
498
- subgraph ScopePkg["@scope/package"]
499
- NodeA["@scope/lib"]
500
- end
501
- ```
502
-
503
- Use plain alphanumeric strings for node IDs (aliases). Put display names with special characters inside `["..."]`.
504
-
505
- ### Alternative Tools
506
-
507
- For features Mermaid doesn't support, consider:
508
- - **Structurizr DSL** - Full C4 support with model-based generation
509
- - **C4-PlantUML** - More mature C4 implementation
510
- - **IcePanel** - Visual C4 diagram editor