@wooojin/forgen 0.4.8 → 0.4.9
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/plugin.json +1 -1
- package/assets/dev-guide/be/README.md +226 -0
- package/assets/dev-guide/be/adapters/build-agents-md.sh +63 -0
- package/assets/dev-guide/be/principles/common.md +433 -0
- package/assets/dev-guide/be/principles/go.md +469 -0
- package/assets/dev-guide/be/principles/node.md +388 -0
- package/assets/dev-guide/be/skills/go/be-build/SKILL.md +262 -0
- package/assets/dev-guide/be/skills/go/be-perf/SKILL.md +308 -0
- package/assets/dev-guide/be/skills/go/be-review/SKILL.md +119 -0
- package/assets/dev-guide/be/skills/go/be-security/SKILL.md +362 -0
- package/assets/dev-guide/be/skills/node/be-build/SKILL.md +239 -0
- package/assets/dev-guide/be/skills/node/be-perf/SKILL.md +272 -0
- package/assets/dev-guide/be/skills/node/be-review/SKILL.md +118 -0
- package/assets/dev-guide/be/skills/node/be-security/SKILL.md +355 -0
- package/assets/dev-guide/be/sources/12factor/INDEX.md +53 -0
- package/assets/dev-guide/be/sources/api-design/INDEX.md +56 -0
- package/assets/dev-guide/be/sources/ddia/INDEX.md +55 -0
- package/assets/dev-guide/be/sources/go-runtime/INDEX.md +62 -0
- package/assets/dev-guide/be/sources/node-runtime/INDEX.md +60 -0
- package/assets/dev-guide/be/sources/otel/INDEX.md +53 -0
- package/assets/dev-guide/be/sources/owasp-api/INDEX.md +52 -0
- package/assets/dev-guide/be/sources/postgres/INDEX.md +55 -0
- package/assets/dev-guide/be/sources/sre-book/INDEX.md +48 -0
- package/assets/dev-guide/fe/README.md +197 -0
- package/assets/dev-guide/fe/adapters/build-agents-md.sh +63 -0
- package/assets/dev-guide/fe/adapters/refresh.sh +68 -0
- package/assets/dev-guide/fe/principles/common.md +160 -0
- package/assets/dev-guide/fe/principles/react.md +183 -0
- package/assets/dev-guide/fe/principles/vue.md +196 -0
- package/assets/dev-guide/fe/skills/react/fe-build/SKILL.md +139 -0
- package/assets/dev-guide/fe/skills/react/fe-perf/SKILL.md +179 -0
- package/assets/dev-guide/fe/skills/react/fe-review/SKILL.md +141 -0
- package/assets/dev-guide/fe/skills/vue/fe-build/SKILL.md +148 -0
- package/assets/dev-guide/fe/skills/vue/fe-perf/SKILL.md +163 -0
- package/assets/dev-guide/fe/skills/vue/fe-review/SKILL.md +136 -0
- package/assets/dev-guide/fe/sources/a11y-dx/INDEX.md +41 -0
- package/assets/dev-guide/fe/sources/a11y-dx/chrome-devtools-memory.md +150 -0
- package/assets/dev-guide/fe/sources/a11y-dx/chrome-devtools-performance.md +99 -0
- package/assets/dev-guide/fe/sources/a11y-dx/lighthouse-audits.md +146 -0
- package/assets/dev-guide/fe/sources/a11y-dx/react-devtools-profiler.md +128 -0
- package/assets/dev-guide/fe/sources/a11y-dx/wcag22-new-criteria.md +174 -0
- package/assets/dev-guide/fe/sources/perf/01-core-web-vitals.md +58 -0
- package/assets/dev-guide/fe/sources/perf/02-inp.md +83 -0
- package/assets/dev-guide/fe/sources/perf/03-lcp-cls.md +130 -0
- package/assets/dev-guide/fe/sources/perf/04-speculation-rules.md +148 -0
- package/assets/dev-guide/fe/sources/perf/05-view-transitions.md +153 -0
- package/assets/dev-guide/fe/sources/perf/06-nextjs-caching.md +188 -0
- package/assets/dev-guide/fe/sources/perf/07-server-components.md +181 -0
- package/assets/dev-guide/fe/sources/perf/08-ppr.md +133 -0
- package/assets/dev-guide/fe/sources/perf/09-nextjs-image.md +200 -0
- package/assets/dev-guide/fe/sources/perf/10-optimize-lcp.md +201 -0
- package/assets/dev-guide/fe/sources/perf/INDEX.md +88 -0
- package/assets/dev-guide/fe/sources/react/INDEX.md +41 -0
- package/assets/dev-guide/fe/sources/react/keeping-components-pure.md +135 -0
- package/assets/dev-guide/fe/sources/react/no-effect-patterns.md +183 -0
- package/assets/dev-guide/fe/sources/react/react-compiler.md +182 -0
- package/assets/dev-guide/fe/sources/react/server-components.md +194 -0
- package/assets/dev-guide/fe/sources/react/server-functions.md +192 -0
- package/assets/dev-guide/fe/sources/react/suspense.md +218 -0
- package/assets/dev-guide/fe/sources/react/use-action-state.md +123 -0
- package/assets/dev-guide/fe/sources/react/use-form-status.md +158 -0
- package/assets/dev-guide/fe/sources/react/use-hook.md +153 -0
- package/assets/dev-guide/fe/sources/react/use-optimistic.md +194 -0
- package/assets/dev-guide/fe/sources/toss-ff/INDEX.md +58 -0
- package/assets/dev-guide/fe/sources/toss-ff/cohesion-code-directory.md +79 -0
- package/assets/dev-guide/fe/sources/toss-ff/cohesion-form-fields.md +110 -0
- package/assets/dev-guide/fe/sources/toss-ff/cohesion-magic-number.md +47 -0
- package/assets/dev-guide/fe/sources/toss-ff/coupling-item-edit-modal.md +124 -0
- package/assets/dev-guide/fe/sources/toss-ff/coupling-use-bottom-sheet.md +57 -0
- package/assets/dev-guide/fe/sources/toss-ff/coupling-use-page-state.md +71 -0
- package/assets/dev-guide/fe/sources/toss-ff/overview-4-principles.md +77 -0
- package/assets/dev-guide/fe/sources/toss-ff/predictability-hidden-logic.md +59 -0
- package/assets/dev-guide/fe/sources/toss-ff/predictability-http.md +77 -0
- package/assets/dev-guide/fe/sources/toss-ff/predictability-use-user.md +110 -0
- package/assets/dev-guide/fe/sources/toss-ff/readability-comparison-order.md +52 -0
- package/assets/dev-guide/fe/sources/toss-ff/readability-condition-name.md +64 -0
- package/assets/dev-guide/fe/sources/toss-ff/readability-login-start-page.md +183 -0
- package/assets/dev-guide/fe/sources/toss-ff/readability-magic-number.md +53 -0
- package/assets/dev-guide/fe/sources/toss-ff/readability-submit-button.md +73 -0
- package/assets/dev-guide/fe/sources/toss-ff/readability-ternary-operator.md +38 -0
- package/assets/dev-guide/fe/sources/toss-ff/readability-use-page-state.md +77 -0
- package/assets/dev-guide/fe/sources/toss-ff/readability-user-policy.md +98 -0
- package/assets/dev-guide/fe/sources/vue/INDEX.md +17 -0
- package/assets/dev-guide/fe/sources/vue/composition-api.md +251 -0
- package/assets/dev-guide/fe/sources/vue/nuxt-data-fetching.md +232 -0
- package/assets/dev-guide/fe/sources/vue/pinia-state-management.md +134 -0
- package/assets/dev-guide/fe/sources/vue/reactivity-pitfalls.md +261 -0
- package/assets/dev-guide/fe/sources/vue/style-guide-priority-a.md +117 -0
- package/assets/dev-guide/fe/sources/vue/style-guide-priority-b.md +231 -0
- package/assets/dev-guide/fe/sources/vue/style-guide-priority-c.md +86 -0
- package/assets/dev-guide/fe/sources/vue/style-guide-priority-d.md +72 -0
- package/dist/cli.js +42 -0
- package/dist/core/dashboard-cli.d.ts +12 -0
- package/dist/core/dashboard-cli.js +226 -0
- package/dist/core/dev-guide-injector.d.ts +26 -0
- package/dist/core/dev-guide-injector.js +137 -0
- package/dist/core/init.js +53 -0
- package/dist/core/lifecycle-classifier.d.ts +23 -0
- package/dist/core/lifecycle-classifier.js +104 -0
- package/dist/core/observability-backfill.d.ts +31 -0
- package/dist/core/observability-backfill.js +178 -0
- package/dist/core/observability-store.d.ts +58 -0
- package/dist/core/observability-store.js +195 -0
- package/dist/core/session-store.js +4 -0
- package/dist/core/spawn.d.ts +17 -0
- package/dist/core/spawn.js +179 -2
- package/dist/core/statusline-cli.js +34 -1
- package/dist/engine/compound-extractor.js +39 -0
- package/dist/engine/compound-loop.js +6 -0
- package/dist/engine/compound-retire.d.ts +20 -0
- package/dist/engine/compound-retire.js +85 -0
- package/dist/hooks/context-guard.js +25 -1
- package/dist/hooks/post-tool-use.js +48 -0
- package/dist/hooks/solution-injector.js +93 -0
- package/dist/host/install-claude.d.ts +6 -2
- package/dist/host/install-claude.js +74 -2
- package/dist/host/install-codex.d.ts +4 -0
- package/dist/host/install-codex.js +71 -0
- package/dist/host/install-orchestrator.js +1 -0
- package/package.json +6 -6
- package/plugin.json +1 -1
- package/scripts/postinstall.js +134 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# be-guide — 사내 백엔드 스킬 (Claude + Codex)
|
|
2
|
+
|
|
3
|
+
> AI 코딩 에이전트가 사내 합의된 BE 원칙대로 *구현 / 리뷰 / 성능 진단 / 보안 감사* 하게 만드는 스킬 번들.
|
|
4
|
+
> 단일 소스 (이 폴더), 양쪽 어댑터 (Claude SKILL.md / Codex AGENTS.md).
|
|
5
|
+
|
|
6
|
+
## 1. 무엇이 들어있는가
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
be-guide/
|
|
10
|
+
├─ sources/ # 원본 코퍼스 (수집일 예정 — 2026-05-18 스캐폴드)
|
|
11
|
+
│ ├─ 12factor/ 12-Factor App (12개 Factor)
|
|
12
|
+
│ ├─ sre-book/ Google SRE Book (SLO, RED Method, Monitoring)
|
|
13
|
+
│ ├─ owasp-api/ OWASP API Security Top 10 (2023)
|
|
14
|
+
│ ├─ otel/ OpenTelemetry (Traces/Metrics/Logs)
|
|
15
|
+
│ ├─ ddia/ Designing Data-Intensive Applications
|
|
16
|
+
│ ├─ api-design/ Stripe + GitHub + Google AIP
|
|
17
|
+
│ ├─ postgres/ Use The Index Luke + PostgreSQL 공식
|
|
18
|
+
│ ├─ node-runtime/ Node.js docs + Fastify + NestJS + Pino
|
|
19
|
+
│ └─ go-runtime/ Effective Go + Go scheduler + pprof + golangci-lint
|
|
20
|
+
├─ principles/ # 합의 원칙 (코퍼스 위에서 사내 의사결정)
|
|
21
|
+
│ ├─ common.md 스택 중립 (API 설계 4원칙, Error Model, Observability, Security, DB)
|
|
22
|
+
│ ├─ node.md Node.js/TypeScript 특화
|
|
23
|
+
│ └─ go.md Go 특화
|
|
24
|
+
├─ skills/ # 실제 호출되는 스킬
|
|
25
|
+
│ ├─ node/{be-build,be-review,be-perf,be-security}/SKILL.md
|
|
26
|
+
│ └─ go/{be-build,be-review,be-perf,be-security}/SKILL.md
|
|
27
|
+
├─ adapters/
|
|
28
|
+
│ └─ build-agents-md.sh SKILL.md → Codex AGENTS.md 변환
|
|
29
|
+
└─ README.md
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
4개 스킬 × 2개 스택 = **8개 스킬**:
|
|
33
|
+
|
|
34
|
+
| 스킬 | 호출 시점 | 무엇을 해주는가 |
|
|
35
|
+
|------|-----------|----------------|
|
|
36
|
+
| **be-build** | "이 API 명세대로 구현해줘" | 명세→API contract→체크리스트→테스트 매핑 강제, 에러 모델·관찰가능성·보안 기준선 적용 |
|
|
37
|
+
| **be-review** | "이 OpenAPI 스펙 리뷰해줘", "이 PR 리뷰해줘" | `[SEVERITY] file:line — 이슈` 형식 리뷰, 머지 차단/비차단 명시 |
|
|
38
|
+
| **be-perf** | "p99가 800ms야 잡아줘", "DB 쿼리 느려졌어" | p95/p99 진단 절차 (N+1, GC, Event Loop, lock, network) |
|
|
39
|
+
| **be-security** | "이 핸들러 OWASP 관점에서 검토해줘" | OWASP API Top 10 카테고리별 체크리스트 + 픽스 패턴 |
|
|
40
|
+
|
|
41
|
+
## 2. Claude Code 사용법
|
|
42
|
+
|
|
43
|
+
### 2.1 전역 설치 (모든 프로젝트에서 사용)
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# 1. be-guide 를 원하는 위치에 clone (또는 이미 받아둔 경로)
|
|
47
|
+
export BE_GUIDE_ROOT=~/work/be-guide # 본인 환경에 맞게
|
|
48
|
+
|
|
49
|
+
# 2. ~/.claude/skills 에 심볼릭 링크
|
|
50
|
+
cd ~/.claude/skills
|
|
51
|
+
ln -s "$BE_GUIDE_ROOT/skills/node/be-build" be-build-node
|
|
52
|
+
ln -s "$BE_GUIDE_ROOT/skills/node/be-review" be-review-node
|
|
53
|
+
ln -s "$BE_GUIDE_ROOT/skills/node/be-perf" be-perf-node
|
|
54
|
+
ln -s "$BE_GUIDE_ROOT/skills/node/be-security" be-security-node
|
|
55
|
+
ln -s "$BE_GUIDE_ROOT/skills/go/be-build" be-build-go
|
|
56
|
+
ln -s "$BE_GUIDE_ROOT/skills/go/be-review" be-review-go
|
|
57
|
+
ln -s "$BE_GUIDE_ROOT/skills/go/be-perf" be-perf-go
|
|
58
|
+
ln -s "$BE_GUIDE_ROOT/skills/go/be-security" be-security-go
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
이후 Claude Code 에서:
|
|
62
|
+
```
|
|
63
|
+
/be-build-node # 또는 자연어로 "be-build-node 스킬로 이 명세 구현해줘"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 2.2 프로젝트별 설치 (저장소에 묶어 배포)
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
cd <your-repo>
|
|
70
|
+
mkdir -p .claude/skills
|
|
71
|
+
ln -s "$BE_GUIDE_ROOT/skills/node/be-build" .claude/skills/be-build
|
|
72
|
+
# 또는 git submodule / sparse-checkout 으로 be-guide 자체를 묶음
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
`.claude/skills/` 의 SKILL.md 는 Claude Code 가 자동 인식.
|
|
76
|
+
|
|
77
|
+
## 3. Codex CLI 사용법
|
|
78
|
+
|
|
79
|
+
Codex 는 프로젝트 루트의 `AGENTS.md` (또는 `~/.codex/AGENTS.md` 전역) 를 읽음.
|
|
80
|
+
|
|
81
|
+
### 3.1 AGENTS.md 생성
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
export BE_GUIDE_ROOT=~/work/be-guide
|
|
85
|
+
export BE_GUIDE_SOURCE="사내 공유 be-guide v2026-05-18 (배포: <본인 이름>)" # AGENTS.md 출처 표기용 (선택)
|
|
86
|
+
|
|
87
|
+
cd <your-repo>
|
|
88
|
+
"$BE_GUIDE_ROOT/adapters/build-agents-md.sh" node be-build > AGENTS.md
|
|
89
|
+
|
|
90
|
+
# 또는 여러 스킬 합치기:
|
|
91
|
+
{
|
|
92
|
+
"$BE_GUIDE_ROOT/adapters/build-agents-md.sh" node be-build
|
|
93
|
+
echo
|
|
94
|
+
"$BE_GUIDE_ROOT/adapters/build-agents-md.sh" node be-review
|
|
95
|
+
echo
|
|
96
|
+
"$BE_GUIDE_ROOT/adapters/build-agents-md.sh" node be-perf
|
|
97
|
+
echo
|
|
98
|
+
"$BE_GUIDE_ROOT/adapters/build-agents-md.sh" node be-security
|
|
99
|
+
} > AGENTS.md
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
생성된 `AGENTS.md` 는 Codex 가 매 세션 자동 로딩.
|
|
103
|
+
|
|
104
|
+
### 3.2 sources/principles 도 같이 배포
|
|
105
|
+
|
|
106
|
+
`AGENTS.md` 가 `principles/common.md`, `principles/node.md` 를 참조하므로:
|
|
107
|
+
|
|
108
|
+
- **Option A** — `be-guide/` 자체를 저장소에 git submodule 로 포함
|
|
109
|
+
- **Option B** — 빌드 시 `cp -R be-guide/{principles,sources} <repo>/.be-guide/`
|
|
110
|
+
- **Option C** — 사내 npm 패키지 또는 Go 모듈로 배포
|
|
111
|
+
|
|
112
|
+
권장: **A (submodule)** — 버전 명시적, AI가 직접 참조 가능.
|
|
113
|
+
|
|
114
|
+
## 4. 사용 시나리오 예시
|
|
115
|
+
|
|
116
|
+
### 4.1 be-build
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
사용자: 첨부한 OpenAPI 명세대로 주문 생성 API 구현해줘.
|
|
120
|
+
/be-build-node
|
|
121
|
+
|
|
122
|
+
AI: ## 요구사항 체크리스트
|
|
123
|
+
- [ ] R-01: "POST /v1/orders, userId와 items 필수"
|
|
124
|
+
- [ ] R-02: "couponCode는 optional"
|
|
125
|
+
...
|
|
126
|
+
체크리스트 확인 후 API contract → TDD 들어갑니다.
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 4.2 be-review
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
사용자: PR #456 리뷰해줘. 이 OpenAPI 스펙 기준으로.
|
|
133
|
+
/be-review-go
|
|
134
|
+
|
|
135
|
+
AI: ## 리뷰 요약
|
|
136
|
+
- 변경: 5 files +248 -32
|
|
137
|
+
- HIGH 2, MED 3, LOW 1 / 머지 차단
|
|
138
|
+
|
|
139
|
+
[HIGH] internal/handler/order.go:55 — API1: 소유권 검증 없음
|
|
140
|
+
[HIGH] internal/repo/order.go:88 — SQL 문자열 concat, injection 위험
|
|
141
|
+
[MED] internal/service/order.go:120 — goroutine 종료 조건 없음
|
|
142
|
+
...
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### 4.3 be-perf
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
사용자: 주문 목록 API p99가 800ms야. 잡아줘.
|
|
149
|
+
/be-perf-node
|
|
150
|
+
|
|
151
|
+
AI: ## p99 진단
|
|
152
|
+
- 분류: DB N+1
|
|
153
|
+
- 측정 절차: Prisma 쿼리 이벤트 로깅으로 단일 요청 쿼리 수 확인
|
|
154
|
+
- 가설: findMany 후 루프에서 user를 N번 조회
|
|
155
|
+
- 검증 후 픽스: include: { user: { select: { id, name } } }
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 4.4 be-security
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
사용자: 이 결제 핸들러 OWASP 관점에서 검토해줘.
|
|
162
|
+
/be-security-node
|
|
163
|
+
|
|
164
|
+
AI: ## 보안 감사 결과
|
|
165
|
+
[HIGH] API1 src/payments/payment.handler.ts:42 — 소유권 검증 없음
|
|
166
|
+
[HIGH] API6 src/auth/auth.handler.ts:15 — 로그인 rate limit 없음
|
|
167
|
+
- API2: JWT RS256 + 만료 검증 ✅
|
|
168
|
+
- API4: Rate limit 전역 설정 ✅
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## 5. 유지보수
|
|
172
|
+
|
|
173
|
+
### 5.1 코퍼스 갱신
|
|
174
|
+
|
|
175
|
+
외부 문서 (OWASP, OTel, Go 공식 등) 가 갱신될 수 있으므로 **분기 1회 수동 갱신** 권장:
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
sources/<dir>/INDEX.md 의 출처들을 최신화해서 같은 형식으로 재저장해줘
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### 5.2 principles 수정 시
|
|
182
|
+
|
|
183
|
+
`principles/*.md` 는 사내 합의 문서. 수정 시:
|
|
184
|
+
1. 출처 (sources/ 또는 외부 URL) 명시
|
|
185
|
+
2. 변경 이력 PR 로 남김
|
|
186
|
+
3. 영향받는 SKILL.md 의 참조 위치 확인
|
|
187
|
+
|
|
188
|
+
### 5.3 새 스킬 추가
|
|
189
|
+
|
|
190
|
+
`skills/<stack>/<name>/SKILL.md` 한 파일 추가 + `adapters/build-agents-md.sh` 그대로 사용.
|
|
191
|
+
|
|
192
|
+
## 6. 출처 우선순위 (충돌 시)
|
|
193
|
+
|
|
194
|
+
코퍼스 간 충돌 발생 시 `principles/common.md` 에 명시된 순서 적용:
|
|
195
|
+
|
|
196
|
+
1. **12-Factor App** (실행 환경·운영 기준)
|
|
197
|
+
2. **Google SRE Book** (가용성·SLO)
|
|
198
|
+
3. **OWASP API Security** (보안)
|
|
199
|
+
4. **OpenTelemetry** (관찰가능성)
|
|
200
|
+
5. **DDIA** (데이터 시스템)
|
|
201
|
+
6. **프레임워크 공식** (Fastify, NestJS, Go stdlib)
|
|
202
|
+
7. **벤더 권장** (AWS, Stripe 등)
|
|
203
|
+
|
|
204
|
+
사용자 영향 우선순위: **security > availability > correctness > performance > readability**.
|
|
205
|
+
|
|
206
|
+
## 7. 라이선스 / 출처 주의
|
|
207
|
+
|
|
208
|
+
- 12-Factor App: CC BY 4.0
|
|
209
|
+
- Google SRE Book: CC BY-NC-ND 4.0 (비상업적 사용)
|
|
210
|
+
- OWASP API Security: CC BY-SA 4.0
|
|
211
|
+
- OpenTelemetry: Apache-2.0
|
|
212
|
+
- DDIA: O'Reilly 저작권 (요약만 수록, 원문 미포함)
|
|
213
|
+
- Stripe API 문서: 공개 참조 가능, 재배포 금지
|
|
214
|
+
- GitHub REST API 문서: CC BY 4.0
|
|
215
|
+
- Google AIP: Apache-2.0
|
|
216
|
+
- Use The Index, Luke: CC BY-NC 4.0
|
|
217
|
+
- PostgreSQL 공식 문서: PostgreSQL License
|
|
218
|
+
- Node.js / Fastify / NestJS / Pino: MIT
|
|
219
|
+
- Go 공식 문서: BSD-3-Clause
|
|
220
|
+
|
|
221
|
+
사내 배포 시 각 코퍼스 원본 출처 보존 (`sources/<dir>/INDEX.md` 에 명시됨).
|
|
222
|
+
|
|
223
|
+
## 8. 관련 문서
|
|
224
|
+
|
|
225
|
+
- fe-guide: `../fe/README.md` — 자매 프로젝트 (프론트엔드 스킬 번들)
|
|
226
|
+
- be-build/be-review 의 "명세→API contract→체크리스트→테스트 매핑" 강제는 명세 위반으로 인한 운영 장애 패턴에서 도출 — 스키마 optional/required 불일치가 핵심.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# build-agents-md.sh
|
|
3
|
+
#
|
|
4
|
+
# Claude SKILL.md (frontmatter + body) 를 Codex AGENTS.md 형식으로 변환.
|
|
5
|
+
#
|
|
6
|
+
# 사용법:
|
|
7
|
+
# ./adapters/build-agents-md.sh node be-build > /path/to/project/AGENTS.md
|
|
8
|
+
# ./adapters/build-agents-md.sh go be-review
|
|
9
|
+
#
|
|
10
|
+
# 동작:
|
|
11
|
+
# 1. skills/<stack>/<skill>/SKILL.md 읽음
|
|
12
|
+
# 2. YAML frontmatter (name, description) 떼어내고 본문만 추출
|
|
13
|
+
# 3. AGENTS.md 표준 헤더로 감싸고 stdout 출력
|
|
14
|
+
#
|
|
15
|
+
# Codex CLI 는 프로젝트 루트의 AGENTS.md 를 자동으로 읽음 (또는 ~/.codex/AGENTS.md 전역).
|
|
16
|
+
# Claude Code 는 SKILL.md 를 직접 사용 (skill loader 가 frontmatter 인식).
|
|
17
|
+
|
|
18
|
+
set -euo pipefail
|
|
19
|
+
|
|
20
|
+
if [[ $# -lt 2 ]]; then
|
|
21
|
+
echo "Usage: $0 <stack> <skill>" >&2
|
|
22
|
+
echo " stack: node | go" >&2
|
|
23
|
+
echo " skill: be-build | be-review | be-perf | be-security" >&2
|
|
24
|
+
exit 1
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
STACK="$1"
|
|
28
|
+
SKILL="$2"
|
|
29
|
+
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
30
|
+
SKILL_FILE="$ROOT/skills/$STACK/$SKILL/SKILL.md"
|
|
31
|
+
|
|
32
|
+
if [[ ! -f "$SKILL_FILE" ]]; then
|
|
33
|
+
echo "Error: $SKILL_FILE not found" >&2
|
|
34
|
+
exit 2
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
# frontmatter 파싱: 첫 --- 부터 두번째 --- 사이가 YAML
|
|
38
|
+
NAME=$(awk '/^---$/{c++; next} c==1 && /^name:/ {sub(/^name:[[:space:]]*/,""); print; exit}' "$SKILL_FILE")
|
|
39
|
+
DESC=$(awk '/^---$/{c++; next} c==1 && /^description:/ {sub(/^description:[[:space:]]*/,""); print; exit}' "$SKILL_FILE")
|
|
40
|
+
|
|
41
|
+
# 본문: 두번째 --- 이후
|
|
42
|
+
BODY=$(awk '/^---$/{c++; next} c>=2 {print}' "$SKILL_FILE")
|
|
43
|
+
|
|
44
|
+
cat <<EOF
|
|
45
|
+
# ${NAME:-$SKILL}
|
|
46
|
+
|
|
47
|
+
> ${DESC:-BE engineering guide for $STACK}
|
|
48
|
+
>
|
|
49
|
+
> Generated from \`skills/$STACK/$SKILL/SKILL.md\` on $(date +%Y-%m-%d).
|
|
50
|
+
> Source of truth: ${BE_GUIDE_SOURCE:-be-guide (OSS skill bundle — set BE_GUIDE_SOURCE to override)}
|
|
51
|
+
|
|
52
|
+
## When to apply
|
|
53
|
+
|
|
54
|
+
When working on $STACK code in this repository, follow the guidance below.
|
|
55
|
+
You can also load the principles via:
|
|
56
|
+
|
|
57
|
+
- \`principles/common.md\` — framework-neutral rules
|
|
58
|
+
- \`principles/$STACK.md\` — $STACK-specific rules
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
$BODY
|
|
63
|
+
EOF
|