@cakemail-org/cakemail-cli 1.5.0 → 2.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.
Files changed (234) hide show
  1. package/.claude/settings.local.json +12 -0
  2. package/.env.example +40 -0
  3. package/.env.test.example +45 -0
  4. package/CHANGELOG.md +1031 -0
  5. package/README.md +319 -15
  6. package/audit-formats.js +128 -0
  7. package/cakemail.rb +20 -0
  8. package/dist/cli.js +27 -10
  9. package/dist/cli.js.map +1 -1
  10. package/dist/client.d.ts +2 -0
  11. package/dist/client.d.ts.map +1 -1
  12. package/dist/client.js +16 -6
  13. package/dist/client.js.map +1 -1
  14. package/dist/commands/account.js +1 -1
  15. package/dist/commands/account.js.map +1 -1
  16. package/dist/commands/attributes.js +1 -1
  17. package/dist/commands/attributes.js.map +1 -1
  18. package/dist/commands/campaigns.d.ts.map +1 -1
  19. package/dist/commands/campaigns.js +103 -8
  20. package/dist/commands/campaigns.js.map +1 -1
  21. package/dist/commands/config.d.ts.map +1 -1
  22. package/dist/commands/config.js +63 -4
  23. package/dist/commands/config.js.map +1 -1
  24. package/dist/commands/contacts.d.ts.map +1 -1
  25. package/dist/commands/contacts.js +91 -12
  26. package/dist/commands/contacts.js.map +1 -1
  27. package/dist/commands/emails.js +1 -1
  28. package/dist/commands/emails.js.map +1 -1
  29. package/dist/commands/interests.d.ts +5 -0
  30. package/dist/commands/interests.d.ts.map +1 -0
  31. package/dist/commands/interests.js +172 -0
  32. package/dist/commands/interests.js.map +1 -0
  33. package/dist/commands/lists.d.ts.map +1 -1
  34. package/dist/commands/lists.js +6 -8
  35. package/dist/commands/lists.js.map +1 -1
  36. package/dist/commands/logs.d.ts +5 -0
  37. package/dist/commands/logs.d.ts.map +1 -0
  38. package/dist/commands/logs.js +237 -0
  39. package/dist/commands/logs.js.map +1 -0
  40. package/dist/commands/reports.js +1 -1
  41. package/dist/commands/reports.js.map +1 -1
  42. package/dist/commands/segments.js +1 -1
  43. package/dist/commands/segments.js.map +1 -1
  44. package/dist/commands/senders.d.ts.map +1 -1
  45. package/dist/commands/senders.js +11 -8
  46. package/dist/commands/senders.js.map +1 -1
  47. package/dist/commands/suppressed.js +1 -1
  48. package/dist/commands/suppressed.js.map +1 -1
  49. package/dist/commands/tags.d.ts +5 -0
  50. package/dist/commands/tags.d.ts.map +1 -0
  51. package/dist/commands/tags.js +124 -0
  52. package/dist/commands/tags.js.map +1 -0
  53. package/dist/commands/templates.js +1 -1
  54. package/dist/commands/templates.js.map +1 -1
  55. package/dist/commands/transactional-templates.d.ts +5 -0
  56. package/dist/commands/transactional-templates.d.ts.map +1 -0
  57. package/dist/commands/transactional-templates.js +354 -0
  58. package/dist/commands/transactional-templates.js.map +1 -0
  59. package/dist/commands/webhooks.js +1 -1
  60. package/dist/commands/webhooks.js.map +1 -1
  61. package/dist/utils/auth.d.ts +8 -1
  62. package/dist/utils/auth.d.ts.map +1 -1
  63. package/dist/utils/auth.js +39 -11
  64. package/dist/utils/auth.js.map +1 -1
  65. package/dist/utils/config-file.d.ts +7 -0
  66. package/dist/utils/config-file.d.ts.map +1 -1
  67. package/dist/utils/config-file.js +15 -0
  68. package/dist/utils/config-file.js.map +1 -1
  69. package/dist/utils/config.d.ts +2 -0
  70. package/dist/utils/config.d.ts.map +1 -1
  71. package/dist/utils/config.js +12 -4
  72. package/dist/utils/config.js.map +1 -1
  73. package/dist/utils/errors.js +1 -1
  74. package/dist/utils/errors.js.map +1 -1
  75. package/dist/utils/list-defaults.d.ts +33 -0
  76. package/dist/utils/list-defaults.d.ts.map +1 -0
  77. package/dist/utils/list-defaults.js +52 -0
  78. package/dist/utils/list-defaults.js.map +1 -0
  79. package/dist/utils/output.d.ts.map +1 -1
  80. package/dist/utils/output.js +36 -13
  81. package/dist/utils/output.js.map +1 -1
  82. package/dist/utils/progress.d.ts.map +1 -1
  83. package/dist/utils/progress.js +32 -4
  84. package/dist/utils/progress.js.map +1 -1
  85. package/dist/utils/spinner.d.ts +17 -0
  86. package/dist/utils/spinner.d.ts.map +1 -0
  87. package/dist/utils/spinner.js +43 -0
  88. package/dist/utils/spinner.js.map +1 -0
  89. package/docs/DOCUMENTATION-STANDARD.md +1068 -0
  90. package/docs/README.md +161 -0
  91. package/docs/developer/ARCHITECTURE.md +516 -0
  92. package/docs/developer/AUTH.md +204 -0
  93. package/docs/developer/CONTRIBUTING.md +227 -0
  94. package/docs/developer/DOCUMENTATION_SUMMARY.md +346 -0
  95. package/docs/developer/PROJECT_INDEX.md +365 -0
  96. package/docs/planning/API_COVERAGE.md +1045 -0
  97. package/docs/planning/BACKLOG.md +1159 -0
  98. package/docs/planning/PROFILE_SYSTEM_TASKS.md +287 -0
  99. package/docs/planning/UX_IMPLEMENTATION_PLAN.md +691 -0
  100. package/docs/planning/archive/RELEASE_CHECKLIST_v1.3.0.md +332 -0
  101. package/docs/planning/archive/RELEASE_v1.3.0.md +428 -0
  102. package/docs/planning/archive/cakemail-cli-ux-improvements.md +438 -0
  103. package/docs/planning/cakemail-profile-system-plan.md +1121 -0
  104. package/docs/testing/AI_USER_SIMULATION_DESIGN.md +1342 -0
  105. package/docs/testing/KENOGAMI_BIDIRECTIONAL_FLOW.md +1517 -0
  106. package/docs/testing/KENOGAMI_TRUTH_RECONCILIATION_SYSTEM.md +1369 -0
  107. package/docs/user-manual/.obsidian/app.json +1 -0
  108. package/docs/user-manual/.obsidian/appearance.json +1 -0
  109. package/docs/user-manual/.obsidian/core-plugins.json +33 -0
  110. package/docs/user-manual/.obsidian/workspace.json +167 -0
  111. package/docs/user-manual/01-getting-started/01-installation.md +214 -0
  112. package/docs/user-manual/01-getting-started/02-quick-start.md +432 -0
  113. package/docs/user-manual/01-getting-started/03-authentication.md +448 -0
  114. package/docs/user-manual/01-getting-started/04-configuration.md +430 -0
  115. package/docs/user-manual/01-getting-started/05-output-formats.md +447 -0
  116. package/docs/user-manual/02-core-concepts/01-accounts.md +514 -0
  117. package/docs/user-manual/02-core-concepts/02-profile-system.md +771 -0
  118. package/docs/user-manual/02-core-concepts/03-smart-defaults.md +485 -0
  119. package/docs/user-manual/02-core-concepts/04-authentication-methods.md +435 -0
  120. package/docs/user-manual/02-core-concepts/05-pagination-filtering.md +600 -0
  121. package/docs/user-manual/02-core-concepts/06-error-handling.md +718 -0
  122. package/docs/user-manual/02-core-concepts/07-api-coverage.md +483 -0
  123. package/docs/user-manual/03-email-operations/01-senders.md +490 -0
  124. package/docs/user-manual/03-email-operations/02-templates.md +444 -0
  125. package/docs/user-manual/03-email-operations/03-transactional-emails.md +706 -0
  126. package/docs/user-manual/03-email-operations/04-email-tracking.md +407 -0
  127. package/docs/user-manual/04-campaign-management/01-campaigns-basics.md +394 -0
  128. package/docs/user-manual/04-campaign-management/02-campaign-scheduling.md +630 -0
  129. package/docs/user-manual/04-campaign-management/03-campaign-testing.md +997 -0
  130. package/docs/user-manual/04-campaign-management/04-campaign-lifecycle.md +709 -0
  131. package/docs/user-manual/04-campaign-management/05-campaign-links.md +934 -0
  132. package/docs/user-manual/05-contact-management/01-lists.md +836 -0
  133. package/docs/user-manual/05-contact-management/02-contacts.md +1035 -0
  134. package/docs/user-manual/05-contact-management/03-custom-attributes.md +788 -0
  135. package/docs/user-manual/05-contact-management/04-segments.md +1028 -0
  136. package/docs/user-manual/05-contact-management/05-contact-import-export.md +1031 -0
  137. package/docs/user-manual/06-analytics-reporting/01-campaign-analytics.md +867 -0
  138. package/docs/user-manual/06-analytics-reporting/02-account-reports.md +227 -0
  139. package/docs/user-manual/07-integrations/01-webhooks-integration.md +259 -0
  140. package/docs/user-manual/07-integrations/02-automation.md +326 -0
  141. package/docs/user-manual/08-advanced-usage/01-scripting-patterns.md +672 -0
  142. package/docs/user-manual/08-advanced-usage/02-bulk-operations.md +932 -0
  143. package/docs/user-manual/08-advanced-usage/03-ci-cd-integration.md +892 -0
  144. package/docs/user-manual/08-advanced-usage/04-performance-optimization.md +766 -0
  145. package/docs/user-manual/09-command-reference/01-config.md +776 -0
  146. package/docs/user-manual/09-command-reference/02-account.md +652 -0
  147. package/docs/user-manual/09-command-reference/03-lists.md +958 -0
  148. package/docs/user-manual/09-command-reference/04-contacts.md +1408 -0
  149. package/docs/user-manual/09-command-reference/05-attributes.md +617 -0
  150. package/docs/user-manual/09-command-reference/06-segments.md +894 -0
  151. package/docs/user-manual/09-command-reference/07-senders.md +803 -0
  152. package/docs/user-manual/09-command-reference/08-templates.md +818 -0
  153. package/docs/user-manual/09-command-reference/09-campaigns.md +1250 -0
  154. package/docs/user-manual/09-command-reference/10-emails.md +807 -0
  155. package/docs/user-manual/09-command-reference/11-reports.md +1135 -0
  156. package/docs/user-manual/09-command-reference/12-webhooks.md +773 -0
  157. package/docs/user-manual/09-command-reference/13-suppressed.md +797 -0
  158. package/docs/user-manual/09-command-reference/14-interests.md +630 -0
  159. package/docs/user-manual/09-command-reference/15-tags.md +584 -0
  160. package/docs/user-manual/09-command-reference/16-logs.md +656 -0
  161. package/docs/user-manual/09-command-reference/17-transactional-templates.md +850 -0
  162. package/docs/user-manual/10-troubleshooting/01-common-errors.md +457 -0
  163. package/docs/user-manual/10-troubleshooting/02-authentication-issues.md +558 -0
  164. package/docs/user-manual/10-troubleshooting/03-connection-problems.md +634 -0
  165. package/docs/user-manual/10-troubleshooting/04-debugging.md +725 -0
  166. package/docs/user-manual/11-appendix/04-faq.md +484 -0
  167. package/docs/user-manual/11-appendix/05-glossary.md +250 -0
  168. package/docs/user-manual/README.md +0 -0
  169. package/package.json +13 -47
  170. package/src/cli.ts +125 -0
  171. package/src/client.ts +16 -0
  172. package/src/commands/account.ts +267 -0
  173. package/src/commands/accounts.ts +78 -0
  174. package/src/commands/actions.ts +249 -0
  175. package/src/commands/attributes.ts +139 -0
  176. package/src/commands/campaign-blueprints.ts +106 -0
  177. package/src/commands/campaigns.ts +469 -0
  178. package/src/commands/config.ts +77 -0
  179. package/src/commands/contacts.ts +612 -0
  180. package/src/commands/custom-attributes.ts +127 -0
  181. package/src/commands/dkims.ts +117 -0
  182. package/src/commands/domains.ts +82 -0
  183. package/src/commands/email-apis.ts +569 -0
  184. package/src/commands/emails.ts +197 -0
  185. package/src/commands/forms.ts +283 -0
  186. package/src/commands/interests.ts +155 -0
  187. package/src/commands/links.ts +38 -0
  188. package/src/commands/lists.ts +406 -0
  189. package/src/commands/logos.ts +71 -0
  190. package/src/commands/logs.ts +386 -0
  191. package/src/commands/reports.ts +306 -0
  192. package/src/commands/segments.ts +158 -0
  193. package/src/commands/senders.ts +204 -0
  194. package/src/commands/sub-accounts.ts +271 -0
  195. package/src/commands/suppressed-emails.ts +234 -0
  196. package/src/commands/suppressed.ts +198 -0
  197. package/src/commands/system-emails.ts +85 -0
  198. package/src/commands/tags.ts +146 -0
  199. package/src/commands/tasks.ts +116 -0
  200. package/src/commands/templates.ts +189 -0
  201. package/src/commands/tokens.ts +83 -0
  202. package/src/commands/transactional-emails.ts +374 -0
  203. package/src/commands/transactional-templates.ts +385 -0
  204. package/src/commands/users.ts +506 -0
  205. package/src/commands/webhooks.ts +172 -0
  206. package/src/commands/workflow-blueprints.ts +123 -0
  207. package/src/commands/workflows.ts +265 -0
  208. package/src/types/profile.ts +93 -0
  209. package/src/utils/auth.ts +272 -0
  210. package/src/utils/config-file.ts +96 -0
  211. package/src/utils/config.ts +134 -0
  212. package/src/utils/confirm.ts +32 -0
  213. package/src/utils/defaults.ts +99 -0
  214. package/src/utils/errors.ts +116 -0
  215. package/src/utils/interactive.ts +91 -0
  216. package/src/utils/list-defaults.ts +74 -0
  217. package/src/utils/output.ts +190 -0
  218. package/src/utils/progress.ts +320 -0
  219. package/src/utils/spinner.ts +22 -0
  220. package/tests/IMPLEMENTATION_STATUS.md +258 -0
  221. package/tests/PTY_SETUP.md +118 -0
  222. package/tests/PTY_TESTING_GUIDE.md +507 -0
  223. package/tests/README.md +244 -0
  224. package/tests/fixtures/api-responses/campaigns.json +34 -0
  225. package/tests/fixtures/test-config.json +13 -0
  226. package/tests/helpers/cli-runner.ts +128 -0
  227. package/tests/helpers/mock-server.ts +301 -0
  228. package/tests/helpers/pty-runner.ts +181 -0
  229. package/tests/integration/campaigns-real-api.test.ts +196 -0
  230. package/tests/integration/setup-integration.ts +50 -0
  231. package/tests/pty/campaigns.test.ts +241 -0
  232. package/tests/setup.ts +34 -0
  233. package/tsconfig.json +15 -0
  234. package/vitest.config.ts +28 -0
@@ -0,0 +1,1068 @@
1
+ # Cakemail CLI Documentation Standard
2
+
3
+ ABOUTME: Documentation standard defining structure, style, and conventions for the Cakemail CLI user manual.
4
+ ABOUTME: Based on exhaustive analysis of GitHub CLI manual as reference model.
5
+
6
+ ## Table of Contents
7
+
8
+ 1. [Information Architecture](#information-architecture)
9
+ 2. [Command Reference Structure](#command-reference-structure)
10
+ 3. [Writing Style & Tone](#writing-style--tone)
11
+ 4. [Formatting Conventions](#formatting-conventions)
12
+ 5. [Section Standards](#section-standards)
13
+ 6. [Examples & Code Blocks](#examples--code-blocks)
14
+ 7. [What NOT to Do](#what-not-to-do)
15
+
16
+ ---
17
+
18
+ ## Information Architecture
19
+
20
+ ### Manual Organization (Top Level)
21
+
22
+ The manual follows a progressive disclosure pattern from beginner to advanced:
23
+
24
+ 1. **Getting Started** - Installation, authentication, first steps
25
+ 2. **Core Concepts** - Fundamental understanding required for effective use
26
+ 3. **Feature Sections** (3-8) - Organized by user workflow/domain (Email, Campaigns, Contacts, etc.)
27
+ 4. **Advanced Usage** - Power user techniques, scripting, automation
28
+ 5. **Command Reference** - Complete technical reference
29
+ 6. **Troubleshooting** - Problem resolution
30
+ 7. **Appendix** - Supporting materials (changelog, glossary, etc.)
31
+
32
+ ### Navigation Hierarchy
33
+
34
+ ```
35
+ Manual Root (README.md)
36
+ ├── Section Folders (numbered 01-11)
37
+ │ ├── Section README.md (overview + links)
38
+ │ └── Topic Articles (individual .md files)
39
+ └── Command Reference
40
+ ├── Command Reference README.md (index)
41
+ └── Command Group Files (e.g., campaigns.md, contacts.md)
42
+ ```
43
+
44
+ ### Organization Principles
45
+
46
+ - **Workflow-Centric**: Group by what users want to accomplish, not by API structure
47
+ - **Progressive Complexity**: Simple → Intermediate → Advanced → Reference
48
+ - **Clear Hierarchy**: Maximum 3 levels deep (Section → Topic → Subsection)
49
+ - **Consistent Numbering**: Use 01-11 prefix for sections to enforce ordering
50
+ - **Single Responsibility**: Each article covers ONE concept or command group
51
+
52
+ ---
53
+
54
+ ## Command Reference Structure
55
+
56
+ ### Command Group Article Template
57
+
58
+ Every command group article (e.g., `campaigns.md`, `interests.md`) MUST follow this exact structure:
59
+
60
+ ```markdown
61
+ # [Resource] Commands
62
+
63
+ [One-line description of what this resource does] (version if applicable).
64
+
65
+ ## Overview
66
+
67
+ [2-3 paragraph explanation of the resource and why it exists]
68
+
69
+ **Available Commands:**
70
+ - [`resource command`](#resource-command) - Brief description
71
+ - [`resource command2`](#resource-command2) - Brief description
72
+
73
+ **Key Features:**
74
+ - Feature 1
75
+ - Feature 2
76
+ - Feature 3
77
+
78
+ **Use Cases:**
79
+ - Use case 1
80
+ - Use case 2
81
+ - Use case 3
82
+
83
+ ---
84
+
85
+ ## resource command
86
+
87
+ [One-line description of what this command does]
88
+
89
+ ### Usage
90
+
91
+ ```bash
92
+ cakemail resource command [arguments] [options]
93
+ ```
94
+
95
+ ### Arguments
96
+
97
+ - `<required-arg>` - Description (required)
98
+ - `[optional-arg]` - Description (optional - explain default behavior)
99
+
100
+ ### Options
101
+
102
+ - `-s, --short <value>` - Description
103
+ - `-f, --flag` - Boolean flag description
104
+
105
+ ### Examples
106
+
107
+ **[Descriptive scenario name]:**
108
+ ```bash
109
+ $ cakemail resource command args
110
+ ```
111
+
112
+ **Output:**
113
+ ```
114
+ [Show actual terminal output]
115
+ ```
116
+
117
+ **[Another scenario]:**
118
+ ```bash
119
+ $ cakemail resource command --flag
120
+ ```
121
+
122
+ ### Notes
123
+
124
+ - Important detail about behavior
125
+ - Edge case or limitation
126
+ - Related considerations
127
+
128
+ ---
129
+
130
+ [Repeat for each command]
131
+
132
+ ---
133
+
134
+ ## Common Workflows
135
+
136
+ ### Workflow 1: [Descriptive Name]
137
+
138
+ ```bash
139
+ # Step 1 comment
140
+ cakemail command1
141
+
142
+ # Step 2 comment
143
+ cakemail command2
144
+ ```
145
+
146
+ ---
147
+
148
+ ## [Additional Sections as Needed]
149
+
150
+ ### Best Practices
151
+ ### Troubleshooting
152
+ ### Integration with Other Commands
153
+ ### Comparison with Related Features
154
+
155
+ ```
156
+
157
+ ### Required Sections (All Commands)
158
+
159
+ Every command documentation MUST include:
160
+
161
+ 1. **Title** - Command name as H1
162
+ 2. **One-line description** - Imperative form, starts with verb
163
+ 3. **Usage** - Exact syntax with square brackets for optional args
164
+ 4. **Arguments** - Required vs optional explicitly marked
165
+ 5. **Options** - All flags with short and long forms
166
+ 6. **Examples** - Minimum 2, showing different scenarios with actual output
167
+
168
+ ### Optional Sections (Use When Relevant)
169
+
170
+ - **Notes** - Important behavioral details, edge cases
171
+ - **See Also** - Links to related commands
172
+ - **Aliases** - If command has aliases
173
+ - **Environment Variables** - If command respects env vars
174
+ - **Configuration** - If command uses config values
175
+
176
+ ### Mandatory for Complex Commands
177
+
178
+ If command has ANY of these characteristics, include these sections:
179
+
180
+ - **Interactive flow** → Document each prompt/choice
181
+ - **Multiple modes** → Show each mode separately with examples
182
+ - **Security implications** → Add warnings and best practices
183
+ - **Destructive operations** → Add clear warnings, show confirmation prompts
184
+ - **Profile-specific behavior** → Show output for different profiles
185
+
186
+ ---
187
+
188
+ ## Writing Style & Tone
189
+
190
+ ### Voice Guidelines
191
+
192
+ **DO:**
193
+ - Use imperative mood for instructions: "Create a campaign", "List contacts"
194
+ - Use declarative for descriptions: "This command lists all campaigns"
195
+ - Use active voice: "The CLI validates input" not "Input is validated by the CLI"
196
+ - Address the user as "you" when explaining behavior
197
+ - Write in present tense: "The command returns..." not "The command will return..."
198
+
199
+ **DON'T:**
200
+ - Use passive voice unnecessarily
201
+ - Use future tense ("will list") when present works ("lists")
202
+ - Use overly formal language ("utilize" → "use", "in order to" → "to")
203
+ - Use conversational filler ("basically", "just", "simply")
204
+
205
+ ### Sentence Structure
206
+
207
+ - **Keep it short**: Aim for 15-20 words per sentence
208
+ - **One idea per sentence**: Don't chain multiple concepts
209
+ - **Front-load important information**: Start with the main point
210
+ - **Use parallel structure**: "Create, update, and delete" not "Create, updating, and delete"
211
+
212
+ ### Technical Terminology
213
+
214
+ - **Be consistent**: Pick one term and stick with it throughout all docs
215
+ - **Define on first use**: Explain technical terms when first mentioned in a section
216
+ - **Use standard terms**: Prefer industry-standard terminology (e.g., "pagination" not "paging")
217
+ - **Format consistently**:
218
+ - Commands: `cakemail command`
219
+ - Options/flags: `--flag` or `-f`
220
+ - Arguments: `<required>` or `[optional]`
221
+ - API endpoints: `/api/v1/resource`
222
+ - Variables: `variable_name`
223
+
224
+ ### Tone Characteristics
225
+
226
+ From GitHub CLI manual analysis:
227
+
228
+ - **Professional but Approachable**: Technical but not intimidating
229
+ - **Concise**: Every word earns its place
230
+ - **Practical**: Focus on what users need to accomplish
231
+ - **Clear**: Eliminate ambiguity
232
+ - **Instructional**: Direct guidance over explanation
233
+
234
+ ---
235
+
236
+ ## Formatting Conventions
237
+
238
+ ### Headers
239
+
240
+ ```markdown
241
+ # H1 - Article Title Only (once per file)
242
+ ## H2 - Major Sections
243
+ ### H3 - Subsections
244
+ #### H4 - Rarely Used (avoid if possible)
245
+ ```
246
+
247
+ **Rules:**
248
+ - Only ONE H1 per file (the article title)
249
+ - Use H2 for major sections (commands, workflows)
250
+ - Use H3 for subsections within commands (Usage, Arguments, Examples)
251
+ - Avoid H4+ (restructure if needed)
252
+ - Use sentence case: "Command reference" not "Command Reference"
253
+
254
+ ### Lists
255
+
256
+ **Unordered Lists:**
257
+ ```markdown
258
+ - Item 1
259
+ - Item 2
260
+ - Nested item (use 2 spaces)
261
+ - Item 3
262
+ ```
263
+
264
+ **Ordered Lists:**
265
+ ```markdown
266
+ 1. First step
267
+ 2. Second step
268
+ 3. Third step
269
+ ```
270
+
271
+ **Rules:**
272
+ - Use hyphens `-` for unordered lists (not asterisks or plus)
273
+ - Use consistent indentation (2 spaces for nesting)
274
+ - Keep list items parallel in structure
275
+ - Don't mix ordered and unordered at same level
276
+
277
+ ### Code Formatting
278
+
279
+ **Inline Code:**
280
+ - Commands: `cakemail campaigns list`
281
+ - Flags: `--format json`
282
+ - Values: `table`, `json`, `compact`
283
+ - File paths: `/path/to/file`
284
+ - Variables: `account_id`
285
+
286
+ **Code Blocks:**
287
+ ```markdown
288
+ ```bash
289
+ cakemail command --flag value
290
+ ```
291
+ ```
292
+
293
+ **Rules:**
294
+ - Always specify language for syntax highlighting
295
+ - Use `bash` for command examples
296
+ - Use `json` for JSON output
297
+ - Use `text` or no language for plain terminal output
298
+ - Show prompts with `$` for user commands
299
+
300
+ ### Tables
301
+
302
+ ```markdown
303
+ | Column 1 | Column 2 | Column 3 |
304
+ |----------|----------|----------|
305
+ | Value 1 | Value 2 | Value 3 |
306
+ ```
307
+
308
+ **When to Use Tables:**
309
+ - Comparing multiple items (commands, options, features)
310
+ - Quick reference information
311
+ - Showing output format
312
+
313
+ **When NOT to Use Tables:**
314
+ - Long descriptions (use lists instead)
315
+ - Complex nested data (use examples instead)
316
+ - Anything that wraps awkwardly
317
+
318
+ ### Emphasis
319
+
320
+ - **Bold** for UI elements, important terms, warnings
321
+ - *Italics* for emphasis (use sparingly)
322
+ - `Code formatting` for technical terms, commands, values
323
+
324
+ **DON'T:**
325
+ - Use ALL CAPS for emphasis (except in warnings: `WARNING:`)
326
+ - Mix multiple emphasis styles (`**_bold italic_**` is excessive)
327
+ - Overuse bold (loses impact)
328
+
329
+ ---
330
+
331
+ ## Section Standards
332
+
333
+ ### Overview Section (Command Group Articles)
334
+
335
+ **Purpose**: Orient readers to what the command group does and why it exists.
336
+
337
+ **Structure:**
338
+ 1. What the resource is (1-2 sentences)
339
+ 2. Why it matters / common use cases (1 paragraph)
340
+ 3. Available Commands list with anchors
341
+ 4. Key Features (3-5 bullet points)
342
+ 5. Use Cases (3-5 realistic scenarios)
343
+
344
+ **Example:**
345
+ ```markdown
346
+ ## Overview
347
+
348
+ Interests are list-specific preferences that contacts can subscribe to. Unlike tags which are global, interests are specific to each list and are commonly used for newsletter preferences, topic subscriptions, and opt-in categories.
349
+
350
+ **Available Commands:**
351
+ - [`interests list`](#interests-list) - List all interests in a list
352
+ - [`interests create`](#interests-create) - Create a new interest
353
+
354
+ **Key Features:**
355
+ - List-specific (not global like tags)
356
+ - Support auto-detection when only one list exists
357
+ - Optional URL-friendly aliases
358
+ ```
359
+
360
+ ### Usage Section
361
+
362
+ **Always include:**
363
+ - Exact command syntax
364
+ - Square brackets `[optional]` for optional arguments
365
+ - Angle brackets `<required>` for required arguments
366
+ - `[options]` placeholder for flags
367
+
368
+ **Example:**
369
+ ```markdown
370
+ ### Usage
371
+
372
+ ```bash
373
+ cakemail interests create [list-id] --name <name> [options]
374
+ ```
375
+ ```
376
+
377
+ ### Arguments Section
378
+
379
+ **Format:**
380
+ ```markdown
381
+ ### Arguments
382
+
383
+ - `<arg-name>` - Description (required)
384
+ - `[arg-name]` - Description (optional - default: value)
385
+ ```
386
+
387
+ **Rules:**
388
+ - List in the order they appear in usage
389
+ - Mark required vs optional explicitly
390
+ - Explain default behavior for optional args
391
+ - Include data type if not obvious (e.g., "List ID (number)")
392
+
393
+ ### Options Section
394
+
395
+ **Format:**
396
+ ```markdown
397
+ ### Options
398
+
399
+ - `-s, --short <value>` - Description
400
+ - `-f, --flag` - Boolean flag description
401
+ ```
402
+
403
+ **Rules:**
404
+ - List short form first, then long form
405
+ - Show `<value>` if option takes an argument
406
+ - Omit `<value>` for boolean flags
407
+ - Alphabetize for long lists
408
+ - Group related options together
409
+
410
+ ### Examples Section
411
+
412
+ **CRITICAL**: This is the most important section. Users learn by example.
413
+
414
+ **Structure for Each Example:**
415
+
416
+ ```markdown
417
+ **[Descriptive scenario label]:**
418
+ ```bash
419
+ $ cakemail command args
420
+ ```
421
+
422
+ **Output:**
423
+ ```
424
+ Actual terminal output here
425
+ ```
426
+ ```
427
+
428
+ **Rules:**
429
+ - Always start with a bold descriptive label
430
+ - Show the command with `$` prompt
431
+ - Show realistic output (not `<output>` placeholder)
432
+ - Progress from simple to complex
433
+ - Include minimum 2 examples, ideally 3-5
434
+ - Show different use cases, not just flag variations
435
+
436
+ **Example Types to Include:**
437
+ 1. **Basic usage** - Simplest form
438
+ 2. **Common scenario** - Real-world use case
439
+ 3. **With options** - Show useful flags
440
+ 4. **JSON output** - For Developer profile
441
+ 5. **Error handling** - What happens when it fails
442
+
443
+ ### Notes Section
444
+
445
+ **When to include:**
446
+ - Important behavioral details not obvious from usage
447
+ - Edge cases or limitations
448
+ - Performance considerations
449
+ - Related concepts users should know
450
+
451
+ **Format:**
452
+ ```markdown
453
+ ### Notes
454
+
455
+ - First important note
456
+ - Second consideration
457
+ - Related detail
458
+ ```
459
+
460
+ ### Workflow Sections
461
+
462
+ **Purpose**: Show how multiple commands work together.
463
+
464
+ **Structure:**
465
+ ```markdown
466
+ ## Common Workflows
467
+
468
+ ### Workflow 1: [Descriptive Name]
469
+
470
+ ```bash
471
+ # Step 1: Brief explanation
472
+ cakemail command1
473
+
474
+ # Step 2: What this does
475
+ cakemail command2 | cakemail command3
476
+ ```
477
+ ```
478
+
479
+ **Include:**
480
+ - Comments explaining each step
481
+ - Realistic multi-step scenarios
482
+ - Piping and composition examples
483
+ - Error handling considerations
484
+
485
+ ---
486
+
487
+ ## Examples & Code Blocks
488
+
489
+ ### Command Examples
490
+
491
+ **Show Real Terminal Interaction:**
492
+
493
+ ```markdown
494
+ **Create with confirmation:**
495
+ ```bash
496
+ $ cakemail campaigns delete 123
497
+ ```
498
+
499
+ **Output:**
500
+ ```
501
+ ⚠ Delete campaign 'Summer Sale'?
502
+ This action cannot be undone
503
+
504
+ Delete campaign? (y/N): y
505
+
506
+ ✓ Campaign deleted successfully
507
+ ```
508
+ ```
509
+
510
+ **Rules:**
511
+ - Include `$` prompt for user commands
512
+ - Show multi-line output as it appears
513
+ - Include prompts and confirmation dialogs
514
+ - Show success/error symbols (✓, ✗, ⚠)
515
+ - Use realistic IDs and names, not placeholders
516
+
517
+ ### JSON Output Examples
518
+
519
+ ```markdown
520
+ **Developer profile:**
521
+ ```bash
522
+ $ cakemail --profile developer interests list
523
+ ```
524
+
525
+ **Output:**
526
+ ```json
527
+ {
528
+ "data": [
529
+ {"id": 1, "name": "Product Updates", "alias": "updates"}
530
+ ]
531
+ }
532
+ ```
533
+ ```
534
+
535
+ **Rules:**
536
+ - Show actual valid JSON (not pseudo-JSON)
537
+ - Format with proper indentation (2 spaces)
538
+ - Include relevant fields only (don't show everything)
539
+ - Use realistic values
540
+
541
+ ### Multi-Step Examples
542
+
543
+ ```markdown
544
+ **Complete workflow:**
545
+ ```bash
546
+ # Create the campaign
547
+ $ cakemail campaigns create \
548
+ --name "Newsletter" \
549
+ --list-id 123
550
+
551
+ ✓ Campaign created: ID 456
552
+
553
+ # Schedule it
554
+ $ cakemail campaigns schedule 456 \
555
+ --date "2025-10-15 09:00"
556
+
557
+ ✓ Campaign scheduled for Oct 15, 2025 at 9:00 AM
558
+ ```
559
+ ```
560
+
561
+ **Rules:**
562
+ - Use line continuation `\` for long commands
563
+ - Show output after each command
564
+ - Include comments explaining the flow
565
+ - Number steps if order matters
566
+
567
+ ---
568
+
569
+ ## What NOT to Do
570
+
571
+ ### ❌ Anti-Patterns in Structure
572
+
573
+ **DON'T duplicate information across sections:**
574
+
575
+ ```markdown
576
+ ❌ BAD:
577
+ ## campaigns list
578
+
579
+ List all campaigns.
580
+
581
+ ### Description
582
+ This command lists all campaigns.
583
+
584
+ ### Usage
585
+ Use this command to list campaigns:
586
+ ```bash
587
+ cakemail campaigns list
588
+ ```
589
+
590
+ ✅ GOOD:
591
+ ## campaigns list
592
+
593
+ List all campaigns for the current account.
594
+
595
+ ### Usage
596
+ ```bash
597
+ cakemail campaigns list [options]
598
+ ```
599
+ ```
600
+
601
+ **DON'T create deeply nested sections:**
602
+
603
+ ```markdown
604
+ ❌ BAD:
605
+ # Campaigns
606
+ ## Campaign Management
607
+ ### Managing Campaigns
608
+ #### List Campaigns
609
+ ##### campaigns list command
610
+
611
+ ✅ GOOD:
612
+ # Campaign Commands
613
+ ## campaigns list
614
+ ```
615
+
616
+ **DON'T split related information awkwardly:**
617
+
618
+ ```markdown
619
+ ❌ BAD:
620
+ ## campaigns create
621
+
622
+ Create a campaign.
623
+
624
+ [15 pages of other content]
625
+
626
+ ## campaigns create options
627
+ [Options documented far from the command]
628
+
629
+ ✅ GOOD:
630
+ ## campaigns create
631
+
632
+ Create a campaign.
633
+
634
+ ### Usage
635
+ ### Arguments
636
+ ### Options
637
+ [Everything together]
638
+ ```
639
+
640
+ ### ❌ Anti-Patterns in Writing
641
+
642
+ **DON'T use vague placeholders:**
643
+
644
+ ```markdown
645
+ ❌ BAD:
646
+ ```bash
647
+ cakemail campaigns create --name <name>
648
+ ```
649
+
650
+ Output: <output will be shown here>
651
+
652
+ ✅ GOOD:
653
+ ```bash
654
+ $ cakemail campaigns create --name "Summer Sale"
655
+ ```
656
+
657
+ **Output:**
658
+ ```
659
+ ✓ Campaign created successfully
660
+ ID: 456
661
+ Name: Summer Sale
662
+ ```
663
+ ```
664
+
665
+ **DON'T explain what users can already see:**
666
+
667
+ ```markdown
668
+ ❌ BAD:
669
+ The above command creates a campaign with the name option set to the value you specified and outputs the result showing the campaign was created.
670
+
671
+ ✅ GOOD:
672
+ [Let the example speak for itself, or add meaningful context]
673
+ This creates a draft campaign ready for content and scheduling.
674
+ ```
675
+
676
+ **DON'T use uncertain language:**
677
+
678
+ ```markdown
679
+ ❌ BAD:
680
+ This might return a list of campaigns, possibly in table format.
681
+ You should probably use the --force flag.
682
+
683
+ ✅ GOOD:
684
+ Returns all campaigns in table format (default).
685
+ Use `--force` to skip the confirmation prompt.
686
+ ```
687
+
688
+ **DON'T use conversational filler:**
689
+
690
+ ```markdown
691
+ ❌ BAD:
692
+ So basically, you just simply need to run the command, and it will go ahead and create the campaign for you.
693
+
694
+ ✅ GOOD:
695
+ Run the command to create a campaign.
696
+ ```
697
+
698
+ ### ❌ Anti-Patterns in Examples
699
+
700
+ **DON'T show incomplete output:**
701
+
702
+ ```markdown
703
+ ❌ BAD:
704
+ ```bash
705
+ $ cakemail campaigns list
706
+ ```
707
+ [output truncated]
708
+ ...
709
+
710
+ ✅ GOOD:
711
+ ```bash
712
+ $ cakemail campaigns list
713
+ ```
714
+
715
+ **Output:**
716
+ ```
717
+ ┌────┬──────────────┬──────────┐
718
+ │ ID │ Name │ Status │
719
+ ├────┼──────────────┼──────────┤
720
+ │ 1 │ Summer Sale │ draft │
721
+ │ 2 │ Welcome │ sent │
722
+ └────┴──────────────┴──────────┘
723
+ ```
724
+ ```
725
+
726
+ **DON'T show only the happy path:**
727
+
728
+ ```markdown
729
+ ❌ BAD:
730
+ Only showing successful examples with no errors or edge cases
731
+
732
+ ✅ GOOD:
733
+ Include examples of:
734
+ - Success cases
735
+ - Common errors
736
+ - Edge cases (empty lists, missing args)
737
+ ```
738
+
739
+ **DON'T use fake data poorly:**
740
+
741
+ ```markdown
742
+ ❌ BAD:
743
+ ```bash
744
+ $ cakemail campaigns get 999999
745
+ Campaign: asdfasdf
746
+ Status: foo
747
+ ```
748
+
749
+ ✅ GOOD:
750
+ ```bash
751
+ $ cakemail campaigns get 456
752
+ Campaign: Summer Sale 2025
753
+ Status: draft
754
+ ```
755
+ ```
756
+
757
+ ### ❌ Anti-Patterns in Formatting
758
+
759
+ **DON'T mix code formatting styles:**
760
+
761
+ ```markdown
762
+ ❌ BAD:
763
+ Run `cakemail campaigns list` or **cakemail campaigns list** or cakemail campaigns list
764
+
765
+ ✅ GOOD:
766
+ Run `cakemail campaigns list`
767
+ ```
768
+
769
+ **DON'T overuse emphasis:**
770
+
771
+ ```markdown
772
+ ❌ BAD:
773
+ **This is _VERY_ `important`!!!** You **MUST** use the **`--force`** **flag**!
774
+
775
+ ✅ GOOD:
776
+ Use the `--force` flag to skip confirmation.
777
+
778
+ **Warning:** This action cannot be undone.
779
+ ```
780
+
781
+ **DON'T use inconsistent header capitalization:**
782
+
783
+ ```markdown
784
+ ❌ BAD:
785
+ ## Usage Instructions
786
+ ### how to use this
787
+ ## IMPORTANT NOTES
788
+
789
+ ✅ GOOD:
790
+ ## Usage
791
+ ### Arguments
792
+ ## Important notes
793
+ ```
794
+
795
+ ### ❌ Anti-Patterns in Organization
796
+
797
+ **DON'T organize by technical implementation:**
798
+
799
+ ```markdown
800
+ ❌ BAD:
801
+ - API v1 Commands
802
+ - API v2 Commands
803
+ - Database Operations
804
+ - HTTP Endpoints
805
+
806
+ ✅ GOOD:
807
+ - Campaign Management
808
+ - Contact Management
809
+ - Email Operations
810
+ ```
811
+
812
+ **DON'T create orphan pages:**
813
+
814
+ ```markdown
815
+ ❌ BAD:
816
+ File exists but isn't linked from parent README or any other page
817
+
818
+ ✅ GOOD:
819
+ Every page is discoverable through the navigation hierarchy
820
+ ```
821
+
822
+ **DON'T create redundant READMEs:**
823
+
824
+ ```markdown
825
+ ❌ BAD:
826
+ docs/user-manual/README.md (lists everything)
827
+ docs/user-manual/09-command-reference/README.md (lists same commands)
828
+ docs/user-manual/09-command-reference/campaigns.md (lists campaign commands again)
829
+
830
+ ✅ GOOD:
831
+ docs/user-manual/README.md (high-level TOC)
832
+ docs/user-manual/09-command-reference/README.md (command index with brief descriptions)
833
+ docs/user-manual/09-command-reference/campaigns.md (full documentation)
834
+ ```
835
+
836
+ ---
837
+
838
+ ## Quality Checklist
839
+
840
+ Before publishing any documentation, verify:
841
+
842
+ ### Structure
843
+ - [ ] File follows the standard template for its type
844
+ - [ ] All required sections are present
845
+ - [ ] Sections appear in the standard order
846
+ - [ ] Headers use consistent capitalization
847
+ - [ ] Navigation links are correct and working
848
+
849
+ ### Content
850
+ - [ ] One-line description is clear and starts with a verb
851
+ - [ ] Usage syntax is exact and unambiguous
852
+ - [ ] All arguments and options are documented
853
+ - [ ] At least 2 realistic examples with actual output
854
+ - [ ] Examples progress from simple to complex
855
+
856
+ ### Writing
857
+ - [ ] Active voice used throughout
858
+ - [ ] Imperative mood for instructions
859
+ - [ ] Present tense for descriptions
860
+ - [ ] No conversational filler
861
+ - [ ] Technical terms defined on first use
862
+ - [ ] Consistent terminology
863
+
864
+ ### Formatting
865
+ - [ ] Commands formatted as `inline code`
866
+ - [ ] Code blocks specify language
867
+ - [ ] Examples show `$` prompt
868
+ - [ ] JSON properly formatted
869
+ - [ ] Tables align properly
870
+ - [ ] Emphasis used sparingly and consistently
871
+
872
+ ### Examples
873
+ - [ ] Show realistic data (not placeholders)
874
+ - [ ] Include actual terminal output
875
+ - [ ] Show both success and error cases
876
+ - [ ] Demonstrate real-world scenarios
877
+ - [ ] Include profile-specific variations where relevant
878
+
879
+ ### Cross-References
880
+ - [ ] All links use production URL format
881
+ - [ ] All links tested and working
882
+ - [ ] Link destinations exist
883
+ - [ ] No "Next Steps" or "Related" navigation sections (removed for external publication)
884
+
885
+ ---
886
+
887
+ ## Link Format Standard
888
+
889
+ ### Production URL Format
890
+
891
+ All internal links in the documentation MUST use the production URL format:
892
+
893
+ ```markdown
894
+ [Link Text](/en/cli/[category]/[article]/)
895
+ ```
896
+
897
+ ### URL Construction Rules
898
+
899
+ 1. **Base Path**: All URLs start with `/en/cli/`
900
+
901
+ 2. **Category**: Directory name without number prefix
902
+ - File: `01-getting-started/` → URL: `/en/cli/getting-started/`
903
+ - File: `09-command-reference/` → URL: `/en/cli/command-reference/`
904
+
905
+ 3. **Article**: Filename without number prefix and without `.md` extension
906
+ - File: `02-authentication.md` → URL: `authentication/`
907
+ - File: `15-tags.md` → URL: `tags/`
908
+
909
+ 4. **Trailing Slash**: Always include trailing `/` for URLs without anchors
910
+ - ✅ `/en/cli/getting-started/authentication/`
911
+ - ❌ `/en/cli/getting-started/authentication`
912
+
913
+ 5. **Anchors**: When linking to specific sections, omit trailing slash before anchor
914
+ - ✅ `/en/cli/command-reference/contacts#contacts-list`
915
+ - ❌ `/en/cli/command-reference/contacts/#contacts-list`
916
+
917
+ ### Examples
918
+
919
+ **File Structure → Production URL:**
920
+
921
+ ```
922
+ docs/user-manual/
923
+ ├── 01-getting-started/
924
+ │ ├── 02-authentication.md → /en/cli/getting-started/authentication/
925
+ │ └── 04-configuration.md → /en/cli/getting-started/configuration/
926
+ ├── 02-core-concepts/
927
+ │ ├── 02-profile-system.md → /en/cli/core-concepts/profile-system/
928
+ │ └── 03-smart-defaults.md → /en/cli/core-concepts/smart-defaults/
929
+ └── 09-command-reference/
930
+ ├── 03-lists.md → /en/cli/command-reference/lists/
931
+ ├── 04-contacts.md → /en/cli/command-reference/contacts/
932
+ └── 15-tags.md → /en/cli/command-reference/tags/
933
+ ```
934
+
935
+ **Link Examples:**
936
+
937
+ ```markdown
938
+ # Good - Production format
939
+ [Authentication](/en/cli/getting-started/authentication/)
940
+ [Profile System](/en/cli/core-concepts/profile-system/)
941
+ [Lists Commands](/en/cli/command-reference/lists/)
942
+ [contacts list](/en/cli/command-reference/contacts#contacts-list)
943
+
944
+ # Bad - Relative paths (do not use)
945
+ [Authentication](../01-getting-started/02-authentication.md)
946
+ [Profile System](./02-profile-system.md)
947
+ ```
948
+
949
+ ### Special Cases
950
+
951
+ **README Files**: README.md files map to the category root
952
+
953
+ ```
954
+ docs/user-manual/
955
+ ├── README.md → /en/cli/
956
+ └── 01-getting-started/
957
+ └── README.md → /en/cli/getting-started/
958
+ ```
959
+
960
+ **Command Reference Links**: Command group articles are always under `/command-reference/`
961
+
962
+ ```markdown
963
+ # All command groups
964
+ [Config Commands](/en/cli/command-reference/config/)
965
+ [Contacts Commands](/en/cli/command-reference/contacts/)
966
+ [Tags Commands](/en/cli/command-reference/tags/)
967
+ ```
968
+
969
+ ### Validation
970
+
971
+ All internal links should be validated to ensure:
972
+ 1. **Destination file exists**: The target file is present in the documentation
973
+ 2. **URL format is correct**: Follows the production URL pattern
974
+ 3. **No relative paths**: All links use absolute `/en/cli/` format
975
+
976
+ **Note**: Anchor validation is not required during pre-publication as markdown platforms auto-generate anchors from headers. As long as the destination file exists and contains the referenced header, the anchor will work.
977
+
978
+ ---
979
+
980
+ ## Maintenance Guidelines
981
+
982
+ ### Pre-Release Documentation Standards
983
+
984
+ For documentation intended for external publication (before official release):
985
+
986
+ **DO NOT INCLUDE:**
987
+ - ❌ Version numbers (v1.4.0, v1.5.0, etc.) - Remove all version annotations
988
+ - ❌ "Next Steps" sections - Navigation sections are removed for external platforms
989
+ - ❌ "Related Topics" sections - Cross-linking handled by documentation platform
990
+ - ❌ "Related Sections" sections - Platform provides navigation
991
+ - ❌ Changelog files - Not relevant pre-release
992
+ - ❌ Migration guides - No previous versions to migrate from
993
+ - ❌ Section README.md files - Only keep main README.md
994
+
995
+ **RATIONALE:**
996
+ - Documentation will be published on a platform that provides its own navigation
997
+ - Version references are not meaningful pre-release
998
+ - Cleaner, more focused content without redundant navigation
999
+
1000
+ ### Version Changes (Post-Release)
1001
+
1002
+ When adding new features after release:
1003
+ 1. Add version indicator: `(v1.6.0+)` in first mention
1004
+ 2. Update command reference README
1005
+ 3. Update parent section README if adding new capabilities
1006
+ 4. Add to changelog
1007
+
1008
+ ### Deprecations
1009
+
1010
+ When deprecating features:
1011
+ 1. Mark as deprecated with version: `(deprecated in v1.7.0)`
1012
+ 2. Explain what to use instead
1013
+ 3. Keep documentation for 2 major versions
1014
+ 4. Add to migration guide
1015
+
1016
+ ### Updates
1017
+
1018
+ When updating existing docs:
1019
+ 1. Verify all examples still work
1020
+ 2. Update version numbers if behavior changed (post-release only)
1021
+ 3. Check all links still valid
1022
+ 4. Update "Last updated" if file has one
1023
+
1024
+ ---
1025
+
1026
+ ## Reference Models
1027
+
1028
+ ### GitHub CLI Manual Strengths (Apply These)
1029
+
1030
+ ✅ **Clear hierarchy**: Commands → Subcommands → Examples
1031
+ ✅ **Consistent structure**: Every command page follows same pattern
1032
+ ✅ **Minimal verbosity**: Direct and to the point
1033
+ ✅ **Practical examples**: Show real usage, not abstract syntax
1034
+ ✅ **Progressive disclosure**: Simple → Advanced
1035
+ ✅ **Scannable format**: Easy to find specific information
1036
+
1037
+ ### GitHub CLI Manual Differences (Cakemail Adaptations)
1038
+
1039
+ **GitHub CLI**: Minimal workflow documentation
1040
+ **Cakemail CLI**: Extensive workflow sections showing multi-command scenarios
1041
+
1042
+ **GitHub CLI**: No profile system
1043
+ **Cakemail CLI**: Show profile-specific behavior prominently
1044
+
1045
+ **GitHub CLI**: Simple confirmation patterns
1046
+ **Cakemail CLI**: Detailed confirmation and interactive flow documentation
1047
+
1048
+ **GitHub CLI**: Limited troubleshooting
1049
+ **Cakemail CLI**: Comprehensive troubleshooting sections
1050
+
1051
+ ---
1052
+
1053
+ ## Conclusion
1054
+
1055
+ This standard ensures:
1056
+ - **Consistency**: All documentation follows same patterns
1057
+ - **Usability**: Users can quickly find what they need
1058
+ - **Clarity**: Information is unambiguous and actionable
1059
+ - **Completeness**: All necessary information is present
1060
+ - **Maintainability**: Easy to update and extend
1061
+
1062
+ When in doubt, ask:
1063
+ 1. "Is this how GitHub CLI would document it?"
1064
+ 2. "Can a user accomplish their task with just this information?"
1065
+ 3. "Is every word necessary?"
1066
+ 4. "Would I understand this if I were new to the CLI?"
1067
+
1068
+ If the answer to any is "no", revise.