oh-my-customcode 0.48.0 → 0.48.2

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 CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  **[한국어 문서 (Korean)](./README_ko.md)**
15
15
 
16
- 45 agents. 84 skills. 21 rules. One command.
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 (84)
141
+ ### Skills (85)
142
142
 
143
143
  | Category | Count | Includes |
144
144
  |----------|-------|----------|
@@ -226,7 +226,7 @@ Key rules: R010 (orchestrator never writes files), R009 (parallel execution mand
226
226
 
227
227
  ---
228
228
 
229
- ### Guides (28)
229
+ ### Guides (29)
230
230
 
231
231
  Reference documentation covering best practices, architecture decisions, and integration patterns. Located in `guides/` at project root, covering topics from agent design to CI/CD to observability.
232
232
 
@@ -272,14 +272,14 @@ your-project/
272
272
  ├── CLAUDE.md # Entry point
273
273
  ├── .claude/
274
274
  │ ├── agents/ # 45 agent definitions
275
- │ ├── skills/ # 84 skill modules
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
279
279
  │ ├── specs/ # Extracted canonical specs
280
280
  │ ├── contexts/ # 4 shared context files
281
281
  │ └── ontology/ # Knowledge graph for RAG
282
- └── guides/ # 28 reference documents
282
+ └── guides/ # 29 reference documents
283
283
  ```
284
284
 
285
285
  ---
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.0",
9326
+ version: "0.48.2",
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.0",
1645
+ version: "0.48.2",
1646
1646
  description: "Batteries-included agent harness for Claude Code",
1647
1647
  type: "module",
1648
1648
  bin: {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "oh-my-customcode",
3
3
  "workspaces": ["packages/*"],
4
- "version": "0.48.0",
4
+ "version": "0.48.2",
5
5
  "description": "Batteries-included agent harness for Claude Code",
6
6
  "type": "module",
7
7
  "bin": {
@@ -2,7 +2,7 @@
2
2
  name: deep-verify
3
3
  description: Multi-angle release quality verification using parallel expert review teams
4
4
  scope: core
5
- version: 1.0.0
5
+ version: 1.1.0
6
6
  user-invocable: true
7
7
  effort: high
8
8
  ---
@@ -28,13 +28,15 @@ If no argument, verifies current branch against its base (usually `develop`).
28
28
  - Run test suite, lint, and type check
29
29
  - Collect results as baseline
30
30
 
31
- ### Round 2: Parallel Expert Review (4 agents)
32
- Spawn 4 parallel review agents, each with a different focus:
31
+ ### Round 2: Parallel Expert Review (6 agents)
32
+ Spawn 6 parallel review agents, each with a different focus:
33
33
 
34
34
  1. **Correctness Reviewer** — Logic errors, edge cases, off-by-one, null handling
35
35
  2. **Security Reviewer** — Injection, auth bypass, data exposure, OWASP top 10
36
36
  3. **Performance Reviewer** — O(n^2) loops, unbounded queries, memory leaks, missing indexes
37
37
  4. **Integration Reviewer** — API contract breaks, migration safety, cross-module side effects
38
+ 5. **Philosophy Reviewer** — Project concept/metaphor alignment, separation of concerns (R006), orchestrator rules (R010), advisory-first enforcement (R021), compilation metaphor integrity
39
+ 6. **Regression & Performance Reviewer** — Feature regression risk, API contract preservation, query performance impact, index effectiveness, algorithm complexity at realistic scale
38
40
 
39
41
  Each agent receives the full diff and returns findings as structured JSON:
40
42
  ```json
@@ -67,6 +69,15 @@ Each agent receives the full diff and returns findings as structured JSON:
67
69
  - Re-run lint and type check
68
70
  - Generate summary report
69
71
 
72
+ ### Round 7: Philosophy & Regression Gate
73
+ - Verify all changes align with project's compilation metaphor (Skills=source, Agents=artifacts, Rules=spec)
74
+ - Check separation of concerns: no agents containing skill logic, no skills with agent definitions
75
+ - Verify orchestrator rules: no new file writes from orchestrator context
76
+ - Check advisory-first: no new hard-blocking hooks introduced
77
+ - Confirm no feature regressions: existing APIs preserved, test coverage maintained
78
+ - Performance sanity: no O(n^2) on large datasets, no missing indexes for new queries
79
+ - If any CONCERN or VIOLATION found: report for manual review before release
80
+
70
81
  ## Output Format
71
82
 
72
83
  ```
@@ -80,11 +91,13 @@ Each agent receives the full diff and returns findings as structured JSON:
80
91
  ║ Findings: ║
81
92
  ║ HIGH: {n} ({confirmed} confirmed, {fp} FP) ║
82
93
  ║ MEDIUM: {n} ({confirmed} confirmed, {fp} FP) ║
83
- ║ LOW: {n}
94
+ ║ LOW: {n}
84
95
  ╠══════════════════════════════════════════════════════╣
85
96
  ║ Fixes Applied: {n} ║
86
97
  ║ Tests: {pass}/{total} passing ║
87
98
  ║ Verdict: READY / NEEDS REVIEW / BLOCKED ║
99
+ ║ Philosophy: ALIGNED / {n} CONCERNS ║
100
+ ║ Regression: CLEAN / {n} RISKS ║
88
101
  ╚══════════════════════════════════════════════════════╝
89
102
  ```
90
103
 
@@ -94,3 +107,5 @@ Each agent receives the full diff and returns findings as structured JSON:
94
107
  - Round 3 verification agents use `model: opus` for reasoning depth
95
108
  - FALSE POSITIVE filtering is critical — previous releases showed 80%+ FP rate on automated review
96
109
  - This skill replaces ad-hoc cross-verification with a repeatable process
110
+ - Round 7 philosophy check references CLAUDE.md architecture section and R006/R010/R021 rules
111
+ - Regression check compares function signatures, export lists, and test counts against develop baseline
@@ -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
@@ -139,7 +139,7 @@ project/
139
139
  | +-- rules/ # 전역 규칙 (R000-R021)
140
140
  | +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
141
141
  | +-- contexts/ # 컨텍스트 파일 (ecomode)
142
- +-- guides/ # 레퍼런스 문서 (28 토픽)
142
+ +-- guides/ # 레퍼런스 문서 (29 토픽)
143
143
  ```
144
144
 
145
145
  ## 오케스트레이션
@@ -34,6 +34,14 @@ guides:
34
34
  origin: go.dev
35
35
  url: https://go.dev/doc/effective_go
36
36
 
37
+ - name: java21
38
+ description: Java 21 language reference and modern feature documentation
39
+ path: ./java21/
40
+ source:
41
+ type: external
42
+ origin: docs.oracle.com
43
+ url: https://docs.oracle.com/en/java/javase/21/
44
+
37
45
  - name: python
38
46
  description: Python reference from PEP 8 and PEP 20
39
47
  path: ./python/
@@ -67,6 +75,14 @@ guides:
67
75
  url: https://www.typescriptlang.org/docs/handbook/
68
76
 
69
77
  # Backend
78
+ - name: django-best-practices
79
+ description: Django patterns for production-ready Python web applications
80
+ path: ./django-best-practices/
81
+ source:
82
+ type: external
83
+ origin: djangoproject.com
84
+ url: https://docs.djangoproject.com/en/6.0/
85
+
70
86
  - name: fastapi
71
87
  description: FastAPI framework reference
72
88
  path: ./fastapi/
@@ -158,6 +174,14 @@ guides:
158
174
  url: https://iceberg.apache.org/docs/latest/
159
175
 
160
176
  # Database
177
+ - name: alembic
178
+ description: Alembic database migration framework for SQLAlchemy
179
+ path: ./alembic/
180
+ source:
181
+ type: external
182
+ origin: alembic.sqlalchemy.org
183
+ url: https://alembic.sqlalchemy.org/en/latest/
184
+
161
185
  - name: supabase-postgres
162
186
  description: Supabase and PostgreSQL best practices reference
163
187
  path: ./supabase-postgres/
@@ -182,6 +206,20 @@ guides:
182
206
  origin: redis.io
183
207
  url: https://redis.io/docs/
184
208
 
209
+ # Git
210
+ - name: git-worktree-workflow
211
+ description: Git worktree workflow for parallel branch development
212
+ path: ./git-worktree-workflow/
213
+ source:
214
+ type: internal
215
+
216
+ # Architecture
217
+ - name: skill-bundle-design
218
+ description: Domain skill bundle design patterns for Author/Test/Troubleshoot tri-pattern
219
+ path: ./skill-bundle-design/
220
+ source:
221
+ type: internal
222
+
185
223
  # Writing
186
224
  - name: elements-of-style
187
225
  description: The Elements of Style writing clarity guidelines
@@ -190,3 +228,10 @@ guides:
190
228
  type: external
191
229
  origin: public-domain
192
230
  url: https://www.gutenberg.org/ebooks/37134
231
+
232
+ # Web Scraping
233
+ - name: web-scraping
234
+ description: BeautifulSoup and Playwright patterns for reliable web scraping and government site parsing
235
+ path: ./web-scraping/
236
+ source:
237
+ type: internal