oh-my-customcode 0.137.0 → 0.138.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/dist/cli/index.js
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Pipeline Label Standards
|
|
2
|
+
|
|
3
|
+
Canonical reference for GitHub issue label semantics in the auto-dev pipeline.
|
|
4
|
+
Used by `scope-selection` to include/exclude issues and by `implement` for lifecycle management.
|
|
5
|
+
|
|
6
|
+
## Label Definitions
|
|
7
|
+
|
|
8
|
+
| Label | Meaning | scope-selection 처리 |
|
|
9
|
+
|-------|---------|----------------------|
|
|
10
|
+
| `verify-ready` | Triage 완료, 즉시 verify 가능 (자동화 후보) | INCLUDE (preferred) |
|
|
11
|
+
| `verify-done` | Triage 완료했으나 deferred 또는 이미 처리됨 (이번 사이클 미포함) | EXCLUDE |
|
|
12
|
+
| `in-progress` | 작업 진행 중 (다른 세션에서 claim됨) | EXCLUDE |
|
|
13
|
+
| `needs-review` | 사람 검토 필요 (자동 파이프라인 진입 불가) | EXCLUDE |
|
|
14
|
+
| `decision-needed` | 결정 필요 (보안, 정책 critical) | EXCLUDE |
|
|
15
|
+
| `automated` | Auto-generated issue (claude-native skill 등) | INCLUDE if other criteria met |
|
|
16
|
+
| `claude-code-release` | CC version compat docs trigger | INCLUDE (preferred) |
|
|
17
|
+
| `documentation` | Docs scope | INCLUDE (preferred for docs-only release) |
|
|
18
|
+
| `enhancement-yaml-only` | YAML/config-only scope change | INCLUDE (eligible for docs-only compression) |
|
|
19
|
+
|
|
20
|
+
## Selection Rule
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
EXCLUDE if:
|
|
24
|
+
- blocked_by_decision == true
|
|
25
|
+
- labels ∩ {decision-needed, needs-review, verify-done, manual-action, in-progress} ≠ ∅
|
|
26
|
+
|
|
27
|
+
INCLUDE (preferred tier):
|
|
28
|
+
- labels ∩ {verify-ready, claude-code-release, documentation} ≠ ∅
|
|
29
|
+
|
|
30
|
+
INCLUDE (standard tier):
|
|
31
|
+
- P1/P2/P3 issues not in excluded set
|
|
32
|
+
|
|
33
|
+
Tie-break priority: P1 > P2 > P3 > unclassified
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Compression Eligibility (G6)
|
|
37
|
+
|
|
38
|
+
An issue is eligible for `docs-only` compression mode if its labels include at least one of:
|
|
39
|
+
`documentation`, `automated`, `claude-code-release`, `enhancement-yaml-only`
|
|
40
|
+
|
|
41
|
+
If ALL scoped issues are compression-eligible AND scope size ≤ 3, the pipeline MAY use
|
|
42
|
+
`compression_mode=docs-only` (skip professor-triage / release-plan / deep-plan / deep-verify skill spawns).
|
|
43
|
+
|
|
44
|
+
## Lifecycle Labels (set by `implement` step)
|
|
45
|
+
|
|
46
|
+
| Transition | Action |
|
|
47
|
+
|-----------|--------|
|
|
48
|
+
| Work started | Add `in-progress`, assign @me |
|
|
49
|
+
| Work succeeded | Remove `in-progress`, add `verify-ready` |
|
|
50
|
+
| Work failed | Remove `in-progress`, add `needs-review` |
|
|
51
|
+
| Released | Remove `verify-ready`, close with "Fixed in v{version}" |
|
|
52
|
+
| Deferred | Add `verify-done`, label "Deferred from v{version}" |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: auto-dev
|
|
2
2
|
description: "Automated development pipeline — from issue triage to release"
|
|
3
|
-
version: "2.
|
|
3
|
+
version: "2.1.0"
|
|
4
4
|
|
|
5
5
|
# Design rule: each pipeline run produces ONE bounded release unit (3-7 issues), not all open issues.
|
|
6
6
|
# This pipeline is a project-agnostic template. Project-specific overrides belong in
|
|
@@ -31,7 +31,20 @@ steps:
|
|
|
31
31
|
- Local HEAD: git rev-parse --short HEAD
|
|
32
32
|
- Behind state: synced or 0
|
|
33
33
|
|
|
34
|
-
5. Cross-reference
|
|
34
|
+
5. Cross-reference checks (advisory, do NOT halt):
|
|
35
|
+
a. Memory vs git consistency (G7):
|
|
36
|
+
- latest_tag=$(git tag --sort=-v:refname | head -1)
|
|
37
|
+
- Compare with "Last release" or equivalent line in pipeline memory/context
|
|
38
|
+
- If mismatch: stderr warning "[pre-triage] WARNING: memory says vX.Y.Z but git latest tag is vA.B.C — update memory after pipeline completion"
|
|
39
|
+
- Do NOT halt (advisory only — memory updates are session-end responsibility)
|
|
40
|
+
|
|
41
|
+
b. Issue body stale version references (G5):
|
|
42
|
+
- Retrieve open issues: gh issue list --state open --limit 100 --json number,body
|
|
43
|
+
- For each issue body, extract all vX.Y.Z patterns (regex: v\d+\.\d+\.\d+)
|
|
44
|
+
- Retrieve git tag list: git tag --list
|
|
45
|
+
- Flag any issue referencing a version not present in git tags:
|
|
46
|
+
"[pre-triage] WARNING: Issue #N references vX.Y.Z (not in git tags) — body may be stale"
|
|
47
|
+
- Output all warnings as advisory log; do NOT halt
|
|
35
48
|
|
|
36
49
|
Phase 1 — Ensure required labels exist, then scan issues.
|
|
37
50
|
|
|
@@ -50,44 +63,95 @@ steps:
|
|
|
50
63
|
- order: topological sort over dependencies
|
|
51
64
|
|
|
52
65
|
4. Output: dependency-sorted issue table with blocked_by_decision flag.
|
|
53
|
-
description: "
|
|
66
|
+
description: "Sync remote, stale-version check, memory consistency check, scan issues"
|
|
54
67
|
|
|
55
68
|
- name: scope-selection
|
|
56
69
|
prompt: |
|
|
57
70
|
Select a single bounded release scope (3-7 issues) for THIS pipeline run.
|
|
58
71
|
|
|
59
|
-
|
|
72
|
+
## Step 0 — Milestone state pre-check (G3)
|
|
73
|
+
|
|
74
|
+
Before creating a milestone for version vX.Y.Z:
|
|
75
|
+
1. Query all milestones (open and closed):
|
|
76
|
+
existing=$(gh api 'repos/{owner}/{repo}/milestones?state=all&per_page=100' --jq '.[] | select(.title == "vX.Y.Z") | "\(.number)|\(.state)"')
|
|
77
|
+
2. Evaluate:
|
|
78
|
+
- If existing && state=closed:
|
|
79
|
+
HALT with "[scope-selection] BLOCKED: milestone vX.Y.Z already exists and is closed. Bump version or reopen milestone manually."
|
|
80
|
+
- If existing && state=open:
|
|
81
|
+
Use existing milestone as-is (do not create new)
|
|
82
|
+
- If not existing:
|
|
83
|
+
Create new milestone: gh api repos/{owner}/{repo}/milestones --method POST --field title="vX.Y.Z"
|
|
84
|
+
|
|
85
|
+
## Step 1 — Label-based filtering (G4)
|
|
86
|
+
|
|
87
|
+
Reference label semantics: .claude/skills/pipeline/labels.md
|
|
88
|
+
|
|
89
|
+
Apply filter rules:
|
|
90
|
+
- EXCLUDE: blocked_by_decision == true OR labels ∩ {decision-needed, needs-review, verify-done, manual-action, in-progress} ≠ ∅
|
|
91
|
+
- INCLUDE (preferred): labels ∩ {verify-ready, claude-code-release, documentation} ≠ ∅
|
|
92
|
+
- INCLUDE (standard): P1/P2/P3 issues not in excluded set
|
|
93
|
+
- Tie-break: P1 > P2 > P3 > unclassified
|
|
94
|
+
|
|
95
|
+
## Step 2 — Selection rules
|
|
96
|
+
|
|
60
97
|
1. Determine release tier:
|
|
61
98
|
- No tags yet → v0.1.0
|
|
62
99
|
- Otherwise: highest-priority open tier (bug → chore → feature)
|
|
63
|
-
2.
|
|
64
|
-
- blocked_by_decision == true
|
|
65
|
-
- Issues requiring manual/human action
|
|
100
|
+
2. Apply Step 1 filter (label-based exclusion and preference)
|
|
66
101
|
3. Sort by dependency: prerequisites before dependents
|
|
67
102
|
4. Cap at 7 issues; if priority issues < 7, stop at that priority (don't mix tiers)
|
|
68
103
|
5. Minimum 1 issue; if 0 eligible, halt with "no eligible issues for auto-dev run"
|
|
69
104
|
|
|
70
|
-
|
|
105
|
+
Assign scoped issues to milestone.
|
|
71
106
|
Output markdown release manifest:
|
|
72
|
-
| order | # | title | prerequisite | effort |
|
|
107
|
+
| order | # | title | prerequisite | effort | labels |
|
|
73
108
|
|
|
74
109
|
Persist manifest as pipeline state for subsequent steps.
|
|
75
|
-
description: "
|
|
110
|
+
description: "Milestone state pre-check, label filter, pick 3-7 issues as v{X.Y.Z} scope"
|
|
76
111
|
depends_on: pre-triage
|
|
77
112
|
|
|
113
|
+
- name: compression-mode-eval
|
|
114
|
+
prompt: |
|
|
115
|
+
Evaluate whether this pipeline run qualifies for docs-only compression mode (G6).
|
|
116
|
+
|
|
117
|
+
## Compression Eligibility Check
|
|
118
|
+
|
|
119
|
+
Reference: .claude/skills/pipeline/labels.md — "Compression Eligibility" section
|
|
120
|
+
|
|
121
|
+
Conditions for compression_mode=docs-only:
|
|
122
|
+
1. scope size ≤ 3 (number of issues in release manifest)
|
|
123
|
+
2. ALL scoped issues have labels ∩ {documentation, automated, claude-code-release, enhancement-yaml-only} ≠ ∅
|
|
124
|
+
|
|
125
|
+
## Decision
|
|
126
|
+
|
|
127
|
+
If BOTH conditions met → set compression_mode=docs-only
|
|
128
|
+
- triage step: skip professor-triage skill; perform direct manifest summary instead
|
|
129
|
+
- plan step: skip release-plan skill; single-response plan instead
|
|
130
|
+
- deep-plan step: skip deep-plan skill; single-response implementation notes instead
|
|
131
|
+
- deep-verify step: skip deep-verify skill; perform self-review checklist instead
|
|
132
|
+
- Log: "[compression-mode] docs-only compression activated (scope={n}, all docs/yaml labels)"
|
|
133
|
+
|
|
134
|
+
Otherwise → set compression_mode=standard
|
|
135
|
+
- All pipeline steps execute normally with full skill spawns
|
|
136
|
+
- Log: "[compression-mode] standard mode (scope={n}, mixed labels or large scope)"
|
|
137
|
+
|
|
138
|
+
Output: compression_mode value as pipeline state for downstream steps.
|
|
139
|
+
description: "Evaluate docs-only compression eligibility; set compression_mode state"
|
|
140
|
+
depends_on: scope-selection
|
|
141
|
+
|
|
78
142
|
- name: triage
|
|
79
143
|
skill: professor-triage
|
|
80
|
-
description: "Cross-analysis triage with priority assessment (scoped to release manifest)"
|
|
81
|
-
depends_on:
|
|
144
|
+
description: "Cross-analysis triage with priority assessment (scoped to release manifest) — skipped if compression_mode=docs-only"
|
|
145
|
+
depends_on: compression-mode-eval
|
|
82
146
|
|
|
83
147
|
- name: plan
|
|
84
148
|
skill: release-plan
|
|
85
|
-
description: "Release unit plan from triaged issues"
|
|
149
|
+
description: "Release unit plan from triaged issues — skipped if compression_mode=docs-only"
|
|
86
150
|
depends_on: triage
|
|
87
151
|
|
|
88
152
|
- name: deep-plan
|
|
89
153
|
skill: deep-plan
|
|
90
|
-
description: "Research-validated implementation plan (research → plan → verify)"
|
|
154
|
+
description: "Research-validated implementation plan (research → plan → verify) — skipped if compression_mode=docs-only"
|
|
91
155
|
depends_on: plan
|
|
92
156
|
|
|
93
157
|
- name: implement
|
|
@@ -165,7 +229,7 @@ steps:
|
|
|
165
229
|
|
|
166
230
|
- name: deep-verify
|
|
167
231
|
skill: deep-verify
|
|
168
|
-
description: "Multi-angle release quality verification"
|
|
232
|
+
description: "Multi-angle release quality verification — self-review checklist only if compression_mode=docs-only"
|
|
169
233
|
depends_on: verify-build
|
|
170
234
|
|
|
171
235
|
- name: release
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# templates/
|
|
2
|
+
|
|
3
|
+
> **oh-my-customcode 배포 디렉토리**
|
|
4
|
+
>
|
|
5
|
+
> `omcustom init` 실행 시 새 프로젝트에 복사되는 파일들의 소스입니다.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 목적 (Purpose)
|
|
10
|
+
|
|
11
|
+
`templates/`는 oh-my-customcode의 **배포 구조(distribution structure)**입니다.
|
|
12
|
+
|
|
13
|
+
사용자가 새 프로젝트에서 `omcustom init`을 실행하면, 이 디렉토리의 내용이 대상 프로젝트 루트로 복사됩니다. 즉, 이 디렉토리는 oh-my-customcode가 제공하는 에이전트 시스템의 **완성된 스냅샷**입니다.
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
oh-my-customcode 소스 레포
|
|
17
|
+
└── templates/ ← 배포 소스 (이 디렉토리)
|
|
18
|
+
├── .claude/
|
|
19
|
+
├── guides/
|
|
20
|
+
└── CLAUDE.md
|
|
21
|
+
|
|
22
|
+
사용자 프로젝트 (omcustom init 후)
|
|
23
|
+
└── your-project/
|
|
24
|
+
├── .claude/ ← templates/.claude/ 에서 복사
|
|
25
|
+
├── guides/ ← templates/guides/ 에서 복사
|
|
26
|
+
└── CLAUDE.md ← templates/CLAUDE.md 에서 복사
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 메인 README와의 관계
|
|
32
|
+
|
|
33
|
+
| 문서 | 대상 | 설명 |
|
|
34
|
+
|------|------|------|
|
|
35
|
+
| [`/README.md`](../README.md) | oh-my-customcode **자체** | 프로젝트 소개, 철학, 설치 가이드 |
|
|
36
|
+
| `templates/README.md` (이 파일) | **배포 콘텐츠** | 배포되는 파일 구조와 카운트 |
|
|
37
|
+
|
|
38
|
+
메인 README는 oh-my-customcode라는 도구를 설명합니다. 이 파일은 그 도구가 배포하는 내용물을 설명합니다.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 디렉토리 구조
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
templates/
|
|
46
|
+
├── README.md # 이 파일 (배포 콘텐츠 문서)
|
|
47
|
+
├── CLAUDE.md # 에이전트 시스템 진입점
|
|
48
|
+
├── manifest.json # 배포 컴포넌트 카운트 및 메타데이터
|
|
49
|
+
├── .claude/
|
|
50
|
+
│ ├── agents/ # 에이전트 정의 파일 (*.md, 49개)
|
|
51
|
+
│ ├── skills/ # 스킬 모듈 (각 디렉토리에 SKILL.md, 117개)
|
|
52
|
+
│ ├── rules/ # 전역 규칙 (R000–R022, 22개)
|
|
53
|
+
│ ├── hooks/
|
|
54
|
+
│ │ ├── hooks.json # 훅 이벤트 설정 (PreToolUse/PostToolUse 등)
|
|
55
|
+
│ │ └── scripts/ # 훅 셸 스크립트 (34개)
|
|
56
|
+
│ ├── contexts/ # 컨텍스트 설정 파일 (ecomode 등)
|
|
57
|
+
│ └── ontology/ # Ontology-RAG 지식 그래프
|
|
58
|
+
└── guides/ # 레퍼런스 문서 디렉토리 (50개)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 컴포넌트 (Components)
|
|
64
|
+
|
|
65
|
+
아래 카운트는 `templates/manifest.json`과 동기화됩니다.
|
|
66
|
+
CI의 `verify-template-sync.sh`가 소스와 templates/ 간 일치를 검증합니다.
|
|
67
|
+
|
|
68
|
+
### Agents (49)
|
|
69
|
+
|
|
70
|
+
`.claude/agents/*.md` — 에이전트 정의 파일.
|
|
71
|
+
|
|
72
|
+
각 파일은 단일 전문가 에이전트를 정의합니다. frontmatter에 `name`, `description`, `model`, `tools`가 필수 포함됩니다.
|
|
73
|
+
|
|
74
|
+
| 카테고리 | 수량 |
|
|
75
|
+
|----------|------|
|
|
76
|
+
| SW Engineer / Language | 6 |
|
|
77
|
+
| SW Engineer / Backend | 6 |
|
|
78
|
+
| SW Engineer / Frontend | 5 |
|
|
79
|
+
| SW Engineer / Tooling | 4 |
|
|
80
|
+
| DE Engineer | 6 |
|
|
81
|
+
| SW Engineer / Database | 4 |
|
|
82
|
+
| Security | 1 |
|
|
83
|
+
| SW Architect | 2 |
|
|
84
|
+
| Infra Engineer | 2 |
|
|
85
|
+
| QA Team | 3 |
|
|
86
|
+
| Manager | 6 |
|
|
87
|
+
| System | 4 |
|
|
88
|
+
|
|
89
|
+
### Skills (117)
|
|
90
|
+
|
|
91
|
+
`.claude/skills/*/SKILL.md` — 재사용 가능한 스킬 모듈.
|
|
92
|
+
|
|
93
|
+
각 스킬 디렉토리에 `SKILL.md`가 있으며, 필요에 따라 `scripts/` 서브디렉토리를 포함합니다.
|
|
94
|
+
|
|
95
|
+
스킬 범위(`scope`):
|
|
96
|
+
- `core` — 범용 개발 도구 (init 시 배포됨)
|
|
97
|
+
- `harness` — 에이전트/스킬/룰 유지보수 도구 (init 시 배포됨)
|
|
98
|
+
- `package` — 패키지 특화 도구 (선택 배포)
|
|
99
|
+
|
|
100
|
+
### Rules (22)
|
|
101
|
+
|
|
102
|
+
`.claude/rules/*.md` — 에이전트 행동 규칙 (R000–R022, R014 없음).
|
|
103
|
+
|
|
104
|
+
파일명 형식: `{PRIORITY}-{name}.md` (예: `MUST-agent-identification.md`)
|
|
105
|
+
|
|
106
|
+
| 우선순위 | 의미 | 예 |
|
|
107
|
+
|----------|------|-----|
|
|
108
|
+
| `MUST` | 절대 준수 | R007 에이전트 식별, R009 병렬 실행 |
|
|
109
|
+
| `SHOULD` | 강력 권장 | R003 상호작용, R013 Ecomode |
|
|
110
|
+
| `MAY` | 선택 | R005 최적화 |
|
|
111
|
+
|
|
112
|
+
### Guides (50)
|
|
113
|
+
|
|
114
|
+
`guides/*/` — 레퍼런스 문서 디렉토리.
|
|
115
|
+
|
|
116
|
+
각 디렉토리는 단일 토픽에 대한 best practices, 튜토리얼, 또는 설계 가이드를 담습니다. 에이전트가 작업 중 참조합니다 (R006 관심사 분리).
|
|
117
|
+
|
|
118
|
+
### Hooks (34)
|
|
119
|
+
|
|
120
|
+
`.claude/hooks/scripts/*.sh` — 라이프사이클 훅 스크립트.
|
|
121
|
+
|
|
122
|
+
`hooks.json`에 정의된 이벤트(PreToolUse, PostToolUse, Stop 등)에 반응합니다.
|
|
123
|
+
|
|
124
|
+
주요 훅 스크립트:
|
|
125
|
+
|
|
126
|
+
| 스크립트 | 역할 |
|
|
127
|
+
|----------|------|
|
|
128
|
+
| `secret-filter.sh` | API 키/시크릿 노출 방지 |
|
|
129
|
+
| `stage-blocker.sh` | 스테이지 게이트 강제 |
|
|
130
|
+
| `rule-deletion-guard.sh` | 규칙 파일 삭제 차단 |
|
|
131
|
+
| `stuck-detector.sh` | 에이전트 무한루프 감지 |
|
|
132
|
+
| `context-budget-advisor.sh` | 컨텍스트 예산 경고 |
|
|
133
|
+
| `cost-cap-advisor.sh` | 비용 한도 초과 경고 |
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 사용 방법 (Usage)
|
|
138
|
+
|
|
139
|
+
### omcustom init
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# 전역 설치
|
|
143
|
+
npm install -g oh-my-customcode
|
|
144
|
+
|
|
145
|
+
# 프로젝트에 oh-my-customcode 초기화
|
|
146
|
+
cd your-project
|
|
147
|
+
omcustom init
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
`omcustom init`은 이 `templates/` 디렉토리의 내용을 대상 프로젝트에 복사합니다:
|
|
151
|
+
1. `.claude/` 전체 (agents, skills, rules, hooks, contexts, ontology)
|
|
152
|
+
2. `guides/` 전체
|
|
153
|
+
3. `CLAUDE.md` (프로젝트 진입점)
|
|
154
|
+
|
|
155
|
+
### 선택적 업데이트
|
|
156
|
+
|
|
157
|
+
이미 초기화된 프로젝트를 최신 버전으로 업데이트할 때:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
omcustom update
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## 동기화 검증
|
|
166
|
+
|
|
167
|
+
소스(`.claude/`, `guides/`)와 `templates/` 간 동기화는 CI에서 자동 검증됩니다.
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
# 로컬 검증
|
|
171
|
+
bash .github/scripts/verify-template-sync.sh
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
검증 항목:
|
|
175
|
+
- 스킬 수 일치 (`.claude/skills/` ↔ `templates/.claude/skills/`)
|
|
176
|
+
- 에이전트 수 일치
|
|
177
|
+
- 룰 수 일치
|
|
178
|
+
- 가이드 수 일치
|
|
179
|
+
- 훅 스크립트 수 일치
|
|
180
|
+
- `manifest.json` 카운트 일치
|
|
181
|
+
|
|
182
|
+
소스에 새 파일을 추가할 때는 반드시 `templates/`에도 동기화해야 합니다.
|
|
183
|
+
`manifest.json`의 카운트도 함께 업데이트하세요.
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## 기여 가이드 참조
|
|
188
|
+
|
|
189
|
+
에이전트, 스킬, 룰 추가/수정 시 3중 동기화가 필요합니다:
|
|
190
|
+
|
|
191
|
+
1. **원본**: `.claude/agents/`, `.claude/skills/`, `.claude/rules/`, `guides/`
|
|
192
|
+
2. **templates 복사**: `templates/.claude/agents/`, `templates/.claude/skills/` 등
|
|
193
|
+
3. **카운트 업데이트**: `templates/manifest.json`, `README.md`, `CLAUDE.md` 등
|
|
194
|
+
|
|
195
|
+
자세한 내용은 프로젝트 루트의 기여 가이드 및 `guides/` 참조 문서를 확인하세요.
|
package/templates/manifest.json
CHANGED