- schema
- 1.0
- name
- creative-write
- version
- 1.0.0
- description
- 通用創意內容生成引擎 — 支援多領域結構化創作工作流
- domain
- creative
- triggers
- {"keywords":{"primary":["creative-write","創意寫作","內容生成"],"secondary":["寫作","生成內容","創作"]},"context_boost":["創作","寫作","內容"],"context_penalty":["code","api","database"],"priority":"high"}
- dependencies
- {"software-skills":[]}
- author
- creative-write-system
# Creative Write — 通用創意內容生成引擎
## 概述
本 Skill 是一個通用的創意內容生成引擎,支援多領域的結構化創作工作流。透過領域專用指引(domain guide),可適配不同類型的創意內容生成需求(小說、劇本、企劃等)。
## 核心原則
1. **領域驅動** — 根據專案配置載入對應領域的寫作指引
2. **記憶驅動** — 大量上下文注入確保內容一致性
3. **結構化生成** — 按領域定義的層級(layers)逐單元生成
4. **人類協作** — 關鍵節點提請人工審核
5. **漸進式輸出** — 原始生成 + 潤色統一的兩階段流程
---
## 前置步驟(Domain 載入)
### 1. 讀取專案配置
使用 Read 讀取 `.creative/config.yaml`,取得:
- `domain` 值(例如: novel, screenplay, plan)
- 專案基礎配置(類型、風格、目標字數等)
**如果配置不存在**:
```
錯誤:未找到 .creative/config.yaml
請先執行 /creative-init 初始化專案。
```
### 2. 計算路徑
從 Skill header 的 `Base directory` 計算 PLUGIN_ROOT:
- PLUGIN_ROOT = Base directory 去掉 `/skills/creative-write` 部分
- 例如: `/path/to/project/skills/creative-write` → `/path/to/project`
設定路徑變數:
- DOMAIN_DIR = `$PLUGIN_ROOT/shared/domains/{domain}/`
- PROJECT_ROOT = 專案根目錄(.creative/config.yaml 所在位置)
### 3. 載入領域配置
使用 Read 讀取 `$DOMAIN_DIR/domain.yaml`,取得:
- `layers` — 內容生成的層級定義(例如 L4: scene, L5: chapter)
- `paths` — 領域特定的檔案路徑映射
- `word_count` — 各單元的字數範圍
- `context_sources` — 上下文收集來源配置
範例 domain.yaml 結構:
```yaml
domain: novel
layers:
L4:
name: scene
unit: 場景
word_range: [1500, 3000]
L5:
name: chapter
unit: 章節
aggregation: merge_and_polish
paths:
planning: planning/
drafts: drafts/
knowledge: knowledge/
memory: memory/
context_sources:
- type: planning
priority: 1
- type: memory
priority: 2
- type: knowledge
priority: 3
```
### 4. 載入寫作指引
使用 Read 讀取 `$DOMAIN_DIR/write-guide.md`,取得:
- 上下文收集規則
- 單元生成標準
- 品質檢查清單
- 記憶更新格式
---
## 工作流程
### Step 1: 前置檢查
1. 確認專案配置已載入(`.creative/config.yaml`)
2. 確認狀態文件存在(`.creative/status.json`)
3. 根據領域的 `paths` 配置,確認規劃文件已存在:
- 單元列表(例如 novel: scene list)
- 上級大綱(例如 novel: chapter outline)
**錯誤處理**:
- 缺少配置 → 提示執行 `/creative-init`
- 缺少規劃 → 提示執行 `/creative-plan`
### Step 2: 上下文收集(記憶注入)
根據 domain.yaml 中的 `context_sources` 和 write-guide.md 中的詳細規則,收集上下文:
#### 通用上下文收集框架
按優先順序收集:
1. **規劃上下文**(必讀)
- 讀取當前單元的規劃文件
- 讀取上級結構文件
2. **風格約束**(必讀)
- 讀取風格指南文件
- 確保風格一致性
3. **短期記憶**(必讀)
- 讀取最近生成單元的摘要
- 確保連貫性
4. **登場元素**(按需)
- 根據當前單元涉及的元素(角色、場景等)
- 使用 Grep 搜索知識庫
- Read 匹配的知識文件
5. **領域設定**(按需)
- 搜索相關的領域專用設定
- 讀取相關配置文件
6. **前序內容**(按需)
- 如果不是首個單元,讀取前序內容的結尾
- 確保銜接自然
7. **中期記憶**(長篇需要)
- 如果內容規模超過閾值,讀取摘要文件
- 使用 Glob 找到所有摘要,讀取最近摘要
#### 上下文組裝
將收集到的上下文按 write-guide.md 中定義的格式組裝成結構化提示。
---
### Step 3: 逐單元生成(L4 層級)
根據 domain.yaml 中 layers.L4 的定義,逐單元生成內容。
#### 生成流程
對規劃列表中的每個單元,依序執行:
1. **確認單元設定** — 從規劃列表讀取當前單元的所有參數
2. **組裝單元上下文** — 使用 Step 2 收集的資訊 + 前一單元的結尾
3. **生成單元文本** — 根據 write-guide.md 中的寫作標準生成內容
4. **寫入單元文件** — 使用 Write 寫入原始文件
#### 單元文件格式
根據 write-guide.md 中定義的格式,包含 YAML frontmatter 和正文。
#### Human Gate 框架
對於關鍵單元(根據 write-guide.md 定義的條件),使用 AskUserQuestion 請求審核:
```
關鍵單元審核請求
單元:{unit_description}
類型:{critical_type}
字數:{word_count} 字
摘要:{brief_summary}
請審核以下要點:
{review_checklist from write-guide.md}
請回覆:
- "確認" 保留當前版本
- "修改 [具體說明]" 調整特定部分
- "重寫" 重新生成此單元
```
---
### Step 4: 合併潤色(L5 層級)
所有 L4 單元生成後,進行 L5 層級的合併和潤色。
#### 合併流程
1. 使用 Glob 收集所有 L4 單元文件
2. 按單元編號排序
3. 讀取所有單元內容
#### 潤色工作
根據 write-guide.md 中 L5 層級的潤色標準執行:
- 單元間過渡優化
- 一致性檢查
- 節奏調整
- 開頭與結尾強化
#### 輸出最終稿
使用 Write 寫入最終文件,格式根據 write-guide.md 定義。
#### 字數統計
檢查總字數是否在 domain.yaml 定義的範圍內,如偏差過大則調整。
---
### Step 5: 記憶更新 + 狀態更新
根據 write-guide.md 中的記憶更新規則:
#### 短期記憶更新
使用 Edit 更新短期記憶文件,添加新生成單元的摘要。
#### 知識庫更新(如有變化)
如果生成內容中有新元素或元素狀態變化:
- 使用 Edit 更新對應的知識庫文件
#### 狀態文件更新
使用 Edit 更新 `.creative/status.json`,記錄:
- 已完成的單元/章節
- 當前進度
- 總字數
- 最後更新時間
#### 時間線更新
使用 Edit 更新 `.creative/timeline.md`,記錄重要事件。
#### 觸發摘要生成
如果達到摘要生成閾值,提示用戶執行 `/creative-memory summarize`。
---
## 參數處理
### 基礎調用
```
/creative-write
```
自動寫作下一個未完成的單元組(根據 status.json 判斷)。
### 指定單元組
```
/creative-write {unit-group-id}
```
寫作指定的單元組(例如 novel: `chapter-005`)。如果已存在,詢問是否覆蓋。
### 指定子單元
```
/creative-write {unit-group-id} {sub-unit-id}
```
只寫作特定子單元(例如 novel: `chapter-005 scene-003`)。適用於重寫。
### 續寫模式
```
/creative-write --continue
```
如果上次寫作中斷,從中斷處繼續。
### 自動品質檢查
```
/creative-write {unit-group-id} --auto-check
```
寫作完成後自動觸發 `/creative-check {unit-group-id}`。
---
## 錯誤處理
### 規劃文件不存在
```
錯誤:找不到 {unit-group-id} 的規劃文件。
請先執行 /creative-plan 生成規劃,或手動創建:
{expected_planning_path}
```
### 前序單元未完成
如果要求寫作單元 N 但單元 N-1 尚未完成:
```
提醒:{previous_unit} 尚未完成(status: 未開始)
建議:
1. 先完成 {previous_unit} 以確保連貫性
2. 如果確定要跳過,請回覆 "跳過"(可能影響連貫性)
```
### 寫作中斷恢復
如果檢測到部分單元已生成但未完成最終稿:
```
檢測到 {unit-group-id} 寫作中斷。
已完成單元:{completed_list}(共 {total_count} 個單元)
未完成單元:{pending_list}
是否從 {next_unit} 繼續?
- "繼續" 從中斷處續寫
- "重新開始" 刪除已有單元,重新寫作
```
### 字數異常
根據 domain.yaml 的字數範圍,如果單元字數異常:
- 超標:考慮拆分或精簡
- 不足:增加細節或展開內容
---
## 輸出路徑
輸出路徑由 domain.yaml 的 `paths` 配置和 write-guide.md 定義,框架本身不硬編碼路徑。
通用模式:
- L4 原始單元:`{paths.drafts}/{unit-group-id}/{sub-unit-id}-raw.md`
- L5 最終稿:`{paths.drafts}/{unit-group-id}/{unit-group-id}-final.md`
- 短期記憶:`{paths.memory}/recent-{units}.md`
- 狀態文件:`.creative/status.json`
- 時間線:`.creative/timeline.md`
---
## 範例互動流程
```
用戶: /creative-write chapter-003
Claude:
[載入 domain: novel]
[讀取 novel/domain.yaml 和 novel/write-guide.md]
開始寫作第 3 章。
[執行上下文收集]
[讀取場景列表、章節大綱、風格指南、短期記憶]
[搜索登場角色、世界觀設定]
第 3 章共 6 個場景,預計字數 12000-15000 字。
開始場景擴寫...
---
場景 1/6:{scene_title}(字數: 2100)✓
場景 2/6:{scene_title}(字數: 2400)✓
場景 3/6:{scene_title}(字數: 1800)✓
⚠️ 場景 4 為關鍵場景,請求審核...
[等待用戶確認]
用戶: 確認
場景 4/6:{scene_title}(字數: 2800)✓
場景 5/6:{scene_title}(字數: 1600)✓
場景 6/6:{scene_title}(字數: 1900)✓
開始章節潤色...
第 3 章寫作完成!
總字數:12,700 字
單元數:6 個
品質自檢:通過
已更新:
- {paths.drafts}/chapter-003/chapter-003-final.md
- {paths.memory}/recent-scenes.md
- .creative/status.json
- .creative/timeline.md
下一步建議:
- /creative-write chapter-004 繼續寫作
- /creative-check chapter-003 進行品質檢查
- /creative-status 查看整體進度
```
---
**最後提醒**:本 Skill 是通用框架,實際寫作標準和品質要求由領域專用的 write-guide.md 定義。寫作過程中如發現規劃不足,應暫停寫作並補充規劃,而非即興偏離規劃。
Voir sur GitHub