oh-my-customcode 0.134.0 → 0.136.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 +4 -4
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/templates/.claude/hooks/hooks.json +10 -5
- package/templates/.claude/skills/pipeline/workflows/auto-dev.yaml +14 -4
- package/templates/guides/claude-code/15-version-compatibility.md +74 -2
- package/templates/manifest.json +2 -2
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.136.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)"
|
|
@@ -149,6 +149,17 @@ steps:
|
|
|
149
149
|
prompt: |
|
|
150
150
|
Create a GitHub Release.
|
|
151
151
|
|
|
152
|
+
0. Pre-check (mandatory, delegate to mgr-gitnerd per R010): Detect and remove stale local `release` branch if present.
|
|
153
|
+
The local `release` branch (file ref) conflicts with `release/v*` directory ref namespace.
|
|
154
|
+
mgr-gitnerd executes (force-delete acceptable in automation context; warns if branch has unpushed commits):
|
|
155
|
+
if git show-ref --verify --quiet refs/heads/release; then
|
|
156
|
+
# Check for unpushed commits before force-delete
|
|
157
|
+
if [ -n "$(git log refs/heads/release ^origin/develop --oneline 2>/dev/null)" ]; then
|
|
158
|
+
echo "::warning::Local 'release' branch has unpushed commits — force-deleting anyway"
|
|
159
|
+
fi
|
|
160
|
+
git branch -D release
|
|
161
|
+
fi
|
|
162
|
+
Reference: issue #1141 (v0.135.0 follow-up), mgr-gitnerd MEMORY.md.
|
|
152
163
|
1. Version:
|
|
153
164
|
- No existing tags → v0.1.0
|
|
154
165
|
- Otherwise: semver bump (patch for bugfix, minor for features)
|
|
@@ -159,10 +170,9 @@ steps:
|
|
|
159
170
|
4. Close milestone
|
|
160
171
|
5. Close verify-ready issues with "Fixed in v{version}"
|
|
161
172
|
Label needs-review issues as "Deferred from v{version}"
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
- Non-npm: direct tag on main (trunk-based)
|
|
173
|
+
6. Adapt release mechanism to project:
|
|
174
|
+
- npm project: PR + merge + npm publish verification
|
|
175
|
+
- Non-npm: direct tag on main (trunk-based)
|
|
166
176
|
description: "Git tag + GitHub Release + close milestone/issues"
|
|
167
177
|
depends_on: deep-verify
|
|
168
178
|
|
|
@@ -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
|
|
|
@@ -139,6 +139,75 @@ transcript view에서 다음 단축키를 사용할 수 있습니다:
|
|
|
139
139
|
|
|
140
140
|
**Action items**: P3 audit 2건 (관리형 marketplace 정책 + plugin.json default folder 검증). 모두 후속 release 별도 처리.
|
|
141
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
|
+
|
|
142
211
|
---
|
|
143
212
|
|
|
144
213
|
## Action Items Summary
|
|
@@ -150,6 +219,7 @@ transcript view에서 다음 단축키를 사용할 수 있습니다:
|
|
|
150
219
|
| v2.1.119 | Audit `--print` CI with disallowedTools agents | P3 follow-up |
|
|
151
220
|
| v2.1.139 | None (additive). `/context all` fork skill 비용 모니터링 권장 | P3 follow-up |
|
|
152
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 |
|
|
153
223
|
|
|
154
224
|
## References
|
|
155
225
|
|
|
@@ -158,7 +228,9 @@ transcript view에서 다음 단축키를 사용할 수 있습니다:
|
|
|
158
228
|
- #969 — Claude Code v2.1.119 release note
|
|
159
229
|
- #1126 — Claude Code v2.1.139 신규 명령 문서화
|
|
160
230
|
- #1134 — Claude Code v2.1.140 release note
|
|
231
|
+
- #1137 — Claude Code v2.1.141 compatibility documentation
|
|
161
232
|
- `.claude/skills/claude-native/` — auto-generation source
|
|
162
233
|
- `.claude/rules/SHOULD-hud-statusline.md` — R012 statusline integration
|
|
163
234
|
- `.claude/rules/MUST-agent-design.md` — R006 agent frontmatter spec
|
|
235
|
+
- `.claude/rules/MUST-orchestrator-coordination.md` — R010 bypassPermissions + /bg flow
|
|
164
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-05-
|
|
2
|
+
"version": "0.136.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": [
|