Video
You are managing the full lifecycle of a video project inside the video-toolkit plugin. Follow every step below precisely.
# /video — Main Project Lifecycle Command
You are managing the full lifecycle of a video project inside the video-toolkit plugin. Follow every step below precisely.
---
## Step 1: Scan for Existing Projects
Scan the `projects/` directory at the plugin root (`/Users/mac/workstation/plugins/video-toolkit/projects/`).
- List every subdirectory. Each subdirectory is a project.
- For each project found, read its `project.json` file and extract:
- `name`
- `status` (one of: `scaffolded`, `scripted`, `scenes-planned`, `recording`, `rendering`, `complete`)
- `template` used
- `brand` used
- `createdAt` and `updatedAt`
- Count of total scenes vs completed scenes
## Step 2: Present Options
**If projects exist**, display a table:
| Project Name | Template | Brand | Status | Scenes (done/total)
---|--------------------+----------------+----------+---------------+-------------------- 1 | Q1 Sprint Review | sprint-review | acme | scenes-planned | 2/6 2 | Onboarding Demo | product-demo | default | scripted | 0/4
Then ask the user:
- **Resume** an existing project (enter number)
- **Create new** project
**If no projects exist**, proceed directly to Step 3.
## Step 3: Create New Project
### 3a. Choose Template
List available templates from `templates/` directory. Each template directory should contain a `template.json`. Display:
Available Templates:
- sprint-review — 5-7 scenes, ideal for sprint demos and stakeholder updates
- product-demo — 3-5 scenes, product walkthrough with feature highlights
Ask user to pick one. If none exist, suggest running `/template` first.
### 3b. Choose Brand
List available brands from `brands/` directory. Each brand directory should contain a `brand.json`. Display available brands. If none exist, offer to use a default brand or suggest running `/brand` first.
### 3c. Project Name
Ask the user for a project name. Derive a slug from it (lowercase, hyphens, no special chars). This slug becomes the project directory name.
### 3d. Gather Content
Ask the user to provide the raw content for this video. Accept any of:
- **Free text** — paste notes, bullet points, talking points
- **URLs** — links to PRs, docs, blog posts (fetch and summarize)
- **File paths** — read local files for content
- **Descriptions** — verbal description of what to cover
Store all gathered content in `project-dir/content/raw-input.md`.
## Step 4: Plan Scenes Interactively
Based on the template structure and gathered content, propose a scene breakdown:
Proposed Scene Plan: Scene 1: title — "Q1 Sprint Review" (5s) Scene 2: highlights — Key achievements overview (8s) Scene 3: demo-1 — New dashboard feature (15s) Scene 4: demo-2 — API improvements (12s) Scene 5: metrics — Sprint velocity & burndown (8s) Scene 6: outro — Next sprint goals (5s)
For each scene, include:
- Scene slug (used as directory/component name)
- Scene type (from template's available types)
- Brief description of content
- Estimated duration in seconds
Ask user: "Does this look good? You can adjust any scene (add, remove, reorder, change duration) or approve."
Iterate until approved.
## Step 5: Scaffold Project
Once the plan is approved:
1. **Create project directory**: `projects/{slug}/`
2. **Copy template files**: Copy the chosen template's structure into the project directory
3. **Create `project.json`**:
```json
{
"name": "Project Name",
"slug": "project-slug",
"template": "sprint-review",
"brand": "acme",
"status": "scaffolded",
"createdAt": "2026-03-09T00:00:00Z",
"updatedAt": "2026-03-09T00:00:00Z",
"scenes": [
{
"id": "title",
"type": "title",
"description": "Q1 Sprint Review",
"durationSec": 5,
"status": "pending",
"reviewed": false,
"voiceover": null,
"assets": []
}
],
"voiceover": {
"provider": null,
"voice": null,
"generated": false
},
"recordings": []
}
Create directory structure:
projects/{slug}/ project.json content/ raw-input.md src/ compositions/ components/ scenes/ {scene-slug}/ index.tsx public/ audio/ demos/ assets/ VOICEOVER-SCRIPT.mdGenerate
VOICEOVER-SCRIPT.md: Based on the scene plan and gathered content, write a voiceover script with clear scene markers:
# Voiceover Script — {Project Name}
## Scene 1: title
Duration target: 5s | Word count: ~12
"Welcome to the Q1 Sprint Review for the Platform team."
---
## Scene 2: highlights
Duration target: 8s | Word count: ~20
"This quarter we shipped three major features and improved performance by 40%."
---
- Update
project.jsonstatus toscripted.
Step 6: Show Next Steps
Display:
Project "{name}" is ready!
Next steps:
/scene-review — Review and refine each scene visually
/design {scene} — Deep-dive into a specific scene's design
/record-demo — Record browser demos for demo scenes
/generate-voiceover — Generate audio from the voiceover script
Multi-Session Resume Logic
When resuming an existing project (from Step 2):
- Read
project.jsonto get the saved state. - Reconcile with filesystem:
- Check each scene directory exists under
src/scenes/ - Check for generated audio files in
public/audio/ - Check for demo recordings in
public/demos/ - Verify
VOICEOVER-SCRIPT.mdexists and is non-empty
- Check each scene directory exists under
- Build progress table:
Scene Progress:
Scene | Component | Voiceover | Reviewed | Status
-------------|-----------|-----------|----------|--------
title | OK | MISSING | No | needs-voiceover
highlights | OK | OK | Yes | approved
demo-1 | MISSING | MISSING | No | needs-component
- Identify next actions — reco
Maintain Video?
Let people know it's listed here — add the badge (live metrics, light/dark aware) or a plain link to your README or docs.
[Video on getagentictools](https://getagentictools.com/loops/martinpirate-video-main-project-lifecycle-command?ref=badge)