oh-my-customcode 0.174.0 → 0.176.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 +2 -2
- package/dist/index.js +2 -2
- package/package.json +2 -2
- package/templates/.claude/rules/MUST-completion-verification.md +4 -0
- package/templates/.claude/rules/MUST-parallel-execution.md +11 -0
- package/templates/.claude/rules/MUST-tool-identification.md +28 -1
- package/templates/manifest.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -241,7 +241,7 @@ var init_package = __esm(() => {
|
|
|
241
241
|
workspaces: [
|
|
242
242
|
"packages/*"
|
|
243
243
|
],
|
|
244
|
-
version: "0.
|
|
244
|
+
version: "0.176.0",
|
|
245
245
|
description: "Batteries-included agent harness for Claude Code",
|
|
246
246
|
type: "module",
|
|
247
247
|
bin: {
|
|
@@ -289,7 +289,7 @@ var init_package = __esm(() => {
|
|
|
289
289
|
yaml: "^2.8.2"
|
|
290
290
|
},
|
|
291
291
|
devDependencies: {
|
|
292
|
-
"@anthropic-ai/sdk": "^0.
|
|
292
|
+
"@anthropic-ai/sdk": "^0.102.0",
|
|
293
293
|
"@biomejs/biome": "^2.3.12",
|
|
294
294
|
"@types/bun": "^1.3.6",
|
|
295
295
|
"@types/js-yaml": "^4.0.9",
|
package/dist/index.js
CHANGED
|
@@ -2031,7 +2031,7 @@ var package_default = {
|
|
|
2031
2031
|
workspaces: [
|
|
2032
2032
|
"packages/*"
|
|
2033
2033
|
],
|
|
2034
|
-
version: "0.
|
|
2034
|
+
version: "0.176.0",
|
|
2035
2035
|
description: "Batteries-included agent harness for Claude Code",
|
|
2036
2036
|
type: "module",
|
|
2037
2037
|
bin: {
|
|
@@ -2079,7 +2079,7 @@ var package_default = {
|
|
|
2079
2079
|
yaml: "^2.8.2"
|
|
2080
2080
|
},
|
|
2081
2081
|
devDependencies: {
|
|
2082
|
-
"@anthropic-ai/sdk": "^0.
|
|
2082
|
+
"@anthropic-ai/sdk": "^0.102.0",
|
|
2083
2083
|
"@biomejs/biome": "^2.3.12",
|
|
2084
2084
|
"@types/bun": "^1.3.6",
|
|
2085
2085
|
"@types/js-yaml": "^4.0.9",
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"workspaces": [
|
|
4
4
|
"packages/*"
|
|
5
5
|
],
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.176.0",
|
|
7
7
|
"description": "Batteries-included agent harness for Claude Code",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"bin": {
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"yaml": "^2.8.2"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
|
-
"@anthropic-ai/sdk": "^0.
|
|
54
|
+
"@anthropic-ai/sdk": "^0.102.0",
|
|
55
55
|
"@biomejs/biome": "^2.3.12",
|
|
56
56
|
"@types/bun": "^1.3.6",
|
|
57
57
|
"@types/js-yaml": "^4.0.9",
|
|
@@ -96,6 +96,10 @@ Never accept "pre-existing" without direct base-branch evidence. A false "pre-ex
|
|
|
96
96
|
| "UI changes done" / "CSS updated" | type-check passes but browser render not verified; visual output unknown | Start dev server, open browser, confirm visual output; capture screenshot or describe what was seen |
|
|
97
97
|
-->
|
|
98
98
|
|
|
99
|
+
### Tool-Call Payload Completeness
|
|
100
|
+
|
|
101
|
+
도구 호출의 required 파라미터는 invoke 전에 확인한다(완료 선언 후가 아니라 호출 시점의 전제조건). announce(prefix)만 출력하고 payload 의 required 필드를 누락하는 패턴은 R008 "Required-Parameter Completeness Check"가 canonical owner다. Reference: #1324.
|
|
102
|
+
|
|
99
103
|
## Completion Contract Format — [Contract] + [Done] with criterion/evidence pairs. See template via Read tool.
|
|
100
104
|
|
|
101
105
|
<!-- DETAIL: Completion Contract Format
|
|
@@ -50,6 +50,17 @@ Before writing/editing multiple files:
|
|
|
50
50
|
|
|
51
51
|
> **Token threshold heuristic**: When a delegated agent prompt exceeds ~5000 tokens or spans 3+ unrelated domains, decompose by domain and spawn parallel agents. See R018 for Agent Teams criteria when review cycles are needed. Reference: #1085.
|
|
52
52
|
|
|
53
|
+
### LLM Batch Output Token Budget
|
|
54
|
+
|
|
55
|
+
The giant-prompt heuristic above governs INPUT tokens. The symmetric OUTPUT-side rule: when a single LLM call processes N items (scoring/classifying/extracting) and must emit structured output (e.g. JSON) per item, pre-compute the output budget = N × per-item output tokens BEFORE the call. Exceeding `max_tokens` truncates the response mid-structure → silent parse failure (the call "succeeds" but JSON.parse throws).
|
|
56
|
+
|
|
57
|
+
| Anti-pattern | Required |
|
|
58
|
+
|--------------|----------|
|
|
59
|
+
| Single batch call over a variable-size list with a fixed small max_tokens | Chunk into ≤40-item batches; constrain per-item output length (e.g. reason ≤10 words); raise max_tokens to fit one chunk |
|
|
60
|
+
| Raising max_tokens alone | Insufficient — defers the failure as the list grows. Chunking is the invariant fix. |
|
|
61
|
+
|
|
62
|
+
Reference: #1320 (fix), #1321 (session 113 retrospective 찐빠 #1), `feedback_llm_batch_truncation.md`.
|
|
63
|
+
|
|
53
64
|
<!-- DETAIL: Full violation examples (4 pairs)
|
|
54
65
|
❌ WRONG: Writing files one by one
|
|
55
66
|
Write(file1.kt) → Write(file2.kt) → Write(file3.kt) → Write(file4.kt)
|
|
@@ -31,6 +31,17 @@ Incorrect parallel: tool_call(url1), tool_call(url2), tool_call(cmd) — no iden
|
|
|
31
31
|
Correct parallel: list ALL [agent][model] → Tool/Fetching/Running lines FIRST, then all tool_calls
|
|
32
32
|
-->
|
|
33
33
|
|
|
34
|
+
### Required-Parameter Completeness Check
|
|
35
|
+
|
|
36
|
+
R008 prefix(announce)와 실제 도구 호출은 분리된 단계다. prefix 를 출력한 뒤 호출 payload 에서 도구 스키마상 required 파라미터를 누락하면 호출이 실패하거나 빈 동작이 된다. 호출 직전, prefix 존재뿐 아니라 required 파라미터가 모두 채워졌는지 확인한다.
|
|
37
|
+
|
|
38
|
+
| Anti-pattern | Required |
|
|
39
|
+
|--------------|----------|
|
|
40
|
+
| `[agent][model] → Tool: AskUserQuestion` prefix 만 출력하고 `questions` 파라미터 없이/빈 배열로 호출 | prefix + `questions` 배열(최소 1개) 모두 채워 호출 |
|
|
41
|
+
| announce 후 payload 의 required 필드 누락 (announce-payload separation gap) | announce 와 동일 메시지에서 required 필드 완비 호출 |
|
|
42
|
+
|
|
43
|
+
Cross-reference: R020 (action-completeness precondition — invoke 전에 required 파라미터 확인). Reference issue: #1324 (찐빠: AskUserQuestion `questions`-missing recurrence).
|
|
44
|
+
|
|
34
45
|
## Models
|
|
35
46
|
|
|
36
47
|
| Model | Use |
|
|
@@ -81,6 +92,21 @@ matches the spawn announcement:
|
|
|
81
92
|
[2] lang-python-expert:sonnet → Python code review
|
|
82
93
|
```
|
|
83
94
|
|
|
95
|
+
## Tier-3 Interaction Tool Prefix (MANDATORY)
|
|
96
|
+
|
|
97
|
+
R008 "every tool call" applies to Tier-3 interaction tools too — NOT only file/exec tools. Applying the `[agent][model] → Tool:` prefix to Agent/Bash/Read while omitting it on `AskUserQuestion`, `TodoWrite`, `EnterPlanMode`, etc. is a violation.
|
|
98
|
+
|
|
99
|
+
| Tool | R008 prefix required? |
|
|
100
|
+
|------|----------------------|
|
|
101
|
+
| AskUserQuestion | YES — `[agent][model] → Tool: AskUserQuestion` before the call |
|
|
102
|
+
| TodoWrite | YES |
|
|
103
|
+
| EnterPlanMode / ExitPlanMode | YES |
|
|
104
|
+
| Skill | NO separate R008 prefix — identified via R007 `claude → {skill-name}` integrated header instead |
|
|
105
|
+
|
|
106
|
+
Skill invocation is the one exception: it is identified through the R007 integrated identification block (`┌─ Agent: claude → {skill-name}`), not a standalone R008 tool prefix.
|
|
107
|
+
|
|
108
|
+
Reference issue: #1321 (session 113 retrospective, 찐빠 #2 — AskUserQuestion prefix omitted twice).
|
|
109
|
+
|
|
84
110
|
## Example
|
|
85
111
|
|
|
86
112
|
```
|
|
@@ -102,8 +128,9 @@ Agent(description: "[2] Python code review", subagent_type: "lang-python-expert"
|
|
|
102
128
|
|
|
103
129
|
1. 이 호출 위에 `[agent-name][model] → Tool: <tool-name>` 라인이 있는가?
|
|
104
130
|
2. agent-name 과 model 이 현재 컨텍스트와 일치하는가?
|
|
131
|
+
3. 이 호출에 도구 스키마상 required 파라미터가 모두 채워져 있는가? (예: AskUserQuestion 는 `questions` 배열이 비어 있지 않아야 함) prefix(announce)만 출력하고 실제 호출 payload 의 required 필드를 누락하면 안 된다.
|
|
105
132
|
|
|
106
|
-
체크 실패 시 즉시 prefix
|
|
133
|
+
체크 실패 시 즉시 prefix/필수 파라미터를 보완한 후 호출.
|
|
107
134
|
|
|
108
135
|
### Common Multi-Turn Violation
|
|
109
136
|
|
package/templates/manifest.json
CHANGED