원클릭으로
narrative-write
콘텐츠 저작 워크플로우 — 4개 파이프라인(파생/신규/수정/연쇄) 통합 + QTSP 품질 게이트. Use when the user says "글 쓰자", "블로그 작성", or "콘텐츠 저작".
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
콘텐츠 저작 워크플로우 — 4개 파이프라인(파생/신규/수정/연쇄) 통합 + QTSP 품질 게이트. Use when the user says "글 쓰자", "블로그 작성", or "콘텐츠 저작".
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Guided onboarding workflow — modn guide leads the system setup. Use when the user says "tutorial", "onboarding", or is a first-time user.
Process Catalyst detections — verify scope, format output, route to discussion or initiative creation. Internal skill — called when a system improvement opportunity is detected during conversation.
현재 세션의 initiative 맥락을 다음 세션으로 넘기는 핸드오프 문서 작성. Use when the user says "핸드오프", "세션 정리", "다음 세션으로", or session handoff.
Initiative 주제에 대한 리서치를 수행하고 결과를 기록. Internal skill — called by initiative workflow during research phases.
핸드오프 문서를 로드하여 이전 세션의 initiative 맥락을 복원하고 작업을 재개. Use when the user says "이어서 하자", "resume", "지난번 작업 계속", or continuing a previous initiative.
실험용 git worktree 생성/관리. Use when the user says "worktree", "실험 환경", "브랜치 분리", or needs an isolated experiment environment.
| name | narrative-write |
| description | 콘텐츠 저작 워크플로우 — 4개 파이프라인(파생/신규/수정/연쇄) 통합 + QTSP 품질 게이트. Use when the user says "글 쓰자", "블로그 작성", or "콘텐츠 저작". |
| context | main |
| allowed-tools | ["Read","Write","Edit","Glob","Grep","Agent","Bash"] |
| argument-hint | <topic_id|item_id> [--pipeline derived|new|revise|cascade] |
| spec-version | 2 |
Domain: narrative Version: 1.0.0
콘텐츠 저작은 "초안 → 편집 → 검토"를 반복하는 구조적 작업이다. 편집 과정에서 QTSP 7항목 품질 게이트가 없으면 주관적 판단에 의존하게 되고, 품질 기준이 세션마다 흔들린다. 이 워크플로우는 4개 파이프라인(파생/신규/수정/연쇄)을 하나의 흐름으로 통합하여, 파이프라인 유형에 따라 컨텍스트 로드를 분기하고, QTSP 기반 편집 게이트로 일관된 품질을 보장한다. 서사 빈틈이 감지되면 인터뷰어 에이전트가 사용자에게 확인하여, 꾸며낸 서사 없이 실제 소재를 확보한다.
| 참조 | 역할 | 로드 시점 |
|---|---|---|
workspace/squads/narrative/vault/knowledge/quality-standards.md | QTSP 7항목 품질 기준 | Step 5 (edit) |
workspace/squads/narrative/vault/knowledge/pipelines.md | 4개 파이프라인 정의 (파생/신규/수정/연쇄) | Step 1 (brief) |
workspace/squads/narrative/policies/writing-principles.md | 저작 원칙 7개 | Step 3 (draft), Step 5 (edit) |
workspace/squads/narrative/vault/knowledge/distribution-strategy.md | 채널별 톤·길이 기준 | Step 3 (draft), Step 5 (edit) |
vault/user/_meta/writing-profile.md | W1~W10 사용자 저작 성향 | Step 3 (draft), Step 5 (edit) |
pipeline_type: string # derived | new | revise | cascade
target_id: string # topic_id 또는 item_id
channel: string # blog | sns | article | source | book
content_data: object # content.json에서 로드한 대상 데이터
draft_text: string # 현재 초안 텍스트
edited_text: string # 편집된 텍스트
qtsp_score: object # {7항목 각 1~5 + total}
interview_needed: boolean # 서사 빈틈 감지 여부
목적: 저작 브리프를 수집하고 파이프라인 유형을 확정한다.
topic_id 또는 item_id: content.json에서 대상 식별pipeline: 파생(derived) / 신규(new) / 수정(revise) / 연쇄(cascade)channel: 채널 유형 (blog / sns / article / source / book)--pipeline 인자 제공 시 그대로 사용derived_from 지정 → 파생item_id + 기존 version → 수정topic_id만 → 신규CONVERSATION PROTOCOL:
JUDGMENT:
목적: content.json에서 대상을 로드하고 파이프라인별 추가 컨텍스트를 준비한다.
workspace/squads/narrative/data/content.json에서 topic/item 조회_meta.md 로드 + 빈 draft 준비목적: 사용자가 초안을 작성하거나 AI 보조로 드래프팅한다.
CONVERSATION PROTOCOL:
목적: 서사 빈틈을 발견하고 사용자에게 질문하여 실제 소재를 확보한다.
workspace/squads/narrative/agents/interviewer.md
트리거 조건: edit 단계에서 interview_needed: true 반환 시, 또는 draft 단계에서 근거 없는 주장이 감지될 때
목적: QTSP 7항목을 평가하고 편집 제안을 생성한다.
workspace/squads/narrative/agents/editor.md
edited_text: 편집된 텍스트qtsp_score: 7항목 각각의 점수 (1~5) + 총점edit_notes: 항목별 편집 사유interview_needed: 서사 빈틈 감지 여부 (boolean)목적: 편집 결과와 QTSP 스코어를 사용자가 확인하고 승인/반려한다.
JUDGMENT:
qtsp total < 3.5 또는 any item < 2 → draft로 loop-back (품질 미달)interview_needed: true → interview 노드로 분기목적: content.json을 업데이트하고 status 전이를 완료한다.
workspace/squads/narrative/data/content.json
draft → review → source-ready (or published)version++updated_at 갱신derived_from 관계 기록qtsp total < 3.5 또는 any item < 2 → draft로 loop-back (품질 미달)interview_needed: true → interview 노드로 분기| Step | Agent | 전달 컨텍스트 | 반환 |
|---|---|---|---|
| Step 4 | Interviewer (workspace/squads/narrative/agents/interviewer.md) | 초안, 서사 빈틈 지점 | questions, gap_source |
| Step 5 | Editor (workspace/squads/narrative/agents/editor.md) | 초안, 채널, writing-profile, quality-standards, writing-principles | edited_text, qtsp_score, edit_notes, interview_needed |
flowchart TD
brief{brief} --> load-context[load-context]
load-context --> draft{draft}
draft --> edit[[edit]]
edit --> review{review}
review -->|qtsp < 3.5 or item < 2| draft
review -->|interview needed| interview[[interview]]
review -->|승인 or override| finalize[finalize]
interview --> draft
nodes:
- id: brief
type: human
entry: true
summary: "저작 브리프 수집 — 파이프라인 유형 판단 (파생/신규/수정/연쇄)"
input: [topic_id or item_id, pipeline-hint, channel]
output: [pipeline-type, target-id, channel]
postcondition:
- "pipeline_type이 확정됨 (derived|new|revise|cascade)"
- "target_id가 content.json에서 유효한 식별자임"
- "channel이 확정됨"
judgment:
- condition: "필수 필드 미충족 (topic_id/item_id, pipeline, channel)"
next: brief
type: gate
- id: load-context
type: auto
summary: "content.json에서 대상 로드 + 파이프라인별 컨텍스트 준비"
input: [pipeline-type, target-id]
output: [content-data, channel-tone, source-article]
postcondition:
- "content_data가 로드됨"
- "채널별 톤·길이 기준이 확인됨"
side_effects:
- reads: workspace/squads/narrative/data/content.json
- reads: workspace/squads/narrative/vault/knowledge/distribution-strategy.md
- id: draft
type: human
summary: "초안 작성 — 사용자 직접 또는 AI 보조 드래프팅"
input: [content-data, channel-tone, writing-profile, writing-principles]
output: [draft-text]
postcondition:
- "draft_text가 존재함"
- "채널별 톤·길이 기준에 부합"
- id: interview
type: agent
agent: workspace/squads/narrative/agents/interviewer.md
summary: "서사 빈틈 질문 — 꾸며내지 않고 사용자에게 확인"
input: [draft-text, gap-points]
output: [questions, gap_source]
postcondition:
- "빈틈 질문 목록이 생성됨"
- "사용자 답변이 수집됨"
- id: edit
type: agent
agent: workspace/squads/narrative/agents/editor.md
summary: "QTSP 7항목 평가 + 편집 제안"
input: [draft-text, channel, writing-profile, quality-standards, writing-principles]
output: [edited_text, qtsp_score, edit_notes, interview_needed]
postcondition:
- "edited_text가 생성됨"
- "qtsp_score 7항목이 모두 채워짐"
- "interview_needed 판단이 완료됨"
side_effects:
- reads: vault/user/_meta/writing-profile.md
- reads: workspace/squads/narrative/vault/knowledge/quality-standards.md
- id: review
type: human
summary: "편집 결과 + QTSP 스코어 확인 — 승인/반려/인터뷰 분기"
input: [edited_text, qtsp_score, edit_notes, interview_needed]
postcondition:
- "사용자 판단이 확정됨 (승인|반려|인터뷰)"
judgment:
- condition: "qtsp total < 3.5 or any item < 2"
next: draft
type: loop-back
max_iterations: 3
- condition: "interview_needed: true"
next: interview
type: loop-back
max_iterations: 2
- condition: "사용자 승인"
next: finalize
- condition: "사용자 override (스코어 인지 후 명시적 진행 요청)"
next: finalize
type: override
- id: finalize
type: auto
summary: "content.json 업데이트 — status 전이, version++, updated_at"
input: [edited_text, target-id, pipeline-type]
postcondition:
- "content.json의 status가 전이됨"
- "version이 증가됨"
side_effects:
- updates: workspace/squads/narrative/data/content.json
checkpoint: true
checkpoint_evidence: "content.json에 갱신된 status와 version이 존재"
edges:
- from: brief → to: load-context
- from: load-context → to: draft
- from: draft → to: edit
- from: edit → to: review
- from: review → to: finalize # 승인 or override
- from: review → to: draft # qtsp 미달
- from: review → to: interview # interview_needed
- from: interview → to: draft # 답변 반영 후 재작성
workspace/squads/narrative/README.mdworkspace/squads/narrative/agents/editor.mdworkspace/squads/narrative/agents/interviewer.mdworkspace/squads/narrative/vault/knowledge/quality-standards.mdworkspace/squads/narrative/vault/knowledge/pipelines.mdworkspace/squads/narrative/policies/writing-principles.mdworkspace/squads/narrative/vault/knowledge/distribution-strategy.mdvault/user/_meta/writing-profile.mdoutput-styles/narrative-*.mdworkspace/squads/narrative/data/content.json