@caddis/cli 0.4.19 → 0.4.21

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 (40) hide show
  1. package/bundles/antigravity-plugin/plugin.json +1 -1
  2. package/bundles/antigravity-plugin/skills/_registry.md +4 -2
  3. package/bundles/antigravity-plugin/skills/data-lineage/SKILL.md +32 -0
  4. package/bundles/antigravity-plugin/skills/hld/SKILL.md +20 -8
  5. package/bundles/antigravity-plugin/skills/lld/SKILL.md +27 -12
  6. package/bundles/antigravity-plugin/skills/port-to-github/SKILL.md +231 -0
  7. package/bundles/antigravity-plugin/skills/port-to-github/references/ci-and-credentials.md +66 -0
  8. package/bundles/antigravity-plugin/skills/port-to-github/references/config.example.json +18 -0
  9. package/bundles/antigravity-plugin/skills/port-to-github/references/old-host.md +61 -0
  10. package/bundles/antigravity-plugin/skills/port-to-github/scripts/Compare-PortRefs.ps1 +68 -0
  11. package/bundles/antigravity-plugin/skills/port-to-github/scripts/Convert-PortWorkflow.ps1 +92 -0
  12. package/bundles/antigravity-plugin/skills/port-to-github/scripts/Get-PortSource.ps1 +459 -0
  13. package/bundles/antigravity-plugin/skills/port-to-github/scripts/PortCommon.ps1 +130 -0
  14. package/bundles/antigravity-plugin/skills/port-to-github/scripts/Publish-PortToGitHub.ps1 +156 -0
  15. package/bundles/antigravity-plugin/skills/port-to-github/scripts/Switch-CheckoutOrigin.ps1 +182 -0
  16. package/bundles/antigravity-plugin/skills/port-to-github/scripts/Test-PortReadiness.ps1 +218 -0
  17. package/bundles/antigravity-plugin/skills/port-to-github/scripts/Test-PortWorkflowParses.ps1 +62 -0
  18. package/bundles/antigravity-plugin-extras/plugin.json +1 -1
  19. package/bundles/antigravity-plugin-extras/skills/_registry.md +3 -2
  20. package/bundles/antigravity-plugin-extras/skills/data-lineage/SKILL.md +158 -0
  21. package/bundles/antigravity-plugin-extras/skills/data-lineage/scripts/convert_doc_to_confluence.py +1430 -0
  22. package/bundles/antigravity-plugin-extras/skills/hld/SKILL.md +155 -35
  23. package/bundles/antigravity-plugin-extras/skills/hld/references/gold-standard-hld.md +419 -0
  24. package/bundles/antigravity-plugin-extras/skills/hld/scripts/convert_doc_to_confluence.py +900 -184
  25. package/bundles/antigravity-plugin-extras/skills/lld/SKILL.md +145 -41
  26. package/bundles/antigravity-plugin-extras/skills/lld/scripts/convert_doc_to_confluence.py +900 -184
  27. package/bundles/codex/.codex/skills/devops/port-to-github/SKILL.md +231 -0
  28. package/bundles/codex/.codex/skills/devops/port-to-github/references/ci-and-credentials.md +66 -0
  29. package/bundles/codex/.codex/skills/devops/port-to-github/references/config.example.json +18 -0
  30. package/bundles/codex/.codex/skills/devops/port-to-github/references/old-host.md +61 -0
  31. package/bundles/codex/.codex/skills/devops/port-to-github/scripts/Compare-PortRefs.ps1 +68 -0
  32. package/bundles/codex/.codex/skills/devops/port-to-github/scripts/Convert-PortWorkflow.ps1 +92 -0
  33. package/bundles/codex/.codex/skills/devops/port-to-github/scripts/Get-PortSource.ps1 +459 -0
  34. package/bundles/codex/.codex/skills/devops/port-to-github/scripts/PortCommon.ps1 +130 -0
  35. package/bundles/codex/.codex/skills/devops/port-to-github/scripts/Publish-PortToGitHub.ps1 +156 -0
  36. package/bundles/codex/.codex/skills/devops/port-to-github/scripts/Switch-CheckoutOrigin.ps1 +182 -0
  37. package/bundles/codex/.codex/skills/devops/port-to-github/scripts/Test-PortReadiness.ps1 +218 -0
  38. package/bundles/codex/.codex/skills/devops/port-to-github/scripts/Test-PortWorkflowParses.ps1 +62 -0
  39. package/bundles/manifest.json +3 -3
  40. package/package.json +1 -1
@@ -1,29 +1,134 @@
1
1
  ---
2
2
  name: lld
3
- description: Generates Lower-Level Design (LLD) Markdown documentation and converts to Confluence Storage Format XHTML with inline PlantUML macros.
3
+ description: Generates Lower-Level Design (LLD) Markdown documentation and converts to Confluence Storage Format XHTML with native PlantUML diagrams and auto-generated legends.
4
4
  ---
5
5
 
6
6
  # Lower-Level Design (LLD) Authoring Skill
7
7
 
8
8
  ## Overview
9
- This skill generates Lower-Level Design (LLD) documents for enterprise application fleet systems. It documents the complete internal engineering workings: hosts, services, internal API endpoints, database schemas, stored procedures, ETL batches, background worker threads, data contracts, and failure recovery modes. It converts documents to Confluence Storage Format XHTML with inline PlantUML (`<ac:structured-macro ac:name="plantuml">`) diagrams.
9
+ This skill generates Lower-Level Design (LLD) documents for enterprise application fleet systems. It documents the complete internal engineering workings: hosts, services, internal API endpoints, physical database schemas, stored procedures, ETL batches, background worker threads, data contracts, and failure recovery modes. It converts documents to Confluence Storage Format XHTML using native PlantUML (`<ac:structured-macro ac:name="plantuml">`) diagrams with high contrast, crisp 200 DPI vector rendering, dynamic orientation, auto-wrapped labels, and clean embedded Creole legends.
10
+
11
+ ## Mandatory Workflow Steps
12
+
13
+ ### Step 1: Deep Codebase and Schema Dissection
14
+ Analyze the target codebase and underlying database environment to dissect:
15
+ - Physical hosting, processes, service managers (NSSM, systemd), ports, and thread loops.
16
+ - All ETL scripts, batch commands, cron/scheduler configurations, source/target tables, row volumes, and idempotency logic.
17
+ - Stored procedures: signatures, parameters, join logic, analytical thresholds, and exception outputs.
18
+ - Background workers, polling loops, watermark synchronization, and caching tiers.
19
+ - UI-to-SQL query lineage: map UI screens and routes to stable query identifiers (`QRY-*`) and database objects.
20
+
21
+ ### Step 2: Component & Interface Classification Interview (Grill-Me)
22
+ **MANDATORY GATE:** Before generating architecture diagrams or drafting the LLD, the agent **MUST** present the discovered internal components (`SYS_Lxx`) and internal interfaces (`INT_Lxx`) to the user and interview them to confirm classifications:
23
+ 1. **Internal Component Classification:**
24
+ - Which internal components are **New / Impacted** (`Impacted = Yes`, red styling)?
25
+ - Which components represent pre-existing external fleet databases or services (`Impacted = No`, blue styling)?
26
+ 2. **Internal Interface Classification:**
27
+ - Confirm which internal connections represent **New Connectivity** (`#DC2626` Red) vs **Existing Connectivity** (`#16A34A` Green).
28
+ 3. Present clear recommendations based on codebase findings, allowing the user to confirm or adjust classifications in a single interactive turn.
29
+
30
+ ### Step 3: Markdown Document Authoring
31
+ Draft the canonical LLD Markdown file following the standard 7-section structure. Adhere strictly to the engineering depth requirements below.
32
+
33
+ ### Step 4: Confluence XHTML Conversion & Verification
34
+ Convert the Markdown to Confluence Storage Format XHTML using `scripts/convert_doc_to_confluence.py`. Verify well-formed XML and correct PlantUML macro rendering.
35
+
36
+ ---
10
37
 
11
38
  ## Scope and Core Responsibilities (Detailed Engineering)
39
+
12
40
  1. **Internal Architecture & Services:**
13
41
  - Host allocations, services, ports, execution threads, background loop intervals, and memory management.
14
42
  - Internal API route specifications, request/response models, middleware, and dependency injection.
15
- 2. **Database Engine & Physical Data Model:**
16
- - Database server names, schemas, physical table structures, columns, data types, primary keys, and indexes.
17
- - Comprehensive stored procedure inventory: input parameters, output datasets, business logic flows, and return codes.
18
- 3. **ETL & Batch Processing Pipelines:**
19
- - Staging scripts, pre-flight checks, batch orchestration commands (e.g., Windows Task Scheduler, cron, Airflow).
20
- - Validation pillars/rules breakdown with exact execution parameters, thresholds, and exception output structures.
21
- 4. **Diagram Rendering and Orthogonal Connectors:**
22
- - Diagrams are converted to native Confluence PlantUML macros (`<ac:structured-macro ac:name="plantuml">`) using `skinparam linetype ortho`.
23
- - `skinparam linetype ortho` ensures that all arrows connecting boxes are strictly orthogonal (90-degree right angles).
24
- - PlantUML renders inline upon copy-paste into Confluence with zero attachment access errors.
25
- 5. **Technical Metadata:**
43
+ 2. **Exhaustive ETL & Ingestion Pipeline Dissection:**
44
+ - Document every data pipeline script, source tables, destination staging tables, execution schedules (e.g. daily 06:00, monthly 20th), record volumes, idempotency patterns (e.g. delete-insert), and shared audit tables (e.g. `ETL_AUDIT_LOG`).
45
+ 3. **Exhaustive Stored Procedure & Analytical Engine Dissection:**
46
+ - Catalog all validation procedures / calculation engines.
47
+ - For every stored procedure, specify: exact signature, input parameters, join/comparison logic, analytical tolerances/thresholds, discrepancy codes, and target tables written to.
48
+ 4. **Continuous Summary Refresher & Watermark Synchronization:**
49
+ - Document background polling workers, polling intervals (e.g. 300s), watermark queries (`SELECT MAX(run_id)...`), atomic summary rollups, watermark commits, and cache invalidation mechanisms.
50
+ 5. **UI-to-SQL Query Lineage Specification:**
51
+ - Exhaustive query lineage matrix mapping UI screens to stable query identifiers (`QRY-*`), API endpoints, repository methods, and source database tables.
52
+ 6. **Mandatory Detailed Technical Sections (Non-Negotiable):**
53
+ - **Operational Process Flow:** Multi-stage batch, validation, refresh, and serving pipeline with colorful Mermaid flowchart.
54
+ - **End-to-End Operational Sequence Diagram:** Comprehensive technical sequence between Schedulers, Batch Runners, Databases, Secondary Systems, Background Refreshers, API Routers, and Frontends.
55
+ - **Detailed Solution Architecture Landscape:** Internal subsystem architecture diagram with `SYS_Lxx` component IDs and `INT_Lxx` interface sequences, supported by Internal Applications Table and Internal Interfaces Table.
56
+ - **End-to-End Database and Data Processing Pipeline:** Staging, validation, mart rollup, and API extraction data flow stages.
57
+ - **End-to-End Database Lineage Specification:** Complete lineage matrix tracing Functional Domain -> Source Feeds -> Staging Tables -> Transformation Stored Procedures -> Destination Summary Tables -> API Endpoint Routes -> Primary UI Surfaces.
58
+ 7. **Mermaid Diagram Standards (Expert Systems Architect & Mermaid Designer):**
59
+ Render highly professional, visually balanced, and easily readable system architecture diagrams using Mermaid.js markdown blocks. Avoid cluttered, sprawling layouts by enforcing structural constraints and optimized styles.
60
+
61
+ **🎨 Design & Styling Principles:**
62
+ - **Color Palette & Semantic Styling (Standard/Impact/Existing):**
63
+ - Use desaturated, modern executive colors. Do not use highly saturated primary colors.
64
+ - Define exactly 3-4 standard semantic class styles at the top of every diagram:
65
+ - `existingStyle`: Clean Blue (`fill:#EFF6FF,stroke:#2563EB,stroke-width:2px,color:#1E40AF`) for legacy/established components.
66
+ - `newStyle`: Warm Red/Crimson (`fill:#FEF2F2,stroke:#DC2626,stroke-width:2px,color:#991B1B`) for greenfield/new components.
67
+ - `impactedStyle`: Amber/Gold (`fill:#FFFBEB,stroke:#D97706,stroke-width:2px,color:#92400E`) for modified/impacted systems.
68
+ - Apply classes consistently to the nodes using the triple colon notation (e.g., `NodeName:::newStyle`).
69
+ - **Diagram Scalability Settings (Initialization Block):**
70
+ - Always prepend diagrams with a configuration initialization block to control sizing and font scales:
71
+ ```mermaid
72
+ %%{init: {
73
+ 'theme': 'default',
74
+ 'themeVariables': { 'fontSize': '14px', 'subgraphTitleSize': '16px' },
75
+ 'flowchart': { 'useMaxWidth': false, 'htmlLabels': true, 'curve': 'basis' }
76
+ } }%%
77
+ ```
78
+ - **Readable Text Wrapping:**
79
+ - Never let a single node have a long horizontal text block. Use `<br/>` tags to stack text vertically.
80
+ - Format nodes with clear visual hierarchy: Use bolding for titles, bracket notation for IDs, and italics for status:
81
+ `NodeName["📅 <b>Windows Scheduler</b><br/>[SYS_03]<br/><i>New Component</i>"]`
82
+
83
+ **📐 Layout & Real Estate Rules:**
84
+ - **The 3-Column Kanban Layout (Side-by-Side):**
85
+ - When sequential phases are required (e.g., Phase 1 | Phase 2 | Phase 3) but need to prevent horizontal text compression, utilize a "Hybrid Columnar Layout".
86
+ - **Rule:** Set the top-level flow to Left-to-Right (`flowchart LR`) to align parent containers horizontally, but enforce vertical stacking (`direction TB`) *inside* each subgraph container.
87
+ - **Example Structure:**
88
+ ```mermaid
89
+ flowchart LR
90
+ subgraph Phase1["Phase 1"]
91
+ direction TB
92
+ A --> B --> C
93
+ end
94
+ subgraph Phase2["Phase 2"]
95
+ direction TB
96
+ D --> E --> F
97
+ end
98
+ Phase1 --> Phase2
99
+ ```
100
+ - **The Two-Line Grid Layout (Row Stacking):**
101
+ - When a 3-pillar horizontal layout spans too wide, stack them into rows by setting the top-level structure to Top-to-Bottom (`flowchart TD`).
102
+ - Group the lower pillars (Phase 2 and Phase 3) side-by-side inside a helper subgraph container that uses `direction LR`. This forces Phase 2 to wrap onto a new line directly below Phase 1.
103
+ - **Component Types:**
104
+ - Use standard flowchart shapes to represent structural entities:
105
+ - `[(Database Node)]` for persistent storage, tables, or file outputs.
106
+ - `["Application Node"]` for processing scripts, APIs, or services.
107
+ - `["🖥️ UI Node"]` for user interfaces.
108
+ 8. **Diagram Rendering and Styling (PlantUML Native Engine in Confluence):**
109
+ - Confluence rendering uses native `<ac:structured-macro ac:name="plantuml">` blocks requiring zero page attachments.
110
+ - Standard parameters: `scale 1.2` for flowcharts, `scale max 2000 width` for sequence diagrams, and `skinparam defaultFontSize 11` (no `skinparam dpi 200` to prevent image blowout) to guarantee crisp rendering, neat proportioning, and sharp text without oversized canvas stretching.
111
+ - Spacing: `skinparam ranksep 28` and `skinparam nodesep 24`, package `Padding 10` for tight, balanced whitespace without excessive canvas stretching.
112
+ - Natural curved splines: Do not force `skinparam linetype ortho` or `polyline` which distort canvases. Natural curved spline arrows route cleanly without box stretching.
113
+ - Zero label clutter: Omit stereotypes (`<<impacted>>`, `<<service>>`, etc.) and verbose status annotations (`(New Component)`, `(Existing Platform)`, `[New]`, `[Existing]`) inside component boxes or on connection labels. Component status is communicated cleanly through color coding and the bottom legend.
114
+ - Automatic edge label wrapping: Labels are wrapped at ~24 characters to prevent horizontal text collision with component bounding boxes.
115
+ - Bold container headers: Package and cluster titles are rendered in bold font (`package "<b>Title</b>"`).
116
+ - Component styling: Colored backgrounds and distinct borders with `skinparam rectangle { BorderThickness 1.5 }` and `skinparam database { BorderThickness 1.5 }`:
117
+ - New / Impacted Components: `rectangle "<b>Title</b>\n[SYS_xx]" as Alias #FEF2F2;line:DC2626` (or `database ... #FEF2F2;line:DC2626`) for a crimson red border.
118
+ - Existing Components: `rectangle "<b>Title</b>\n[SYS_xx]" as Alias #EFF6FF;line:2563EB` (or `database ... #EFF6FF;line:2563EB`) for a deep blue border.
119
+ - Dynamic orientation: Let the model and skill decide whether Left-to-Right (`flowchart LR`) or Top-to-Bottom (`flowchart TD`) or mixed layout is best based on component count, layer depth, and readability. Avoid stretching wide multi-layer pipelines horizontally across thin ribbons.
120
+ - Connectivity color coding:
121
+ - New / Impacted connectivity: Solid Red (`#DC2626` / `━━━━▶`).
122
+ - Existing connectivity: Solid Blue (`#2563EB` / `━━━━▶`).
123
+ - Cross-package and feedback connectors: Append `norank` (`-[color,norank]right->`, `-[color,norank]up->`) to prevent vertical rank collapse in horizontal flows and tier scrambling in layered architectures.
124
+ - Arrow sequence numbering: Place sequence numbers and interface IDs clearly on arrow labels (e.g. `SYS_L01 -->|"INT_L01 [1]: Pre-Flight Audit Query"| SYS_L02`).
125
+ - Clean embedded Creole legend: Flowchart and architecture diagrams automatically include an embedded PlantUML Creole table legend explaining connection and component markers. Omit legend on sequence diagrams.
126
+ 9. **Technical Metadata:**
26
127
  - Technical metadata (system name, engineering lead, target audience, version) is preserved in LLD documents.
128
+ 10. **Dynamic Frontmatter Model:**
129
+ - The Markdown frontmatter `Creating Model:` must dynamically capture whatever model is executing the task (e.g. `gemini-3.8-flash`), never hardcoded.
130
+
131
+ ---
27
132
 
28
133
  ## Standard LLD Document Structure (Markdown)
29
134
  Every LLD document must follow this standardized structure:
@@ -36,7 +141,7 @@ feature: <app>-lld
36
141
  creation-agent: caddis
37
142
  Original Author: Platform Engineering
38
143
  Creation Date: <YYYY-MM-DDTHH:MM:SSZ>
39
- Creating Model: gemini-3.5-flash
144
+ Creating Model: <active model ID, e.g. gemini-3.8-flash>
40
145
  ---
41
146
 
42
147
  # Lower-Level Design: <Application Name>
@@ -44,7 +149,7 @@ Creating Model: gemini-3.5-flash
44
149
  ## Technical Metadata
45
150
  - **System Name:** <Application Name> (Internal Engineering Specification)
46
151
  - **Document Version:** 1.0.0
47
- - **Document Status:** Draft for Review
152
+ - **Document Status:** Current Engineering Specification
48
153
  - **Engineering Lead:** Development & Platform Engineering Team
49
154
  - **Target Audience:** Software Engineers, Database Administrators, Platform Reliability Engineers
50
155
 
@@ -53,42 +158,41 @@ Creating Model: gemini-3.5-flash
53
158
  ## 1. System Components and Service Topology
54
159
  - 1.1 Physical Hosting and Runtime Environment (Hostnames, IPs, OS, service manager like NSSM/systemd, ports)
55
160
  - 1.2 Component Architecture and Process Model (Web server, async workers, refresher services, thread loops)
56
- - 1.3 Detailed Service Interaction Diagram (Mermaid component flow)
57
161
 
58
- ## 2. API Specifications and Internal Contracts
59
- - 2.1 Backend Router Structure and Endpoint Inventory (Paths, HTTP methods, route handlers, middleware)
60
- - 2.2 Data Transfer Objects (DTOs) and Validation Schemas (Pydantic models, JSON contracts)
61
- - 2.3 Error Handling, HTTP Status Codes, and Logging Protocols
162
+ ## 2. Operational Process Flow and Sequence Architecture
163
+ - 2.1 Operational Process Flow (Mermaid flowchart with classDef styling showing batch ingestion, validation, refresh, and serving stages)
164
+ - 2.2 End-to-End Operational Sequence Diagram (Mermaid sequence diagram detailing technical participants)
62
165
 
63
- ## 3. Physical Database Architecture
64
- - 3.1 Host and Database Instances (Connection pools, drivers, timeouts, read/write segregation)
65
- - 3.2 Schema and Table Definitions (Full physical tables, primary keys, indexes, foreign keys, partition strategy)
66
- - 3.3 Database Views and Materialized Query Structures
166
+ ## 3. Detailed Solution Architecture Landscape
167
+ - 3.1 Solution Architecture Landscape (Mermaid topology diagram with internal SYS_Lxx nodes and INT_Lxx arrows)
168
+ - 3.2 Internal Applications and Subsystems Overview (Table: ID [SYS_Lxx], Application / Component, Application Type, Description, Impacted [Yes/No])
169
+ - 3.3 Internal Interfaces (Table: ID [INT_Lxx], Type / Protocol, From, To, Connectivity [Connectivity Exists / New Connectivity])
67
170
 
68
- ## 4. Stored Procedures and Analytical Logic Engine
69
- - 4.1 Stored Procedure Catalog (Full list of procedures, executing hosts, input/output parameters)
70
- - 4.2 Analytical Rules and Exception Detection Logic (Pillars / Rules mapping, rating formulas, tolerances)
71
- - 4.3 Stored Procedure Execution Workflow (Mermaid execution flowchart)
171
+ ## 4. End-to-End Database and Data Processing Pipeline
172
+ - 4.1 Database Pipeline Architecture (Mermaid flowchart with classDef styling)
173
+ - 4.2 Ingestion & ETL Pipelines (Detailed breakdown of all ETL scripts, schedules, sources, staging tables, volumes, idempotency)
174
+ - 4.3 Stored Procedures and Analytical Logic Engine (Exhaustive catalog with parameters, join logic, tolerances, output tables)
175
+ - 4.4 Continuous Summary Refresher (Background loop, watermark polling, atomic rollups, cache invalidation)
176
+ - 4.5 End-to-End Database Lineage Specification (UI-to-SQL Query Matrix: Query ID [QRY-*], UI Screen, Route, Repo, Tables, Scope)
72
177
 
73
- ## 5. ETL, Batch Jobs, and Refresher Pipeline
74
- - 5.1 Batch Ingestion and Staging Scripts (Command-line triggers, script paths, pre-flight checks)
75
- - 5.2 Background Refresher Service Loop (Watermark polling logic, cadence, transaction locks)
76
- - 5.3 Exception Logging, State Registers, and KPI Calculation
178
+ ## 5. Physical Database Architecture
179
+ - 5.1 Host and Database Instances (Connection pools, drivers, timeouts, read/write segregation)
180
+ - 5.2 Schema and Table Definitions (Full physical tables, primary keys, indexes, foreign keys, partition strategy)
77
181
 
78
- ## 6. Integration Endpoints and External Services
79
- - 6.1 Downstream Systems and Gateways (OAuth2 tokens, headers, payload structures)
80
- - 6.2 External Data Feeds and Clearing House File Formats
182
+ ## 6. API Specifications and Internal Contracts
183
+ - 6.1 Backend Router Structure and Endpoint Inventory (Paths, HTTP methods, route handlers, middleware)
184
+ - 6.2 Data Transfer Objects (DTOs) and Validation Schemas (Pydantic models, request/response payloads)
185
+ - 6.3 Error Handling and Database Session Management
81
186
 
82
187
  ## 7. Reliability, Operational Runbooks, and Recovery
83
- - 7.1 Health Checks, Heartbeat Probes, and Diagnostic Endpoints
84
- - 7.2 Failure Modes, Recovery Procedures, and Re-run Idempotency
85
- - 7.3 Operational Runbooks and Diagnostic Commands
188
+ - 7.1 Health Checks and Diagnostic Endpoints
189
+ - 7.2 Failure Recovery and Re-run Idempotency
86
190
  ```
87
191
 
88
192
  ## Conversion Workflow
89
193
  1. Write the canonical LLD Markdown file to `docs/<app>/<app>-lld.md`.
90
194
  2. Run the conversion script:
91
- ```bash
92
- python scripts/convert_doc_to_confluence.py docs/<app>/<app>-lld.md --output docs/<app>/<app>-lld.html
195
+ ```powershell
196
+ python scripts/convert_doc_to_confluence.py docs/<app>/<app>-lld.md --output docs/<app>/<app>-lld.html --diagram-type plantuml
93
197
  ```
94
- 3. Verify that the output validates as well-formed XML and contains `<ac:structured-macro ac:name="plantuml">` blocks with `skinparam linetype ortho`.
198
+ 3. Verify that the output validates as well-formed XML and contains `<ac:structured-macro ac:name="plantuml">` blocks with crisp 200 DPI styling, 880px max width, centered alignment, wrapped edge labels, and embedded Creole legend.