From scopi-cardnews
Full card news generation pipeline — auto-selects sequential (subagent) or collaborative (Agent Teams) mode based on environment
How this skill is triggered — by the user, by Claude, or both
Slash command
/scopi-cardnews:generateThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are running the Scopi full generation pipeline. This orchestrates expert agents to create professional card news from a topic, using free composition (not template-picking) and real screenshot captures.
You are running the Scopi full generation pipeline. This orchestrates expert agents to create professional card news from a topic, using free composition (not template-picking) and real screenshot captures.
This skill auto-detects Agent Teams availability and routes accordingly. The user does NOT need to choose between modes — the system decides based on environment and content complexity.
Read config/checkpoint-handler.md before proceeding. This pipeline has 3 REQUIRED checkpoints (CP-R-01, CP-R-02, CP-R-03) where you MUST stop and wait for human input. Proceeding without human input at a REQUIRED checkpoint is a pipeline violation.
Summary:
At each REQUIRED checkpoint, use AskUserQuestion and DO NOT proceed until the user responds.
Check for scopi.config.json in the current working directory.
/scopi:setup first. Stop.Read and validate scopi.config.json. For each missing or empty required field, collect it now:
| Field | Required | If missing → ask |
|---|---|---|
brand.name | Yes | "What's your brand name?" |
identity.audience | Yes | "Who is your target audience?" |
identity.voice | Yes | "What tone? (e.g. professional-warm, academic-direct)" |
language | Yes | "Language? (ko / en)" |
theme | No | Use defaults silently |
pipeline.teamMode | No | Detected from flags/env |
If 2+ fields are missing, ask all at once in a single message — do NOT ask one-by-one.
--teams flag handlingParse the command arguments:
--teams or -t → force Agent Teams mode regardless of env var--fast or -f → force Subagent mode (skip Teams even if available)Example: /scopi:generate "AI in publishing" --teams
Step 1: Was --teams flag passed?
├── YES → Teams Mode (skip env var check)
└── NO → Step 2
Step 2: Is CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 set?
├── NO → Subagent Mode (sequential pipeline)
└── YES → Step 3
Step 3: Does the content benefit from agent debate?
├── Academic/research (identity.contentType = "academic") → Teams Mode
├── User says "team", "debate", "협업" → Teams Mode
├── Topic involves ethical complexity → Teams Mode
└── Simple/promotional content → Subagent Mode (faster, cheaper)
Step 4: Announce the mode
"🔄 Agent Teams mode — 5 agents will debate in parallel."
or
"▶ Sequential pipeline — faster single-agent mode."
The user can override at any time: "use teams" / "팀 모드로" → force Teams, "fast" / "빠르게" → force Subagent.
The user provides a topic or content brief after the command. If no topic is provided, use AskUserQuestion:
What topic should this card news cover? Provide a topic, article URL, or brief description.
This phase is identical in both modes — it requires user interaction.
Dispatch the NARA agent to:
identity from config — audience, pain points, voice, content typeidentity.captureTargets and use WebSearch to find URLs for any tools/services mentionedPresent the VS alternatives to the user:
NARA's Content Strategy
Option A (T=X.XX): [description]
Slide count: [N]
Hook: "[opening line]"
Option B (T=X.XX): [description]
Slide count: [N]
Hook: "[opening line]"
Option C (T=X.XX): [description]
Slide count: [N]
Hook: "[opening line]"
Recommended: Option [X] (lowest viable T-Score)
Capture Targets:
- [service] → [url], selector: [css], viewport: [dims]
- ...
Use AskUserQuestion:
Which direction? (A/B/C or describe your own)
STOP HERE. DO NOT proceed to Phase 2 until the user responds. DO NOT auto-select an option. DO NOT assume a default. If the user says "auto" or "you decide", respond: "I need you to choose. Which option resonates with your audience?" and wait again.
Lock in the chosen content direction. Record the decision:
VS Decision Log:
Content (NARA): Options A(T=X.XX) / B(T=X.XX) / C(T=X.XX)
Selected: [user's choice]
NARA recommended: [which option]
User followed recommendation: [yes/no]
Write this to the episode's plan.md under "## Episode Log".
NARA produces the full slide arc with:
If Agent Teams is NOT available or content is simple, use this sequential pipeline.
Dispatch BINNA (if active) to:
identity.voiceko or en)If pipeline.capture is true and capture targets were identified:
Dispatch GANA to run the capture pipeline:
const { captureAll } = require('./templates/capture.js');
const captures = await captureAll([
{ name: 'tool-name', url: 'https://...', selector: '.key-ui', viewport: '1080x810' },
// ... from NARA's capture targets
], { outDir: 'assets/captures' });
If no capture targets exist, skip this phase.
Dispatch GYEOL to generate 3 VS visual directions with T-Scores. Each direction should describe: color mood, typography approach, layout strategy, and how it handles the cover slide.
Present to the user:
GYEOL's Visual Directions
Option A (T=X.XX): [description — e.g., "Clean editorial, serif-heavy, centered layouts"]
Cover: [cover approach]
Data slides: [data visualization style]
Option B (T=X.XX): [description — e.g., "Asymmetric splits, oversized numbers, high contrast"]
Cover: [cover approach]
Data slides: [data visualization style]
Option C (T=X.XX): [description — e.g., "Full-bleed imagery, minimal text, dramatic scale"]
Cover: [cover approach]
Data slides: [data visualization style]
Recommended: Option [X] (lowest viable T-Score)
Theme preset: [recommended theme for each direction]
Use AskUserQuestion:
Which visual direction? (A/B/C or describe your own)
STOP HERE. DO NOT proceed to slide generation until the user responds. DO NOT auto-select. Record the decision in the episode's VS decision log.
After the user locks a visual direction, GYEOL designs each slide as a unique composition following the selected direction, and GANA implements as HTML. See "Free Composition Design" section below for details.
If JURI is active, dispatch for read-only review. Display report.
If JURI flags any MUST FIX items, the pipeline STOPS.
Use AskUserQuestion:
JURI has flagged [N] issue(s) requiring resolution. [List issues] How should we proceed? ("fix" / "override [reason]" / "revise [instruction]")
STOP HERE. DO NOT proceed to Phase 7A or final render until resolved. Record the decision in the episode's checkpoint log.
If MARU is active, dispatch for read-only review. Display report.
If Agent Teams is available AND content benefits from debate, use this collaborative pipeline.
After the user locks a content direction, create the Agent Teams:
Create an agent team for Scopi Card News production.
Team structure:
- GYEOL (Visual Architect): Design 3 VS visual directions per slide.
Read agents/gyeol.md for full personality and rules.
Read scopi.config.json for theme and brand.
- BINNA (Copy Surgeon): Refine all slide copy for tone and brevity.
Read agents/binna.md for full personality and rules.
- JURI (Ethics Inspector): Review designs and copy in real-time.
READ-ONLY — provides feedback through messages, never edits files.
Read agents/juri.md for full review framework.
- MARU (Empathy Tester): Test audience reaction in real-time.
READ-ONLY — provides feedback through messages, never edits files.
Read agents/maru.md for full empathy metrics.
- GANA (Slide Engineer): Implement final HTML/CSS after design lock.
Read agents/gana.md for code style and typography guard.
Read templates/slide-renderer.js for component library.
Task 1: [BINNA] Refine slide copy — starts immediately
Task 2: [GYEOL] Design 3 VS visual directions — starts immediately
Task 3: [JURI] Ethics review of directions — blocked by Task 2
Task 4: [MARU] Audience test of directions — blocked by Task 1, 2
Task 5: [GYEOL] Synthesize feedback → final spec — blocked by Task 3, 4
Task 6: [GANA] Generate slides.js — blocked by Task 1, 5
Task 7: [JURI] Final ethics audit — blocked by Task 6
Task 8: [MARU] Final empathy test — blocked by Task 6
Agents message each other directly (see each agent's "Team Communication" section):
After GYEOL presents 3 VS visual directions, use AskUserQuestion:
Which visual direction? (A/B/C or describe your own)
STOP HERE. DO NOT proceed to slide generation until the user responds. Record the decision in the episode's VS decision log.
After the Design Team completes all tasks:
node templates/generate.js --slides=output/[topic]/slides.js --out=output/[topic]Both modes use the same design principles:
GYEOL designs each slide as a unique composition — NOT picking from preset templates. For each slide:
slide-renderer.js as building blocksContent-Adaptive Design:
Visual Rhythm across the deck:
const { createRenderer } = require('./templates/slide-renderer');
const renderer = createRenderer({ cwd: process.cwd() });
const { DESIGN, slideWrapper, terminal, card, footer, seriesTag, accentBlock } = renderer;
Embedding captures in slides:
const fs = require('fs');
const captureImg = fs.readFileSync('assets/captures/tool-name.png');
const base64 = captureImg.toString('base64');
const imgTag = `<img src="data:image/png;base64,${base64}" ... />`;
Present the final output (same format for both modes):
Card News Generated!
Mode: [Sequential / Agent Teams]
Output: output/[topic-slug]/
[N] PNG slides (slide-01.png → slide-[N].png)
carousel.pdf
Quality Reports:
Ethics: [APPROVED/CONDITIONAL/REJECTED]
Empathy: [X.X/5.0]
[If Teams mode] Debate: [N] inter-agent messages, [M] issues resolved
Next steps:
/scopi:caption — Generate social media captions
/scopi:review — Re-run quality review
Open output/[topic-slug]/ to preview slides
After generation completes, append the Episode Log to the episode's plan.md.
Use the template from config/episode-log-template.md:
This data is required for future VS validation. Without it, the claim that "VS improves creative output" remains unverifiable.
npm install)npx claudepluginhub hosungyou/scopi-cardnews --plugin scopi-cardnewsGenerates social media infographic image card series with 12 visual styles, 8 layouts, and 3 color palettes. Splits content into 1-10 cartoon-style cards for platforms like Xiaohongshu and WeChat.
Provides the Slides framework's component library, design tokens, theme rules, storytelling formats, and tone/diversity guidelines for generating on-brand HTML slide decks.
Generates slide deck images from content with configurable styles, slide counts, and audience targeting. Can output outlines, prompts, images, or merge into PDF/PPTX.