oh-my-customcode 0.48.1 → 0.48.3
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 +3 -3
- package/dist/cli/index.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/templates/.claude/skills/professor-triage/SKILL.md +205 -0
- package/templates/manifest.json +2 -2
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
**[한국어 문서 (Korean)](./README_ko.md)**
|
|
15
15
|
|
|
16
|
-
45 agents.
|
|
16
|
+
45 agents. 85 skills. 21 rules. One command.
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
19
|
npm install -g oh-my-customcode && cd your-project && omcustom init
|
|
@@ -138,7 +138,7 @@ Each agent declares its tools, model, memory scope, and limitations in YAML fron
|
|
|
138
138
|
|
|
139
139
|
---
|
|
140
140
|
|
|
141
|
-
### Skills (
|
|
141
|
+
### Skills (85)
|
|
142
142
|
|
|
143
143
|
| Category | Count | Includes |
|
|
144
144
|
|----------|-------|----------|
|
|
@@ -272,7 +272,7 @@ your-project/
|
|
|
272
272
|
├── CLAUDE.md # Entry point
|
|
273
273
|
├── .claude/
|
|
274
274
|
│ ├── agents/ # 45 agent definitions
|
|
275
|
-
│ ├── skills/ #
|
|
275
|
+
│ ├── skills/ # 85 skill modules
|
|
276
276
|
│ ├── rules/ # 21 governance rules (R000-R021)
|
|
277
277
|
│ ├── hooks/ # 15 lifecycle hook scripts
|
|
278
278
|
│ ├── schemas/ # Tool input validation schemas
|
package/dist/cli/index.js
CHANGED
|
@@ -9323,7 +9323,7 @@ var init_package = __esm(() => {
|
|
|
9323
9323
|
package_default = {
|
|
9324
9324
|
name: "oh-my-customcode",
|
|
9325
9325
|
workspaces: ["packages/*"],
|
|
9326
|
-
version: "0.48.
|
|
9326
|
+
version: "0.48.3",
|
|
9327
9327
|
description: "Batteries-included agent harness for Claude Code",
|
|
9328
9328
|
type: "module",
|
|
9329
9329
|
bin: {
|
package/dist/index.js
CHANGED
|
@@ -1642,7 +1642,7 @@ import { join as join6 } from "node:path";
|
|
|
1642
1642
|
var package_default = {
|
|
1643
1643
|
name: "oh-my-customcode",
|
|
1644
1644
|
workspaces: ["packages/*"],
|
|
1645
|
-
version: "0.48.
|
|
1645
|
+
version: "0.48.3",
|
|
1646
1646
|
description: "Batteries-included agent harness for Claude Code",
|
|
1647
1647
|
type: "module",
|
|
1648
1648
|
bin: {
|
package/package.json
CHANGED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: professor-triage
|
|
3
|
+
description: Cross-analyze GitHub issues with omc_issue_analyzer comments, verify against codebase, and perform automated triage
|
|
4
|
+
scope: harness
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
user-invocable: true
|
|
7
|
+
effort: high
|
|
8
|
+
context: fork
|
|
9
|
+
argument-hint: "[issue-numbers...] [--label <label>] [--state <state>] [--since <date>]"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /professor-triage — Cross-Analysis Issue Triage
|
|
13
|
+
|
|
14
|
+
## Purpose
|
|
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.
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
/professor-triage # Default: --label professor --state open
|
|
22
|
+
/professor-triage 587 589 590 591 592 # Direct issue numbers
|
|
23
|
+
/professor-triage --label codex-release # Custom label filter
|
|
24
|
+
/professor-triage --since 2026-03-20 # Date filter
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Workflow
|
|
28
|
+
|
|
29
|
+
### Phase 1: Gather
|
|
30
|
+
|
|
31
|
+
1. Parse arguments to determine target issues:
|
|
32
|
+
- If issue numbers provided: use those directly
|
|
33
|
+
- If `--label` provided: `gh issue list --label <label> --state <state> --json number`
|
|
34
|
+
- Default: `gh issue list --label professor --state open --json number`
|
|
35
|
+
- If `--since` provided: add `--search "created:>YYYY-MM-DD"` filter
|
|
36
|
+
|
|
37
|
+
2. For each issue, fetch full details:
|
|
38
|
+
```bash
|
|
39
|
+
gh issue view NNN --json number,title,body,comments,labels,createdAt
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
3. For batches >20 issues, prefer `gh api graphql` for batch fetching to respect GitHub API rate limits (5000/hour authenticated).
|
|
43
|
+
|
|
44
|
+
4. If `--label` returns 0 results, check label existence via `gh label list`. Report if label missing.
|
|
45
|
+
|
|
46
|
+
### Phase 2: Parse
|
|
47
|
+
|
|
48
|
+
Extract structured data from omc_issue_analyzer comments by matching these headers:
|
|
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 |
|
|
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
|
|
63
|
+
|
|
64
|
+
If an issue has no omc_issue_analyzer comments (no matching headers), skip with warning and include in report as "no analysis available".
|
|
65
|
+
|
|
66
|
+
### Phase 3: Verify
|
|
67
|
+
|
|
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.
|
|
91
|
+
|
|
92
|
+
**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
|
|
96
|
+
|
|
97
|
+
**Delegation**: Delegate verification to Explore agent(s). Orchestrator collects results.
|
|
98
|
+
|
|
99
|
+
### Phase 4: Cross-Analyze
|
|
100
|
+
|
|
101
|
+
**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
|
+
|
|
103
|
+
Perform deep cross-analysis with full context from all issues:
|
|
104
|
+
|
|
105
|
+
1. **Common patterns** — Identify findings that appear across multiple issues (e.g., same file referenced, same recommendation theme)
|
|
106
|
+
2. **Duplicate/merge candidates** — Detect issues tracking the same underlying change:
|
|
107
|
+
- Same release series (e.g., alpha.3/5/6)
|
|
108
|
+
- Same upstream dependency
|
|
109
|
+
- 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)
|
|
114
|
+
4. **Priority matrix** — Unified priority ranking:
|
|
115
|
+
- P1: Breaking changes, security issues, blocking bugs
|
|
116
|
+
- P2: Documentation gaps, compatibility updates, medium-risk items
|
|
117
|
+
- P3: Nice-to-have improvements, future considerations
|
|
118
|
+
5. **Action determination** — Per-issue decision:
|
|
119
|
+
- `Close (Not Applicable)`: Issue is irrelevant (internal dependency tag, no impact)
|
|
120
|
+
- `Close (Duplicate of #NNN)`: Superseded by another issue in the batch
|
|
121
|
+
- `Open — action required`: Real work needed
|
|
122
|
+
- `Open — monitoring`: Waiting for external trigger (e.g., stable release)
|
|
123
|
+
- `New issue needed`: Cross-analysis discovered issue not yet tracked
|
|
124
|
+
|
|
125
|
+
### Phase 5: Output
|
|
126
|
+
|
|
127
|
+
**5A: Artifact report** — Delegate to arch-documenter to write:
|
|
128
|
+
|
|
129
|
+
Path: `.claude/outputs/sessions/YYYY-MM-DD/professor-triage-HHmmss.md`
|
|
130
|
+
|
|
131
|
+
Timestamps use local machine time (consistent with other artifact skills).
|
|
132
|
+
|
|
133
|
+
Template:
|
|
134
|
+
```
|
|
135
|
+
# Professor Triage Report — YYYY-MM-DD
|
|
136
|
+
|
|
137
|
+
## Analysis Target
|
|
138
|
+
| # | Title | Labels | Analysis Comments |
|
|
139
|
+
|---|-------|--------|-------------------|
|
|
140
|
+
|
|
141
|
+
## Per-Issue Summary
|
|
142
|
+
### #NNN — title
|
|
143
|
+
- Core conclusion:
|
|
144
|
+
- Verification status: N✅ N⚠️ N❌
|
|
145
|
+
- Recommended action:
|
|
146
|
+
|
|
147
|
+
## Cross-Analysis
|
|
148
|
+
### Common Patterns
|
|
149
|
+
### Duplicate/Merge Candidates
|
|
150
|
+
### Conflicting Recommendations Resolution
|
|
151
|
+
### Priority Matrix
|
|
152
|
+
|
|
153
|
+
## Executed Actions
|
|
154
|
+
| Issue | Action | Status |
|
|
155
|
+
|
|
156
|
+
## Pending Actions (Confirmation Required)
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**5B: Issue comments** — Delegate to mgr-gitnerd to post on each analyzed issue:
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
## 🔬 Professor Triage — Cross-Analysis Result
|
|
163
|
+
|
|
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 6: Act
|
|
174
|
+
|
|
175
|
+
Delegate ALL GitHub operations to mgr-gitnerd.
|
|
176
|
+
|
|
177
|
+
**Automatic (low-risk, reversible):**
|
|
178
|
+
|
|
179
|
+
| Condition | Action |
|
|
180
|
+
|-----------|--------|
|
|
181
|
+
| Professor synthesis concludes "Not Applicable" / "no action needed" | `gh issue close --reason "not planned"` |
|
|
182
|
+
| Cross-analysis detects same-series duplicates | Keep latest, close others + `duplicate` label |
|
|
183
|
+
| All analysis complete | Add `verify-done` label |
|
|
184
|
+
| Professor synthesis assigns priority | Add `P1`/`P2`/`P3` label |
|
|
185
|
+
|
|
186
|
+
**Confirmation required (high-risk):**
|
|
187
|
+
|
|
188
|
+
Present to user and wait for approval before executing:
|
|
189
|
+
|
|
190
|
+
| Condition | Action | Reason |
|
|
191
|
+
|-----------|--------|--------|
|
|
192
|
+
| Reopen a closed issue | Propose reopen | Unintended notifications |
|
|
193
|
+
| New issue creation needed | Present draft title/body | Noise prevention |
|
|
194
|
+
| Epic/milestone linking | Propose link | Project structure change |
|
|
195
|
+
| Issue body modification | Present edit draft | Respect original author intent |
|
|
196
|
+
|
|
197
|
+
**Ensure `verify-done` label exists**: If not, create with `gh label create "verify-done" --color "0E8A16"`.
|
|
198
|
+
|
|
199
|
+
## Notes
|
|
200
|
+
|
|
201
|
+
- Phase 2 agents: not needed (orchestrator parses text directly)
|
|
202
|
+
- Phase 3 agents: `Explore` with `model: haiku` for file verification
|
|
203
|
+
- Phase 4: orchestrator directly (read-only, R010 exception)
|
|
204
|
+
- Phase 5: `arch-documenter` for artifact, `mgr-gitnerd` for comments
|
|
205
|
+
- Phase 6: `mgr-gitnerd` for all GitHub ops
|
package/templates/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.48.
|
|
2
|
+
"version": "0.48.3",
|
|
3
3
|
"lastUpdated": "2026-03-16T00:00:00.000Z",
|
|
4
4
|
"components": [
|
|
5
5
|
{
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"name": "skills",
|
|
19
19
|
"path": ".claude/skills",
|
|
20
20
|
"description": "Reusable skill modules (includes slash commands)",
|
|
21
|
-
"files":
|
|
21
|
+
"files": 85
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"name": "guides",
|