oh-my-customcode 0.161.0 → 0.162.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 +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/templates/.claude/rules/MUST-completion-verification.md +14 -0
- package/templates/.claude/rules/MUST-continuous-improvement.md +2 -0
- package/templates/.claude/rules/MUST-orchestrator-coordination.md +3 -0
- package/templates/.claude/rules/SHOULD-verification-ladder.md +15 -0
- package/templates/.claude/skills/skill-extractor/SKILL.md +30 -0
- package/templates/manifest.json +1 -1
package/dist/cli/index.js
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -196,6 +196,20 @@ triage-dispatch.yml 실패 원인을 파일 Read 전에 "triaged 라벨 부재 +
|
|
|
196
196
|
|
|
197
197
|
Origin: #1266 ④.
|
|
198
198
|
|
|
199
|
+
### Degraded-Output Re-Verification Gate (529 / buffering)
|
|
200
|
+
|
|
201
|
+
When tool outputs show degradation signs — 529 errors, duplicated or truncated output, or a Read returning empty on a file that is known non-empty — you MUST re-verify any fact via a deterministic second source BEFORE any destructive or permanent action (recovery-agent dispatch, issue edit, commit, file restore). Do NOT characterize state ("corruption", "오염", "loop") from a single degraded read.
|
|
202
|
+
|
|
203
|
+
| Anti-pattern | Required |
|
|
204
|
+
|--------------|----------|
|
|
205
|
+
| Dispatch a recovery agent off a single 529-buffered read | Re-run a minimal deterministic check (`wc -c`, single-field `gh ... view`, `head`) and confirm before acting |
|
|
206
|
+
| Declare a file "corrupted/오염" from one empty Read | Confirm byte count / content via an independent command first |
|
|
207
|
+
|
|
208
|
+
#### Common Violation (#1269 ①)
|
|
209
|
+
Session 106: during 529 buffering, a CHANGELOG was misdiagnosed as "61x 중복 오염" from buffered output and a recovery agent was dispatched — a self-violation of the same-session Read-Before-Characterize rule (#1266 ④). Deterministic count re-verification showed the file was clean. The 529 gate makes the re-verification mandatory, not advisory.
|
|
210
|
+
|
|
211
|
+
Origin: #1269 ① (R020 self-violation, session 106).
|
|
212
|
+
|
|
199
213
|
## Integration
|
|
200
214
|
|
|
201
215
|
| Rule | Interaction |
|
|
@@ -37,6 +37,8 @@ Update the relevant rule rather than just acknowledging the violation.
|
|
|
37
37
|
|
|
38
38
|
**Skill Promotion**: feedback memory가 동일 패턴으로 3회 이상 반복되면 "failure pattern"으로 승격. skill-extractor의 `--mode failure` 플래그로 스킬 후보 분석 가능 (Skillify 내재화, #972).
|
|
39
39
|
|
|
40
|
+
> **Quantitative threshold (clarified, #1268)**: candidacy begins at **≥2 occurrences** (propose a candidate via skill-extractor's 4-criteria gate); confirmed promotion to a tracked failure pattern requires **≥3 occurrences**. The ≥2 candidacy tier feeds skill-extractor Phase 1; the ≥3 tier gates actual skill creation. See `skill-extractor` Selection Discipline.
|
|
41
|
+
|
|
40
42
|
When CI failure, process gap, or repeatable system defect is found:
|
|
41
43
|
1. Record feedback memory (defend current session)
|
|
42
44
|
2. Register GitHub issue (trackable improvement item)
|
|
@@ -313,6 +313,9 @@ Before delegating a task to a subagent, MUST verify the target agent's tool capa
|
|
|
313
313
|
| `Read` external files | `tools:` includes Read |
|
|
314
314
|
| `Write` files | `tools:` includes Write (and target path not in `disallowedTools` scope) |
|
|
315
315
|
| MCP server calls | `mcpServers:` includes the required server |
|
|
316
|
+
| Task targets a specific file path | The path EXISTS (`Glob`/`ls`) — capability check alone does not catch a missing/renamed file |
|
|
317
|
+
|
|
318
|
+
> **Path existence ≠ tool capability (#1269 ③)**: the pre-check above verifies the agent HAS Read/Write/Bash, but not that the target path actually exists. Delegating a read/write to a missing or renamed path causes the same round-trip waste the capability pre-check is meant to prevent. Verify path existence (Glob/ls) before delegating path-specific work.
|
|
316
319
|
|
|
317
320
|
### Known Limitations (Active Cache)
|
|
318
321
|
|
|
@@ -88,6 +88,21 @@ Workflow/agent prompts MUST be fully assembled into the prompt string **before**
|
|
|
88
88
|
|--------------|----------|
|
|
89
89
|
| `const r = await agent(prompt) + FACTS` | `const r = await agent(prompt + FACTS)` — assemble first |
|
|
90
90
|
|
|
91
|
+
### Workflow Script Sanity Check
|
|
92
|
+
|
|
93
|
+
Before invoking a Workflow script, deterministically verify:
|
|
94
|
+
|
|
95
|
+
| Check | Why |
|
|
96
|
+
|-------|-----|
|
|
97
|
+
| No unresolved placeholders (`{phase1_summary}`, `TODO`, `<...>`, `{{ }}`) remain in any agent prompt string | An unfilled placeholder reaches the agent verbatim → garbled task |
|
|
98
|
+
| Template-literal / string concatenation produces the intended prompt (assemble-before-call, see above) | Post-call concatenation (`agent(prompt) + FACTS`) silently drops content |
|
|
99
|
+
| Script parses — balanced braces/quotes, valid JS | A syntax error aborts the entire run after partial work |
|
|
100
|
+
|
|
101
|
+
#### Common Violation (#1271)
|
|
102
|
+
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.
|
|
103
|
+
|
|
104
|
+
Origin: #1271 (Workflow authoring error recurrence, session 106).
|
|
105
|
+
|
|
91
106
|
### Verifier Ground-Truth for Cross-Cutting Facts
|
|
92
107
|
|
|
93
108
|
Cross-cutting facts not verifiable from the primary source (external URLs, in-cluster DNS/hostnames, infra topology) MUST be supplied to the verifier as explicit ground-truth. Otherwise an adversarial verifier cannot distinguish a hallucinated value from a correct one — a verification blind spot.
|
|
@@ -128,6 +128,36 @@ Delegate to mgr-creator with the proposal context:
|
|
|
128
128
|
|
|
129
129
|
mgr-creator handles: SKILL.md creation, template sync, ontology registration.
|
|
130
130
|
|
|
131
|
+
## Selection Discipline (evidence-gated)
|
|
132
|
+
|
|
133
|
+
Before proposing a SKILL candidate, apply this gate. Default to NOT creating a new skill — prefer strengthening an existing skill/rule.
|
|
134
|
+
|
|
135
|
+
### Evidence Hierarchy
|
|
136
|
+
|
|
137
|
+
Rank supporting evidence; only direct, repeated success qualifies:
|
|
138
|
+
|
|
139
|
+
| Tier | Evidence | Action |
|
|
140
|
+
|------|----------|--------|
|
|
141
|
+
| 1 Direct | Pattern executed successfully ≥2 times in observed trajectories | Eligible to propose |
|
|
142
|
+
| 2 Inferred | Pattern plausible but observed once | Hold — do not propose yet |
|
|
143
|
+
| 3 Speculative | Pattern imagined from a single description | Reject |
|
|
144
|
+
|
|
145
|
+
### 4-Criteria Selection Gate
|
|
146
|
+
|
|
147
|
+
A pattern becomes a candidate only if ALL four hold:
|
|
148
|
+
|
|
149
|
+
1. Reusable across ≥2 distinct contexts (not one-off)
|
|
150
|
+
2. Non-trivial — encodes real workflow knowledge, not a single command
|
|
151
|
+
3. Not already covered by an existing skill (run an overlap check first)
|
|
152
|
+
4. Demonstrated success ≥2 times (Evidence Hierarchy tier 1)
|
|
153
|
+
|
|
154
|
+
### Two-Phase Restraint
|
|
155
|
+
|
|
156
|
+
- **Phase 1 (broad)**: collect all repeated patterns as raw candidates.
|
|
157
|
+
- **Phase 2 (restrain)**: filter through the 4-criteria gate. Default to NOT creating a skill; prefer strengthening an existing skill/rule over spawning a new one.
|
|
158
|
+
|
|
159
|
+
> Borrowed from /scout #1268 (evidence-hierarchy + selection gate + two-phase restraint). Reference: issue #1268.
|
|
160
|
+
|
|
131
161
|
## Integration
|
|
132
162
|
|
|
133
163
|
| System | How |
|
package/templates/manifest.json
CHANGED