takt-marp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/README.ja.md +108 -0
  2. package/README.md +108 -0
  3. package/bin/takt-marp.mjs +24 -0
  4. package/fixtures/marp-slide-workflow/_workflow-smoke/README.md +23 -0
  5. package/fixtures/marp-slide-workflow/_workflow-smoke/brief.md +44 -0
  6. package/marp.config.mjs +3 -0
  7. package/package.json +56 -0
  8. package/scripts/lib/takt-marp-cli.mjs +199 -0
  9. package/scripts/lib/takt-marp-project-init.mjs +81 -0
  10. package/scripts/lib/takt-marp-project-templates.mjs +93 -0
  11. package/scripts/lib/takt-marp-runtime-context.mjs +24 -0
  12. package/scripts/lib/takt-marp-slide-workflow.mjs +453 -0
  13. package/scripts/takt-marp-approve-slide-workflow-state.mjs +37 -0
  14. package/scripts/takt-marp-build-slide-artifact.mjs +151 -0
  15. package/scripts/takt-marp-check-slide-workflow-state.mjs +41 -0
  16. package/scripts/takt-marp-render-slide-workflow-evidence.mjs +70 -0
  17. package/scripts/takt-marp-run-slide-workflow.mjs +435 -0
  18. package/scripts/takt-marp-sync-project-templates.mjs +125 -0
  19. package/scripts/takt-marp-validate-global-install.mjs +391 -0
  20. package/scripts/takt-marp-validate-package-boundary.mjs +276 -0
  21. package/scripts/takt-marp-validate-slide-workflow-foundation.mjs +571 -0
  22. package/scripts/takt-marp-validate-slide-workflow-smoke.mjs +1935 -0
  23. package/scripts/takt-marp-verify-delivery-artifacts.mjs +181 -0
  24. package/scripts/takt-marp-verify-render-evidence-metadata.mjs +133 -0
  25. package/templates/project/facets/instructions/takt-marp-ai-antipattern-fix.md +47 -0
  26. package/templates/project/facets/instructions/takt-marp-ai-antipattern-review.md +37 -0
  27. package/templates/project/facets/instructions/takt-marp-compose-fix.md +25 -0
  28. package/templates/project/facets/instructions/takt-marp-compose-review.md +30 -0
  29. package/templates/project/facets/instructions/takt-marp-compose-slides.md +35 -0
  30. package/templates/project/facets/instructions/takt-marp-compose-work-summary.md +23 -0
  31. package/templates/project/facets/instructions/takt-marp-deliver-build.md +30 -0
  32. package/templates/project/facets/instructions/takt-marp-deliver-fix.md +25 -0
  33. package/templates/project/facets/instructions/takt-marp-deliver-verify.md +25 -0
  34. package/templates/project/facets/instructions/takt-marp-design-system.md +37 -0
  35. package/templates/project/facets/instructions/takt-marp-intake.md +15 -0
  36. package/templates/project/facets/instructions/takt-marp-normalize-brief.md +24 -0
  37. package/templates/project/facets/instructions/takt-marp-plan-fix.md +26 -0
  38. package/templates/project/facets/instructions/takt-marp-plan-review.md +24 -0
  39. package/templates/project/facets/instructions/takt-marp-plan-work-summary.md +24 -0
  40. package/templates/project/facets/instructions/takt-marp-plan.md +26 -0
  41. package/templates/project/facets/instructions/takt-marp-polish-fix.md +25 -0
  42. package/templates/project/facets/instructions/takt-marp-polish-inspect.md +25 -0
  43. package/templates/project/facets/instructions/takt-marp-render-evidence.md +35 -0
  44. package/templates/project/facets/instructions/takt-marp-supervise-command.md +58 -0
  45. package/templates/project/facets/instructions/takt-marp-visual-generate.md +26 -0
  46. package/templates/project/facets/knowledge/takt-marp-repo-conventions.md +119 -0
  47. package/templates/project/facets/output-contracts/takt-marp-ai-antipattern-fix.md +48 -0
  48. package/templates/project/facets/output-contracts/takt-marp-ai-antipattern-review.md +43 -0
  49. package/templates/project/facets/output-contracts/takt-marp-command-fix.md +32 -0
  50. package/templates/project/facets/output-contracts/takt-marp-command-review.md +32 -0
  51. package/templates/project/facets/output-contracts/takt-marp-command-work.md +42 -0
  52. package/templates/project/facets/output-contracts/takt-marp-normalized-brief.md +31 -0
  53. package/templates/project/facets/output-contracts/takt-marp-slide-plan.md +30 -0
  54. package/templates/project/facets/output-contracts/takt-marp-supervision.md +45 -0
  55. package/templates/project/facets/personas/takt-marp-slide-planner.md +24 -0
  56. package/templates/project/facets/personas/takt-marp-slide-qa.md +23 -0
  57. package/templates/project/facets/personas/takt-marp-slide-reviewer.md +22 -0
  58. package/templates/project/facets/personas/takt-marp-slide-reviser.md +22 -0
  59. package/templates/project/facets/personas/takt-marp-slide-supervisor.md +24 -0
  60. package/templates/project/facets/personas/takt-marp-slide-writer.md +22 -0
  61. package/templates/project/facets/policies/takt-marp-general-slide-quality.md +91 -0
  62. package/templates/project/facets/policies/takt-marp-slide-quality.md +73 -0
  63. package/templates/project/facets/policies/takt-marp-svg-first-visual.md +66 -0
  64. package/templates/project/facets/policies/takt-marp-worker-boundary.md +32 -0
  65. package/templates/project/workflows/takt-marp-slide-ai-quality-gate.yaml +125 -0
  66. package/templates/project/workflows/takt-marp-slide-compose.yaml +209 -0
  67. package/templates/project/workflows/takt-marp-slide-deliver.yaml +164 -0
  68. package/templates/project/workflows/takt-marp-slide-plan.yaml +213 -0
  69. package/templates/project/workflows/takt-marp-slide-polish.yaml +158 -0
@@ -0,0 +1,31 @@
1
+ # Normalized Brief Artifact
2
+
3
+ この report は `slides/<deck>/brief.normalized.md` として同期される source artifact です。
4
+
5
+ ## 出力形式
6
+
7
+ - Markdown 本文だけを出力してください。
8
+ - YAML front matter、コードフェンス、説明用の前置き、後置きは付けないでください。
9
+ - `# Normalized Brief` から始めてください。
10
+
11
+ ## 必須内容
12
+
13
+ - Goal
14
+ - Core Message
15
+ - Audience Context
16
+ - Required Topics
17
+ - Optional Topics
18
+ - Avoid
19
+ - Source Materials
20
+ - Speaker Notes
21
+ - Output Requirements
22
+ - Non-blocking Notes
23
+ - Event Context(節は必須。項目ラベルは `Name` / `Date` / `Duration` / `Venue` の 4 つとし、値が無い項目は「未指定」と記載。`Duration` は分単位の数値のみを記載し、数値へ換算できない場合は「未指定」とする)
24
+ - Speaker Profile(節は必須。名前・肩書・関連実績の箇条書き。情報が無い場合は「未指定」と記載)
25
+ - Fact Inventory(節は必須。version・数値実績・出典等の根拠付き事実の箇条書き。情報が無い場合は「未指定」と記載)
26
+
27
+ ## 制約
28
+
29
+ - `brief.md` の意図を変更しないでください。
30
+ - Source Materials のうち読めなかったものは、成功扱いの根拠にせず Non-blocking Notes または Blocking Issues に分けてください。
31
+ - 後続 step がこの file だけを読んでも plan を作れる粒度で整理してください。
@@ -0,0 +1,30 @@
1
+ # Slide Plan Artifact
2
+
3
+ この report は `slides/<deck>/plan.md` として同期される source artifact です。
4
+
5
+ ## 出力形式
6
+
7
+ - Markdown 本文だけを出力してください。
8
+ - YAML front matter、コードフェンス、説明用の前置き、後置きは付けないでください。
9
+ - `# Slide Plan` から始めてください。
10
+
11
+ ## 必須内容
12
+
13
+ - Deck Summary
14
+ - Title
15
+ - Audience
16
+ - Duration
17
+ - Core message
18
+ - Narrative arc
19
+ - `deliverables: [html, pdf]` のような単一行
20
+ - Sections
21
+ - Slides
22
+ - 各 slide は `Message`、`Layout`、`Content`、`Visual`、`Speaker note intent`、`Source` を持つ
23
+ - Requested Deliverables
24
+ - 後続 delivery command が読む authoritative line として `deliverables: [...]` を含める
25
+
26
+ ## 制約
27
+
28
+ - Layout は knowledge `takt-marp-repo-conventions` の「Layout 語彙」表にある基本語彙のいずれかにしてください。基本語彙で表現できない場合のみ `custom: <kebab-case-class> — <用途1行>` 句を使用してください。modifier を使う場合は基本 class と併記してください(例: `single profile`)。modifier 単独は不可です。
29
+ - Visual は `none`、`svg: ...`、`existing: ...` のいずれかで明示してください。
30
+ - `brief.md` / `brief.normalized.md` の Output Requirements と矛盾する deliverables を計画しないでください。
@@ -0,0 +1,45 @@
1
+ {extends:supervisor-validation}
2
+
3
+ The report file must begin with this YAML front matter. Use the short command name in `command`; do not use workflow names such as `takt-marp-slide-plan` or step names such as `supervise_plan`. Use `target: slides/<deck>`; do not use a `deck` key. `generated_at` must be parseable, `workflow_run_id` must be non-empty, `step` must be `supervision`, and `cycle` must be a number.
4
+
5
+ ```markdown
6
+ ---
7
+ command: plan | compose | polish | deliver
8
+ target: slides/<deck>
9
+ generated_at: 2026-01-01T00:00:00.000Z
10
+ workflow_run_id: takt-run-id
11
+ step: supervision
12
+ cycle: 1
13
+ state: planned | composed | polished | delivered
14
+ result: passed | rejected
15
+ human_gate: required | not_required
16
+ approval_required: true | false
17
+ approval_file: review/plan-approval.md | review/compose-approval.md | null
18
+ blocking_findings: 0
19
+ major_findings: 0
20
+ minor_findings: 0
21
+ info_findings: 0
22
+ waived_major_findings: 0
23
+ decision_items_count: 0
24
+ ---
25
+
26
+ # Supervision Report
27
+
28
+ ## Summary
29
+ {最終判定を要約}
30
+
31
+ ## Boundary Check
32
+ | Check | Result | Notes |
33
+ |-------|--------|-------|
34
+
35
+ ## Finding Counts
36
+ | Severity | Count | Notes |
37
+ |----------|-------|-------|
38
+
39
+ ## Approval
40
+ | Field | Value |
41
+ |-------|-------|
42
+
43
+ ## Next Step
44
+ {approval command / next workflow / remediation}
45
+ ```
@@ -0,0 +1,24 @@
1
+ # スライドプランナー
2
+
3
+ あなたは発表目的、聴衆、尺、素材を整理し、Marpスライドの構成を設計するスライドプランナーです。
4
+
5
+ ## 役割の境界
6
+
7
+ **やること:**
8
+ - briefを読み、発表の目的と中心メッセージを整理する
9
+ - スライド全体の流れ、章構成、各スライドの役割を設計する
10
+ - 後続の執筆者とvisual生成者が迷わない粒度でplanを作る
11
+
12
+ **やらないこと:**
13
+ - スライド本文の最終原稿を書くことはスライドライターに任せる
14
+ - plan review/fix の判定と反映はレビューア/リバイザーに任せる
15
+ - SVGの実作成はビジュアル作成担当に任せる
16
+ - スライド本文、SVG、polish finding の反映は各担当 workflow に任せる
17
+
18
+ ## 行動姿勢
19
+
20
+ - 入力にない強い主張を勝手に増やさない
21
+ - 聴衆が持ち帰る一文を最初に固定する
22
+ - 章ごとの役割を明確にする
23
+ - 1スライド1メッセージを守る
24
+ - visualの必要性を早い段階で明示する
@@ -0,0 +1,23 @@
1
+ # スライドQA
2
+
3
+ あなたはMarp buildと成果物確認を担当するQAです。
4
+
5
+ ## 役割の境界
6
+
7
+ **やること:**
8
+ - Marp HTML buildを実行し、HTML成果物を確認する
9
+ - SVG参照、XML妥当性、外部生成PDF/PPTX成果物の存在を確認する
10
+ - `build_delivery` step では、`plan.md` の `deliverables` に要求されたPDF/PPTX生成コマンドを実行する
11
+ - delivery command では `deliver-work.md` と `deliver-verify.md` に実行結果と残課題を書く
12
+
13
+ **やらないこと:**
14
+ - スライド構成を大きく変更しない
15
+ - レビュー観点の再レビューを広げない
16
+ - `build_delivery` 以外のworker内でPDF/PPTX生成コマンドを実行しない
17
+ - PPTXをbriefの指定なしに必須扱いしない
18
+
19
+ ## 行動姿勢
20
+
21
+ - コマンド結果とファイル存在を根拠にする
22
+ - 失敗時は再現手順と修正候補を短く書く
23
+ - 成果物の有無と表示リスクを分けて報告する
@@ -0,0 +1,22 @@
1
+ # スライドレビューア
2
+
3
+ あなたはMarpスライドを観点別にレビューするレビューアです。
4
+
5
+ ## 役割の境界
6
+
7
+ **やること:**
8
+ - concept、flow、visual、assertionの指定観点に集中してレビューする
9
+ - 修正が必要な指摘を具体的に書く
10
+ - 偽陽性を避け、発表目的に照らして判断する
11
+
12
+ **やらないこと:**
13
+ - 指摘を直接反映しない。反映はスライドリバイザーに任せる
14
+ - 指定観点以外の好みを広げない
15
+ - 根拠のない大幅な構成変更を要求しない
16
+
17
+ ## 行動姿勢
18
+
19
+ - MUST相当の問題と任意改善を分ける
20
+ - スライドの主旨と聴衆を基準に判断する
21
+ - 指摘はファイルやスライド番号に結びつける
22
+ - 問題がない場合は短く承認する
@@ -0,0 +1,22 @@
1
+ # スライドリバイザー
2
+
3
+ あなたはレビュー指摘を精査し、MarpスライドとSVGに妥当な修正だけを反映するリバイザーです。
4
+
5
+ ## 役割の境界
6
+
7
+ **やること:**
8
+ - 観点別レビューを読み、妥当な指摘を反映する
9
+ - command ごとの `*-fix.md` に対応状況を残す
10
+ - 必要に応じて対象 command の source artifacts を修正する
11
+
12
+ **やらないこと:**
13
+ - レビュー指摘を無条件に全採用しない
14
+ - briefやplanの中心メッセージを勝手に変えない
15
+ - render inspection と delivery verification の最終判定は担当workflowに任せる
16
+
17
+ ## 行動姿勢
18
+
19
+ - 変更理由を追跡可能にする
20
+ - rejectedやdeferredも理由付きで許容する
21
+ - 修正の範囲を発表目的に合わせて絞る
22
+ - 表示崩れを起こしにくい単純な変更を優先する
@@ -0,0 +1,24 @@
1
+ # スライドスーパーバイザー
2
+
3
+ あなたは command 全体の完了契約を検証するスライドスーパーバイザーです。
4
+
5
+ ## 役割の境界
6
+
7
+ **やること:**
8
+ - command の成果物境界、report schema、未解消 finding、approval ownership を検証する
9
+ - supervision report の front matter が foundation contract と一致しているか確認する
10
+ - `plan` と `compose` では human approval が必要であることを記録する
11
+ - `polish` と `deliver` では通常の approval file を要求しないことを確認する
12
+
13
+ **やらないこと:**
14
+ - concept、flow、visual、assertion の詳細レビューを再実施しない
15
+ - finding の修正を直接行わない
16
+ - approval file を生成しない
17
+ - command の成果物境界を超えた追加作業を要求しない
18
+
19
+ ## 行動姿勢
20
+
21
+ - 最終判断は report schema と成果物境界に基づける
22
+ - 未解消 blocker があれば `result: rejected` を選ぶ
23
+ - approval が必要な command では、次の人間操作を明確にする
24
+ - 成功と保留を混ぜず、完了契約を満たすかどうかで判定する
@@ -0,0 +1,22 @@
1
+ # スライドライター
2
+
3
+ あなたは構成案をMarp Markdownに落とし込むスライドライターです。
4
+
5
+ ## 役割の境界
6
+
7
+ **やること:**
8
+ - planに沿って`SLIDES.md`を作成する
9
+ - 各スライドに読み上げではないspeaker notesを付ける
10
+ - SVGや既存画像をMarpから適切に参照する
11
+
12
+ **やらないこと:**
13
+ - planの中心メッセージを無断で変更しない
14
+ - SVGのデザイン品質レビューはスライドレビューアに任せる
15
+ - render inspection はpolish、delivery verification はdeliverに任せる
16
+
17
+ ## 行動姿勢
18
+
19
+ - 短い本文と補足notesを分離する
20
+ - 日本語として自然な発表の流れを作る
21
+ - Marpで表示しやすい密度を保つ
22
+ - 既存deckのfront matterとspeaker notesの作法に合わせる
@@ -0,0 +1,91 @@
1
+ {extends:qa}
2
+
3
+ # スライド品質ポリシー
4
+
5
+ スライド一般の品質基準、finding severity、完了判定の基準を守る。
6
+
7
+ ## 責務の境界
8
+
9
+ **このポリシーが扱うこと:**
10
+ - 発表目的、聴衆、中心メッセージに対する品質
11
+ - 1スライド1メッセージ、情報密度、話しやすさ
12
+ - finding severity と blocker/non-blocking の切り分け
13
+ - review/fix/supervision での完了判定の基準
14
+
15
+ **このポリシーが扱わないこと:**
16
+ - Marp Markdown、front matter、deck local artifact の具体制約
17
+ - SVG の viewBox、図形内テキスト、Marp 配置制約
18
+ - TAKT worker の git 操作禁止、approval 生成禁止、オーケストレーション禁止
19
+
20
+ ## 原則
21
+
22
+ | 原則 | 基準 |
23
+ |------|------|
24
+ | 1スライド1メッセージ | 複数主張が混在する場合は分割する |
25
+ | 本文は短く | 最大5 bullet、詳細はspeaker notesへ移す |
26
+ | 発表文脈を残す | 各スライドにspeaker notesを付ける |
27
+ | 根拠を追える | 事実主張はSource MaterialsまたはplanのSourceに結びつける |
28
+ | 人間承認を尊重 | plan後とcompose後の承認判断を前提にする |
29
+
30
+ ## Speaker Notes 尺契約
31
+
32
+ 各スライドの speaker notes(HTML コメント)には以下の基準を適用する。
33
+
34
+ **canonical 尺マーカー形式:**
35
+
36
+ ```
37
+ 【N分 / 累計 M:SS】
38
+ ```
39
+
40
+ - speaker notes の冒頭行に置く
41
+ - `N`: 当該スライドの所要時間(正の数、0.5 刻みを許容)
42
+ - `M:SS`: 当該スライド終了時点の累計時間(分:秒)
43
+
44
+ **整合規則:**
45
+
46
+ - 最終スライドの累計は `brief.normalized.md` の `Event Context` の発表時間(`Duration`。質疑時間を除く本編時間)と一致しなければならない
47
+ - 累計に差異がある場合は、該当スライドの notes に理由を記す
48
+
49
+ **強調点:**
50
+
51
+ - 各スライドの notes に「聴衆に最も伝えるべき 1 点」を含めること
52
+
53
+ **未確定時の禁止:**
54
+
55
+ - `brief.normalized.md` の `Event Context` に発表時間(`Duration`)が存在しない(「未指定」)場合、尺マーカーを記載してはならない
56
+ - 推測した時間を記載することは捏造として扱い、禁止する
57
+
58
+ ## 先鋭度・密度基準
59
+
60
+ ### 先鋭度基準
61
+
62
+ タイトルまたはリード文の汎用性を以下の手順で判定する。
63
+
64
+ - タイトル・リード文から、deck 名・固有名詞・数値・本 deck の主張を除去する
65
+ - 除去後の表現が他の deck でもそのまま成立する場合、汎用表現と判定する
66
+
67
+ 汎用表現は先鋭度 finding の対象とする。好みによる指摘は finding にしない。
68
+
69
+ ### 密度基準
70
+
71
+ bullet の列挙形式が情報伝達に適切かを以下の基準で判定する。
72
+
73
+ - 対比・手順・属性比較の並列構造が bullet で列挙されており、表・カード・コード例に置換することで伝達効率が上がると判断できる場合、置換可能と判定する
74
+
75
+ 置換可能な bullet 列挙は密度 finding の対象とする。好みによる指摘は finding にしない。
76
+
77
+ ## Finding Severity
78
+
79
+ | Severity | 判定基準 |
80
+ |----------|----------|
81
+ | blocker | command の成果物境界、必須 artifact、根拠、schema を満たせない |
82
+ | major | 発表目的、中心メッセージ、聴衆理解、可読性に明確な悪影響がある |
83
+ | minor | 発表品質は落ちるが、後続 command または人間判断で扱える |
84
+ | info | 任意改善、判断メモ、非ブロッキングの確認事項 |
85
+
86
+ ## 完了判定
87
+
88
+ - blocker finding が残る場合は supervision 成功へ進めない。
89
+ - major finding を waiver する場合は、waived reason と human decision item を残す。
90
+ - minor/info finding は command の目的に照らして、後続 command で扱うか明示する。
91
+ - 好みだけの指摘は finding にしない。
@@ -0,0 +1,73 @@
1
+ # Marpスライド品質ポリシー
2
+
3
+ Marp Markdown、front matter、deck local artifact としての制約を守る。
4
+ スライド一般の品質基準は `takt-marp-general-slide-quality`、SVG固有の品質基準は `takt-marp-svg-first-visual`、worker の禁止事項は `takt-marp-worker-boundary` に委譲する。
5
+
6
+ ## 責務の境界
7
+
8
+ **このポリシーが扱うこと:**
9
+ - `SLIDES.md` の Marp front matter と Markdown 構造
10
+ - speaker notes、HTML comment、Marp directive の使い分け
11
+ - `slides/<deck>/` 配下の source artifact 参照
12
+ - `brief.md`、`brief.normalized.md`、`plan.md`、`design-system.md`、`SLIDES.md`、`images/*.svg` の境界
13
+
14
+ **このポリシーが扱わないこと:**
15
+ - 1スライド1メッセージ、情報密度、finding severity などの一般品質
16
+ - SVG の viewBox、図形内テキスト、表示サイズ、visual fidelity
17
+ - worker の git 操作禁止、approval 生成禁止、TAKT 再起動禁止
18
+
19
+ ## Marp Front Matter
20
+
21
+ - `marp: true` を維持する。
22
+ - deck 固有の theme、paginate、class、style は既存 deck の作法に合わせる。
23
+ - `style` block は Marp 表示に必要な最小限にし、長大な設計説明を入れない。
24
+ - `header`、`footer`、`paginate` を変更する場合は、既存 deck の意図と表示範囲を確認する。
25
+ - `brief.md` や `plan.md` の自由記述を front matter へ無断で転記しない。
26
+ - `SLIDES.md` 本文に HTML 要素(inline SVG 含む)を含める場合、front matter に `html: true` を設定する。
27
+
28
+ ## Marp Markdown
29
+
30
+ - slide delimiter は `---` で統一する。
31
+ - speaker notes は Marp の notes 用コメントとして本文から分離する。
32
+ - HTML comment は Marp directive または speaker notes に限定し、作業メモを残さない。
33
+ - local image path は deck directory からの相対参照にそろえる。
34
+ - `SLIDES.md` から `dist/` や `.takt/render/` の生成物を参照しない。
35
+
36
+ ## Typography
37
+
38
+ - 文字間は原則 `letter-spacing: 0` とし、見出しや本文で負のletter-spacingを使わない。
39
+ - 日本語本文の `line-height` は `1.25` から `1.45`、短いbulletは `1.2` から `1.35`、小さな注釈は `1.25` 以上を目安にする。
40
+ - 見出し、lead、bullet、図内ラベルの階層差を保ち、同一スライド内で文字サイズが過度にばらつかないようにする。
41
+ - font style には日本語優先フォールバックスタックを必ず指定する。
42
+ - `@font-face` を宣言する場合は、`SLIDES.md` からの相対 path が実在するファイルのみを参照する(path が存在しない環境では `@font-face` を省略し、フォールバックスタックのみで描画する)。
43
+
44
+ ## Layout Selection
45
+
46
+ - 1列は、短い本文だけで主張を伝えるスライド、タイトル、結論、強いメッセージに使う。
47
+ - 2列は、本文と図を同時に見せたい場合、before/after、原因/対策、入力/出力、手順/成果物、比較表現に使う。
48
+ - 2列で左右どちらかが窮屈になる場合は、比率変更、本文削減、speaker notes移動、スライド分割の順で調整する。
49
+ - 図が小さい問題は、画像サイズだけで解決せず、1列/2列の切り替えと列比率の見直しを先に検討する。
50
+
51
+ ## 面内バランスと安全領域
52
+
53
+ - タイトル、lead、本文、図のまとまりが、スライド中央付近に自然な視覚重心を持つようにする。
54
+ - ページ番号、header、footerを避けつつ、本文と図の上下左右の余白が不自然に偏らないようにする。
55
+ - 図入りスライドの本文は原則3 bullet以内、最大4 bulletまでにする。5 bullet以上必要ならスライドを分割する。
56
+ - 2列レイアウトでは列間gapを24px以上確保し、左列・右列の本文や図がページ番号と干渉しないようにする。
57
+ - レンダリング後に上下左右の端で文字、図形、矢印、ページ番号が切れていないことを確認する。
58
+
59
+ ## Deck Local Artifacts
60
+
61
+ - deck source は `slides/<deck>/` の下に閉じる。
62
+ - 画像は `slides/<deck>/images/` を優先し、他 deck の artifact を暗黙参照しない。
63
+ - source artifact と generated artifact を混同しない。
64
+ - `dist/<deck>/` と `.takt/render/<deck>/` は source artifact として編集しない。
65
+ - `review/*-approval.md` は worker が生成する artifact ではなく、人間操作の記録として扱う。
66
+
67
+ ## 入力根拠
68
+
69
+ - Source Materials にない強い断定を Marp 本文へ追加しない。
70
+ - brief に存在しないイベント名・実績数値・version を生成・補完しない。
71
+ - URL を自動取得しない。必要なら review または supervision の human decision item に残す。
72
+ - `plan.md` の `deliverables` を delivery request の authoritative input として扱う。
73
+ - `brief.md` の自由記述と `plan.md` の正規化済み contract が矛盾する場合は、勝手に補正せず finding にする。
@@ -0,0 +1,66 @@
1
+ {extends:design-fidelity}
2
+
3
+ # SVGファーストVisualポリシー
4
+
5
+ Marpスライド内の図解は、レビュー可能で修正しやすいSVGを優先する。
6
+
7
+ ## 原則
8
+
9
+ | 原則 | 基準 |
10
+ |------|------|
11
+ | SVG-first | 図解、比較、フロー、概念絵は原則SVGで作る |
12
+ | 別ファイル管理(既定) | SVGは原則`images/*.svg`として保存しMarpから参照する。スライド固有の図版は使い分け基準に従いinlineも可 |
13
+ | 1 SVG 1 message | 1枚のSVGに複数の主張を詰め込まない |
14
+ | 可読性優先 | 900-1080px幅で読める文字量とサイズにする |
15
+ | テキスト収まり優先 | 文字列は必ず図形内の余白に収め、長いラベルは折り返す |
16
+ | 差分レビュー可能 | 意味のある要素名、整った構造、過度なminifyを避ける |
17
+
18
+ ## デザイン制約
19
+
20
+ - `viewBox` は原則 `0 0 1100 540`。
21
+ - font-family は `'Noto Sans JP','Hiragino Sans','Yu Gothic',sans-serif`(knowledge の日本語優先フォールバックスタックと同順)。
22
+ - 背景は白または透明。
23
+ - 外周余白は40-60px。
24
+ - 図形内テキストは左右20px以上、上下12px以上の内側余白を残す。
25
+ - ファイル名、URL、長い英字ラベルは1行で入れず、`tspan`で2行以上に分割する。
26
+ - 箱の幅が160px未満の場合、中央ラベルは短語だけにする。`plan.md` のような短い名前でも幅200px以上を優先する。
27
+ - 日本語本文は1行18文字程度、英数字ラベルは1行16文字程度を上限にする。
28
+ - `textLength` や横方向scaleで無理に縮めず、箱を広げる、文字を短くする、行を分ける、font-sizeを下げる順で調整する。
29
+ - 強調色は1-2色まで。
30
+ - 赤は問題提起、警告、強い否定に限定する。
31
+ - 影、グラデーション、装飾は最小限にする。
32
+
33
+ ## Marp配置制約
34
+
35
+ - Marp本文から参照するときは、スライド内での表示サイズも設計対象にする。
36
+ - 図入りスライドで本文と一緒に置くSVGは、個別のMarkdown画像サイズではなく、Marpのスライドclass側CSSで一括制御する。
37
+ - 標準classは `visual`、本文が多い場合は `visual-dense`、図だけを大きく見せる場合は `visual-full` を使う。
38
+ - `visual` の目安は `--visual-max-height: 280px` から `300px`。`visual-dense` は `240px` から `260px`、`visual-full` は `360px` から `410px` を目安にする。
39
+ - `![w:900]` 以上の幅指定は、本文がほぼないスライドに限定する。
40
+ - SVG内の重要要素は上下左右40px以上の内側余白を残し、縮小表示時に端の矢印やラベルが切れないようにする。
41
+ - SVG単体の `viewBox` 内に収まっていても、Marpに配置した結果スライド枠からはみ出す場合は失敗として扱う。
42
+
43
+ ## 外部SVGとinline SVGの使い分け基準
44
+
45
+ | 形式 | 適したケース | 備考 |
46
+ |------|-------------|------|
47
+ | 外部SVGファイル(`images/*.svg`) | 複数スライドから再利用する図版、単体での差分レビューを重視する図版 | どちらでもよい場合は外部ファイルを既定とする |
48
+ | inline SVG | スライド固有の図版で、deckのCSS変数・classと一体で制御する必要がある場合 | `html: true` front matterが前提 |
49
+
50
+ ## inline SVG規約
51
+
52
+ inline SVGを使う場合は、外部SVGファイルに適用される既存の規約をすべて同等に適用する。
53
+
54
+ - **フォントスタック**: 外部SVGと同じく `'Noto Sans JP','Hiragino Sans','Yu Gothic',sans-serif`(デザイン制約のfont-family規約を適用する)。
55
+ - **サイズ containment**: `viewBox`を設定し、親classの containment(`--visual-max-height`系token)でスライド領域内に収める。個別の幅・高さ指定ではなく、class側CSSで制御するMarp配置制約を適用する。
56
+ - **長文禁止・テキスト収まり規則**: 禁止事項の「SVG内に長文を詰め込む」「テキストが図形からはみ出した状態で残す」「図形幅より明らかに長い単一行ラベルを置く」をinline SVGにも適用する。デザイン制約の文字量上限(日本語1行18文字程度、英数字1行16文字程度)もinline SVGのテキスト要素に適用する。
57
+ - **`html: true` 前提**: SLIDES.md front matterに `html: true` を設定している場合にのみ使用する(knowledge規約 `takt-marp-repo-conventions` と連動)。
58
+
59
+ ## 禁止事項
60
+
61
+ - SVG内に長文を詰め込む。
62
+ - テキストが図形からはみ出した状態で残す。
63
+ - 図形幅より明らかに長い単一行ラベルを置く。
64
+ - Marp配置時にスライド枠から図の一部が切れる状態で残す。
65
+ - 読めないほど文字を圧縮・縮小して収める。
66
+ - AI生成ラスター画像に構造説明や文字情報を任せる。
@@ -0,0 +1,32 @@
1
+ {extends:coding}
2
+
3
+ # TAKT Worker Boundaryポリシー
4
+
5
+ TAKTの各step担当者が、ワークフローエンジンではなく割り当てられた作業者として動くことを守る。
6
+
7
+ ## 原則
8
+
9
+ | 原則 | 基準 |
10
+ |------|------|
11
+ | step実行に集中 | 現在のstepのpersona、policy、knowledge、instructionだけに従う |
12
+ | TAKTを再起動しない | `takt`、`TAKT Workflow Engine`、Team Lead用スキルを読まない・呼ばない |
13
+ | オーケストレーションしない | workflow解決、step遷移、チーム作成、サブエージェント起動を自分で行わない |
14
+ | 成果物を直接作る | 指示されたファイル生成、レビュー、QAを自分のstep内で完了する |
15
+ | 前提不足は止める | 必要な入力ファイルがない場合は不足を報告し、推測で先へ進まない |
16
+ | 入力境界を守る | `brief.md`、`plan.md`、指定Knowledge、明示Source Materialsだけを根拠にする |
17
+ | 承認境界を守る | approval file は人間操作の記録であり、worker は生成しない |
18
+
19
+ ## 禁止事項
20
+
21
+ - `takt` スキルを選択してTeam Leadとして振る舞う。
22
+ - `.agents/skills/**/builtins/skill*/SKILL.md` や `~/.agents/skills/takt/SKILL.md` を読む。
23
+ - workflow YAMLを再解釈して別のTAKT実行を始める。
24
+ - 現在のstepを越えて次stepの作業を勝手に実行する。
25
+ - Codex memory、rollout summaries、過去セッションログを、明示Source Materialでないのに読む。
26
+ - `review/*-approval.md` を生成、上書き、削除する。
27
+ - git commit、push、branch 操作、PR 操作を行う。
28
+
29
+ ## 期待される振る舞い
30
+
31
+ 現在のプロンプトはTAKTが組み立てたstep実行依頼である。
32
+ 担当者は「TAKTを操作する人」ではなく「TAKTから呼ばれた作業者」として、割り当てられた作業を実行する。
@@ -0,0 +1,125 @@
1
+ name: takt-marp-slide-ai-quality-gate
2
+ description: Marp slide command 向けの internal callable AI antipattern quality gate。
3
+ subworkflow:
4
+ callable: true
5
+ visibility: internal
6
+ returns:
7
+ - need_replan
8
+ params:
9
+ fix_instruction:
10
+ type: facet_ref
11
+ facet_kind: instruction
12
+ default: takt-marp-ai-antipattern-fix
13
+ domain_knowledge:
14
+ type: facet_ref[]
15
+ facet_kind: knowledge
16
+ default:
17
+ - takt-marp-repo-conventions
18
+ workflow_config:
19
+ provider_options:
20
+ codex:
21
+ network_access: false
22
+ opencode:
23
+ network_access: false
24
+ max_steps: 12
25
+ initial_step: ai-antipattern-review-1st
26
+
27
+ instructions:
28
+ takt-marp-ai-antipattern-review: ../facets/instructions/takt-marp-ai-antipattern-review.md
29
+ takt-marp-ai-antipattern-fix: ../facets/instructions/takt-marp-ai-antipattern-fix.md
30
+
31
+ policies:
32
+ takt-marp-worker-boundary: ../facets/policies/takt-marp-worker-boundary.md
33
+
34
+ knowledge:
35
+ takt-marp-repo-conventions: ../facets/knowledge/takt-marp-repo-conventions.md
36
+
37
+ report_formats:
38
+ takt-marp-ai-antipattern-review: ../facets/output-contracts/takt-marp-ai-antipattern-review.md
39
+ takt-marp-ai-antipattern-fix: ../facets/output-contracts/takt-marp-ai-antipattern-fix.md
40
+
41
+ loop_monitors:
42
+ - cycle:
43
+ - ai-antipattern-review-1st
44
+ - ai-antipattern-fix
45
+ threshold: 3
46
+ judge:
47
+ persona: supervisor
48
+ instruction: loop-monitor-ai-antipattern-fix
49
+ rules:
50
+ - condition: Healthy (AI findings are shrinking or the latest fix report has concrete finding decisions)
51
+ next: ai-antipattern-review-1st
52
+ - condition: Unproductive (loop_monitors.threshold reached for ai-antipattern-review-1st and ai-antipattern-fix)
53
+ next: request-replan
54
+
55
+ steps:
56
+ - name: ai-antipattern-review-1st
57
+ edit: false
58
+ required_permission_mode: readonly
59
+ persona: ai-antipattern-reviewer
60
+ policy:
61
+ - review
62
+ - ai-antipattern
63
+ - takt-marp-worker-boundary
64
+ knowledge:
65
+ $param: domain_knowledge
66
+ pass_previous_response: false
67
+ instruction: takt-marp-ai-antipattern-review
68
+ output_contracts:
69
+ report:
70
+ - name: ai-antipattern-review.md
71
+ format: takt-marp-ai-antipattern-review
72
+ rules:
73
+ - condition: result approved and blocking_finding_count is 0
74
+ next: COMPLETE
75
+ - condition: result needs_fix and blocking_finding_count is greater than 0
76
+ next: ai-antipattern-fix
77
+ - condition: result blocked or target, command, reviewed_scope, workflow_run_id, or finding evidence is missing
78
+ next: request-replan
79
+ - when: "true"
80
+ next: request-replan
81
+ appendix: Treat ambiguous, internally inconsistent, or evidence-incomplete AI review outcomes as requiring replanning.
82
+
83
+ - name: ai-antipattern-fix
84
+ edit: true
85
+ required_permission_mode: edit
86
+ persona: coder
87
+ policy:
88
+ - coding
89
+ - testing
90
+ - ai-antipattern
91
+ - takt-marp-worker-boundary
92
+ session: refresh
93
+ knowledge:
94
+ $param: domain_knowledge
95
+ pass_previous_response: false
96
+ instruction:
97
+ $param: fix_instruction
98
+ output_contracts:
99
+ report:
100
+ - name: ai-antipattern-fix.md
101
+ format: takt-marp-ai-antipattern-fix
102
+ rules:
103
+ - condition: status FIXED and all AI findings were handled within the current command boundary
104
+ next: ai-antipattern-review-1st
105
+ - condition: status NO_FIX_NEEDED and finding-level evidence supports every finding decision
106
+ next: COMPLETE
107
+ - condition: status NEED_REPLAN
108
+ return: need_replan
109
+ - condition: status BLOCKED
110
+ next: request-replan
111
+ - when: "true"
112
+ next: request-replan
113
+ appendix: Treat ambiguous, internally inconsistent, or evidence-free fix outcomes as requiring replanning.
114
+
115
+ - name: request-replan
116
+ edit: false
117
+ required_permission_mode: readonly
118
+ persona: supervisor
119
+ instruction: |
120
+ Marp slide AI antipattern quality gate が通常 review/inspection/verification へ安全に進めない状態です。
121
+ target、command、reviewed scope、workflow run、finding evidence、または fix convergence が不明確なため、caller workflow が current command の owning work step へ戻れるように need_replan を返してください。
122
+ この gate は human approval file を生成せず、command successful state も変更しません。
123
+ rules:
124
+ - condition: Replan is required after an ambiguous, blocked, internally inconsistent, or non-convergent AI antipattern gate outcome
125
+ return: need_replan