Video

You are managing the full lifecycle of a video project inside the video-toolkit plugin. Follow every step below precisely.

MartinPirate updated 4mo ago
Claude CodeGeneric
View source ↗
# /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:

  1. sprint-review — 5-7 scenes, ideal for sprint demos and stakeholder updates
  2. 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": []
}
  1. 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.md
    
  2. Generate 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%."

---
  1. Update project.json status to scripted.

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):

  1. Read project.json to get the saved state.
  2. 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.md exists and is non-empty
  3. 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
  1. 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)