$npx -y skills add indranilbanerjee/contentforge --skill batch-processProcess multiple content pieces through a prioritized, checkpointed queue with progress tracking and per-piece quality gates
| 1 | # Batch Content Processing |
| 2 | |
| 3 | Process multiple content requirements through the ContentForge pipeline as a **sequential, checkpointed queue** with priority-based scheduling and event-driven progress tracking. Each piece runs the full 10-phase pipeline (plus Step 0.5) with all 10 quality gates — batch mode changes the intake, not the standards. |
| 4 | |
| 5 | ## When to Use |
| 6 | |
| 7 | Use `/contentforge:batch-process` when: |
| 8 | - You have 2+ content pieces to produce |
| 9 | - You want hands-off production of a whole queue (each piece needs a pre-set title — batch runs are non-interactive) |
| 10 | - You need priority scheduling (urgent pieces first) |
| 11 | - You want per-piece progress visibility and resumability |
| 12 | - You're running agency-scale production (10-50+ pieces) |
| 13 | |
| 14 | ## What This Command Does |
| 15 | |
| 16 | 1. **Intake Multiple Requirements** — Read from the brand's tracking backend: local JSON (default), Google Sheets, Airtable, or a CSV file |
| 17 | 2. **Build Execution Queue** — Validate rows and sort by priority |
| 18 | 3. **Sequential Orchestration** — Run one full ContentForge pipeline per piece, in queue order; every phase of every piece is checkpointed, so an interrupted batch resumes where it stopped |
| 19 | 4. **Progress Tracking** — Status table redrawn after each piece/phase event (piece started, gate passed, piece finished) |
| 20 | 5. **Error Handling** — Automatic retry for transient failures (resuming from checkpoints), human escalation for persistent issues |
| 21 | 6. **Completion Report** — Summary of all pieces: APPROVED, review_required, failed, with quality scores and output locations |
| 22 | |
| 23 | ## Required Inputs |
| 24 | |
| 25 | **Tracking backend** (per brand, via `tracking.backend` in the brand profile — `local` is the default): |
| 26 | - **Local JSON** — requirements managed by `scripts/local-tracker.py` |
| 27 | - **Google Sheets** — sheet with columns: `Requirement ID`, `Content Type`, `Title`, `Target Audience`, `Brand`, `Word Count Target`, `Priority` (1-5), `Status` |
| 28 | - **Airtable** — base with the same fields |
| 29 | |
| 30 | **CSV** (alternative intake): |
| 31 | ```csv |
| 32 | requirement_id,content_type,title,target_audience,brand,word_count,priority,status |
| 33 | REQ-001,article,AI in Healthcare,Healthcare CIOs,acmemed,2000,1,pending |
| 34 | REQ-002,blog,10 Tips for Remote Teams,HR Managers,techcorp,1500,3,pending |
| 35 | ``` |
| 36 | |
| 37 | **Note:** the `title` column doubles as the `--title` bypass — batch pieces skip interactive title curation and use it verbatim. |
| 38 | |
| 39 | ## How to Use |
| 40 | |
| 41 | ### Basic Usage |
| 42 | ``` |
| 43 | /contentforge:batch-process |
| 44 | ``` |
| 45 | **Prompt:** "Where are your content requirements? (local queue / Google Sheet URL / Airtable / CSV)" |
| 46 | |
| 47 | ### With Direct Sheet URL |
| 48 | ``` |
| 49 | /contentforge:batch-process https://docs.google.com/spreadsheets/d/ABC123/edit |
| 50 | ``` |
| 51 | |
| 52 | ### With CSV Upload |
| 53 | ``` |
| 54 | /contentforge:batch-process batch-requirements.csv |
| 55 | ``` |
| 56 | |
| 57 | ## What Happens |
| 58 | |
| 59 | ### Step 1: Queue Building |
| 60 | - Load all requirements from source |
| 61 | - Validate each row (required fields, brand exists, content type supported, word count within the type's canonical range) |
| 62 | - Sort by priority (1=highest, 5=lowest) |
| 63 | - Display queue summary: total pieces, priority mix, execution order |
| 64 | |
| 65 | ### Step 2: Sequential Execution |
| 66 | - Run one ContentForge pipeline per piece, front-to-back |
| 67 | - Each pipeline runs the full protocol from `skills/contentforge/SKILL.md` — Step 0 init, title bypass, phases 1–8 with orchestrator-verified gates, per-phase checkpoints |
| 68 | - When one piece finishes (or is escalated), the next starts automatically |
| 69 | |
| 70 | ### Step 3: Progress Table (event-driven) |
| 71 | Redrawn after each piece/phase event — not on a timer: |
| 72 | ``` |
| 73 | CONTENTFORGE BATCH — 2/5 complete | 1 review_required | 0 failed |
| 74 | ───────────────────────────────────────────────────────────── |
| 75 | ▶ REQ-003 | SEO Whitepaper | Phase 4 (Validation) |
| 76 | ✓ REQ-001 | AI in Healthcare | APPROVED 8.4 |
| 77 | ✓ REQ-004 | FAQ Product Launch | APPROVED 7.6 |
| 78 | ⚠ REQ-002 | Remote Teams Blog | review_required (6.1) |
| 79 | · REQ-005 | Case Study Acme | queued |
| 80 | ``` |
| 81 | |
| 82 | ### Step 4: Completion Report |
| 83 | - Total pieces processed |
| 84 | - APPROVED count (reviewer composite ≥7.0, industry-adjusted, all dimension minimums met) |
| 85 | - review_required count (5.0-6.9 after loop limits, or <5.0) |
| 86 | - Failed count |
| 87 | - Output locations: `~/Documents/ContentForge/{Brand}/` (+ Drive folder if configured) |
| 88 | |
| 89 | ## Priority Scheduling |
| 90 | |
| 91 | **Priority Levels:** |
| 92 | - **1 (Urgent)**: Processed first, deadline-driven (e.g., press release for tomorrow) |
| 93 | - **2 (High)**: Campaign-critical content |
| 94 | - **3 (Normal)**: Standard blog posts, articles |
| 95 | - **4 (Low)**: Evergreen content, no deadline |
| 96 | - **5 (Backlog)**: Nice-to-have, filler content |
| 97 | |
| 98 | ## Execution Model |
| 99 | |
| 100 | - **Sequential, one piece at a time** — no concurrent pipelines. Shared per-brand state, API rate limits, and context limits make in-session parallelism unsafe; resilience comes from per-phase checkpointing instead. |
| 101 | - Each piece is fully independent (own checkpoint run directory, own quality gates) |
| 102 | - If a p |