oh-my-customcode 0.68.2 → 0.70.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.
@@ -1,24 +1,24 @@
1
1
  ---
2
2
  name: professor-triage
3
- description: Cross-analyze GitHub issues with omc_issue_analyzer comments, verify against codebase, and perform automated triage
3
+ description: Analyze GitHub issues against current codebase and perform automated triage with priority assessment
4
4
  scope: harness
5
- version: 1.0.0
5
+ version: 2.1.0
6
6
  user-invocable: true
7
7
  effort: high
8
8
  context: fork
9
9
  argument-hint: "[issue-numbers...] [--label <label>] [--state <state>] [--since <date>]"
10
10
  ---
11
11
 
12
- # /professor-triage — Cross-Analysis Issue Triage
12
+ # /professor-triage — Codebase-Driven Issue Triage
13
13
 
14
14
  ## Purpose
15
15
 
16
- Cross-analyzes GitHub issues containing `omc_issue_analyzer` comments (Architect, Colleague, Professor analyses). Verifies claims against the current codebase, produces a cross-analysis report, and performs automated triage actions.
16
+ Analyzes GitHub issues directly against the current codebase. For each issue, searches relevant code, assesses impact and blast radius, determines whether the issue has already been resolved, and performs automated triage with priority and size estimation. Produces a cross-analysis report and executes low-risk triage actions automatically.
17
17
 
18
18
  ## Usage
19
19
 
20
20
  ```
21
- /professor-triage # Default: --label professor --state open
21
+ /professor-triage # Default: --state open (excludes verify-done)
22
22
  /professor-triage 587 589 590 591 592 # Direct issue numbers
23
23
  /professor-triage --label codex-release # Custom label filter
24
24
  /professor-triage --since 2026-03-20 # Date filter
@@ -31,7 +31,7 @@ Cross-analyzes GitHub issues containing `omc_issue_analyzer` comments (Architect
31
31
  1. Parse arguments to determine target issues:
32
32
  - If issue numbers provided: use those directly
33
33
  - If `--label` provided: `gh issue list --label <label> --state <state> --json number`
34
- - Default: `gh issue list --label professor --state open --json number`
34
+ - Default: `gh issue list --state open --json number` + exclude issues with `verify-done` label
35
35
  - If `--since` provided: add `--search "created:>YYYY-MM-DD"` filter
36
36
 
37
37
  2. For each issue, fetch full details:
@@ -41,62 +41,50 @@ gh issue view NNN --json number,title,body,comments,labels,createdAt
41
41
 
42
42
  3. For batches >20 issues, prefer `gh api graphql` for batch fetching to respect GitHub API rate limits (5000/hour authenticated).
43
43
 
44
- 4. If `--label` returns 0 results, check label existence via `gh label list`. Report if label missing.
44
+ 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."
45
45
 
46
- ### Phase 2: Parse
46
+ ### Phase 2: Codebase Analysis
47
47
 
48
- Extract structured data from omc_issue_analyzer comments by matching these headers:
48
+ For each issue, perform direct codebase analysis:
49
49
 
50
- | Header | Section |
51
- |--------|---------|
52
- | `## 🏛️ Senior Architect Analysis` | Architecture impact, code-level analysis, strategy, risk assessment |
53
- | `## 🤝 Project Colleague Review` | Implementation ideas, blind spots, next steps |
54
- | `## 🎓 Professor Synthesis` | Verification results, consensus, disagreements, priority matrix, missed perspectives, roadmap |
50
+ **2A: Context Extraction** From issue title and body, extract:
51
+ - File paths mentioned (regex: backtick-wrapped paths, `:\d+` line refs, `(L\d+)`, `(lines \d+-\d+)`)
52
+ - Error messages or stack traces
53
+ - Keywords (function names, class names, config keys, module names)
54
+ - Component areas mentioned (e.g., "auth", "CI", "hooks")
55
55
 
56
- For each issue, extract:
57
- - **File paths and line references** mentioned in any analysis (regex: backtick-wrapped paths, `(L\d+)`, `(lines \d+-\d+)`, `:\d+` suffixes)
58
- - **Priority/size assessments** from Professor synthesis
59
- - **Recommended actions** from all three analyses
60
- - **Risk levels** and breaking change assessments
61
- - **Consensus points** where all 3 analyses agree
62
- - **Disagreement points** where analyses differ
56
+ **2B: Codebase Search** — Delegate to Explore agent(s):
57
+ - Search for extracted keywords using Grep across the codebase
58
+ - Find related files using Glob patterns derived from keywords
59
+ - For explicitly mentioned files, verify existence and read relevant sections
60
+ - For error messages, trace to source location
61
+ - Map import/dependency relationships for affected files
63
62
 
64
- If an issue has no omc_issue_analyzer comments (no matching headers), skip with warning and include in report as "no analysis available".
63
+ **2C: Impact Assessment** For each relevant file found:
64
+ - Read current state of the code
65
+ - Check recent changes: `git log --since=<issue_created_date> --oneline -- <file>`
66
+ - Determine if the issue has already been addressed by recent commits
67
+ - Assess blast radius (what depends on this code, what does this code depend on)
65
68
 
66
- ### Phase 3: Verify
69
+ **2D: Structured Finding** — Produce per-issue analysis:
67
70
 
68
- Verify ALL file paths and line references extracted in Phase 2 against the current codebase.
69
-
70
- **Verification levels:**
71
-
72
- | Level | Check | Tool |
73
- |-------|-------|------|
74
- | Existence | File currently exists | Glob |
75
- | Content | Referenced line contains expected code | Read |
76
- | Freshness | Changed since comment was written | `git log --since=<comment_date> -- <file>` |
77
-
78
- **Result classification:**
79
-
80
- | Status | Meaning | Marker |
81
- |--------|---------|--------|
82
- | `verified` | File exists + content matches | ✅ |
83
- | `stale-still-valid` | File changed but recommendation still applies | ⚠️ |
84
- | `stale-invalidated` | File changed and recommendation is moot | ⚠️❌ |
85
- | `missing` | File/path not found | ❌ |
86
- | `unchecked` | No specific path to verify | ➖ |
87
-
88
- **No limits**: All mentioned file paths are verified exhaustively. Quality over token cost.
89
-
90
- **Shared verification**: If the same file is mentioned across multiple issues, verify once and share the result.
71
+ | Field | Content |
72
+ |-------|---------|
73
+ | Affected files | List with status: `exists` ✅ / `missing` ❌ / `changed-since-issue` ⚠️ |
74
+ | Architecture impact | Breaking changes, dependency effects, scope of change |
75
+ | Implementation path | Concrete steps with file:line references from current codebase |
76
+ | Risk level | P1 (critical/security/breaking) / P2 (moderate/compat) / P3 (nice-to-have) |
77
+ | Size estimate | XS (<1h) / S (1-3h) / M (3-8h) / L (1-3d) / XL (>3d) |
78
+ | Already resolved? | Yes / No / Partial with git evidence (commit hash, PR number) |
91
79
 
92
80
  **Parallelization (R009/R018):**
93
- - ≤20 unique file references → single Explore agent
94
- - 21-80 file references 2-4 parallel Explore agents (R009)
95
- - 80+ file references or 3+ verification agents needed → Agent Teams per R018
81
+ - 1-3 issues → single Explore agent per issue (parallel per R009)
82
+ - 4-10 issues → parallel Explore agents, max 4 concurrent (R009)
83
+ - 10+ issues or 3+ Explore agents needed → Agent Teams per R018
96
84
 
97
- **Delegation**: Delegate verification to Explore agent(s). Orchestrator collects results.
85
+ **Delegation**: All codebase search delegated to Explore agent(s) with `model: haiku`. Orchestrator collects and synthesizes results.
98
86
 
99
- ### Phase 4: Cross-Analyze
87
+ ### Phase 3: Cross-Analyze
100
88
 
101
89
  **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.
102
90
 
@@ -107,24 +95,137 @@ Perform deep cross-analysis with full context from all issues:
107
95
  - Same release series (e.g., alpha.3/5/6)
108
96
  - Same upstream dependency
109
97
  - Same affected component
110
- 3. **Conflicting recommendations** — Where analyses disagree across issues, resolve based on:
111
- - Codebase verification evidence (Phase 3 results)
112
- - Specificity (concrete code-level analysis > abstract strategy)
113
- - Recency (newer analyses > older ones)
98
+ 3. **Conflicting findings** — Where findings disagree across issues, resolve based on:
99
+ - Codebase evidence (Phase 2 results)
100
+ - Specificity (concrete code-level finding > abstract observation)
101
+ - Recency (newer findings > older ones)
114
102
  4. **Priority matrix** — Unified priority ranking:
115
103
  - P1: Breaking changes, security issues, blocking bugs
116
104
  - P2: Documentation gaps, compatibility updates, medium-risk items
117
105
  - P3: Nice-to-have improvements, future considerations
118
106
  5. **Action determination** — Per-issue decision:
107
+ - `Close (Already Resolved)`: Phase 2 found issue already fixed by recent commits
119
108
  - `Close (Not Applicable)`: Issue is irrelevant (internal dependency tag, no impact)
120
109
  - `Close (Duplicate of #NNN)`: Superseded by another issue in the batch
121
110
  - `Open — action required`: Real work needed
122
111
  - `Open — monitoring`: Waiting for external trigger (e.g., stable release)
123
112
  - `New issue needed`: Cross-analysis discovered issue not yet tracked
124
113
 
125
- ### Phase 5: Output
114
+ ### Phase 4: Multi-Perspective Analysis & Output
115
+
116
+ For each analyzed issue, generate multi-perspective analysis comments and artifacts.
117
+
118
+ **Parallelization (R009):**
119
+ - Phase 4A + 4B: parallel (independent perspectives)
120
+ - Phase 4C: after 4A + 4B complete (synthesis requires both inputs)
121
+ - Phase 4D + 4E: parallel (independent outputs, both depend on 4C)
122
+ - Phase 4F: after all above (verification gate)
123
+
124
+ **4A: 🏛️ Senior Architect Analysis** — Delegate to arch-documenter (model: sonnet) to post GitHub comment:
125
+
126
+ ```
127
+ ## 🏛️ Senior Architect Analysis
128
+
129
+ ### Architecture Impact
130
+ | Component | Impact | Risk |
131
+ |-----------|--------|------|
132
+ | {component} | {description} | {High/Medium/Low} |
133
+
134
+ ### Code-Level Analysis
135
+ {Specific file:line references from Phase 2 codebase analysis}
136
+
137
+ ### Strategic Assessment
138
+ - **Feasibility**: {assessment with evidence}
139
+ - **Priority recommendation**: {P1/P2/P3 with rationale}
140
+
141
+ ### Risk & Considerations
142
+ | Risk | Likelihood | Mitigation |
143
+ |------|-----------|------------|
144
+ | {risk} | {High/Medium/Low} | {mitigation} |
145
+
146
+ **Estimated effort**: {XS/S/M/L/XL}
147
+
148
+ ---
149
+ _🏛️ Senior Architect perspective — `/professor-triage` v2.1.0_
150
+ ```
151
+
152
+ **4B: 🤝 Project Colleague Review** — Delegate to arch-documenter (model: sonnet) to post GitHub comment:
153
+
154
+ ```
155
+ ## 🤝 Project Colleague Review
156
+
157
+ ### Implementation Ideas
158
+ {Concrete code locations and change suggestions with file:line references}
159
+
160
+ ### Easy-to-Miss Details
161
+ - {Name collisions, validation bypasses, race conditions, edge cases}
162
+
163
+ ### Suggested Next Steps
164
+ 1. {Actionable step with specific file/function reference}
165
+ 2. {Actionable step}
166
+ 3. {Actionable step}
167
+
168
+ ---
169
+ _🤝 Project Colleague perspective — `/professor-triage` v2.1.0_
170
+ ```
171
+
172
+ Note: Do NOT include a "First Impressions" (첫인상) section in the Colleague Review — this was explicitly excluded per user feedback.
173
+
174
+ **4C: 🎓 Professor Synthesis** — Delegate to arch-documenter (model: opus) to post GitHub comment. This phase requires 4A and 4B results as input:
126
175
 
127
- **5A: Artifact report** — Delegate to arch-documenter to write:
176
+ ```
177
+ ## 🎓 Professor Synthesis
178
+
179
+ ### Codebase Verification
180
+ | Claim (from Architect/Colleague) | Verified | Evidence |
181
+ |----------------------------------|----------|----------|
182
+ | {claim} | ✅/⚠️/❌ | {file:line or git evidence} |
183
+
184
+ ### Consensus & Divergence
185
+ | Topic | Architect | Colleague | Verdict |
186
+ |-------|-----------|-----------|---------|
187
+ | {topic} | {position} | {position} | {synthesized judgment} |
188
+
189
+ ### Priority Matrix
190
+ | Dimension | Assessment |
191
+ |-----------|-----------|
192
+ | Urgency | {High/Medium/Low} |
193
+ | Importance | {High/Medium/Low} |
194
+ | Size | {XS/S/M/L/XL} |
195
+ | Recommended order | {N of M in batch} |
196
+
197
+ ### Missed Perspectives
198
+ {Considerations neither Architect nor Colleague raised}
199
+
200
+ ### Execution Roadmap
201
+ | Phase | Task | Files | Depends on |
202
+ |-------|------|-------|-----------|
203
+ | 1 | {task} | {files} | — |
204
+ | 2 | {task} | {files} | Phase 1 |
205
+
206
+ ### Final Conclusion
207
+ {2-3 sentence synthesis with definitive recommendation}
208
+
209
+ ---
210
+ _🎓 Professor Synthesis — `/professor-triage` v2.1.0_
211
+ ```
212
+
213
+ **4D: Issue Triage Comment (MANDATORY)** — Every analyzed issue MUST receive a triage comment. This is not optional — even for issues created in the same session or with existing analysis. Skipping comments breaks the triage audit trail. Delegate to mgr-gitnerd to post on each analyzed issue:
214
+
215
+ ```
216
+ ## 🔬 Professor Triage — Codebase Analysis Result
217
+
218
+ **Decision**: {Close (Already Resolved) | Close (Not Applicable) | Close (Duplicate of #NNN) | Open — action required | Open — monitoring}
219
+ **Rationale**: {1-2 line summary based on codebase findings}
220
+ **Affected files**: {N} analyzed — {N}✅ {N}⚠️ {N}❌
221
+ **Risk**: {P1/P2/P3} | **Size**: {XS/S/M/L/XL}
222
+ **Full report**: {artifact path}
223
+
224
+ ---
225
+ _Analyzed by `/professor-triage` v2.1.0 against current codebase with {N} related issues_
226
+ ```
227
+
228
+ **4E: Artifact Report** — Delegate to arch-documenter to write:
128
229
 
129
230
  Path: `.claude/outputs/sessions/YYYY-MM-DD/professor-triage-HHmmss.md`
130
231
 
@@ -135,51 +236,52 @@ Template:
135
236
  # Professor Triage Report — YYYY-MM-DD
136
237
 
137
238
  ## Analysis Target
138
- | # | Title | Labels | Analysis Comments |
139
- |---|-------|--------|-------------------|
239
+ | # | Title | Labels | Created |
240
+ |---|-------|--------|---------|
140
241
 
141
- ## Per-Issue Summary
242
+ ## Per-Issue Analysis
142
243
  ### #NNN — title
143
- - Core conclusion:
144
- - Verification status: N✅ N⚠️ N❌
145
- - Recommended action:
244
+ - **Affected files**: N analyzed — N✅ N⚠️ N❌
245
+ - **Architecture impact**: ...
246
+ - **Implementation path**: ...
247
+ - **Risk/Priority**: P1/P2/P3
248
+ - **Size**: XS/S/M/L/XL
249
+ - **Already resolved?**: Yes/No/Partial — evidence
250
+ - **Recommended action**: ...
146
251
 
147
252
  ## Cross-Analysis
148
253
  ### Common Patterns
149
254
  ### Duplicate/Merge Candidates
150
- ### Conflicting Recommendations Resolution
255
+ ### Conflicting Findings Resolution
151
256
  ### Priority Matrix
152
257
 
258
+ ## Multi-Perspective Summary
259
+ ### Architect Highlights
260
+ ### Colleague Highlights
261
+ ### Professor Synthesis Key Points
262
+
153
263
  ## Executed Actions
154
264
  | Issue | Action | Status |
155
265
 
156
266
  ## Pending Actions (Confirmation Required)
157
267
  ```
158
268
 
159
- **5B: Issue comments (MANDATORY)** Every analyzed issue MUST receive a triage comment. This is not optional — even for issues created in the same session or with existing analysis. Skipping comments breaks the triage audit trail. Delegate to mgr-gitnerd to post on each analyzed issue:
160
-
161
- ```
162
- ## 🔬 Professor Triage — Cross-Analysis Result
269
+ ### Phase 4F: Comment Verification Gate
163
270
 
164
- **Decision**: {Close (Not Applicable) | Close (Duplicate of #NNN) | Open action required}
165
- **Rationale**: {1-2 line summary}
166
- **Verification**: {N}✅ {N}⚠️ {N}❌
167
- **Full report**: {artifact path}
168
-
169
- ---
170
- _Cross-analyzed by `/professor-triage` with {N} related issues_
171
- ```
172
-
173
- ### Phase 5C: Comment Verification Gate
174
-
175
- Before proceeding to Phase 6, verify ALL analyzed issues received comments:
271
+ Before proceeding to Phase 5, verify ALL analyzed issues received the full set of comments (Architect + Colleague + Professor Synthesis + Triage):
176
272
  ```bash
177
273
  # For each issue NNN in the batch:
178
274
  gh issue view NNN --json comments --jq '.comments | map(select(.body | contains("Professor Triage"))) | length'
179
- # Must be >= 1 for every issue. If any is 0, Phase 5B was skipped — go back and post.
275
+ # Must be >= 1 for every issue. If any is 0, go back and post.
276
+
277
+ # Also verify multi-perspective comments:
278
+ gh issue view NNN --json comments --jq '.comments | map(select(.body | contains("Senior Architect"))) | length'
279
+ gh issue view NNN --json comments --jq '.comments | map(select(.body | contains("Project Colleague"))) | length'
280
+ gh issue view NNN --json comments --jq '.comments | map(select(.body | contains("Professor Synthesis"))) | length'
281
+ # All must be >= 1. If any is 0, the corresponding Phase 4A/4B/4C was skipped — go back and post.
180
282
  ```
181
283
 
182
- ### Phase 6: Act
284
+ ### Phase 5: Act
183
285
 
184
286
  Delegate ALL GitHub operations to mgr-gitnerd.
185
287
 
@@ -187,10 +289,11 @@ Delegate ALL GitHub operations to mgr-gitnerd.
187
289
 
188
290
  | Condition | Action |
189
291
  |-----------|--------|
190
- | Professor synthesis concludes "Not Applicable" / "no action needed" | `gh issue close --reason "not planned"` |
292
+ | Phase 2 found issue already resolved (with commit evidence) | `gh issue close --reason "completed"` + comment with resolving commit |
293
+ | Cross-analysis concludes "Not Applicable" / "no action needed" | `gh issue close --reason "not planned"` |
191
294
  | Cross-analysis detects same-series duplicates | Keep latest, close others + `duplicate` label |
192
295
  | All analysis complete | Add `verify-done` label |
193
- | Professor synthesis assigns priority | Add `P1`/`P2`/`P3` label |
296
+ | Priority assigned | Add `P1`/`P2`/`P3` label |
194
297
 
195
298
  **Confirmation required (high-risk):**
196
299
 
@@ -207,8 +310,12 @@ Present to user and wait for approval before executing:
207
310
 
208
311
  ## Notes
209
312
 
210
- - Phase 2 agents: not needed (orchestrator parses text directly)
211
- - Phase 3 agents: `Explore` with `model: haiku` for file verification
212
- - Phase 4: orchestrator directly (read-only, R010 exception)
213
- - Phase 5: `arch-documenter` for artifact, `mgr-gitnerd` for comments
214
- - Phase 6: `mgr-gitnerd` for all GitHub ops
313
+ - Phase 1: Orchestrator fetches issues directly (no agent needed)
314
+ - Phase 2: Explore agents with `model: haiku` for codebase search; orchestrator synthesizes findings
315
+ - Phase 3: Orchestrator directly (read-only, R010 exception); opus agent for >15 issues
316
+ - Phase 4A/4B: `arch-documenter` (sonnet) for Architect/Colleague analysis comments (parallel)
317
+ - Phase 4C: `arch-documenter` (opus) for Professor Synthesis comment (requires 4A+4B)
318
+ - Phase 4D: `mgr-gitnerd` for triage comment; Phase 4E: `arch-documenter` for artifact report (parallel)
319
+ - Phase 4F: Verification gate for all 4 comment types
320
+ - Phase 5: `mgr-gitnerd` for all GitHub operations
321
+ - No external dependencies (omc_issue_analyzer removed in v2.0.0, multi-perspective analysis restored in v2.1.0)
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.68.2",
2
+ "version": "0.70.0",
3
3
  "lastUpdated": "2026-03-24T00:00:00.000Z",
4
4
  "components": [
5
5
  {
@@ -14,7 +14,7 @@ steps:
14
14
 
15
15
  - name: triage
16
16
  skill: professor-triage
17
- description: Cross-analyze verify-done issues with omc_issue_analyzer comments
17
+ description: Analyze verify-done issues against current codebase and perform automated triage
18
18
 
19
19
  - name: plan
20
20
  skill: release-plan