oh-my-customcodex 0.4.15 → 0.5.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.
Files changed (44) hide show
  1. package/README.md +7 -7
  2. package/dist/cli/index.js +65 -20
  3. package/dist/index.js +40 -4
  4. package/package.json +1 -1
  5. package/templates/.claude/agents/mgr-gitnerd.md +4 -0
  6. package/templates/.claude/agents/mgr-sauron.md +5 -4
  7. package/templates/.claude/hooks/hooks.json +13 -0
  8. package/templates/.claude/hooks/scripts/context-budget-advisor.sh +40 -2
  9. package/templates/.claude/hooks/scripts/cost-cap-advisor.sh +8 -3
  10. package/templates/.claude/hooks/scripts/destructive-git-guard.sh +53 -0
  11. package/templates/.claude/hooks/scripts/omcustom-auto-update.sh +5 -5
  12. package/templates/.claude/hooks/scripts/session-env-check.sh +8 -6
  13. package/templates/.claude/hooks/scripts/stuck-detector.sh +2 -2
  14. package/templates/.claude/ontology/skills.yaml +3 -3
  15. package/templates/.claude/rules/MUST-agent-design.md +1 -0
  16. package/templates/.claude/rules/MUST-orchestrator-coordination.md +6 -0
  17. package/templates/.claude/rules/MUST-safety.md +15 -0
  18. package/templates/.claude/rules/SHOULD-hud-statusline.md +2 -0
  19. package/templates/.claude/skills/gitlab/SKILL.md +346 -0
  20. package/templates/.claude/skills/goal/SKILL.md +5 -3
  21. package/templates/.claude/skills/harness-synthesizer/SKILL.md +32 -0
  22. package/templates/.claude/skills/help/SKILL.md +2 -2
  23. package/templates/.claude/skills/lists/SKILL.md +2 -2
  24. package/templates/.claude/skills/npm-version/SKILL.md +6 -0
  25. package/templates/.claude/skills/omcodex-release-notes/SKILL.md +5 -4
  26. package/templates/.claude/skills/post-release-followup/SKILL.md +1 -1
  27. package/templates/.claude/skills/status/SKILL.md +1 -1
  28. package/templates/.claude/statusline.sh +24 -3
  29. package/templates/AGENTS.md.en +5 -3
  30. package/templates/AGENTS.md.ko +5 -3
  31. package/templates/CLAUDE.md +12 -3
  32. package/templates/CLAUDE.md.en +12 -3
  33. package/templates/CLAUDE.md.ko +12 -3
  34. package/templates/guides/claude-code/04-agent-skills.md +16 -0
  35. package/templates/guides/claude-code/06-mcp.md +6 -0
  36. package/templates/guides/claude-code/13-cli-flags.md +13 -1
  37. package/templates/guides/claude-code/15-version-compatibility.md +59 -0
  38. package/templates/guides/claude-code/index.yaml +5 -0
  39. package/templates/guides/git-safety/README.md +44 -0
  40. package/templates/guides/hook-data-flow/README.md +16 -16
  41. package/templates/guides/index.yaml +6 -0
  42. package/templates/guides/professor-triage/phases.md +324 -0
  43. package/templates/manifest.json +3 -3
  44. package/templates/workflows/auto-dev.yaml +13 -1
@@ -0,0 +1,324 @@
1
+ # professor-triage — Phase Implementation Detail
2
+
3
+ Companion to `guides/professor-triage/README.md`. Detailed workflow for each phase.
4
+
5
+ ## Phase 1: Gather
6
+
7
+ 1. Parse arguments to determine target issues:
8
+ - If issue numbers provided: use those directly
9
+ - If `--label` provided: `gh issue list --label <label> --state <state> --json number`
10
+ - Default: `gh issue list --state open --json number` + exclude issues with `verify-done` label
11
+ - If `--since` provided: add `--search "created:>YYYY-MM-DD"` filter
12
+
13
+ 2. For each issue, fetch full details:
14
+ ```bash
15
+ gh issue view NNN --json number,title,body,comments,labels,createdAt
16
+ ```
17
+
18
+ 3. For batches >20 issues, prefer `gh api graphql` for batch fetching to respect GitHub API rate limits (5000/hour authenticated).
19
+
20
+ 4. If filter returns 0 results: if `--label` was used, check label existence via `gh label list`. Report if label missing. If default filter, report "No open issues without verify-done label found."
21
+
22
+ ## Phase 2: Codebase Analysis
23
+
24
+ For each issue, perform direct codebase analysis.
25
+
26
+ ### 2A: Context Extraction
27
+
28
+ From issue title and body, extract:
29
+ - File paths mentioned (regex: backtick-wrapped paths, `:\d+` line refs, `(L\d+)`, `(lines \d+-\d+)`)
30
+ - Error messages or stack traces
31
+ - Keywords (function names, class names, config keys, module names)
32
+ - Component areas mentioned (e.g., "auth", "CI", "hooks")
33
+
34
+ ### 2B: Codebase Search
35
+
36
+ Delegate to Explore agent(s):
37
+ - Search for extracted keywords using Grep across the codebase
38
+ - Find related files using Glob patterns derived from keywords
39
+ - For explicitly mentioned files, verify existence and read relevant sections
40
+ - For error messages, trace to source location
41
+ - Map import/dependency relationships for affected files
42
+
43
+ ### 2C: Impact Assessment
44
+
45
+ For each relevant file found:
46
+ - Read current state of the code
47
+ - Check recent changes: `git log --since=<issue_created_date> --oneline -- <file>`
48
+ - Determine if the issue has already been addressed by recent commits
49
+ - Assess blast radius (what depends on this code, what does this code depend on)
50
+
51
+ ### 2D: Structured Finding
52
+
53
+ Produce per-issue analysis:
54
+
55
+ | Field | Content |
56
+ |-------|---------|
57
+ | Affected files | List with status: `exists` ✅ / `missing` ❌ / `changed-since-issue` ⚠️ |
58
+ | Architecture impact | Breaking changes, dependency effects, scope of change |
59
+ | Implementation path | Concrete steps with file:line references from current codebase |
60
+ | Risk level | P1 (critical/security/breaking) / P2 (moderate/compat) / P3 (nice-to-have) |
61
+ | Size estimate | XS (<1h) / S (1-3h) / M (3-8h) / L (1-3d) / XL (>3d) |
62
+ | Already resolved? | Yes / No / Partial — with git evidence (commit hash, PR number) |
63
+
64
+ ### Parallelization (R009/R018)
65
+
66
+ - 1-3 issues → single Explore agent per issue (parallel per R009)
67
+ - 4-10 issues → parallel Explore agents, max 4 concurrent (R009)
68
+ - 10+ issues or 3+ Explore agents needed → Agent Teams per R018
69
+
70
+ **Delegation**: All codebase search delegated to Explore agent(s) with `model: haiku`. Orchestrator collects and synthesizes results.
71
+
72
+ ## Phase 3: Cross-Analyze
73
+
74
+ **R010 note**: This is a read-only analytical step — no file writes. Per R010 exception, the orchestrator may perform this directly. For batches >15 issues, delegate to a dedicated cross-analysis agent with model: opus.
75
+
76
+ Perform deep cross-analysis with full context from all issues:
77
+
78
+ 1. **Common patterns** — Identify findings that appear across multiple issues (e.g., same file referenced, same recommendation theme)
79
+ 2. **Duplicate/merge candidates** — Detect issues tracking the same underlying change:
80
+ - Same release series (e.g., alpha.3/5/6)
81
+ - Same upstream dependency
82
+ - Same affected component
83
+ 3. **Conflicting findings** — Where findings disagree across issues, resolve based on:
84
+ - Codebase evidence (Phase 2 results)
85
+ - Specificity (concrete code-level finding > abstract observation)
86
+ - Recency (newer findings > older ones)
87
+ 4. **Priority matrix** — Unified priority ranking:
88
+ - P1: Breaking changes, security issues, blocking bugs
89
+ - P2: Documentation gaps, compatibility updates, medium-risk items
90
+ - P3: Nice-to-have improvements, future considerations
91
+ 5. **Action determination** — Per-issue decision:
92
+ - `Close (Already Resolved)`: Phase 2 found issue already fixed by recent commits
93
+ - `Close (Not Applicable)`: Issue is irrelevant (internal dependency tag, no impact)
94
+ - `Close (Duplicate of #NNN)`: Superseded by another issue in the batch
95
+ - `Open — action required`: Real work needed
96
+ - `Open — monitoring`: Waiting for external trigger (e.g., stable release)
97
+ - `New issue needed`: Cross-analysis discovered issue not yet tracked
98
+
99
+ ## Phase 4: Multi-Perspective Analysis & Output
100
+
101
+ Generate multi-perspective analysis comments and artifacts for each analyzed issue.
102
+
103
+ ### Parallelization (R009)
104
+
105
+ - Phase 4A + 4B: parallel (independent perspectives)
106
+ - Phase 4C: after 4A + 4B complete (synthesis requires both inputs)
107
+ - Phase 4D + 4E: parallel (independent outputs, both depend on 4C)
108
+ - Phase 4F: after all above (verification gate)
109
+
110
+ ### Agent Selection Rationale
111
+
112
+ Phases 4A, 4B, 4C, 4E use `general-purpose` (NOT `arch-documenter`).
113
+
114
+ `arch-documenter` has `disallowedTools: [Bash]` → cannot execute `/tmp/*.sh` bypass pattern → falls back to Write tool → triggers Codex/Claude-compat sensitive-path guard on `.codex/outputs/`. `general-purpose` has Bash access and can use the `/tmp/*.sh` bypass. See #1043.
115
+
116
+ ### 4A: Senior Architect Analysis
117
+
118
+ Delegate to general-purpose (model: sonnet). Post GitHub comment per issue:
119
+
120
+ ```
121
+ ## 🏛️ Senior Architect Analysis
122
+
123
+ ### 아키텍처 영향
124
+ | 컴포넌트 | 영향 | 위험도 |
125
+ |----------|------|--------|
126
+ | {컴포넌트} | {설명} | {High/Medium/Low} |
127
+
128
+ ### 코드 수준 분석
129
+ {Phase 2 코드베이스 분석의 구체적 file:line 참조}
130
+
131
+ ### 전략적 평가
132
+ - **실현 가능성**: {근거가 포함된 평가}
133
+ - **우선순위 권장**: {P1/P2/P3 및 근거}
134
+
135
+ ### 리스크 및 고려사항
136
+ | 리스크 | 가능성 | 완화 방안 |
137
+ |--------|--------|----------|
138
+ | {리스크} | {High/Medium/Low} | {완화 방안} |
139
+
140
+ **예상 작업량**: {XS/S/M/L/XL}
141
+
142
+ ---
143
+ _🏛️ Senior Architect perspective — `/professor-triage` v2.3.0_
144
+ ```
145
+
146
+ ### 4B: Project Colleague Review
147
+
148
+ Delegate to general-purpose (model: sonnet). Post GitHub comment per issue:
149
+
150
+ ```
151
+ ## 🤝 Project Colleague Review
152
+
153
+ ### 구현 아이디어
154
+ {구체적 코드 위치 및 file:line 참조가 포함된 변경 제안}
155
+
156
+ ### 놓치기 쉬운 세부사항
157
+ - {이름 충돌, 유효성 검사 우회, 경쟁 조건, 엣지 케이스}
158
+
159
+ ### 권장 다음 단계
160
+ 1. {구체적 file/function 참조가 포함된 실행 가능한 단계}
161
+ 2. {실행 가능한 단계}
162
+ 3. {실행 가능한 단계}
163
+
164
+ ---
165
+ _🤝 Project Colleague perspective — `/professor-triage` v2.3.0_
166
+ ```
167
+
168
+ **Note**: Do NOT include a "First Impressions" (첫인상) section — explicitly excluded per user feedback.
169
+
170
+ ### 4C: Professor Synthesis
171
+
172
+ Delegate to general-purpose (model: opus). Requires 4A and 4B results as input. Post GitHub comment per issue:
173
+
174
+ ```
175
+ ## 🎓 Professor Synthesis
176
+
177
+ ### 코드베이스 검증
178
+ | 주장 (Architect/Colleague) | 검증 | 근거 |
179
+ |---------------------------|------|------|
180
+ | {주장} | ✅/⚠️/❌ | {file:line 또는 git 근거} |
181
+
182
+ ### 합의 및 이견
183
+ | 주제 | Architect | Colleague | 판정 |
184
+ |------|-----------|-----------|------|
185
+ | {주제} | {입장} | {입장} | {종합 판단} |
186
+
187
+ ### 우선순위 매트릭스
188
+ | 차원 | 평가 |
189
+ |------|------|
190
+ | 긴급성 | {High/Medium/Low} |
191
+ | 중요성 | {High/Medium/Low} |
192
+ | 규모 | {XS/S/M/L/XL} |
193
+ | 권장 순서 | {배치 내 N/M} |
194
+
195
+ ### 누락된 관점
196
+ {Architect나 Colleague 모두 제기하지 않은 고려사항}
197
+
198
+ ### 실행 로드맵
199
+ | 단계 | 작업 | 파일 | 의존성 |
200
+ |------|------|------|--------|
201
+ | 1 | {작업} | {파일} | — |
202
+ | 2 | {작업} | {파일} | 단계 1 |
203
+
204
+ ### 최종 결론
205
+ {확정적 권장 사항이 포함된 2-3문장 종합}
206
+
207
+ ---
208
+ _🎓 Professor Synthesis — `/professor-triage` v2.3.0_
209
+ ```
210
+
211
+ ### 4D: Issue Triage Comment (MANDATORY)
212
+
213
+ Every analyzed issue MUST receive a triage comment. Skipping breaks the triage audit trail. Delegate to mgr-gitnerd:
214
+
215
+ ```
216
+ ## 🔬 Professor Triage — Codebase Analysis Result
217
+
218
+ **결정**: {Close (Already Resolved) | Close (Not Applicable) | Close (Duplicate of #NNN) | Open — action required | Open — monitoring}
219
+ **근거**: {코드베이스 분석 기반 1-2줄 요약}
220
+ **영향 파일**: {N}개 분석 — {N}✅ {N}⚠️ {N}❌
221
+ **리스크**: {P1/P2/P3} | **규모**: {XS/S/M/L/XL}
222
+ **전체 리포트**: {artifact path}
223
+
224
+ ---
225
+ _`/professor-triage` v2.3.0에 의해 현재 코드베이스 대비 분석됨 — 관련 이슈 {N}개_
226
+ ```
227
+
228
+ ### 4E: Artifact Report
229
+
230
+ Delegate to general-purpose. Path: `.codex/outputs/sessions/YYYY-MM-DD/professor-triage-HHmmss.md`
231
+
232
+ **Sensitive-path compatibility note**: Write `.codex/outputs/` artifacts with the normal file-write path. Use `/tmp/professor-triage-<timestamp>.md` only as a legacy fallback when an older Claude Code runtime still prompts on `.claude/**` or `templates/.claude/**` compatibility paths, then verify the resulting diff.
233
+
234
+ Artifact template:
235
+
236
+ ```
237
+ # Professor Triage リポート — YYYY-MM-DD
238
+
239
+ ## 분석 대상
240
+ | # | 제목 | 라벨 | 생성일 |
241
+ |---|------|------|--------|
242
+
243
+ ## 이슈별 분석
244
+ ### #NNN — title
245
+ - **영향 파일**: N개 분석 — N✅ N⚠️ N❌
246
+ - **아키텍처 영향**: ...
247
+ - **구현 경로**: ...
248
+ - **리스크/우선순위**: P1/P2/P3
249
+ - **규모**: XS/S/M/L/XL
250
+ - **이미 해결됨?**: Yes/No/Partial — 근거
251
+ - **권장 조치**: ...
252
+
253
+ ## 교차 분석
254
+ ### 공통 패턴
255
+ ### 중복/병합 후보
256
+ ### 상충 발견사항 해결
257
+ ### 우선순위 매트릭스
258
+
259
+ ## 다관점 요약
260
+ ### Architect 주요 사항
261
+ ### Colleague 주요 사항
262
+ ### Professor Synthesis 핵심 포인트
263
+
264
+ ## 실행된 조치
265
+ | 이슈 | 조치 | 상태 |
266
+
267
+ ## 보류 중인 조치 (확인 필요)
268
+ ```
269
+
270
+ ### 4F: Comment Verification Gate
271
+
272
+ Before proceeding to Phase 5, verify ALL analyzed issues received all 4 comment types:
273
+
274
+ ```bash
275
+ # For each issue NNN in the batch:
276
+ gh issue view NNN --json comments --jq '.comments | map(select(.body | contains("Professor Triage"))) | length'
277
+ # Must be >= 1 for every issue. If any is 0, go back and post.
278
+
279
+ gh issue view NNN --json comments --jq '.comments | map(select(.body | contains("Senior Architect"))) | length'
280
+ gh issue view NNN --json comments --jq '.comments | map(select(.body | contains("Project Colleague"))) | length'
281
+ gh issue view NNN --json comments --jq '.comments | map(select(.body | contains("Professor Synthesis"))) | length'
282
+ # All must be >= 1.
283
+ ```
284
+
285
+ ## Phase 5: Act
286
+
287
+ Delegate ALL GitHub operations to mgr-gitnerd.
288
+
289
+ ### Automatic (low-risk, reversible)
290
+
291
+ | Condition | Action |
292
+ |-----------|--------|
293
+ | Phase 2 found issue already resolved (with commit evidence) | `gh issue close --reason "completed"` + comment with resolving commit |
294
+ | Cross-analysis concludes "Not Applicable" / "no action needed" | `gh issue close --reason "not planned"` |
295
+ | Cross-analysis detects same-series duplicates | Keep latest, close others + `duplicate` label |
296
+ | All analysis complete | Add `verify-done` label |
297
+ | Priority assigned | Add `P1`/`P2`/`P3` label |
298
+
299
+ ### Confirmation Required (high-risk)
300
+
301
+ Present to user and wait for approval before executing:
302
+
303
+ | Condition | Action | Reason |
304
+ |-----------|--------|--------|
305
+ | Reopen a closed issue | Propose reopen | Unintended notifications |
306
+ | New issue creation needed | Present draft title/body | Noise prevention |
307
+ | Epic/milestone linking | Propose link | Project structure change |
308
+ | Issue body modification | Present edit draft | Respect original author intent |
309
+
310
+ **Ensure `verify-done` label exists**: If not, create with `gh label create "verify-done" --color "0E8A16"`.
311
+
312
+ ## Phase Notes Summary
313
+
314
+ | Phase | Owner | Model | R010 Exception? |
315
+ |-------|-------|-------|----------------|
316
+ | 1 | Orchestrator | — | Yes (read-only fetch) |
317
+ | 2 | Explore agents | haiku | No (delegated) |
318
+ | 3 | Orchestrator (opus for >15 issues) | sonnet/opus | Yes (read-only analysis) |
319
+ | 4A/4B | general-purpose | sonnet | No (delegated) |
320
+ | 4C | general-purpose | opus | No (delegated) |
321
+ | 4D | mgr-gitnerd | — | No (delegated) |
322
+ | 4E | general-purpose | — | No (delegated) |
323
+ | 4F | Orchestrator | — | Yes (verification read-only) |
324
+ | 5 | mgr-gitnerd | — | No (delegated) |
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.4.15",
2
+ "version": "0.5.0",
3
3
  "requiresCC": ">=2.1.121",
4
4
  "claudeCode": {
5
5
  "minimumVersion": "2.1.121",
@@ -23,13 +23,13 @@
23
23
  "name": "skills",
24
24
  "path": ".agents/skills",
25
25
  "description": "Reusable skill modules (project-scoped repo skills)",
26
- "files": 118
26
+ "files": 119
27
27
  },
28
28
  {
29
29
  "name": "guides",
30
30
  "path": "guides",
31
31
  "description": "Reference documentation",
32
- "files": 47
32
+ "files": 48
33
33
  },
34
34
  {
35
35
  "name": "hooks",
@@ -51,7 +51,19 @@ steps:
51
51
  description: Multi-angle release quality verification
52
52
 
53
53
  - name: release
54
- prompt: "Create release branch and pull request"
54
+ prompt: |
55
+ Create release branch and pull request.
56
+
57
+ Before creating `release/v*`, check whether a local branch named exactly
58
+ `release` exists. Git stores refs as files/directories, so
59
+ `refs/heads/release` blocks `refs/heads/release/vX.Y.Z`.
60
+
61
+ Required preflight:
62
+ - `git branch --list release --format='%(refname:short)'`
63
+ - If present, prove it is merged or backed up before renaming/removing it.
64
+ - Prefer `git branch -m release releases-tracking` when preservation is
65
+ needed; do not run `git branch -D release` without explicit approval.
66
+ - Re-run the branch-list check before `git switch -c release/vX.Y.Z`.
55
67
  description: Create release branch and pull request
56
68
 
57
69
  - name: publish