@onion-ai/cli 1.0.0-beta.1

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 (220) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +529 -0
  3. package/bin/onion.js +6 -0
  4. package/framework/CLAUDE.md +45 -0
  5. package/framework/VERSION +1 -0
  6. package/framework/agents/compliance/iso-22301-specialist.md +985 -0
  7. package/framework/agents/compliance/iso-27001-specialist.md +713 -0
  8. package/framework/agents/compliance/pmbok-specialist.md +739 -0
  9. package/framework/agents/compliance/security-information-master.md +907 -0
  10. package/framework/agents/compliance/soc2-specialist.md +889 -0
  11. package/framework/agents/deployment/docker-specialist.md +1192 -0
  12. package/framework/agents/development/c4-architecture-specialist.md +745 -0
  13. package/framework/agents/development/c4-documentation-specialist.md +695 -0
  14. package/framework/agents/development/clickup-specialist.md +396 -0
  15. package/framework/agents/development/cursor-specialist.md +277 -0
  16. package/framework/agents/development/docs-reverse-engineer.md +417 -0
  17. package/framework/agents/development/gamma-api-specialist.md +1168 -0
  18. package/framework/agents/development/gitflow-specialist.md +1206 -0
  19. package/framework/agents/development/linux-security-specialist.md +675 -0
  20. package/framework/agents/development/mermaid-specialist.md +515 -0
  21. package/framework/agents/development/nodejs-specialist.md +672 -0
  22. package/framework/agents/development/nx-migration-specialist.md +866 -0
  23. package/framework/agents/development/nx-monorepo-specialist.md +618 -0
  24. package/framework/agents/development/postgres-specialist.md +1123 -0
  25. package/framework/agents/development/react-developer.md +131 -0
  26. package/framework/agents/development/runflow-specialist.md +277 -0
  27. package/framework/agents/development/system-documentation-orchestrator.md +1387 -0
  28. package/framework/agents/development/task-specialist.md +677 -0
  29. package/framework/agents/git/branch-code-reviewer.md +225 -0
  30. package/framework/agents/git/branch-documentation-writer.md +161 -0
  31. package/framework/agents/git/branch-metaspec-checker.md +67 -0
  32. package/framework/agents/git/branch-test-planner.md +176 -0
  33. package/framework/agents/meta/agent-creator-specialist.md +1266 -0
  34. package/framework/agents/meta/command-creator-specialist.md +1676 -0
  35. package/framework/agents/meta/metaspec-gate-keeper.md +240 -0
  36. package/framework/agents/meta/onion.md +824 -0
  37. package/framework/agents/product/branding-positioning-specialist.md +1029 -0
  38. package/framework/agents/product/extract-meeting-specialist.md +394 -0
  39. package/framework/agents/product/meeting-consolidator.md +482 -0
  40. package/framework/agents/product/pain-price-specialist.md +508 -0
  41. package/framework/agents/product/presentation-orchestrator.md +1190 -0
  42. package/framework/agents/product/product-agent.md +201 -0
  43. package/framework/agents/product/story-points-framework-specialist.md +538 -0
  44. package/framework/agents/product/storytelling-business-specialist.md +890 -0
  45. package/framework/agents/research/research-agent.md +292 -0
  46. package/framework/agents/review/code-reviewer.md +154 -0
  47. package/framework/agents/review/corporate-compliance-specialist.md +370 -0
  48. package/framework/agents/testing/test-agent.md +424 -0
  49. package/framework/agents/testing/test-engineer.md +294 -0
  50. package/framework/agents/testing/test-planner.md +117 -0
  51. package/framework/commands/common/prompts/README.md +208 -0
  52. package/framework/commands/common/prompts/clickup-patterns.md +144 -0
  53. package/framework/commands/common/prompts/code-review-checklist.md +168 -0
  54. package/framework/commands/common/prompts/git-workflow-patterns.md +235 -0
  55. package/framework/commands/common/prompts/output-formats.md +240 -0
  56. package/framework/commands/common/prompts/technical.md +194 -0
  57. package/framework/commands/common/templates/abstraction-template.md +399 -0
  58. package/framework/commands/common/templates/agent-template.md +353 -0
  59. package/framework/commands/common/templates/business_context_template.md +748 -0
  60. package/framework/commands/common/templates/command-template.md +273 -0
  61. package/framework/commands/common/templates/technical_context_template.md +526 -0
  62. package/framework/commands/design/screen-spec.md +505 -0
  63. package/framework/commands/development/runflow-dev.md +465 -0
  64. package/framework/commands/docs/build-business-docs.md +299 -0
  65. package/framework/commands/docs/build-compliance-docs.md +143 -0
  66. package/framework/commands/docs/build-index.md +119 -0
  67. package/framework/commands/docs/build-tech-docs.md +221 -0
  68. package/framework/commands/docs/docs-health.md +141 -0
  69. package/framework/commands/docs/help.md +278 -0
  70. package/framework/commands/docs/refine-vision.md +25 -0
  71. package/framework/commands/docs/reverse-consolidate.md +158 -0
  72. package/framework/commands/docs/sync-sessions.md +354 -0
  73. package/framework/commands/docs/validate-docs.md +157 -0
  74. package/framework/commands/engineer/bump.md +29 -0
  75. package/framework/commands/engineer/docs.md +11 -0
  76. package/framework/commands/engineer/hotfix.md +183 -0
  77. package/framework/commands/engineer/plan.md +85 -0
  78. package/framework/commands/engineer/pr-update.md +219 -0
  79. package/framework/commands/engineer/pr.md +117 -0
  80. package/framework/commands/engineer/pre-pr.md +81 -0
  81. package/framework/commands/engineer/start.md +254 -0
  82. package/framework/commands/engineer/validate-phase-sync.md +134 -0
  83. package/framework/commands/engineer/warm-up.md +20 -0
  84. package/framework/commands/engineer/work.md +155 -0
  85. package/framework/commands/f/company-context-extractor.md +93 -0
  86. package/framework/commands/f/process-meetings.md +103 -0
  87. package/framework/commands/git/README.md +682 -0
  88. package/framework/commands/git/code-review.md +213 -0
  89. package/framework/commands/git/fast-commit.md +43 -0
  90. package/framework/commands/git/feature/finish.md +88 -0
  91. package/framework/commands/git/feature/publish.md +89 -0
  92. package/framework/commands/git/feature/start.md +172 -0
  93. package/framework/commands/git/help.md +100 -0
  94. package/framework/commands/git/hotfix/finish.md +96 -0
  95. package/framework/commands/git/hotfix/start.md +92 -0
  96. package/framework/commands/git/init.md +111 -0
  97. package/framework/commands/git/release/finish.md +96 -0
  98. package/framework/commands/git/release/start.md +93 -0
  99. package/framework/commands/git/sync.md +199 -0
  100. package/framework/commands/meta/all-tools.md +58 -0
  101. package/framework/commands/meta/analyze-complex-problem.md +186 -0
  102. package/framework/commands/meta/create-abstraction.md +882 -0
  103. package/framework/commands/meta/create-agent-express.md +98 -0
  104. package/framework/commands/meta/create-agent.md +210 -0
  105. package/framework/commands/meta/create-command.md +203 -0
  106. package/framework/commands/meta/create-knowledge-base.md +143 -0
  107. package/framework/commands/meta/create-task-structure.md +150 -0
  108. package/framework/commands/meta/setup-integration.md +274 -0
  109. package/framework/commands/onion.md +169 -0
  110. package/framework/commands/product/README.md +249 -0
  111. package/framework/commands/product/analyze-pain-price.md +694 -0
  112. package/framework/commands/product/branding.md +458 -0
  113. package/framework/commands/product/check.md +46 -0
  114. package/framework/commands/product/checklist-sync.md +239 -0
  115. package/framework/commands/product/collect.md +95 -0
  116. package/framework/commands/product/consolidate-meetings.md +291 -0
  117. package/framework/commands/product/estimate.md +511 -0
  118. package/framework/commands/product/extract-meeting.md +226 -0
  119. package/framework/commands/product/feature.md +416 -0
  120. package/framework/commands/product/light-arch.md +82 -0
  121. package/framework/commands/product/presentation.md +174 -0
  122. package/framework/commands/product/refine.md +161 -0
  123. package/framework/commands/product/spec.md +79 -0
  124. package/framework/commands/product/task-check.md +378 -0
  125. package/framework/commands/product/task.md +603 -0
  126. package/framework/commands/product/validate-task.md +325 -0
  127. package/framework/commands/product/warm-up.md +24 -0
  128. package/framework/commands/quick/analisys.md +17 -0
  129. package/framework/commands/test/e2e.md +377 -0
  130. package/framework/commands/test/integration.md +508 -0
  131. package/framework/commands/test/unit.md +381 -0
  132. package/framework/commands/validate/collab/pair-testing.md +657 -0
  133. package/framework/commands/validate/collab/three-amigos.md +534 -0
  134. package/framework/commands/validate/qa-points/estimate.md +660 -0
  135. package/framework/commands/validate/test-strategy/analyze.md +1201 -0
  136. package/framework/commands/validate/test-strategy/create.md +411 -0
  137. package/framework/commands/validate/workflow.md +370 -0
  138. package/framework/commands/warm-up.md +20 -0
  139. package/framework/docs/architecture/acoplamento-clickup-problema-analise.md +468 -0
  140. package/framework/docs/architecture/desacoplamento-roadmap.md +364 -0
  141. package/framework/docs/architecture/validacao-fase-1.md +235 -0
  142. package/framework/docs/c4/c4-detection-rules.md +395 -0
  143. package/framework/docs/c4/c4-documentation-templates.md +579 -0
  144. package/framework/docs/c4/c4-mermaid-patterns.md +331 -0
  145. package/framework/docs/c4/c4-templates.md +256 -0
  146. package/framework/docs/clickup/clickup-acceptance-criteria-strategy.md +329 -0
  147. package/framework/docs/clickup/clickup-auto-update-strategy.md +340 -0
  148. package/framework/docs/clickup/clickup-comment-formatter.md +239 -0
  149. package/framework/docs/clickup/clickup-description-fix.md +384 -0
  150. package/framework/docs/clickup/clickup-dual-comment-strategy.md +528 -0
  151. package/framework/docs/clickup/clickup-formatting.md +302 -0
  152. package/framework/docs/clickup/separador-tamanho-otimizado.md +258 -0
  153. package/framework/docs/engineer/pre-pr-acceptance-validation.md +256 -0
  154. package/framework/docs/onion/ESPERANTO.md +293 -0
  155. package/framework/docs/onion/agents-reference.md +832 -0
  156. package/framework/docs/onion/clickup-integration.md +780 -0
  157. package/framework/docs/onion/commands-guide.md +924 -0
  158. package/framework/docs/onion/engineering-flows.md +900 -0
  159. package/framework/docs/onion/getting-started.md +803 -0
  160. package/framework/docs/onion/maintenance-checklist.md +421 -0
  161. package/framework/docs/onion/naming-conventions.md +286 -0
  162. package/framework/docs/onion/practical-examples.md +854 -0
  163. package/framework/docs/product/story-points-integration.md +269 -0
  164. package/framework/docs/product/story-points-validation.md +237 -0
  165. package/framework/docs/reviews/task-manager-docs-review-2025-11-24.md +184 -0
  166. package/framework/docs/strategies/clickup-comment-patterns.md +766 -0
  167. package/framework/docs/strategies/clickup-integration-tests.md +602 -0
  168. package/framework/docs/strategies/clickup-mcp-wrappers-tests.md +888 -0
  169. package/framework/docs/strategies/clickup-regression-tests.md +587 -0
  170. package/framework/docs/strategies/visual-patterns.md +315 -0
  171. package/framework/docs/templates/README.md +649 -0
  172. package/framework/docs/templates/adr-template.md +226 -0
  173. package/framework/docs/templates/analysis-template.md +280 -0
  174. package/framework/docs/templates/execution-plan-template.md +430 -0
  175. package/framework/docs/templates/guide-template.md +367 -0
  176. package/framework/docs/templates/phase-execution-prompt-template.md +504 -0
  177. package/framework/docs/templates/reference-template.md +522 -0
  178. package/framework/docs/templates/solution-template.md +390 -0
  179. package/framework/docs/tools/README.md +356 -0
  180. package/framework/docs/tools/agents.md +365 -0
  181. package/framework/docs/tools/commands.md +669 -0
  182. package/framework/docs/tools/cursor.md +539 -0
  183. package/framework/docs/tools/mcps.md +937 -0
  184. package/framework/docs/tools/rules.md +461 -0
  185. package/framework/rules/language-and-documentation.mdc +371 -0
  186. package/framework/rules/nestjs-controllers.md +83 -0
  187. package/framework/rules/nestjs-dtos.md +255 -0
  188. package/framework/rules/nestjs-modules.md +141 -0
  189. package/framework/rules/nestjs-services.md +230 -0
  190. package/framework/rules/nx-rules.mdc +41 -0
  191. package/framework/rules/onion-patterns.mdc +197 -0
  192. package/framework/skills/codebase-visualizer/SKILL.md +26 -0
  193. package/framework/skills/codebase-visualizer/scripts/visualize.py +131 -0
  194. package/framework/skills/collect/SKILL.md +84 -0
  195. package/framework/skills/create-rule/SKILL.md +152 -0
  196. package/framework/skills/db-schema-visualizer/SKILL.md +49 -0
  197. package/framework/skills/db-schema-visualizer/scripts/visualize.py +1191 -0
  198. package/framework/skills/sync-meetings/SKILL.md +239 -0
  199. package/framework/utils/clickup-mcp-wrappers.md +744 -0
  200. package/framework/utils/date-time-standards.md +200 -0
  201. package/framework/utils/task-manager/README.md +94 -0
  202. package/framework/utils/task-manager/adapters/asana.md +377 -0
  203. package/framework/utils/task-manager/adapters/clickup.md +467 -0
  204. package/framework/utils/task-manager/adapters/linear.md +421 -0
  205. package/framework/utils/task-manager/detector.md +299 -0
  206. package/framework/utils/task-manager/factory.md +363 -0
  207. package/framework/utils/task-manager/interface.md +248 -0
  208. package/framework/utils/task-manager/types.md +409 -0
  209. package/package.json +41 -0
  210. package/src/cli.js +73 -0
  211. package/src/commands/doctor.js +191 -0
  212. package/src/commands/init.js +287 -0
  213. package/src/commands/install.js +261 -0
  214. package/src/commands/list.js +152 -0
  215. package/src/commands/uninstall.js +90 -0
  216. package/src/commands/update.js +26 -0
  217. package/src/utils/fs.js +89 -0
  218. package/src/utils/log.js +35 -0
  219. package/src/utils/paths.js +32 -0
  220. package/src/utils/prompt.js +76 -0
@@ -0,0 +1,239 @@
1
+ ---
2
+ name: sync-meetings
3
+ description: Fetch new Flint meeting transcriptions from Elephan API, create structured meeting files in docs/meetings/, and update the engagement tracker.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Sync Meetings from Elephan
8
+
9
+ Fetch all meeting transcriptions containing "Flint" from the Elephan API, create structured markdown files in `docs/meetings/`, and update the engagement tracker. Only new meetings (not already synced) are processed.
10
+
11
+ ## Step 1: Resolve API Key
12
+
13
+ Read the `ELEPHAN_API_KEY` from the root `.env` file:
14
+
15
+ ```bash
16
+ grep -E '^ELEPHAN_API_KEY=' .env | cut -d'=' -f2-
17
+ ```
18
+
19
+ If the variable is not found, report this error and stop:
20
+
21
+ > **Error:** `ELEPHAN_API_KEY` not found in root `.env` file. Add it: `ELEPHAN_API_KEY=elk_prod_...`
22
+
23
+ Store the key value for use in subsequent API calls.
24
+
25
+ ## Step 2: Fetch All Transcriptions (Paginated)
26
+
27
+ Call the Elephan API to retrieve all transcriptions. Use `curl` via Bash:
28
+
29
+ ```bash
30
+ curl -s -H "Authorization: Bearer $API_KEY" \
31
+ "https://api.elephan.dev/v1/transcribes?page=1&limit=100"
32
+ ```
33
+
34
+ The response is JSON with shape:
35
+
36
+ ```json
37
+ {
38
+ "data": [ { ...transcription objects... } ],
39
+ "pagination": { "page": 1, "limit": 100, "total": N, "totalPages": N, "hasNext": bool, "hasPrev": bool }
40
+ }
41
+ ```
42
+
43
+ **Pagination loop:** If `pagination.hasNext` is `true`, fetch subsequent pages (`page=2`, `page=3`, etc.) until all transcriptions are collected. Combine all `data` arrays.
44
+
45
+ ## Step 3: Filter for "Flint" Meetings
46
+
47
+ From the complete transcription list, keep ONLY those where the `title` field contains the string "Flint" (case-insensitive match).
48
+
49
+ Report the count: "Found X transcriptions with 'Flint' in title out of Y total."
50
+
51
+ ## Step 4: Deduplicate Against Existing Files
52
+
53
+ Search existing meeting files for Elephan transcript IDs:
54
+
55
+ Use Grep to search `docs/meetings/*.md` for the pattern `info-transcript/?t=` and extract all Elephan IDs that are already synced.
56
+
57
+ For each filtered "Flint" transcription, check if its `id` already appears in any existing meeting file's Meeting Link. If it does, skip it.
58
+
59
+ Report: "Skipping N already-synced meeting(s)."
60
+
61
+ If no new meetings remain after deduplication, report "No new Flint meetings to sync" and stop.
62
+
63
+ ## Step 5: Create Meeting Files
64
+
65
+ For each NEW transcription, create a file in `docs/meetings/` following the exact format of existing files.
66
+
67
+ ### Filename Convention
68
+
69
+ Format: `YYYY-MM-DD-descriptive-slug.md`
70
+
71
+ - **Date:** Extract from `dateIncluded` (ISO 8601 format from API)
72
+ - **Slug:** Take the `title`, lowercase it, strip any "Meet -" or "Meet –" prefix, replace spaces and special characters with hyphens, collapse consecutive hyphens, trim trailing hyphens. Keep it concise but descriptive.
73
+
74
+ Example: Title "Meet – Flint Weekly Check-in" with date 2026-02-05 becomes `2026-02-05-flint-weekly-check-in.md`
75
+
76
+ ### File Template
77
+
78
+ Use this EXACT template structure (matching existing files like `2025-12-30-flint-kick-off.md`):
79
+
80
+ ```markdown
81
+ # [title from API as-is]
82
+
83
+ ## Metadata
84
+
85
+ - **Date:** [DD, Mon YYYY - HH:MM]
86
+ - **Duration:** [formatted duration]
87
+ - **Type:** [inferred from title or context]
88
+ - **Meeting Link:** https://app.elephan.ai/info-transcript/?t=[transcription id]
89
+
90
+ ## Participants
91
+
92
+ | Name | Role | Company |
93
+ | ----------- | ---- | ------- |
94
+ | [Speaker 1] | - | - |
95
+ | [Speaker 2] | - | - |
96
+
97
+ ## Transcript
98
+
99
+ [Speaker Name] [MM:SS]: [text]
100
+
101
+ [Speaker Name] [MM:SS]: [text]
102
+ ```
103
+
104
+ ### Date Formatting
105
+
106
+ Convert ISO date (e.g., `2025-12-30T10:04:00.000Z`) to the informal format used in existing files:
107
+
108
+ - `30, Dec 2025 - 10:04`
109
+ - `16th, Jan 2026 - 14:30`
110
+
111
+ Use ordinal suffixes (1st, 2nd, 3rd, 4th, etc.) for the day number.
112
+
113
+ ### Duration Formatting
114
+
115
+ The API returns `duration` in seconds. Convert to human-readable:
116
+
117
+ - Under 60 min: `43min`
118
+ - 60+ min: `1h 32min`
119
+ - Exact hours: `1h`
120
+
121
+ ### Speaker Attribution and Transcript Formatting
122
+
123
+ The API provides two transcript sources:
124
+
125
+ 1. `transcript.text` - Full text as a flat string with line breaks between speaker turns (NO speaker names or timestamps)
126
+ 2. `transcript.speakers` - Array of anonymous segments: `{ text, start, end, sentiment }` (NO speaker name/ID)
127
+
128
+ **Important:** The Elephan API does NOT provide speaker identification. Speaker segments are anonymous. The existing meeting files with named speakers (e.g., "Thiago Gomes [00:06]:") were manually enriched after import.
129
+
130
+ **Transcript formatting approach:**
131
+
132
+ 1. Use `transcript.speakers` array to build the transcript with timestamps
133
+ 2. Format each segment as: `Speaker [MM:SS]: [text]` where `start` is converted from milliseconds to `[MM:SS]`
134
+ 3. The `start` field is in **milliseconds** -- divide by 1000 then convert to MM:SS with zero-padding
135
+ 4. Leave speakers as "Speaker" (the user will manually attribute names later)
136
+
137
+ **Alternative if `transcript.text` is cleaner:** If `transcript.text` has clear paragraph breaks between turns, use it directly as the transcript body (simpler and preserves natural flow). Prefix each paragraph with its corresponding timestamp from the speakers array where possible.
138
+
139
+ **Participant table:** Leave empty with a placeholder row since speaker names are not available from the API:
140
+
141
+ ```
142
+ | Name | Role | Company |
143
+ |------|------|---------|
144
+ | (attribute manually) | - | - |
145
+ ```
146
+
147
+ ### Type Field
148
+
149
+ Infer the meeting type from the title:
150
+
151
+ - Contains "kick-off" or "kickoff" -> "Kickoff"
152
+ - Contains "check-in" or "checkpoint" -> "Check-in"
153
+ - Contains "alignment" or "next steps" -> "Alignment"
154
+ - Contains "intro" or "introduction" -> "Introduction"
155
+ - Otherwise -> Use the `prompt` object's name if available, or "Meeting"
156
+
157
+ ## Step 6: Bootstrap Engagement Tracker (If Missing)
158
+
159
+ Check if `docs/engagement-tracker.md` exists. If NOT, create it with this template:
160
+
161
+ ```markdown
162
+ # Flint Engagement Tracker
163
+
164
+ ## Current Status
165
+
166
+ - **Last Updated:** [today's date YYYY-MM-DD]
167
+ - **Last Meeting:** [none yet]
168
+ - **Engagement Phase:** Discovery
169
+
170
+ ## Timeline
171
+
172
+ | Date | Meeting | Key Outcome |
173
+ | ---- | ------- | ----------- |
174
+
175
+ ## Decision Log
176
+
177
+ ## Open Items
178
+
179
+ ## Next Steps
180
+
181
+ ## Key Relationships
182
+
183
+ ## Processed Meetings
184
+ ```
185
+
186
+ ## Step 7: Update Engagement Tracker
187
+
188
+ After creating all new meeting files, update the engagement tracker following these rules (from `/f/process-meetings`):
189
+
190
+ 1. **Read** `docs/engagement-tracker.md`
191
+ 2. **Identify unprocessed meetings:** List all `.md` files in `docs/meetings/`. Any file NOT listed in the "Processed Meetings" section is unprocessed.
192
+ 3. **Process chronologically** (oldest first). For each unprocessed meeting:
193
+ - Read the full transcript
194
+ - Extract relevant information
195
+ - Update the tracker sections:
196
+ - **Current Status:** Update Last Updated (today), Last Meeting (most recent), Engagement Phase if there's a clear transition
197
+ - **Timeline:** Add a row: `| YYYY-MM-DD | Meeting Title | One-line key outcome |`
198
+ - **Decision Log:** Add any decisions made (reverse chronological, newest at top)
199
+ - **Open Items:** Add new items, mark resolved ones. Format: `- [ ] [Item] -- [Owner] -- [Since: YYYY-MM-DD]`
200
+ - **Next Steps:** Replace with current next steps from the latest meeting
201
+ - **Key Relationships:** Add/update people. Format: `- **[Name]** -- [Role] -- [Stance: Champion / Neutral / etc.]`
202
+ - **Processed Meetings:** Add `- [x] \`filename.md\``
203
+ 4. **Write** the updated tracker
204
+
205
+ ### Rules
206
+
207
+ - **No double processing** -- If a meeting file is already in "Processed Meetings", skip it
208
+ - **Chronological order** -- Process oldest to newest
209
+ - **Preserve existing content** -- Add to the tracker, don't overwrite previous entries
210
+ - **Be concise** -- Each entry should be scannable
211
+ - **Use exact filenames** -- In "Processed Meetings", list the filename exactly
212
+
213
+ ## Step 8: Report
214
+
215
+ After completing all steps, output a summary:
216
+
217
+ ```
218
+ Elephan Sync Complete:
219
+ - Fetched X transcriptions from Elephan API, Y with "Flint" in title
220
+ - Created Z new meeting file(s):
221
+ - [filename1.md]
222
+ - [filename2.md]
223
+ - Skipped N already-synced meeting(s)
224
+ - Engagement tracker updated with M new entries
225
+
226
+ Key updates:
227
+ - [Brief summary of what was added to the tracker]
228
+ ```
229
+
230
+ If no new meetings: `No new Flint meetings to sync. All X Flint meetings are already in docs/meetings/.`
231
+
232
+ ## Error Handling
233
+
234
+ - **API key missing:** Clear error directing to `.env` setup
235
+ - **API error (non-200):** Report HTTP status and response body, stop
236
+ - **Empty results:** "No transcriptions found in Elephan" and exit
237
+ - **No "Flint" matches:** "Found X transcriptions but none contain 'Flint' in title" and exit
238
+ - **Malformed transcript:** Skip with warning, continue processing others
239
+ - **File already exists with different content:** Do NOT overwrite. Report as already synced.