oh-my-customcode 0.173.0 → 0.175.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-agent-design.md +10 -0
- package/templates/.claude/rules/MUST-agent-teams.md +12 -0
- package/templates/.claude/rules/MUST-parallel-execution.md +11 -0
- package/templates/.claude/rules/MUST-permissions.md +12 -0
- package/templates/.claude/rules/MUST-tool-identification.md +15 -0
- 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.175.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.175.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.175.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",
|
|
@@ -27,6 +27,16 @@ tools: [Read, Write, ...] # Allowed tools
|
|
|
27
27
|
|
|
28
28
|
Extended context suffix: `[1m]` (e.g., `claude-opus-4-6[1m]`) — enables 1M token context window.
|
|
29
29
|
|
|
30
|
+
### Fallback Models (CC v2.1.166+)
|
|
31
|
+
|
|
32
|
+
> **v2.1.166+**: The `fallbackModel` setting configures up to three fallback models tried in order when the primary model is overloaded or unavailable. `--fallback-model` now also applies to interactive sessions. CC additionally retries a turn once on the fallback model when the API rejects an unexpected non-retryable error (auth, rate-limit, request-size, and transport errors still surface immediately).
|
|
33
|
+
|
|
34
|
+
This is a settings-level resilience mechanism, distinct from the per-agent `model:` frontmatter. It complements the `model-escalation` skill (outcome-based escalation) by handling availability/overload failover at the platform level.
|
|
35
|
+
|
|
36
|
+
### Thinking Toggle (CC v2.1.166+)
|
|
37
|
+
|
|
38
|
+
> **v2.1.166+**: `MAX_THINKING_TOKENS=0`, `--thinking disabled`, and the per-model thinking toggle disable thinking on models that think by default via the Claude API (3rd-party providers unchanged). Relevant when an agent's `effort` is low and thinking overhead is undesirable.
|
|
39
|
+
|
|
30
40
|
### Optional Frontmatter
|
|
31
41
|
|
|
32
42
|
Key optional fields: `memory`, `effort`, `skills`, `soul`, `isolation`, `background`, `maxTurns`, `maxTokens`, `mcpServers`, `hooks`, `permissionMode`, `disallowedTools`, `limitations`, `domain`, `disableSkillShellExecution`. Supported since CC v2.1.63+. See full optional frontmatter via Read tool.
|
|
@@ -36,6 +36,18 @@ Available when `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` or TeamCreate/SendMessag
|
|
|
36
36
|
|
|
37
37
|
These are distinct mechanisms. Agent Teams `SendMessage` requires `TeamCreate` and operates within a single Claude Code session. claude-peers-mcp `send_message` operates across separate Claude Code processes via a localhost broker.
|
|
38
38
|
|
|
39
|
+
### Cross-Session Relay Authority Hardening (CC v2.1.166+)
|
|
40
|
+
|
|
41
|
+
> **v2.1.166+**: Messages relayed via `SendMessage` from other Claude sessions no longer carry user authority — receivers refuse relayed permission requests, and auto mode blocks them. A relayed message cannot escalate privilege on the receiving session.
|
|
42
|
+
|
|
43
|
+
| Aspect | Behavior (v2.1.166+) |
|
|
44
|
+
|--------|---------------------|
|
|
45
|
+
| Relayed permission request | Refused by receiver |
|
|
46
|
+
| Auto mode + relayed request | Blocked |
|
|
47
|
+
| User authority across relay | Not propagated |
|
|
48
|
+
|
|
49
|
+
This hardens cross-session coordination (claude-peers-mcp `send_message`, see Scope table above) against privilege escalation — a relayed message from session A cannot grant session B permissions the user did not authorize on B. Aligns with R001 (credential/privileged-scope guardrails) and R010 (out-of-scope privileged chaining). Intra-session Agent Teams `SendMessage` between peers in the same session is unaffected.
|
|
50
|
+
|
|
39
51
|
## Self-Check (Before Agent Tool)
|
|
40
52
|
|
|
41
53
|
Before using Agent tool for 2+ agent tasks, complete this check:
|
|
@@ -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)
|
|
@@ -33,6 +33,18 @@ Approve?
|
|
|
33
33
|
|
|
34
34
|
On insufficient permission: do not attempt, notify user, suggest alternative.
|
|
35
35
|
|
|
36
|
+
## Deny Rule Glob Patterns (CC v2.1.166+)
|
|
37
|
+
|
|
38
|
+
> **v2.1.166+**: Deny rules support glob patterns in the tool-name position — `"*"` in a deny rule denies all tools. Allow rules reject non-MCP globs (only MCP tool-name globs are accepted in the allow position). Unknown tool names in deny rules emit a startup warning.
|
|
39
|
+
|
|
40
|
+
| Position | Glob support |
|
|
41
|
+
|----------|-------------|
|
|
42
|
+
| Deny rule tool-name | Yes — `"*"` denies all tools |
|
|
43
|
+
| Allow rule tool-name | MCP globs only; non-MCP globs rejected |
|
|
44
|
+
| Unknown tool in deny rule | Startup warning |
|
|
45
|
+
|
|
46
|
+
Use a `"*"` deny rule in `settings.json` to enforce a deny-by-default posture, then add specific allow rules. Complements the Tier-based policy above — settings.json deny rules are evaluated by the CC platform, independent of the advisory tier table.
|
|
47
|
+
|
|
36
48
|
## Agent Tool Permission Mode
|
|
37
49
|
|
|
38
50
|
When spawning subagents via the Agent tool, always pass `mode: "bypassPermissions"` explicitly. The Agent tool's default mode is `acceptEdits`, which **overrides** the agent frontmatter `permissionMode` field.
|
|
@@ -81,6 +81,21 @@ matches the spawn announcement:
|
|
|
81
81
|
[2] lang-python-expert:sonnet → Python code review
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
+
## Tier-3 Interaction Tool Prefix (MANDATORY)
|
|
85
|
+
|
|
86
|
+
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.
|
|
87
|
+
|
|
88
|
+
| Tool | R008 prefix required? |
|
|
89
|
+
|------|----------------------|
|
|
90
|
+
| AskUserQuestion | YES — `[agent][model] → Tool: AskUserQuestion` before the call |
|
|
91
|
+
| TodoWrite | YES |
|
|
92
|
+
| EnterPlanMode / ExitPlanMode | YES |
|
|
93
|
+
| Skill | NO separate R008 prefix — identified via R007 `claude → {skill-name}` integrated header instead |
|
|
94
|
+
|
|
95
|
+
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.
|
|
96
|
+
|
|
97
|
+
Reference issue: #1321 (session 113 retrospective, 찐빠 #2 — AskUserQuestion prefix omitted twice).
|
|
98
|
+
|
|
84
99
|
## Example
|
|
85
100
|
|
|
86
101
|
```
|
package/templates/manifest.json
CHANGED