# publishリファクタリング ## 目的 `.agent/workflows/publish.md` の責務を整理し、以下を実現する。 1. `publish` を「記事を公開可能状態にする」ためのワークフローとして明確化する。 2. スキル名から実行順依存を外し、「1スキル = 1機能」の原則に寄せる。 3. `publish` 完了後の知識整理・派生処理は別ワークフローへ分離する。 4. `publish` 完了後に次のワークフローへ自動で引き継げる構造にする。 ## 現状の問題 ### 1. ワークフローの責務が広すぎる 現状の `publish` は、記事の推敲と画像生成だけでなく、完了後の知識整理まで抱えている。 - 内容監査 - 関連記事追加 - 構成整理 - 文章推敲 - アイキャッチ - 補助画像 - アトミックノート候補化 - Topic coverage 監査 このため、「公開まで」と「公開後の派生処理」の境界が曖昧になっている。 ### 2. スキル名に機能と順番が混在している 例: `review-00-content` この名前には以下が同時に含まれている。 - `review`: 行為 - `00`: `publish` 内の順番 - `content`: 対象領域 問題は、スキル自体の機能と、ワークフロー内の実行順が同じ名前に埋め込まれていること。 その結果、順番変更や再利用時に名前がノイズになる。 ### 3. Phase 1 の責務が混線している 現状の Phase 1 には以下が同居している。 - 関連記事の収集 - 収集結果の本文統合 - YAML と見出し構造の整理 これは本来、別機能である。 ### 4. 依存ルールの参照が不安定 `series_definitions.md` を参照する前提になっているが、現時点では実体が見当たらない。 この状態だと、構成整理・画像生成の両方で前提が崩れている。 ## 基本方針 ### 1. `publish` の完了条件を固定する `publish` は、以下が揃った時点で完了とする。 - 内容に重大な問題がない - 必要な関連記事や根拠が統合されている - YAML と構成が整っている - 本文が読みやすく整っている - 主アイキャッチが挿入されている - 必要な場合は補助画像も挿入されている - 最終的に公開可能な状態になっている 要するに、**画像を含めた記事の仕上げ完了までが `publish`** である。 ### 2. スキルは「1機能 = 1スキル」に寄せる スキル名は、`publish` の順番ではなく、単独で見て意味が通る機能名にする。 順番はワークフロー側で管理し、スキル名には持ち込まない。 ### 3. `publish` 後の処理は別ワークフローに分離する 以下は `publish` の責務から外す。 - 記事からの知識抽出 - Permanent Note 候補作成 - Topic coverage 監査 これらは、仮に失敗しても「記事が公開できるか」とは別問題である。 ### 4. ワークフロー間の handoff を明示する `publish` の末尾に後処理を直接書き足すのではなく、次ワークフローを起動する接続として扱う。 流れ: 1. `publish` が完了する 2. 必要な入力を handoff payload としてまとめる 3. 次ワークフローを起動する ## スキルの再分類 ### A. `publish` の中核スキル 記事を公開可能状態にするために必要な機能。 - 内容監査 - 関連記事収集 - 構成整理 - 文章推敲 - 主アイキャッチ作成 - 補助画像作成 - 最終公開チェック ### B. ユーティリティ 他のスキルの下位で使う補助機能。 - 画像を assets へ移動する - 記事本文へ画像を挿入する ### C. `publish` 後の別ドメイン 知識管理・資産化に関する後処理。 - Permanent Note 候補の抽出 - Brain との統合判断 - Topic coverage の監査 ## 命名方針 ### 原則 - 連番を付けない - ワークフロー依存の順番を名前に含めない - 単独で見て何をするスキルかがわかる名前にする - `review` のような曖昧語より、できるだけ具体的な動詞を使う ### リネーム案 現状の名称から、以下のような機能名へ寄せる。 - `review-00-content` -> `audit-article-content` - `find-related-articles` -> `collect-related-articles` - `review-01-structure` -> `organize-article-structure` - `review-02-text` -> `polish-article-text` - `review-03-eyecatch` -> `create-article-eyecatch` - `review-04-support-visuals` -> `create-article-support-visuals` - `util-image` -> `insert-article-image` 補足: - `util-*` は純ユーティリティとして残してもよいが、呼び出し意図が明確なら `insert-article-image` のような機能名でもよい。 - `find-related-articles` はすでに比較的自然だが、「探す」だけでなく本文へ載せる前提が強いなら `collect-` の方が責務に近い。 ## ワークフロー再構成案 ### `publish` ワークフロー 責務: 記事を公開可能状態にする。 推奨フロー: 1. 内容監査 2. 必要なら関連記事・根拠の補強 3. 構成整理 4. 文章推敲 5. 主アイキャッチ作成 6. 必要なら補助画像作成 7. 最終公開チェック 8. 次ワークフローへの handoff ### `post-publish-knowledge` ワークフロー(新設) 責務: 記事完成後の知識抽出と内部資産化。 候補フロー: 1. 記事から独自概念・再利用可能な気づきを抽出 2. Permanent Note 候補を提案 3. 必要なら Brain 統合を実施 4. Topic coverage を監査 5. 必要なら次の整備タスクへ接続 ## `publish` の内部構成見直し ### Phase の考え方 今後は「Phase 番号」をスキル名に持たせず、`publish.md` の中でのみ順序を定義する。 ### 特に分割すべき箇所 現状の Phase 1 は、少なくとも以下に分ける。 1. `collect-related-articles` 2. `organize-article-structure` 必要なら、関連記事を本文へ統合する作業も別スキル化を検討する。 候補: - `integrate-article-references` ただし、これは `collect-related-articles` の責務に含める設計でもよい。 重要なのは、構成整理と混ぜないこと。 ## Handoff 設計 `publish` 完了後は、次ワークフローへ以下を渡せる構造にする。 - `TargetFile` - 記事タイトル - 記事の要約 - 抽出候補キーワード(2〜3個) - 必要なら `series` / `project` `publish` 側では「後処理を実行しきる」のではなく、「次ワークフローに渡す入力を確定する」ところまでを責務にする。 ## 優先順位つき実施順 ### Step 1. 責務境界を分ける まず `publish` から知識整理系を外し、別ワークフローへ移す。 最初に切り出す対象: - `create-permanent-note` - `refine-my-brain` - `audit-topic-coverage` ### Step 2. 依存ファイルを整備する `series_definitions.md` の扱いを確定する。 選択肢: 1. 実ファイルを作る 2. 参照先を既存の別ルールに変更する 3. スキル側の依存を弱める これは構成系・画像系の両方に影響するため、早めに確定する。 ### Step 3. スキル名を機能名へ寄せる 連番を外し、機能中心の名前へ移行する。 このとき、ワークフロー側の呼び出し名も合わせて更新する。 ### Step 4. Phase 1 を分割する 関連記事処理と構成整理を分離する。 ### Step 5. 共通契約を見直す `提案 -> 承認 -> 実行 -> リフレッシュ` や `implementation_plan.md` の扱いを、`publish` 個別の本文ではなく、共通ルールへ寄せるか検討する。 ## 判断基準 今後、スキルを `publish` に残すかどうかは以下で判断する。 1. その機能は、記事を公開可能状態にするために必要か 2. その機能は、単独でも他ワークフローで再利用できるか 3. その機能は、純粋な下位ユーティリティか 4. その機能は、公開後の派生作業か 判断結果: - 1なら `publish` の中核 - 2なら汎用スキルとして保持 - 3なら `util` として下位に置く - 4なら別ワークフローへ分離 ## 当面の結論 1. 画像関連は `publish` の内側に残す。これは記事の仕上げであり、公開条件の一部である。 2. `publish` の完了は「画像を含めた公開可能状態」に固定する。 3. その後の知識整理は `post-publish` 系の別ワークフローに分離する。 4. スキル名から連番を外し、機能名へ寄せる。 5. スキルの順番はワークフロー側だけで管理する。 ## 次にやること 1. `.agent/workflows/publish.md` から Handoff の知識整理部分を切り出す 2. 新しい `post-publish-knowledge.md` の骨子を作る 3. `publish` 配下のスキル名リネーム方針を確定する 4. `series_definitions.md` の参照先問題を解消する 5. `publish.md` の Phase 1 を分割する