oh-my-customcode 1.1.101 → 1.1.103

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.
Files changed (52) hide show
  1. package/dist/cli/index.js +518 -53
  2. package/dist/index.js +135 -6
  3. package/package.json +1 -1
  4. package/templates/.claude/output-styles/korean-engineer.md +1 -1
  5. package/templates/.claude/rules/MUST-agent-design.md +2 -2
  6. package/templates/.claude/rules/MUST-agent-teams.md +13 -2
  7. package/templates/.claude/rules/MUST-orchestrator-coordination.md +41 -29
  8. package/templates/.claude/rules/MUST-permissions.md +12 -9
  9. package/templates/.claude/skills/action-validator/SKILL.md +2 -2
  10. package/templates/.claude/skills/adaptive-harness/SKILL.md +2 -2
  11. package/templates/.claude/skills/adversarial-review/SKILL.md +1 -1
  12. package/templates/.claude/skills/agent-eval-framework/SKILL.md +2 -2
  13. package/templates/.claude/skills/de-lead-routing/SKILL.md +2 -2
  14. package/templates/.claude/skills/deep-plan/SKILL.md +4 -4
  15. package/templates/.claude/skills/deep-verify/SKILL.md +3 -3
  16. package/templates/.claude/skills/design-shotgun/SKILL.md +1 -1
  17. package/templates/.claude/skills/dev-lead-routing/SKILL.md +2 -2
  18. package/templates/.claude/skills/dev-review/SKILL.md +2 -2
  19. package/templates/.claude/skills/evaluator-optimizer/SKILL.md +1 -1
  20. package/templates/.claude/skills/fsd/SKILL.md +3 -4
  21. package/templates/.claude/skills/harness-eval/SKILL.md +1 -1
  22. package/templates/.claude/skills/harness-synthesizer/SKILL.md +1 -1
  23. package/templates/.claude/skills/homework/SKILL.md +3 -3
  24. package/templates/.claude/skills/idea/SKILL.md +4 -2
  25. package/templates/.claude/skills/instinct-extractor/SKILL.md +8 -8
  26. package/templates/.claude/skills/intent-detection/SKILL.md +1 -1
  27. package/templates/.claude/skills/multi-model-verification/SKILL.md +2 -2
  28. package/templates/.claude/skills/omcustom-release-notes/SKILL.md +1 -1
  29. package/templates/.claude/skills/pipeline/SKILL.md +1 -1
  30. package/templates/.claude/skills/pipeline/workflows/auto-dev.yaml +26 -3
  31. package/templates/.claude/skills/post-release-followup/SKILL.md +2 -2
  32. package/templates/.claude/skills/professor-triage/SKILL.md +10 -10
  33. package/templates/.claude/skills/profile/SKILL.md +4 -4
  34. package/templates/.claude/skills/qa-lead-routing/SKILL.md +2 -2
  35. package/templates/.claude/skills/release-plan/SKILL.md +1 -1
  36. package/templates/.claude/skills/research/SKILL.md +8 -6
  37. package/templates/.claude/skills/result-aggregation/SKILL.md +1 -1
  38. package/templates/.claude/skills/roundtable-debate/SKILL.md +2 -2
  39. package/templates/.claude/skills/scout/SKILL.md +3 -8
  40. package/templates/.claude/skills/sec-agentshield-wrapper/SKILL.md +1 -1
  41. package/templates/.claude/skills/secretary-routing/SKILL.md +2 -2
  42. package/templates/.claude/skills/skill-extractor/SKILL.md +1 -1
  43. package/templates/.claude/skills/structured-dev-cycle/SKILL.md +1 -1
  44. package/templates/.claude/skills/task-decomposition/SKILL.md +1 -1
  45. package/templates/.claude/skills/worker-reviewer-pipeline/SKILL.md +5 -1
  46. package/templates/guides/claude-code/15-version-compatibility.md +149 -2
  47. package/templates/guides/deep-plan/phases.md +11 -9
  48. package/templates/guides/harness-engineering/README.md +2 -1
  49. package/templates/guides/professor-triage/README.md +1 -1
  50. package/templates/guides/professor-triage/phases.md +1 -1
  51. package/templates/manifest.json +1 -1
  52. package/templates/workflows/auto-dev.yaml +26 -3
@@ -9,7 +9,7 @@ context: fork
9
9
 
10
10
  When this skill spawns a subagent via the Agent tool, the spawned prompt MUST include this directive verbatim (or equivalent):
11
11
 
12
- > 이 스킬이 Agent tool로 서브에이전트를 스폰할 때 mode: "bypassPermissions"를 반드시 포함한다. 서브에이전트는 .claude/ 경로에 직접 Write/Edit/Bash를 사용한다(/tmp 우회 불필요, CC v2.1.121+). See R010.
12
+ > 호환을 위해 Agent 호출에 `mode: "bypassPermissions"`를 전달하십시오. CC 2.1.212 미만에서는 필수이며(호출별 기본값 `acceptEdits`가 에이전트 frontmatter `permissionMode`를 덮어씁니다), 2.1.212+에서는 무시되고 서브에이전트가 부모 세션의 권한 모드를 상속합니다(에이전트 frontmatter `permissionMode`로 조정 가능). 무인 실행 전 유효 모드 확인은 R010 「Universal bypassPermissions」 참조. bypassPermissions 세션에서 서브에이전트는 .claude/ 경로에 직접 Write/Edit/Bash를 사용합니다(/tmp 우회 불필요, CC v2.1.121+).
13
13
 
14
14
  This directive is preserved inline because Agent-tool prompt synthesis can drop SKILL.md notes; inline mandatory directives survive (#1046 lesson).
15
15
 
@@ -105,7 +105,7 @@ If the selected agent has `soul: true` in frontmatter, read and prepend `.claude
105
105
  5. Report result to user
106
106
  ```
107
107
 
108
- > **Permission Mode**: When spawning agents via Agent tool, always pass `mode: "bypassPermissions"`. The Agent tool default (`acceptEdits`) overrides agent frontmatter `permissionMode`, causing permission prompts during unattended execution.
108
+ > **Permission Mode**: Pass `mode: "bypassPermissions"` on Agent calls for compatibility: it is required on CC < 2.1.212 (the per-call default, `acceptEdits`, overrides agent frontmatter `permissionMode`) and ignored on 2.1.212+, where subagents inherit the parent session's permission mode (adjustable via agent frontmatter `permissionMode`). Verify the effective mode before unattended runs: see R010 "Universal bypassPermissions".
109
109
 
110
110
  ### 2. Batch/Parallel Task Routing
111
111
 
@@ -208,7 +208,7 @@ feedback memory에 누적된 실패 패턴을 분석하여 영구 구조(스킬
208
208
 
209
209
  ### Tool: Writing artifacts under .claude/outputs/
210
210
 
211
- Under `mode: "bypassPermissions"`, subagents write directly to `.claude/outputs/sessions/` with the Write tool — direct `.claude/**` writes are permitted (CC v2.1.121+, #1101). No `/tmp` staging or script wrapping is needed. Read-only Bash on `.claude/outputs/` (e.g., `cat`, `head`, `wc`) is allowed for verification.
211
+ Under the `bypassPermissions` permission mode, subagents write directly to `.claude/outputs/sessions/` with the Write tool — direct `.claude/**` writes are permitted (CC v2.1.121+, #1101). No `/tmp` staging or script wrapping is needed. Read-only Bash on `.claude/outputs/` (e.g., `cat`, `head`, `wc`) is allowed for verification.
212
212
 
213
213
  Reference: R006/R010 sensitive-path handling (direct `.claude/**` write under bypassPermissions), #1101.
214
214
 
@@ -181,7 +181,7 @@ rm -f /tmp/.claude-dev-stage-$PPID # Clear (disable blocking)
181
181
 
182
182
  ## Permission Mode
183
183
 
184
- When spawning agents via the Agent tool during this skill's execution, always pass `mode: "bypassPermissions"`. The Agent tool default (`acceptEdits`) overrides agent frontmatter `permissionMode`, causing permission prompts during unattended execution.
184
+ Pass `mode: "bypassPermissions"` on Agent calls for compatibility: it is required on CC < 2.1.212 (the per-call default, `acceptEdits`, overrides agent frontmatter `permissionMode`) and ignored on 2.1.212+, where subagents inherit the parent session's permission mode (adjustable via agent frontmatter `permissionMode`). Verify the effective mode before unattended runs: see R010 "Universal bypassPermissions".
185
185
 
186
186
  ## Display Format
187
187
 
@@ -230,7 +230,7 @@ When granularity validation triggers a split, update the DAG spec:
230
230
 
231
231
  ## Permission Mode
232
232
 
233
- When spawning agents via the Agent tool during this skill's execution, always pass `mode: "bypassPermissions"`. The Agent tool default (`acceptEdits`) overrides agent frontmatter `permissionMode`, causing permission prompts during unattended execution.
233
+ Pass `mode: "bypassPermissions"` on Agent calls for compatibility: it is required on CC < 2.1.212 (the per-call default, `acceptEdits`, overrides agent frontmatter `permissionMode`) and ignored on 2.1.212+, where subagents inherit the parent session's permission mode (adjustable via agent frontmatter `permissionMode`). Verify the effective mode before unattended runs: see R010 "Universal bypassPermissions".
234
234
 
235
235
  ## Integration
236
236
 
@@ -91,7 +91,11 @@ When Agent Teams is enabled, the pipeline SHOULD use Agent Teams:
91
91
  TeamCreate("review-pipeline")
92
92
  Worker (team member) ←→ Reviewer (team member)
93
93
  SendMessage for feedback exchange
94
+ (if a member lacks SendMessage: artifact files relayed by the
95
+ orchestrator, R018 "멤버 도구 부재 시 대체 규약", #1817)
94
96
  Shared TaskList for tracking issues
97
+ (if TaskList is absent — not registered by default, R002: follow
98
+ R018 "Task 도구 부재 시 대체 규약", #1582)
95
99
  ```
96
100
 
97
101
  When Agent Teams is NOT available, falls back to sequential Agent tool calls:
@@ -164,4 +168,4 @@ config: {max_iterations: 1, quality_gate: majority_pass}
164
168
  - Nested pipelines not supported (use dag-orchestration for complex flows)
165
169
  - Pipeline does not auto-commit; orchestrator decides post-pipeline actions
166
170
 
167
- When spawning agents via the Agent tool during this skill's execution, always pass `mode: "bypassPermissions"`. The Agent tool default (`acceptEdits`) overrides agent frontmatter `permissionMode`, causing permission prompts during unattended execution.
171
+ Pass `mode: "bypassPermissions"` on Agent calls for compatibility: it is required on CC < 2.1.212 (the per-call default, `acceptEdits`, overrides agent frontmatter `permissionMode`) and ignored on 2.1.212+, where subagents inherit the parent session's permission mode (adjustable via agent frontmatter `permissionMode`). Verify the effective mode before unattended runs: see R010 "Universal bypassPermissions".
@@ -1,6 +1,6 @@
1
1
  # Claude Code Version Compatibility
2
2
 
3
- > Updated: 2026-09-24
3
+ > Updated: 2026-10-05
4
4
  > Source: Claude Code release notes (#967, #968, #969, #1126 auto-detected by claude-native skill, #1137, #1158, #1242, #1243, #1244, #1245, #1276, #1280, #1713, #1714, #1716, #1746, #1747)
5
5
  >
6
6
  > **Note (compat 노트 이관, v1.1.9~v1.1.76)**: v2.1.161~v2.1.276 구간의 CC 호환성 노트는 `.claude/rules/` 각 규칙(R001/R002/R006/R010/R012 등)에 인라인으로 축적되어 있으며, 이 구간은 그대로 보존합니다.
@@ -417,7 +417,7 @@ Rewind 메뉴에 이전 턴까지의 컨텍스트를 압축하되 최근 대화
417
417
 
418
418
  `/bg` 또는 `←←`로 실행된 백그라운드 에이전트가 기본값으로 되돌아가지 않고 현재 세션의 권한 모드를 유지합니다.
419
419
 
420
- **oh-my-customcode 연관**: R010 `bypassPermissions` 맥락에서 중요한 개선. 이전에는 `/bg`로 에이전트를 분리하면 `bypassPermissions` 설정이 유실되어 unattended 실행 중 권한 프롬프트가 발생할 수 있었습니다. **v2.1.141+에서는 `/bg` 플로우에서 권한 모드 드롭이 더 이상 발생하지 않음** — R010 Universal bypassPermissions 규칙은 Agent tool 호출에 여전히 필요하지만, `/bg` 전환 시 추가 workaround 불필요.
420
+ **oh-my-customcode 연관**: R010 `bypassPermissions` 맥락에서 중요한 개선. 이전에는 `/bg`로 에이전트를 분리하면 `bypassPermissions` 설정이 유실되어 unattended 실행 중 권한 프롬프트가 발생할 수 있었습니다. **v2.1.141+에서는 `/bg` 플로우에서 권한 모드 드롭이 더 이상 발생하지 않음** — R010 Universal bypassPermissions 규칙에 따라 Agent tool 호출의 `mode: "bypassPermissions"`는 CC 2.1.212 미만에서 필요하고 2.1.212+에서는 무시되지만 호환을 위해 계속 전달하며, `/bg` 전환 시 추가 workaround 불필요.
421
421
 
422
422
  ### `claude agents`: 백그라운드 셸 잔류 에이전트 상태 수정
423
423
 
@@ -1757,6 +1757,146 @@ Opus 4.8에서 thinking blocks가 수정되어 API 오류가 발생하던 버그
1757
1757
 
1758
1758
  ---
1759
1759
 
1760
+ ## v2.1.288 (2026-10-02)
1761
+
1762
+ > Issue: #1790 — Claude Code v2.1.288 compatibility documentation
1763
+ > Scope-ceiling check (R017): 조사 시점(2026-10-05)의 최신 릴리즈는 2.1.289입니다(`claude --version`=2.1.289, `npm view @anthropic-ai/claude-code version`=2.1.289). 2.1.289 CHANGELOG에는 "[VSCode] Reverted a 2.1.288 change to `claude auth status` that may have made sign-outs more frequent"가 있으나, 2.1.288 CHANGELOG 절에는 `claude auth status` 문구가 없어(`grep -F` 0건) 되돌려진 288 항목을 특정할 수 없고 VSCode 전용이므로 아래 항목의 롤백은 확인되지 않았습니다. 릴리즈 게시 시각은 2026-10-02T20:19:57Z입니다(`gh release view v2.1.288 --repo anthropics/claude-code --json publishedAt`).
1764
+
1765
+ ### 세션 · 재개 · 컨텍스트
1766
+
1767
+ - CHANGELOG 원문: "Fixed mid-response API timeouts failing the turn: non-interactive sessions and subagents now continue from the partial response, and thinking-only responses are retried"
1768
+ (288) 응답 도중 API 타임아웃이 턴을 실패시키던 결함이 수정되어, 비대화형 세션과 서브에이전트가 부분 응답에서 이어가고 thinking만 있는 응답은 재시도됩니다. R004 Retryable 재시도 전략을 플랫폼이 서브에이전트 경로에서도 수행한다는 (257)·(246)의 자동 이어감과 같은 계열이므로, 위임 에이전트의 중간 종료를 진단할 때 네트워크 절단 축은 후순위로 두고 R020의 maxTurns 한도를 먼저 확인하는 기존 순서를 유지합니다. 룰 변경은 없습니다.
1769
+ - CHANGELOG 원문: "Fixed long conversations failing with "Prompt is too long" instead of auto-compacting when the last reply reported zero token usage"
1770
+ (288) 마지막 응답이 토큰 사용량 0을 보고하면 긴 대화가 auto-compact 대신 "Prompt is too long"으로 실패하던 결함이 수정되었습니다. R013 컨텍스트 예산·(269)(274)의 "Prompt is too long" 계열 수정과 같은 맥락이며 임계값 정의는 바뀌지 않습니다. `/fsd` 같은 장기 자율 루프에 유리한 수정입니다.
1771
+ - CHANGELOG 원문: "Fixed `--resume` sometimes dropping files and other context that a compaction had just restored"
1772
+ (288) `--resume`이 compaction 직후 복원된 파일과 컨텍스트를 간혹 누락하던 결함이 수정되었습니다. 압축·재시작 뒤 CLAUDE.md를 다시 읽는 R010의 Session Continuity 절차는 그대로 유지하며(재개 관련 버전 노트는 R011이 담당합니다), 이 수정은 구버전 재개 세션의 컨텍스트 누락을 모델 규칙 위반으로만 귀속하지 않는 근거가 됩니다.
1773
+ - CHANGELOG 원문: "Fixed a resumed session sometimes not saving the last response of a turn, so that the next `--resume` showed the prompt unanswered"
1774
+ (288) 재개된 세션이 간혹 턴의 마지막 응답을 저장하지 못해 다음 `--resume`에서 프롬프트가 미응답으로 보이던 결함이 수정되었습니다. 미응답처럼 보이지만 실제로는 응답이 있었을 수 있는 역방향 사례이므로 R020의 Failure/Interrupt Report ≠ Actual Failure (reverse direction) 조항대로, 재개 뒤 미응답으로 보이는 턴은 트랜스크립트 표시가 아니라 산출물 실측으로 판정합니다.
1775
+ - CHANGELOG 원문: "Fixed resume occasionally loading a transcript cut short when the same session rewrote the file during the load"
1776
+ (288) 같은 세션이 로드 중 파일을 다시 쓰면 재개가 간혹 잘린 트랜스크립트를 읽던 결함이 수정되었습니다. 트랜스크립트 계수(`scripts/count-r007-r008.sh`, R023)의 입력 신뢰도에 관한 맥락 정보입니다. R011의 (275) 노트는 275 이전에 malformed 엔트리 하나 때문에 재개에 실패한 세션을 대상으로 R020 트랜스크립트 계수를 하한값으로 취급하도록 하며, 잘린 트랜스크립트를 읽은 세션의 계수도 하한값으로 보는 것이 같은 방향입니다 [가설 — 잘린 로드 세션의 계수 보정은 (275) 노트가 직접 다루지 않는 유비]. 룰 변경은 없습니다.
1777
+ - CHANGELOG 원문: "Fixed resuming a conversation started on 2.1.286 or earlier dropping the model's earlier thinking"
1778
+ (288) 2.1.286 이하에서 시작한 대화를 재개하면 모델의 이전 thinking이 누락되던 결함이 수정되었습니다. 맥락 정보이며 영향은 확인되지 않았습니다.
1779
+ - CHANGELOG 원문: "Fixed session titles, memory recall and prompt hooks failing on Mantle or behind gateways that reject structured outputs; added `CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS` to turn structured outputs off"
1780
+ (288) Mantle이나 structured outputs를 거부하는 게이트웨이 뒤에서 세션 제목·메모리 recall·prompt 훅이 실패하던 결함이 수정되었고, `CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS`로 structured outputs를 끌 수 있습니다. 관측한 범위에서 이 저장소에는 `type: prompt` 훅이 PostCompact(matcher `*`) 1개 있으나, 프로젝트 `.claude/settings.json`에 `env`가 없고(`.claude/settings.local.json`의 env 키는 `CLAUDE_COST_CAP`뿐) Mantle·게이트웨이 설정이 관측되지 않아 영향이 없습니다.
1781
+ - CHANGELOG 원문: "Changed `/autocompact` to save the auto-compact window per model, so each model keeps its own setting when you switch"
1782
+ (288) `/autocompact`가 auto-compact 창을 모델별로 저장하므로 모델을 바꿔도 각 모델이 자기 설정을 유지합니다. R013 임계값은 창 대비 백분율이므로 모델 전환 시 절대 토큰량이 모델별 설정에 따라 달라질 수 있습니다 [가설 — 저장소에서 /autocompact 사용 여부 미관측].
1783
+ - CHANGELOG 원문: "Fixed the first request in a fresh environment or after a model switch using the built-in output limit and auto-compact window, not the server's; that request may now wait up to 1.5 seconds"
1784
+ (288) 새 환경이나 모델 전환 뒤 첫 요청이 서버의 출력 한도·auto-compact 창 대신 내장값을 쓰던 결함이 수정되었고, 그 요청은 이제 최대 1.5초 기다릴 수 있습니다. 위 `/autocompact` 항목과 함께 R013 컨텍스트 예산의 절대 토큰량 해석에 관한 맥락 정보이며, 임계값 정의는 바뀌지 않습니다.
1785
+ - CHANGELOG 원문: "Fixed unattended sessions (`CLAUDE_CODE_RETRY_WATCHDOG`) retrying for hours after a very long response stream failed; Claude Code now streams again, and gives up after three timeouts"
1786
+ (288) `CLAUDE_CODE_RETRY_WATCHDOG`을 쓰는 무인 세션이 매우 긴 응답 스트림 실패 뒤 몇 시간씩 재시도하던 결함이 수정되어, 이제 다시 스트리밍하고 타임아웃 세 번 뒤 포기합니다. R018의 (260) 노트가 이 환경 변수를 예시로 언급합니다. (288) 타임아웃 세 번 뒤 포기하는 동작은 R004의 최대 3회 재시도 후 보고하는 전략과 방향이 같습니다. (288) 저장소에서 이 환경 변수 사용은 관측되지 않았습니다.
1787
+ - CHANGELOG 원문: "Fixed headless (`-p` / SDK) sessions occasionally ignoring SIGTERM when a supervisor such as `timeout` or systemd sends SIGCONT alongside it"
1788
+ (288) 감독자(`timeout`, systemd 등)가 SIGCONT를 함께 보낼 때 headless(`-p` / SDK) 세션이 간혹 SIGTERM을 무시하던 결함이 수정되었습니다. 관측한 범위에서 `infra/hada-scout/scout-runner.sh`가 `timeout "${SCOUT_TIMEOUT}" claude -p`(`-k` 없음)로 실행하므로 해당 구성입니다. 288 이전에는 SIGTERM이 간혹 무시되어 실행이 끝나지 않을 수 있었다는 회고적 함의가 있습니다 [가설 — 실제 배포 여부와 이미지의 CC 버전 미실측]. 룰 변경은 없습니다.
1789
+
1790
+ ### 권한 · auto mode · rm
1791
+
1792
+ - CHANGELOG 원문: "Fixed auto mode denials pointing Claude at a Bash permission rule when the blocked tool was not Bash"
1793
+ (288) 차단된 도구가 Bash가 아닌데도 auto mode 거부 메시지가 Bash 권한 규칙을 가리키던 결함이 수정되었습니다. 관측한 범위에서 사용자 scope 유효 permission mode는 `auto`(`jq -r '.permissions.defaultMode // "unset"' ~/.claude/settings.json`)이므로 직접 관련됩니다. R001의 classifier 차단 후 재시도 금지 취지와 R010 STOP Protocol의 진단 정확도가 높아질 뿐 규범은 그대로입니다.
1794
+ - CHANGELOG 원문: "Improved auto mode: when a conversation grows too long for the client-side safety classifier to review, it is now compacted instead of prompting for, or failing, every tool call"
1795
+ (288) auto mode에서 대화가 클라이언트 측 안전 classifier가 검토하기에 너무 길어지면 모든 도구 호출을 묻거나 실패시키는 대신 compact됩니다. 유효 모드가 `auto`인 이 저장소의 긴 세션에 해당합니다. 구버전의 긴 세션에서 도구 호출 거부·프롬프트가 있었다면 모델 규칙 위반으로만 귀속할 수 없습니다 [가설 — 해당 거부·프롬프트가 실제로 있었는지 미관측]. R002·R021 문안 변경은 없습니다.
1796
+ - CHANGELOG 원문: "Changed the client-side auto mode classifier to ignore an `ANTHROPIC_DEFAULT_SONNET_MODEL` pin that names Claude Sonnet 5.5 or Opus 5.5 and use Claude Sonnet 5 instead"
1797
+ (288) 클라이언트 측 auto mode classifier는 Claude Sonnet 5.5 또는 Opus 5.5를 가리키는 `ANTHROPIC_DEFAULT_SONNET_MODEL` 고정을 무시하고 Claude Sonnet 5를 사용합니다. 관측한 범위에서 프로젝트 `.claude/settings.json`에 `env`가 없고 `.claude/settings.local.json`의 env 키는 `CLAUDE_COST_CAP`뿐이어서 이 env 고정은 쓰이지 않습니다(사용자 scope는 미관측). 이 저장소의 에이전트 핀은 frontmatter의 Tier 2 전체 ID(R006)이며, auto mode classifier가 에이전트 핀과 무관한 모델로 동작한다는 점은 R006 모델 설명의 맥락 정보입니다.
1798
+ - CHANGELOG 원문: "Fixed Bash tool permission check to prompt before a `BASHPID` assignment whose value the shell would evaluate as arithmetic, instead of allowing it silently"
1799
+ (288) 셸이 산술식으로 평가할 값을 가진 `BASHPID` 할당을 조용히 허용하지 않고 먼저 확인합니다. R002 Bash 티어(Tier 4 승인) 방향의 플랫폼 수정이며 티어 정책은 바뀌지 않습니다. 저장소에 `BASHPID` 할당 사용은 관측되지 않았습니다.
1800
+ - CHANGELOG 원문: "Fixed a dangerous `rm` (such as one on `/` or the home directory) inside a `bash -c` or `sh -c` script running without a prompt in bypassPermissions mode or under a shell allow rule (anthropics/claude-code#96300)"
1801
+ (288) `bash -c`·`sh -c` 스크립트 안의 위험한 `rm`(예: `/`나 홈 디렉터리 대상)이 bypassPermissions 모드나 셸 allow 규칙 아래에서 프롬프트 없이 실행되던 결함이 수정되었습니다. 이 수정은 (287)의 `rm` 안전장치 수정이 스크립트 래퍼로 확장된 것이며, 가장 직접적인 선행 노트는 R001의 (261) 노트(positional parameter와 큰따옴표 `sh -c` 내부 `rm -rf`까지 확인을 확장)와 (273) 노트(bypass 모드 subshell 안의 `rm`)입니다. 관측한 범위에서 프로젝트 settings.json에는 `Bash(rm:*)` allow와 `defaultMode: bypassPermissions`(R010에 따라 2.1.257부터 프로젝트 scope에서는 무시됩니다)가 있고 `Bash(bash:*)`·`Bash(sh:*)` allow는 없으며, 유효 모드(사용자 scope)는 `auto`입니다. R001 문안 변경은 없고, 이 플랫폼 가드는 R001의 위임 전 blast-radius 열거를 대체하지 않습니다.
1802
+ - CHANGELOG 원문: "Changed the background command time limit to apply only in unattended sessions (`-p`, Agent SDK, CI, cloud); terminal, desktop app and VS Code sessions have no limit"
1803
+ (288) 백그라운드 명령 시간 제한이 무인 세션(`-p`, Agent SDK, CI, cloud)에만 적용되고, 터미널·데스크톱 앱·VS Code 세션에는 제한이 없습니다. 이 가이드 (285) 절의 백그라운드 시간 제한 항목("(288) 이후 이 제한은 좁혀졌습니다"로 이 불릿을 인용)과 이어지며, 룰 변경은 없습니다.
1804
+
1805
+ ### 훅
1806
+
1807
+ - CHANGELOG 원문: "Fixed PreToolUse and PermissionRequest hooks being skipped when matching them failed or the tool's input could not be serialized to JSON; the call is now blocked"
1808
+ (288) matcher 평가 자체가 오류로 실패하거나 도구 입력을 JSON으로 직렬화할 수 없을 때 PreToolUse·PermissionRequest 훅이 건너뛰어지던 결함이 수정되어, 이제 해당 호출이 차단됩니다(matcher가 일치하지 않는 훅은 원래도 실행되지 않으며 이 항목의 대상이 아닙니다). 이 fail-closed 동작은 R021의 Hard Block 계열에 한정되지 않고 advisory를 포함한 모든 PreToolUse 그룹에 적용되므로, 평가 중 오류를 내는 matcher는 이제 호출을 차단합니다. 관측한 범위에서 PreToolUse 그룹은 12개(advisory 포함)이고 PermissionRequest 훅은 없습니다. R021 Advisory-first 정책 문안 변경은 없으며, 훅 matcher 편집 뒤 `bun run sync:hooks` 재생성 확인(R021)의 중요도가 커집니다.
1809
+ - CHANGELOG 원문: "Fixed `idle_prompt` notification hooks firing while background agents are still running (anthropics/claude-code#93672)"
1810
+ (288) 백그라운드 에이전트가 실행 중인데 `idle_prompt` 알림 훅이 발화하던 결함이 수정되었습니다. 관측한 범위에서 Notification 훅은 1개이고 matcher가 `*`이며 `.message`를 stderr에 출력할 뿐이어서 영향은 stderr 줄 1개 수준입니다. 이 훅이 `idle_prompt` 알림에도 걸리는지는 확인하지 않았습니다 [가설 — matcher *가 idle_prompt 알림에도 걸릴 가능성].
1811
+ - CHANGELOG 원문: "Fixed the InstructionsLoaded hook omitting agent_id and agent_type when a subagent's file access loads a rule or nested CLAUDE.md; rules and nested CLAUDE.md files loaded on file access now also report effort"
1812
+ (288) 서브에이전트의 파일 접근이 룰이나 nested CLAUDE.md를 로드할 때 InstructionsLoaded 훅이 agent_id·agent_type을 빠뜨리던 결함이 수정되었고, 파일 접근으로 로드된 룰·nested CLAUDE.md는 effort도 보고합니다. 관측한 범위에서 InstructionsLoaded 훅이 없어 영향이 없습니다(`jq -r '.hooks.InstructionsLoaded // [] | length' .claude/settings.json` = 0, `git grep -c -F 'InstructionsLoaded' -- .claude/hooks/hooks.json` 출력 없음(rc=1)). 훅 stdin 필드는 실측으로 확인한다는 기존 규율(R020 Config-Schema-Before-Edit)을 유지합니다.
1813
+
1814
+ ### 지시 파일
1815
+
1816
+ - CHANGELOG 원문: "Fixed path-scoped `.claude/rules` and nested CLAUDE.md files not loading when Write or Edit creates or changes a file in their scope (previously only Read loaded them)"
1817
+ (288) path-scoped `.claude/rules`와 nested CLAUDE.md가 Write·Edit으로 해당 범위의 파일을 만들거나 바꿀 때도 로드됩니다(이전에는 Read만 로드). 관측한 범위에서 `.claude/rules/*.md`에는 frontmatter가 없어 path-scoped 룰이 없습니다(`paths:` 일치 1건은 R006 본문의 스킬 frontmatter 예시 줄입니다). `git ls-files '*CLAUDE.md'` 기준 CLAUDE.md 파일은 `CLAUDE.md`, `templates/CLAUDE.md` 2개이며, 이 중 nested CLAUDE.md는 `templates/CLAUDE.md`(루트와 내용이 다름)입니다. 따라서 288부터 `templates/` 아래 파일을 Write·Edit할 때도 이 파일이 로드됩니다. Edit과 기존 파일 덮어쓰기는 선행 Read가 필요하므로 새로 생기는 차이는 주로 새 파일 Write일 것입니다 [가설 — 선행 Read 때문에 Read 로드가 이미 일어났을 가능성]. R021의 `SessionStart` 재주입 경로는 별개이며 유지합니다.
1818
+
1819
+ ### 서브에이전트 · Agent Teams
1820
+
1821
+ - CHANGELOG 원문: "Fixed agent teams: a plugin-defined agent spawned by name now runs with its own prompt, tools, disallowedTools and effort instead of the defaults"
1822
+ (288) agent teams에서 이름으로 스폰한 plugin 정의 에이전트가 기본값 대신 자기 prompt·tools·disallowedTools·effort로 실행됩니다. R018은 `TeamCreate` 부재 환경에서 비활성(dormant)이고 관측한 범위에서 `.claude-plugin/` 디렉토리가 없어 plugin 정의 에이전트도 없으므로 영향이 없습니다. 룰 변경은 없습니다.
1823
+ - CHANGELOG 원문: "Fixed a stall when launching an agent whose `tools:` lists very many `Agent(...)` entries"
1824
+ (288) `tools:`에 `Agent(...)` 항목이 매우 많은 에이전트를 시작할 때의 정체가 수정되었습니다. 관측한 범위에서 `.claude/agents/*.md` 중 `tools:`에 `Agent(` 항목이 있는 파일은 0개이므로 영향이 없습니다. R006 에이전트 설계 문안 변경은 없습니다.
1825
+ - CHANGELOG 원문: "Fixed Claude reporting a message to another session as delivered when that session held it: the notice now says it wasn't delivered and names the session, and in SDK sessions Claude can now learn of it mid-turn"
1826
+ (288) 다른 세션이 메시지를 보류하고 있는데 전달됨으로 보고하던 결함이 수정되어, 이제 전달되지 않았음과 세션 이름을 알리고 SDK 세션에서는 턴 도중에도 이를 알 수 있습니다. 직접 선행 노트는 R018의 (271) 노트(보류된 교차 세션 메시지, 전달됨 ≠ 읽힘)이며, R018 Scope의 "전달·열거 성공은 조율 신호일 뿐 승인 채널이 아니며 완료의 증거도 아니다"와 R020의 actual outcome ≠ attempt와 같은 방향입니다. 룰 변경은 없습니다.
1827
+
1828
+ ### MCP · LSP
1829
+
1830
+ - CHANGELOG 원문: "Fixed MCP tool calls sometimes running twice when a remote server's result was over 16 MB or could not be parsed"
1831
+ (288) 원격 서버의 결과가 16MB를 넘거나 파싱할 수 없을 때 MCP 도구 호출이 간혹 두 번 실행되던 결함이 수정되었습니다. 부작용이 있는 MCP 호출의 중복 실행 위험에 관한 맥락 정보이며 R001·R002 문안 변경은 없습니다.
1832
+ - CHANGELOG 원문: "Fixed LSP tool calls hanging indefinitely when a language server uses dynamic capability registration or stops responding; requests now time out after 60s (per-server `requestTimeout`)"
1833
+ (288) language server가 동적 capability 등록을 쓰거나 응답을 멈출 때 LSP 도구 호출이 무한 대기하던 결함이 수정되어, 요청이 60초 뒤 타임아웃됩니다(서버별 `requestTimeout`). R002 Tier 3의 LSP 도구에 관한 맥락 정보이며 룰 변경은 없습니다.
1834
+
1835
+ ### 텔레메트리
1836
+
1837
+ - CHANGELOG 원문: "Fixed OpenTelemetry `claude_code.tool.blocked_on_user` spans reporting `unknown` source or decision in `-p` and SDK sessions and for PreToolUse hook approvals"
1838
+ (288) `-p`·SDK 세션과 PreToolUse 훅 승인에서 OpenTelemetry `claude_code.tool.blocked_on_user` span이 source·decision을 `unknown`으로 보고하던 결함이 수정되었습니다. monitoring-setup 스킬을 다루는 맥락 정보입니다.
1839
+ - CHANGELOG 원문: "Fixed permission asks that ended unanswered, in `-p` or on an interrupted turn, emitting no `tool_decision` event"
1840
+ (288) `-p`에서 또는 인터럽트된 턴에서 응답 없이 끝난 권한 요청이 `tool_decision` 이벤트를 내보내지 않던 결함이 수정되었습니다. 응답 없는 권한 요청이 이제 관측 가능하다는 monitoring-setup 맥락 정보이며, R003 인터럽트 처리·R020 인터럽트 규칙의 문안 변경은 없습니다.
1841
+
1842
+ ### 코드 리뷰
1843
+
1844
+ - CHANGELOG 원문: "Added `--max-findings <n>|all` to /code-review to report more or fewer findings than the usual limit; the choice is reused until you pass `--max-findings default`"
1845
+ (288) `/code-review`에 `--max-findings <n>|all`이 추가되어 보고 건수 상한을 바꿀 수 있고, 선택값은 `--max-findings default`를 지정할 때까지 다음 실행에도 유지됩니다. R023의 (232) 노트가 `/code-review`를 Tier 3 검증 호출로 다루므로, 상한이 걸린 리뷰를 완전한 리뷰로 오인할 수 있다는 함의가 있습니다. 관측한 범위에서 이 저장소 파이프라인에 `/code-review` 호출은 없습니다. 룰 변경은 없습니다.
1846
+
1847
+ ### 설치
1848
+
1849
+ - CHANGELOG 원문: "Fixed the npm auto-updater reporting success when the platform-native binary failed to download and only the placeholder `claude` stub was installed"
1850
+ (288) npm auto-updater가 플랫폼 네이티브 바이너리 다운로드에 실패하고 placeholder `claude` 스텁만 설치됐는데도 성공을 보고하던 결함이 수정되었습니다. R020의 actual outcome ≠ attempt가 설치 도메인에 나타난 사례입니다. R017 게이트의 `claude --version` 실측이 스텁 설치 실패를 부수적으로 드러낼 수 있습니다 [가설 — 스텁이 `--version` 출력으로 구분되는지 미실측]. 룰 변경은 없습니다.
1851
+
1852
+ 기타 59건 — 이 저장소 비해당(VSCode·Cloud sessions·Cowork·Claude Tag·Claude in Chrome·플러그인 마켓플레이스/`--plugin-dir`·mods·screen reader 모드·agents view 키바인딩·Windows·Bedrock/Vertex 인증 등 harness 비영향 세부사항). 실측: `gh release view v2.1.288 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 89건 중 위 본문 30건을 다뤘으므로 89 − 30 = 59건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
1853
+
1854
+ **Action items**:
1855
+ - 세션·재개·컨텍스트, 권한·auto mode·`rm`, 훅, 지시 파일, 서브에이전트·Agent Teams, MCP·LSP, 텔레메트리, 코드 리뷰, 설치 항목은 기존 룰이 이미 다루는 전제를 강화하거나, 이 저장소에 해당 구성이 없거나, 해당 구성이 있어도 현재 행동을 바꾸는 규범이 아니므로 룰 문안 변경은 불필요합니다. R021의 `SessionStart` 재주입은 유지합니다.
1856
+ - 제안 없음: R016 정책상 룰에는 현재 행동을 바꾸는 규범만 1줄로 들어가며, 위 항목 중 행동을 바꾸는 것은 확인되지 않았습니다.
1857
+ - 미확인 사항: Notification 훅(matcher `*`)이 `idle_prompt` 알림에도 걸리는지는 확인하지 않았습니다 [가설 — matcher *가 idle_prompt 알림에도 걸릴 가능성].
1858
+ - 미확인 사항: `infra/hada-scout/scout-runner.sh`(`timeout … claude -p`)의 실제 배포 여부와 이미지의 CC 버전은 확인하지 않았습니다 [가설 — 배포 이미지가 288 미만 CC를 쓸 가능성].
1859
+
1860
+ ---
1861
+
1862
+ ## v2.1.289 (2026-10-03)
1863
+
1864
+ > Issue: #1791 — Claude Code v2.1.289 compatibility documentation
1865
+ > Scope-ceiling check (R017): 조사 시점(2026-10-05)의 최신 릴리즈는 2.1.289입니다(`claude --version`=2.1.289, `npm view @anthropic-ai/claude-code version`=2.1.289). 따라서 이 릴리즈 이후 릴리즈의 롤백 확인 대상이 없습니다. 이 릴리즈 CHANGELOG의 "[VSCode] Reverted a 2.1.288 change to `claude auth status` that may have made sign-outs more frequent"는 2.1.288 항목의 롤백이며 VSCode 전용입니다(288 절에는 `claude auth status` 문구가 없습니다). 릴리즈 게시 시각은 2026-10-03T23:07:17Z입니다(`gh release view v2.1.289 --repo anthropics/claude-code --json publishedAt`).
1866
+
1867
+ ### 권한 · Bash deny/ask 규칙
1868
+
1869
+ - CHANGELOG 원문: "Fixed Bash deny and ask rules missing a command behind an environment variable prefix with an expanded value (e.g. `TZ="$HOME" rm -rf build`) when the sandbox auto-allows commands"
1870
+ (289) sandbox가 명령을 자동 허용하는 경우, 확장된 값을 가진 환경 변수 접두(예: `TZ="$HOME" rm -rf build`) 뒤의 명령을 Bash deny·ask 규칙이 놓치던 결함이 수정되었습니다. R002·R001의 `rm` 금지 맥락과 같은 방향의 플랫폼 수정입니다. 관측한 범위에서 프로젝트 `.claude/settings.json`에는 `permissions.deny`가 0개이고 `sandbox` 설정이 없어 이 수정의 전제 조건(sandbox auto-allow)이 없으므로 영향이 없습니다.
1871
+ - CHANGELOG 원문: "Fixed a Bash deny or ask rule being skipped under sandbox auto-allow when a bare variable assignment came before the command"
1872
+ (289) sandbox auto-allow 상태에서 명령 앞에 bare 변수 할당이 오면 Bash deny·ask 규칙이 건너뛰어지던 결함이 수정되었습니다. 위 항목과 같은 전제(sandbox auto-allow)를 요구하므로 관측한 범위에서 이 저장소에는 해당하지 않습니다.
1873
+ - CHANGELOG 원문: "Fixed a deny or ask rule on a nested part of a compound shell command not holding over a user-installed mod's approval on managed machines"
1874
+ (289) 관리형 머신에서 compound shell 명령의 중첩 부분에 걸린 deny·ask 규칙이, 사용자가 설치한 mod의 승인 앞에서 유지되지 않던 결함이 수정되었습니다. 이 결함은 CHANGELOG 원문대로 관리형 머신에서만 발생하며, 관리형 머신 여부와 사용자가 설치한 mod는 머신·사용자 수준 구성이라 저장소에서 관측할 수 없습니다. 관측한 범위에서 이 저장소에는 mod 구성이 없고 R002 티어 정책도 바뀌지 않습니다. 이 개발 환경이 관리형 머신이 아니어서 영향이 없을 것으로 봅니다 [가설 — 머신 관리 여부는 미관측].
1875
+ - CHANGELOG 원문: "Fixed `Read` deny rules not applying to files @-mentioned, changed, or selected in the IDE through a symlink"
1876
+ (289) IDE에서 @-멘션되거나 변경되거나 선택된 파일이 심볼릭 링크를 통해 들어올 때 `Read` deny 규칙이 적용되지 않던 결함이 수정되었습니다. R002 파일 접근 범위와 같은 방향의 플랫폼 수정이며, 관측한 범위에서 프로젝트 `permissions.deny`가 0개이므로 이 저장소에서는 영향이 없습니다.
1877
+
1878
+ ### MCP
1879
+
1880
+ - CHANGELOG 원문: "Fixed a user-installed plugin being able to rewrite the descriptions of an organization-managed MCP server's sign-in tools"
1881
+ (289) 사용자가 설치한 플러그인이 조직 관리 MCP 서버의 로그인 도구 설명을 다시 쓸 수 있던 결함이 수정되었습니다. 관측한 범위에서 이 저장소는 조직 관리 MCP 서버 구성을 두지 않으며 R002 Tier 6(MCP) 정책도 바뀌지 않습니다.
1882
+
1883
+ ### 플러그인 · 에이전트
1884
+
1885
+ - CHANGELOG 원문: "Fixed `claude plugin validate` skipping the plugin when the folder also holds a marketplace manifest"
1886
+ (289) 폴더에 marketplace manifest도 함께 있으면 `claude plugin validate`가 플러그인을 건너뛰던 결함이 수정되었습니다. 관측한 범위에서 이 저장소의 검증 대상에는 marketplace manifest가 없으므로(`.claude-plugin/` 디렉토리 없음) 이 결함 조건에 해당하지 않습니다. 참고로 R017 본문에 "스킬 추가·수정 후 `claude plugin validate`를 개수 대조와 함께 실행한다(R023)"는 문장이 있으나, 이 수정은 그 문장의 동작을 바꾸지 않습니다.
1887
+ - CHANGELOG 원문: "Fixed `claude plugin validate` failing an Anthropic marketplace's own plugin and listing a clean `plugin.json` in `--json`"
1888
+ (289) `claude plugin validate`가 Anthropic marketplace의 자체 플러그인을 실패 처리하고 `--json` 출력에 깨끗한 `plugin.json`을 목록으로 나열하던 결함이 수정되었습니다. 결함 대상이 Anthropic marketplace의 자체 플러그인이고 이 저장소의 검증 대상에는 marketplace manifest가 없으므로 영향이 없습니다.
1889
+ - CHANGELOG 원문: "Added `agent.spawn` for teammates, one agent id across plugin hook events, and idle and waiting states in `$.agent.list()`"
1890
+ (289) teammates용 `agent.spawn`, 플러그인 훅 이벤트 전반의 단일 agent id, `$.agent.list()`의 idle·waiting 상태가 추가되었습니다. R010은 서브에이전트의 다른 서브에이전트 스폰을 프로젝트 정책으로 금지하며, 이 항목은 플러그인 API 표면이므로 R010을 바꾸지 않습니다. R018은 `TeamCreate` 부재 시 dormant이며 이 항목은 그 판정을 바꾸지 않습니다. 이 항목의 "plugin hook events"는 플러그인·mod 훅 표면이고, R021의 `r007-r008-drift-advisor.sh`가 읽는 것은 프로젝트 `settings.json` 훅의 stdin(`agent_id`)이므로 두 표면은 서로 다릅니다. 다만 플러그인 훅 agent id 변경이 프로젝트 훅 stdin의 `agent_id`에 영향을 줄 가능성은 남습니다 [가설 — 두 표면의 연동 여부는 미실측].
1891
+
1892
+ 기타 19건 — 이 저장소 비해당(mods·plugin 패널 UI 렌더링, 터미널 렌더링·제어 문자 처리, `ui.render` 훅, 플러그인 표시 행, VSCode 전용 롤백 등 harness 비영향 세부사항이며 이 저장소는 mods·plugin 패널 UI를 개발하지 않습니다). 실측: `gh release view v2.1.289 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 27건 중 위 본문 8건을 다뤘으므로 27 − 8 = 19건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
1893
+
1894
+ **Action items**:
1895
+ - 권한·Bash deny/ask, MCP, 플러그인·에이전트 항목은 기존 룰이 이미 다루는 전제를 강화하거나 이 저장소에 해당 구성(sandbox, `permissions.deny`, 조직 관리 MCP, `.claude-plugin/`)이 없는 항목이며 룰 문안 변경은 불필요합니다.
1896
+ - 룰 변경 제안은 없습니다.
1897
+
1898
+ ---
1899
+
1760
1900
  ## Known Platform Issues & Workarounds
1761
1901
 
1762
1902
  ### Agent tool malformed parsing on long / special-character prompts (#1241)
@@ -1781,6 +1921,7 @@ Opus 4.8에서 thinking blocks가 수정되어 API 오류가 발생하던 버그
1781
1921
  - #1134 — Claude Code v2.1.140 release note
1782
1922
  - #1137 — Claude Code v2.1.141 compatibility documentation
1783
1923
  - #1158 — Claude Code v2.1.142 compatibility documentation
1924
+ - #1166 — CC v2.1.143 compatibility documentation
1784
1925
  - #1147 — .gitignore nested .md pattern limitation note
1785
1926
  - #1187 — Claude Code v2.1.144 compatibility documentation
1786
1927
  - #1191 — Claude Code v2.1.145 compatibility documentation
@@ -1800,9 +1941,15 @@ Opus 4.8에서 thinking blocks가 수정되어 API 오류가 발생하던 버그
1800
1941
  - #1714 — Claude Code v2.1.277 compatibility documentation
1801
1942
  - #1716 — Claude Code v2.1.280 compatibility documentation
1802
1943
  - #1717 — 컨텍스트 예산 초과 대응: CC 버전 노트 이관 정책 전환(룰 → 가이드)
1944
+ - #1731 — Claude Code v2.1.281 compatibility documentation
1803
1945
  - #1746 — Claude Code v2.1.282 compatibility documentation
1804
1946
  - #1747 — Claude Code v2.1.283 compatibility documentation
1805
1947
  - #1755 — Claude Code v2.1.284 compatibility documentation
1948
+ - #1764 — Claude Code v2.1.285 compatibility documentation
1949
+ - #1765 — Claude Code v2.1.286 compatibility documentation
1950
+ - #1766 — Claude Code v2.1.287 compatibility documentation
1951
+ - #1790 — Claude Code v2.1.288 compatibility documentation
1952
+ - #1791 — Claude Code v2.1.289 compatibility documentation
1806
1953
  - `.claude/skills/claude-native/` — auto-generation source
1807
1954
  - `.claude/rules/SHOULD-hud-statusline.md` — R012 statusline integration
1808
1955
  - `.claude/rules/MUST-agent-design.md` — R006 agent frontmatter spec
@@ -18,7 +18,7 @@ Phase 1: Discovery Research
18
18
  ### Execution Modes
19
19
 
20
20
  - **Orchestrator mode**: Delegates to `/research` skill via `Skill(research, args="<topic>")`.
21
- - **Teams mode**: Executes the research workflow inline — the member spawns research teams directly as sub-agents. Does NOT use `Skill(research)` because fork context blocks sub-agent spawning in Teams mode.
21
+ - **Teams mode**: Executes the research workflow inline — the member spawns research teams directly as sub-agents when its tool set includes Agent (otherwise it reports the needed spawns and the orchestrator spawns them, R018). Does NOT use `Skill(research)` because fork context blocks sub-agent spawning in Teams mode.
22
22
 
23
23
  The executor waits for completion before proceeding to Phase 2.
24
24
 
@@ -126,7 +126,7 @@ Phase 1 research artifact is persisted by the `/research` skill.
126
126
 
127
127
  Phase 3 verification report path: `.claude/outputs/sessions/{YYYY-MM-DD}/deep-plan-{HHmmss}.md`
128
128
 
129
- **Artifact write protocol**: Under `mode: "bypassPermissions"`, write artifacts under `.claude/outputs/` directly with the Write tool (create the dated directory first if needed). Direct `Write`/`Edit`/`Bash` on `.claude/` is permitted since CC v2.1.121 — no `/tmp/*.sh` wrapping is needed (R006/R010). Only catastrophic shell operations (`rm -rf /`) remain blocked by independent safety guards.
129
+ **Artifact write protocol**: Under `bypassPermissions` (CC < 2.1.212: pass `mode: "bypassPermissions"` per call; CC >= 2.1.212: `mode` is ignored and the parent session's mode is inherited — verify the effective mode per R010 「Universal bypassPermissions」), write artifacts under `.claude/outputs/` directly with the Write tool (create the dated directory first if needed). Direct `Write`/`Edit`/`Bash` on `.claude/` is permitted since CC v2.1.121 — no `/tmp/*.sh` wrapping is needed (R006/R010). Only catastrophic shell operations (`rm -rf /`) remain blocked by independent safety guards.
130
130
 
131
131
  When spawning the final synthesis agent to write this artifact, include these instructions verbatim in the agent prompt:
132
132
 
@@ -136,7 +136,7 @@ When spawning the final synthesis agent to write this artifact, include these in
136
136
  Write the artifact under `.claude/outputs/` directly with the Write tool:
137
137
  1. Ensure the dated directory exists: .claude/outputs/sessions/<date>/
138
138
  2. Write .claude/outputs/sessions/<date>/deep-plan-<HHmmss>.md with the Write tool.
139
- This Agent tool call runs with mode: "bypassPermissions", under which direct Write/Edit/Bash on `.claude/` is permitted (CC v2.1.121+) — no /tmp/*.sh wrapping needed.
139
+ This Agent call needs `mode: "bypassPermissions"` on CC < 2.1.212 and inherits the parent session's mode on CC >= 2.1.212; under bypassPermissions, direct Write/Edit/Bash on `.claude/` is permitted (CC v2.1.121+) — no /tmp/*.sh wrapping needed.
140
140
  ```
141
141
 
142
142
  Artifact metadata header:
@@ -196,12 +196,12 @@ After PASS verdict:
196
196
 
197
197
  ## Teams Mode (Agent Teams)
198
198
 
199
- When running inside an Agent Teams member (not via Skill tool), the deep-plan workflow operates identically with these adaptations:
199
+ When running inside an Agent Teams member (not via Skill tool), the deep-plan workflow operates identically with these adaptations. Sub-agent spawning and `SendMessage` delivery below apply only when the member's tool set includes Agent and SendMessage respectively; when either is absent, follow R018 "멤버 도구 부재 시 대체 규약" — file channels and orchestrator relay (#1817):
200
200
 
201
- 1. Phase 1: Executes research workflow inline (not via `Skill(research)`) — spawns 10 research teams as sub-agents
201
+ 1. Phase 1: Executes research workflow inline (not via `Skill(research)`) — spawns 10 research teams as sub-agents (requires Agent)
202
202
  2. Phase 2: Uses EnterPlanMode/ExitPlanMode and Explore agents normally
203
- 3. Phase 3: Spawns 3 verification teams as sub-agents
204
- 4. Delivers final verified plan via `SendMessage` to team lead
203
+ 3. Phase 3: Spawns 3 verification teams as sub-agents (requires Agent)
204
+ 4. Delivers final verified plan via `SendMessage` to team lead (if SendMessage is absent: artifact file relayed by orchestrator)
205
205
 
206
206
  ### Prompt Embedding Pattern
207
207
 
@@ -219,6 +219,8 @@ Agent(
219
219
 
220
220
  Topic: {user's planning topic}
221
221
  Deliver verified plan via SendMessage to team lead when complete.
222
+ If SendMessage is not in your tool set, write the plan to an artifact
223
+ file and report its path for the orchestrator to relay.
222
224
  """
223
225
  )
224
226
  ```
@@ -229,8 +231,8 @@ Agent(
229
231
  |--------|------------------|------------|
230
232
  | Invocation | `Skill(deep-plan)` | Prompt embedding |
231
233
  | Phase 1 research | `Skill(research)` | Inline execution |
232
- | Result delivery | Return to main conversation | `SendMessage` to team lead |
233
- | Plan approval | User via ExitPlanMode | Team lead via SendMessage |
234
+ | Result delivery | Return to main conversation | `SendMessage` to team lead (if absent: artifact file relayed by orchestrator) |
235
+ | Plan approval | User via ExitPlanMode | Team lead via SendMessage (if absent: via orchestrator-relayed artifact file) |
234
236
 
235
237
  ## Fallback Behavior
236
238
 
@@ -43,6 +43,7 @@ Deep Insight가 제안하는 4계층 구조는 oh-my-customcode에 이미 구현
43
43
  메인 대화 → Write(".claude/agents/new.md", content) ← R010 위반
44
44
 
45
45
  # 교정: Executor에게 위임
46
+ # mode: CC < 2.1.212에서 필요; 2.1.212+에서는 무시되고 부모 세션 모드 또는 에이전트 frontmatter `permissionMode`(mgr-creator: bypassPermissions)가 적용됨
46
47
  메인 대화 → Agent(mgr-creator, mode: "bypassPermissions") → Write(".claude/agents/new.md", content)
47
48
  ```
48
49
 
@@ -167,7 +168,7 @@ opt-in: hard-enforce (filter 모드, --hard-enforce 플래그) — 명시적 사
167
168
  | R005 (Capability-aware Tool Scheduling) | ouroboros PR #353 capability graph 패턴. action-validator Capability Hints와 직접 연동 |
168
169
  | R006 (Agent Design) | `tools`, `domain`, `limitations`, `isolation` 필드가 하네스 행동 제어의 선언 계층 |
169
170
  | R009 (Parallel Execution) | Executor 병렬화 원칙. adaptive-harness `--scan`의 병렬 Glob/Grep 호출 근거 |
170
- | R010 (Orchestrator Coordination) | Coordinator 계층의 파일 수정 금지 + Universal bypassPermissions 강제 |
171
+ | R010 (Orchestrator Coordination) | Coordinator 계층의 파일 수정 금지 + CC < 2.1.212에서는 호출별 `mode: "bypassPermissions"` 필요, 2.1.212+에서는 부모 세션 권한 모드 상속(R010 Universal bypassPermissions 절) |
171
172
  | R013 (Ecomode) | Context budget thresholds가 Context Engineering 섹션의 per-agent 예산 할당 기반 |
172
173
  | R017 (Sync Verification) | mgr-sauron이 Supervisor 계층 역할. 하네스 구조 변경 후 R017 검증 필수 |
173
174
  | R018 (Agent Teams) | 3+ 에이전트 또는 review cycle → Agent Teams. 하네스 설계 검토에도 적용 |
@@ -38,5 +38,5 @@ The SKILL.md is intentionally thin — it carries only the workflow contract and
38
38
  ## Key Design Decisions
39
39
 
40
40
  - **Phase 4 uses `general-purpose` (NOT `arch-documenter`)**: `arch-documenter` has `disallowedTools: [Bash]` — cannot run `gh` (comment posting) or shell scripts these phases require. `general-purpose` has Bash access. See #1043 and R010 Known Limitations.
41
- - **Artifact write**: `.claude/outputs/` writes use the Write tool directly under `mode: "bypassPermissions"` — direct Write/Edit/Bash on `.claude/` is permitted since CC v2.1.121 (R006/R010); no `/tmp/*.sh` wrapping needed. See phases.md Phase 4E.
41
+ - **Artifact write**: `.claude/outputs/` writes use the Write tool directly under `bypassPermissions` (CC < 2.1.212: pass `mode: "bypassPermissions"` per call; CC >= 2.1.212: `mode` is ignored, parent session mode inherited; verify per R010 「Universal bypassPermissions」) — direct Write/Edit/Bash on `.claude/` is permitted since CC v2.1.121 (R006/R010); no `/tmp/*.sh` wrapping needed. See phases.md Phase 4E.
42
42
  - **Parallelization**: Phase 4A + 4B parallel; Phase 4C after both; Phase 4D + 4E parallel; Phase 4F verification gate.
@@ -229,7 +229,7 @@ _`/professor-triage` v2.3.0에 의해 현재 코드베이스 대비 분석됨
229
229
 
230
230
  Delegate to general-purpose. Path: `.claude/outputs/sessions/YYYY-MM-DD/professor-triage-HHmmss.md`
231
231
 
232
- **Artifact write**: Under `mode: "bypassPermissions"`, write the artifact directly with the Write tool (create the dated directory first if needed). Direct Write/Edit/Bash on `.claude/outputs/` is permitted since CC v2.1.121 — no `/tmp/*.sh` wrapping is needed (R006/R010). Only catastrophic shell operations (`rm -rf /`) remain blocked by independent safety guards.
232
+ **Artifact write**: Under `bypassPermissions` (CC < 2.1.212: pass `mode: "bypassPermissions"` per call; CC >= 2.1.212: `mode` is ignored, parent session mode inherited; verify per R010 「Universal bypassPermissions」), write the artifact directly with the Write tool (create the dated directory first if needed). Direct Write/Edit/Bash on `.claude/outputs/` is permitted since CC v2.1.121 — no `/tmp/*.sh` wrapping is needed (R006/R010). Only catastrophic shell operations (`rm -rf /`) remain blocked by independent safety guards.
233
233
 
234
234
  Artifact template:
235
235
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.101",
2
+ "version": "1.1.103",
3
3
  "lastUpdated": "2026-09-03",
4
4
  "omcustomMinClaudeCode": "2.1.121",
5
5
  "omcustomMinClaudeCodeReason": "Sensitive-path direct Write/Edit on .claude/** under bypassPermissions (R010 deprecation, #1101)",
@@ -171,8 +171,28 @@ steps:
171
171
  - Otherwise: highest-priority open tier (bug → chore → feature)
172
172
  2. Apply Step 1 filter (label-based exclusion and preference)
173
173
  3. Sort by dependency: prerequisites before dependents
174
- 4. Cap at 7 issues; if priority issues < 7, stop at that priority (don't mix tiers)
174
+ 4. Cap at 7 issues; if priority issues < 7, stop at that priority (don't mix tiers) —
175
+ EXCEPT the batch-size fill in rule 6, which takes precedence when the top tier has < 3.
175
176
  5. Minimum 1 issue; if 0 eligible, halt with "no eligible issues for auto-dev run"
177
+ 6. Batch-size norm (fill exception to "don't mix tiers"): if the top tier has fewer than
178
+ 3 eligible issues, fill from the next tiers in order (bug → chore → feature, then
179
+ preferred-label / retrospective-proposal issues) until the scope is 3-7 issues. Tier
180
+ mixing is allowed ONLY for this fill. A 1-2 issue release is permitted ONLY when the
181
+ eligible total across ALL tiers is < 3. Issues split off or deferred pending approval
182
+ or a decision (`.claude/hooks/**` unattended split in Step 3, decision-needed, etc.)
183
+ do NOT count toward the eligible total. Because the Step 3 split happens AFTER this
184
+ step, re-evaluate this fill after the Step 3 split: if the remaining scope is below 3
185
+ and eligible issues remain, fill again from the next tiers, then re-run the Step 3 path
186
+ pre-check on any newly added issue. When the scope has multiple issues, issue
187
+ implementation delegations in parallel (R009) unless their target files overlap, or one
188
+ delegation depends on another's in-release implementation choice (see the implement
189
+ step's R009 「File-Disjoint ≠ Independent」 document-implementation variant); local git
190
+ state changes (per-issue lifecycle commits via mgr-gitnerd) remain serialized, one at a
191
+ time (R009 「File-Disjoint ≠ Independent (Local Git State)」).
192
+ Rationale: the fixed per-release cost (review rounds, CI, release.yml) must not be
193
+ carried by 1-2 issues; consecutive top-tier-only runs also starve lower tiers.
194
+ Origin: user feedback 2026-10-05 ("이슈를 너무 조금씩 해결한다"); #1814 harness proposal R3
195
+ (lower-tier starvation).
176
196
 
177
197
  ## Step 3 — Approval-required path pre-check (R010)
178
198
 
@@ -211,6 +231,9 @@ steps:
211
231
 
212
232
  Output approval_required_paths (list, empty if none) as pipeline state.
213
233
 
234
+ After an unattended split, re-evaluate the Step 2 rule 6 batch-size fill against the
235
+ remaining scope (split-off issues do not count) before assigning the milestone.
236
+
214
237
  Assign scoped issues to milestone.
215
238
  Output markdown release manifest:
216
239
  | order | # | title | prerequisite | effort | labels |
@@ -469,7 +492,7 @@ steps:
469
492
  - Parallel execution per R009 (max 4 concurrent, respect dependencies)
470
493
  - Issues whose prerequisites failed in-run MUST be skipped (log reason)
471
494
  - No direct orchestrator writes (R010)
472
- - All Agent tool calls MUST pass mode: "bypassPermissions" to prevent permission prompts during unattended execution
495
+ - On CC < 2.1.212 Agent tool calls need `mode: "bypassPermissions"` (the per-call default acceptEdits overrides frontmatter `permissionMode`), so pass it for compatibility. On CC >= 2.1.212 `mode` is ignored and subagents inherit the parent session's permission mode (frontmatter `permissionMode` may adjust it). Verify the effective mode before unattended execution per R010 「Universal bypassPermissions」 (pre-triage)
473
496
  - Mid-run scope additions (a new issue added via user interrupt AFTER implement began) MUST re-enter the verify-build gate before release — do NOT let a late-added scope item ride to release on a prior verify-build pass. Critical for code changes; benign for docs-only (#1301).
474
497
  - When an implement-stage delegation edits rule/skill/guide TEXT, the orchestrator MUST NOT author the final committed wording — the subagent writes it directly from the issue body (`gh issue view <N> --json body`); the delegation prompt supplies pointers, insertion anchors, constraints, verbatim tool-output quotations, and measured facts only
475
498
  (R010 「출처 인용과 인접 문구 점검도 같은 규율」 보강 2항목, #1698 #1). The orchestrator's own requirement/scope summary counts as final wording too — copy the issue's proposal sentence from `gh issue view` output verbatim, and tag any orchestrator paraphrase "[요약 — 원문 우선]"
@@ -780,7 +803,7 @@ steps:
780
803
 
781
804
  ## Sensitive Path Handling (CC v2.1.121+)
782
805
 
783
- Direct Write/Edit/Bash on `.claude/**` is permitted under `mode: "bypassPermissions"` as of CC v2.1.121 (#1101). The legacy `/tmp/*.sh` bypass is no longer required. Structural changes (new agents/skills) still go through mgr-creator with R017 verification.
806
+ Direct Write/Edit/Bash on `.claude/**` is permitted under the `bypassPermissions` permission mode as of CC v2.1.121 (#1101). The legacy `/tmp/*.sh` bypass is no longer required. Structural changes (new agents/skills) still go through mgr-creator with R017 verification.
784
807
 
785
808
  For CC < v2.1.121 see git history for the legacy bypass pattern.
786
809