oh-my-customcode 0.133.0 → 0.135.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
|
@@ -1019,7 +1019,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
1019
1019
|
this._exitCallback = (err) => {
|
|
1020
1020
|
if (err.code !== "commander.executeSubCommandAsync") {
|
|
1021
1021
|
throw err;
|
|
1022
|
-
}
|
|
1022
|
+
}
|
|
1023
1023
|
};
|
|
1024
1024
|
}
|
|
1025
1025
|
return this;
|
|
@@ -2334,7 +2334,7 @@ var init_package = __esm(() => {
|
|
|
2334
2334
|
workspaces: [
|
|
2335
2335
|
"packages/*"
|
|
2336
2336
|
],
|
|
2337
|
-
version: "0.
|
|
2337
|
+
version: "0.135.0",
|
|
2338
2338
|
description: "Batteries-included agent harness for Claude Code",
|
|
2339
2339
|
type: "module",
|
|
2340
2340
|
bin: {
|
|
@@ -19252,7 +19252,7 @@ var require_dbcs_codec = __commonJS((exports) => {
|
|
|
19252
19252
|
if (resCode !== undefined) {
|
|
19253
19253
|
dbcsCode = resCode;
|
|
19254
19254
|
nextChar = uCode;
|
|
19255
|
-
}
|
|
19255
|
+
}
|
|
19256
19256
|
}
|
|
19257
19257
|
seqObj = undefined;
|
|
19258
19258
|
} else if (uCode >= 0) {
|
|
@@ -19317,7 +19317,7 @@ var require_dbcs_codec = __commonJS((exports) => {
|
|
|
19317
19317
|
newBuf[j2++] = dbcsCode >> 8;
|
|
19318
19318
|
newBuf[j2++] = dbcsCode & 255;
|
|
19319
19319
|
}
|
|
19320
|
-
}
|
|
19320
|
+
}
|
|
19321
19321
|
this.seqObj = undefined;
|
|
19322
19322
|
}
|
|
19323
19323
|
if (this.leadSurrogate !== -1) {
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -361,7 +361,8 @@
|
|
|
361
361
|
"hooks": [
|
|
362
362
|
{
|
|
363
363
|
"type": "command",
|
|
364
|
-
"command": "#!/bin/bash\ninput=$(cat)\nfile_path=$(echo \"$input\" | jq -r '.tool_input.file_path // \"\"')\n\nif [ -n \"$file_path\" ] && [ -f \"$file_path\" ]; then\n dir=$(dirname \"$file_path\")\n project_root=\"$dir\"\n while [ \"$project_root\" != \"/\" ] && [ ! -f \"$project_root/package.json\" ]; do\n project_root=$(dirname \"$project_root\")\n done\n \n if [ -f \"$project_root/tsconfig.json\" ]; then\n cd \"$project_root\" && npx tsc --noEmit --pretty false 2>&1 | grep \"$file_path\" | head -10 >&2 || true\n fi\nfi\n\necho \"$input\""
|
|
364
|
+
"command": "#!/bin/bash\ninput=$(cat)\nfile_path=$(echo \"$input\" | jq -r '.tool_input.file_path // \"\"')\n\nif [ -n \"$file_path\" ] && [ -f \"$file_path\" ]; then\n dir=$(dirname \"$file_path\")\n project_root=\"$dir\"\n while [ \"$project_root\" != \"/\" ] && [ ! -f \"$project_root/package.json\" ]; do\n project_root=$(dirname \"$project_root\")\n done\n \n if [ -f \"$project_root/tsconfig.json\" ]; then\n cd \"$project_root\" && npx tsc --noEmit --pretty false 2>&1 | grep \"$file_path\" | head -10 >&2 || true\n fi\nfi\n\necho \"$input\"",
|
|
365
|
+
"continueOnBlock": true
|
|
365
366
|
}
|
|
366
367
|
],
|
|
367
368
|
"description": "TypeScript check after editing .ts/.tsx files"
|
|
@@ -371,7 +372,8 @@
|
|
|
371
372
|
"hooks": [
|
|
372
373
|
{
|
|
373
374
|
"type": "command",
|
|
374
|
-
"command": "#!/bin/bash\ninput=$(cat)\nfile_path=$(echo \"$input\" | jq -r '.tool_input.file_path // \"\"')\n\nif [ -n \"$file_path\" ] && [ -f \"$file_path\" ]; then\n console_logs=$(grep -n \"console\\\\.log\" \"$file_path\" 2>/dev/null || true)\n \n if [ -n \"$console_logs\" ]; then\n echo \"[Hook] WARNING: console.log found in $file_path\" >&2\n echo \"$console_logs\" | head -5 >&2\n echo \"[Hook] Remove console.log before committing\" >&2\n fi\nfi\n\necho \"$input\""
|
|
375
|
+
"command": "#!/bin/bash\ninput=$(cat)\nfile_path=$(echo \"$input\" | jq -r '.tool_input.file_path // \"\"')\n\nif [ -n \"$file_path\" ] && [ -f \"$file_path\" ]; then\n console_logs=$(grep -n \"console\\\\.log\" \"$file_path\" 2>/dev/null || true)\n \n if [ -n \"$console_logs\" ]; then\n echo \"[Hook] WARNING: console.log found in $file_path\" >&2\n echo \"$console_logs\" | head -5 >&2\n echo \"[Hook] Remove console.log before committing\" >&2\n fi\nfi\n\necho \"$input\"",
|
|
376
|
+
"continueOnBlock": true
|
|
375
377
|
}
|
|
376
378
|
],
|
|
377
379
|
"description": "Warn about console.log statements after edits"
|
|
@@ -391,7 +393,8 @@
|
|
|
391
393
|
"hooks": [
|
|
392
394
|
{
|
|
393
395
|
"type": "command",
|
|
394
|
-
"command": "#!/bin/bash\ninput=$(cat)\nfile_path=$(echo \"$input\" | jq -r '.tool_input.file_path // \"\"')\n\nif [ -n \"$file_path\" ] && [ -f \"$file_path\" ]; then\n # Format with ruff\n if command -v ruff >/dev/null 2>&1; then\n ruff format --quiet \"$file_path\" 2>&1 >&2\n ruff check --fix --quiet \"$file_path\" 2>&1 >&2 || true\n echo \"[Hook] Python formatted with ruff\" >&2\n fi\nfi\n\necho \"$input\""
|
|
396
|
+
"command": "#!/bin/bash\ninput=$(cat)\nfile_path=$(echo \"$input\" | jq -r '.tool_input.file_path // \"\"')\n\nif [ -n \"$file_path\" ] && [ -f \"$file_path\" ]; then\n # Format with ruff\n if command -v ruff >/dev/null 2>&1; then\n ruff format --quiet \"$file_path\" 2>&1 >&2\n ruff check --fix --quiet \"$file_path\" 2>&1 >&2 || true\n echo \"[Hook] Python formatted with ruff\" >&2\n fi\nfi\n\necho \"$input\"",
|
|
397
|
+
"continueOnBlock": true
|
|
395
398
|
}
|
|
396
399
|
],
|
|
397
400
|
"description": "Auto-format and lint Python files with ruff after edits"
|
|
@@ -401,7 +404,8 @@
|
|
|
401
404
|
"hooks": [
|
|
402
405
|
{
|
|
403
406
|
"type": "command",
|
|
404
|
-
"command": "#!/bin/bash\ninput=$(cat)\nfile_path=$(echo \"$input\" | jq -r '.tool_input.file_path // \"\"')\n\nif [ -n \"$file_path\" ] && [ -f \"$file_path\" ]; then\n # Type check with ty\n if command -v ty >/dev/null 2>&1; then\n dir=$(dirname \"$file_path\")\n project_root=\"$dir\"\n while [ \"$project_root\" != \"/\" ] && [ ! -f \"$project_root/pyproject.toml\" ]; do\n project_root=$(dirname \"$project_root\")\n done\n \n if [ -f \"$project_root/pyproject.toml\" ]; then\n cd \"$project_root\" && ty check \"$file_path\" 2>&1 | head -10 >&2 || true\n else\n ty check \"$file_path\" 2>&1 | head -10 >&2 || true\n fi\n fi\nfi\n\necho \"$input\""
|
|
407
|
+
"command": "#!/bin/bash\ninput=$(cat)\nfile_path=$(echo \"$input\" | jq -r '.tool_input.file_path // \"\"')\n\nif [ -n \"$file_path\" ] && [ -f \"$file_path\" ]; then\n # Type check with ty\n if command -v ty >/dev/null 2>&1; then\n dir=$(dirname \"$file_path\")\n project_root=\"$dir\"\n while [ \"$project_root\" != \"/\" ] && [ ! -f \"$project_root/pyproject.toml\" ]; do\n project_root=$(dirname \"$project_root\")\n done\n \n if [ -f \"$project_root/pyproject.toml\" ]; then\n cd \"$project_root\" && ty check \"$file_path\" 2>&1 | head -10 >&2 || true\n else\n ty check \"$file_path\" 2>&1 | head -10 >&2 || true\n fi\n fi\nfi\n\necho \"$input\"",
|
|
408
|
+
"continueOnBlock": true
|
|
405
409
|
}
|
|
406
410
|
],
|
|
407
411
|
"description": "Type check Python files with ty after edits"
|
|
@@ -474,7 +478,8 @@
|
|
|
474
478
|
"hooks": [
|
|
475
479
|
{
|
|
476
480
|
"type": "command",
|
|
477
|
-
"command": "bash .claude/hooks/skill-count-reminder.sh"
|
|
481
|
+
"command": "bash .claude/hooks/skill-count-reminder.sh",
|
|
482
|
+
"continueOnBlock": true
|
|
478
483
|
}
|
|
479
484
|
],
|
|
480
485
|
"description": "Advisory reminder to sync skill counts in 6 locations when a SKILL.md is created/modified (R021)"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Claude Code Version Compatibility
|
|
2
2
|
|
|
3
|
-
> Updated: 2026-05-
|
|
4
|
-
> Source: Claude Code release notes (#967, #968, #969, #1126 auto-detected by claude-native skill)
|
|
3
|
+
> Updated: 2026-05-14
|
|
4
|
+
> Source: Claude Code release notes (#967, #968, #969, #1126 auto-detected by claude-native skill, #1137)
|
|
5
5
|
|
|
6
6
|
## Compatibility Baseline
|
|
7
7
|
|
|
@@ -101,6 +101,113 @@ transcript view에서 다음 단축키를 사용할 수 있습니다:
|
|
|
101
101
|
|
|
102
102
|
**Action items**: None — 모두 additive. `/context all`로 fork skill 비용 정기 점검 권장.
|
|
103
103
|
|
|
104
|
+
## v2.1.140 (2026-05-12) — 호환성 점검
|
|
105
|
+
|
|
106
|
+
> Issue: #1134 — cc-release-monitor auto-create
|
|
107
|
+
|
|
108
|
+
### Agent tool 개선
|
|
109
|
+
|
|
110
|
+
- **`subagent_type` 매칭 완화**: case-insensitive + separator-insensitive — `"Code Reviewer"`가 `code-reviewer`로 정상 해석. oh-my-customcode는 이미 strict kebab-case 사용 → 영향 없음 (단, 외부 스킬이 비표준 표기로 호출해도 동작하게 됨).
|
|
111
|
+
|
|
112
|
+
### Slash command 안정성
|
|
113
|
+
|
|
114
|
+
- **`/goal` hanging fix**: `disableAllHooks` 또는 `allowManagedHooksOnly` 설정 환경에서 무한 대기 → 명확한 메시지 출력으로 변경. oh-my-customcode의 `omcustom:goal` 스킬은 네이티브 `/goal`과 별개 namespace이므로 직접 영향 없음.
|
|
115
|
+
|
|
116
|
+
### Settings / Background service / Plugins
|
|
117
|
+
|
|
118
|
+
- Settings 심볼릭 링크 hot-reload fix — `ConfigChange` hook 오발화 차단
|
|
119
|
+
- `claude --bg` idle-exit 직전 connection drop fix
|
|
120
|
+
- Background service 엔드포인트 보안 환경 startup timing 완화
|
|
121
|
+
- Remote managed settings 401 → 토큰 force-refresh 후 1회 재시도
|
|
122
|
+
- Managed `extraKnownMarketplaces` 자동 업데이트가 `known_marketplaces.json`에 영속화 — **관리형 환경에서 marketplace 자동 등록 정책 검토 필요**
|
|
123
|
+
- `/loop` 중복 wakeup 제거 — 백그라운드 작업 완료 자동 알림 활용 시 효율 개선 (자동 적용)
|
|
124
|
+
- Windows event-loop stall fix (`where.exe` 재호출 폭주) — macOS dev에는 영향 없음
|
|
125
|
+
- `Read` tool offset이 공백/`+` 접두 문자열일 때 검증 통과 — 호출 안전성 개선
|
|
126
|
+
- 네이티브 터미널 cursor focus 동작 개선 (UX)
|
|
127
|
+
- **Plugins default component folder 무시 경고**: `plugin.json`이 동일 키를 명시할 때 default 폴더(`commands/` 등)가 무시되면 `/doctor`, `claude plugin list`, `/plugin`에서 경고. **oh-my-customcode plugin 패키지가 영향 가능 — `templates/marketplace.json` + plugin.json 구조 audit 권고**.
|
|
128
|
+
|
|
129
|
+
### oh-my-customcode 연관 평가
|
|
130
|
+
|
|
131
|
+
| 변경 | 영향 | Action |
|
|
132
|
+
|------|------|--------|
|
|
133
|
+
| `subagent_type` 매칭 완화 | 영향 없음 (strict kebab-case 유지) | None |
|
|
134
|
+
| `/goal` hanging fix | omcustom:goal namespace 별개 | None |
|
|
135
|
+
| Settings/BG/Read tool fixes | 사용자 환경 안정성 향상 | None (수동적 효익) |
|
|
136
|
+
| `/loop` 효율 개선 | `loop` 스킬 사용 시 자동 적용 | None |
|
|
137
|
+
| Managed `extraKnownMarketplaces` 영속화 | 관리형 정책 환경 영향 가능 | P3 audit |
|
|
138
|
+
| Plugins default component folder 경고 | `plugin.json` 구조 audit 필요 | P3 audit |
|
|
139
|
+
|
|
140
|
+
**Action items**: P3 audit 2건 (관리형 marketplace 정책 + plugin.json default folder 검증). 모두 후속 release 별도 처리.
|
|
141
|
+
|
|
142
|
+
## v2.1.141 (2026-05-13) — 호환성 점검
|
|
143
|
+
|
|
144
|
+
> Issue: #1137 — CC v2.1.141 compatibility documentation
|
|
145
|
+
|
|
146
|
+
### 훅 시스템: `terminalSequence` 필드
|
|
147
|
+
|
|
148
|
+
훅 JSON 출력에 `terminalSequence` 필드가 추가되었습니다. 훅이 터미널을 제어하지 않고도 데스크탑 알림, 창 제목 변경, 터미널 벨을 발생시킬 수 있습니다.
|
|
149
|
+
|
|
150
|
+
```json
|
|
151
|
+
{
|
|
152
|
+
"terminalSequence": "\x1b]0;[oh-my-customcode] 작업 완료\x07"
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**oh-my-customcode 연관**: R012 HUD 이벤트 채널(stderr hooks)의 보완 수단. `terminalSequence`를 통해 창 제목(window title)을 태스크 상태로 업데이트하거나 긴 병렬 작업 완료 시 벨 신호를 보내는 활용이 가능합니다. **훅 수정은 별도 보안 승인이 필요** — `.claude/hooks/` 변경 시 사용자 명시 승인 필요 (R001).
|
|
157
|
+
|
|
158
|
+
### 플러그인 설치: `CLAUDE_CODE_PLUGIN_PREFER_HTTPS`
|
|
159
|
+
|
|
160
|
+
GitHub 플러그인 소스를 SSH 대신 HTTPS로 클론하는 환경 변수가 추가되었습니다.
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
export CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1
|
|
164
|
+
claude plugin install superpowers
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**oh-my-customcode 연관**: GitHub SSH 키가 없는 CI 환경이나 기업 방화벽 환경에서 플러그인 설치 시 활용. 기존 설치 명령어에는 변경 불필요 (HTTPS는 opt-in).
|
|
168
|
+
|
|
169
|
+
### 워크로드 아이덴티티: `ANTHROPIC_WORKSPACE_ID`
|
|
170
|
+
|
|
171
|
+
Federation 규칙이 둘 이상의 workspace를 커버하는 경우, 발급 토큰을 특정 workspace로 스코핑하는 환경 변수입니다.
|
|
172
|
+
|
|
173
|
+
**oh-my-customcode 연관**: 멀티 workspace 엔터프라이즈 환경에서 workspace 격리 강화. 현재 단일 workspace 사용자에게는 영향 없음.
|
|
174
|
+
|
|
175
|
+
### `claude agents --cwd <path>` — 디렉토리 스코프 세션 목록
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
claude agents --cwd /workspace/repos/oh-my-customcode
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**oh-my-customcode 연관**: R009 병렬 에이전트 모니터링 시 노이즈 감소. 모노레포/멀티 프로젝트 환경에서 현재 프로젝트 에이전트만 추적 가능.
|
|
182
|
+
|
|
183
|
+
### `/bg` 백그라운드 에이전트 권한 모드 유지
|
|
184
|
+
|
|
185
|
+
`/bg` 또는 `←←`로 실행된 백그라운드 에이전트가 기본값으로 되돌아가지 않고 현재 세션의 권한 모드를 유지합니다.
|
|
186
|
+
|
|
187
|
+
**oh-my-customcode 연관**: R010 `bypassPermissions` 맥락의 중요 개선. **v2.1.141+에서는 `/bg` 플로우에서 권한 모드 드롭이 발생하지 않음** — Agent tool 호출 시 `mode: "bypassPermissions"` 명시는 여전히 필요.
|
|
188
|
+
|
|
189
|
+
### 기타 변경
|
|
190
|
+
|
|
191
|
+
- `/feedback` — 최근 24h/7d 세션 포함 지원 (멀티 세션 이슈 제보 개선)
|
|
192
|
+
- Rewind "Summarize up to here" — 최근 턴 보존하며 이전 컨텍스트 압축 (R013 ecomode 보완)
|
|
193
|
+
- Auto mode 권한 다이얼로그 — `permissions.ask` 규칙 트리거 시 이유 표시 (R002 디버깅 개선)
|
|
194
|
+
- "view diff in your IDE" — IDE 연결 시 파일 편집 권한 프롬프트에서 복원
|
|
195
|
+
- `claude agents` Completed 상태 수정 — 백그라운드 셸 잔류 에이전트 올바른 상태 표시 (R009 가시성 개선)
|
|
196
|
+
- thinking 스피너 개선 — opus/opusplan 사용 에이전트에서 체감
|
|
197
|
+
|
|
198
|
+
### oh-my-customcode 연관 평가
|
|
199
|
+
|
|
200
|
+
| 변경 | 영향 | Action |
|
|
201
|
+
|------|------|--------|
|
|
202
|
+
| `terminalSequence` 훅 필드 | R012 HUD 보완 가능 | P3: 창 제목 업데이트 hook 검토 |
|
|
203
|
+
| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | CI/기업 환경 플러그인 설치 | None (opt-in) |
|
|
204
|
+
| `ANTHROPIC_WORKSPACE_ID` | 멀티 workspace 환경 | None (단일 workspace) |
|
|
205
|
+
| `claude agents --cwd` | 프로젝트별 세션 필터링 | P3: cli-flags 가이드 업데이트 |
|
|
206
|
+
| `/bg` 권한 모드 유지 | R010 `/bg` 플로우 안전성 향상 | R010 규칙 노트 추가 (완료) |
|
|
207
|
+
| 기타 additive 변경 | 사용자 환경 안정성 향상 | None |
|
|
208
|
+
|
|
209
|
+
**Action items**: P3 2건 (`terminalSequence` hook 검토, cli-flags `--cwd` 추가). R010 규칙 `/bg` 노트 추가 (이번 release 처리).
|
|
210
|
+
|
|
104
211
|
---
|
|
105
212
|
|
|
106
213
|
## Action Items Summary
|
|
@@ -111,6 +218,8 @@ transcript view에서 다음 단축키를 사용할 수 있습니다:
|
|
|
111
218
|
| v2.1.118 | Evaluate hooks `type: mcp_tool` for R022/R011 | P3 follow-up |
|
|
112
219
|
| v2.1.119 | Audit `--print` CI with disallowedTools agents | P3 follow-up |
|
|
113
220
|
| v2.1.139 | None (additive). `/context all` fork skill 비용 모니터링 권장 | P3 follow-up |
|
|
221
|
+
| v2.1.140 | P3 audit: managed `extraKnownMarketplaces` 영속화 + plugin.json default folder 무시 경고 | P3 follow-up |
|
|
222
|
+
| v2.1.141 | P3: `terminalSequence` hook 검토 + cli-flags `--cwd` 추가. R010 `/bg` 권한 모드 유지 노트 추가 (완료) | P3 follow-up |
|
|
114
223
|
|
|
115
224
|
## References
|
|
116
225
|
|
|
@@ -118,7 +227,10 @@ transcript view에서 다음 단축키를 사용할 수 있습니다:
|
|
|
118
227
|
- #968 — Claude Code v2.1.118 release note
|
|
119
228
|
- #969 — Claude Code v2.1.119 release note
|
|
120
229
|
- #1126 — Claude Code v2.1.139 신규 명령 문서화
|
|
230
|
+
- #1134 — Claude Code v2.1.140 release note
|
|
231
|
+
- #1137 — Claude Code v2.1.141 compatibility documentation
|
|
121
232
|
- `.claude/skills/claude-native/` — auto-generation source
|
|
122
233
|
- `.claude/rules/SHOULD-hud-statusline.md` — R012 statusline integration
|
|
123
234
|
- `.claude/rules/MUST-agent-design.md` — R006 agent frontmatter spec
|
|
235
|
+
- `.claude/rules/MUST-orchestrator-coordination.md` — R010 bypassPermissions + /bg flow
|
|
124
236
|
- `guides/claude-code/14-token-efficiency.md` — token efficiency guide (관련: plugin details 활용)
|
package/templates/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
3
|
-
"lastUpdated": "2026-
|
|
2
|
+
"version": "0.135.0",
|
|
3
|
+
"lastUpdated": "2026-05-14T00:00:00.000Z",
|
|
4
4
|
"omcustomMinClaudeCode": "2.1.121",
|
|
5
5
|
"omcustomMinClaudeCodeReason": "Sensitive-path direct Write/Edit on .claude/** under bypassPermissions (R010 deprecation, #1101)",
|
|
6
6
|
"components": [
|