mcpField
C
codeck-export

codeck-export

github.com/hiyeshuドキュメント199184 回インストール12 週間前に更新
リポジトリ

codeck-export について

codeck-exportは、組み立て済みのスライドデッキをPDFまたはPPTXに書き出し、出力を確認するCodeckスキルです。形式の選択、レンダリング、品質チェックを行い、ソースの問題は直接編集せず引き継ぎます。

主な機能

  1. 01HTMLデッキをPDFまたはPPTXに書き出し
  2. 02形式未指定時の選択
  3. 03PDFとPPTXの表示確認
  4. 04問題発見後の再書き出し
  5. 05ソースの問題を記録して引き継ぎ

活用シーン

  1. 01共有用PDFの作成
  2. 02組み立て済みHTMLからPPTXを生成
  3. 03書き出したスライドの切れや重なりを確認
  4. 04ソースの不具合をデザインやレビューに引き継ぎ

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/hiyeshu/codeck --skill codeck-export

インストール後、Claude Code で/codeck-exportを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

pdf/
forms.md
LICENSE.txt
reference.md
pdf/scripts/
check_bounding_boxes.py
check_fillable_fields.py
convert_pdf_to_images.py
create_validation_image.py
extract_form_field_info.py
extract_form_structure.py
fill_fillable_fields.py
fill_pdf_form_with_annotations.py
pptx/
editing.md
LICENSE.txt
pptxgenjs.md
pptx/scripts/
__init__.py
add_slide.py
clean.py
pptx/scripts/office/
pack.py
pptx/scripts/office/helpers/
__init__.py
merge_runs.py
simplify_redlines.py
pptx/scripts/office/schemas/ecma/fouth-edition/
opc-contentTypes.xsd
opc-coreProperties.xsd
opc-digSig.xsd
opc-relationships.xsd
pptx/scripts/office/schemas/ISO-IEC29500-4_2016/
dml-chart.xsd
dml-chartDrawing.xsd
dml-diagram.xsd
dml-lockedCanvas.xsd
dml-main.xsd

詳細

codeck export — @export レーン

会話は最小限に、出力は最大限にします。デッキをユーザー指定の形式でエクスポートします。

@export は PDF/PPTX の出力とエクスポートの QA を担当します。

編集の境界:

  • ユーザーのプロジェクトディレクトリに最終 PDF/PPTX ファイルを書き込めます
  • QA のメモを $DECK_DIR/review.md または $DECK_DIR/MEMORY.md に書き込めます
  • $DECK_DIR/roles/export.md、$DECK_DIR/tasks/tasks.md、および $DECK_DIR/channel/YYYY-MM-DD.md を更新できます
  • deck.md、DESIGN.md、custom.css、slides.html、または speech.md を編集してはいけません
  • ソースの変更が必要なエクスポートの不具合は、$DECK_DIR/threads/threads.md の提案にします

ステップ 1:ステータス

DECK_DIR="$HOME/.codeck/projects/$(basename "$(pwd)")"
CODECK_SKILL_DIR="${CODECK_SKILL_DIR:-}"
if [ -z "$CODECK_SKILL_DIR" ]; then
  for d in \
    "${CLAUDE_PLUGIN_ROOT}/skills/codeck" \
    "$HOME"/.claude/plugins/cache/*/codeck/*/skills/codeck \
    "$HOME"/.codex/plugins/cache/*/codeck/*/skills/codeck \
    "$HOME/.agents/skills/codeck" \
    "$HOME/.codex/skills/codeck" \
    "$HOME/.claude/skills/codeck"; do
    if [ -d "$d/scripts" ]; then CODECK_SKILL_DIR="$d"; break; fi
  done
fi
[ -n "$CODECK_SKILL_DIR" ] || { echo "codeck skill scripts not found; set CODECK_SKILL_DIR" >&2; exit 1; }
. "$CODECK_SKILL_DIR/scripts/resolve-dirs.sh"
mkdir -p "$DECK_DIR"
mkdir -p "$DECK_DIR/channel" "$DECK_DIR/tasks" "$DECK_DIR/threads" "$DECK_DIR/roles"
bash "$CODECK_SKILL_DIR/scripts/init-room.sh" "$DECK_DIR"
bash "$CODECK_SKILL_DIR/scripts/status.sh" "$DECK_DIR"

$DECK_DIR/MEMORY.md、$DECK_DIR/tasks/tasks.md の有効な行、および $DECK_DIR/threads/threads.md の未解決の行を読みます。履歴のデバッグ時を除き、channel/YYYY-MM-DD.md は読まないでください。

ゲートの確認:組み立て済み HTML(./*-r*.html)が存在しない場合は、まず /codeck を実行してデッキを生成または再構築します。

エクスポートの前に、作業チケットを引き受けます。

@orchestrator
Owner: @export. Task: export latest HTML and run export QA.

@export
I claim the export pass. I will write PDF/PPTX outputs and record any source defects as threads.

やり取りを今日のチャンネルファイルに追記し、tasks/tasks.md を更新します。

ステップ 2:形式

エクスポート形式は、/codeck で許可されている Decision Ask のタイミングの 1 つです。

共通の /codeck Decision Ask ポリシーを使用します。ユーザーが出力先を指定した場合は、Decision Ask を省略します。

  • PDF、print、save as PDF → PDF をエクスポート
  • PPTX、PowerPoint、slides file → PPTX をエクスポート
  • all、both → PDF と PPTX の両方をエクスポート

ユーザーが「export」とだけ指定した場合は、threads/threads.md にブロックしない D-YYYYMMDD-NN の決定事項を作成し、一度レンダリングします。

codeck needs the export format.

Current read: HTML already exists as the audience preview.

I suggest PDF because it preserves the visual layout and is easiest to share.

A) PDF (recommended)
B) PPTX
C) PDF + PPTX

ユーザーが回答しない場合、または構造化された AskUser UI が利用できない場合は、PDF をエクスポートし、MEMORY.md に assumed default と記録します。

エクスポート形式の選択肢として HTML を提示しないでください。HTML はプレビュー/ソースの成果物です。

ステップ 3:エクスポート

HTML ファイル(ユーザーのプロジェクトディレクトリ内の ./*-r*.html)を探し、baseName を特定します。

HTML

すでに存在します。ブラウザーで開き、F キーで全画面表示にし、矢印キーで移動します。

PDF — HTML から印刷

WYSIWYG の PDF には Playwright を使用します。

npx playwright install chromium 2>/dev/null || true
import { chromium } from 'playwright';
import { resolve } from 'path';
import { readdirSync } from 'fs';
import { pathToFileURL } from 'url';

const html = readdirSync('.').find(f => /-r\d+\.html$/.test(f));
const baseName = html.replace('.html', '');
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto(pathToFileURL(resolve(html)).toString(), { waitUntil: 'networkidle' });
await page.emulateMedia({ media: 'screen' });
await page.pdf({
  path: `${baseName}.pdf`,
  printBackground: true,
  preferCSSPageSize: true,
  margin: { top: '12mm', right: '12mm', bottom: '12mm', left: '12mm' }
});
await browser.close();
console.log(`done: ${baseName}.pdf`);
ポスターアセット

slides.html 内の .media-poster 要素は、動画/音声のプレースホルダーです。元ファイルのパスはキャプションと deck.md のアセットマニフェストに記載されています。

デフォルトでは、エクスポートにもプレースホルダーを残します。ユーザーが「動画を埋め込む」と指定した場合は、キャプションからパスを取得し、PPTX には slide.addMedia({ path: "..." }) を使用します。

PPTX — HTML から

オプション A(推奨):LibreOffice

CODECK_SKILL_DIR="${CODECK_SKILL_DIR:-}"
if [ -z "$CODECK_SKILL_DIR" ]; then
  for d in \
    "${CLAUDE_PLUGIN_ROOT}/skills/codeck" \
    "$HOME"/.claude/plugins/cache/*/codeck/*/skills/codeck \
    "$HOME"/.codex/plugins/cache/*/codeck/*/skills/codeck \
    "$HOME/.agents/skills/codeck" \
    "$HOME/.codex/skills/codeck" \
    "$HOME/.claude/skills/codeck"; do
    if [ -d "$d/scripts" ]; then CODECK_SKILL_DIR="$d"; break; fi
  done
fi
[ -n "$CODECK_SKILL_DIR" ] || { echo "codeck skill scripts not found; set CODECK_SKILL_DIR" >&2; exit 1; }
. "$CODECK_SKILL_DIR/scripts/resolve-dirs.sh"
[ -n "${CODECK_EXPORT_DIR:-}" ] || { echo "codeck-export not found; set CODECK_EXPORT_DIR" >&2; exit 1; }
EXPORT_SCRIPTS="$CODECK_EXPORT_DIR/pptx/scripts"
python "$EXPORT_SCRIPTS/office/soffice.py" --headless --convert-to pdf ./*-r*.html
python "$EXPORT_SCRIPTS/office/soffice.py" --headless --convert-to pptx ./*-r*.html

オプション B(代替手段):スクリーンショットの埋め込み

soffice が利用できない場合は、Playwright で各ページのスクリーンショットを撮影してから、PptxGenJS でスクリーンショットをスライドとして埋め込みます。API については $CODECK_EXPORT_DIR/pptx/pptxgenjs.md を読んでください。

ステップ 4:QA(PDF/PPTX では必須)

エクスポートには問題があると想定してください。問題を見つけます。

PDF

確認項目:ページが完全である(途中で切れていない)、背景が表示される、フォントが正しく表示される。

PPTX

サムネイルを生成します。

CODECK_SKILL_DIR="${CODECK_SKILL_DIR:-}"
if [ -z "$CODECK_SKILL_DIR" ]; then
  for d in \
    "${CLAUDE_PLUGIN_ROOT}/skills/codeck" \
    "$HOME"/.claude/plugins/cache/*/codeck/*/skills/codeck \
    "$HOME"/.codex/plugins/cache/*/codeck/*/skills/codeck \
    "$HOME/.agents/skills/codeck" \
    "$HOME/.codex/skills/codeck" \
    "$HOME/.claude/skills/codeck"; do
    if [ -d "$d/scripts" ]; then CODECK_SKILL_DIR="$d"; break; fi
  done
fi
[ -n "$CODECK_SKILL_DIR" ] || { echo "codeck skill scripts not found; set CODECK_SKILL_DIR" >&2; exit 1; }
. "$CODECK_SKILL_DIR/scripts/resolve-dirs.sh"
[ -n "${CODECK_EXPORT_DIR:-}" ] || { echo "codeck-export not found; set CODECK_EXPORT_DIR" >&2; exit 1; }
EXPORT_SCRIPTS="$CODECK_EXPORT_DIR/pptx/scripts"
python "$EXPORT_SCRIPTS/thumbnail.py" ./*-r*.pptx

詳細に確認するため、画像に変換します。

python "$EXPORT_SCRIPTS/office/soffice.py" --headless --convert-to pdf ./*-r*.pptx
pdftoppm -jpeg -r 150 *.pdf slide-check

サブエージェントを使ってスクリーンショットを目視確認します。次の点に注目します:要素の重なり、テキストのはみ出し、不均一な余白、コントラストの低いテキスト、HTML の元データとの差異。

修正ループ
  1. 問題を見つける → エクスポートのパラメーターまたは HTML を調整する
  2. 再エクスポート → 再度スクリーンショットを撮影 → 再確認する
  3. 1 回の完全な確認で新たな問題が見つからなくなるまで繰り返す

完了を宣言する前に、少なくとも 1 回は修正と検証のサイクルを実施します。

QA でソースの不具合が見つかった場合は、ソースファイルを直接編集しないでください。影響を受ける成果物と推奨する担当者を記載したスレッドを追加し、@design または @review に引き継ぎます。

エクスポート後:

  1. MEMORY.md の Active Context、Latest Channel Summary、Task Index、および Artifacts を更新します。
  2. tasks/tasks.md の @export タスクを完了にします。
  3. 引き継ぎ内容を今日のチャンネルファイルに追記します。

ステップ 5:完了

エクスポートが完了しました。出力:{baseName}.pdf / {baseName}.pptx

@export 最新の HTML をエクスポートし、QA を実施して、出力パスをメモリに記録しました。

スピーチ原稿:/codeck speech script。概要:/codeck。

コメント