oh-my-customcode 1.1.32 → 1.1.33
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 +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/templates/.claude/rules/MAY-optimization.md +2 -0
- package/templates/.claude/rules/MUST-sync-verification.md +17 -0
- package/templates/.claude/skills/pipeline/workflows/auto-dev.yaml +6 -3
- package/templates/manifest.json +1 -1
package/dist/cli/index.js
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -26,6 +26,8 @@
|
|
|
26
26
|
|
|
27
27
|
> **파이프 뒤 `$?`는 마지막 명령의 exit code (#1492)**: `script.sh | tail -N; echo $?`처럼 검증 스크립트를 파이프에 연결한 뒤 `$?`로 읽으면 파이프라인 **마지막 명령**(`tail`)의 종료코드를 얻는다 — 스크립트 자체가 실패(exit 1)해도 `tail`이 성공(exit 0)하면 `$?=0`으로 "통과"를 오판한다. 검증 스크립트는 파이프 없이 단독 실행하거나 `${PIPESTATUS[0]}`으로 원본 exit code를 읽는다. **주의**: `${PIPESTATUS[0]}` 자체는 R023 Workflow JS 템플릿 리터럴 이스케이프 이슈(#1438, `${...}`를 JS가 평가해 ReferenceError)와 별개 문제 — 본 항목은 셸에서 파이프 뒤 exit code를 읽는 각도다. Origin: #1492 (Session 132 회고 찐빠 #3). Cross-ref: R020 ("command executed" ≠ "succeeded").
|
|
28
28
|
|
|
29
|
+
> **계수/매칭 방법 확인 (#1521)**: 카운트를 대조하기 전에 **비교 대상이 무엇을 어떻게 세는지** 먼저 확인한다 — 같은 지표라도 계수 방법이 다르면 값이 달라진다. 대표 함정 3종: (a) glob(`ls *.md`, 최상위만) vs 재귀 `find`(하위 디렉토리 포함), (b) 부분 문자열 grep(`grep "sdd"`가 `sdd-dev`까지 매칭), (c) 확장자 필터(`--include='*.md'`가 `CLAUDE.md.en`을 미매칭). 검증 스크립트와 대조할 때는 **스크립트의 실제 계수 로직을 읽고** 같은 방법으로 센다. 위 `ls | tail` 시계열 오판(#1417)과 동류로, 도구의 기본 동작을 확인하지 않은 채 결과를 해석해 오탐에 이르는 패턴이다. Origin: #1521 (2026-07-20 세션에서 3회 반복; 두 서브에이전트가 독립적으로 동일 오탐에 도달).
|
|
30
|
+
|
|
29
31
|
<!--
|
|
30
32
|
> **v2.1.206+**: `/doctor`에 checked-in CLAUDE.md에서 코드베이스로부터 파생 가능한 내용을 잘라내도록 제안하는 체크가 추가되었습니다 — R005 "Context Optimization via HTML Comments"의 컨텍스트 절감 원칙과 정합(모델 불필요 메타데이터 축소).
|
|
31
33
|
-->
|
|
@@ -88,6 +88,23 @@ Wiki verification is also enforced by CI (`.github/workflows/wiki-sync.yml`).
|
|
|
88
88
|
|
|
89
89
|
Origin: #1512 (v1.1.28 커밋 staging에 dist/ 2파일 포함, 커밋 전 실측으로 정정; v1.1.12 dist/ untrack 회귀 방지). Cross-ref: R020 (완료 검증 — "실행됨 ≠ 성공").
|
|
90
90
|
|
|
91
|
+
### Count Sync — Exhaustive Grep, Not File Enumeration
|
|
92
|
+
|
|
93
|
+
카운트(스킬/에이전트/룰/가이드 수) 동기화는 **파일 목록 열거가 아니라 저장소 전수 grep + 의미 판별**로 수행한다. 같은 카운트가 15곳 이상에 흩어져 있어 열거식 위임은 목록에서 빠진 곳을 구조적으로 놓친다.
|
|
94
|
+
|
|
95
|
+
절차: (a) 실제 개수 실측(`ls -1d .claude/skills/*/ | wc -l` 등) → (b) 이전 값을 저장소 전역 grep → (c) 각 히트가 **카운트를 의미하는지 판별** → (d) 카운트 의미인 것만 정정.
|
|
96
|
+
|
|
97
|
+
무관한 숫자는 건드리지 않는다 — 버전번호(`v0.118.x`, CC `v2.1.118`), 이슈 번호, 과거 이력 서술("skill-count correction 114→118"), 스크립트 예시 주석은 정정 대상이 아니며 판단 근거와 함께 보고한다. grep 필터 주의: `--include='*.md'`는 `CLAUDE.md.en`/`CLAUDE.md.ko` 같은 **이중 확장자 파일을 매칭하지 못하므로**, 확장자 필터 없이 훑거나 별도 패턴을 병행한다.
|
|
98
|
+
|
|
99
|
+
| Anti-pattern | Required |
|
|
100
|
+
|--------------|----------|
|
|
101
|
+
| 카운트 동기화를 "갱신할 파일 목록" 열거로 위임 | 전수 grep으로 이전 값 히트를 모두 수집한 뒤 카운트 의미만 정정 |
|
|
102
|
+
| `--include='*.md'` 필터로 전수 grep 수행 | 확장자 필터 없이 훑거나 이중 확장자 패턴 병행 |
|
|
103
|
+
|
|
104
|
+
위임 프롬프트에는 항상 **"실측값 기준으로 동기화하라, 추측으로 숫자를 바꾸지 말라"**를 명시해, 오케스트레이터의 잘못된 전제를 서브에이전트가 정정할 여지를 남긴다(#1443).
|
|
105
|
+
|
|
106
|
+
Origin: #1521 (찐빠 #2 — v1.1.32 skills 118→114 동기화에서 파일 열거식 위임이 6곳만 갱신, CI 3곳 지적 + 전수 grep 9곳 추가 발견, 최종 15곳). Cross-ref: #1443 (실측값 기준 명시), #1287 (multi-copy 일관성).
|
|
107
|
+
|
|
91
108
|
## When Required
|
|
92
109
|
|
|
93
110
|
Any change to: agents, agent frontmatter, skills, guides, routing patterns, rules, wiki pages.
|
|
@@ -230,16 +230,19 @@ steps:
|
|
|
230
230
|
|
|
231
231
|
## Local CI-mimic verification (MUST run before marking implement done)
|
|
232
232
|
|
|
233
|
-
After all implementation tasks complete, run these scripts in sequence and halt on failure
|
|
233
|
+
After all implementation tasks complete, run these scripts in sequence and halt on failure.
|
|
234
|
+
Run each standalone (NO pipe) and read its exit code directly — `$?` after a pipe is the last command's code (R005, #1492):
|
|
234
235
|
|
|
235
236
|
1. bash .github/scripts/verify-template-sync.sh
|
|
236
237
|
2. bash .github/scripts/verify-wiki-sync.sh
|
|
238
|
+
3. bun .github/scripts/validate-docs.ts --programmatic-only
|
|
237
239
|
|
|
238
|
-
If
|
|
240
|
+
If any fails:
|
|
239
241
|
- For wiki-sync failures: delegate to wiki-curator to generate missing pages (`/omcustom:wiki ingest <path>`)
|
|
240
242
|
(Regenerating the wiki source-hash manifest targets `wiki/.source-hashes.json` ALWAYS — NEVER `templates/manifest.json`. Command: `bash .github/scripts/lib/source-hash.sh generate wiki/.source-hashes.json`. Ref #1423.)
|
|
241
243
|
- For template-sync failures: delegate to mgr-updater to sync `.claude/` -> `templates/.claude/`
|
|
242
|
-
-
|
|
244
|
+
- For validate-docs failures (count mismatch): delegate to mgr-updater to fix counts via EXHAUSTIVE grep across all docs — file-enumeration misses `.en`/`.ko` variants and secondary docs (#1521 — v1.1.32에서 validate-docs 누락으로 push 왕복 1회 발생)
|
|
245
|
+
- After fixes, re-run the scripts until all pass
|
|
243
246
|
|
|
244
247
|
This mirrors CI and prevents the known 1-2 wasted push cycles per release (ref: issue #927, v0.98.0 PR #925).
|
|
245
248
|
description: "Per-issue implementation with lifecycle, specialist routing, and CI-mimic verification"
|
package/templates/manifest.json
CHANGED