@decencia/ch-cli 1.31.0 → 1.31.1

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.
@@ -3,7 +3,7 @@ name: 2t-decencia-channel-issue-coder
3
3
  description: GitHub issue 1개를 입력으로 받아 끝까지 처리하는 코딩 에이전트. 이슈 읽기 → 소통채널 spec/SQA 확인 → git worktree+브랜치에서 구현 → 자체 소프트리뷰 루프 → unittest + SQA → PR 생성 → 소통채널 workStatus·이슈 기록. 다수 병렬 실행 전제, PR까지만(머지·base 브랜치 직접 push·이슈 close는 사람).
4
4
  tools: Read, Write, Edit, Grep, Glob, Bash, Agent
5
5
  model: opus
6
- version: 1.31.0
6
+ version: 1.31.1
7
7
  ---
8
8
 
9
9
  ## 역할
@@ -3,7 +3,7 @@ name: 2t-decencia-channel-pr-merger
3
3
  description: issue-coder가 낸 PR을 기본 완전 자율로 base 브랜치(기본 브랜치 또는 sprint 통합 브랜치)에 머지하는 에이전트. 핵심 역량은 다수 병렬 worktree가 만든 충돌을 작업 의도 기반(semantic)으로 해결하는 것. CI green+충돌없음이면 바로 squash 머지, 충돌이면 의도대로 해결 후 테스트로 검증하여 머지. 재SQA·전면 재리뷰는 하지 않음. 다수 PR은 직렬 머지.
4
4
  tools: Read, Write, Edit, Grep, Glob, Bash
5
5
  model: opus
6
- version: 1.31.0
6
+ version: 1.31.1
7
7
  ---
8
8
 
9
9
  ## 역할
@@ -3,7 +3,7 @@ name: 2t-decencia-channel-terraformer
3
3
  description: 소통채널을 쓰지 않던 기존 코드베이스를 역분석하여 소통채널 프로젝트로 편입(terraforming)하는 자율 에이전트. 코드가 single source of truth — 코드를 읽어 DB 스키마 → 기능명세(spec) → PRD를 bottom-up으로 역생성한다(SQA 제외). 대량 분석은 서브에이전트 병렬, 코드로 못 메우는 의도는 [추정]으로 채우고 "사람확인 질문 리스트"를 산출물로 남긴다. PR/머지·이슈 발행은 하지 않음.
4
4
  tools: Read, Write, Edit, Grep, Glob, Bash, Agent
5
5
  model: opus
6
- version: 1.31.0
6
+ version: 1.31.1
7
7
  ---
8
8
 
9
9
  ## 역할
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decencia/ch-cli",
3
- "version": "1.31.0",
3
+ "version": "1.31.1",
4
4
  "description": "Decencia Communication Channel CLI",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -2,7 +2,7 @@
2
2
  name: 2t-decencia-channel-change-manager
3
3
  description: 기존 소통채널 프로젝트의 기능 추가/수정을 사용자와 대화로 명확화 → 전파 스킬로 연관 PRD/spec/DB/SQA 일괄 갱신 → 변경으로 생긴 새 할일을 GitHub 이슈로 발행하는 오케스트레이터 스킬. (1)대화로 변경 내용 확정 → (2)[게이트] 영향 범위 확인 후 전파 적용 → (3)[게이트] 할일 목록 확인 후 이슈 발행. "이 기능 바꿀래"·"기획 수정"·"이거 추가해줘(기존 프로젝트)" 류 요청 시.
4
4
  allowed-tools: Bash(ch:*) Bash(git:*) Bash(gh:*) Read Write
5
- version: 1.31.0
5
+ version: 1.31.1
6
6
  ---
7
7
 
8
8
  <!-- ch-version-gate -->
@@ -10,7 +10,7 @@ description: |
10
10
  (3) 명세·DB·SQA가 서로 어긋나 있는 의심이 들 때 (정합성 점검),
11
11
  (4) PRD 갱신 후 하위 spec/db/SQA로 변경분을 흘려보내야 할 때,
12
12
  (5) Sprint 진행 중 도메인 규칙·스키마가 흔들렸을 때 연쇄 갱신이 필요할 때.
13
- version: 1.31.0
13
+ version: 1.31.1
14
14
  ---
15
15
 
16
16
  <!-- ch-version-gate -->
@@ -10,7 +10,7 @@ description: |
10
10
  (4) ch screens 명령(list/get/create/update/delete/migrate)으로 화면을 다루거나 레거시 프로젝트를 화면 모드로 이관할 때,
11
11
  (5) spec의 화면 연결을 CLI로 걸거나 풀 때 (`ch specs screen-refs`),
12
12
  (6) Spec ID를 JIRA 스타일(`LOGIN-001`)로 직접 지정할 때 (`ch specs create --id`).
13
- version: 1.31.0
13
+ version: 1.31.1
14
14
  ---
15
15
 
16
16
  <!-- ch-version-gate -->
@@ -69,7 +69,7 @@ ch specs update <specId> --points 8 --no-version
69
69
  - `--preconditions <텍스트|파일경로>` — 사전 조건 마크다운.
70
70
  - `--domain`은 쉼표로 **복수** 지정 (`--domain 회원,관리자`).
71
71
  - `--type`(기능유형)·`--content`는 스토리 명세 모드에서 쓰지 않는다 (레거시 전용).
72
- - `--ui`는 화면 연결이 필요할 `{"screenRefs":[...]}`만 싣는다 (생성 시에만 §1 화면 연결).
72
+ - `--ui`는 생성 보통 생략한다 화면설계서는 spec보다 나중(작성 순서 ④)이라, 화면을 만든 뒤 `ch specs screen-refs`로 연결한다(§1 화면 연결).
73
73
 
74
74
  **레거시 모드** (`storySpecsEnabled` 미설정·false — 기존 프로젝트):
75
75
 
@@ -8,7 +8,7 @@ description: |
8
8
  (2) DB 테이블 단위로 컬럼·인덱스·보안규칙을 등록·수정할 때,
9
9
  (3) 새 테이블을 추가하면서 전체 인벤토리도 함께 업데이트할 때,
10
10
  (4) spec.dbTableRefs와 양방향 동기화가 필요한 작업 시.
11
- version: 1.31.0
11
+ version: 1.31.1
12
12
  ---
13
13
 
14
14
  <!-- ch-version-gate -->
@@ -2,7 +2,7 @@
2
2
  name: 2t-decencia-channel-github-issue
3
3
  description: gh CLI로 현재 repo에 GitHub 이슈를 작성한다. 이슈 1개=유형 1개(feat/fix/bug), 표준 본문 양식(작업내용·관련 명세 백링크·완료조건)으로 발행. "이슈 만들어줘"/"깃헙 이슈로 등록해줘" 요청 시, 또는 소통채널 기획·명세 작업 후 처리할 일들을 GitHub 이슈로 옮길 때 사용. 멱등성/중복방지·확인단계는 다루지 않음(요청대로 바로 생성).
4
4
  allowed-tools: Bash(gh:*) Bash(git:*) Read Write
5
- version: 1.31.0
5
+ version: 1.31.1
6
6
  ---
7
7
 
8
8
  <!-- ch-version-gate -->
@@ -2,7 +2,7 @@
2
2
  name: 2t-decencia-channel-orchestrator
3
3
  description: 소통채널 작업의 단일 진입점(디스패처). 사용자 요청을 듣고 7종(bootstrap·terraformer·change-manager·github-issue·issue-coder·pr-merger·sprint-runner) 중 적절한 곳으로 라우팅하고, 필요하면 여러 단계를 순차 오케스트레이션한다. 대화형 스킬은 메인 세션에서 Skill로, 자율 에이전트는 Agent로 위임. "소통채널 작업 해줘"·"이거 어떻게 처리하지?"처럼 무엇부터 할지 모를 때, 또는 신규기획/코드편입/기획변경/이슈/구현/머지/스프린트실행 어디로든 시작할 때.
4
4
  allowed-tools: Skill Agent Read Bash(ch:*) Bash(gh:*) Bash(git:*)
5
- version: 1.31.0
5
+ version: 1.31.1
6
6
  ---
7
7
 
8
8
  <!-- ch-version-gate -->
@@ -8,7 +8,7 @@ description: |
8
8
  (1) 정책정의서를 새로 쓰거나 수정할 때,
9
9
  (2) 유저플로우·기능명세를 검토하다 "이건 정해진 게 없다"는 질문이 나왔을 때,
10
10
  (3) 알림 발송 매트릭스·크레딧 지급 기준·타임아웃 처리 같은 횡단 정책을 정리할 때.
11
- version: 1.31.0
11
+ version: 1.31.1
12
12
  ---
13
13
 
14
14
  <!-- ch-version-gate -->
@@ -29,6 +29,7 @@ ch check
29
29
  # 정책정의서 — 작성 표준
30
30
 
31
31
  정책정의서는 **여러 Story·영역에 걸치는 프로젝트 정책**을 판정 가능한 문장으로 기록하는 문서다. 웹 "정책정의서" 탭에 올린다.
32
+ **작성 순서상 ③이다** — ①기능명세·②유저플로우에서 질문을 수확해 쓰고, ④화면설계서·⑤검증기준서가 뒤따른다.
32
33
 
33
34
  ## 0. 경계 — 어디에 적나
34
35
 
@@ -7,7 +7,7 @@ description: |
7
7
  (1) PRD를 작성하거나 갱신할 때,
8
8
  (2) PRD 구성에서 Epic/스토리 구조를 후속 spec 작성에 매핑할 때,
9
9
  (3) Read-before-Write 규칙으로 PRD content를 안전하게 수정해야 할 때.
10
- version: 1.31.0
10
+ version: 1.31.1
11
11
  ---
12
12
 
13
13
  <!-- ch-version-gate -->
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  name: 2t-decencia-channel-project-bootstrap
3
- description: 신규 기획을 사용자와 대화하며 step-by-step으로 소통채널 프로젝트로 만드는 오케스트레이터 스킬. (1)대화로 PRD 완성 → (2)기능명세(spec) 내용 확정 → (3)DB 스키마 → (4)spec 업로드 → (5)화면 구성·연결 → (6)SQA 시트. 각 단계 사용자 승인 게이트, 작성 디테일은 기존 2t-decencia-channel-*-v2 스킬을 적극 재사용. "새 기획 만들어줘"·"프로젝트 처음부터 세팅" 류 요청 시.
3
+ description: 신규 기획을 사용자와 대화하며 step-by-step으로 소통채널 프로젝트로 만드는 오케스트레이터 스킬. (1)대화로 PRD 완성 → (2)기능명세(spec) 내용 확정 → (3)DB 스키마 → (4)spec 업로드 → (5)유저플로우 → (6)정책정의서 → (7)화면설계서(화면 생성·연결) → (8)검증기준서(SQA). 각 단계 사용자 승인 게이트, 작성 디테일은 기존 2t-decencia-channel-*-v2 스킬을 적극 재사용. "새 기획 만들어줘"·"프로젝트 처음부터 세팅" 류 요청 시.
4
4
  allowed-tools: Bash(ch:*) Bash(git:*) Read Write
5
- version: 1.31.0
5
+ version: 1.31.1
6
6
  ---
7
7
 
8
8
  <!-- ch-version-gate -->
@@ -27,8 +27,8 @@ ch check
27
27
 
28
28
  ## 핵심 원칙
29
29
  - **각 단계마다 사용자 승인 게이트.** "괜찮다"는 확인 없이는 절대 다음 단계로 넘어가지 않는다. 수정 요청이면 그 단계를 반복.
30
- - **화면은 기능에서 파생된다. 기능명세가 먼저, 화면 구성이 뒤다.** 기능을 알아야 화면을 있다.
31
- - 작성 디테일은 호출: PRD→`2t-decencia-channel-prd-v2`, 기능명세→`2t-decencia-channel-spec-v2`, 화면→`2t-decencia-channel-cli-v2` §3(screens 명령), DB→`2t-decencia-channel-db-schema-v2`, SQA→`2t-decencia-channel-sqa-v2`, 업로드→`2t-decencia-channel-cli-v2`.
30
+ - **기획 문서 작성 순서는 고정이다: ①기능명세 ②유저플로우 ③정책정의서 → ④화면설계서 → ⑤검증기준서.** 화면은 기능·여정·정책이 다 선 뒤에 만든다 — **spec보다 화면을 먼저 만들지 않는다.**
31
+ - 작성 디테일은 호출: PRD→`2t-decencia-channel-prd-v2`, 기능명세→`2t-decencia-channel-spec-v2`, 유저플로우→`2t-decencia-channel-userflow-v2`, 정책→`2t-decencia-channel-policy-v2`, 화면→`2t-decencia-channel-screen-v2`(+`cli-v2` §3 screens 명령), DB→`2t-decencia-channel-db-schema-v2`, SQA→`2t-decencia-channel-sqa-v2`, 업로드→`2t-decencia-channel-cli-v2`.
32
32
 
33
33
  ## Use when
34
34
  - "새 기획 만들어줘", "프로젝트 처음부터 세팅해줘", 아이디어/요구사항을 소통채널 프로젝트로 구조화하고 싶을 때.
@@ -36,12 +36,14 @@ ch check
36
36
  ## 전체 흐름
37
37
 
38
38
  ```
39
- (1) PRD → (2) 기능명세 내용 확정 → (3) DB 스키마 → (4) spec 업로드 → (5) 화면 구성·연결 → (6) SQA
39
+ (1) PRD → (2) 기능명세 내용 확정 → (3) DB 스키마 → (4) spec 업로드
40
+ → (5) 유저플로우 → (6) 정책정의서 → (7) 화면설계서(화면 생성·연결) → (8) 검증기준서(SQA)
40
41
  ```
41
42
 
42
- **spec 업로드는 DB 스키마 뒤, 화면 구성 앞이다.**
43
+ (2)~(8)이 기획 문서 작성 순서 ①기능명세→②유저플로우→③정책정의서→④화면설계서→⑤검증기준서에 대응한다. DB 스키마(3)는 spec 업로드에 `--db-tables`(실제 tableId)가 필요해 끼어드는 선행 단계다.
44
+
43
45
  - 테이블 연결(`dbTableRefs`)은 spec 생성 때 함께 싣는다. 그래서 DB가 먼저다.
44
- - 화면 연결(`screenRefs`)은 화면을 만든 뒤 §5에서 `ch specs screen-refs`로 건다. 생성 때 실을 필요가 없다.
46
+ - 화면 연결(`screenRefs`)은 화면을 만든 뒤 §7에서 `ch specs screen-refs`로 건다. 생성 때 실을 필요가 없다.
45
47
 
46
48
  ---
47
49
 
@@ -56,7 +58,7 @@ ch check
56
58
  - **신규 프로젝트는 서버가 `screensEnabled: true` + `storySpecsEnabled: true`로 만든다.** 화면 정보의 SSOT는 screens 리소스다. **신규 프로젝트 spec에는 `ui.route`를 쓰지 않는다.**
57
59
  - `storySpecsEnabled=true`면 spec은 **스토리 명세 구조**다(스토리문장·사전 조건·로직 플로우·비즈니스 규칙 — [[2t-decencia-channel-spec-v2]] §1). 기존 프로젝트(플래그 없음)는 종전 ui/logic 구조 그대로다.
58
60
  - 기존 프로젝트를 이어 쓰면 `ch projects info --json`으로 `screensEnabled`를 본다. **키가 아예 없거나 false면 레거시다.** (레거시 프로젝트 응답에는 이 키가 없다. 없음 = false로 읽는다.)
59
- - **레거시는 route 방식을 그대로 유지한다.** §5(화면 구성) 건너뛰고 spec의 `ui.route`를 계속 쓴다.
61
+ - **레거시는 route 방식을 그대로 유지한다.** §7(화면설계서) 건너뛰고 spec의 `ui.route`를 계속 쓴다.
60
62
 
61
63
  ### 0-2. 레거시를 화면 모드로 옮길 때만
62
64
  - `ch screens migrate --dry-run`으로 계획을 보고 → 사용자 확인 → `ch screens migrate`.
@@ -77,7 +79,7 @@ ch check
77
79
  - Epic은 도메인 단위 코드로 (AUTH/PROD/ORDER/POINT/ADMIN/SYS … — [[2t-decencia-channel-spec-v2]] §3). PRD 기능 요구사항의 카테고리와 같은 코드다.
78
80
  - spec 본문은 스토리 명세 구조로 짠다: 스토리문장(As a/I want/So that 줄글) · 사전 조건 · 로직 플로우 · 비즈니스 규칙.
79
81
  - interactionMap·primaryActions·keyInformation·stateTransitions는 쓰지 않는다 — 스토리 명세에 없다.
80
- - 화면 연결(`screenRefs`)은 지금은 비워둔다. 화면이 아직 없다 — §5에서 연결한다.
82
+ - 화면 연결(`screenRefs`)은 지금은 비워둔다. 화면이 아직 없다 — §7에서 연결한다.
81
83
  - 레거시 프로젝트(§0-1)는 예외다. 종전 ui/logic 구조([[2t-decencia-channel-spec-v2]] §L)로 쓴다.
82
84
  - 이 단계의 산출물은 **기능 목록 + spec 본문 초안**이다. 항목: 이름 · Spec ID(EPIC-NNN) · epic · points · 스토리문장 · 필요 테이블 후보.
83
85
  - ⚠️ **서버 업로드는 여기서 하지 않는다.** 테이블을 먼저 만들고 §4에서 `dbTableRefs`와 함께 생성한다.
@@ -93,7 +95,7 @@ ch check
93
95
  ## 4. spec 업로드
94
96
  *(테이블이 다 만들어진 뒤)*
95
97
 
96
- 이제 spec을 서버에 만든다. 테이블 연결을 생성에 함께 싣는다. 화면 연결은 §5에서 건다.
98
+ 이제 spec을 서버에 만든다. 테이블 연결을 생성에 함께 싣는다. 화면 연결은 §7에서 건다.
97
99
 
98
100
  ```bash
99
101
  ch specs create --id PROJ-001 --name "프로젝트 목록" \
@@ -107,12 +109,25 @@ ch specs create --id PROJ-001 --name "프로젝트 목록" \
107
109
  ⚠️ `--device`·`--domain`은 **필수 플래그**다. 값은 `ch specs meta --json`이 준 스키마 안에서 고른다. `--domain`은 쉼표로 복수 지정 가능하다.
108
110
 
109
111
  - `logic.json`은 로직 플로우 시나리오(실패·차단 분기 포함) + businessRules — [[2t-decencia-channel-spec-v2]] §7·§8.
110
- - `--ui`는 생성 시점에 넣지 않는다. 화면이 아직 없다 — 연결은 §5에서 `ch specs screen-refs`로 건다.
112
+ - `--ui`는 생성 시점에 넣지 않는다. 화면이 아직 없다 — 연결은 §7에서 `ch specs screen-refs`로 건다.
111
113
  - 레거시 프로젝트(§0-1)는 종전 플래그(`--type`·`--content`·`--ui ui.json`)를 그대로 쓴다 — [[2t-decencia-channel-cli-v2]] §1.
112
114
  - → **[게이트] 사용자 확인.** OK면 5단계.
113
115
 
114
- ## 5. 화면 구성·연결
115
- *(spec 업로드 후에만. 레거시 프로젝트는 건너뛴다 — §0-1)*
116
+ ## 5. 유저플로우
117
+ *(spec 업로드 )*
118
+ - [[2t-decencia-channel-userflow-v2]]대로 **분기 있는 여정만** 골라 Mermaid로 그린다 (프로젝트당 3~7장, 해피패스 중앙 일직선).
119
+ - 대상은 PRD·Epic-Story 목록에서 뽑는다: 돈이 흐르는 경로·최빈 경로·역방향·역할별 여정 우선.
120
+ - `ch userflows create --name "<여정>" --file ./flow.mmd`로 업로드. 웹 "유저플로우" 탭에서 확인.
121
+ - → **[게이트] 사용자 확인.** OK면 6단계.
122
+
123
+ ## 6. 정책정의서
124
+ *(유저플로우 후)*
125
+ - [[2t-decencia-channel-policy-v2]]의 3단계: **수확**(유저플로우·로직 플로우의 분기에서 "정해진 게 없는" 질문 발굴) → **확정**(질문마다 선택지 2~4개를 사용자에게 제시해 결정받기 — 임의 결정 금지) → **명문화**(판정 가능한 문장).
126
+ - `ch policies create --id POL-001 --name "<정책명>" --category <영역> --file ./policy.md --related-specs <ids>`로 업로드.
127
+ - → **[게이트] 사용자 확인.** OK면 7단계.
128
+
129
+ ## 7. 화면설계서 — 화면 생성·연결
130
+ *(정책정의서 후에만. 레거시 프로젝트는 건너뛴다 — §0-1)*
116
131
 
117
132
  기능들을 **화면에 배치**한다. 화면은 사용자가 실제로 마주하는 단위다.
118
133
  화면마다 적을 내용(필수 기재항목 6종·디스크립션 작성규칙·예외상태 4종)은 [[2t-decencia-channel-screen-v2]]를 따른다.
@@ -158,7 +173,7 @@ ch specs screen-refs PROJ-002 --screens SCR-PROJECTS,SCR-PROJECT-DETAIL # 화
158
173
 
159
174
  6. 검증: `ch specs get PROJ-001 --json`의 `ui.screenRefs`와 `ch screens get SCR-PROJECTS --json`의 `relatedSpecIds`가 **양쪽 다** 채워졌는지 본다.
160
175
 
161
- 7. → **[게이트] 사용자 확인.** OK면 6단계.
176
+ 7. → **[게이트] 사용자 확인.** OK면 8단계.
162
177
 
163
178
  ### 🚫 1 spec = 1 화면으로 뽑지 마라
164
179
  그러면 화면이 route의 복사본이 된다. 화면 모델을 만든 이유가 사라진다.
@@ -192,9 +207,9 @@ ch specs screen-refs PROJ-002 --screens SCR-PROJECTS,SCR-PROJECT-DETAIL # 화
192
207
  ### 화면의 단위는 사용자가 이동하는 URL이다
193
208
  탭·모달·바텀시트는 별도 화면이 아니다. 그 화면의 `states`·`entryPoints`로 적는다.
194
209
 
195
- ## 6. SQA 시트
196
- *(화면 연결 후에만)*
197
- - `2t-decencia-channel-sqa-v2`로 SQA 작성: **A축**(명세별 기능 TC — 영역별 번들에서 도출) + **B축**(비기능 표준 40).
210
+ ## 8. 검증기준서 (SQA)
211
+ *(화면 연결 후에만 — 작성 순서 마지막)*
212
+ - `2t-decencia-channel-sqa-v2`로 작성: **A축**(명세별 기능 TC — Story당 4겹: 해피패스/경계·예외/권한/상태반영) + **B축**(비기능 표준 40) + **시나리오**(§4.6 — ⑤단계에서 유저플로우 기반 5~10개, Sprint 완료조건으로 할당).
198
213
 
199
214
  ### 디자인 핸드오프로 이어가기 (안내만)
200
215
  화면이 다 짜였으면 **디자인 핸드오프**로 넘어갈 수 있다. 디자이너가 웹 화면 탭 **[통합 핸드오프 zip 받기]** 또는 `ch handoff export --dir <폴더>`로 화면 기획 묶음을 받아 Claude Design에 넣는다. 절차는 `docs/design-handoff-sop.md`. 읽기전용 export라 이 스킬이 대신 실행하지 않는다 — 화면이 막 만들어진 이 지점에서 **사용자에게 안내만** 한다. (명령 상세는 [[2t-decencia-channel-cli-v2]] handoff 명령.)
@@ -9,7 +9,7 @@ description: |
9
9
  (1) 화면(screens) 문서를 작성·수정할 때,
10
10
  (2) 화면의 표시 데이터·액션·입력 검증·예외상태를 기재할 때,
11
11
  (3) 웹 "화면" 탭의 IA 트리·화면 상세에 올릴 내용을 쓸 때.
12
- version: 1.31.0
12
+ version: 1.31.1
13
13
  ---
14
14
 
15
15
  <!-- ch-version-gate -->
@@ -33,6 +33,8 @@ ch check
33
33
 
34
34
  역할 분담: 흐름(시나리오)은 spec([[2t-decencia-channel-spec-v2]] §7), 여정 갈림길은 유저플로우([[2t-decencia-channel-userflow-v2]]), 횡단 정책은 정책정의서([[2t-decencia-channel-policy-v2]]). 화면설계서는 **그 화면 안에서 보이는 것·눌리는 것**만 적는다.
35
35
 
36
+ > **작성 순서상 ④다** — ①기능명세 → ②유저플로우 → ③정책정의서가 끝난 뒤에 화면을 만든다. **spec보다 화면을 먼저 만들지 않는다.** 화면을 만들면서 `ch specs screen-refs <specId> --screens <ids>`로 기존 spec들과 연결하고, 그다음 ⑤검증기준서로 넘어간다.
37
+
36
38
  ## 1. 필수 기재항목
37
39
 
38
40
  | 항목 | 내용 |
@@ -12,7 +12,7 @@ description: |
12
12
  (3) 스토리문장·사전 조건·로직 플로우·비즈니스 규칙을 작성할 때,
13
13
  (4) Story 규모를 Story Point(`--points`)로 매길 때,
14
14
  (5) 신규 spec ID를 `AUTH-001` 같은 JIRA 스타일로 부여할 때 (`ch specs create --id`).
15
- version: 1.31.0
15
+ version: 1.31.1
16
16
  ---
17
17
 
18
18
  <!-- ch-version-gate -->
@@ -34,6 +34,9 @@ ch check
34
34
 
35
35
  CLI 명령은 [[2t-decencia-channel-cli-v2]], DB 테이블 작성은 [[2t-decencia-channel-db-schema-v2]] 참조.
36
36
 
37
+ > **기획 문서 작성 순서**: ①기능명세(이 문서) → ②유저플로우 → ③정책정의서 → ④화면설계서 → ⑤검증기준서.
38
+ > **화면을 먼저 만들지 않는다** — spec 작성 시점에 화면은 없는 게 정상이고, ④에서 화면을 만든 뒤 `ch specs screen-refs`로 연결한다.
39
+
37
40
  ---
38
41
 
39
42
  ## 0. 두 가지 모드
@@ -320,8 +323,8 @@ Story가 무엇인지 **As a / I want / So that** 형식의 줄글로 적는다.
320
323
  화면 정의의 SSOT는 **screens 리소스**다 (route·목적·권한·figmaNodeId·file·상태). spec은 `screenRefs`로 링크만 건다.
321
324
 
322
325
  - **화면과 spec은 N:1이다.** 한 화면에 여러 spec이 붙는 것이 정상이다. spec 수만큼 화면을 만들지 마라.
323
- - 붙일 화면이 없으면 `ch screens create`로 **먼저 화면을 만들고** ID를 넣는다.
324
- - 화면이 없는 기능(Cron·배치·외부 연동)은 화면 연결을 비워둔다.
326
+ - **spec 작성 시점에는 화면 연결을 비워둔다.** 화면설계서는 작성 순서상 기능명세·유저플로우·정책정의서 뒤에 만든다([[2t-decencia-channel-screen-v2]]). 화면이 생기면 `ch specs screen-refs`로 연결한다.
327
+ - 화면이 없는 기능(Cron·배치·외부 연동)은 그 뒤에도 화면 연결을 비워둔다.
325
328
 
326
329
  **`screenRefs`는 서버 관리 필드다.** 규칙 두 개:
327
330
 
@@ -409,7 +412,7 @@ ch specs get <specId> --json | jq '.logic' # 3) 검증
409
412
  6. 스토리문장(§5)·사전 조건(§6) 작성
410
413
  7. `logic.json` 작성 — 로직 플로우 시나리오(실패·차단 분기 포함, §7), businessRules(§8)
411
414
  8. 필요한 테이블 확인 → 없으면 `ch db-tables create` 먼저 (§10)
412
- 9. 붙을 화면 확인`ch screens list --json`. 없으면 `ch screens create` 먼저 (§9)
415
+ 9. **화면 연결은 여기서 하지 않는다** 화면설계서 단계(작성 순서 ④)에서 화면을 만든 뒤 `ch specs screen-refs`로 연결한다 (§9)
413
416
  10. 생성:
414
417
 
415
418
  ```bash
@@ -419,12 +422,11 @@ ch specs create --id AUTH-001 --name "로그인" \
419
422
  --story "회원은 이메일과 비밀번호로 로그인해서, 재인증 없이 자신의 프로젝트에 바로 접근하고 싶다." \
420
423
  --preconditions ./preconditions.md \
421
424
  --logic ./logic.json \
422
- --db-tables tbl_users,tbl_sessions \
423
- --ui ./ui.json # {"screenRefs":["SCR-LOGIN"]} — 생성 때만
425
+ --db-tables tbl_users,tbl_sessions
424
426
  ```
425
427
 
426
428
  11. `ch specs get <id> --json`으로 결과 검증
427
- 12. SQA 항목은 [[2t-decencia-channel-sqa-v2]]에 따라 별도 등록
429
+ 12. 이후 문서는 작성 순서대로: 유저플로우(②) → 정책정의서(③) → 화면설계서(④, 이때 화면 연결) → 검증기준서(⑤, [[2t-decencia-channel-sqa-v2]])
428
430
  13. 개발 착수 후 진행 일지는 [[2t-decencia-channel-work-status-v2]]
429
431
 
430
432
  ---
@@ -7,7 +7,7 @@ description: |
7
7
  (1) sprint를 구성할 때,
8
8
  (2) Σ spec.points 기반 sprint 용량 산정이 필요할 때,
9
9
  (3) Epic·도메인·의존성을 함께 고려해 spec을 sprint에 배분할 때.
10
- version: 1.31.0
10
+ version: 1.31.1
11
11
  ---
12
12
 
13
13
  <!-- ch-version-gate -->
@@ -2,7 +2,7 @@
2
2
  name: 2t-decencia-channel-sprint-runner
3
3
  description: 특정 Sprint를 끝까지 실행(run)하는 오케스트레이터 스킬. Sprint의 spec을 시드로 이슈 목록을 분해·발행(github-issue)하고, GitHub milestone에 묶인 이슈를 상태별로 분류해 issue-coder(병렬)·pr-merger(직렬)로 전진시킨 뒤, 사람확인이 필요한 곳에서 멈춘다. 사람이 확인·체크 후 재호출하면 멱등하게 이어간다(반복 루프). "스프린트 돌려줘"·"sprint N 실행"·"이 스프린트 개발 진행해줘" 류 요청 시.
4
4
  allowed-tools: Skill Agent Read Bash(ch:*) Bash(gh:*) Bash(git:*)
5
- version: 1.31.0
5
+ version: 1.31.1
6
6
  ---
7
7
 
8
8
  <!-- ch-version-gate -->
@@ -12,7 +12,7 @@ description: |
12
12
  (4) 보안/성능/접근성/호환성 비기능 TC를 시트에 채워야 할 때,
13
13
  (5) 명세 영역별 완성형 TC 번들(퍼블리싱/프론트/백엔드 디센시아 운영 관점 포함)을 가져다 쓸 때,
14
14
  (6) Sprint 종료 전 spec별 TC 통과·시나리오 통과 여부를 점검할 때.
15
- version: 1.31.0
15
+ version: 1.31.1
16
16
  ---
17
17
 
18
18
  <!-- ch-version-gate -->
@@ -32,6 +32,8 @@ ch check
32
32
 
33
33
  # SQA(검증기준서) — TC 검증 + 시나리오 검증
34
34
 
35
+ **작성 순서상 ⑤(마지막)다** — ①기능명세·②유저플로우·③정책정의서·④화면설계서가 갖춰진 뒤에 TC(spec에서)·시나리오(유저플로우에서)를 도출한다.
36
+
35
37
  ## 0. Read-before-Write
36
38
 
37
39
  시트 항목(item) 단위 CRUD는 이제 CLI로 모두 지원된다(§3.5). 항상 `ch sqa get <sheetId> --json`으로 현재 항목 목록·id를 먼저 받고 수정한다. 항목 수정/삭제/순서변경은 `id`를 키로 지정하므로 최신 id 확보가 선행되어야 한다.
@@ -8,7 +8,7 @@ description: |
8
8
  (1) 유저플로우(사용자 여정 분기도)를 새로 그리거나 수정할 때,
9
9
  (2) PRD·Epic-Story 목록에서 플로우로 그릴 대상을 고를 때,
10
10
  (3) 웹 "유저플로우" 탭에 올릴 Mermaid 코드를 작성할 때.
11
- version: 1.31.0
11
+ version: 1.31.1
12
12
  ---
13
13
 
14
14
  <!-- ch-version-gate -->
@@ -30,6 +30,7 @@ ch check
30
30
 
31
31
  유저플로우는 **분기가 있는 사용자 여정**을 Mermaid로 그린 문서다. 웹 "유저플로우" 탭에 올린다.
32
32
  역할 분담: PRD는 무엇을(기능), spec은 어떻게(흐름 상세 — [[2t-decencia-channel-spec-v2]] §7), 유저플로우는 **여정의 갈림길**을 보여준다.
33
+ **작성 순서상 ②다** — ①기능명세 다음에 그리고, ③정책정의서·④화면설계서·⑤검증기준서가 뒤따른다.
33
34
 
34
35
  ## 0. 원칙
35
36
 
@@ -8,7 +8,7 @@ description: |
8
8
  (2) "작업 현황 적어줘", "workStatus 갱신해줘" 요청 시,
9
9
  (3) Sprint 종료 회고나 인수인계용으로 spec별 진행 상태를 정리할 때,
10
10
  (4) `ch specs update --work-status` 또는 웹 "작업 현황" 탭에서 갱신할 때.
11
- version: 1.31.0
11
+ version: 1.31.1
12
12
  ---
13
13
 
14
14
  <!-- ch-version-gate -->