oh-my-customcode 2.0.5 → 2.0.6
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/hooks/scripts/auto-continue-guard.sh +1 -1
- package/templates/.claude/hooks/scripts/r007-r008-drift-advisor.sh +4 -0
- package/templates/.claude/hooks/scripts/session-reflection.sh +3 -0
- package/templates/.claude/rules/MUST-agent-design.md +1 -1
- package/templates/.claude/skills/claude-native/SKILL.md +3 -3
- package/templates/.claude/skills/fsd/SKILL.md +2 -2
- package/templates/.claude/skills/hada-scout/SKILL.md +5 -5
- package/templates/.claude/skills/omcustom-feedback/SKILL.md +3 -3
- package/templates/.claude/skills/omcustom-loop/SKILL.md +3 -3
- package/templates/.claude/skills/pipeline/workflows/auto-dev.yaml +1 -1
- package/templates/.claude/skills/post-release-followup/SKILL.md +9 -9
- package/templates/.claude/skills/research/SKILL.md +5 -5
- package/templates/.claude/skills/scout/SKILL.md +5 -5
- package/templates/guides/claude-code/04-agent-skills.md +4 -0
- package/templates/guides/claude-code/15-version-compatibility.md +1 -1
- package/templates/manifest.json +1 -1
- package/templates/workflows/auto-dev.yaml +1 -1
package/dist/cli/index.js
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@ set -euo pipefail
|
|
|
4
4
|
# Auto-Continue Guard
|
|
5
5
|
# Trigger: SubagentStop
|
|
6
6
|
# Purpose: Count consecutive subagent completions and warn when auto-continue limit reached
|
|
7
|
-
# Protocol: stdin JSON -> count check -> stdout pass-through, exit 0
|
|
7
|
+
# Protocol: stdin JSON -> count check -> stdout pass-through, the only explicit exit is exit 0 (R021); under set -u a corrupt counter file can exit 1 (non-blocking for SubagentStop)
|
|
8
8
|
|
|
9
9
|
input=$(cat)
|
|
10
10
|
|
|
@@ -227,6 +227,10 @@ JQ_LAST_TURN='
|
|
|
227
227
|
split("\n")
|
|
228
228
|
| map(select(length > 0) | (fromjson? // empty))
|
|
229
229
|
| map(select((.isSidechain // false) != true))
|
|
230
|
+
# (#1876) api-request-blob records carry a copy of the request message (role=assistant/user,
|
|
231
|
+
# no isSidechain) — they are NOT conversation lines. Left in, a trailing assistant blob is picked
|
|
232
|
+
# as $last and double-counts tool_use/announce blocks, and a user blob acts as a turn boundary.
|
|
233
|
+
| map(select((.type? // "") != "api-request-blob"))
|
|
230
234
|
| . as $L
|
|
231
235
|
| ($L | length) as $n
|
|
232
236
|
| [ range(0; $n) | select($L[.].message.role? == "assistant") ] as $ai
|
|
@@ -167,6 +167,9 @@ JQ_REFLECT='
|
|
|
167
167
|
split("\n")
|
|
168
168
|
| map(select(length > 0) | (fromjson? // empty))
|
|
169
169
|
| map(select((.isSidechain // false) != true))
|
|
170
|
+
# (#1876) api-request-blob records are request copies, not conversation lines — same filter as
|
|
171
|
+
# r007-r008-drift-advisor.sh (shared verdict; fixing one side only re-contaminates).
|
|
172
|
+
| map(select((.type? // "") != "api-request-blob"))
|
|
170
173
|
| [ foreach .[] as $l (0;
|
|
171
174
|
(if ($l.message.role? == "user")
|
|
172
175
|
and ( (($l.message.content | type) == "string")
|
|
@@ -457,7 +457,7 @@ Optional per-agent identity layer. `soul: true` in frontmatter enables personali
|
|
|
457
457
|
|
|
458
458
|
## Artifact Output Convention
|
|
459
459
|
|
|
460
|
-
Skills persist output to `.claude/outputs/sessions/{YYYY-MM-DD}/{skill-name}-{HHmmss}.md`. Opt-in, git-untracked. Final subagent writes (R010). Observed (#1858, CC 2.1.296/2.1.310): a subagent Write of a report-named file (`report-*.md`) was refused; trigger unmeasured [가설]. On refusal the subagent returns the content as text and reports the refusal; if a downstream agent needs a file, the orchestrator delegates a separate writer with a filename outside report/summary/findings/analysis names [가설]. The orchestrator confirms every file deliverable with its own `ls -la
|
|
460
|
+
Skills persist output to `.claude/outputs/sessions/{YYYY-MM-DD}/{skill-name}-{HHmmss}.md`. Opt-in, git-untracked. Final subagent writes (R010). Observed (#1858, CC 2.1.296/2.1.310): a subagent Write of a report-named file (`report-*.md`) was refused; trigger unmeasured [가설]. On refusal the subagent returns the content as text and reports the refusal; if a downstream agent needs a file, the orchestrator delegates a separate writer with a filename outside report/summary/findings/analysis names [가설]. The orchestrator confirms every file deliverable with its own `ls -la`. <!-- DETAIL: #1858 measurement (CC 2.1.310, 2026-10-25, mgr-updater subagent, scratchpad dir): Write `report-probe.md` → refused "Subagents should return findings as text, not write report files. Include this content in your final response instead."; `homework-probe.md` and `result-probe.md` → created; `ls -la` showed only the latter two. Trigger observed for a report-named file; whether filename, path, or content decides is unmeasured [가설]. 2.1.296 also saw a subagent falsely report a refused write as success, hence the orchestrator `ls -la` check. -->
|
|
461
461
|
|
|
462
462
|
### Sensitive Path Handling
|
|
463
463
|
|
|
@@ -89,9 +89,9 @@ byte_dump=$(mktemp /tmp/omcustom-gh-byte-dump.XXXXXX) || exit 1
|
|
|
89
89
|
trap 'command rm -f -- "$byte_dump"' 0
|
|
90
90
|
trap 'exit 1' HUP INT TERM
|
|
91
91
|
check_file() {
|
|
92
|
-
[ -f "$1" ] || return 1
|
|
93
|
-
command od -A n -v -t u1 "$1" > "$byte_dump" || return 1
|
|
94
|
-
command awk -v kind="$2" '
|
|
92
|
+
[ -f "${1}" ] || return 1
|
|
93
|
+
command od -A n -v -t u1 "${1}" > "$byte_dump" || return 1
|
|
94
|
+
command awk -v kind="${2}" '
|
|
95
95
|
{ for (i = 1; i <= NF; i++) {
|
|
96
96
|
b = $i + 0; n++;
|
|
97
97
|
if (b == 0) bad = 1;
|
|
@@ -183,7 +183,7 @@ Each iteration operates under full project rules — no relaxation because FSD i
|
|
|
183
183
|
| R015 (intent persistence) | If user explicitly defers a specific PR this session, honor that deferral — do not retry it. |
|
|
184
184
|
| R017 (sync verification) | mgr-sauron passes required before any commit. |
|
|
185
185
|
| R020 (completion verification) | Each release verified via `npm view`, `gh release view`, closed issues before `[Done]`. PR merges verified via `gh pr view` ground-truth before declaring iteration complete. |
|
|
186
|
-
| cost-cap advisory (`cost-cap-advisor.sh`, Conversation Block) | FSD는 사용자가 명시 호출한 다중 릴리즈 루프라 세션 비용이 상한(기본
|
|
186
|
+
| cost-cap advisory (`cost-cap-advisor.sh`, Conversation Block) | FSD는 사용자가 명시 호출한 다중 릴리즈 루프라 세션 비용이 상한(기본 USD 5)을 필연적으로 넘는다. advisory 발화는 루프를 멈추는 신호가 아니며, 오케스트레이터는 발화 사실과 누적 비용을 반복 경계(homework 게이트)에서 사용자에게 고지한다. 상한을 올리려면 `CLAUDE_COST_CAP`(v1.1.61 세션 실측: 착수 직후 USD 5.38에서 발화). |
|
|
187
187
|
|
|
188
188
|
`/homework` runs as a **retrospective gate** between iterations — findings go through `omcustom-feedback`'s Phase 4A confirmation gate. The loop does NOT skip homework on the grounds that it is "automated". If homework requires user confirmation (e.g., to file a feedback issue), the loop pauses and waits.
|
|
189
189
|
|
|
@@ -241,7 +241,7 @@ That session ran 2 iterations (v0.177.0 and v0.178.0) before converging with 0 e
|
|
|
241
241
|
| Skill / Rule | Role |
|
|
242
242
|
|--------------|------|
|
|
243
243
|
| `goal` | Disciplined goal-to-execution wrapper — objective parse, gap detection, R020 verification |
|
|
244
|
-
| `omcustom-loop` | SubagentStop command hooks (outcome recording and advisories only) — no orchestrator-workflow continuation; these hooks do not wake an idle model (no `asyncRewake` configured in `.claude/hooks/hooks.json` or `.claude/settings.json`) and `auto-continue-guard.sh` has no exit
|
|
244
|
+
| `omcustom-loop` | SubagentStop command hooks (outcome recording and advisories only) — no orchestrator-workflow continuation; these hooks do not wake an idle model (no `asyncRewake` configured in `.claude/hooks/hooks.json` or `.claude/settings.json`) and `auto-continue-guard.sh` has no `exit 2` statement (its only explicit exit is `exit 0`), echoes the payload, and the CC 2.1.310 SubagentStop payload has no top-level `decision`/`continue` key (#1880 L2), so it does not block |
|
|
245
245
|
| `pipeline` | `/pipeline auto-dev` — the core release pipeline per iteration |
|
|
246
246
|
| `homework` | Retrospective 찐빠 audit gate per iteration |
|
|
247
247
|
| `mgr-gitnerd` | PR merge operations — all open PR merges delegated here (R010) |
|
|
@@ -33,7 +33,7 @@ eliminating the external CronJob dependency for user-invoked runs.
|
|
|
33
33
|
2. Agent evaluates each title against oh-my-customcode's domain (see prompt template below)
|
|
34
34
|
3. Returns relevance score (0–100) and a 1-line reason for each item
|
|
35
35
|
4. Threshold: ≥ 60 passes to Phase 3 (configurable via `--threshold` or `HADA_SCOUT_THRESHOLD`)
|
|
36
|
-
5. Cost:
|
|
36
|
+
5. Cost: ~USD 0.01–0.05 for 50 items
|
|
37
37
|
|
|
38
38
|
### Phase 3 — Scout Dispatch
|
|
39
39
|
|
|
@@ -105,9 +105,9 @@ Items:
|
|
|
105
105
|
|
|
106
106
|
| Stage | Model | Estimated Cost |
|
|
107
107
|
|-------|-------|----------------|
|
|
108
|
-
| Pre-scout (Phase 2) | haiku |
|
|
109
|
-
| Full scout (Phase 3) | sonnet |
|
|
110
|
-
| Total max per invocation | — |
|
|
108
|
+
| Pre-scout (Phase 2) | haiku | ~USD 0.01–0.05 per run (50 items) |
|
|
109
|
+
| Full scout (Phase 3) | sonnet | ~USD 0.5–1.5 per item, max 5 per run |
|
|
110
|
+
| Total max per invocation | — | ~USD 8 |
|
|
111
111
|
|
|
112
112
|
## Environment Variables
|
|
113
113
|
|
|
@@ -135,7 +135,7 @@ Items:
|
|
|
135
135
|
| Filtering | Regex keyword match | LLM relevance scoring (haiku) |
|
|
136
136
|
| Invocation | External CronJob only | User-invocable `/hada-scout` + CronJob |
|
|
137
137
|
| Precision | Low (keyword false positives) | High (context-aware scoring) |
|
|
138
|
-
| Cost per scan |
|
|
138
|
+
| Cost per scan | USD 0 (regex) + USD 2.5–7.5 (/scout) | USD 0.05 (pre-scout) + USD 2.5–7.5 (/scout) |
|
|
139
139
|
| False positive rate | ~30–40% | ~5–10% |
|
|
140
140
|
| Scope | `package` | `core` |
|
|
141
141
|
|
|
@@ -151,9 +151,9 @@ byte_dump=$(mktemp /tmp/omcustom-gh-byte-dump.XXXXXX) || exit 1
|
|
|
151
151
|
trap 'command rm -f -- "$byte_dump"' 0
|
|
152
152
|
trap 'exit 1' HUP INT TERM
|
|
153
153
|
check_file() {
|
|
154
|
-
[ -f "$1" ] || return 1
|
|
155
|
-
command od -A n -v -t u1 "$1" > "$byte_dump" || return 1
|
|
156
|
-
command awk -v kind="$2" '
|
|
154
|
+
[ -f "${1}" ] || return 1
|
|
155
|
+
command od -A n -v -t u1 "${1}" > "$byte_dump" || return 1
|
|
156
|
+
command awk -v kind="${2}" '
|
|
157
157
|
{ for (i = 1; i <= NF; i++) {
|
|
158
158
|
b = $i + 0; n++;
|
|
159
159
|
if (b == 0) bad = 1;
|
|
@@ -21,13 +21,13 @@ When background subagents complete, `SubagentStop` command hooks record outcomes
|
|
|
21
21
|
|
|
22
22
|
## Consecutive-Completion Advisory
|
|
23
23
|
|
|
24
|
-
- **Consecutive-completion counter**: `auto-continue-guard.sh` counts SubagentStop events (counter resets after 60s idle); from the 4th completion onward within the window (count >= 4) it prints a stderr line "limit (3) reached. Pausing." (human-visible only, not a model-visible signal; among these five SubagentStop hooks only `r007-r008-drift-advisor.sh` uses `additionalContext`) and
|
|
24
|
+
- **Consecutive-completion counter**: `auto-continue-guard.sh` counts SubagentStop events (counter resets after 60s idle); from the 4th completion onward within the window (count >= 4) it prints a stderr line "limit (3) reached. Pausing." (human-visible only, not a model-visible signal; among these five SubagentStop hooks only `r007-r008-drift-advisor.sh` uses `additionalContext`) and its script contains no `exit 2` statement (its only explicit exit is `exit 0`); it echoes the input payload to stdout, and the CC 2.1.310 SubagentStop payload has no top-level `decision`/`continue` key (measured by a reviewer from the binary's payload builder), so it does not block
|
|
25
25
|
- **stuck-detector integration**: If the same action repeats 3+ times, the independent PostToolUse stuck-detector hook intervenes
|
|
26
26
|
- **cost-cap-advisor**: Cost monitoring is independent of these hooks
|
|
27
27
|
|
|
28
28
|
## Configuration
|
|
29
29
|
|
|
30
|
-
The hooks are configured in `.claude/hooks/hooks.json` under `SubagentStop`. All five hooks are `type: command` and advisory (none
|
|
30
|
+
The hooks are configured in `.claude/hooks/hooks.json` under `SubagentStop`. All five hooks are `type: command` and advisory (none contains an `exit 2` statement or emits a `decision`/`continue` field outside comments, so none blocks; the grep pattern covered `exit 2`, `"decision"`, `decision:`, `"continue"` and hit only comments in `r007-r008-drift-advisor.sh`. Four of the five hooks echo the CC payload to stdout, which carries no top-level `decision`/`continue` key in CC 2.1.310. The drift advisor's `additionalContext` makes the stopping subagent continue its own turn; that continuation is not a block).
|
|
31
31
|
|
|
32
32
|
## Limitations
|
|
33
33
|
|
|
@@ -38,7 +38,7 @@ The hooks are configured in `.claude/hooks/hooks.json` under `SubagentStop`. All
|
|
|
38
38
|
## Usage
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
|
-
/omcustom-loop # Skill entry point (no status command exists; the consecutive-completion counter lives in
|
|
41
|
+
/omcustom-loop # Skill entry point (no status command exists; the consecutive-completion counter lives in /tmp/.claude-loop-count-${PPID})
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
The hooks are active by default: `.claude/hooks/hooks.json` is the source, and Claude Code loads the generated `.claude/settings.json` in this repo (R021); installed projects get the wiring merged into `.claude/settings.local.json` when the hooks component is installed (`src/core/installer.ts` returns early if `hooks.json` is absent). No explicit activation needed.
|
|
@@ -1009,7 +1009,7 @@ steps:
|
|
|
1009
1009
|
찐빠 #3).
|
|
1010
1010
|
- Delegations that create files, binaries, worktrees, or branches (artifact-creating
|
|
1011
1011
|
delegations only — text-only edits are excluded) MUST include measured output in their
|
|
1012
|
-
completion report — `file <bin>` for binaries, `ls -la <path>` for created paths, `git
|
|
1012
|
+
completion report — `file <bin>` for binaries, `ls -la <path>` for created paths (the orchestrator re-runs `ls -la` itself, R006 #1858), `git
|
|
1013
1013
|
worktree list` for worktrees, `git branch --list` for branches, as applicable — and the
|
|
1014
1014
|
orchestrator MUST confirm architecture/path from that measured output before using the
|
|
1015
1015
|
artifact, not from the agent's self-report alone (R020 Subagent Self-Report
|
|
@@ -97,9 +97,9 @@ byte_dump=$(mktemp /tmp/omcustom-gh-byte-dump.XXXXXX) || exit 1
|
|
|
97
97
|
trap 'command rm -f -- "$byte_dump"' 0
|
|
98
98
|
trap 'exit 1' HUP INT TERM
|
|
99
99
|
check_file() {
|
|
100
|
-
[ -f "$1" ] || return 1
|
|
101
|
-
command od -A n -v -t u1 "$1" > "$byte_dump" || return 1
|
|
102
|
-
command awk -v kind="$2" '
|
|
100
|
+
[ -f "${1}" ] || return 1
|
|
101
|
+
command od -A n -v -t u1 "${1}" > "$byte_dump" || return 1
|
|
102
|
+
command awk -v kind="${2}" '
|
|
103
103
|
{ for (i = 1; i <= NF; i++) {
|
|
104
104
|
b = $i + 0; n++;
|
|
105
105
|
if (b == 0) bad = 1;
|
|
@@ -231,9 +231,9 @@ byte_dump=$(mktemp /tmp/omcustom-gh-byte-dump.XXXXXX) || exit 1
|
|
|
231
231
|
trap 'command rm -f -- "$byte_dump"' 0
|
|
232
232
|
trap 'exit 1' HUP INT TERM
|
|
233
233
|
check_file() {
|
|
234
|
-
[ -f "$1" ] || return 1
|
|
235
|
-
command od -A n -v -t u1 "$1" > "$byte_dump" || return 1
|
|
236
|
-
command awk -v kind="$2" '
|
|
234
|
+
[ -f "${1}" ] || return 1
|
|
235
|
+
command od -A n -v -t u1 "${1}" > "$byte_dump" || return 1
|
|
236
|
+
command awk -v kind="${2}" '
|
|
237
237
|
{ for (i = 1; i <= NF; i++) {
|
|
238
238
|
b = $i + 0; n++;
|
|
239
239
|
if (b == 0) bad = 1;
|
|
@@ -285,9 +285,9 @@ byte_dump=$(mktemp /tmp/omcustom-gh-byte-dump.XXXXXX) || exit 1
|
|
|
285
285
|
trap 'command rm -f -- "$byte_dump"' 0
|
|
286
286
|
trap 'exit 1' HUP INT TERM
|
|
287
287
|
check_file() {
|
|
288
|
-
[ -f "$1" ] || return 1
|
|
289
|
-
command od -A n -v -t u1 "$1" > "$byte_dump" || return 1
|
|
290
|
-
command awk -v kind="$2" '
|
|
288
|
+
[ -f "${1}" ] || return 1
|
|
289
|
+
command od -A n -v -t u1 "${1}" > "$byte_dump" || return 1
|
|
290
|
+
command awk -v kind="${2}" '
|
|
291
291
|
{ for (i = 1; i <= NF; i++) {
|
|
292
292
|
b = $i + 0; n++;
|
|
293
293
|
if (b == 0) bad = 1;
|
|
@@ -34,7 +34,7 @@ Orchestrates 10 parallel research teams for comprehensive deep analysis of any t
|
|
|
34
34
|
|
|
35
35
|
## Pre-flight Guards
|
|
36
36
|
|
|
37
|
-
Before executing the 10-team research workflow, the agent MUST run these checks. Research is a high-cost operation (
|
|
37
|
+
Before executing the 10-team research workflow, the agent MUST run these checks. Research is a high-cost operation (~USD 8-15) — these guards prevent wasteful execution.
|
|
38
38
|
|
|
39
39
|
### Guard Levels
|
|
40
40
|
|
|
@@ -67,7 +67,7 @@ indicators_complex:
|
|
|
67
67
|
- Query references a repository or ecosystem for deep analysis
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
**Action (GATE)**: `[Pre-flight] GATE: Query appears to be a simple factual question. Use direct answer or single WebSearch instead. 10-team research (
|
|
70
|
+
**Action (GATE)**: `[Pre-flight] GATE: Query appears to be a simple factual question. Use direct answer or single WebSearch instead. 10-team research (~USD 8-15) would be wasteful. Override with /research --force if intended.`
|
|
71
71
|
|
|
72
72
|
### Guard 2: Single-File Review Detection
|
|
73
73
|
|
|
@@ -128,7 +128,7 @@ fi
|
|
|
128
128
|
├── Known solution: PASS
|
|
129
129
|
└── Context budget: WARN — context at 45%, research adds ~35%
|
|
130
130
|
Result: PROCEED WITH CAUTION (0 GATE, 1 WARN, 0 INFO)
|
|
131
|
-
Cost estimate:
|
|
131
|
+
Cost estimate: ~USD 8-15 for 10-team parallel research
|
|
132
132
|
```
|
|
133
133
|
|
|
134
134
|
If any GATE: block and suggest alternative. User can override with `--force`.
|
|
@@ -407,7 +407,7 @@ Before execution:
|
|
|
407
407
|
|
|
408
408
|
Estimated: {time} | Teams: 10 | Models: sonnet → opus
|
|
409
409
|
Stopping: max 30 verification rounds, convergence at 0 contradictions
|
|
410
|
-
Cost:
|
|
410
|
+
Cost: ~USD 8-15 (10 teams × sonnet + opus verification)
|
|
411
411
|
Execute? [Y/n]
|
|
412
412
|
```
|
|
413
413
|
|
|
@@ -464,7 +464,7 @@ Agent(
|
|
|
464
464
|
|
|
465
465
|
- Each Teams member running research still respects R009 (max 4 concurrent sub-agents)
|
|
466
466
|
- Batching order remains: T1-T4 → T5-T8 → T9-T10
|
|
467
|
-
- Cost is identical to orchestrator mode (
|
|
467
|
+
- Cost is identical to orchestrator mode (~USD 8-15 per research invocation)
|
|
468
468
|
- Multiple Teams members running research simultaneously will multiply costs proportionally
|
|
469
469
|
|
|
470
470
|
## Integration
|
|
@@ -74,7 +74,7 @@ Before execution, show the plan:
|
|
|
74
74
|
├── Phase 3: 적합성 분석 (sonnet)
|
|
75
75
|
└── Phase 4: 이슈 생성
|
|
76
76
|
|
|
77
|
-
예상: ~1분 | 비용:
|
|
77
|
+
예상: ~1분 | 비용: ~USD 0.5-1.5
|
|
78
78
|
실행하시겠습니까? [Y/n]
|
|
79
79
|
```
|
|
80
80
|
|
|
@@ -185,9 +185,9 @@ byte_dump=$(mktemp /tmp/omcustom-gh-byte-dump.XXXXXX) || exit 1
|
|
|
185
185
|
trap 'command rm -f -- "$byte_dump"' 0
|
|
186
186
|
trap 'exit 1' HUP INT TERM
|
|
187
187
|
check_file() {
|
|
188
|
-
[ -f "$1" ] || return 1
|
|
189
|
-
command od -A n -v -t u1 "$1" > "$byte_dump" || return 1
|
|
190
|
-
command awk -v kind="$2" '
|
|
188
|
+
[ -f "${1}" ] || return 1
|
|
189
|
+
command od -A n -v -t u1 "${1}" > "$byte_dump" || return 1
|
|
190
|
+
command awk -v kind="${2}" '
|
|
191
191
|
{ for (i = 1; i <= NF; i++) {
|
|
192
192
|
b = $i + 0; n++;
|
|
193
193
|
if (b == 0) bad = 1;
|
|
@@ -297,7 +297,7 @@ When verdict is `INTERNALIZE` and integration effort is M or L:
|
|
|
297
297
|
|--------|--------|-----------|
|
|
298
298
|
| Purpose | Quick fit evaluation | Deep multi-dimensional analysis |
|
|
299
299
|
| Teams | 1 agent | 10 teams |
|
|
300
|
-
| Cost |
|
|
300
|
+
| Cost | ~USD 0.5-1.5 | ~USD 8-15 |
|
|
301
301
|
| Duration | 1-2 min | 10-20 min |
|
|
302
302
|
| Output | Issue with verdict | Full report with ADOPT/ADAPT/AVOID |
|
|
303
303
|
| When | First contact with new link | Deep dive after scout recommends |
|
|
@@ -53,6 +53,10 @@ description: Brief description of what this Skill does and when to use it
|
|
|
53
53
|
- 비어 있지 않아야 함
|
|
54
54
|
- 최대 1024자
|
|
55
55
|
|
|
56
|
+
### 위치 인자 `$N` 치환 (#1879)
|
|
57
|
+
|
|
58
|
+
Claude Code 2.1.310에서 스킬을 인자 3개(`alpha beta gamma`)와 함께 호출해 관측한 결과, `SKILL.md` 안의 인자 범위 안의 인덱스(이번 관측 `$0`~`$2`)는 펜스 코드 블록, 큰따옴표, 함수 본문, 산문에서 인자 값으로 치환되었습니다(`"$1"` → `"beta"`). `${1}` 표기는 치환되지 않았고, 두 번째 관측(스킬 도구로 omcustom-feedback을 인자 `alpha beta gamma`와 함께 로드, CC 2.1.310)에서도 `"${1}"`, `[ -f "${1}" ]`, `kind="${2}"`가 리터럴로 남았으므로, 스킬의 셸 코드에서는 위치 매개변수를 `${1}`로 쓰십시오. 범위를 벗어난 인덱스(`$3`~`$9`)와 인자 없는 호출은 치환되지 않았고, `$10`도 3개 인자 호출에서는 리터럴로 남았습니다(한 자리 숫자만 인식하는지는 확정하지 못했습니다 [가설]). 인자가 있는 호출에서는 산문의 `$5` 같은 금액 표기도 같은 규칙으로 치환될 수 있으므로, 금액은 `USD 5`처럼 쓰는 것을 권장합니다.
|
|
59
|
+
|
|
56
60
|
## 사용 가능한 Skills
|
|
57
61
|
|
|
58
62
|
### 사전 구축된 Agent Skills
|
|
@@ -2486,7 +2486,7 @@ Opus 4.8에서 thinking blocks가 수정되어 API 오류가 발생하던 버그
|
|
|
2486
2486
|
- CHANGELOG 원문: "Fixed skills and commands with very many or very long argument names stalling for seconds when invoked; only the first 64 names, each up to 64 characters, are now filled in"
|
|
2487
2487
|
(301) 인자 이름이 매우 많거나 긴 스킬·커맨드가 호출 시 수 초간 멈추던 결함이 수정되어, 이제 앞의 64개 이름(각 64자까지)만 채워집니다. 이름 붙은 인자를 선언하는 `arguments:` frontmatter는 이 저장소 스킬에서 0건이며(`git grep -c -E '^arguments:' -- '.claude/skills/*/SKILL.md'` 출력 없음), 추적된 SKILL.md 114개 중 50개는 표시용 `argument-hint:`를 씁니다(`git grep -l -E '^argument-hint:' -- '.claude/skills/*/SKILL.md' | wc -l`=50, `git ls-files -- '.claude/skills/*/SKILL.md' | wc -l`=114). 따라서 64개 상한에 걸리는 스킬은 관측되지 않았습니다.
|
|
2488
2488
|
- CHANGELOG 원문: "Fixed skills, commands and hooks using very large amounts of memory when their arguments fill many placeholders"
|
|
2489
|
-
(301) 인자가 많은 자리표시자를 채울 때 스킬·커맨드·훅이 매우 많은 메모리를 쓰던 결함이 수정되었습니다. 이 저장소에서 자리표시자 후보 문자열(`$ARGUMENTS` 또는 `$<숫자>`)이 있는 스킬 파일은
|
|
2489
|
+
(301) 인자가 많은 자리표시자를 채울 때 스킬·커맨드·훅이 매우 많은 메모리를 쓰던 결함이 수정되었습니다. 이 저장소에서 자리표시자 후보 문자열(`$ARGUMENTS` 또는 `$<숫자>`)이 있는 스킬 파일은 1개이며(`git grep -l -P '\$ARGUMENTS|\$[0-9]\b' -- '.claude/skills/*/SKILL.md' | wc -l`=1, 2026-10-25 작업 트리 재실측, `.claude/skills/ambiguity-gate/SKILL.md`), 셸 예시 코드 안의 `$N`도 인자가 있으면 치환되므로 후보에서 제외하지 않습니다(guide 04 「위치 인자 `$N` 치환」 참조). `$ARGUMENTS`를 쓰는 파일도 1개입니다(`git grep -c -P '\$ARGUMENTS' -- '.claude/skills/*/SKILL.md'` 1건, `.claude/skills/ambiguity-gate/SKILL.md`). "많은 자리표시자" 조건에 해당하는 스킬이 있는지는 판정하지 못했습니다 [가설 — 스킬 호출 전후 프로세스 메모리 측정으로 판정].
|
|
2490
2490
|
- CHANGELOG 원문: "Fixed skills no longer being listed to the model after using `/rewind`"
|
|
2491
2491
|
(301) `/rewind` 사용 후 스킬 목록이 모델에게 더 이상 제공되지 않던 결함이 수정되었습니다. 이 저장소 세션은 추적된 SKILL.md 114개(`git ls-files -- '.claude/skills/*/SKILL.md' | wc -l`=114)의 라우팅 스킬과 슬래시 커맨드 스킬을 모델이 볼 수 있는 스킬 목록에 의존하므로, 구버전에서 `/rewind` 뒤에 스킬 라우팅이 실패했다면 그 원인이 이 결함일 수 있습니다 [가설 — 2.1.301 미만에서 `/rewind` 직후 Skill 호출 실패 기록으로 판정].
|
|
2492
2492
|
- CHANGELOG 원문: "Fixed workflow agents sometimes skipping their step, and the run still reporting success, after reading the harness note that their task text carries no user authority"
|
package/templates/manifest.json
CHANGED
|
@@ -1009,7 +1009,7 @@ steps:
|
|
|
1009
1009
|
찐빠 #3).
|
|
1010
1010
|
- Delegations that create files, binaries, worktrees, or branches (artifact-creating
|
|
1011
1011
|
delegations only — text-only edits are excluded) MUST include measured output in their
|
|
1012
|
-
completion report — `file <bin>` for binaries, `ls -la <path>` for created paths, `git
|
|
1012
|
+
completion report — `file <bin>` for binaries, `ls -la <path>` for created paths (the orchestrator re-runs `ls -la` itself, R006 #1858), `git
|
|
1013
1013
|
worktree list` for worktrees, `git branch --list` for branches, as applicable — and the
|
|
1014
1014
|
orchestrator MUST confirm architecture/path from that measured output before using the
|
|
1015
1015
|
artifact, not from the agent's self-report alone (R020 Subagent Self-Report
|