@dusky-bluehour/agent-service 0.6.4 → 0.6.5

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/README.md CHANGED
@@ -1,255 +1,47 @@
1
1
  # tri-agent-manager
2
2
 
3
3
  ```bash
4
- pnpm dlx --package=@dusky-bluehour/agent-service tri-agent-manager --interactive
4
+ pnpm dlx --package=@dusky-bluehour/agent-service@latest tri-agent-manager --interactive
5
5
  ```
6
6
 
7
- Claude Code, Antigravity, Codex에서 공통으로 사용하실 수 있는 서비스 운영형 스킬/워크플로우 패키지입니다.
7
+ `@dusky-bluehour/agent-service` 패키지로 Claude Code / Antigravity / Codex 운영팩을 설치/업데이트하는 CLI입니다.
8
8
 
9
- ## 목적
10
-
11
- - 기획(PRD) → 설계 → 개발 → 코드리뷰/보안 → 배포/운영까지 동일한 품질 기준으로 실행하실 수 있습니다.
12
- - 반복 작업(UI 컴포넌트화, Hook 분리, 최적화)을 역할/명령 단위로 고정해 일관성을 높입니다.
13
- - 툴이 달라도 동일한 계약(명령 ID, 품질 게이트, 워크플로우)으로 결과를 맞출 수 있습니다.
14
-
15
- ## 용어 설명
16
-
17
- | 용어 | 의미 |
18
- | --- | --- |
19
- | Skill | 작업 방식/규칙을 담은 실행 단위입니다. 툴마다 포맷은 다르지만 역할은 같습니다. |
20
- | Workflow | 단계형 실행 시나리오입니다. 각 단계는 진입/종료 조건을 가집니다. |
21
- | Command Contract | 입력/실행/품질게이트/산출물을 고정한 명령 계약입니다. |
22
- | Agent / Subagent | 역할별 실행 주체입니다. 리드가 전문 역할에 위임할 수 있습니다. |
23
- | Artifact (Antigravity) | 단계 입출력 계약 문서입니다. 스키마 검증 통과 후 다음 단계로 진행합니다. |
24
- | PRD→구현 파이프라인 | PRD는 대화형으로 작성하고, 구현은 최종 수동 세팅 전까지 순차 자동 실행합니다. |
25
-
26
- ## 핵심 기능
27
-
28
- | 기능 | 설명 | 관련 워크플로우 |
29
- | --- | --- | --- |
30
- | 표준 E2E 딜리버리 | 기획부터 배포 준비까지 표준 단계를 실행합니다. | `WF-SVC-001` |
31
- | 코드리뷰/개선 루프 | 리뷰 지적 → 수정 → 재검증 루프를 수행합니다. | `WF-SVC-003` / `WF-SVC-002` |
32
- | 보안 하드닝 | 위협 모델링 + 취약점 감사 + 재검증을 수행합니다. | `WF-SVC-004` / `WF-SVC-003` |
33
- | 반복 프론트 개선 | 컴포넌트화, Hook 분리, 성능 최적화를 진행합니다. | `WF-SVC-006` / `WF-SVC-002` |
34
- | 장애 대응 | 복구, RCA, 재발 방지를 수행합니다. | `WF-SVC-007` / `WF-SVC-005` |
35
- | PRD→구현 자동 파이프라인 | PRD 대화형 작성 후 구현을 자동 순차 실행합니다. | `WF-PRD-IMPLEMENT-E2E` |
36
-
37
- ## 목록 (토글)
38
-
39
- <details>
40
- <summary><strong>Claude Code - Skills</strong></summary>
41
-
42
- | Skill | 목적 |
43
- | --- | --- |
44
- | `service-lifecycle-orchestration` | 기획~배포 전체 수명주기를 실행합니다. |
45
- | `code-review-and-improvement` | 리뷰/개선 루프를 실행합니다. |
46
- | `security-hardening` | 위협/취약점 기반 보안 강화를 수행합니다. |
47
- | `frontend-repetition-pack` | UI 컴포넌트화/Hook/최적화를 수행합니다. |
48
- | `release-and-operations` | 배포/모니터링/인수인계를 수행합니다. |
49
- | `incident-response` | 장애 대응~재발 방지를 수행합니다. |
50
- | `prd-to-production-pipeline` | PRD 대화형 작성 후 순차 자동 구현을 수행합니다. |
51
-
52
- </details>
53
-
54
- <details>
55
- <summary><strong>Claude Code - Subagents</strong></summary>
56
-
57
- | Subagent | 역할 |
58
- | --- | --- |
59
- | `lead-orchestrator` | 전체 단계를 오케스트레이션합니다. |
60
- | `prd-writer` | 마스터/세부 PRD를 작성합니다. |
61
- | `product-planner` | 요구사항 잠금/범위 관리를 수행합니다. |
62
- | `solution-architect` | ADR/기술 경계를 정의합니다. |
63
- | `backend-engineer` | 계약 우선 API 구현을 수행합니다. |
64
- | `frontend-engineer` | 프론트 기능 구현을 수행합니다. |
65
- | `ui-component-engineer` | 반복 UI를 컴포넌트화합니다. |
66
- | `hook-refactor-engineer` | Hook 분리/정규화를 수행합니다. |
67
- | `performance-engineer` | 성능 병목을 개선합니다. |
68
- | `qa-engineer` | 테스트/회귀 차단을 수행합니다. |
69
- | `code-reviewer` | 코드리뷰/개선안을 도출합니다. |
70
- | `security-engineer` | 위협/취약점 대응을 수행합니다. |
71
- | `sre-release-engineer` | CI/CD 게이트/배포를 수행합니다. |
72
- | `operations-owner` | 운영 대시보드/런북을 관리합니다. |
73
- | `incident-commander` | 장애 워룸/복구 우선순위를 관리합니다. |
74
-
75
- </details>
76
-
77
- <details>
78
- <summary><strong>Antigravity - Skills / Agents</strong></summary>
79
-
80
- | 타입 | ID | 설명 |
81
- | --- | --- | --- |
82
- | Skill | `service-lifecycle-orchestration` | Plan-Implement-Test-Review-Release를 실행합니다. |
83
- | Skill | `code-review-and-improvement` | 리뷰/개선 루프를 실행합니다. |
84
- | Skill | `security-hardening` | 보안 하드닝을 수행합니다. |
85
- | Skill | `frontend-repetition-pack` | 프론트 반복 개선을 수행합니다. |
86
- | Skill | `release-and-operations` | 배포/운영 전환을 수행합니다. |
87
- | Skill | `incident-response` | 장애 대응을 수행합니다. |
88
- | Skill | `prd-to-production-pipeline` | PRD 대화형→자동 구현을 수행합니다. |
89
- | Agent | `manager-agent` | 기본 오케스트레이터 역할을 수행합니다. |
90
- | Agent | `prd-writer-agent` | PRD 대화형 작성을 수행합니다. |
91
- | Agent | `implementation-agent` | 구현 자동 실행을 수행합니다. |
92
- | Agent | `review-security-agent` | 리뷰/보안 검증을 수행합니다. |
93
- | Agent | `release-ops-agent` | 최종 세팅/배포를 수행합니다. |
94
-
95
- </details>
96
-
97
- <details>
98
- <summary><strong>Codex - Skills</strong></summary>
99
-
100
- | Skill | 목적 |
101
- | --- | --- |
102
- | `service-lifecycle-orchestration` | 기획~배포 표준 실행을 수행합니다. |
103
- | `code-review-and-improvement` | 리뷰/개선 루프를 수행합니다. |
104
- | `security-hardening` | 보안 강화를 수행합니다. |
105
- | `frontend-repetition-pack` | UI/Hook/성능 개선을 수행합니다. |
106
- | `release-and-operations` | 릴리즈/운영 전환을 수행합니다. |
107
- | `incident-response` | 장애 대응을 수행합니다. |
108
- | `prd-to-production-pipeline` | PRD 대화형→순차 자동 구현을 수행합니다. |
109
-
110
- </details>
111
-
112
- ## PRD→구현 자동 파이프라인 (신규)
113
-
114
- - 워크플로우: `WF-PRD-IMPLEMENT-E2E`
115
- - 단계:
116
- 1. 마스터 PRD 작성 (`CMD-PLAN-PRD-MASTER`) - 대화형
117
- 2. 세부 PRD 분해 (`CMD-PLAN-PRD-DETAILS`) - 대화형
118
- 3. 구현 부트스트랩 (`CMD-PLAN-IMPLEMENTATION-BOOTSTRAP`) - 대화형
119
- 4. 순차 자동 구현 (`CMD-DEV-SEQUENTIAL-AUTORUN`) - 자동
120
- 5. 검증/보안 - 자동
121
- 6. 최종 세팅/배포 준비 - 수동
122
-
123
- PRD 단계에서는 UI 컴포넌트화, 톤앤매너, 성능, 보안, 가독성 기준을 명시하시고, 자동 단계에서는 배치별 검증을 통과해야 다음 배치로 진행됩니다.
124
-
125
- ## 설치/업데이트 사용법
126
-
127
- ### 가장 쉬운 시작 (pnpm dlx, 전부 대화형)
9
+ ## 빠른 실행 (설치 없이)
128
10
 
129
11
  ```bash
130
- pnpm dlx tri-agent-manager --interactive
12
+ pnpm dlx --package=@dusky-bluehour/agent-service@latest tri-agent-manager --interactive
131
13
  ```
132
14
 
133
- 줄로 아래를 터미널에서 순서대로 선택하실 수 있습니다.
134
-
135
- 1. 설치 경로 (현재 위치 또는 직접 입력)
136
- 2. 프리셋
137
- 3. 도구(Claude Code/Antigravity/Codex)
138
- 4. 구성요소(스킬, 워크플로우 등)
139
- 5. 실행 확인
140
-
141
- 도구별 실제 설치 루트:
142
-
143
- - Claude Code: `<target>/.claude/*`
144
- - Antigravity: `<target>/.agent/*`
145
- - Codex: `<target>/.codex/*`
146
- - 설치 직후 사용 가이드 자동 생성: `<target>/.tri-agent-manager/USAGE.ko.md`
147
-
148
- 설치 경로 기준(근거 문서):
149
-
150
- - Claude Code: `claude-code/README.md` + Claude Code Subagents 공식 문서
151
- - Antigravity: `antigravity/README.md` 기준의 로컬 워크스페이스 규약(`.agent/*`)
152
- - Codex: `codex/README.md` + Codex 공식 문서
153
-
154
- 조작 키:
155
-
156
- - `↑/↓`: 이동
157
- - `←/→`: 해제/선택 또는 항목 이동
158
- - `Space`: 다중 선택 토글
159
- - `Enter`: 확정
160
-
161
- 업데이트도 동일하게 대화형으로 진행하실 수 있습니다.
15
+ ## 패키지 다운로드 사용
162
16
 
163
17
  ```bash
164
- pnpm dlx tri-agent-manager update --interactive
165
- ```
18
+ # 프로젝트에 패키지 설치
19
+ pnpm add -D @dusky-bluehour/agent-service@latest
166
20
 
167
- `setup` 별칭도 동일하게 동작합니다.
168
-
169
- ```bash
170
- pnpm dlx tri-agent-manager setup
21
+ # 실행
22
+ pnpm exec tri-agent-manager --interactive
171
23
  ```
172
24
 
173
- ### npm 사용 시
25
+ npm 사용자:
174
26
 
175
27
  ```bash
28
+ npm install -D @dusky-bluehour/agent-service@latest
176
29
  npx tri-agent-manager --interactive
177
- npx tri-agent-manager update --interactive
178
30
  ```
179
31
 
180
- 이전 CLI 별칭 `tri-agent-os`도 호환용으로 함께 제공됩니다.
181
-
182
- ### 고급 옵션(필요한 경우)
183
-
184
- - `--preset`: 미리 정의된 구성을 선택합니다.
185
- - `--tool`: 툴을 직접 선택합니다. (`codex,claude-code` 등)
186
- - `--components`: 구성요소를 직접 선택합니다. (`skills,workflows,commands` 등)
187
- - `--install-root`: 도구별 설치 루트를 직접 지정합니다. (`codex=.codex,antigravity=.agent`)
188
- - `--interactive`: 한글 대화형 선택 UI를 사용합니다.
189
- - `--dry-run`: 실제 반영 없이 계획만 확인합니다.
190
- - `--yes`: 확인 프롬프트를 생략합니다.
191
-
192
- 중복 선택 입력(예: `codex,codex,claude-code`)은 자동으로 1회로 정리됩니다.
193
-
194
- ### 다른 폴더에 설치하는 명령어
195
-
196
- ```bash
197
- # 1) 전체 프리셋을 다른 프로젝트 경로에 설치
198
- pnpm dlx --package=@dusky-bluehour/agent-service tri-agent-manager install \
199
- --preset full-suite \
200
- --target /path/to/your-project \
201
- --yes --non-interactive
202
- ```
203
-
204
- ```bash
205
- # 2) 특정 도구만 설치 (예: Antigravity)
206
- pnpm dlx --package=@dusky-bluehour/agent-service tri-agent-manager install \
207
- --tool antigravity \
208
- --components skills,agents,artifacts,workflows,commands \
209
- --target /path/to/your-project \
210
- --yes --non-interactive
211
- ```
32
+ ## 자주 쓰는 명령
212
33
 
213
34
  ```bash
214
- # 3) 도구별 설치 루트를 커스텀
215
- pnpm dlx --package=@dusky-bluehour/agent-service tri-agent-manager install \
216
- --preset balanced-core \
217
- --install-root codex=.codex,claude-code=.claude,antigravity=.agent \
218
- --target /path/to/your-project \
219
- --yes --non-interactive
220
- ```
221
-
222
- 설치 후 실행 가이드는 아래 파일에서 확인하실 수 있습니다.
223
-
224
- - `<target>/.tri-agent-manager/USAGE.ko.md`
225
-
226
- ## 프리셋
227
-
228
- - `balanced-core`: 기본 운영팩(추천)
229
- - `full-suite`: 전체 설치
230
- - `security-first`: 보안 우선
231
- - `frontend-refactor`: 프론트 반복개선
232
- - `prd-to-production`: PRD→구현 자동 파이프라인
233
-
234
- ## 체크리스트 자동화
235
-
236
- 배포 전 자동 점검:
35
+ # 업데이트 대화형
36
+ pnpm dlx --package=@dusky-bluehour/agent-service@latest tri-agent-manager update --interactive
237
37
 
238
- ```bash
239
- npm run prepublish:check
38
+ # 도움말
39
+ pnpm dlx --package=@dusky-bluehour/agent-service@latest tri-agent-manager --help
240
40
  ```
241
41
 
242
- `prepublishOnly`가 설정되어 있어 `npm publish` 시에도 자동 실행됩니다.
243
-
244
- ## 다음 단계 추천
245
-
246
- 1. `pnpm dlx tri-agent-manager --interactive`로 `prd-to-production` 프리셋을 먼저 설치해 보세요.
247
- 2. 첫 실행은 `--dry-run`으로 계획만 확인하신 뒤 실제 반영을 진행해 주세요.
248
- 3. 반영 후 `npm run prepublish:check`로 검증을 고정하신 뒤 배포해 주세요.
249
-
250
- ## 상세 구성 문서
42
+ ## 설치 결과
251
43
 
252
- - 구조/설계/계약 상세: `docs/COMPOSITION.ko.md`
253
- - 대화형 UX 흐름 그림: `docs/UX-FLOW.ko.md`
254
- - 배포 절차 가이드: `docs/DEPLOYMENT-GUIDE.ko.md`
255
- - 업데이트 절차 가이드: `docs/UPDATE-GUIDE.ko.md`
44
+ - Claude Code: `<target>/.claude/*`
45
+ - Antigravity: `<target>/.agent/*`
46
+ - Codex: `<target>/.codex/*`
47
+ - 가이드: `<target>/.tri-agent-manager/USAGE.ko.md`
package/package.json CHANGED
@@ -1,14 +1,13 @@
1
1
  {
2
2
  "name": "@dusky-bluehour/agent-service",
3
- "version": "0.6.4",
3
+ "version": "0.6.5",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
7
  "description": "Service operation skills/workflows pack for Claude Code, Antigravity, and Codex",
8
8
  "type": "module",
9
9
  "bin": {
10
- "tri-agent-manager": "scripts/init.mjs",
11
- "tri-agent-os": "scripts/init.mjs"
10
+ "tri-agent-manager": "scripts/init.mjs"
12
11
  },
13
12
  "scripts": {
14
13
  "validate": "node scripts/validate.mjs",
package/scripts/init.mjs CHANGED
@@ -13,7 +13,6 @@ const rootDir = path.resolve(__dirname, '..');
13
13
  const catalogPath = path.join(rootDir, 'catalog', 'tool-catalog.ko.json');
14
14
  const packageJsonPath = path.join(rootDir, 'package.json');
15
15
  const CLI_NAME = 'tri-agent-manager';
16
- const CLI_COMPAT_NAME = 'tri-agent-os';
17
16
  const STATE_DIR_NAME = '.tri-agent-manager';
18
17
  const LEGACY_STATE_DIR_NAME = '.tri-agent-os';
19
18
  const GUIDE_FILE_NAME = 'USAGE.ko.md';
@@ -42,14 +41,11 @@ const HELP_TEXT = [
42
41
  ' --non-interactive 비대화형 모드 강제',
43
42
  ' (중복 선택 입력은 자동으로 1회로 정리됨)',
44
43
  '',
45
- '호환 별칭:',
46
- ` ${CLI_COMPAT_NAME} ... (동일 동작)`,
47
- '',
48
44
  'pnpm 예시:',
49
- ' pnpm dlx tri-agent-manager --interactive',
50
- ' pnpm dlx tri-agent-manager update --interactive',
51
- ' pnpm dlx tri-agent-manager setup',
52
- ` pnpm exec ${CLI_NAME} list`
45
+ ' pnpm dlx --package=@dusky-bluehour/agent-service@latest tri-agent-manager --interactive',
46
+ ' pnpm dlx --package=@dusky-bluehour/agent-service@latest tri-agent-manager update --interactive',
47
+ ' pnpm dlx --package=@dusky-bluehour/agent-service@latest tri-agent-manager setup',
48
+ ' pnpm dlx --package=@dusky-bluehour/agent-service@latest tri-agent-manager list'
53
49
  ].join('\n');
54
50
 
55
51
  function parseArgs(argv) {
@@ -450,6 +446,52 @@ function getToolExecutionGuide(tool, installRoot) {
450
446
  return ['선택한 workflow의 stage.commands를 순서대로 실행합니다.'];
451
447
  }
452
448
 
449
+ function getToolInteractionTips(tool, installRoot) {
450
+ if (tool.id === 'codex') {
451
+ return [
452
+ 'Codex 대화 입력창에서 `$`를 누르면 사용 가능한 스킬 목록을 바로 열 수 있습니다.',
453
+ `프로젝트 루트에서 스킬 파일을 직접 확인하려면 \`ls ${path.join(
454
+ installRoot,
455
+ 'skills'
456
+ )}\` 를 실행하세요.`,
457
+ `워크플로우 목록과 설명은 \`${path.join(
458
+ installRoot,
459
+ 'workflows',
460
+ 'workflow-catalog.json'
461
+ )}\` 에서 확인하세요.`
462
+ ];
463
+ }
464
+
465
+ if (tool.id === 'claude-code') {
466
+ return [
467
+ `서브에이전트 이름은 \`${path.join(installRoot, 'agents')}\` 경로의 파일명 기준입니다.`,
468
+ `프로젝트 루트에서 \`ls ${path.join(
469
+ installRoot,
470
+ 'agents'
471
+ )} | sed 's/\\.md$//'\` 로 서브에이전트 이름을 확인하세요.`,
472
+ `Claude 스킬 목록은 \`ls ${path.join(installRoot, 'skills')}\` 로 확인하세요.`
473
+ ];
474
+ }
475
+
476
+ if (tool.id === 'antigravity') {
477
+ return [
478
+ `워크플로우 선택은 \`${path.join(
479
+ installRoot,
480
+ 'workflows',
481
+ 'workflow-catalog.json'
482
+ )}\` 에서 WF ID를 먼저 고르는 방식으로 진행하세요.`,
483
+ `에이전트 역할은 \`${path.join(installRoot, 'agents', 'agent-catalog.json')}\` 에서 확인하세요.`,
484
+ `입출력 아티팩트 스키마는 \`${path.join(
485
+ installRoot,
486
+ 'artifacts',
487
+ 'artifact-catalog.json'
488
+ )}\` 기준으로 맞추세요.`
489
+ ];
490
+ }
491
+
492
+ return ['도구별 workflow 문서와 skill 문서를 기준으로 실행 순서를 고정하세요.'];
493
+ }
494
+
453
495
  function renderMarkdownTable(headers, rows) {
454
496
  const head = `| ${headers.join(' | ')} |`;
455
497
  const divider = `| ${headers.map(() => '---').join(' | ')} |`;
@@ -508,6 +550,14 @@ async function writeUsageGuide({ catalog, selection, targetDir, mode }) {
508
550
  lines.push(`${index + 1}. ${step}`);
509
551
  });
510
552
 
553
+ lines.push('');
554
+ lines.push('### 도구별 실행 팁');
555
+ lines.push('아래 팁은 프로젝트 루트에서 바로 확인할 수 있는 방법입니다.');
556
+ const interactionTips = getToolInteractionTips(tool, installRoot);
557
+ interactionTips.forEach((tip, index) => {
558
+ lines.push(`${index + 1}. ${tip}`);
559
+ });
560
+
511
561
  if (workflowSummary.length > 0) {
512
562
  lines.push('');
513
563
  lines.push('### 워크플로우 선택 가이드');
@@ -1305,6 +1355,15 @@ async function writeState({ catalog, targetDir, packageData, mode, selection })
1305
1355
  await fs.writeFile(statePath, `${JSON.stringify(statePayload, null, 2)}\n`, 'utf8');
1306
1356
  }
1307
1357
 
1358
+ async function cleanupLegacyStateDir(targetDir) {
1359
+ const legacyDir = path.join(targetDir, LEGACY_STATE_DIR_NAME);
1360
+ if (!(await exists(legacyDir))) {
1361
+ return false;
1362
+ }
1363
+ await fs.rm(legacyDir, { recursive: true, force: true });
1364
+ return true;
1365
+ }
1366
+
1308
1367
  async function runInstallOrUpdate({ catalog, packageData, mode, selection, force, dryRun }) {
1309
1368
  const overwrite = mode === 'update' || force;
1310
1369
  const targetDir = selection.targetDir;
@@ -1397,9 +1456,13 @@ async function runInstallOrUpdate({ catalog, packageData, mode, selection, force
1397
1456
  if (!dryRun) {
1398
1457
  const generatedGuidePath = await writeUsageGuide({ catalog, selection, targetDir, mode });
1399
1458
  await writeState({ catalog, targetDir, packageData, mode, selection });
1459
+ const legacyStateRemoved = await cleanupLegacyStateDir(targetDir);
1400
1460
  console.log('');
1401
1461
  console.log(`실행 가이드 저장: ${generatedGuidePath}`);
1402
1462
  console.log(`상태 파일 저장: ${path.join(targetDir, STATE_DIR_NAME, 'state.json')}`);
1463
+ if (legacyStateRemoved) {
1464
+ console.log(`레거시 상태 폴더 정리: ${path.join(targetDir, LEGACY_STATE_DIR_NAME)}`);
1465
+ }
1403
1466
  }
1404
1467
  }
1405
1468
 
@@ -210,6 +210,10 @@ async function validatePackageJson() {
210
210
  }
211
211
  }
212
212
 
213
+ if (!pkg.bin || pkg.bin['tri-agent-manager'] !== 'scripts/init.mjs') {
214
+ fail('[package] bin 설정 오류: tri-agent-manager -> scripts/init.mjs 가 필요합니다.');
215
+ }
216
+
213
217
  const requiredFiles = [
214
218
  'claude-code',
215
219
  'antigravity',
@@ -228,7 +232,8 @@ async function validatePackageJson() {
228
232
  'docs/COMPOSITION.ko.md',
229
233
  'docs/DEPLOYMENT-GUIDE.ko.md',
230
234
  'docs/UPDATE-GUIDE.ko.md',
231
- 'docs/UX-FLOW.ko.md'
235
+ 'docs/UX-FLOW.ko.md',
236
+ 'docs/NPM-PUBLISH-REPO-ONLY.ko.md'
232
237
  ];
233
238
  for (const fileEntry of excludedFromPublish) {
234
239
  if (Array.isArray(pkg.files) && pkg.files.includes(fileEntry)) {