oh-my-customcode 1.1.91 → 1.1.93
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/README.md +1 -1
- package/dist/cli/index.js +118 -2
- package/dist/index.js +118 -2
- package/package.json +3 -2
- package/templates/.claude/hooks/hooks.json +46 -46
- package/templates/.claude/hooks/scripts/rule-deletion-guard.sh +1 -1
- package/templates/.claude/hooks/scripts/schema-validator.sh +5 -1
- package/templates/.claude/hooks/skill-count-reminder.sh +5 -1
- package/templates/.claude/rules/MAY-optimization.md +2 -0
- package/templates/.claude/rules/MUST-enforcement-policy.md +1 -1
- package/templates/.claude/settings.json +46 -46
- package/templates/.claude/skills/pipeline/workflows/auto-dev.yaml +56 -10
- package/templates/guides/claude-code/15-version-compatibility.md +149 -0
- package/templates/guides/hook-data-flow/README.md +4 -2
- package/templates/manifest.json +1 -1
- package/templates/workflows/auto-dev.yaml +56 -10
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"hooks": [
|
|
9
9
|
{
|
|
10
10
|
"type": "command",
|
|
11
|
-
"command": "bash
|
|
11
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/stage-blocker.sh\""
|
|
12
12
|
}
|
|
13
13
|
],
|
|
14
14
|
"matcher": "Write|Edit",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"hooks": [
|
|
69
69
|
{
|
|
70
70
|
"type": "command",
|
|
71
|
-
"command": "bash
|
|
71
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/content-hash-validator.sh\""
|
|
72
72
|
}
|
|
73
73
|
],
|
|
74
74
|
"matcher": "Edit",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"hooks": [
|
|
79
79
|
{
|
|
80
80
|
"type": "command",
|
|
81
|
-
"command": "bash
|
|
81
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/schema-validator.sh\""
|
|
82
82
|
}
|
|
83
83
|
],
|
|
84
84
|
"matcher": "Write|Edit|Bash",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"hooks": [
|
|
89
89
|
{
|
|
90
90
|
"type": "command",
|
|
91
|
-
"command": "bash
|
|
91
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/rtk-intercept.sh\""
|
|
92
92
|
}
|
|
93
93
|
],
|
|
94
94
|
"matcher": "Bash",
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
"hooks": [
|
|
99
99
|
{
|
|
100
100
|
"type": "command",
|
|
101
|
-
"command": "bash
|
|
101
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/destructive-git-guard.sh\""
|
|
102
102
|
}
|
|
103
103
|
],
|
|
104
104
|
"matcher": "Bash",
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
"hooks": [
|
|
109
109
|
{
|
|
110
110
|
"type": "command",
|
|
111
|
-
"command": "bash
|
|
111
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/rule-deletion-guard.sh\""
|
|
112
112
|
}
|
|
113
113
|
],
|
|
114
114
|
"matcher": "Bash",
|
|
@@ -122,15 +122,15 @@
|
|
|
122
122
|
},
|
|
123
123
|
{
|
|
124
124
|
"type": "command",
|
|
125
|
-
"command": "bash
|
|
125
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/git-delegation-guard.sh\""
|
|
126
126
|
},
|
|
127
127
|
{
|
|
128
128
|
"type": "command",
|
|
129
|
-
"command": "bash
|
|
129
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/agent-teams-advisor.sh\""
|
|
130
130
|
},
|
|
131
131
|
{
|
|
132
132
|
"type": "command",
|
|
133
|
-
"command": "bash
|
|
133
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/model-escalation-advisor.sh\""
|
|
134
134
|
}
|
|
135
135
|
],
|
|
136
136
|
"matcher": "Task|Agent",
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
"hooks": [
|
|
143
143
|
{
|
|
144
144
|
"type": "command",
|
|
145
|
-
"command": "
|
|
145
|
+
"command": "\"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/omcustom-auto-update.sh\""
|
|
146
146
|
}
|
|
147
147
|
],
|
|
148
148
|
"matcher": "*",
|
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
"hooks": [
|
|
153
153
|
{
|
|
154
154
|
"type": "command",
|
|
155
|
-
"command": "bash
|
|
155
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/session-env-check.sh\""
|
|
156
156
|
}
|
|
157
157
|
],
|
|
158
158
|
"matcher": "*",
|
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
"hooks": [
|
|
163
163
|
{
|
|
164
164
|
"type": "command",
|
|
165
|
-
"command": "bash
|
|
165
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/stale-todo-scanner.sh\""
|
|
166
166
|
}
|
|
167
167
|
],
|
|
168
168
|
"matcher": "*",
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
"hooks": [
|
|
173
173
|
{
|
|
174
174
|
"type": "command",
|
|
175
|
-
"command": "bash
|
|
175
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/adaptive-harness-scan.sh\""
|
|
176
176
|
}
|
|
177
177
|
],
|
|
178
178
|
"matcher": "*",
|
|
@@ -182,7 +182,7 @@
|
|
|
182
182
|
"hooks": [
|
|
183
183
|
{
|
|
184
184
|
"type": "command",
|
|
185
|
-
"command": "bash
|
|
185
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/session-autofix.sh\""
|
|
186
186
|
}
|
|
187
187
|
],
|
|
188
188
|
"matcher": "*",
|
|
@@ -192,7 +192,7 @@
|
|
|
192
192
|
"hooks": [
|
|
193
193
|
{
|
|
194
194
|
"type": "command",
|
|
195
|
-
"command": "bash
|
|
195
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/plugin-cache-check.sh\""
|
|
196
196
|
}
|
|
197
197
|
],
|
|
198
198
|
"matcher": "*",
|
|
@@ -202,7 +202,7 @@
|
|
|
202
202
|
"hooks": [
|
|
203
203
|
{
|
|
204
204
|
"type": "command",
|
|
205
|
-
"command": "bash
|
|
205
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/claude-md-reinject.sh\""
|
|
206
206
|
}
|
|
207
207
|
],
|
|
208
208
|
"matcher": "compact",
|
|
@@ -214,7 +214,7 @@
|
|
|
214
214
|
"hooks": [
|
|
215
215
|
{
|
|
216
216
|
"type": "command",
|
|
217
|
-
"command": "bash
|
|
217
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/user-prompt-preprocessor.sh\""
|
|
218
218
|
}
|
|
219
219
|
],
|
|
220
220
|
"matcher": "*",
|
|
@@ -224,7 +224,7 @@
|
|
|
224
224
|
"hooks": [
|
|
225
225
|
{
|
|
226
226
|
"type": "command",
|
|
227
|
-
"command": "bash
|
|
227
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/r007-r008-drift-advisor.sh\""
|
|
228
228
|
}
|
|
229
229
|
],
|
|
230
230
|
"matcher": "*",
|
|
@@ -234,7 +234,7 @@
|
|
|
234
234
|
"hooks": [
|
|
235
235
|
{
|
|
236
236
|
"type": "command",
|
|
237
|
-
"command": "bash
|
|
237
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/session-autofix-prompt.sh\""
|
|
238
238
|
}
|
|
239
239
|
],
|
|
240
240
|
"matcher": "*",
|
|
@@ -244,7 +244,7 @@
|
|
|
244
244
|
"hooks": [
|
|
245
245
|
{
|
|
246
246
|
"type": "command",
|
|
247
|
-
"command": "bash
|
|
247
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/fail-axis-cause-advisor.sh\""
|
|
248
248
|
}
|
|
249
249
|
],
|
|
250
250
|
"matcher": "*",
|
|
@@ -260,7 +260,7 @@
|
|
|
260
260
|
},
|
|
261
261
|
{
|
|
262
262
|
"type": "command",
|
|
263
|
-
"command": "bash
|
|
263
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/agent-start-recorder.sh\""
|
|
264
264
|
}
|
|
265
265
|
],
|
|
266
266
|
"matcher": "*",
|
|
@@ -272,23 +272,23 @@
|
|
|
272
272
|
"hooks": [
|
|
273
273
|
{
|
|
274
274
|
"type": "command",
|
|
275
|
-
"command": "bash
|
|
275
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/task-outcome-recorder.sh\""
|
|
276
276
|
},
|
|
277
277
|
{
|
|
278
278
|
"type": "command",
|
|
279
|
-
"command": "bash
|
|
279
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/stall-detection-advisor.sh\""
|
|
280
280
|
},
|
|
281
281
|
{
|
|
282
282
|
"type": "command",
|
|
283
|
-
"command": "bash
|
|
283
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/auto-continue-guard.sh\""
|
|
284
284
|
},
|
|
285
285
|
{
|
|
286
286
|
"type": "command",
|
|
287
|
-
"command": "bash
|
|
287
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/r007-r008-drift-advisor.sh\""
|
|
288
288
|
},
|
|
289
289
|
{
|
|
290
290
|
"type": "command",
|
|
291
|
-
"command": "bash
|
|
291
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/subagent-failure-advisor.sh\""
|
|
292
292
|
}
|
|
293
293
|
],
|
|
294
294
|
"matcher": "*",
|
|
@@ -300,7 +300,7 @@
|
|
|
300
300
|
"hooks": [
|
|
301
301
|
{
|
|
302
302
|
"type": "command",
|
|
303
|
-
"command": "bash
|
|
303
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/cwd-change-detector.sh\""
|
|
304
304
|
}
|
|
305
305
|
],
|
|
306
306
|
"matcher": "*",
|
|
@@ -312,7 +312,7 @@
|
|
|
312
312
|
"hooks": [
|
|
313
313
|
{
|
|
314
314
|
"type": "command",
|
|
315
|
-
"command": "bash
|
|
315
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/file-change-validator.sh\""
|
|
316
316
|
}
|
|
317
317
|
],
|
|
318
318
|
"matcher": "*",
|
|
@@ -372,7 +372,7 @@
|
|
|
372
372
|
"hooks": [
|
|
373
373
|
{
|
|
374
374
|
"type": "command",
|
|
375
|
-
"command": "bash
|
|
375
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/task-state-precompact.sh\""
|
|
376
376
|
}
|
|
377
377
|
],
|
|
378
378
|
"matcher": "*",
|
|
@@ -470,7 +470,7 @@
|
|
|
470
470
|
"hooks": [
|
|
471
471
|
{
|
|
472
472
|
"type": "command",
|
|
473
|
-
"command": "bash
|
|
473
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/context-budget-advisor.sh\"",
|
|
474
474
|
"continueOnBlock": true
|
|
475
475
|
}
|
|
476
476
|
],
|
|
@@ -481,7 +481,7 @@
|
|
|
481
481
|
"hooks": [
|
|
482
482
|
{
|
|
483
483
|
"type": "command",
|
|
484
|
-
"command": "bash
|
|
484
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/r007-r008-drift-advisor.sh\"",
|
|
485
485
|
"continueOnBlock": true
|
|
486
486
|
}
|
|
487
487
|
],
|
|
@@ -492,7 +492,7 @@
|
|
|
492
492
|
"hooks": [
|
|
493
493
|
{
|
|
494
494
|
"type": "command",
|
|
495
|
-
"command": "bash
|
|
495
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/stuck-detector.sh\"",
|
|
496
496
|
"continueOnBlock": true
|
|
497
497
|
}
|
|
498
498
|
],
|
|
@@ -503,7 +503,7 @@
|
|
|
503
503
|
"hooks": [
|
|
504
504
|
{
|
|
505
505
|
"type": "command",
|
|
506
|
-
"command": "bash
|
|
506
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/cost-cap-advisor.sh\"",
|
|
507
507
|
"continueOnBlock": true
|
|
508
508
|
}
|
|
509
509
|
],
|
|
@@ -514,7 +514,7 @@
|
|
|
514
514
|
"hooks": [
|
|
515
515
|
{
|
|
516
516
|
"type": "command",
|
|
517
|
-
"command": "bash
|
|
517
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/content-hash-validator.sh\""
|
|
518
518
|
}
|
|
519
519
|
],
|
|
520
520
|
"matcher": "Read",
|
|
@@ -524,7 +524,7 @@
|
|
|
524
524
|
"hooks": [
|
|
525
525
|
{
|
|
526
526
|
"type": "command",
|
|
527
|
-
"command": "bash
|
|
527
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/secret-filter.sh\""
|
|
528
528
|
}
|
|
529
529
|
],
|
|
530
530
|
"matcher": "Bash|Read|Grep",
|
|
@@ -534,7 +534,7 @@
|
|
|
534
534
|
"hooks": [
|
|
535
535
|
{
|
|
536
536
|
"type": "command",
|
|
537
|
-
"command": "bash
|
|
537
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/audit-log.sh\""
|
|
538
538
|
}
|
|
539
539
|
],
|
|
540
540
|
"matcher": "Edit|Write|Bash|Agent",
|
|
@@ -544,7 +544,7 @@
|
|
|
544
544
|
"hooks": [
|
|
545
545
|
{
|
|
546
546
|
"type": "command",
|
|
547
|
-
"command": "bash
|
|
547
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/skill-count-reminder.sh\"",
|
|
548
548
|
"continueOnBlock": true
|
|
549
549
|
}
|
|
550
550
|
],
|
|
@@ -555,7 +555,7 @@
|
|
|
555
555
|
"hooks": [
|
|
556
556
|
{
|
|
557
557
|
"type": "command",
|
|
558
|
-
"command": "bash
|
|
558
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/playwright-compress.sh\""
|
|
559
559
|
}
|
|
560
560
|
],
|
|
561
561
|
"matcher": "mcp__playwright__.*|mcp__claude-in-chrome__.*",
|
|
@@ -565,7 +565,7 @@
|
|
|
565
565
|
"hooks": [
|
|
566
566
|
{
|
|
567
567
|
"type": "command",
|
|
568
|
-
"command": "bash
|
|
568
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/auto-dev-token-tracker.sh\""
|
|
569
569
|
}
|
|
570
570
|
],
|
|
571
571
|
"matcher": "Task|Agent",
|
|
@@ -577,7 +577,7 @@
|
|
|
577
577
|
"hooks": [
|
|
578
578
|
{
|
|
579
579
|
"type": "command",
|
|
580
|
-
"command": "bash
|
|
580
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/stop-console-audit.sh\""
|
|
581
581
|
}
|
|
582
582
|
],
|
|
583
583
|
"matcher": "*",
|
|
@@ -587,7 +587,7 @@
|
|
|
587
587
|
"hooks": [
|
|
588
588
|
{
|
|
589
589
|
"type": "command",
|
|
590
|
-
"command": "bash
|
|
590
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/eval-core-batch-save.sh\""
|
|
591
591
|
}
|
|
592
592
|
],
|
|
593
593
|
"matcher": "*",
|
|
@@ -597,7 +597,7 @@
|
|
|
597
597
|
"hooks": [
|
|
598
598
|
{
|
|
599
599
|
"type": "command",
|
|
600
|
-
"command": "bash
|
|
600
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/feedback-collector.sh\""
|
|
601
601
|
}
|
|
602
602
|
],
|
|
603
603
|
"matcher": "*",
|
|
@@ -607,7 +607,7 @@
|
|
|
607
607
|
"hooks": [
|
|
608
608
|
{
|
|
609
609
|
"type": "command",
|
|
610
|
-
"command": "bash
|
|
610
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/session-reflection.sh\""
|
|
611
611
|
}
|
|
612
612
|
],
|
|
613
613
|
"matcher": "*",
|
|
@@ -617,7 +617,7 @@
|
|
|
617
617
|
"hooks": [
|
|
618
618
|
{
|
|
619
619
|
"type": "command",
|
|
620
|
-
"command": "bash
|
|
620
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/skill-extractor-analyzer.sh\""
|
|
621
621
|
}
|
|
622
622
|
],
|
|
623
623
|
"matcher": "*",
|
|
@@ -627,7 +627,7 @@
|
|
|
627
627
|
"hooks": [
|
|
628
628
|
{
|
|
629
629
|
"type": "command",
|
|
630
|
-
"command": "bash
|
|
630
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/auto-dev-token-summary.sh\""
|
|
631
631
|
}
|
|
632
632
|
],
|
|
633
633
|
"matcher": "*",
|
|
@@ -639,7 +639,7 @@
|
|
|
639
639
|
"hooks": [
|
|
640
640
|
{
|
|
641
641
|
"type": "command",
|
|
642
|
-
"command": "bash
|
|
642
|
+
"command": "bash \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/scripts/failure-ledger.sh\""
|
|
643
643
|
}
|
|
644
644
|
],
|
|
645
645
|
"matcher": "*",
|
|
@@ -413,7 +413,7 @@ steps:
|
|
|
413
413
|
|
|
414
414
|
- name: deep-plan
|
|
415
415
|
skill: deep-plan
|
|
416
|
-
description: "Research-validated implementation plan (research → plan → verify) — skipped if docs-only, integrated-analysis allowed if lite; independent of tier, MAY run in lightweight mode when compression-mode-eval's 'Cross-tier — Lightweight Skill-Mode Substitution' conditions are met. MULTI-PHASE: 스킬을 그대로 spawn하지 말고 R020 「위임 경계를 Phase 개수로 설계」에 따라 단일 목표 위임으로 분할해 순차 발주한다 (#1595 #4). 리서치·계측 위임의 완료 조건에는 결론 수치를 산출물 표에서 jq/awk로 재계산해 병기하도록 명시한다(#1707 #4)."
|
|
416
|
+
description: "Research-validated implementation plan (research → plan → verify) — skipped if docs-only, integrated-analysis allowed if lite; independent of tier, MAY run in lightweight mode when compression-mode-eval's 'Cross-tier — Lightweight Skill-Mode Substitution' conditions are met. MULTI-PHASE: 스킬을 그대로 spawn하지 말고 R020 「위임 경계를 Phase 개수로 설계」에 따라 단일 목표 위임으로 분할해 순차 발주한다 (#1595 #4). 리서치·계측 위임의 완료 조건에는 결론 수치를 산출물 표에서 jq/awk로 재계산해 병기하도록 명시한다(#1707 #4). 테스트 격리·모듈 모킹 수정을 다루는 리서치·계획 위임에도 대상 src 파일과 All files의 수정 전후 커버리지를 동일 하네스로 비교하도록 완료 조건에 명시합니다(#1778 찐빠 #5, implement 스텝 Rules와 동일 요구)."
|
|
417
417
|
depends_on: plan
|
|
418
418
|
|
|
419
419
|
- name: implement
|
|
@@ -433,7 +433,9 @@ steps:
|
|
|
433
433
|
another project's session: a subagent added an unapproved model-attribution trailer to 4
|
|
434
434
|
local commits, citing the repo's own past-commit convention as justification; the trailer
|
|
435
435
|
did not remain on the target branch because the squash-merge specified the PR body
|
|
436
|
-
separately) (#1728 찐빠 #6).
|
|
436
|
+
separately) (#1728 찐빠 #6). This holds even when the agent's own environment or system
|
|
437
|
+
instructions suggest a different attribution: it uses the delegation's string verbatim
|
|
438
|
+
(#1778 찐빠 #2).
|
|
437
439
|
⚠ implement-stage commits land directly on develop (no PR gate here). A close-keyword trailer on a
|
|
438
440
|
develop-bound commit auto-closes the issue on push — BEFORE release/tag/publish (observed v1.1.38,
|
|
439
441
|
07:49:26Z). Close keywords belong ONLY in the release-stage PR body (see release step 3.b) — auto-tag.yml
|
|
@@ -488,6 +490,14 @@ steps:
|
|
|
488
490
|
clause, the orchestrator MUST compare that clause's Anti-pattern table rows 1:1 against the
|
|
489
491
|
delegation prompt's sentences and rewrite any match (cause: the R016 「신설 조항의 동일
|
|
490
492
|
반복 self-check」 was known as text but not executed as a procedure, #1707 #1).
|
|
493
|
+
- A delegation whose convention/doc text describes an implementation choice made in the SAME
|
|
494
|
+
release (e.g. a test-writing convention that depends on how a mock-leak fix is
|
|
495
|
+
implemented) MUST be dispatched sequentially, AFTER the implementation report arrives —
|
|
496
|
+
file-disjoint is not independent when the wording depends on an undecided implementation
|
|
497
|
+
choice (R009 「File-Disjoint ≠ Independent」 document-implementation variant); docs
|
|
498
|
+
independent of any in-release implementation choice may still run in parallel
|
|
499
|
+
(같은 릴리즈의 구현 선택을 서술하는 규약·문서 위임은 구현 보고를 받은 뒤 순차 발주합니다,
|
|
500
|
+
#1763 찐빠 #2).
|
|
491
501
|
- Every rule/skill/guide TEXT-editing delegation prompt MUST include this fixed constraint
|
|
492
502
|
block: (a) Korean 합쇼체 for new sentences, do not imitate adjacent 반말 — completion
|
|
493
503
|
criteria MUST include THREE deterministic checks, scoped to edited text files (md/yaml)
|
|
@@ -503,10 +513,11 @@ steps:
|
|
|
503
513
|
`grep -E '(함|됨|필요)[.。"]?$'` = 0 (반말/명사 종결 endings such as 확인함·정정
|
|
504
514
|
필요·완료됨 fall entirely outside the 다-ending regexes above and were previously
|
|
505
515
|
undetectable — verified against 4 명사 종결 positive samples and 4 합쇼체 negative
|
|
506
|
-
samples, 8/8 correct) (#1728 찐빠 #2 residual).
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
516
|
+
samples, 8/8 correct) (#1728 찐빠 #2 residual). The earlier unverified "macOS multibyte
|
|
517
|
+
false positive" hypothesis is retired: the cause measured in #1763 찐빠 #1 for the
|
|
518
|
+
grep/python3 disagreement was the missing `-E` on the second grep (in BRE `?` is a literal
|
|
519
|
+
character), not a platform effect (re-measured 12/12 with `-vcE`; this text entered via commit 54f92b85, Refs #1760 — not in #1760's issue body). This repo's
|
|
520
|
+
Bash `grep` MAY still be a shell function shadowing the real binary (R005) — the agent MUST ALSO run the same three checks as a
|
|
510
521
|
python3 `re` equivalent of all THREE checks above, reading from the SAME piped stdin as
|
|
511
522
|
(a) (`git diff -U0 -- <edited md/yaml files> | grep '^+' | python3 -c "import re,sys;
|
|
512
523
|
text=sys.stdin.read();
|
|
@@ -515,8 +526,12 @@ steps:
|
|
|
515
526
|
noun=len(re.findall(r'(함|됨|필요)[.。\"]?$', text, re.M));
|
|
516
527
|
print(fam, lf, noun)"`, NOT a file-argument read — the input is the piped diff, never a
|
|
517
528
|
file path), in ADDITION to (not instead of) the grep commands above, and
|
|
518
|
-
treat a python3/grep disagreement as
|
|
519
|
-
|
|
529
|
+
treat a python3/grep disagreement as a trigger to investigate, not as a known false
|
|
530
|
+
positive: on the FIRST observation the agent MUST reproduce the cause within that same
|
|
531
|
+
iteration (e.g. run each check on a printf positive/negative fixture and report which
|
|
532
|
+
command or flag differs) and MUST NOT dismiss it with a `[hypothesis]` tag
|
|
533
|
+
(grep/python3 불일치가 처음 관측되면 그 반복 안에서 원인을 재현으로 가릅니다, 가설 태그로
|
|
534
|
+
넘기지 않습니다; R005, R023, #1749 찐빠 #3, #1763 찐빠 #1). Even with all three checks, a residual
|
|
520
535
|
gap remains for 반말/명사 종결 variants the patterns above do not enumerate — the agent
|
|
521
536
|
MUST also read the newly added lines directly as a final check, not rely on regex alone.
|
|
522
537
|
When an edit re-emits a pre-existing
|
|
@@ -533,7 +548,9 @@ steps:
|
|
|
533
548
|
실값 리터럴 금지) — the rule corpus is itself a grep target, and a real literal can
|
|
534
549
|
contaminate the very command a clause cites (#1711 찐빠 #2); (h) any temporary file the
|
|
535
550
|
delegation creates MUST live under a per-agent-unique path (`$TMPDIR` or the session
|
|
536
|
-
scratchpad), never a fixed shared path (#1722 찐빠 #7).
|
|
551
|
+
scratchpad), never a fixed shared path (#1722 찐빠 #7). This governs the agent's own
|
|
552
|
+
ad-hoc temp files; temp paths created at runtime by test code are governed by the
|
|
553
|
+
separate test-code temp-path bullet below (#1778 찐빠 #4).
|
|
537
554
|
- Any implement-stage delegation that writes an executable command or code snippet into
|
|
538
555
|
rule/skill/guide/workflow TEXT (not a prose-only edit) MUST require, as a completion-report
|
|
539
556
|
item, that the agent copy the command OUT of the edited file and run it once on a positive
|
|
@@ -554,11 +571,33 @@ steps:
|
|
|
554
571
|
워크플로 스크립트를 사본으로 추출해 검증할 때 사본 수정은 `sleep` 무력화·요약 출력 대상
|
|
555
572
|
지정처럼 실행 환경 대체로만 제한하고 로직·echo 문구는 원문 그대로 유지하며, 완료 보고에는
|
|
556
573
|
요약이 아닌 raw 출력을 포함해야 합니다) (R023 「Sample-Value Assembly」, #1754 찐빠 #2).
|
|
574
|
+
- A delegation that creates or edits TS/JS files located inside biome's configured scope
|
|
575
|
+
(the `files.includes` globs in `biome.json`, currently `src/**`, `tests/**`, `scripts/**`)
|
|
576
|
+
MUST include in its completion criteria `bunx biome check <the target files>` (the local
|
|
577
|
+
counterpart of the CI Lint job for those paths, R023 「Delegated Verification Floor」) with
|
|
578
|
+
the raw exit code reported. For TS/JS files outside that scope (e.g. `packages/**`,
|
|
579
|
+
`.github/scripts/**`) the same command exits 1 regardless of formatting because the path
|
|
580
|
+
is ignored, so the agent MUST NOT report that exit as a lint failure and MUST NOT work
|
|
581
|
+
around it: it reports those files as "outside biome scope" instead. Read-only review
|
|
582
|
+
delegations are excluded (biome 설정 범위 안의 TS/JS 파일을 만들거나 고치는 위임의 완료
|
|
583
|
+
조건에 대상 파일의 `bunx biome check`를 포함합니다. 범위 밖 파일은 실패로 보고하지 않고
|
|
584
|
+
"biome 범위 밖"으로 보고합니다, #1778 찐빠 #3).
|
|
585
|
+
- A delegation that writes test code MUST instruct the agent that temp paths created at
|
|
586
|
+
runtime by that test code come from `mkdtempSync(join(tmpdir(), …))` (or the language's
|
|
587
|
+
equivalent), and that a session scratchpad path MUST NOT be hardcoded in the code. This
|
|
588
|
+
applies to every test-writing delegation, not only rule/skill/guide TEXT edits (이 규범은
|
|
589
|
+
테스트 코드를 작성하는 모든 위임에 적용됩니다, #1778 찐빠 #4).
|
|
557
590
|
- Every delegation prompt (not only rule/skill/guide TEXT edits) MUST instruct the agent
|
|
558
591
|
that if a guard, classifier, or permission check blocks an action, it MUST NOT route
|
|
559
592
|
around it (e.g. via a shell glob or path rewrite) — it MUST stop and report the block
|
|
560
593
|
verbatim (R010 「품질 게이트 우회 금지 — 훅 차단은 보고 대상」, extended here from git
|
|
561
594
|
hooks to guards/classifiers/permissions generally) (#1728 찐빠 #1).
|
|
595
|
+
- Every delegation prompt MUST instruct the agent not to use a persistent `cd` in the
|
|
596
|
+
Bash tool, and the orchestrator itself MUST NOT use one: use absolute paths or a subshell
|
|
597
|
+
`( cd … )`, because a bare `cd` stays as the session cwd: hook commands are anchored with
|
|
598
|
+
`CLAUDE_PROJECT_DIR` and unaffected, but scripts/tools that read relative paths internally
|
|
599
|
+
and later commands' relative paths can break (see
|
|
600
|
+
the R005 clause on Bash `cd` remaining as the session cwd, #1778 찐빠 #1, #1767).
|
|
562
601
|
- The standard wording of STATE-CHANGING delegation prompts (git/gh commands,
|
|
563
602
|
file-creating and file-editing delegations — NOT read-only review/analysis delegations) MUST instruct
|
|
564
603
|
the agent to report ONLY what it directly observed within its own execution context, and
|
|
@@ -667,6 +706,11 @@ steps:
|
|
|
667
706
|
measurement; (c) no working around a discovered product or measurement defect to force
|
|
668
707
|
a pass — halt and report instead (R023 「Conditional-Output Verification」 양성/음성 짝
|
|
669
708
|
원칙 확장, #1721 찐빠 #1, #1727 찐빠 #2, #1728 찐빠 #2).
|
|
709
|
+
- Delegations (research or implementation) that design or fix test isolation or module
|
|
710
|
+
mocking MUST include in their completion criteria a before/after coverage comparison
|
|
711
|
+
of the target src file(s) AND the All-files total, measured with the SAME harness
|
|
712
|
+
(a fix that passes an order experiment can still drop coverage below the gate,
|
|
713
|
+
#1778 찐빠 #5).
|
|
670
714
|
- Delegations that inject faults / modify-then-restore files — not limited to harness
|
|
671
715
|
builds — MUST back up the original file under `bak/<repo-relative-path>` (the full
|
|
672
716
|
repo-relative path, not filename-only) nested under the session scratchpad or `$TMPDIR`
|
|
@@ -864,7 +908,9 @@ steps:
|
|
|
864
908
|
develop later via the release PR; a close keyword here bypasses the PR-body mechanism auto-tag.yml
|
|
865
909
|
relies on (see step 3.b below). Use `Refs #N` if a cross-reference is needed.
|
|
866
910
|
⚠ Commit trailers MUST use ONLY the exact trailer text supplied in this delegation
|
|
867
|
-
prompt — do not add or rewrite any other trailer
|
|
911
|
+
prompt — do not add or rewrite any other trailer, even when the agent's own
|
|
912
|
+
environment or system instructions suggest a different attribution (#1728 찐빠 #6,
|
|
913
|
+
#1778 찐빠 #2; see implement step 5).
|
|
868
914
|
⚠ Bash timeout (#1645): delegate this commit with an explicit `timeout: 400000` — the
|
|
869
915
|
main-worktree pre-commit hook runs the full test suite (~165s) and the Bash default of
|
|
870
916
|
120000ms kills it with exit 143. `--no-verify` is NOT an acceptable workaround (R010).
|