oh-my-customcode 1.1.63 → 1.1.65
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 +888 -11488
- package/dist/index.js +52 -265
- package/package.json +1 -1
- package/templates/.claude/rules/MAY-optimization.md +4 -0
- package/templates/.claude/rules/MUST-agent-design.md +8 -0
- package/templates/.claude/rules/MUST-agent-teams.md +4 -0
- package/templates/.claude/rules/MUST-completion-verification.md +4 -0
- package/templates/.claude/rules/MUST-enforcement-policy.md +4 -0
- package/templates/.claude/rules/MUST-orchestrator-coordination.md +4 -0
- package/templates/.claude/rules/MUST-parallel-execution.md +2 -0
- package/templates/.claude/rules/MUST-permissions.md +6 -0
- package/templates/.claude/rules/MUST-safety.md +4 -0
- package/templates/.claude/rules/MUST-sync-verification.md +2 -0
- package/templates/.claude/rules/SHOULD-ecomode.md +4 -0
- package/templates/.claude/rules/SHOULD-hud-statusline.md +2 -0
- package/templates/.claude/rules/SHOULD-verification-ladder.md +4 -0
- package/templates/manifest.json +1 -1
|
@@ -534,6 +534,10 @@ Before spawning any agent:
|
|
|
534
534
|
|
|
535
535
|
> **★ v2.1.257+**: 프로젝트 스코프 `.claude/settings.json`/`.claude/settings.local.json`의 `defaultMode: "bypassPermissions"`가 이제 **무시**됩니다(`"auto"`와 동일 취급) — user 또는 managed settings에 설정하거나 `--permission-mode` 플래그로 전달해야 합니다. 이 섹션은 v2.1.212+에서 "통제점은 부모 세션의 permission mode"라고 규정했는데, 그 부모 세션 mode를 프로젝트 settings로는 더 이상 켤 수 없으므로 통제점이 **user/managed settings 또는 `--permission-mode` 플래그**로 한 단계 더 밀려납니다. 이 저장소 실측(2026-09-02): `.claude/settings.json`과 `.claude/settings.local.json` 둘 다 `permissions.defaultMode = "bypassPermissions"`였으나 `~/.claude/settings.json`(user)은 `"auto"`였고, 세션 훅 컨텍스트도 "auto mode is active"를 보고했습니다 — 즉 v2.1.257 이후 "bypass로 무인 실행 중"이라는 전제가 **조용히 깨져 있었습니다**. 무인 루프(`/fsd`) 착수 전에는 user settings의 `permissions.defaultMode`를 조회하거나 `--permission-mode bypassPermissions`를 명시적으로 전달해 유효 모드를 확인합니다 — R002/R006의 이 섹션 canonical 참조는 그대로 유지합니다. 같은 릴리즈에서 agent view(`←`)로 dispatch된 세션이 원본 세션의 permission mode를 강제 상속하던 결함도 수정되어, 대상 디렉토리의 `defaultMode`와 agent의 `permissionMode`가 이제 존중됩니다.
|
|
536
536
|
|
|
537
|
+
> **v2.1.259+**: 무인 헤드리스 호스트용 신규 실행 플래그 `--permission-prompts none`이 추가되었습니다 — 프롬프트를 발생시켰을 대상은 자동으로 **거부**되고, 나머지는 활성 permission mode(auto mode 포함)가 그대로 판정합니다. 이는 위 v2.1.257 노트가 규정한 user-scope `permissions.defaultMode`, `--permission-mode` 플래그에 이은 **세 번째 통제점**입니다 — 이 플래그는 bypass를 부여하지 않고 "프롬프트했을 상황"을 "거부"로 전환할 뿐이므로, 이 플래그로 실행한 `/fsd` 류 루프는 프롬프트에 걸려 정지하지 않는 대신 프롬프트가 필요했을 스텝이 **거부(실패)로 종료**될 수 있습니다. 무인 스텝이 멈춘 것과 거부된 것은 R020 진단 축이 다릅니다 — 이 플래그로 실행한 경우 정지한 프롬프트가 아니라 **거부 에러 메시지**를 먼저 찾습니다. 또한 v2.1.260에서 **서브에이전트**가 시작한 백그라운드 명령의 1시간 시간 제한이 제거되어(메인 세션과 동일하게 종료·중지 시까지 실행), v2.1.232 background-spawn 노트와 결합하면 서브에이전트의 장기 백그라운드 명령이 더 이상 60분에 죽지 않으므로, 260+에서는 "1시간 뒤 조용히 종료됨"을 더 이상 유효한 진단으로 쓰지 않습니다.
|
|
538
|
+
|
|
539
|
+
> **v2.1.259/265+**: (259) 중첩(nested) 백그라운드 서브에이전트의 결과가 이제 **부모 서브에이전트의 트랜스크립트**에 저장되어, resume된 서브에이전트가 결과를 유지하고 공유 트랜스크립트에서 전달이 드러납니다 — 이는 CC의 기본 nested-spawn 능력을 서술할 뿐이며, 위 flat-delegation **정책**(Core Rule)은 그대로 불변입니다. (259) remote-control 세션에서 `Stop`이 백그라운드 에이전트·워크플로우를 실제로 멈추지 못하던 결함이 수정되어, kill된 작업이 프로세스가 실제로 종료될 때까지 계속 보이고 재중지 가능합니다(cross-ref R020 역방향 노트 — "실패/중단 보고 ≠ 실제 실패"). (265) foreground로 스폰한 서브에이전트를 resume하면 도구 목록과 시스템 프롬프트 prefix가 바뀌어(prompt-cache 파손) 있던 결함이 수정되었고, non-interactive 세션(`-p` stream-json / SDK / cloud)이 사용자 메시지마다 셸 cwd를 초기화하던 결함도 수정되어 이제 `cd`가 턴 사이에 유지됩니다 — 턴별로 명령을 연쇄하는 `-p` 위임 스크립트에 직접 영향을 줍니다.
|
|
540
|
+
|
|
537
541
|
> **cross-ref (v1.1.50 실측)**: R018의 `maxTurns` partial 표시(v2.1.246)가 R020 「Verification-Delegation Non-Termination」 mid-step 종료 패턴의 **실재 원인 중 하나로 확정**되었다 — 위임 프롬프트에 종료 금지 clause를 아무리 강화해도, 절단 주체가 플랫폼 turn 한도이면 에이전트에 닿지 않는다. 위임 경계를 단일 목표로 분할하는 것(R020 해당 조항)이 여전히 1차 방어선인 이유다. 상세는 R018 (MUST-agent-teams.md) Member Completion Verification 섹션.
|
|
538
542
|
|
|
539
543
|
## Agent Capability Pre-Check
|
|
@@ -133,6 +133,8 @@ Reference: #1320 (fix), #1321 (session 113 retrospective 찐빠 #1), `feedback_l
|
|
|
133
133
|
|
|
134
134
|
> **v2.1.229+**: workflow fan-out이 같은 prefix를 공유하는 sibling agent를 **stagger**해 후속 에이전트가 prompt prefix 캐시를 재사용합니다(`CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS=0`으로 비활성). 즉 동일 접두사 병렬 배치는 동시 발사가 아니라 **의도적 시차 실행**이며, 스폰 직후 일부 에이전트의 시작 지연을 아래 Adaptive Parallel Splitting의 stall 신호로 오판하지 않습니다 — 구버전에서는 각 형제가 접두사 비용을 중복 지불했습니다. 또한 CPU 제한 컨테이너에서 dynamic workflow가 호스트 코어 수를 쓰던 문제가 수정되어, 컨테이너 실행 시 실효 동시성이 위 표의 cap보다 낮을 수 있습니다.
|
|
135
135
|
|
|
136
|
+
> **v2.1.265/267+**: 병렬/백그라운드 배치의 비용 모델에 영향을 주는 prompt-cache 안정성 수정 다수입니다. (265) 전경(foreground)으로 스폰된 subagent를 재개(resume)하면 그 에이전트의 tool 목록과 system prompt prefix가 바뀌어 prompt-cache 재사용이 깨지던 결함이 수정되었습니다. (267) 대화에서 fork된 background worker가 세션 도중 대화의 tool 블록에 `EnterWorktree`를 추가하던 결함(cache 단절), `ToolSearch`가 없는 세션에서 세션 도중 추가된 MCP/plugin tool이 tool 목록에 즉시 실려 cache가 단절되던 결함(지원 모델은 이제 deferred definition으로 전달받음), `/model`로 모델을 전환하면 모든 tool 정의를 다시 전송해 cache miss가 발생하던 결함이 수정되었습니다. 이 규칙의 비용 모델에 대한 함의: 구버전에서는 fork/resume이 prefix를 바꿀 때마다 위 v2.1.229 prefix-stagger 이점이 조용히 소실됐으므로, 그 시기 버전에서 측정된 "병렬 신규 스폰"과 "long-lived 재사용"(아래 Fable 5 노트) 간 비용 차이는 현행 동작과 비교 불가합니다. 또한 (261) background agent가 재개(resume)되지 못하고 wake-up이 tight loop로 재시도되며 CPU가 지속 고점유되던 결함이 수정되었습니다 — 구버전에서는 병렬 배치 중 CPU 포화가 배치 자체가 아니라 재개 불가한 background agent에서 비롯될 수 있었습니다(「파일 disjoint ≠ 자원 disjoint」 CPU 행과 교차 참조).
|
|
137
|
+
|
|
136
138
|
> **Fable 5 long-lived subagent reuse (Origin: #1435)**: Fable 5는 long-lived subagent 재사용(단일 subagent가 여러 단계를 이어서 수행)에 강함 — 현행 R009 병렬 실행 원칙과 상충하지 않으며, Fable 5 실행 시 short-lived 병렬 다수 대신 long-lived 재사용도 유효한 선택지. 상세는 `guides/claude-code/16-fable5-prompting.md`.
|
|
137
139
|
|
|
138
140
|
## Adaptive Parallel Splitting
|
|
@@ -104,6 +104,12 @@ Use a `"*"` deny rule in `settings.json` to enforce a deny-by-default posture, t
|
|
|
104
104
|
|
|
105
105
|
> **v2.1.257+**: 권한검사 보강 5건이 추가로 확인되었습니다. (a) auto mode에서 `permissions.ask` 규칙이 매칭 명령이 복합 명령·서브셸 내부에서 실행될 때 건너뛰어지던 결함이 수정되어 확인 프롬프트 없이 실행되지 않습니다 — 위 「allow ≠ classifier」 계열의 ask 층 보강입니다. (b) zsh가 bash와 다르게 파싱하는 `[[ ]]` 조건문을 auto-approve하던 결함이 추가로 수정되었습니다 — v2.1.221/238에 이은 3번째 보강이며, 이 저장소의 Bash 도구 실행 셸이 zsh이므로 직접 해당합니다. (c) `permissions.blockReadsOutsideWorkingDirectories` 설정이 신설되어, auto mode에서 작업 디렉토리 밖 첫 파일 읽기 전 1회 프롬프트를 표시하고 그런 읽기를 차단하는 옵션을 제공합니다. (d) `allowManagedPermissionRulesOnly`가 활성 상태일 때 첫 settings reload 이후 `--disallowedTools`와 세션 deny 규칙이 탈락하던 결함이 수정되었습니다. (e) 워크트리 격리 세션이 git을 건드리지 않는 Bash 루프·`$VAR` 읽기·`"$(…)"`·heredoc을 "too complex to verify that it stays inside the worktree"로 거부하던 결함이 수정되었습니다 — R009 워크트리 병렬 위임 시 이런 복합 명령의 거부를 더 이상 격리 결함으로 진단하지 않습니다.
|
|
106
106
|
|
|
107
|
+
> **v2.1.259 → 260 (도입 후 롤백)**: v2.1.259는 Bash `Read()` deny 규칙의 적용 범위를 옵션 값으로 주어진 파일(`--ignore-revs-file=.env`, `-f.env`, `@file`), `git diff`/`git grep`의 파일 피연산자, `cd DIR && cat FILE` 복합 명령까지 확장했고, deny 대상 파일이 있는 디렉토리에 대한 `grep -r`/`cp -r`도 확인을 요구하도록 했습니다. 그러나 v2.1.260이 이 변경을 **롤백**했습니다 — `Read(./**/build/**)` deny 규칙이 걸린 프로젝트에서 모든 모드의 `npm run build`가 거부되고, `cd … && grep`이 auto mode에서조차 매번 프롬프트되는 부작용이 있었기 때문입니다. 따라서 현행(260+)에서는 `Read()` deny 규칙이 **Bash 인자까지는 커버하지 않습니다** — 이 파일에서 세 번째로 관측되는 "단일 릴리즈 권한 개선의 롤백" 사례이며(위 v2.1.232/233 「일반 교훈」 참조), 이런 개선은 여전히 defense-in-depth로만 취급합니다. 별도로 (259) 파싱 불가능한 managed settings(managed-settings 파일, drop-in, MDM plist, HKLM)를 만나면 이제 **무음으로 미강제** 처리하는 대신 **시작을 거부**하고 원인 소스를 명시합니다.
|
|
108
|
+
|
|
109
|
+
> **v2.1.260+**: 권한 규칙 정확성 수정 5건입니다. (a) 경로에 괄호가 포함된 `Edit`/`Write`/`Read` 규칙이 무효로 버려지거나 Bash 샌드박스에서 무시되어 "읽기 전용" 폴더가 실제로는 쓰기 가능했던 결함이 수정되었습니다. (b) 컴파일 불가능한 패턴(예: 닫히지 않은 `[`)을 가진 파일 규칙 하나가 모든 파일 편집을 `Invalid regular expression` 오류로 실패시키던 결함이 수정되어, 이제 그런 deny 규칙은 자신이 적은 리터럴 경로만 보호합니다. (c) zsh 전용 `REPORTTIME`/`REPORTMEMORY`/`DIRSTACKSIZE` 변수 대입 안에 command substitution을 숨긴 명령이 Bash 권한 검사를 자동 승인하던 결함이 수정되어 이제 프롬프트됩니다 — v2.1.221/238/257에 이은 4번째 zsh 파싱 하드닝이며, 이 저장소의 Bash 도구 실행 셸이 zsh이므로 직접 해당합니다. (d) 닫는 괄호 뒤에 텍스트가 붙어(`Bash(ls) x`) 결코 매칭되지 않던 permission rule이 무음 무시 대신 **invalid setting으로 보고**됩니다. (e) Glob/Grep이 권한 검사 **전에** 디스크에서 검색 경로를 프로브하던 결함이 수정되어, 이제 Read와 동일하게 권한 판정 후에 경로 부재가 보고됩니다(위 v2.1.251 (d)와 같은 계열). 또한 `!` bash-mode prompt 명령은 엄격 샌드박스 모드(`sandbox.allowUnsandboxedCommands: false`)에서도 이제 샌드박스 **밖에서** 실행됩니다 — R001/R015의 "사용자가 `!`로 직접 실행" 패턴이 설계상 명시적으로 unsandboxed임을 재확인시킵니다.
|
|
110
|
+
|
|
111
|
+
> **v2.1.265/267+**: (265) `.claude` 폴더 권한 옵션의 설명 문구가 실제 동작과 일치하도록 수정되었습니다 — 프로젝트의 `.claude` 폴더(또는 `~/.claude`) 파일을 해당 세션 동안 편집 허용한다는 뜻입니다. 또한 백슬래시가 포함된 플러그인 경로가 macOS/Linux에서 symlink containment 검사를 우회할 수 있던 결함이 수정되었습니다. (267) managed `allowedHttpHookUrls`, `httpHookAllowedEnvVars`, `allowedChannelPlugins` 설정이 읽기 불가 상태일 때 이제 **아무것도 허용하지 않도록**(이전에는 전부 허용) fail-closed로 바뀌었습니다 — 위 (259) managed-settings 파싱 실패 시 시작 거부 방향과 같은 계열입니다. fetched marketplace 항목 경로에 백슬래시가 포함되어 containment를 우회하던 결함도 함께 수정되었습니다. HTTP hook allowlist 항목은 R021(훅) 교차 참조.
|
|
112
|
+
|
|
107
113
|
> **v2.1.238+**: Bash 도구의 permission 검사가 zsh 전용 조건문(shell conditional) 문법에 대해 추가로 개선되었습니다. 이는 위 v2.1.221 "zsh `[[ ]]` 정규식 조건문 안에서 숨겨진 명령이 권한 검사를 우회"의 **직접 연장선**입니다 — "개선"으로만 기술되어 있어 v2.1.221 수정이 완전 해결이 아니었거나 추가 우회 벡터가 있었음을 시사합니다. 이 저장소의 Bash 도구 실행 셸이 zsh이므로(R005 #1540 실측) 직접 관련됩니다.
|
|
108
114
|
|
|
109
115
|
> **v2.1.246/248+**: (246) 끝에 매달린 `&&`/`||`가 있는 손상된(malformed) 명령에 대해 Bash 권한검사가 이제 **항상 승인을 요구**합니다 — 구버전에서는 이런 형태가 검사를 우회할 수 있었습니다. (248) `--restricted`(또는 `CLAUDE_CODE_RESTRICTED=1`) 모드가 신설되어 명령/코드 실행 도구와 `WebFetch`를 제거하고(`--tools`에 명시 시 예외), 파일 도구를 작업 디렉토리 내부로 제한하며, `bypassPermissions`를 거부하고, user/project/local settings 파일을 무시합니다. 이 저장소는 프로젝트 settings에 `bypassPermissions`를 선언하지만 v2.1.257부터 그 선언은 무시되므로(R010 Universal bypassPermissions의 ★ v2.1.257 노트 — 2026-09-02 실측 유효 모드는 user settings `auto`), `--restricted`와의 상호 배타성은 **user/managed scope에서 bypass를 켠 경우에 한해** 성립합니다 — 이 저장소 워크플로우에는 적용하지 않되, 신규 안전 모드 옵션으로 존재를 기록합니다.
|
|
@@ -41,6 +41,10 @@ The following git commands have caused working tree loss in past sessions (#1146
|
|
|
41
41
|
|
|
42
42
|
> **v2.1.246/251+**: 자격증명 전송 경계 결함 2건이 수정되었습니다. (246) 서드파티 게이트웨이(`ANTHROPIC_BASE_URL`)용 API 키가 Anthropic 텔레메트리/메트릭 요청에 함께 실려 전송되던 결함 — 구버전에서는 게이트웨이 자격증명이 자기 호스트 밖으로 유출됐습니다. (251) `/ultrareview` 및 로컬 시딩 cloud session이 `prod.env` 계열·`*.tfvars` 파일, 또는 자격증명 파일의 에디터 swap/temp/backup 사본(`key.pem.tmp`, `id_rsa.swo`)을 업로드하던 결함 — 이제 로컬에 남습니다. 이 저장소는 `/ultrareview`를 사용하지 않으나, 두 항목 모두 이 섹션의 "자격증명 저장소 덤프 금지" 원칙과 동일한 위협 클래스에 대한 플랫폼 측 방어이므로 기록합니다.
|
|
43
43
|
|
|
44
|
+
> **v2.1.261+**: 위험한 `rm` 안전 프롬프트가 **positional parameter에 대한 `rm -rf`**(`rm -rf "$@"` 등)와 **큰따옴표로 감싼 `sh -c` 스크립트 내부**의 `rm -rf`까지 잡도록 확장되었습니다 — 위 Destructive Git Commands 표의 per-invocation 승인 요구와 동일한 원칙을 셸 레벨에서 보강하는 플랫폼 측 defense-in-depth이며, Pre-Delegation Blast-Radius Enumeration을 대체하지 않습니다. 또한 auto mode가 **공개 다이어그램 렌더러 URL에 다이어그램 소스를 실어 보내는 링크**(mermaid/kroki류 렌더 URL)를 그 사이트로의 **업로드**로 취급해, 사용자가 요청하지 않은 한 더 이상 auto-approve하지 않습니다. 이 저장소의 다이어그램 스킬(`eraser-diagrams`, mermaid 렌더링)이 이런 링크를 생성할 수 있으므로, 이런 링크에서 classifier가 멈추는 것은 정상 동작이지 오작동이 아닙니다 — 재시도하지 않습니다(cross-ref R010 Subagent Scope-Creep STOP Protocol).
|
|
45
|
+
|
|
46
|
+
> **v2.1.260/265/267+**: (260) `!` bash-mode 프롬프트에서 직접 입력한 명령은 strict sandbox mode에서도 샌드박스 **밖에서** 실행됩니다 — 즉 위 「Standing User-Deny + Classifier Block」섹션의 "`!`로 사용자에게 넘기는" 패턴은 설계상 **비샌드박스 경로**임을 명시적으로 인지해야 합니다. (265) macOS/Linux에서 백슬래시를 포함한 플러그인 경로가 symlink containment 검사를 우회하던 결함, (267) fetched marketplace entry 경로에 대한 동일 계열 결함이 각각 수정되었습니다 — 둘 다 v2.1.233 `\??\` device prefix 노트와 같은 **경로 표기 우회 계열**(같은 위치를 다르게 표기해 검사를 피함)입니다. 또한 (259) 동시 세션이 서로의 `~/.claude.json` 변경(workspace trust 초기화, MCP/project state 유실)을 조용히 되돌리던 결함도 수정되었습니다 — 공유 워크트리 다중 세션 실행 시 관련됩니다.
|
|
47
|
+
|
|
44
48
|
### Pre-Delegation Blast-Radius Enumeration
|
|
45
49
|
|
|
46
50
|
> Origin: #1307 찐빠 #1 (High) — user chose "discard local changes and pull", and `git reset --hard origin/develop` was delegated immediately → user rejected (interrupt). The blast radius — that "discard local changes" included 18 files of *intended* uncommitted work (rule edits, new skills, new guides), not just a version downgrade — was never enumerated for the user.
|
|
@@ -256,6 +256,8 @@ Origin: #1584 #4 (v1.1.45 세션) — R021 자기 서술 staleness 반영을 R01
|
|
|
256
256
|
|
|
257
257
|
> **v2.1.233+**: `claude plugin validate`가 **bare `.claude/skills` 디렉토리**(플러그인 매니페스트 없는 스킬 트리)도 검사해, frontmatter 파싱에 실패하는 `SKILL.md`를 보고합니다. 이 저장소의 `.claude/skills/**/SKILL.md`는 아래 Quick Verification Commands가 **개수만** 세고 frontmatter 유효성은 세지 않으므로, 스킬 추가·수정 후 `claude plugin validate`를 개수 대조와 **함께** 실행해 파싱 실패를 결정론적으로 잡습니다(구버전에서는 이 경로가 검사 대상이 아니어서 깨진 frontmatter가 런타임 미로드로만 드러났습니다). Cross-ref: R023(Tier 1 결정론적 검증).
|
|
258
258
|
|
|
259
|
+
> **v2.1.259/265+**: (259) `claude plugin validate --json`이 기계 판독 가능한 검증 리포트를 제공합니다 — 위 검사가 짝을 이루는 개수 대조와 함께 쓸 때는 이 리포트를 frontmatter 파싱 확인의 우선 수단으로 삼습니다. (259) 동시 세션이 서로의 `~/.claude.json` 변경(workspace trust 초기화, MCP/프로젝트 상태 유실)을 조용히 되돌리던 결함이 수정되었습니다 — 구버전의 공유 워크트리 다중 세션 실행(위 「게이트는 분기 시점 1회가 아니라 상태변경 위임마다」 참조)은 브랜치 상태뿐 아니라 trust/MCP 상태도 유실될 수 있었습니다. (265) Claude Code 자체의 git status·diff 프로브가 작업트리 내부의 **중첩 저장소**가 설정한 clean filter를 거쳐 실행되던 결함이 수정되었습니다 — 구버전에서는 중첩 저장소의 clean filter가 CC의 작업트리 인식을 셸에서 직접 실행한 `git status` 결과와 다르게 만들 수 있었으므로, 이 규칙이 의존하는 두 ground-truth 소스(CC 내부 관측 vs 셸 직접 실행)가 항상 일치한다고 보장되지 않았습니다.
|
|
260
|
+
|
|
259
261
|
## Quick Verification Commands — agent/skill/guide/wiki counts via ls/find/wc. See commands via Read tool.
|
|
260
262
|
|
|
261
263
|
<!-- DETAIL: Quick Verification Commands
|
|
@@ -92,6 +92,10 @@ Active removal of irrelevant retrieved content from agent context. Complements o
|
|
|
92
92
|
|
|
93
93
|
> **v2.1.251+**: Sonnet 5의 기본 auto-compact 창이 **전체 1M 컨텍스트로 변경**되어, 1M 창 세션이 이제 ~934K가 아니라 ~967K 토큰에서 auto-compact됩니다. 위 `CLAUDE_CODE_DISABLE_1M_CONTEXT` 노트와 **직접 상호작용**합니다 — 그 env가 **설정된 환경**에서는 여전히 200K로 강제 유지되지만, **비활성 환경**(기본값)에서는 이번 변경으로 실효 auto-compact 임계값 자체가 상향됩니다. 이 저장소 에이전트 다수가 `claude-sonnet-5`이므로, 위 임계값 표의 백분율 계산은 env 설정 여부에 더해 이 CC 버전 여부까지 함께 확인해야 절대 토큰량이 정확합니다.
|
|
94
94
|
|
|
95
|
+
> **v2.1.260+**: 1M 컨텍스트를 가진 모델의 auto-compact 시점이 확대되어, Opus·Fable 세션도 이제 1M 토큰 한도 직전에 compact되고 매우 큰 컨텍스트에서의 recovery compaction이 더 이상 10분 타임아웃으로 실패하지 않습니다 — 위 v2.1.251 Sonnet 5 노트를 Opus/Fable 계열로 확장하는 것이므로, `CLAUDE_CODE_DISABLE_1M_CONTEXT`가 설정되지 않은 한 이 섹션의 백분율 임계값은 이제 세 모델군 전체에서 절대 토큰량 ~1M에 대응합니다. 같은 릴리즈에서 `/cost`와 statusline의 `prompt_cache` 필드가 prompt-cache miss의 **가능성 있는 원인**(도구 정의·시스템 프롬프트 변경, TTL 경과 idle)을 표시하도록 개선되어, 이 규칙이 다루는 캐시 관련 비용 이상 징후를 진단할 때 그 원인 후보를 출발점으로 삼을 수 있습니다 — 후보이지 확정 원인이 아니므로 R020 Proxy Signal 원칙대로 실측으로 확정합니다(cross-ref R012 statusline).
|
|
96
|
+
|
|
97
|
+
> **v2.1.261+**: 컨텍스트 비용 진단 도구 2종이 추가되었습니다. `/skill-doctor`는 로드된 스킬 중 사용되지 않는 것과 그 컨텍스트 비용을 표시해 가지치기 대상을 알려줍니다 — 이 저장소의 115개 스킬 열거 블록과 `profile` 스킬의 플러그인 세트 전환에 직접 관련됩니다. `bashOutputMaxChars`/`taskOutputMaxChars` 설정은 command·background-task 출력이 파일로 저장되기 전 모델에 인라인 전달되는 상한을 올릴 수 있습니다(최대 128K자). 지침: 이 상한을 기본값으로 올리지 않습니다 — 이 규칙의 압축 원칙(파일 목록 → 개수, 오류 트레이스 → 앞/뒤 줄)이 작은 인라인 출력을 선호하므로, pass/fail 라인이 잘리는 특정 검증에 한해서만 올리고 그 외에는 독립적인 exit-code 조회(R005 #1492)를 우선합니다.
|
|
98
|
+
|
|
95
99
|
<!-- DETAIL: Context Budget Management
|
|
96
100
|
|
|
97
101
|
Task-type-aware context thresholds that trigger ecomode earlier for context-heavy operations.
|
|
@@ -62,6 +62,8 @@ Countdown format: >=1d → "{d}d{h}h", >=1h → "{h}h{m}m", <1h → "{m}m", unav
|
|
|
62
62
|
RL/WL segments omitted on CC older than v2.1.80.
|
|
63
63
|
-->
|
|
64
64
|
|
|
65
|
+
> **v2.1.260+**: 상태줄의 `prompt_cache` 필드(및 `/cost`)가 이제 prompt-cache miss의 **가능성 있는 원인**을 함께 보여줍니다 — 예: 도구 정의나 시스템 프롬프트가 변경됨, TTL을 넘겨 유휴 상태였음. `.claude/statusline.sh`를 확장해 캐시 상태를 노출하려면 이 필드가 캐시 hit/miss 상태의 결정론적 소스입니다 — 함께 표시되는 원인은 플랫폼의 추정 후보이지 확정 원인이 아닙니다. cross-ref R013(context budget), R009(v2.1.229 prefix stagger — 병렬 배치에서 "도구 정의 변경됨"이 원인으로 뜨면 stagger의 캐시 재사용 이득이 소실됐다는 뜻입니다).
|
|
66
|
+
|
|
65
67
|
## Integration
|
|
66
68
|
|
|
67
69
|
Integrates with R007 (Agent ID), R008 (Tool ID), R009 (Parallel).
|
|
@@ -172,6 +172,10 @@ Before invoking a Workflow script, deterministically verify:
|
|
|
172
172
|
|
|
173
173
|
> **v2.1.223+**: workflow script가 동적 `import()`로 workflow 샌드박스 **밖의 코드를 실행**할 수 있던 결함이 수정되었습니다. 위 표의 체크는 프롬프트 조립·문법·런타임 계열을 다루지만 **샌드박스 탈출은 다루지 않았고**, 구버전에서는 `node --check` 통과 + 프롬프트 정상 조립 상태에서도 스크립트가 경계 밖 코드를 끌어올 수 있었습니다. 외부에서 받은 workflow script를 실행하기 전 동적 `import()` 사용 여부를 grep으로 확인합니다(Tier-1 결정론 검사).
|
|
174
174
|
|
|
175
|
+
> **v2.1.259/260+**: Workflow 도구 견고성 수정 3건입니다. (259) 워크플로 실행 재개 시 직전 stop된 실행의 프로세스가 아직 종료 중이면 그 agent들이 **중복 실행**될 수 있던 결함이 수정되었습니다 — 구버전에서는 `resumeFromRunId`를 stop 직후 바로 호출하는 것이 안전하지 않았으므로, stop → 프로세스 종료 확인 → resume 순서를 지킵니다. (260) Workflow `agent({schema})`가 이제 **충족 불가능한 JSON Schema를 사전 거부**하고, 재시도 한도 초과 에러에 마지막 검증 실패 내용을 포함합니다 — 플랫폼이 스스로 수행하는 Tier-1 결정론 사전 점검이며, 위 표의 sanity-check 항목에 "충족 불가능한 schema는 어떤 agent도 실행되기 전에 거부됨"을 추가로 간주할 수 있습니다. (260) 장시간 context compaction이 진행 중인 Workflow subagent가 "stalled"로 재시작되던 결함이 수정되었습니다 — R009 Adaptive Parallel Splitting과 교차 참조: compaction 대기는 stall이 아닙니다.
|
|
176
|
+
|
|
177
|
+
> **v2.1.267+**: auto mode에서 **큰 출력 스키마**를 가진 Workflow `agent()` 호출이 safety classifier의 검토 대신 **거부**되던 결함이 수정되었습니다. 구버전에서 큰 스키마 `agent()` 호출의 거부는 classifier 판정이 아니라 플랫폼 크기 제약의 산물이었으므로, R010 Subagent Scope-Creep STOP Protocol의 trip 횟수에 계상하지 않습니다. 또한 (261) `bashOutputMaxChars`/`taskOutputMaxChars` 설정(최대 128K자)이 신설되어 명령/백그라운드 작업 출력이 파일로 저장되기 전 모델에 인라인으로 도달하는 양을 조정합니다 — Tier-1 검증 스크립트의 출력이 파일로 잘려 pass/fail 라인이 유실될 때 관련됩니다; 한도를 올리기보다 exit code를 단독으로 읽는 방식(R005 #1492)을 우선합니다.
|
|
178
|
+
|
|
175
179
|
#### Common Violation (#1271)
|
|
176
180
|
Session 106 follow-up to #1266 ③: a Workflow authoring error recurred — the guardrail fact-sheet was concatenated onto the agent's RETURN VALUE instead of the prompt string, and a placeholder/assembly slip went uncaught because no pre-run sanity check existed. This check is the deterministic Tier-1 guard that catches such slips before the expensive run.
|
|
177
181
|
|
package/templates/manifest.json
CHANGED