oh-my-customcodex 0.5.17 → 0.5.19
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 +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/templates/.claude/rules/MUST-completion-verification.md +8 -2
- package/templates/.claude/rules/MUST-parallel-execution.md +13 -0
- package/templates/.claude/rules/MUST-tool-identification.md +37 -0
- package/templates/manifest.json +1 -1
- package/templates/workflows/auto-dev.yaml +5 -0
package/dist/cli/index.js
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -85,8 +85,10 @@ Before invoking or registering generated workflow code, run a Tier-1 sanity pass
|
|
|
85
85
|
|
|
86
86
|
1. Search for unresolved placeholders, malformed identifiers, and known dead-line patterns.
|
|
87
87
|
2. Assemble the exact script body before execution; do not concatenate facts or guardrails after the call starts.
|
|
88
|
-
3.
|
|
89
|
-
4.
|
|
88
|
+
3. For compound shell verification or release gates, start the script with `set -euo pipefail`; `set -o pipefail` alone does not stop later sequential gates after an earlier command fails.
|
|
89
|
+
4. For zsh/bash snippets, avoid reserved or special variable names such as `status`, `path`, and `argv`; use `run_status`, `cmd_path`, `args`, or similarly specific names.
|
|
90
|
+
5. Run the language parser or the narrowest no-side-effect syntax check available.
|
|
91
|
+
6. If syntax validation is unavailable, read the generated body back and perform a focused self-review before launch.
|
|
90
92
|
|
|
91
93
|
This check is mandatory for workflow scripts that will run automation, mutate GitHub state, or gate a release.
|
|
92
94
|
|
|
@@ -162,6 +164,10 @@ When a user sends a new instruction while work is in progress, completion status
|
|
|
162
164
|
3. If the new message adds a requirement, add it to the completion contract before closing.
|
|
163
165
|
4. If no conflict exists, continue but explicitly preserve the new requirement in the next verification pass.
|
|
164
166
|
|
|
167
|
+
### Tool-Call Payload Completeness
|
|
168
|
+
|
|
169
|
+
도구 호출의 required 파라미터는 invoke 전에 확인한다(완료 선언 후가 아니라 호출 시점의 전제조건). announce(prefix)만 출력하고 payload의 required 필드를 누락하는 패턴은 R008 "Required-Parameter Completeness Check"가 canonical owner다. Reference: #1487 / upstream #1324.
|
|
170
|
+
|
|
165
171
|
## Completion Contract Format — [Contract] + [Done] with criterion/evidence pairs. See template via Read tool.
|
|
166
172
|
|
|
167
173
|
<!-- DETAIL: Completion Contract Format
|
|
@@ -34,6 +34,19 @@ Before writing/editing multiple files:
|
|
|
34
34
|
5. Running agent stalled (2x+ duration)? → Spawn independent follow-up tasks immediately
|
|
35
35
|
6. Parallel dispatch announced? → put all announced tool calls in the same message
|
|
36
36
|
|
|
37
|
+
### LLM Batch Output Token Budget
|
|
38
|
+
|
|
39
|
+
For N-item structured LLM batches, pre-compute output tokens and chunk variable-size lists (default ≤40 items); raising `max_tokens` alone is not enough. Reference: #1486 / upstream #1321 and #1320.
|
|
40
|
+
|
|
41
|
+
<!-- DETAIL: LLM Batch Output Token Budget
|
|
42
|
+
The giant-prompt heuristic governs input tokens. The symmetric output-side rule: when a single LLM call processes N items (scoring/classifying/extracting) and must emit structured output (for example JSON) per item, pre-compute the output budget = N × per-item output tokens before the call. Exceeding `max_tokens` truncates the response mid-structure, so the call can appear to succeed while JSON parsing fails.
|
|
43
|
+
|
|
44
|
+
| Anti-pattern | Required |
|
|
45
|
+
|--------------|----------|
|
|
46
|
+
| Single batch call over a variable-size list with a fixed small `max_tokens` | Chunk into bounded batches (default ≤40 items), constrain per-item output length, and set `max_tokens` to fit one chunk |
|
|
47
|
+
| Raising `max_tokens` alone | Insufficient — it only defers the failure as the list grows. Chunking is the invariant fix. |
|
|
48
|
+
-->
|
|
49
|
+
|
|
37
50
|
### Common Violations to Avoid
|
|
38
51
|
|
|
39
52
|
<!-- DETAIL: Common Violations Short Examples
|
|
@@ -50,6 +50,18 @@ Incorrect parallel: tool_call(url1), tool_call(url2), tool_call(cmd) — no iden
|
|
|
50
50
|
Correct parallel: list ALL [agent][model] → Tool/Fetching/Running lines FIRST, then all tool_calls
|
|
51
51
|
-->
|
|
52
52
|
|
|
53
|
+
|
|
54
|
+
### Required-Parameter Completeness Check
|
|
55
|
+
|
|
56
|
+
R008 prefix(announce)와 실제 도구 호출은 분리된 단계다. prefix를 출력한 뒤 호출 payload에서 도구 스키마상 required 파라미터를 누락하면 호출이 실패하거나 빈 동작이 된다. 호출 직전, prefix 존재뿐 아니라 required 파라미터가 모두 채워졌는지 확인한다.
|
|
57
|
+
|
|
58
|
+
| Anti-pattern | Required |
|
|
59
|
+
|--------------|----------|
|
|
60
|
+
| `[agent][model] → Tool: AskUserQuestion` prefix만 출력하고 `questions` 파라미터 없이/빈 배열로 호출 | prefix + `questions` 배열(최소 1개) 모두 채워 호출 |
|
|
61
|
+
| announce 후 payload의 required 필드 누락 (announce-payload separation gap) | announce와 동일 메시지에서 required 필드 완비 호출 |
|
|
62
|
+
|
|
63
|
+
Cross-reference: R020 (action-completeness precondition — invoke 전에 required 파라미터 확인). Reference issue: #1487 / upstream #1324 (AskUserQuestion `questions` 누락 재발 방지).
|
|
64
|
+
|
|
53
65
|
## Models
|
|
54
66
|
|
|
55
67
|
| Model | Use |
|
|
@@ -100,6 +112,31 @@ matches the spawn announcement:
|
|
|
100
112
|
[2] lang-python-expert:sonnet → Python code review
|
|
101
113
|
```
|
|
102
114
|
|
|
115
|
+
## Tier-3 Interaction Tool Prefix (MANDATORY)
|
|
116
|
+
|
|
117
|
+
R008 "every tool call" applies to Tier-3 interaction tools too — not only file/exec tools. Applying the `[agent][model] → Tool:` prefix to Bash/Read/Agent while omitting it on `AskUserQuestion`, `TodoWrite`, `EnterPlanMode`, `ExitPlanMode`, `request_user_input`, or equivalent structured-question tools is a violation.
|
|
118
|
+
|
|
119
|
+
| Tool | R008 prefix required? |
|
|
120
|
+
|------|----------------------|
|
|
121
|
+
| AskUserQuestion / `request_user_input` / structured question | YES — `[agent][model] → Tool: AskUserQuestion` or equivalent before the call |
|
|
122
|
+
| TodoWrite / `update_plan` | YES |
|
|
123
|
+
| EnterPlanMode / ExitPlanMode | YES |
|
|
124
|
+
| Skill | NO separate R008 prefix — identified via the R007 integrated header instead |
|
|
125
|
+
|
|
126
|
+
Skill invocation is the one exception: it is identified through the R007 integrated identification block (`┌─ Agent: {agent} → {skill-name}`), not a standalone R008 tool prefix.
|
|
127
|
+
|
|
128
|
+
Reference issue: #1486 / upstream #1321 (AskUserQuestion prefix omission); complements #1487 required-payload completeness.
|
|
129
|
+
|
|
130
|
+
## Multi-Turn Self-Check
|
|
131
|
+
|
|
132
|
+
도구 호출 전 매번 확인한다:
|
|
133
|
+
|
|
134
|
+
1. 이 호출 위에 `[agent-name][model] → Tool: <tool-name>` 라인이 있는가?
|
|
135
|
+
2. agent-name과 model이 현재 컨텍스트와 일치하는가?
|
|
136
|
+
3. 이 호출에 도구 스키마상 required 파라미터가 모두 채워져 있는가? 예: AskUserQuestion/request_user_input 계열은 `questions` 배열이 비어 있지 않아야 한다. prefix(announce)만 출력하고 실제 호출 payload의 required 필드를 누락하면 안 된다.
|
|
137
|
+
|
|
138
|
+
체크 실패 시 즉시 prefix/필수 파라미터를 보완한 후 호출.
|
|
139
|
+
|
|
103
140
|
## Example
|
|
104
141
|
|
|
105
142
|
```
|
package/templates/manifest.json
CHANGED
|
@@ -126,6 +126,11 @@ steps:
|
|
|
126
126
|
- If a scoped issue is added or materially changed after verify-build starts, reset this phase and re-run the full verify-build gate for the new aggregate scope.
|
|
127
127
|
- Do not proceed to release from a verify-build result collected before the latest scoped implementation change.
|
|
128
128
|
|
|
129
|
+
Shell execution discipline:
|
|
130
|
+
- Run compound verification commands under `set -euo pipefail` so lint, typecheck, tests, and build halt on the first failed gate.
|
|
131
|
+
- Do not rely on `set -o pipefail` alone for sequential verification chains.
|
|
132
|
+
- Avoid reserved shell variable names in polling or status snippets (`status`, `path`, `argv`); use `run_status`, `cmd_path`, or `args` instead.
|
|
133
|
+
|
|
129
134
|
For Node/Bun projects:
|
|
130
135
|
1. Run `bun install` and halt on lockfile drift.
|
|
131
136
|
2. Run `bun run lint` when available.
|