@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.
- package/LICENSE +21 -0
- package/README.md +2 -2
- package/dist/asset-server.d.ts +7 -0
- package/dist/asset-server.d.ts.map +1 -0
- package/dist/asset-server.js +66 -0
- package/dist/asset-server.js.map +1 -0
- package/dist/captions.d.ts +17 -0
- package/dist/captions.d.ts.map +1 -0
- package/dist/captions.js +23 -0
- package/dist/captions.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +87 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +44 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +74 -0
- package/dist/config.js.map +1 -0
- package/dist/export.d.ts +18 -0
- package/dist/export.d.ts.map +1 -0
- package/dist/export.js +64 -0
- package/dist/export.js.map +1 -0
- package/dist/fixtures.d.ts +13 -0
- package/dist/fixtures.d.ts.map +1 -0
- package/dist/fixtures.js +36 -0
- package/dist/fixtures.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +2 -0
- package/dist/init.d.ts.map +1 -0
- package/{src/init.ts → dist/init.js} +39 -54
- package/dist/init.js.map +1 -0
- package/dist/narration.d.ts +9 -0
- package/dist/narration.d.ts.map +1 -0
- package/dist/narration.js +27 -0
- package/dist/narration.js.map +1 -0
- package/dist/overlays/index.d.ts +8 -0
- package/dist/overlays/index.d.ts.map +1 -0
- package/dist/overlays/index.js +34 -0
- package/dist/overlays/index.js.map +1 -0
- package/dist/overlays/manifest.d.ts +5 -0
- package/dist/overlays/manifest.d.ts.map +1 -0
- package/dist/overlays/manifest.js +52 -0
- package/dist/overlays/manifest.js.map +1 -0
- package/dist/overlays/motion.d.ts +4 -0
- package/dist/overlays/motion.d.ts.map +1 -0
- package/dist/overlays/motion.js +25 -0
- package/dist/overlays/motion.js.map +1 -0
- package/dist/overlays/templates.d.ts +7 -0
- package/dist/overlays/templates.d.ts.map +1 -0
- package/dist/overlays/templates.js +98 -0
- package/dist/overlays/templates.js.map +1 -0
- package/dist/overlays/types.d.ts +42 -0
- package/dist/overlays/types.d.ts.map +1 -0
- package/dist/overlays/types.js +25 -0
- package/dist/overlays/types.js.map +1 -0
- package/dist/overlays/zones.d.ts +15 -0
- package/dist/overlays/zones.d.ts.map +1 -0
- package/dist/overlays/zones.js +69 -0
- package/dist/overlays/zones.js.map +1 -0
- package/dist/pipeline.d.ts +3 -0
- package/dist/pipeline.d.ts.map +1 -0
- package/dist/pipeline.js +93 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/record.d.ts +14 -0
- package/dist/record.d.ts.map +1 -0
- package/dist/record.js +100 -0
- package/dist/record.js.map +1 -0
- package/dist/tts/align.d.ts +17 -0
- package/dist/tts/align.d.ts.map +1 -0
- package/dist/tts/align.js +40 -0
- package/dist/tts/align.js.map +1 -0
- package/dist/tts/cache.d.ts +31 -0
- package/dist/tts/cache.d.ts.map +1 -0
- package/dist/tts/cache.js +51 -0
- package/dist/tts/cache.js.map +1 -0
- package/dist/tts/engine.d.ts +41 -0
- package/dist/tts/engine.d.ts.map +1 -0
- package/dist/tts/engine.js +108 -0
- package/dist/tts/engine.js.map +1 -0
- package/dist/tts/generate.d.ts +20 -0
- package/dist/tts/generate.d.ts.map +1 -0
- package/dist/tts/generate.js +58 -0
- package/dist/tts/generate.js.map +1 -0
- package/dist/tts/kokoro.d.ts +13 -0
- package/dist/tts/kokoro.d.ts.map +1 -0
- package/dist/tts/kokoro.js +46 -0
- package/dist/tts/kokoro.js.map +1 -0
- package/package.json +13 -1
- package/.claude/settings.local.json +0 -34
- package/DESIGN.md +0 -261
- package/docs/enhancement-proposal.md +0 -262
- package/docs/superpowers/plans/2026-03-12-argo.md +0 -208
- package/docs/superpowers/plans/2026-03-12-editorial-overlay-system.md +0 -1560
- package/docs/superpowers/plans/2026-03-13-npm-rename-skill-showcase.md +0 -499
- package/docs/superpowers/specs/2026-03-13-npm-rename-skill-showcase-design.md +0 -109
- package/skills/argo-demo-creator.md +0 -355
- package/src/asset-server.ts +0 -81
- package/src/captions.ts +0 -36
- package/src/cli.ts +0 -97
- package/src/config.ts +0 -125
- package/src/export.ts +0 -93
- package/src/fixtures.ts +0 -50
- package/src/index.ts +0 -41
- package/src/narration.ts +0 -31
- package/src/overlays/index.ts +0 -54
- package/src/overlays/manifest.ts +0 -68
- package/src/overlays/motion.ts +0 -27
- package/src/overlays/templates.ts +0 -121
- package/src/overlays/types.ts +0 -73
- package/src/overlays/zones.ts +0 -82
- package/src/pipeline.ts +0 -120
- package/src/record.ts +0 -123
- package/src/tts/align.ts +0 -75
- package/src/tts/cache.ts +0 -65
- package/src/tts/engine.ts +0 -147
- package/src/tts/generate.ts +0 -83
- package/src/tts/kokoro.ts +0 -51
- package/tests/asset-server.test.ts +0 -67
- package/tests/captions.test.ts +0 -76
- package/tests/cli.test.ts +0 -131
- package/tests/config.test.ts +0 -150
- package/tests/e2e/fake-server.ts +0 -45
- package/tests/e2e/record.e2e.test.ts +0 -131
- package/tests/export.test.ts +0 -155
- package/tests/fixtures.test.ts +0 -74
- package/tests/init.test.ts +0 -77
- package/tests/narration.test.ts +0 -120
- package/tests/overlays/index.test.ts +0 -73
- package/tests/overlays/manifest.test.ts +0 -120
- package/tests/overlays/motion.test.ts +0 -34
- package/tests/overlays/templates.test.ts +0 -69
- package/tests/overlays/types.test.ts +0 -36
- package/tests/overlays/zones.test.ts +0 -49
- package/tests/pipeline.test.ts +0 -177
- package/tests/record.test.ts +0 -87
- package/tests/tts/align.test.ts +0 -118
- package/tests/tts/cache.test.ts +0 -110
- package/tests/tts/engine.test.ts +0 -204
- package/tests/tts/generate.test.ts +0 -177
- package/tests/tts/kokoro.test.ts +0 -25
- 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
|