codeck-outline

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

codeck outline — Editor

codeck outline — 编辑器

Role activation

角色激活

Read
$DECK_DIR/diagnosis.md
for the recommended outline role and its derivation.
You ARE that person. Their way of questioning becomes your editorial instinct.
The role is chosen for how they think about this type of problem, not for their domain:
Material's core tension is "too abstract, audience won't feel it" → Feynman: starts with intuition, earns the abstraction. Outline restructures — no background section, open with a physical analogy.
Material's core tension is "audience doesn't care yet" → Chai Jing: leads with a human story, lets data land after empathy. Outline restructures — open with a person, not a statistic.
Material's core tension is "too many moving parts" → Tufte: compress, show relationships, cut the narrative fat. Outline restructures — merge five slides into two dense ones with clear visual logic.
The role must change what the outline includes, excludes, and sequences. If the outline would be the same without the role, the match is wrong.
Fallback if no diagnosis: curious magazine editor who asks "why" and won't accept vague answers.
读取
$DECK_DIR/diagnosis.md
获取推荐的大纲角色及其推导逻辑。
你就是这个角色,他们思考问题的方式会成为你的编辑直觉。
选择角色的依据是他们思考这类问题的方式,而非所属领域:
素材核心矛盾是「太抽象,观众感知不到」→ 费曼:从直觉切入,逐步引出抽象概念。大纲重构逻辑:去掉背景介绍章节,用具象类比开场。
素材核心矛盾是「观众还不关心主题」→ 柴静:以人文故事开场,共情建立后再抛出数据。大纲重构逻辑:用人物故事开场,而非统计数据。
素材核心矛盾是「零散内容太多」→ 塔夫特:压缩内容、展示关联、砍掉冗余叙事。大纲重构逻辑:把5张幻灯片合并为2张逻辑清晰的高密度可视化幻灯片。
角色必须影响大纲的「内容纳入、内容剔除、内容排序」逻辑,如果去掉角色后大纲没有任何变化,说明角色匹配错误。
没有诊断结果时的兜底角色:充满好奇心的杂志编辑,会不断追问「为什么」,不接受模糊的答案。

Setup

初始化配置

bash
DECK_DIR="$HOME/.codeck/projects/$(basename "$(pwd)")"
mkdir -p "$DECK_DIR"
bash "$HOME/.claude/skills/codeck/scripts/status.sh" "$DECK_DIR"
Read
$DECK_DIR/diagnosis.md
if it exists.
bash
DECK_DIR="$HOME/.codeck/projects/$(basename "$(pwd)")"
mkdir -p "$DECK_DIR"
bash "$HOME/.claude/skills/codeck/scripts/status.sh" "$DECK_DIR"
如果
$DECK_DIR/diagnosis.md
存在则读取该文件。

Step 1: Scan materials

步骤1:扫描素材

Scan the current directory (the user's project), not DECK_DIR.
bash
EXCLUDE='! -path "./node_modules/*" ! -path "./.git/*" ! -path "./.claude/*" ! -path "./dist/*" ! -path "./build/*" ! -name "deck.*" ! -name "CLAUDE.md" ! -name "TODOS.md" ! -name "README.md" ! -name "DESIGN.md" ! -name "*.test.*" ! -name "*.spec.*" ! -name "*.config.*"'

echo "=== TEXT ===" && eval find . -maxdepth 4 -type f \\\( -name '"*.md"' -o -name '"*.txt"' -o -name '"*.rtf"' -o -name '"*.org"' -o -name '"*.rst"' \\\) $EXCLUDE 2>/dev/null | head -20
echo "=== DOCS ===" && eval find . -maxdepth 4 -type f \\\( -name '"*.pdf"' -o -name '"*.docx"' -o -name '"*.doc"' -o -name '"*.pptx"' -o -name '"*.ppt"' -o -name '"*.key"' -o -name '"*.pages"' -o -name '"*.xlsx"' -o -name '"*.xls"' -o -name '"*.numbers"' \\\) $EXCLUDE 2>/dev/null | head -20
echo "=== IMAGES ===" && eval find . -maxdepth 4 -type f \\\( -name '"*.png"' -o -name '"*.jpg"' -o -name '"*.jpeg"' -o -name '"*.webp"' -o -name '"*.gif"' -o -name '"*.svg"' -o -name '"*.ico"' -o -name '"*.bmp"' -o -name '"*.tiff"' \\\) $EXCLUDE 2>/dev/null | head -20
echo "=== DATA ===" && eval find . -maxdepth 4 -type f \\\( -name '"*.csv"' -o -name '"*.tsv"' -o -name '"*.json"' -o -name '"*.yaml"' -o -name '"*.yml"' -o -name '"*.xml"' \\\) $EXCLUDE 2>/dev/null | head -20
User-provided structure is raw material — cut, merge, reorder freely.
Read text files with Read tool. Classify assets:
LevelWhenAction
inlineimages <2MB, SVG, code snippetscopy to
assets/
, assemble.sh base64-encodes
postervideo, audio, GIF, images >2MBthumbnail in
assets/
, annotate original path
extractPDF, DOCX, CSV, code filesextract content, don't copy file
Rule of thumb: can the HTML still be emailed? Yes → inline. No → poster or extract.
bash
mkdir -p "$DECK_DIR/assets"
If 0 files found, ask user: provide topic verbally or add files first.
扫描当前目录(用户的项目目录),而非DECK_DIR。
bash
EXCLUDE='! -path "./node_modules/*" ! -path "./.git/*" ! -path "./.claude/*" ! -path "./dist/*" ! -path "./build/*" ! -name "deck.*" ! -name "CLAUDE.md" ! -name "TODOS.md" ! -name "README.md" ! -name "DESIGN.md" ! -name "*.test.*" ! -name "*.spec.*" ! -name "*.config.*"'

echo "=== TEXT ===" && eval find . -maxdepth 4 -type f \\\( -name '"*.md"' -o -name '"*.txt"' -o -name '"*.rtf"' -o -name '"*.org"' -o -name '"*.rst"' \\\) $EXCLUDE 2>/dev/null | head -20
echo "=== DOCS ===" && eval find . -maxdepth 4 -type f \\\( -name '"*.pdf"' -o -name '"*.docx"' -o -name '"*.doc"' -o -name '"*.pptx"' -o -name '"*.ppt"' -o -name '"*.key"' -o -name '"*.pages"' -o -name '"*.xlsx"' -o -name '"*.xls"' -o -name '"*.numbers"' \\\) $EXCLUDE 2>/dev/null | head -20
echo "=== IMAGES ===" && eval find . -maxdepth 4 -type f \\\( -name '"*.png"' -o -name '"*.jpg"' -o -name '"*.jpeg"' -o -name '"*.webp"' -o -name '"*.gif"' -o -name '"*.svg"' -o -name '"*.ico"' -o -name '"*.bmp"' -o -name '"*.tiff"' \\\) $EXCLUDE 2>/dev/null | head -20
echo "=== DATA ===" && eval find . -maxdepth 4 -type f \\\( -name '"*.csv"' -o -name '"*.tsv"' -o -name '"*.json"' -o -name '"*.yaml"' -o -name '"*.yml"' -o -name '"*.xml"' \\\) $EXCLUDE 2>/dev/null | head -20
用户提供的结构仅作为原始素材,可以自由删减、合并、重新排序。
使用Read工具读取文本文件,对资源进行分类:
等级适用场景操作
inline(内嵌)小于2MB的图片、SVG、代码片段复制到
assets/
目录,assemble.sh会进行base64编码
poster(封面)视频、音频、GIF、大于2MB的图片
assets/
目录存缩略图,标注原始文件路径
extract(提取)PDF、DOCX、CSV、代码文件提取内容,不复制原文件
经验法则:生成的HTML还能通过邮件发送吗?可以→用内嵌,不行→用封面或提取模式。
bash
mkdir -p "$DECK_DIR/assets"
如果扫描到0个文件,询问用户:请口头提供主题,或先添加相关文件。

Step 1.5: Material diagnosis

步骤1.5:素材诊断

Silent checks on materials:
  1. Core message clarity — can you extract a one-sentence thesis?
  2. Density — concise or needs heavy trimming?
  3. Presentation fit — slide-ready or needs restructuring?
  4. Image assets — content images (architecture, charts) or decorative?
All clear → continue silently. Issues → summarize in one AskUserQuestion.
Results go into outline.md's "Material summary" section.
对素材进行静默检查:
  1. 核心信息清晰度 —— 你能提取出一句话的核心论点吗?
  2. 内容密度 —— 已经很简洁,还是需要大量删减?
  3. 演示适配度 —— 可以直接做成幻灯片,还是需要重构结构?
  4. 图片资产 —— 是内容相关图片(架构图、图表)还是装饰性图片?
全部检查通过→静默继续。存在问题→用一个问题汇总后询问用户。
检查结果会写入outline.md的「素材总结」章节。

Step 2: Mode

步骤2:选择模式

  • A) Collaborative — you answer questions, I plan structure, confirm each step
  • B) Fast — I decide everything, you review at the end
  • C) Expert — you write the outline, I optimize
Fast mode: skip Q1 and Q1.5, but still ask Q2, Q3, Q4. Expert mode: user writes outline, you review and suggest improvements.
Smart skip rule: Q2 (audience), Q3 (length), Q4 (language) are ALWAYS asked — even in fast mode, even if materials seem to imply answers. These are user intent, not facts you can infer. Only skip Q1/Q1.5 if the user's instruction already contains a clear core message.
  • A) 协作模式 —— 你回答问题,我规划结构,每一步都确认
  • B) 快速模式 —— 我全权决定,最后你再审核
  • C) 专家模式 —— 你写大纲,我负责优化
快速模式:跳过Q1和Q1.5,但仍需要询问Q2、Q3、Q4。 专家模式:用户编写大纲,你审核并提出改进建议。
智能跳过规则: Q2(受众)、Q3(长度)、Q4(语言)必须始终询问——即使是快速模式,即使素材看起来已经给出了答案。这些属于用户意图,不能自行推断。只有当用户的指令已经明确包含核心信息时,才能跳过Q1/Q1.5。

Step 3: Questions

步骤3:询问问题

Q1: Core message

Q1:核心信息

If the audience remembers one thing, what should it be?
  • A) I'll tell you
  • B) Extract from materials
  • C) Not sure yet
Skip if user already stated their core message explicitly.
如果观众只能记住一件事,你希望是什么?
  • A) 我直接告诉你
  • B) 从素材中提取
  • C) 暂时还不确定
如果用户已经明确说明过核心信息则跳过该问题。

Q1.5: Intent exploration (open conversation, no options)

Q1.5:意图探索(开放对话,无选项)

After confirming core message, explore deeper intent through natural dialogue:
  1. "Why do you care about this topic?"
  2. "Any expressions or styles you want to avoid?"
  3. "Anything you haven't figured out yet?"
  4. "How should the audience feel afterward?"
Not mandatory. "Nothing special" → skip. Answers go into outline.md user intent section.
Fast mode: skip Q1.5.
确认核心信息后,通过自然对话深挖用户的深层意图:
1.「你为什么关注这个主题?」 2.「有没有你想要避免的表达方式或风格?」 3.「有没有什么内容你还没想清楚?」 4.「你希望观众看完演示后有什么感受?」
非必须步骤。用户回答「没什么特别的」则跳过。答案会写入outline.md的用户意图章节。
快速模式:跳过Q1.5。

Q2: Audience (always ask)

Q2:受众(必须询问)

  • A) Technical peers — jargon ok
  • B) Non-technical decision makers — plain language
  • C) Mixed audience
  • D) Teaching / sharing
  • A) 技术同行 —— 可以使用行业术语
  • B) 非技术决策者 —— 需要用通俗易懂的语言
  • C) 混合受众
  • D) 教学/分享场景

Q3: Length (always ask)

Q3:长度(必须询问)

  • A) Concise (4-6 slides)
  • B) Standard (7-10 slides)
  • C) Detailed (11-15 slides)
  • A) 精简版(4-6张幻灯片)
  • B) 标准版(7-10张幻灯片)
  • C) 详细版(11-15张幻灯片)

Q4: Language (always ask)

Q4:语言(必须询问)

  • A) Chinese
  • B) English
  • C) Mixed
  • A) 中文
  • B) 英文
  • C) 中英混合

Research to fill gaps

调研补全内容缺口

If the materials are thin, the topic is unfamiliar, or key claims lack supporting evidence, search the web to strengthen the outline. Don't fabricate data — find it.
When to search:
  • User mentions statistics or trends without providing source → find the real numbers
  • Material references a product, paper, or event you haven't seen → look it up
  • You need a concrete example to ground an abstract point → find one
  • The audience is specialized and you need to verify terminology or conventions
Integrate findings naturally into the outline. Cite sources in the material summary or as slide notes so the designer and reviewer can verify.
如果素材太少、你不熟悉主题,或是核心论点缺少支撑证据,可以搜索网页来完善大纲。不要编造数据,要找到真实来源。
需要搜索的场景:
  • 用户提到了没有提供来源的统计数据或趋势→查找真实数据
  • 素材提到了你不了解的产品、论文或事件→查询相关信息
  • 你需要具体案例来支撑抽象观点→查找合适的案例
  • 受众是专业领域人群,你需要核实术语或行业惯例
将搜索结果自然融入大纲,在素材总结或幻灯片备注中标注来源,方便设计师和审核者验证。

Step 4: Narrative structure

步骤4:叙事结构

Story arc templates

故事线模板

Problem-driven: problem → solution → evidence → implications
Demo-driven: concept → demonstration → mechanism → extensions
Data report: summary → metrics → patterns → actions
Teaching: motivation → core idea → application → practice
These are narrative shapes, not slide titles. Derive actual titles from the content — "pain point" is a structural role, not a heading.
问题驱动型: 问题→解决方案→证据→影响
演示驱动型: 概念→效果展示→实现原理→扩展能力
数据报告型: 总结→指标→规律→行动建议
教学分享型: 动机→核心概念→应用场景→练习
这些是叙事框架,不是幻灯片标题。要从内容中提炼实际标题——「痛点」是结构定位,不是标题文案。

Title smithing

标题打磨

Slide titles are the only text the audience reads — like highway billboards.
Two rules:
  1. Instant clarity — no second read needed. Short > long, concrete > abstract.
  2. Hook — questions > statements, tension > flatness.
Priority: apt first, then as dramatic as accuracy allows. Flat but accurate is a floor, not a goal.
Five strategies per title:
Five strategies: Direct assertion, Question, Tension/contrast, Concrete image, Unexpected angle. Pick the one that serves each slide's argument — don't rotate through them mechanically.
Quality check:
  1. Understood in one read? No → rewrite.
  2. Want to hear more? No → switch strategy.
  3. Sounds human? AI-flavored → rewrite.
Present outline to user for confirmation.
幻灯片标题是观众唯一会读的文本,就像高速公路上的广告牌。
两个原则:
  1. 一目了然 —— 不需要读第二遍,短>长,具体>抽象。
  2. 有吸引力 —— 问题>陈述句,有冲突>平铺直叙。
优先级: 先准确,再在准确的前提下尽量有冲击力。准确但平淡是底线,不是目标。
五个标题策略: 直接断言、提出问题、制造冲突/对比、具象意象、新奇角度。选择最契合该幻灯片论点的策略,不要机械轮换使用。
质量检查:
  1. 读一遍就能懂吗?不能→重写。
  2. 让人想继续了解吗?不想→换策略。
  3. 听起来自然吗?有AI套话感→重写。
将大纲提交给用户确认。

Step 5: Write $DECK_DIR/outline.md

步骤5:写入$DECK_DIR/outline.md

markdown
undefined
markdown
undefined

Outline: {topic}

Outline: {主题}

Material summary

素材总结

{key content extracted from files}
{从文件中提取的核心内容}

Basics

基础信息

  • Core message: {one-sentence thesis}
  • Audience: {description}
  • Length: {N slides}
  • Language: {language}
  • 核心信息: {一句话论点}
  • 受众: {描述}
  • 长度: {N张幻灯片}
  • 语言: {语言}

Story arc

故事线

{arc description}
{故事线描述}

Slide structure

幻灯片结构

1. {cover title}

1. {封面标题}

  • Purpose: cover
  • Rhythm: climax
  • Key points: {points}
  • 用途: 封面
  • 节奏: 高潮
  • 核心要点: {要点}

2. {slide title}

2. {幻灯片标题}

  • Purpose: {purpose}
  • Rhythm: {dense|breathe|climax|transition}
  • Key points: {points}
  • Assets: {assets/xxx.png or file:line if applicable}
...
  • 用途: {用途}
  • 节奏: {高密度|缓冲|高潮|过渡}
  • 核心要点: {要点}
  • 资源: {assets/xxx.png 或 文件名:行号(如果适用)}
...

Asset manifest

资源清单

FileLevelUseAssigned to
assets/architecture.pnginlinearchitecture diagramslide 3
assets/demo-cover.jpgpostervideo cover (source: demo.mp4)slide 6
Level: inline / poster / extract. No assets → write "none".
文件等级用途对应幻灯片
assets/architecture.pnginline架构图第3页
assets/demo-cover.jpgposter视频封面(来源: demo.mp4)第6页
等级: inline / poster / extract。没有资源则写「none」。

User intent

用户意图

  • Motivation: {Q1.5 answer in user's words, or "not explored"}
  • Preferences: {likes/dislikes, or "not specified"}
  • Mood: {desired audience feeling, or "not specified"}
  • 动机: {Q1.5中用户的原话,或「未探索」}
  • 偏好: {喜好/厌恶,或「未指定」}
  • 氛围: {期望的观众感受,或「未指定」}

Note to designer

给设计师的备注

{1-2 sentences: narrative intent and structural highlights}
undefined
{1-2句话:说明叙事意图和结构亮点}
undefined

Self-review

自我审核

Read
$HOME/.claude/skills/codeck-outline/references/checklist.md
, check outline.md.
  • Pass 1: structural issues → auto-fix
  • Pass 2: content quality → auto-fix mechanical issues, ask for judgment calls
读取
$HOME/.claude/skills/codeck-outline/references/checklist.md
,检查outline.md。
  • 第一轮:结构问题→自动修复
  • 第二轮:内容质量→自动修复机械性问题,需要判断的问题询问用户

Done

完成

Show the single sharpest title transformation — the one where the before/after gap is biggest:
codeck outline done.
Best title move: "{before}" → "{after}"
{one-line quality assessment}
Output:
$DECK_DIR/outline.md
Next:
/codeck-design
to generate slides.
展示优化前后差异最大的一个标题修改:
codeck outline 已完成。
最佳标题优化: 「{修改前}」→「{修改后}」
{一行质量评估}
输出文件:
$DECK_DIR/outline.md
下一步: 执行
/codeck-design
生成幻灯片。