@neobiotechlabs/neobiotech-dev-agent 0.1.8 → 0.1.10
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +153 -180
- package/dist/index.js +1981 -464
- package/dist/index.js.map +1 -1
- package/package.json +4 -2
- package/skills/doc-render/SKILL.md +7 -2
- package/dist/utils/sync-version.js +0 -22
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"source": "npm",
|
|
11
11
|
"package": "@neobiotechlabs/neobiotech-dev-agent",
|
|
12
12
|
"registry": "https://registry.npmjs.org",
|
|
13
|
-
"version": "0.1.
|
|
13
|
+
"version": "0.1.10"
|
|
14
14
|
},
|
|
15
15
|
"description": "의료기기 SW 규제 개발 자동화 (Jira·Confluence·Risk·CVSS·Xray·IEC 62304/62366·MDR·문서 렌더)",
|
|
16
16
|
"category": "medical-device",
|
package/README.md
CHANGED
|
@@ -1,205 +1,186 @@
|
|
|
1
1
|
# @neobiotechlabs/neobiotech-dev-agent
|
|
2
2
|
|
|
3
|
-
IEC 62304 의료기기 소프트웨어 개발을 위한
|
|
3
|
+
IEC 62304 의료기기 소프트웨어 개발을 위한 MCP Server. Claude Code에서 Jira, Confluence, Risk Management, CVSS, Xray, 추적성 관리를 직접 사용합니다. **npm-as-plugin**으로 배포되어 `/plugin install` 한 번으로 MCP 서버 등록 + doc-render skill 배포 + 인증(userConfig → 키체인)이 한 번에 처리됩니다.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
> 서버 자체를 개발/수정하는 분은 [docs/developer-guide.md](docs/developer-guide.md)를, 전체 툴 레퍼런스는 이 문서 아래쪽을 참고하세요.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## 설치 (plugin — 권장)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
공개 npm(npmjs.org)에 게시되어 별도 registry 인증 없이 설치할 수 있습니다. Claude Code 안에서:
|
|
10
10
|
|
|
11
|
-
```bash
|
|
12
|
-
# 글로벌 설치 (추천)
|
|
13
|
-
npm install -g @neobiotechlabs/neobiotech-dev-agent
|
|
14
|
-
|
|
15
|
-
# 또는 매번 최신 버전 실행 (설치 불필요)
|
|
16
|
-
npx -y @neobiotechlabs/neobiotech-dev-agent
|
|
17
11
|
```
|
|
12
|
+
1) marketplace 등록 (GitHub source — 누구나 가능)
|
|
13
|
+
/plugin marketplace add NeobiotechLabs/jira-mcp-server
|
|
18
14
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
npm update -g @neobiotechlabs/neobiotech-dev-agent
|
|
22
|
-
```
|
|
15
|
+
2) plugin 설치 (user scope 권장 — 어느 프로젝트에서든 적용)
|
|
16
|
+
/plugin install neobiotech-dev-agent@neobiotech
|
|
23
17
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
3) 자격증명 입력 (키체인에 저장)
|
|
19
|
+
/plugin configure neobiotech-dev-agent@neobiotech
|
|
20
|
+
|
|
21
|
+
4) Claude Code 완전 재시작 → /mcp 에서 neobiotech-dev-agent 가 ✔ Connected 인지 확인
|
|
27
22
|
```
|
|
28
23
|
|
|
29
|
-
|
|
24
|
+
`userConfig` 6개 항목 (3번 configure 시 입력):
|
|
25
|
+
|
|
26
|
+
| 항목 | 필수 | 비고 |
|
|
27
|
+
|------|------|------|
|
|
28
|
+
| `JIRA_URL` | O | **https 권장** — http에선 node-fetch 리다이렉트가 POST를 GET으로 변환해 생성/수정이 실패함 |
|
|
29
|
+
| `JIRA_EMAIL` | O | Jira 계정 이메일 |
|
|
30
|
+
| `JIRA_API_TOKEN` | O | [발급](https://id.atlassian.com/manage-profile/security/api-tokens) |
|
|
31
|
+
| `XRAY_CLIENT_ID` | X | Xray Cloud (둘 다 있어야 활성화) |
|
|
32
|
+
| `XRAY_CLIENT_SECRET` | X | Xray Cloud |
|
|
33
|
+
| `RISK_PLUGIN_AUTH_TOKEN` | X | Risk Management Plugin |
|
|
34
|
+
|
|
35
|
+
> ⚠️ 재시작 없으면 userConfig가 반영되지 않아 spawn 직후 종료됩니다 (`/mcp`에서 `-32000`). 설치/구성 후 **반드시 Claude Code를 완전히 재시작**하세요.
|
|
36
|
+
> ⚠️ 설치·업데이트 후에도 옛날 버전이 실행된다면 consumer 로컬 캐시가 원인입니다 — [트러블슈팅](#트러블슈팅) 참고.
|
|
37
|
+
|
|
38
|
+
## 로컬에서 코드 변경하며 테스트
|
|
30
39
|
|
|
31
|
-
|
|
40
|
+
서버 코드를 고치면서 바로 확인하려는 경우(서버 개발·브랜치 테스트) 두 가지 패턴이 있습니다. 어떤 패턴이든 **watch + `/mcp` reconnect** 루프가 핵심입니다.
|
|
41
|
+
|
|
42
|
+
### 준비 (공통): clone + build
|
|
32
43
|
|
|
33
44
|
```bash
|
|
34
|
-
#
|
|
45
|
+
# doc_render 툴이 vendor/dev-docs-templates/ submodule을 쓰므로 --recurse-submodules
|
|
35
46
|
git clone --recurse-submodules https://github.com/NeobiotechLabs/jira-mcp-server.git
|
|
36
47
|
cd jira-mcp-server
|
|
37
48
|
npm install
|
|
38
|
-
npm run build
|
|
49
|
+
npm run build # dist/index.js 단일 bundle (최초 1회 필수 — dist는 git에 없음)
|
|
39
50
|
```
|
|
40
51
|
|
|
41
|
-
이미 clone한
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
git submodule update --init --recursive
|
|
45
|
-
```
|
|
52
|
+
이미 clone한 경우: `git submodule update --init --recursive`.
|
|
46
53
|
|
|
47
|
-
|
|
54
|
+
### 패턴 1: `claude mcp add`로 로컬 빌드 직접 실행 (빠른 iteration, 권장)
|
|
48
55
|
|
|
49
|
-
|
|
56
|
+
빌드된 `dist/index.js`를 MCP 서버로 바로 등록합니다. plugin의 userConfig/키체인 대신 환경변수를 직접 주고, 가장 빠르게 코드를 돌려볼 수 있습니다.
|
|
50
57
|
|
|
51
|
-
|
|
58
|
+
한 터미널에서 watch를 켜둡니다 — 소스 저장 시 `dist/`가 자동 재빌드됩니다:
|
|
52
59
|
|
|
53
60
|
```bash
|
|
54
|
-
|
|
55
|
-
-e JIRA_URL=https://your-domain.atlassian.net \
|
|
56
|
-
-e JIRA_EMAIL=your-email@example.com \
|
|
57
|
-
-e JIRA_API_TOKEN=your-api-token \
|
|
58
|
-
-- npx -y @neobiotechlabs/neobiotech-dev-agent
|
|
61
|
+
npm run dev
|
|
59
62
|
```
|
|
60
63
|
|
|
61
|
-
|
|
64
|
+
다른 터미널에서 (또는 Claude Code 세션에서) 로컬 dist를 MCP 서버로 등록:
|
|
62
65
|
|
|
63
66
|
```bash
|
|
64
|
-
claude mcp add
|
|
67
|
+
claude mcp add neobiotech-dev --scope user \
|
|
65
68
|
-e JIRA_URL=https://your-domain.atlassian.net \
|
|
66
69
|
-e JIRA_EMAIL=your-email@example.com \
|
|
67
70
|
-e JIRA_API_TOKEN=your-api-token \
|
|
68
|
-
-- node
|
|
71
|
+
-- node "$(pwd)/dist/index.js"
|
|
69
72
|
```
|
|
70
73
|
|
|
71
|
-
|
|
74
|
+
> `-e` 옵션은 `--` 앞에 와야 합니다. Xray/Risk가 필요하면 같은 방식으로 `-e XRAY_CLIENT_ID=...` 등 추가.
|
|
72
75
|
|
|
73
|
-
|
|
74
|
-
-e XRAY_CLIENT_ID=... \
|
|
75
|
-
-e XRAY_CLIENT_SECRET=... \
|
|
76
|
-
-e RISK_PLUGIN_AUTH_TOKEN=... \
|
|
77
|
-
-- npx -y @neobiotechlabs/neobiotech-dev-agent
|
|
78
|
-
```
|
|
76
|
+
코드를 고칠 때마다 반영: **Claude Code `/mcp` → `neobiotech-dev` → reconnect**.
|
|
79
77
|
|
|
80
|
-
|
|
78
|
+
> stdio MCP 서버는 프로세스가 시작될 때 코드를 메모리에 로드합니다. watch가 `dist/`를 갱신해도 프로세스를 재시작(reconnect)하지 않으면 옛날 코드를 계속 씁니다. "즉시 반영"의 마지막 단계는 항상 reconnect입니다.
|
|
81
79
|
|
|
82
|
-
###
|
|
80
|
+
### 패턴 2: plugin을 로컬 directory source로 설치
|
|
83
81
|
|
|
84
|
-
|
|
82
|
+
plugin의 userConfig/키체인/doc-render skill 배포 이점을 그대로 쓰면서 로컬 코드를 실행하려면, `.claude-plugin/marketplace.json`의 source를 배포용 npm 대신 로컬 directory로 임시 교체합니다.
|
|
85
83
|
|
|
86
|
-
|
|
87
|
-
{
|
|
88
|
-
"mcpServers": {
|
|
89
|
-
"jira": {
|
|
90
|
-
"command": "npx",
|
|
91
|
-
"args": ["-y", "@neobiotechlabs/neobiotech-dev-agent"],
|
|
92
|
-
"env": {
|
|
93
|
-
"JIRA_URL": "https://your-domain.atlassian.net",
|
|
94
|
-
"JIRA_EMAIL": "your-email@example.com",
|
|
95
|
-
"JIRA_API_TOKEN": "your-api-token",
|
|
96
|
-
"XRAY_CLIENT_ID": "",
|
|
97
|
-
"XRAY_CLIENT_SECRET": "",
|
|
98
|
-
"RISK_PLUGIN_AUTH_TOKEN": ""
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
**로컬 빌드 시:**
|
|
84
|
+
`.claude-plugin/marketplace.json`의 `plugins[0].source`를 임시로 변경:
|
|
106
85
|
|
|
107
86
|
```json
|
|
108
|
-
{
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
"JIRA_API_TOKEN": "your-api-token"
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
87
|
+
"source": { "source": "directory", "path": "." }
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
그리고:
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
/plugin marketplace add /절대경로/jira-mcp-server
|
|
94
|
+
/plugin install neobiotech-dev-agent@neobiotech --scope user
|
|
121
95
|
```
|
|
122
96
|
|
|
123
|
-
|
|
97
|
+
코드 변경 반영은 동일하게 `/mcp` reconnect. 검증이 끝나면 `git checkout .claude-plugin/marketplace.json`으로 복구. 변경 전 `claude plugin validate .`로 매니페스트 정합성을 확인하세요.
|
|
124
98
|
|
|
125
|
-
|
|
99
|
+
> plugin(`/plugin install`)과 `claude mcp add`는 서버 이름이 다르면 공존하지만 헷갈리므로, 번갈아 쓸 때는 한쪽을 제거(`claude plugin uninstall` 또는 `claude mcp remove`) 후 전환을 권장합니다.
|
|
126
100
|
|
|
127
|
-
|
|
101
|
+
## 프로젝트 초기 설정
|
|
102
|
+
|
|
103
|
+
각 consumer 프로젝트 폴더에서 최초 1회 실행하면, 이후 모든 툴이 해당 Jira 프로젝트 키를 자동으로 인식합니다.
|
|
128
104
|
|
|
129
|
-
```json
|
|
130
|
-
{
|
|
131
|
-
"mcpServers": {
|
|
132
|
-
"jira": {
|
|
133
|
-
"command": "npx",
|
|
134
|
-
"args": ["-y", "@neobiotechlabs/neobiotech-dev-agent"],
|
|
135
|
-
"env": {
|
|
136
|
-
"JIRA_URL": "${JIRA_URL}",
|
|
137
|
-
"JIRA_EMAIL": "${JIRA_EMAIL}",
|
|
138
|
-
"JIRA_API_TOKEN": "${JIRA_API_TOKEN}"
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
105
|
```
|
|
106
|
+
jira 프로젝트 초기 설정해줘. 프로젝트 키는 DYN야
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
→ `jira_init_project` → `./CLAUDE.md`에 키를 기록. 여러 프로젝트면 폴더마다 각각 실행.
|
|
110
|
+
|
|
111
|
+
## 트러블슈팅
|
|
112
|
+
|
|
113
|
+
### 설치·업데이트 후 옛날 버전이 실행됨 (stale)
|
|
114
|
+
|
|
115
|
+
`uninstall` → `install` 해도 같은 버전이 계속 잡힌다면, 두 군데 중 한 곳이 stale한 것입니다. **비파괴적 방법부터 먼저** 시도합니다.
|
|
144
116
|
|
|
145
|
-
|
|
117
|
+
**1. marketplace 갱신 먼저** (비파괴적 — 항상 먼저):
|
|
146
118
|
|
|
147
119
|
```
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
JIRA_API_TOKEN=your-api-token
|
|
120
|
+
/plugin marketplace update neobiotech
|
|
121
|
+
/reload-plugins
|
|
151
122
|
```
|
|
152
123
|
|
|
153
|
-
|
|
124
|
+
이것만으로 marketplace.json이 최신 version을 가리키게 되면 install이 최신 버전을 잡습니다. (`/plugin marketplace update`가 안 먹으면 `/plugin marketplace remove neobiotech` 후 `/plugin marketplace add NeobiotechLabs/jira-mcp-server`로 git clone을 강제 fresh — 공식 known issue [#38271](https://github.com/anthropics/claude-code/issues/38271).)
|
|
154
125
|
|
|
155
|
-
|
|
156
|
-
|------|------|------|
|
|
157
|
-
| `JIRA_URL` | O | Jira 인스턴스 URL (**https 권장** — http에선 node-fetch 리다이렉트가 POST를 GET으로 변환해 생성/수정이 실패함) |
|
|
158
|
-
| `JIRA_EMAIL` | O | Jira 계정 이메일 |
|
|
159
|
-
| `JIRA_API_TOKEN` | O | Jira API 토큰 ([발급](https://id.atlassian.com/manage-profile/security/api-tokens)) |
|
|
160
|
-
| `XRAY_CLIENT_ID` | X | Xray Cloud client ID |
|
|
161
|
-
| `XRAY_CLIENT_SECRET` | X | Xray Cloud client secret |
|
|
162
|
-
| `RISK_PLUGIN_AUTH_TOKEN` | X | Risk Management Plugin 인증 토큰 |
|
|
163
|
-
| `PROJECT_CONFIG_PATH` | X | (사용하지 않음) |
|
|
126
|
+
**2. 여전히 옛날 버전이면 npm-cache 정리** (마지막 수단) — Claude Code를 **완전히 종료한 뒤**:
|
|
164
127
|
|
|
165
|
-
|
|
128
|
+
```bash
|
|
129
|
+
rm -rf ~/.claude/plugins/npm-cache # stale package-lock + node_modules
|
|
130
|
+
rm -rf ~/.claude/plugins/cache/neobiotech # 옛날 installPath 잔해
|
|
131
|
+
rm -f ~/.claude/plugins/plugin-catalog-cache.json # stale marketplace snapshot (있으면)
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
재시작 후 `/plugin marketplace update neobiotech` → `/plugin install neobiotech-dev-agent@neobiotech`.
|
|
166
135
|
|
|
167
|
-
###
|
|
136
|
+
### 다른 PC에서 `No matching version` (npm registry / `.npmrc`)
|
|
137
|
+
|
|
138
|
+
Windows 등 **다른 PC**에서 `/plugin install` 시 `failed to install npm packages. No matching version` 으로 실패하면, npmjs.org와 패키지는 정상이고 **해당 PC의 npm 설정이 원인**입니다. plugin install이 `.claude-plugin/marketplace.json`에 적은 `registry`(`https://registry.npmjs.org`)보다 **시스템 `.npmrc`를 우선** 사용하기 때문입니다. 사내 npm mirror를 기본으로 쓰거나, 이전 install 실패로 `.npmrc`에 잘못된 줄(쓰레기)이 쌓여 있으면 npmjs.org 대신 다른 registry를 쿼리합니다.
|
|
139
|
+
|
|
140
|
+
진단:
|
|
168
141
|
|
|
169
142
|
```bash
|
|
170
|
-
#
|
|
171
|
-
npm version
|
|
172
|
-
git push --follow-tags
|
|
173
|
-
# → GitHub Actions가 자동으로 npm(npmjs.org)에 latest로 publish
|
|
143
|
+
npm config get registry # npmjs.org가 아니면 원인
|
|
144
|
+
npm view @neobiotechlabs/neobiotech-dev-agent@0.1.8 version --registry https://registry.npmjs.org # 버전이 나오면 패키지·npmjs.org 정상 → 이 PC의 .npmrc 문제 확정
|
|
174
145
|
```
|
|
175
146
|
|
|
176
|
-
|
|
147
|
+
해결 — `%USERPROFILE%\.npmrc`(Windows) / `~/.npmrc`(macOS·Linux)에서 이전 실패로 쌓인 쓰레기 줄(잘못된 registry · scope · auth 잔재)을 전체 삭제한 뒤, scope registry 오버라이드 추가:
|
|
177
148
|
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
# → 0.1.0 → 0.1.1-beta.0
|
|
149
|
+
```
|
|
150
|
+
@neobiotechlabs:registry=https://registry.npmjs.org/
|
|
151
|
+
```
|
|
182
152
|
|
|
183
|
-
|
|
184
|
-
# → GitHub Actions가 자동으로 npm(npmjs.org)에 beta로 publish
|
|
153
|
+
사내 mirror를 전역 기본으로 유지해야 하면 **scope 오버라이드만**으로 충분합니다. **Claude Code 완전 재시작** 후 `/plugin install neobiotech-dev-agent@neobiotech` 재시도. 상세 진단 순서는 [developer-guide §10.7](docs/developer-guide.md#107-트러블슈팅).
|
|
185
154
|
|
|
186
|
-
|
|
187
|
-
npm install -g @neobiotechlabs/neobiotech-dev-agent@beta
|
|
155
|
+
### `/mcp`에서 `Failed to connect` / `-32000` (plugin)
|
|
188
156
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
157
|
+
두 원인:
|
|
158
|
+
|
|
159
|
+
1. **userConfig 미구성 (가장 흔함)** — install 직후 userConfig(키체인)가 비어 `.mcp.json`의 `${user_config.*}`가 빈 값 → `src/index.ts`가 필수 env 검증에서 `process.exit(1)`. `/plugin configure`로 값을 넣고 **Claude Code 완전 재시작**.
|
|
160
|
+
2. **runtime 의존성 누락 (과거)** — 0.1.8 tsup bundle 도입으로 해결. 최신 버전이면 해당 없음.
|
|
161
|
+
|
|
162
|
+
진단 — installPath의 `dist/index.js`를 직접 실행해 봅니다:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
node ~/.claude/plugins/cache/neobiotech/neobiotech-dev-agent/<version>/dist/index.js </dev/null
|
|
166
|
+
# "Missing JIRA_URL..." → 모듈 로딩 통과 = 원인 1 (userConfig)
|
|
167
|
+
# ERR_MODULE_NOT_FOUND → bundle 누락 = 옛날 버전 (원인 2)
|
|
193
168
|
```
|
|
194
169
|
|
|
195
|
-
###
|
|
170
|
+
### `claude mcp add` 모드 연결 실패
|
|
171
|
+
|
|
172
|
+
가장 흔한 원인은 args 경로 오타 또는 빌드 누락. `claude mcp get <name>`으로 `Command`/`Args`/`Environment`를 점검하고, `ls <경로>`로 파일이 실제 존재하는지 확인 (없으면 `npm run build`).
|
|
196
173
|
|
|
197
|
-
|
|
198
|
-
|----------|-------------|-------------|
|
|
199
|
-
| `v0.1.1-beta.0` | `beta` | `npm i -g @neobiotechlabs/neobiotech-dev-agent@beta` |
|
|
200
|
-
| `v0.1.1` | `latest` | `npm i -g @neobiotechlabs/neobiotech-dev-agent` |
|
|
174
|
+
### 일반
|
|
201
175
|
|
|
202
|
-
|
|
176
|
+
| 증상 | 원인 / 해결 |
|
|
177
|
+
|------|------------|
|
|
178
|
+
| `Missing environment variables...`로 종료 | 필수 env 3개 중 하나라도 비면 `index.ts`가 `process.exit(1)`. `claude mcp get`의 env 또는 userConfig에서 값 누락 확인 |
|
|
179
|
+
| Risk / Xray 툴이 동작 안 함 | 선택 env(`RISK_PLUGIN_AUTH_TOKEN`, `XRAY_*`) 누락/만료. `xray`는 두 env가 모두 있어야 활성화 |
|
|
180
|
+
| `401`/`403` | 토큰/권한. Jira API 토큰 재발급, 프로젝트 권한·이슈타입 존재 여부 확인 |
|
|
181
|
+
| 프로젝트 키가 인식 안 됨 | `jira_init_project` 미실행. consumer `CLAUDE.md`에 키가 있는지 확인 |
|
|
182
|
+
|
|
183
|
+
## 툴 목록 (49개)
|
|
203
184
|
|
|
204
185
|
### Jira 기본 CRUD (12)
|
|
205
186
|
|
|
@@ -218,7 +199,7 @@ git push --follow-tags
|
|
|
218
199
|
| `jira_delete_issue` | 이슈 삭제 |
|
|
219
200
|
| `jira_get_issue_type_schema` | 이슈 타입의 필드 스키마 동적 조회 |
|
|
220
201
|
|
|
221
|
-
### Confluence (
|
|
202
|
+
### Confluence (8)
|
|
222
203
|
|
|
223
204
|
| 툴 | 설명 |
|
|
224
205
|
|-----|------|
|
|
@@ -229,6 +210,7 @@ git push --follow-tags
|
|
|
229
210
|
| `confluence_delete_page` | 페이지 삭제 |
|
|
230
211
|
| `confluence_get_spaces` | 스페이스 목록 |
|
|
231
212
|
| `confluence_get_page_children` | 하위 페이지 조회 |
|
|
213
|
+
| `confluence_publish_doc` | **(High-level)** 마크다운 문서 → Confluence 페이지 게재 (create/update 자동 분기, 마크다운 → storage 변환 + 코드펜스 → 코드 매크로) |
|
|
232
214
|
|
|
233
215
|
### Risk Management (5)
|
|
234
216
|
|
|
@@ -309,7 +291,7 @@ IEC 62304 추적성 관리.
|
|
|
309
291
|
|
|
310
292
|
| 툴 | 설명 |
|
|
311
293
|
|-----|------|
|
|
312
|
-
| `doc_render` | dev_docs(PRD/Spec/Plan/Tasks)·mdr_docs(
|
|
294
|
+
| `doc_render` | dev_docs(PRD/Spec/Plan/Tasks)·mdr_docs(PA/EA gate 문서 전체) 템플릿 모드 기반(freeform) 결정적 렌더 — 메타만 치환, 자유 텍스트/AI 지침/빈 데이터 표는 consumer가 채움 |
|
|
313
295
|
|
|
314
296
|
### 초기 설정 (1)
|
|
315
297
|
|
|
@@ -319,57 +301,23 @@ IEC 62304 추적성 관리.
|
|
|
319
301
|
|
|
320
302
|
## doc_render 작성 skill (consumer 워크플로우)
|
|
321
303
|
|
|
322
|
-
이 서버는 `.claude/skills/doc-render/` 절차 가이드를 함께
|
|
323
|
-
|
|
324
|
-
### 설치 (수동 copy)
|
|
325
|
-
|
|
326
|
-
이 repo의 `.claude/skills/doc-render/` 를 consumer 프로젝트의 `.claude/skills/doc-render/` 로 복사:
|
|
327
|
-
|
|
328
|
-
```bash
|
|
329
|
-
cp -R <이-repo>/.claude/skills/doc-render <consumer-repo>/.claude/skills/
|
|
330
|
-
```
|
|
304
|
+
이 서버는 `.claude/skills/doc-render/` 절차 가이드를 함께 제공합니다. `/plugin install` 하면 consumer(Claude Code)에게 skill도 자동으로 배포되므로, consumer는 doc_render 출력으로 MDR/dev 문서를 자동 작성해 자기 repo `docs/`에 저장하고 Jira 티켓 description에 미러할 수 있습니다.
|
|
331
305
|
|
|
332
|
-
|
|
306
|
+
> plugin이 아닌 `claude mcp add` 모드를 쓸 때만 skill을 수동으로 복사합니다:
|
|
307
|
+
> ```bash
|
|
308
|
+
> cp -R <이-repo>/skills/doc-render <consumer-repo>/.claude/skills/
|
|
309
|
+
> ```
|
|
333
310
|
|
|
334
311
|
consumer Claude Code 세션에서:
|
|
335
312
|
|
|
336
313
|
> "DYN-8 intended use 문서 작성"
|
|
337
314
|
|
|
338
|
-
skill이 doc_render 호출 → 자동 초안 → 리뷰 게이트 → `docs/mdr/PA/intended-use-DYN-8.md` 저장 → DYN-8 description 미러까지
|
|
339
|
-
|
|
340
|
-
> 이 서버는 **npm-as-plugin**으로 배포됩니다 — `/plugin install neobiotech-dev-agent@neobiotech` 한 번으로 MCP 서버 자동 등록 + doc-render skill 자동 배포 + userConfig(키체인) 인증이 처리됩니다. 설치 절차는 [docs/developer-guide.md §3 / §10](docs/developer-guide.md) 참조.
|
|
341
|
-
|
|
342
|
-
## 프로젝트 초기 설정
|
|
343
|
-
|
|
344
|
-
각 프로젝트 폴더에서 최초 1회 실행:
|
|
345
|
-
|
|
346
|
-
```
|
|
347
|
-
jira_init_project(project_key: "SCW")
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
→ `CLAUDE.md`에 프로젝트 키가 자동 추가되어, 이후 Claude가 모든 툴에서 해당 키를 자동으로 사용합니다.
|
|
351
|
-
|
|
352
|
-
사용 예시:
|
|
353
|
-
|
|
354
|
-
```
|
|
355
|
-
# Claude Code 안에서
|
|
356
|
-
jira 프로젝트 초기 설정해줘. 프로젝트 키는 SCW야
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
또는 여러 프로젝트를 진행할 경우, 각 프로젝트 폴더에서 별도로 초기 설정:
|
|
360
|
-
|
|
361
|
-
```
|
|
362
|
-
# A 프로젝트 폴더
|
|
363
|
-
jira_init_project(project_key: "SCW")
|
|
364
|
-
|
|
365
|
-
# B 프로젝트 폴더
|
|
366
|
-
jira_init_project(project_key: "NEO")
|
|
367
|
-
```
|
|
315
|
+
skill이 doc_render 호출 → 자동 초안 → 리뷰 게이트 → `docs/mdr/PA/intended-use-DYN-8.md` 저장 → DYN-8 description 미러까지 수행합니다. 자세한 절차·저장 경로·frontmatter 스키마는 [`skills/doc-render/SKILL.md`](skills/doc-render/SKILL.md)와 [설계 문서](docs/superpowers/specs/2026-07-03-doc-render-skill-design.md) 참조.
|
|
368
316
|
|
|
369
317
|
## 사용 예시
|
|
370
318
|
|
|
371
319
|
```
|
|
372
|
-
|
|
320
|
+
DYN-1234 이슈 내용 알려줘
|
|
373
321
|
```
|
|
374
322
|
→ `jira_get_issue`
|
|
375
323
|
|
|
@@ -384,7 +332,7 @@ Hazard 티켓 2개 만들어줘. [HAZ-1] 영상 렌더링 오류, [HAZ-2] 측정
|
|
|
384
332
|
→ `cvss_calculate` + `cvss_set_vector`
|
|
385
333
|
|
|
386
334
|
```
|
|
387
|
-
|
|
335
|
+
DYN-2550의 추적성 확인해줘
|
|
388
336
|
```
|
|
389
337
|
→ `traceability_check`
|
|
390
338
|
|
|
@@ -437,6 +385,31 @@ EA Gate
|
|
|
437
385
|
└── 선행 Task ── Blocks ──→ 후행 Task
|
|
438
386
|
```
|
|
439
387
|
|
|
388
|
+
## 릴리즈 절차
|
|
389
|
+
|
|
390
|
+
배포는 **`v*` 태그 push** 시 GitHub Actions(`release.yml`)이 자동 수행(build → test → publish to npmjs.org, 공개). main에 머지만 해서는 배포되지 않습니다.
|
|
391
|
+
|
|
392
|
+
### 정식
|
|
393
|
+
|
|
394
|
+
```bash
|
|
395
|
+
npm version patch && git push --follow-tags # latest (version lifecycle가 plugin.json/marketplace.json 자동 동기화)
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
### 베타
|
|
399
|
+
|
|
400
|
+
```bash
|
|
401
|
+
npm version prerelease --preid=beta && git push --follow-tags # beta (태그명에 beta 포함 시 --tag beta)
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
> consumer(이미 plugin 설치한 팀원)의 업데이트는 `/plugin marketplace update neobiotech` 후 `/plugin install` 재실행. stale 캐시가 잡고 있으면 [트러블슈팅](#트러블슈팅)의 캐시 정리 절차를 따르세요.
|
|
405
|
+
|
|
406
|
+
### 태그별 dist-tag 매핑
|
|
407
|
+
|
|
408
|
+
| git 태그 | npm dist-tag | consumer 설치 |
|
|
409
|
+
|----------|-------------|---------------|
|
|
410
|
+
| `v0.1.9-beta.0` | `beta` | marketplace.json source.version을 beta로 맞추거나 `/plugin marketplace update` |
|
|
411
|
+
| `v0.1.9` | `latest` | `/plugin install neobiotech-dev-agent@neobiotech` (캐시 정리 후) |
|
|
412
|
+
|
|
440
413
|
## 라이선스
|
|
441
414
|
|
|
442
415
|
MIT
|