@argo-video/cli 0.1.0 → 0.1.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 (144) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2 -2
  3. package/dist/asset-server.d.ts +7 -0
  4. package/dist/asset-server.d.ts.map +1 -0
  5. package/dist/asset-server.js +66 -0
  6. package/dist/asset-server.js.map +1 -0
  7. package/dist/captions.d.ts +17 -0
  8. package/dist/captions.d.ts.map +1 -0
  9. package/dist/captions.js +23 -0
  10. package/dist/captions.js.map +1 -0
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +87 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/config.d.ts +44 -0
  16. package/dist/config.d.ts.map +1 -0
  17. package/dist/config.js +74 -0
  18. package/dist/config.js.map +1 -0
  19. package/dist/export.d.ts +18 -0
  20. package/dist/export.d.ts.map +1 -0
  21. package/dist/export.js +64 -0
  22. package/dist/export.js.map +1 -0
  23. package/dist/fixtures.d.ts +13 -0
  24. package/dist/fixtures.d.ts.map +1 -0
  25. package/dist/fixtures.js +36 -0
  26. package/dist/fixtures.js.map +1 -0
  27. package/dist/index.d.ts +8 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +14 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/init.d.ts +2 -0
  32. package/dist/init.d.ts.map +1 -0
  33. package/{src/init.ts → dist/init.js} +39 -54
  34. package/dist/init.js.map +1 -0
  35. package/dist/narration.d.ts +9 -0
  36. package/dist/narration.d.ts.map +1 -0
  37. package/dist/narration.js +27 -0
  38. package/dist/narration.js.map +1 -0
  39. package/dist/overlays/index.d.ts +8 -0
  40. package/dist/overlays/index.d.ts.map +1 -0
  41. package/dist/overlays/index.js +34 -0
  42. package/dist/overlays/index.js.map +1 -0
  43. package/dist/overlays/manifest.d.ts +5 -0
  44. package/dist/overlays/manifest.d.ts.map +1 -0
  45. package/dist/overlays/manifest.js +52 -0
  46. package/dist/overlays/manifest.js.map +1 -0
  47. package/dist/overlays/motion.d.ts +4 -0
  48. package/dist/overlays/motion.d.ts.map +1 -0
  49. package/dist/overlays/motion.js +25 -0
  50. package/dist/overlays/motion.js.map +1 -0
  51. package/dist/overlays/templates.d.ts +7 -0
  52. package/dist/overlays/templates.d.ts.map +1 -0
  53. package/dist/overlays/templates.js +98 -0
  54. package/dist/overlays/templates.js.map +1 -0
  55. package/dist/overlays/types.d.ts +42 -0
  56. package/dist/overlays/types.d.ts.map +1 -0
  57. package/dist/overlays/types.js +25 -0
  58. package/dist/overlays/types.js.map +1 -0
  59. package/dist/overlays/zones.d.ts +15 -0
  60. package/dist/overlays/zones.d.ts.map +1 -0
  61. package/dist/overlays/zones.js +69 -0
  62. package/dist/overlays/zones.js.map +1 -0
  63. package/dist/pipeline.d.ts +3 -0
  64. package/dist/pipeline.d.ts.map +1 -0
  65. package/dist/pipeline.js +93 -0
  66. package/dist/pipeline.js.map +1 -0
  67. package/dist/record.d.ts +14 -0
  68. package/dist/record.d.ts.map +1 -0
  69. package/dist/record.js +100 -0
  70. package/dist/record.js.map +1 -0
  71. package/dist/tts/align.d.ts +17 -0
  72. package/dist/tts/align.d.ts.map +1 -0
  73. package/dist/tts/align.js +40 -0
  74. package/dist/tts/align.js.map +1 -0
  75. package/dist/tts/cache.d.ts +31 -0
  76. package/dist/tts/cache.d.ts.map +1 -0
  77. package/dist/tts/cache.js +51 -0
  78. package/dist/tts/cache.js.map +1 -0
  79. package/dist/tts/engine.d.ts +41 -0
  80. package/dist/tts/engine.d.ts.map +1 -0
  81. package/dist/tts/engine.js +108 -0
  82. package/dist/tts/engine.js.map +1 -0
  83. package/dist/tts/generate.d.ts +20 -0
  84. package/dist/tts/generate.d.ts.map +1 -0
  85. package/dist/tts/generate.js +58 -0
  86. package/dist/tts/generate.js.map +1 -0
  87. package/dist/tts/kokoro.d.ts +13 -0
  88. package/dist/tts/kokoro.d.ts.map +1 -0
  89. package/dist/tts/kokoro.js +46 -0
  90. package/dist/tts/kokoro.js.map +1 -0
  91. package/package.json +13 -1
  92. package/.claude/settings.local.json +0 -34
  93. package/DESIGN.md +0 -261
  94. package/docs/enhancement-proposal.md +0 -262
  95. package/docs/superpowers/plans/2026-03-12-argo.md +0 -208
  96. package/docs/superpowers/plans/2026-03-12-editorial-overlay-system.md +0 -1560
  97. package/docs/superpowers/plans/2026-03-13-npm-rename-skill-showcase.md +0 -499
  98. package/docs/superpowers/specs/2026-03-13-npm-rename-skill-showcase-design.md +0 -109
  99. package/skills/argo-demo-creator.md +0 -355
  100. package/src/asset-server.ts +0 -81
  101. package/src/captions.ts +0 -36
  102. package/src/cli.ts +0 -97
  103. package/src/config.ts +0 -125
  104. package/src/export.ts +0 -93
  105. package/src/fixtures.ts +0 -50
  106. package/src/index.ts +0 -41
  107. package/src/narration.ts +0 -31
  108. package/src/overlays/index.ts +0 -54
  109. package/src/overlays/manifest.ts +0 -68
  110. package/src/overlays/motion.ts +0 -27
  111. package/src/overlays/templates.ts +0 -121
  112. package/src/overlays/types.ts +0 -73
  113. package/src/overlays/zones.ts +0 -82
  114. package/src/pipeline.ts +0 -120
  115. package/src/record.ts +0 -123
  116. package/src/tts/align.ts +0 -75
  117. package/src/tts/cache.ts +0 -65
  118. package/src/tts/engine.ts +0 -147
  119. package/src/tts/generate.ts +0 -83
  120. package/src/tts/kokoro.ts +0 -51
  121. package/tests/asset-server.test.ts +0 -67
  122. package/tests/captions.test.ts +0 -76
  123. package/tests/cli.test.ts +0 -131
  124. package/tests/config.test.ts +0 -150
  125. package/tests/e2e/fake-server.ts +0 -45
  126. package/tests/e2e/record.e2e.test.ts +0 -131
  127. package/tests/export.test.ts +0 -155
  128. package/tests/fixtures.test.ts +0 -74
  129. package/tests/init.test.ts +0 -77
  130. package/tests/narration.test.ts +0 -120
  131. package/tests/overlays/index.test.ts +0 -73
  132. package/tests/overlays/manifest.test.ts +0 -120
  133. package/tests/overlays/motion.test.ts +0 -34
  134. package/tests/overlays/templates.test.ts +0 -69
  135. package/tests/overlays/types.test.ts +0 -36
  136. package/tests/overlays/zones.test.ts +0 -49
  137. package/tests/pipeline.test.ts +0 -177
  138. package/tests/record.test.ts +0 -87
  139. package/tests/tts/align.test.ts +0 -118
  140. package/tests/tts/cache.test.ts +0 -110
  141. package/tests/tts/engine.test.ts +0 -204
  142. package/tests/tts/generate.test.ts +0 -177
  143. package/tests/tts/kokoro.test.ts +0 -25
  144. package/tsconfig.json +0 -19
@@ -1,499 +0,0 @@
1
- # npm Rename, Showcase Video, and Agent Skill — Implementation Plan
2
-
3
- > **For agentic workers:** REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (`- [ ]`) syntax for tracking.
4
-
5
- **Goal:** Rename package to `@argo-video/cli`, create a self-referential showcase demo video, and build a Claude Code skill for AI agents to use Argo.
6
-
7
- **Architecture:** Three sequential deliverables. The npm rename updates package identity and all internal references. The showcase creates a static landing page + demo script + overlays + voiceover that runs through Argo's own pipeline. The skill is a markdown file teaching agents the full Argo workflow.
8
-
9
- **Tech Stack:** Node.js, TypeScript, Playwright, Vitest, HTML/CSS (showcase page)
10
-
11
- ---
12
-
13
- ## Chunk 1: npm Rename
14
-
15
- ### Task 1: Rename package in package.json
16
-
17
- **Files:**
18
- - Modify: `package.json`
19
-
20
- - [ ] **Step 1: Update package name**
21
-
22
- Change `name` from `"argo"` to `"@argo-video/cli"` in `package.json`.
23
-
24
- ```json
25
- "name": "@argo-video/cli",
26
- ```
27
-
28
- - [ ] **Step 2: Verify build still works**
29
-
30
- Run: `npx tsc --noEmit`
31
- Expected: No errors
32
-
33
- - [ ] **Step 3: Commit**
34
-
35
- ```bash
36
- git add package.json
37
- git commit -m "chore: rename package to @argo-video/cli"
38
- ```
39
-
40
- ### Task 2: Update init template imports
41
-
42
- **Files:**
43
- - Modify: `src/init.ts:19-36` (the `EXAMPLE_DEMO` constant)
44
- - Modify: `tests/init.test.ts:28-29` (assertions checking import paths)
45
- - Modify: `demos/example.demo.ts:1-2` (existing demo file)
46
-
47
- - [ ] **Step 1: Update test assertions**
48
-
49
- In `tests/init.test.ts`, update the two assertions that check for `'argo'` imports:
50
-
51
- ```typescript
52
- // Change these two lines:
53
- expect(content).toContain("import { test } from 'argo'");
54
- expect(content).toContain("import { showCaption, withCaption } from 'argo'");
55
-
56
- // To:
57
- expect(content).toContain("import { test } from '@argo-video/cli'");
58
- expect(content).toContain("import { showCaption, withCaption } from '@argo-video/cli'");
59
- ```
60
-
61
- - [ ] **Step 2: Run test to verify it fails**
62
-
63
- Run: `npx vitest run tests/init.test.ts`
64
- Expected: FAIL — the template still uses `'argo'`
65
-
66
- - [ ] **Step 3: Update EXAMPLE_DEMO in src/init.ts**
67
-
68
- Use a targeted string replacement on the `EXAMPLE_DEMO` template string. Replace ONLY the `from 'argo'` import specifiers — do NOT replace or truncate the rest of the template body (lines 22–36 must remain unchanged):
69
-
70
- ```
71
- Edit: replace `from 'argo'` with `from '@argo-video/cli'` (replace_all: true) in src/init.ts
72
- ```
73
-
74
- This changes lines 19–20 from:
75
- ```typescript
76
- import { test } from 'argo';
77
- import { showCaption, withCaption } from 'argo';
78
- ```
79
- to:
80
- ```typescript
81
- import { test } from '@argo-video/cli';
82
- import { showCaption, withCaption } from '@argo-video/cli';
83
- ```
84
-
85
- The rest of the template (the test body with page.goto, narration.mark, showCaption calls) stays exactly as-is.
86
-
87
- - [ ] **Step 4: Run test to verify it passes**
88
-
89
- Run: `npx vitest run tests/init.test.ts`
90
- Expected: PASS (all 6 tests)
91
-
92
- - [ ] **Step 5: Update existing demos/example.demo.ts**
93
-
94
- Change the imports in the existing demo file:
95
-
96
- ```typescript
97
- import { test } from '@argo-video/cli';
98
- import { showCaption, withCaption } from '@argo-video/cli';
99
- ```
100
-
101
- - [ ] **Step 6: Verify no remaining old imports**
102
-
103
- Run: `grep -r "from 'argo'" demos/ src/init.ts`
104
- Expected: No matches
105
-
106
- - [ ] **Step 7: Run full test suite**
107
-
108
- Run: `npx vitest run`
109
- Expected: All tests pass
110
-
111
- - [ ] **Step 8: Commit**
112
-
113
- ```bash
114
- git add src/init.ts tests/init.test.ts demos/example.demo.ts
115
- git commit -m "chore: update all import paths from 'argo' to '@argo-video/cli'"
116
- ```
117
-
118
- ## Chunk 2: Showcase Demo Video
119
-
120
- ### Task 3: Create the showcase landing page
121
-
122
- **Files:**
123
- - Create: `demos/showcase.html`
124
-
125
- - [ ] **Step 1: Create the HTML page**
126
-
127
- Create `demos/showcase.html` — a single-page, self-contained HTML file with inline CSS. Design should be clean and modern (dark theme, monospace accents). Sections:
128
-
129
- 1. **Hero** — "Argo" title in large type. Tagline: "Turn Playwright scripts into polished demo videos with AI voiceover." A terminal-style box showing: `npx argo pipeline my-demo`
130
- 2. **How it works** — Three columns: "Write" (demo script icon), "Record" (browser icon), "Export" (video icon). Each with a short description.
131
- 3. **Features** — Cards for: Overlays (lower-third, headline cards), Voiceover (AI-generated TTS), Pipeline (one command, end-to-end).
132
- 4. **Code example** — A `<pre>` block showing a simplified demo script snippet with syntax coloring via inline styles.
133
-
134
- Design constraints:
135
- - All CSS inline in `<style>` tag (no external dependencies)
136
- - Responsive but optimized for 1920x1080 viewport (that's what Argo records at)
137
- - Smooth scroll behavior enabled
138
- - Interactive elements: a "Get Started" button that scrolls to features, a tab switcher on the code example
139
- - Sections should have `id` attributes for anchor navigation (used by the demo script)
140
-
141
- - [ ] **Step 2: Verify page renders**
142
-
143
- Open `demos/showcase.html` in a browser manually and verify it looks correct at 1920x1080.
144
-
145
- - [ ] **Step 3: Commit**
146
-
147
- ```bash
148
- git add demos/showcase.html
149
- git commit -m "feat: add showcase landing page for Argo demo video"
150
- ```
151
-
152
- ### Task 4: Create showcase demo script
153
-
154
- **Files:**
155
- - Create: `demos/showcase.demo.ts`
156
-
157
- - [ ] **Step 1: Write the demo script**
158
-
159
- The script navigates the showcase landing page, pausing at each section. Uses `narration.mark()` for scene boundaries and `showOverlay`/`withOverlay` for visual annotations.
160
-
161
- ```typescript
162
- import { test } from '@argo-video/cli';
163
- import { showOverlay, withOverlay } from '@argo-video/cli';
164
-
165
- test('showcase', async ({ page, narration }) => {
166
- await page.goto('/showcase.html');
167
- await page.waitForTimeout(1000);
168
-
169
- // Scene 1: Hero section
170
- narration.mark('hero');
171
- await showOverlay(page, 'hero', {
172
- type: 'lower-third',
173
- text: 'Argo — Demo videos, automated',
174
- motion: 'fade-in',
175
- }, 4000);
176
-
177
- // Scene 2: Scroll to How it Works
178
- narration.mark('how-it-works');
179
- await page.locator('#how-it-works').scrollIntoViewIfNeeded();
180
- await page.waitForTimeout(500);
181
- await withOverlay(page, 'how-it-works', {
182
- type: 'headline-card',
183
- title: 'Three Simple Steps',
184
- body: 'Write a script. Record the browser. Export the video.',
185
- placement: 'top-right',
186
- motion: 'slide-in',
187
- }, async () => {
188
- await page.waitForTimeout(4000);
189
- });
190
-
191
- // Scene 3: Features section
192
- narration.mark('features');
193
- await page.locator('#features').scrollIntoViewIfNeeded();
194
- await page.waitForTimeout(500);
195
- await showOverlay(page, 'features', {
196
- type: 'callout',
197
- text: 'Overlays, voiceover, and more',
198
- placement: 'bottom-left',
199
- motion: 'fade-in',
200
- }, 4000);
201
-
202
- // Scene 4: Code example
203
- narration.mark('code');
204
- await page.locator('#code-example').scrollIntoViewIfNeeded();
205
- await page.waitForTimeout(500);
206
- await showOverlay(page, 'code', {
207
- type: 'lower-third',
208
- text: 'Familiar Playwright API — nothing new to learn',
209
- motion: 'fade-in',
210
- }, 4000);
211
-
212
- // Scene 5: Closing
213
- narration.mark('closing');
214
- await page.locator('#hero').scrollIntoViewIfNeeded();
215
- await page.waitForTimeout(500);
216
- await showOverlay(page, 'closing', {
217
- type: 'headline-card',
218
- title: 'Get Started',
219
- body: 'npm i -D @argo-video/cli && npx argo init',
220
- placement: 'center',
221
- motion: 'fade-in',
222
- }, 3000);
223
- });
224
- ```
225
-
226
- - [ ] **Step 2: Commit**
227
-
228
- ```bash
229
- git add demos/showcase.demo.ts
230
- git commit -m "feat: add showcase demo script with overlay annotations"
231
- ```
232
-
233
- ### Task 5: Create showcase voiceover manifest
234
-
235
- **Files:**
236
- - Create: `demos/showcase.voiceover.json`
237
-
238
- - [ ] **Step 1: Write the voiceover manifest**
239
-
240
- ```json
241
- [
242
- {
243
- "scene": "hero",
244
- "text": "Meet Argo — the tool that turns Playwright scripts into polished product demo videos, complete with AI voiceover."
245
- },
246
- {
247
- "scene": "how-it-works",
248
- "text": "The workflow is simple. Write a demo script using the Playwright API you already know. Argo records the browser, then exports a finished video."
249
- },
250
- {
251
- "scene": "features",
252
- "text": "Add overlays like lower-thirds and headline cards. Argo generates voiceover narration from a simple JSON manifest."
253
- },
254
- {
255
- "scene": "code",
256
- "text": "Your demo scripts are just Playwright tests with a few extra helpers. If you know Playwright, you already know Argo."
257
- },
258
- {
259
- "scene": "closing",
260
- "text": "Install Argo, initialize your project, and ship your first demo video in minutes."
261
- }
262
- ]
263
- ```
264
-
265
- - [ ] **Step 2: Commit**
266
-
267
- ```bash
268
- git add demos/showcase.voiceover.json
269
- git commit -m "feat: add showcase voiceover narration manifest"
270
- ```
271
-
272
- ### Task 6: Create showcase overlay manifest
273
-
274
- **Files:**
275
- - Create: `demos/showcase.overlays.json`
276
-
277
- - [ ] **Step 1: Write the overlay manifest**
278
-
279
- ```json
280
- [
281
- {
282
- "scene": "hero",
283
- "type": "lower-third",
284
- "text": "Argo — Demo videos, automated",
285
- "motion": "fade-in"
286
- },
287
- {
288
- "scene": "how-it-works",
289
- "type": "headline-card",
290
- "title": "Three Simple Steps",
291
- "body": "Write a script. Record the browser. Export the video.",
292
- "placement": "top-right",
293
- "motion": "slide-in"
294
- },
295
- {
296
- "scene": "features",
297
- "type": "callout",
298
- "text": "Overlays, voiceover, and more",
299
- "placement": "bottom-left",
300
- "motion": "fade-in"
301
- },
302
- {
303
- "scene": "code",
304
- "type": "lower-third",
305
- "text": "Familiar Playwright API — nothing new to learn",
306
- "motion": "fade-in"
307
- },
308
- {
309
- "scene": "closing",
310
- "type": "headline-card",
311
- "title": "Get Started",
312
- "body": "npm i -D @argo-video/cli && npx argo init",
313
- "placement": "center",
314
- "motion": "fade-in"
315
- }
316
- ]
317
- ```
318
-
319
- - [ ] **Step 2: Commit**
320
-
321
- ```bash
322
- git add demos/showcase.overlays.json
323
- git commit -m "feat: add showcase overlay cues manifest"
324
- ```
325
-
326
- ### Task 7: Run the showcase pipeline
327
-
328
- **Files:**
329
- - No new files — this task runs the pipeline and verifies output
330
-
331
- **Prerequisites:** A local HTTP server serving `demos/` and ffmpeg installed.
332
-
333
- - [ ] **Step 1: Start a local server**
334
-
335
- In a separate terminal:
336
- ```bash
337
- npx serve demos/ -l 3000
338
- ```
339
-
340
- - [ ] **Step 2: Update argo.config.js baseURL if needed**
341
-
342
- Ensure `argo.config.js` has `baseURL: 'http://localhost:3000'` (this is the default from init).
343
-
344
- - [ ] **Step 3: Run the pipeline**
345
-
346
- ```bash
347
- npx argo pipeline showcase
348
- ```
349
-
350
- Expected output:
351
- ```
352
- Step 1/4: Generating TTS clips...
353
- Step 2/4: Recording browser demo...
354
- Step 3/4: Aligning narration with video...
355
- Step 4/4: Exporting final video...
356
- Done! Video saved to: videos/showcase.mp4
357
- ```
358
-
359
- - [ ] **Step 4: Verify the output**
360
-
361
- Check that `videos/showcase.mp4` exists and plays correctly with overlays and voiceover.
362
-
363
- - [ ] **Step 5: Commit output artifacts**
364
-
365
- Note: If `videos/` is in `.gitignore`, use `git add -f` to force-add the showcase video. This is an intentional binary artifact for the repo showcase.
366
-
367
- ```bash
368
- git add -f videos/showcase.mp4
369
- git commit -m "feat: add showcase demo video"
370
- ```
371
-
372
- ## Chunk 3: Agent Skill
373
-
374
- ### Task 8: Create the argo-demo-creator skill
375
-
376
- **Files:**
377
- - Create: `skills/argo-demo-creator.md`
378
-
379
- - [ ] **Step 1: Write the skill file**
380
-
381
- Create `skills/argo-demo-creator.md` with the following structure:
382
-
383
- ```markdown
384
- ---
385
- name: argo-demo-creator
386
- description: Create polished product demo videos using Argo. Handles the full workflow from installation through finished video with AI voiceover and overlays.
387
- ---
388
-
389
- # Argo Demo Creator
390
-
391
- [Full skill content — see spec Section 2 for all sections:
392
- prerequisites, app context, script authoring, overlays, voiceover, config, pipeline, troubleshooting.
393
- Include the autonomous workflow steps.
394
- Include API reference with code examples.
395
- Include the overlay template types and their fields.
396
- Include the voiceover manifest format.
397
- Include common troubleshooting scenarios.]
398
- ```
399
-
400
- The skill should include:
401
-
402
- **Prerequisites section:**
403
- - Check for `@argo-video/cli` in `package.json` devDependencies
404
- - Check for `argo.config.js` in project root
405
- - If missing: `npm i -D @argo-video/cli && npx argo init`
406
-
407
- **Script authoring section:**
408
- - Demo files use `.demo.ts` extension, live in `demos/` directory
409
- - Import `test` from `@argo-video/cli` (NOT from `@playwright/test`)
410
- - The `test` fixture provides `page` (Playwright Page) and `narration` (NarrationTimeline)
411
- - Use `narration.mark('scene-name')` to define scene boundaries
412
- - Use `page.waitForTimeout()` for pacing
413
-
414
- **Overlay API section:**
415
- - `showOverlay(page, scene, cue, durationMs)` — show overlay for fixed duration
416
- - `withOverlay(page, scene, cue, action)` — show overlay during action, hide after
417
- - `hideOverlay(page, zone?)` — manually hide overlay
418
- - Template types with all fields:
419
- - `lower-third`: `{ type, text, placement?, motion? }`
420
- - `headline-card`: `{ type, title, kicker?, body?, placement?, motion? }`
421
- - `callout`: `{ type, text, placement?, motion? }`
422
- - `image-card`: `{ type, src, title?, body?, placement?, motion? }`
423
- - Zones: `bottom-center` (default), `top-left`, `top-right`, `bottom-left`, `bottom-right`, `center`
424
- - Motion presets: `none` (default), `fade-in`, `slide-in`
425
-
426
- **Voiceover section:**
427
- - Manifest file: `<demo>.voiceover.json` in demos directory
428
- - Format: JSON array of `{ scene, text, voice?, speed? }`
429
- - `scene` must match a `narration.mark()` call in the demo script
430
- - Default voice: `af_heart`, default speed: `1.0`
431
-
432
- **Config section:**
433
- - `argo.config.js` fields with defaults:
434
- - `baseURL` (required, no default)
435
- - `demosDir` (default: `'demos'`)
436
- - `outputDir` (default: `'videos'`)
437
- - `tts`: `{ defaultVoice: 'af_heart', defaultSpeed: 1.0 }`
438
- - `video`: `{ width: 1920, height: 1080, fps: 30 }`
439
- - `export`: `{ preset: 'slow', crf: 16 }`
440
-
441
- **Pipeline section:**
442
- - Correct order: TTS → record → align → export
443
- - Standalone commands:
444
- - `npx argo tts generate demos/<name>.voiceover.json` — **WARNING: this takes a file path (e.g., `demos/showcase.voiceover.json`), NOT a bare demo name like `showcase`. Passing a bare name will fail silently (file not found).**
445
- - `npx argo record <name>` — takes a bare demo name
446
- - `npx argo export <name>` — takes a bare demo name
447
- - All-in-one: `npx argo pipeline <name>` — takes a bare demo name
448
- - The `pipeline` command handles alignment internally
449
-
450
- **Autonomous workflow section:**
451
- ```
452
- 1. Check if @argo-video/cli is installed → install if not
453
- 2. Check if argo.config.js exists → run `npx argo init` if not
454
- 3. Ask user for baseURL of their running app
455
- 4. Explore the app (navigate to understand routes/features)
456
- 5. Write <name>.demo.ts with Playwright actions + narration marks
457
- 6. Write <name>.voiceover.json with scene narration text
458
- 7. Optionally write <name>.overlays.json with overlay cues
459
- 8. Run `npx argo pipeline <name>`
460
- 9. Report output video path
461
- ```
462
-
463
- **Troubleshooting section:**
464
- - "No video recording found": Ensure Playwright config has `video: 'on'`
465
- - "No timing file found": Demo must use `import { test } from '@argo-video/cli'` (not `@playwright/test`) and call `narration.mark()`
466
- - "ffmpeg/ffprobe not found": Install ffmpeg (`brew install ffmpeg` on macOS)
467
- - "Playwright recording failed": Check that `baseURL` points to a running app
468
- - "No TTS clips generated": Check that voiceover manifest scene names match `narration.mark()` calls
469
-
470
- - [ ] **Step 2: Commit**
471
-
472
- ```bash
473
- git add skills/argo-demo-creator.md
474
- git commit -m "feat: add argo-demo-creator skill for AI agents"
475
- ```
476
-
477
- ### Task 9: Full integration verification
478
-
479
- - [ ] **Step 1: Run full test suite**
480
-
481
- ```bash
482
- npx vitest run
483
- ```
484
-
485
- Expected: All tests pass
486
-
487
- - [ ] **Step 2: Type check**
488
-
489
- ```bash
490
- npx tsc --noEmit
491
- ```
492
-
493
- Expected: No errors
494
-
495
- - [ ] **Step 3: Push all changes**
496
-
497
- ```bash
498
- git push
499
- ```
@@ -1,109 +0,0 @@
1
- # Argo: npm Rename, Agent Skill, and Showcase Video
2
-
3
- **Date:** 2026-03-13
4
- **Status:** Approved
5
-
6
- ## Overview
7
-
8
- Three deliverables that prepare Argo for public distribution and AI-agent usage:
9
-
10
- 1. Rename npm package to `@argo-video/cli`
11
- 2. Create a Claude Code skill for agents to use Argo
12
- 3. Build a self-referential showcase demo video
13
-
14
- ## 1. npm Package: `@argo-video/cli`
15
-
16
- ### Changes
17
-
18
- - `package.json` `name` field → `@argo-video/cli`
19
- - `bin.argo` remains unchanged (CLI command stays `argo`)
20
- - Users install: `npm i -D @argo-video/cli`
21
- - Users import: `import { test } from '@argo-video/cli'`
22
-
23
- ### Files to update
24
-
25
- - `package.json` — name field
26
- - `src/init.ts` — ALL `from 'argo'` occurrences in the `EXAMPLE_DEMO` template must change to `from '@argo-video/cli'` (there are two: `import { test }` and `import { showCaption, withCaption }`)
27
- - `tests/init.test.ts` — update both assertions that check for `'argo'` imports (lines checking `import { test } from 'argo'` and `import { showCaption, withCaption } from 'argo'`)
28
- - Any docs or README references to the package name
29
-
30
- ### Future namespace
31
-
32
- The `@argo-video` org allows future packages: `@argo-video/core`, `@argo-video/skill`, etc.
33
-
34
- ## 2. Skill: `argo-demo-creator`
35
-
36
- ### Purpose
37
-
38
- Teaches Claude Code agents how to use Argo — from installation through finished video.
39
-
40
- ### Modes
41
-
42
- | Mode | Trigger | Behavior |
43
- |------|---------|----------|
44
- | **Autonomous** | "Create a demo video for this app" | Agent installs Argo, writes demo script, overlay/voiceover manifests, configures, runs pipeline |
45
- | **Assistive** | "How do I..." / help with existing scripts | Agent provides guidance, fixes scripts, explains config |
46
-
47
- ### Skill sections
48
-
49
- 1. **Prerequisites check** — Is `@argo-video/cli` installed? Is there `argo.config.js`? If not, run `argo init`.
50
- 2. **App context** — Requires a running app with a known `baseURL`. Agent asks user for URL.
51
- 3. **Script authoring** — How to write `.demo.ts` files: Playwright actions + `narration.mark()` for scene boundaries.
52
- 4. **Overlays** — `showOverlay`/`withOverlay` API, template types (`lower-third`, `headline-card`, `callout`, `image-card`), zones, motion presets. Overlay manifest format (`.overlays.json`).
53
- 5. **Voiceover** — Voiceover manifest format (`.voiceover.json`): `scene`, `text`, optional `voice`/`speed`.
54
- 6. **Config reference** — `argo.config.js` fields: `baseURL`, `demosDir`, `outputDir`, `tts`, `video`, `export`.
55
- 7. **Pipeline execution** — The correct order is: `argo tts generate <path/to/demo.voiceover.json>` → `argo record <demo>` → `argo export <demo>`. TTS must run before recording because narration timing drives the recording. Note: `tts generate` takes a file path (e.g., `demos/example.voiceover.json`), not a bare demo name. Or use `argo pipeline <demo>` which handles the full sequence (TTS → record → align → export) automatically.
56
- 8. **Troubleshooting** — Common errors: no video found (check Playwright video config), no timing file (need `narration.mark()` calls), ffmpeg not installed.
57
-
58
- ### Autonomous workflow
59
-
60
- ```
61
- 1. Check if @argo-video/cli is installed → install if not
62
- 2. Check if argo.config.js exists → run `argo init` if not
63
- 3. Ask user for baseURL of their running app
64
- 4. Explore the app (optionally navigate it to understand routes/features)
65
- 5. Write <demo>.demo.ts with Playwright actions + narration marks
66
- 6. Write <demo>.voiceover.json with scene narration text
67
- 7. Write <demo>.overlays.json with overlay cues (optional)
68
- 8. Run `npx argo pipeline <demo>`
69
- 9. Report output video path
70
- ```
71
-
72
- ## 3. Showcase Video
73
-
74
- ### Concept
75
-
76
- Self-referential: Argo creates a demo video of Argo. Records against a static HTML landing page for Argo itself.
77
-
78
- ### Files
79
-
80
- - `demos/showcase.html` — Static landing page for Argo. Clean, modern design. Sections: hero ("Turn Playwright scripts into polished demo videos"), features (overlays, voiceover, pipeline), code example, CTA.
81
- - `demos/showcase.demo.ts` — Demo script that navigates the landing page, scrolls through sections, clicks interactive elements.
82
- - `demos/showcase.voiceover.json` — Narration explaining what Argo does at each scene.
83
- - `demos/showcase.overlays.json` — Overlay cues demonstrating multiple template types:
84
- - `lower-third` with fade-in on the hero section
85
- - `headline-card` with slide-in for the features section
86
- - `callout` for highlighting a specific UI element
87
- - `demos/assets/` — Any images needed for the showcase page
88
-
89
- ### Showcase page design
90
-
91
- Simple, single-page HTML with inline CSS. Sections:
92
- 1. **Hero** — "Argo" title, tagline, terminal-style animation showing the pipeline command
93
- 2. **How it works** — Three-step flow: Write → Record → Export
94
- 3. **Features** — Cards for overlays, voiceover, config
95
- 4. **Code example** — Syntax-highlighted demo script snippet
96
-
97
- ### Pipeline
98
-
99
- The showcase runs against a local HTTP server (e.g., `npx serve demos/` or a simple Node HTTP server). `file://` URLs are not compatible with Playwright's relative navigation (`page.goto('/')`). Config sets `baseURL` to the local server URL.
100
-
101
- ### Note on template coverage
102
-
103
- The showcase demonstrates `lower-third`, `headline-card`, and `callout` templates. `image-card` is not showcased here but is documented in the skill's API reference section.
104
-
105
- ## Execution Order
106
-
107
- 1. **npm rename** — Update package name, imports, templates, tests
108
- 2. **Showcase demo** — Create landing page + demo files, run pipeline to produce video
109
- 3. **Skill creation** — Write the skill referencing correct package name and real examples