@decencia/ch-cli 1.23.0 → 1.24.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.
- package/agent/2t-decencia-channel-issue-coder.md +1 -1
- package/agent/2t-decencia-channel-pr-merger.md +1 -1
- package/agent/2t-decencia-channel-terraformer.md +1 -1
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +8 -0
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/requests.d.ts +25 -0
- package/dist/commands/requests.d.ts.map +1 -0
- package/dist/commands/requests.js +369 -0
- package/dist/commands/requests.js.map +1 -0
- package/dist/commands/sprints.d.ts.map +1 -1
- package/dist/commands/sprints.js +48 -0
- package/dist/commands/sprints.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/skill/2t-decencia-channel-change-manager/SKILL.md +2 -1
- package/skill/2t-decencia-channel-change-propagation-v2/SKILL.md +1 -1
- package/skill/2t-decencia-channel-cli-v2/SKILL.md +43 -1
- package/skill/2t-decencia-channel-db-schema-v2/SKILL.md +1 -1
- package/skill/2t-decencia-channel-github-issue/SKILL.md +1 -1
- package/skill/2t-decencia-channel-orchestrator/SKILL.md +2 -1
- package/skill/2t-decencia-channel-prd-v2/SKILL.md +1 -1
- package/skill/2t-decencia-channel-project-bootstrap/SKILL.md +1 -1
- package/skill/2t-decencia-channel-spec-v2/SKILL.md +1 -1
- package/skill/2t-decencia-channel-sprint-builder-v2/SKILL.md +14 -2
- package/skill/2t-decencia-channel-sprint-runner/SKILL.md +36 -2
- package/skill/2t-decencia-channel-sqa-v2/SKILL.md +1 -1
- package/skill/2t-decencia-channel-work-status-v2/SKILL.md +1 -1
|
@@ -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.
|
|
6
|
+
version: 1.24.0
|
|
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.
|
|
6
|
+
version: 1.24.0
|
|
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.
|
|
6
|
+
version: 1.24.0
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
## 역할
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0EpC;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0EpC;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsI5D"}
|
package/dist/commands/backup.js
CHANGED
|
@@ -190,6 +190,14 @@ function registerBackupCommand(program) {
|
|
|
190
190
|
else {
|
|
191
191
|
(0, output_1.printSuccess)(`가져오기 완료 — ${parts.join(', ')}`);
|
|
192
192
|
}
|
|
193
|
+
// 요청사항 seq 충돌(같은 번호 중복)은 복원을 막지 않지만 별도로 경고한다.
|
|
194
|
+
const seqConflicts = Array.isArray(data?.seqConflicts) ? data.seqConflicts : [];
|
|
195
|
+
if (seqConflicts.length > 0) {
|
|
196
|
+
(0, output_1.printWarning)(`요청사항 seq 충돌 ${seqConflicts.length}건 감지 — 복원은 seq를 재발급하지 않습니다. 중복 번호를 확인하세요:`);
|
|
197
|
+
for (const c of seqConflicts) {
|
|
198
|
+
(0, output_1.printWarning)(` · seq ${c.seq} ← ${c.ids.join(', ')}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
193
201
|
}
|
|
194
202
|
catch (error) {
|
|
195
203
|
if (error?.message && !error?.response)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6EA,
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* 첨부 허용 확장자 — 서버(requests.constants isAllowedRequestMime: `image/*` |
|
|
4
|
+
* `video/mp4`)의 클라이언트측 사전 게이트다. 서버가 최종 SSOT지만, 허용 외 파일을
|
|
5
|
+
* 업로드 스트림에 태우기 전에 여기서 먼저 거부해 헛수고(부분 전송·400)를 막는다.
|
|
6
|
+
* 확장자 기준이라 서버가 받아줄 희귀 이미지 타입을 놓칠 수 있으나, 흔한 이미지와
|
|
7
|
+
* mp4는 모두 포함한다.
|
|
8
|
+
*/
|
|
9
|
+
export declare const ALLOWED_ATTACH_EXTENSIONS: ReadonlySet<string>;
|
|
10
|
+
/** 첨부 경로의 확장자가 허용 목록(이미지·gif·mp4)에 드는지. */
|
|
11
|
+
export declare function isAllowedAttachFile(filePath: string): boolean;
|
|
12
|
+
/** `a.png, b.mp4` → ['a.png', 'b.mp4'] (공백 trim·빈 항목 제거). */
|
|
13
|
+
export declare function parseAttachList(attach: string): string[];
|
|
14
|
+
/**
|
|
15
|
+
* 표시 번호 REQ-###(seq 3자리 0패딩). 서버가 얹어주는 displayNumber 를 우선 쓰고,
|
|
16
|
+
* 없으면 seq 로 계산한다(둘 다 없으면 물음표 표시).
|
|
17
|
+
*/
|
|
18
|
+
export declare function requestDisplayNumber(req: {
|
|
19
|
+
displayNumber?: unknown;
|
|
20
|
+
seq?: unknown;
|
|
21
|
+
}): string;
|
|
22
|
+
/** 목록 한 줄을 사람 표시용 압축 행으로 — 번호(REQ-###)를 맨 앞에 둔다. */
|
|
23
|
+
export declare function toRequestRow(r: any): Record<string, unknown>;
|
|
24
|
+
export declare function registerRequestsCommand(program: Command): void;
|
|
25
|
+
//# sourceMappingURL=requests.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requests.d.ts","sourceRoot":"","sources":["../../src/commands/requests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAAE,WAAW,CAAC,MAAM,CAqBxD,CAAC;AAEH,2CAA2C;AAC3C,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG7D;AAED,6DAA6D;AAC7D,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAKxD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE;IACxC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,GAAG,MAAM,CAQT;AAED,oDAAoD;AACpD,wBAAgB,YAAY,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAS5D;AAmCD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+P9D"}
|
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.ALLOWED_ATTACH_EXTENSIONS = void 0;
|
|
40
|
+
exports.isAllowedAttachFile = isAllowedAttachFile;
|
|
41
|
+
exports.parseAttachList = parseAttachList;
|
|
42
|
+
exports.requestDisplayNumber = requestDisplayNumber;
|
|
43
|
+
exports.toRequestRow = toRequestRow;
|
|
44
|
+
exports.registerRequestsCommand = registerRequestsCommand;
|
|
45
|
+
const fs = __importStar(require("fs"));
|
|
46
|
+
const path = __importStar(require("path"));
|
|
47
|
+
const form_data_1 = __importDefault(require("form-data"));
|
|
48
|
+
const client_1 = require("../client");
|
|
49
|
+
const output_1 = require("../output");
|
|
50
|
+
const utils_1 = require("../utils");
|
|
51
|
+
// ── 순수 헬퍼 (단위 테스트 대상) ──────────────────────────────────────────
|
|
52
|
+
/**
|
|
53
|
+
* 첨부 허용 확장자 — 서버(requests.constants isAllowedRequestMime: `image/*` |
|
|
54
|
+
* `video/mp4`)의 클라이언트측 사전 게이트다. 서버가 최종 SSOT지만, 허용 외 파일을
|
|
55
|
+
* 업로드 스트림에 태우기 전에 여기서 먼저 거부해 헛수고(부분 전송·400)를 막는다.
|
|
56
|
+
* 확장자 기준이라 서버가 받아줄 희귀 이미지 타입을 놓칠 수 있으나, 흔한 이미지와
|
|
57
|
+
* mp4는 모두 포함한다.
|
|
58
|
+
*/
|
|
59
|
+
exports.ALLOWED_ATTACH_EXTENSIONS = new Set([
|
|
60
|
+
// 이미지 (image/*)
|
|
61
|
+
'.png',
|
|
62
|
+
'.jpg',
|
|
63
|
+
'.jpeg',
|
|
64
|
+
'.jfif',
|
|
65
|
+
'.jpe',
|
|
66
|
+
'.gif',
|
|
67
|
+
'.webp',
|
|
68
|
+
'.bmp',
|
|
69
|
+
'.svg',
|
|
70
|
+
'.svgz',
|
|
71
|
+
'.tif',
|
|
72
|
+
'.tiff',
|
|
73
|
+
'.ico',
|
|
74
|
+
'.heic',
|
|
75
|
+
'.heif',
|
|
76
|
+
'.avif',
|
|
77
|
+
'.apng',
|
|
78
|
+
// 비디오 (video/mp4)
|
|
79
|
+
'.mp4',
|
|
80
|
+
]);
|
|
81
|
+
/** 첨부 경로의 확장자가 허용 목록(이미지·gif·mp4)에 드는지. */
|
|
82
|
+
function isAllowedAttachFile(filePath) {
|
|
83
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
84
|
+
return exports.ALLOWED_ATTACH_EXTENSIONS.has(ext);
|
|
85
|
+
}
|
|
86
|
+
/** `a.png, b.mp4` → ['a.png', 'b.mp4'] (공백 trim·빈 항목 제거). */
|
|
87
|
+
function parseAttachList(attach) {
|
|
88
|
+
return attach
|
|
89
|
+
.split(',')
|
|
90
|
+
.map((f) => f.trim())
|
|
91
|
+
.filter((f) => f.length > 0);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 표시 번호 REQ-###(seq 3자리 0패딩). 서버가 얹어주는 displayNumber 를 우선 쓰고,
|
|
95
|
+
* 없으면 seq 로 계산한다(둘 다 없으면 물음표 표시).
|
|
96
|
+
*/
|
|
97
|
+
function requestDisplayNumber(req) {
|
|
98
|
+
if (req && typeof req.displayNumber === 'string' && req.displayNumber) {
|
|
99
|
+
return req.displayNumber;
|
|
100
|
+
}
|
|
101
|
+
if (req && typeof req.seq === 'number' && Number.isFinite(req.seq)) {
|
|
102
|
+
return `REQ-${String(req.seq).padStart(3, '0')}`;
|
|
103
|
+
}
|
|
104
|
+
return 'REQ-???';
|
|
105
|
+
}
|
|
106
|
+
/** 목록 한 줄을 사람 표시용 압축 행으로 — 번호(REQ-###)를 맨 앞에 둔다. */
|
|
107
|
+
function toRequestRow(r) {
|
|
108
|
+
return {
|
|
109
|
+
번호: requestDisplayNumber(r),
|
|
110
|
+
상태: r?.status ?? '',
|
|
111
|
+
라벨: r?.label ?? '',
|
|
112
|
+
증상: r?.symptom ?? '',
|
|
113
|
+
첨부: Array.isArray(r?.images) ? r.images.length : 0,
|
|
114
|
+
ID: r?.id ?? '',
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/** --json/--quiet/--csv(기계·표계열)면 서버 원본 그대로, 그 외엔 REQ-### 사람 표시. */
|
|
118
|
+
function isRawOutput(globalOpts) {
|
|
119
|
+
return !!(globalOpts.json || globalOpts.quiet || globalOpts.csv);
|
|
120
|
+
}
|
|
121
|
+
/** 목록 출력: 기계 모드는 순수 JSON, 사람 모드는 번호 앞세운 표 + 페이지 정보. */
|
|
122
|
+
function outputRequestList(payload, globalOpts) {
|
|
123
|
+
if (isRawOutput(globalOpts)) {
|
|
124
|
+
(0, output_1.formatOutput)(payload, globalOpts);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const rows = Array.isArray(payload)
|
|
128
|
+
? payload
|
|
129
|
+
: Array.isArray(payload?.data)
|
|
130
|
+
? payload.data
|
|
131
|
+
: [];
|
|
132
|
+
const display = rows.map(toRequestRow);
|
|
133
|
+
if (payload && payload.pagination) {
|
|
134
|
+
(0, output_1.formatOutput)({ data: display, pagination: payload.pagination }, globalOpts);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
(0, output_1.formatOutput)(display, globalOpts);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/** 상세 출력: 기계 모드는 순수 JSON, 사람 모드는 REQ-### 를 맨 앞에 얹어 표시. */
|
|
141
|
+
function outputRequestDetail(data, globalOpts) {
|
|
142
|
+
if (isRawOutput(globalOpts)) {
|
|
143
|
+
(0, output_1.formatOutput)(data, globalOpts);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
(0, output_1.formatOutput)({ 번호: requestDisplayNumber(data), ...data }, globalOpts);
|
|
147
|
+
}
|
|
148
|
+
function registerRequestsCommand(program) {
|
|
149
|
+
const requests = program
|
|
150
|
+
.command('requests')
|
|
151
|
+
.description('요청사항 카드 관리 (E18) — ch-api /requests 프록시');
|
|
152
|
+
// ch requests list
|
|
153
|
+
requests
|
|
154
|
+
.command('list')
|
|
155
|
+
.description('요청사항 카드 목록 조회')
|
|
156
|
+
.option('--status <status>', '진행상황 필터 (planned|inProgress|done)')
|
|
157
|
+
.option('--label <label>', '라벨 필터 (bug|designFlaw|minorFix|planChange|newFeature)')
|
|
158
|
+
.option('--search <keyword>', '증상·개발 메모 부분일치 검색')
|
|
159
|
+
.option('--sort <field>', '정렬 필드 (seq|createdAt|status)')
|
|
160
|
+
.option('--desc', '내림차순 정렬')
|
|
161
|
+
.option('--page <number>', '페이지 번호', '1')
|
|
162
|
+
.action(async (options) => {
|
|
163
|
+
const globalOpts = program.opts();
|
|
164
|
+
try {
|
|
165
|
+
const client = (0, client_1.createClient)({ projectId: globalOpts.project });
|
|
166
|
+
const params = {};
|
|
167
|
+
if (options.status)
|
|
168
|
+
params.status = options.status;
|
|
169
|
+
if (options.label)
|
|
170
|
+
params.label = options.label;
|
|
171
|
+
if (options.search)
|
|
172
|
+
params.search = options.search;
|
|
173
|
+
if (options.sort)
|
|
174
|
+
params.sortBy = options.sort;
|
|
175
|
+
if (options.desc)
|
|
176
|
+
params.sortOrder = 'desc';
|
|
177
|
+
params.page = parseInt(options.page, 10);
|
|
178
|
+
const { data } = await client.get('/requests', { params });
|
|
179
|
+
outputRequestList(data, globalOpts);
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
// Error already handled by client interceptor
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
// ch requests get
|
|
186
|
+
requests
|
|
187
|
+
.command('get <requestId>')
|
|
188
|
+
.description('요청사항 카드 상세 조회')
|
|
189
|
+
.action(async (requestId) => {
|
|
190
|
+
const globalOpts = program.opts();
|
|
191
|
+
try {
|
|
192
|
+
const client = (0, client_1.createClient)({ projectId: globalOpts.project });
|
|
193
|
+
const { data } = await client.get(`/requests/${requestId}`);
|
|
194
|
+
outputRequestDetail(data, globalOpts);
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
// Error already handled
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
// ch requests create
|
|
201
|
+
requests
|
|
202
|
+
.command('create')
|
|
203
|
+
.description('요청사항 카드 생성 (multipart, 첨부 다중 업로드)')
|
|
204
|
+
.option('--symptom <text>', '증상(원문) — --file/stdin 대안 가능(CRLF 정제)')
|
|
205
|
+
.option('--file <path>', '증상을 파일에서 읽기 (대용량/멀티라인·CRLF 안전, stdin도 가능)')
|
|
206
|
+
.requiredOption('--label <label>', '분류 라벨 (bug|designFlaw|minorFix|planChange|newFeature)')
|
|
207
|
+
.option('--dev-note <text>', '개발 메모(마크다운)')
|
|
208
|
+
.option('--plan-change-note <text>', '기획 변경 내역(마크다운)')
|
|
209
|
+
.option('--spec-refs <ids>', '해소 spec ID (쉼표 구분)')
|
|
210
|
+
.option('--attach <filePaths>', '첨부파일 경로 (쉼표 구분, 이미지·gif·mp4만 허용)')
|
|
211
|
+
.action(async (options) => {
|
|
212
|
+
const globalOpts = program.opts();
|
|
213
|
+
try {
|
|
214
|
+
if (globalOpts.dryRun) {
|
|
215
|
+
(0, output_1.printInfo)('[DRY-RUN] 요청사항 카드 생성 요청');
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
let symptom;
|
|
219
|
+
try {
|
|
220
|
+
symptom = (0, utils_1.readContentInput)({ file: options.file, content: options.symptom }, '--symptom');
|
|
221
|
+
}
|
|
222
|
+
catch (e) {
|
|
223
|
+
(0, output_1.failInput)(e?.message ?? String(e));
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
if (symptom === undefined || symptom.trim() === '') {
|
|
227
|
+
(0, output_1.failInput)('증상을 --symptom 또는 --file/stdin 으로 지정하세요.');
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
const form = new form_data_1.default();
|
|
231
|
+
form.append('symptom', symptom);
|
|
232
|
+
form.append('label', options.label);
|
|
233
|
+
if (options.devNote !== undefined) {
|
|
234
|
+
form.append('devNote', (0, utils_1.normalizeContent)(options.devNote));
|
|
235
|
+
}
|
|
236
|
+
if (options.planChangeNote !== undefined) {
|
|
237
|
+
form.append('planChangeNote', (0, utils_1.normalizeContent)(options.planChangeNote));
|
|
238
|
+
}
|
|
239
|
+
if (options.specRefs) {
|
|
240
|
+
for (const ref of (0, utils_1.parseCommaSeparated)(options.specRefs)) {
|
|
241
|
+
form.append('specRefs', ref);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
if (options.attach) {
|
|
245
|
+
const filePaths = parseAttachList(options.attach);
|
|
246
|
+
for (const filePath of filePaths) {
|
|
247
|
+
const resolvedPath = path.resolve(filePath);
|
|
248
|
+
if (!fs.existsSync(resolvedPath)) {
|
|
249
|
+
(0, output_1.failInput)(`파일을 찾을 수 없습니다: ${resolvedPath}`);
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
if (!isAllowedAttachFile(resolvedPath)) {
|
|
253
|
+
(0, output_1.failInput)(`허용되지 않는 첨부 형식입니다(이미지·gif·mp4만 허용): ${filePath}`);
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
form.append('files', fs.createReadStream(resolvedPath));
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
const client = (0, client_1.createClient)({ projectId: globalOpts.project });
|
|
260
|
+
const { data } = await client.post('/requests', form, {
|
|
261
|
+
headers: {
|
|
262
|
+
...form.getHeaders(),
|
|
263
|
+
},
|
|
264
|
+
});
|
|
265
|
+
(0, output_1.formatOutput)(data, globalOpts);
|
|
266
|
+
(0, output_1.printSuccess)(`요청사항 카드가 생성되었습니다 (${requestDisplayNumber(data)}).`);
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
// Error already handled
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
// ch requests update
|
|
273
|
+
requests
|
|
274
|
+
.command('update <requestId>')
|
|
275
|
+
.description('요청사항 카드 수정 (진행상황 제외 — status 는 set-status 로)')
|
|
276
|
+
.option('--symptom <text>', '증상(원문) — --file/stdin 대안 가능(CRLF 정제)')
|
|
277
|
+
.option('--file <path>', '증상을 파일에서 읽기 (대용량/멀티라인·CRLF 안전, stdin도 가능)')
|
|
278
|
+
.option('--label <label>', '분류 라벨 (bug|designFlaw|minorFix|planChange|newFeature)')
|
|
279
|
+
.option('--dev-note <text>', '개발 메모(마크다운)')
|
|
280
|
+
.option('--plan-change-note <text>', '기획 변경 내역(마크다운)')
|
|
281
|
+
.option('--spec-refs <ids>', '해소 spec ID (쉼표 구분)')
|
|
282
|
+
.action(async (requestId, options) => {
|
|
283
|
+
const globalOpts = program.opts();
|
|
284
|
+
try {
|
|
285
|
+
if (globalOpts.dryRun) {
|
|
286
|
+
(0, output_1.printInfo)(`[DRY-RUN] 요청사항 카드 "${requestId}" 수정 요청`);
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
let symptom;
|
|
290
|
+
try {
|
|
291
|
+
symptom = (0, utils_1.readContentInput)({ file: options.file, content: options.symptom }, '--symptom');
|
|
292
|
+
}
|
|
293
|
+
catch (e) {
|
|
294
|
+
(0, output_1.failInput)(e?.message ?? String(e));
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
const body = {};
|
|
298
|
+
if (symptom !== undefined)
|
|
299
|
+
body.symptom = symptom;
|
|
300
|
+
if (options.label)
|
|
301
|
+
body.label = options.label;
|
|
302
|
+
if (options.devNote !== undefined) {
|
|
303
|
+
body.devNote = (0, utils_1.normalizeContent)(options.devNote);
|
|
304
|
+
}
|
|
305
|
+
if (options.planChangeNote !== undefined) {
|
|
306
|
+
body.planChangeNote = (0, utils_1.normalizeContent)(options.planChangeNote);
|
|
307
|
+
}
|
|
308
|
+
if (options.specRefs !== undefined) {
|
|
309
|
+
body.specRefs = (0, utils_1.parseCommaSeparated)(options.specRefs);
|
|
310
|
+
}
|
|
311
|
+
if (Object.keys(body).length === 0) {
|
|
312
|
+
(0, output_1.failInput)('수정할 필드를 지정하세요.');
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
const client = (0, client_1.createClient)({ projectId: globalOpts.project });
|
|
316
|
+
// 서버는 { message } 를 돌려준다(전체 카드 아님) — 기계 모드 stdout 계약을
|
|
317
|
+
// 위해 그대로 출력하고, 사람용 확인은 printSuccess 로 준다.
|
|
318
|
+
const { data } = await client.patch(`/requests/${requestId}`, body);
|
|
319
|
+
(0, output_1.formatOutput)(data, globalOpts);
|
|
320
|
+
(0, output_1.printSuccess)('요청사항 카드가 수정되었습니다.');
|
|
321
|
+
}
|
|
322
|
+
catch (error) {
|
|
323
|
+
// Error already handled
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
// ch requests set-status
|
|
327
|
+
requests
|
|
328
|
+
.command('set-status <requestId> <status>')
|
|
329
|
+
.description('진행상황 전이 (planned|inProgress|done) — 유효 전이·completedAt 은 서버가 강제')
|
|
330
|
+
.action(async (requestId, status) => {
|
|
331
|
+
const globalOpts = program.opts();
|
|
332
|
+
try {
|
|
333
|
+
if (globalOpts.dryRun) {
|
|
334
|
+
(0, output_1.printInfo)(`[DRY-RUN] 요청사항 카드 "${requestId}" 진행상황을 "${status}"로 변경 요청`);
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
const client = (0, client_1.createClient)({ projectId: globalOpts.project });
|
|
338
|
+
// 서버는 { message } 를 돌려준다 — update 와 동일하게 그대로 출력.
|
|
339
|
+
const { data } = await client.patch(`/requests/${requestId}/status`, {
|
|
340
|
+
status,
|
|
341
|
+
});
|
|
342
|
+
(0, output_1.formatOutput)(data, globalOpts);
|
|
343
|
+
(0, output_1.printSuccess)(`진행상황이 "${status}"로 변경되었습니다.`);
|
|
344
|
+
}
|
|
345
|
+
catch (error) {
|
|
346
|
+
// Error already handled
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
// ch requests delete
|
|
350
|
+
requests
|
|
351
|
+
.command('delete <requestId>')
|
|
352
|
+
.description('요청사항 카드 삭제 (admin — 첨부·Sprint cascade 정리)')
|
|
353
|
+
.action(async (requestId) => {
|
|
354
|
+
const globalOpts = program.opts();
|
|
355
|
+
try {
|
|
356
|
+
if (globalOpts.dryRun) {
|
|
357
|
+
(0, output_1.printInfo)(`[DRY-RUN] 요청사항 카드 "${requestId}" 삭제 요청`);
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
const client = (0, client_1.createClient)({ projectId: globalOpts.project });
|
|
361
|
+
await client.delete(`/requests/${requestId}`);
|
|
362
|
+
(0, output_1.printSuccess)('요청사항 카드가 삭제되었습니다.');
|
|
363
|
+
}
|
|
364
|
+
catch (error) {
|
|
365
|
+
// Error already handled
|
|
366
|
+
}
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
//# sourceMappingURL=requests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requests.js","sourceRoot":"","sources":["../../src/commands/requests.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sprints.d.ts","sourceRoot":"","sources":["../../src/commands/sprints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"sprints.d.ts","sourceRoot":"","sources":["../../src/commands/sprints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyT7D"}
|
package/dist/commands/sprints.js
CHANGED
|
@@ -61,6 +61,7 @@ function registerSprintsCommand(program) {
|
|
|
61
61
|
.option('--file <path>', '내용을 파일에서 읽기 (대용량/멀티라인·CRLF 안전, stdin도 가능)')
|
|
62
62
|
.option('--status <status>', '상태')
|
|
63
63
|
.option('--specs <specIds>', '연결할 기능명세 ID (쉼표 구분)')
|
|
64
|
+
.option('--requests <requestIds>', '연결할 요청사항 카드 ID (쉼표 구분)')
|
|
64
65
|
.action(async (options) => {
|
|
65
66
|
const globalOpts = program.opts();
|
|
66
67
|
try {
|
|
@@ -88,6 +89,8 @@ function registerSprintsCommand(program) {
|
|
|
88
89
|
body.status = options.status;
|
|
89
90
|
if (options.specs)
|
|
90
91
|
body.relatedSpecs = options.specs.split(',').map((s) => s.trim());
|
|
92
|
+
if (options.requests)
|
|
93
|
+
body.relatedRequests = options.requests.split(',').map((s) => s.trim());
|
|
91
94
|
const { data } = await client.post('/sprints', body);
|
|
92
95
|
(0, output_1.formatOutput)(data, globalOpts);
|
|
93
96
|
(0, output_1.printSuccess)('스프린트가 생성되었습니다.');
|
|
@@ -225,6 +228,51 @@ function registerSprintsCommand(program) {
|
|
|
225
228
|
// Error already handled
|
|
226
229
|
}
|
|
227
230
|
});
|
|
231
|
+
// ch sprints add-requests (add-specs 와 대칭 — E18 요청사항 카드)
|
|
232
|
+
sprints
|
|
233
|
+
.command('add-requests <sprintId> <requestIds>')
|
|
234
|
+
.description('스프린트에 요청사항 카드 연결 (쉼표 구분)')
|
|
235
|
+
.action(async (sprintId, requestIds) => {
|
|
236
|
+
const globalOpts = program.opts();
|
|
237
|
+
try {
|
|
238
|
+
if (globalOpts.dryRun) {
|
|
239
|
+
(0, output_1.printInfo)(`[DRY-RUN] 스프린트 "${sprintId}"에 요청사항 카드 연결 요청`);
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
const client = (0, client_1.createClient)({ projectId: globalOpts.project });
|
|
243
|
+
const ids = requestIds.split(',').map((s) => s.trim());
|
|
244
|
+
const { data } = await client.post(`/sprints/${sprintId}/requests`, {
|
|
245
|
+
requestIds: ids,
|
|
246
|
+
});
|
|
247
|
+
(0, output_1.formatOutput)(data, globalOpts);
|
|
248
|
+
(0, output_1.printSuccess)('요청사항 카드가 스프린트에 연결되었습니다.');
|
|
249
|
+
}
|
|
250
|
+
catch (error) {
|
|
251
|
+
// Error already handled
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
// ch sprints remove-requests (remove-specs 와 대칭)
|
|
255
|
+
sprints
|
|
256
|
+
.command('remove-requests <sprintId> <requestIds>')
|
|
257
|
+
.description('스프린트에서 요청사항 카드 연결 해제 (쉼표 구분)')
|
|
258
|
+
.action(async (sprintId, requestIds) => {
|
|
259
|
+
const globalOpts = program.opts();
|
|
260
|
+
try {
|
|
261
|
+
if (globalOpts.dryRun) {
|
|
262
|
+
(0, output_1.printInfo)(`[DRY-RUN] 스프린트 "${sprintId}" 요청사항 카드 해제 요청`);
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
const client = (0, client_1.createClient)({ projectId: globalOpts.project });
|
|
266
|
+
const ids = requestIds.split(',').map((s) => s.trim());
|
|
267
|
+
await client.delete(`/sprints/${sprintId}/requests`, {
|
|
268
|
+
data: { requestIds: ids },
|
|
269
|
+
});
|
|
270
|
+
(0, output_1.printSuccess)('요청사항 카드 연결이 해제되었습니다.');
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
// Error already handled
|
|
274
|
+
}
|
|
275
|
+
});
|
|
228
276
|
// ch sprints delete
|
|
229
277
|
sprints
|
|
230
278
|
.command('delete <sprintId>')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sprints.js","sourceRoot":"","sources":["../../src/commands/sprints.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sprints.js","sourceRoot":"","sources":["../../src/commands/sprints.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -42,6 +42,7 @@ const init_1 = require("./commands/init");
|
|
|
42
42
|
const projects_1 = require("./commands/projects");
|
|
43
43
|
const specs_1 = require("./commands/specs");
|
|
44
44
|
const sprints_1 = require("./commands/sprints");
|
|
45
|
+
const requests_1 = require("./commands/requests");
|
|
45
46
|
const qna_1 = require("./commands/qna");
|
|
46
47
|
const sqa_1 = require("./commands/sqa");
|
|
47
48
|
const archives_1 = require("./commands/archives");
|
|
@@ -99,6 +100,7 @@ program.hook('preAction', (thisCommand) => {
|
|
|
99
100
|
(0, projects_1.registerProjectsCommand)(program);
|
|
100
101
|
(0, specs_1.registerSpecsCommand)(program);
|
|
101
102
|
(0, sprints_1.registerSprintsCommand)(program);
|
|
103
|
+
(0, requests_1.registerRequestsCommand)(program);
|
|
102
104
|
(0, qna_1.registerQnaCommand)(program);
|
|
103
105
|
(0, sqa_1.registerSqaCommand)(program);
|
|
104
106
|
(0, archives_1.registerArchivesCommand)(program);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -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.
|
|
5
|
+
version: 1.24.0
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<!-- ch-version-gate -->
|
|
@@ -35,6 +35,7 @@ ch check
|
|
|
35
35
|
|
|
36
36
|
## Use when
|
|
37
37
|
- "이 기능 바꿀 건데 영향 가는 곳 다 고쳐줘", "기획 수정", "기존 프로젝트에 이거 추가해줘", 명세·DB·SQA 정합성이 어긋난 의심이 들 때.
|
|
38
|
+
- 요청사항 카드(E18) 중 `planChange`/`newFeature` 라벨이 **기획 전파**를 필요로 할 때 — sprint-runner가 분해한 카드 이슈 본문이 이 경유를 권장한다([[2t-decencia-channel-cli-v2]] requests 절).
|
|
38
39
|
|
|
39
40
|
---
|
|
40
41
|
|
|
@@ -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.
|
|
13
|
+
version: 1.24.0
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
<!-- ch-version-gate -->
|
|
@@ -343,6 +343,47 @@ ch handoff screen <화면id> # 화면 하나의 프롬프트를 stdout으
|
|
|
343
343
|
- 화면 카드에 담기는 것: 이름·route·접근권한 · 목적 · 화면 상태 · 진입/이탈 · 핵심 액션 · 필수 표시 정보 · 요소별 인터랙션. 한 화면에 명세가 여럿이면 `### 출처: <specId>`로 묶는다. 색·폰트·톤·DB 컬럼·구현 경로는 **일부러 뺀다**(디자인 입력에 불필요).
|
|
344
344
|
- **정본 분리**: 이 섹션이 **명령 정본**(에이전트·개발자용)이다. 디자이너용 단계별 절차서(비전공자 온보딩)는 `docs/design-handoff-sop.md`가 정본이다. 절차를 여기서 중복 서술하지 않는다.
|
|
345
345
|
|
|
346
|
+
## requests 명령 (요청사항 카드 — E18)
|
|
347
|
+
|
|
348
|
+
요청사항 카드는 사용자·QA가 올린 **증상 원문**을 담는 리소스다. ch-api `/requests` 프록시다. 원문 변질 방지가 존재 이유라, `symptom`은 요약·의역 없이 그대로 싣는다.
|
|
349
|
+
|
|
350
|
+
```bash
|
|
351
|
+
ch requests list # 표: 번호(REQ-###) | 상태 | 라벨 | 증상 | 첨부 | ID
|
|
352
|
+
ch requests list --status inProgress --label bug # 진행상황·라벨 필터
|
|
353
|
+
ch requests list --search "로그인" # 증상·개발 메모 부분일치
|
|
354
|
+
ch requests get <requestId> # 상세 (--json 이면 순수 JSON)
|
|
355
|
+
|
|
356
|
+
# 생성 (multipart — 첨부 다중). --label 필수. 증상은 --symptom/--file/stdin.
|
|
357
|
+
ch requests create --label bug \
|
|
358
|
+
--symptom "로그인 후 흰 화면" \
|
|
359
|
+
--dev-note "재현: 크롬 로그인 직후" \
|
|
360
|
+
--attach ./shot1.png,./clip.mp4
|
|
361
|
+
ch requests create --label planChange --file ./symptom.md --spec-refs LOGIN-001
|
|
362
|
+
|
|
363
|
+
ch requests update <requestId> --dev-note "..." # 진행상황 제외 수정 (PATCH — 준 필드만)
|
|
364
|
+
ch requests set-status <requestId> inProgress # 진행상황 전이 (planned|inProgress|done)
|
|
365
|
+
ch requests delete <requestId> # admin — 첨부·Sprint 연결 cascade 정리
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
- **라벨**: `bug`(버그) | `designFlaw`(기획적 결함) | `minorFix`(사소한 수정) | `planChange`(기존 기획 변경) | `newFeature`(신기능 추가).
|
|
369
|
+
- **표시 번호** `REQ-###` = `seq` 3자리 0패딩. `seq`는 프로젝트 내 단조 증가·재사용 없음(서버 트랜잭션 발급).
|
|
370
|
+
- **첨부**는 이미지·gif·mp4만 허용. 서버가 최종 검증하고, CLI가 확장자로 먼저 거른다. 메타는 `images[]{fileName, storagePath, url, mimeType, size}` — `url`이 다운로드 URL이다.
|
|
371
|
+
- **증상 입력**: `--symptom "<문자열>"` 인라인, `--file <경로>` 파일, stdin. CRLF는 자동 정제된다.
|
|
372
|
+
- **진행상황(status)은 `update`로 못 바꾼다** — `set-status`로만. 전이는 `planned`→`inProgress`→`done`이고, `done` 전환 시 `completedAt`이 기록되며 reopen 시 초기화된다(서버가 유효 전이 강제).
|
|
373
|
+
- `symptom`은 **원문 그대로** 저장한다. 재현 조건·기술 컨텍스트는 `symptom`이 아니라 `--dev-note`에 적어 원문 변질을 막는다.
|
|
374
|
+
|
|
375
|
+
### Sprint 연결 (`ch sprints ... requests`)
|
|
376
|
+
|
|
377
|
+
카드를 Sprint에 배정·해제한다. spec 연결(`--specs`/`add-specs`)과 대칭이다.
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
ch sprints create --name "Sprint 3" --start 2026-06-01 --end 2026-06-14 --requests <id1>,<id2>
|
|
381
|
+
ch sprints add-requests <sprintId> <id1>,<id2> # 연결 추가 (쉼표 구분)
|
|
382
|
+
ch sprints remove-requests <sprintId> <id1> # 연결 해제 (쉼표 구분)
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
- Sprint에 배정된 카드는 sprint-runner가 **카드당 이슈 1건**으로 분해한다([[2t-decencia-channel-sprint-runner]] §3-1). Sprint 배치 원칙은 [[2t-decencia-channel-sprint-builder-v2]].
|
|
386
|
+
|
|
346
387
|
## 4. 운영 팁
|
|
347
388
|
|
|
348
389
|
- Windows 한글 출력이 비어 보일 때: `ch specs get <id> --json | Out-File spec.json` (PowerShell)
|
|
@@ -361,3 +402,4 @@ ch handoff screen <화면id> # 화면 하나의 프롬프트를 stdout으
|
|
|
361
402
|
- 화면 SSOT는 `screensEnabled=true`인 프로젝트에서만 screens다. 이 플래그가 꺼진(=기존) 프로젝트는 화면 정보의 SSOT가 여전히 `spec.ui.route`다 — screens를 만들어도 그 프로젝트의 화면 정보가 자동으로 옮겨가지 않는다. 옮기려면 `ch screens migrate`.
|
|
362
403
|
- `ch screens migrate`의 `--dry-run`은 **요청을 한 번 보낸다**(`POST /screens/migrate {mode:'plan'}`). 계산도 쓰기도 서버가 한다. "아무 요청도 안 나간다"가 아니라 "아무 문서도 쓰지 않는다"가 보장이다.
|
|
363
404
|
- `--rollback`은 `screensEnabled`만 내린다. 다만 **되돌아갈 route가 없는 명세**(화면에 걸려 있는데 `ui.route`가 빈 명세 — 화면 우선으로 만든 프로젝트가 그렇다)가 하나라도 있으면 서버가 **409로 거절**한다. 화면 모드를 끄면 그 명세의 UI 정보가 화면 탭에도 route에도 없기 때문이다. 정말 내리려면 `--force`.
|
|
405
|
+
- 요청사항 카드의 `symptom`을 요약해 넣지 않는다 — **원문 그대로**다. 진행상황은 `update`가 아니라 `ch requests set-status`로만 바꾼다.
|
|
@@ -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.
|
|
5
|
+
version: 1.24.0
|
|
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.
|
|
5
|
+
version: 1.24.0
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<!-- ch-version-gate -->
|
|
@@ -58,6 +58,7 @@ ch check
|
|
|
58
58
|
- "이 레포 소통채널에 올리고 스프린트도 짜줘" → 2 terraformer(Agent) → 끝나면 `2t-decencia-channel-sprint-builder-v2`(Skill).
|
|
59
59
|
- "로그인에 SNS 추가하고 개발까지" → 3 change-manager(Skill, 전파+이슈 발행) → 발행된 이슈로 5 issue-coder(Agent, 병렬) → PR 나오면 6 pr-merger(Agent, 직렬).
|
|
60
60
|
- "스프린트 N 개발 진행해줘"(한 Sprint 통째) → **7 sprint-runner**(Skill). 4(발행)·5(구현)·6(머지)를 **내부에서 묶어** 돌리고 사람확인에서 멈춘다 → 수동으로 4→5→6 나열하지 말고 7로 보낸다.
|
|
61
|
+
- "사용자·QA 증상(요청사항)을 개발로" → **라우트가 아니다.** 카드는 `ch requests`로 쌓고 Sprint에 `add-requests`로 배정한다([[2t-decencia-channel-cli-v2]]·[[2t-decencia-channel-sprint-builder-v2]]). Sprint 실행 시 **7 sprint-runner**가 카드를 이슈 1건씩으로 분해해 5·6 흐름에 태운다.
|
|
61
62
|
- "화면까지 다 짰고 이제 디자인 넘긴다" → **라우트가 아니다.** 디자이너가 웹 화면 탭 [통합 핸드오프 zip 받기] 또는 `ch handoff export --dir`로 화면 기획 묶음을 받아 Claude Design에 넣는다(절차 `docs/design-handoff-sop.md`, 명령 정본 [[2t-decencia-channel-cli-v2]]). 읽기전용 export라 위임할 대화형 스킬·자율 에이전트가 없다 — 이 단계는 **안내만** 한다.
|
|
62
63
|
- 한 단계의 산출물(projectId·이슈번호·PR번호)을 다음 단계 입력으로 넘긴다.
|
|
63
64
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: 2t-decencia-channel-project-bootstrap
|
|
3
3
|
description: 신규 기획을 사용자와 대화하며 step-by-step으로 소통채널 프로젝트로 만드는 오케스트레이터 스킬. (1)대화로 PRD 완성 → (2)기능명세(spec) 내용 확정 → (3)DB 스키마 → (4)spec 업로드 → (5)화면 구성·연결 → (6)SQA 시트. 각 단계 사용자 승인 게이트, 작성 디테일은 기존 2t-decencia-channel-*-v2 스킬을 적극 재사용. "새 기획 만들어줘"·"프로젝트 처음부터 세팅" 류 요청 시.
|
|
4
4
|
allowed-tools: Bash(ch:*) Bash(git:*) Read Write
|
|
5
|
-
version: 1.
|
|
5
|
+
version: 1.24.0
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<!-- ch-version-gate -->
|
|
@@ -7,7 +7,7 @@ description: |
|
|
|
7
7
|
(1) sprint를 구성할 때,
|
|
8
8
|
(2) Σ spec.points 기반 sprint 용량 산정이 필요할 때,
|
|
9
9
|
(3) Epic·도메인·의존성을 함께 고려해 spec을 sprint에 배분할 때.
|
|
10
|
-
version: 1.
|
|
10
|
+
version: 1.24.0
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
<!-- ch-version-gate -->
|
|
@@ -70,9 +70,21 @@ Sprint 1 (06-01 ~ 06-14, 용량 30 SP)
|
|
|
70
70
|
- "블로커" 키워드 → sprint 보류 후보
|
|
71
71
|
- "완료 임박" → 현 sprint 마무리 후보
|
|
72
72
|
|
|
73
|
-
## 4.
|
|
73
|
+
## 4. 요청사항 카드 배치 (E18)
|
|
74
|
+
|
|
75
|
+
Sprint에는 spec뿐 아니라 **요청사항 카드**도 담는다(`ch sprints add-requests`, [[2t-decencia-channel-cli-v2]]). spec과 카드를 **한 Sprint에 섞어** 배정한다.
|
|
76
|
+
|
|
77
|
+
- **Sprint에 type은 없다.** spec Sprint / 카드 Sprint로 나누지 않는다. 하나의 Sprint가 spec과 카드를 함께 담는다.
|
|
78
|
+
- **카드에는 points가 없다.** 용량 산정(Σ spec.points)은 **spec만** 합산한다. 카드는 용량에 넣지 않는다.
|
|
79
|
+
- **진행률은 개수다.** (완료 spec + 완료 카드) / (전체 spec + 전체 카드)로 단순 계산한다. Story Point 가중이 아니다.
|
|
80
|
+
- **미완료 카드는 이월한다.** Sprint 종료 시 `done`이 아닌 카드는 다음 Sprint로 넘긴다(`ch sprints remove-requests` 후 다음 Sprint에 `add-requests`).
|
|
81
|
+
|
|
82
|
+
카드 하나가 Sprint 실행 중 이슈 1건으로 분해되는 절차는 [[2t-decencia-channel-sprint-runner]] §3-1이다.
|
|
83
|
+
|
|
84
|
+
## 5. 흔한 함정
|
|
74
85
|
|
|
75
86
|
- `points` 미지정 spec이 많으면 산정 부정확 → spec마다 `--points` 부여(피보나치 1/2/3/5/8/13).
|
|
76
87
|
- Sprint에 담은 spec의 `points`를 바꾸면 sprint SP 합이 변동 — sprint 재산정 필요.
|
|
77
88
|
- Story를 Task로 쪼개 합산하지 않는다 — 규모는 spec 단위 `points` 하나다([[2t-decencia-channel-spec-v2]] §3).
|
|
89
|
+
- 요청사항 카드는 용량(Σ spec.points)에 넣지 않는다 — 카드는 points가 없다. 진행률만 개수로 함께 센다.
|
|
78
90
|
- Sprint와 spec.workStatus는 별개. Sprint 진행 상황은 sprint 자체 status로, spec별 메모는 workStatus로.
|
|
@@ -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.
|
|
5
|
+
version: 1.24.0
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<!-- ch-version-gate -->
|
|
@@ -50,6 +50,7 @@ ch check
|
|
|
50
50
|
| Sprint ↔ 이슈 묶음 | **GitHub `milestone`** (sprint 1개 = milestone 1개) |
|
|
51
51
|
| Sprint 통합 브랜치 | **`sprint-<id>`** (원격) — 이 sprint의 모든 이슈 PR이 모이는 base 브랜치. 원격이 정본이고 기본 브랜치로 곧장 머지하지 않는다 |
|
|
52
52
|
| 이슈 ↔ spec | 이슈 본문 `## 관련 명세`의 specid 백링크 (없어도 된다 = 인프라 등 비-spec 작업) |
|
|
53
|
+
| 카드 ↔ 이슈 | **요청사항 카드(E18) 1개 = 이슈 1건** — 제목 `[REQ-###]`, 카드 진행상황(`planned`→`inProgress`→`done`)은 이슈 진척에 맞춰 sprint-runner가 전이 (§3-1·§7-1) |
|
|
53
54
|
| 사람확인 항목 | **소통채널 DB가 정본** — issue-coder가 `ch github checklist set`으로 등록하고, 사람이 웹 실행 탭에서 체크·메모하며, pr-merger가 `ch github checklist get`으로 close를 판단한다 (GitHub 코멘트가 아니다) |
|
|
54
55
|
| 이슈 ↔ spec **status** | 착수는 issue-coder가 `developing`, PR은 issue-coder가 `testing`, completed는 러너가 롤업한다 (그 spec에 백링크된 이슈가 전부 DONE일 때만) |
|
|
55
56
|
|
|
@@ -65,7 +66,9 @@ ch check
|
|
|
65
66
|
|
|
66
67
|
### 1. 이 Sprint의 할 일 목록을 확정한다
|
|
67
68
|
|
|
68
|
-
`ch sprints get <id>`로 이 Sprint에 묶인
|
|
69
|
+
`ch sprints get <id>`로 이 Sprint에 묶인 목록을 가져온다. 이 목록은 두 갈래다. `relatedSpecs`는 기능명세(기획)다. `relatedRequests`는 요청사항 카드(E18)다 — 사용자·QA가 올린 증상 카드다. **둘 다 이 Sprint의 할 일이다.** 카드는 각각 이슈 1건으로 분해한다(§3-1).
|
|
70
|
+
|
|
71
|
+
이건 출발점일 뿐이라 완전하지 않다. spec은 기획이라 인프라 구축 같은 실행 작업이 빠져 있으므로, spec에 없는 실행 작업을 사용자와 짧게 의논해 채운다. 모호하면 추측하지 말고 한 번 물어 확정한다. 결과물은 이 Sprint를 끝낼 완전한 할 일 목록이다(spec + 요청사항 카드 + 실행 작업).
|
|
69
72
|
|
|
70
73
|
### 2. 통합 브랜치를 만든다 (이슈 작업을 시작하기 전에 반드시 한다)
|
|
71
74
|
|
|
@@ -82,6 +85,31 @@ ch check
|
|
|
82
85
|
|
|
83
86
|
아직 없는 할 일만 `2t-decencia-channel-github-issue` 스킬(`Skill`로 호출)로 발행한다. 표준 양식(작업 내용·관련 명세 백링크·완료 조건)을 따르고, 발행 뒤 `gh issue edit <n> --milestone "<m>"`로 milestone에 묶는다. github-issue 스킬은 중복을 막지 않으므로, 무엇을 발행할지(없는 것만)는 이 스킬이 정한다.
|
|
84
87
|
|
|
88
|
+
### 3-1. 요청사항 카드를 이슈로 분해한다 (카드당 이슈 1건)
|
|
89
|
+
|
|
90
|
+
이 Sprint의 `relatedRequests` 카드를 각각 GitHub 이슈 1건으로 만든다. 카드는 이미 증상·첨부·라벨을 갖춘 완성된 입력이라, github-issue 스킬에 맡기지 않고 **이 스킬이 직접 발행한다**(본문 양식이 카드 전용이다).
|
|
91
|
+
|
|
92
|
+
**카드를 읽는다.** `ch sprints get <id> --json`으로 `relatedRequests`의 카드 ID를 얻고, 카드마다 `ch requests get <cardId> --json`으로 원문을 받는다.
|
|
93
|
+
|
|
94
|
+
**멱등하게 한다.** 다시 불려도 카드를 중복 발행하지 않는다. 발행 전에 `gh issue list --milestone "<m>" --state all`에서 제목의 `[REQ-###]`나 본문의 카드 백링크로 이미 있는지 대조한다. 있으면 건너뛴다.
|
|
95
|
+
|
|
96
|
+
**제목:** `[REQ-###] <증상 요약>`. `REQ-###`는 카드의 `displayNumber`(없으면 `seq`를 3자리 0패딩)다. 증상 요약은 제목용 한 줄만 짧게 줄인다 — **본문의 원문은 절대 요약하지 않는다.**
|
|
97
|
+
|
|
98
|
+
**유형(라벨) 매핑:** `bug`→`bug`, `minorFix`·`designFlaw`→`fix`, `planChange`·`newFeature`→`feat`. 이슈에 이 라벨을 단다.
|
|
99
|
+
|
|
100
|
+
**본문 구성(마크다운, 아래 순서):**
|
|
101
|
+
- 증상 원문(`symptom`)을 **인용 블록(`>`)으로 그대로** 싣는다. 요약·의역 금지 — 언어 변질 방지가 이 카드의 존재 이유다.
|
|
102
|
+
- 첨부(`images[]`)를 다운로드 URL(`url`)로 임베드한다. 이미지(`mimeType`이 `image/*`)는 마크다운 이미지 ``, mp4(`video/mp4`)는 링크 `[fileName](url)`로 넣는다.
|
|
103
|
+
- 개발 메모(`devNote`)가 있으면 그대로 싣는다.
|
|
104
|
+
- 카드 백링크를 남긴다(카드 ID·`REQ-###`·`ch requests get <cardId>`). 완료 시 어느 카드를 done으로 바꿀지 추적하는 근거다.
|
|
105
|
+
- 라벨이 `planChange`/`newFeature`면 **"기획 전파가 필요하면 change-manager를 먼저 경유하라"** 는 안내 한 줄을 본문에 넣는다.
|
|
106
|
+
|
|
107
|
+
**발행한다.** 본문을 파일로 만들어 CRLF를 정제하고(`tr -d '\r'`) `gh issue create --title "[REQ-###] ..." --body-file <file> --label <type>`로 낸다. 발행 뒤 `gh issue edit <n> --milestone "<m>"`로 milestone에 묶는다.
|
|
108
|
+
|
|
109
|
+
**카드 진행상황을 옮긴다.** 이슈로 냈으면 카드를 `ch requests set-status <cardId> inProgress`로 바꾼다. 상태머신상 `planned`→`done` 직행은 없다 — 반드시 `inProgress`를 거친다(완료 전이는 §7-1).
|
|
110
|
+
|
|
111
|
+
발행된 카드 이슈는 spec 이슈와 똑같이 §4~5 흐름을 탄다(issue-coder 병렬 → pr-merger 직렬).
|
|
112
|
+
|
|
85
113
|
### 4. 각 이슈가 지금 어느 단계인지 분류한다
|
|
86
114
|
|
|
87
115
|
`gh issue list --milestone "<m>" --state all`로 이슈를 모으고, 각 이슈의 연결 PR과 CI를 보고 아래 표로 상태를 판정한다. 이 모드에서 모든 이슈 PR의 base는 기본 브랜치가 아니라 `sprint-<id>`이므로, CI·mergeable·머지 대상이 모두 이 브랜치 기준이다.
|
|
@@ -119,6 +147,12 @@ green인 PR은 pr-merger에 하나씩 직렬로 위임한다. 한 번 머지하
|
|
|
119
147
|
|
|
120
148
|
이슈들의 `## 관련 명세` 백링크를 모아 spec마다 걸린 이슈들을 역으로 정리한다. 어떤 spec에 백링크된 이슈가 전부 DONE(close)이면 `ch specs set-status <specid> completed`로 올린다. 하나라도 안 끝났으면(TODO·IN_PR·AWAIT_HUMAN·FEEDBACK) 올리지 않고 둔다. 이미 completed면 건너뛰고, 백링크된 이슈가 없는 spec은 대상이 아니다.
|
|
121
149
|
|
|
150
|
+
### 7-1. 완료된 요청사항 카드를 done으로 올린다
|
|
151
|
+
|
|
152
|
+
카드에서 분해한 이슈가 DONE(close)이고 **사람 확인까지 끝났으면** 그 카드를 `ch requests set-status <cardId> done`으로 올린다. 서버가 `completedAt`을 기록한다. 이슈가 아직 안 끝났거나 사람 확인 전이면 올리지 않고 `inProgress`로 둔다.
|
|
153
|
+
|
|
154
|
+
spec의 completed 롤업(§7)과 다르다. 카드는 카드 1개 = 이슈 1건이라, 그 이슈의 완료·사람 확인만으로 done을 판정한다.
|
|
155
|
+
|
|
122
156
|
### 8. 더 진행할 것이 없으면 멈추고 보고한다
|
|
123
157
|
|
|
124
158
|
더 전진시킬 것이 없으면 멈춘다. 보고하기 전에 메인 폴더를 `git fetch origin sprint-<id>` 후 `git checkout sprint-<id> && git pull --ff-only`로 최신 통합 상태에 맞춰(메인이 더티라 막히면 덮지 말고 멈춰 알린다), 사람이 보는 상태가 그때까지 머지된 전체와 일치하게 한다. 그다음 현황을 요약 보고한다. 완료(DONE) 개수, 사람 확인 대기(AWAIT_HUMAN) 이슈와 각각의 링크·미체크 항목, 막힌(블로커) 이슈와 그 이유(어느 이슈·PR인지)를 적는다. 그리고 사용자가 확인·피드백 후 같은 Sprint로 다시 부르면 이어서 진행한다고 안내한다.
|