oh-my-customcode 0.100.0 → 0.101.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.
- package/dist/cli/index.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/templates/.claude/agents/mgr-supplier.md +1 -1
- package/templates/.claude/rules/MUST-permissions.md +12 -0
- package/templates/.claude/rules/SHOULD-ontology-rag-routing.md +37 -20
- package/templates/.claude/skills/adversarial-review/SKILL.md +4 -0
- package/templates/.claude/skills/de-lead-routing/SKILL.md +11 -1
- package/templates/.claude/skills/deep-plan/SKILL.md +30 -9
- package/templates/.claude/skills/deep-verify/SKILL.md +4 -0
- package/templates/.claude/skills/dev-lead-routing/SKILL.md +17 -1
- package/templates/.claude/skills/intent-detection/SKILL.md +15 -0
- package/templates/.claude/skills/intent-detection/patterns/agent-triggers.yaml +320 -0
- package/templates/.claude/skills/omcustom-release-notes/SKILL.md +4 -0
- package/templates/.claude/skills/pipeline/workflows/auto-dev.yaml +166 -0
- package/templates/.claude/skills/post-release-followup/SKILL.md +9 -5
- package/templates/.claude/skills/professor-triage/SKILL.md +88 -84
- package/templates/.claude/skills/qa-lead-routing/SKILL.md +10 -1
- package/templates/.claude/skills/release-plan/SKILL.md +30 -26
- package/templates/.claude/skills/secretary-routing/SKILL.md +18 -2
- package/templates/.claude/skills/structured-dev-cycle/SKILL.md +4 -0
- package/templates/manifest.json +1 -1
package/dist/cli/index.js
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -30,3 +30,15 @@ Approve?
|
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
On insufficient permission: do not attempt, notify user, suggest alternative.
|
|
33
|
+
|
|
34
|
+
## Agent Tool Permission Mode
|
|
35
|
+
|
|
36
|
+
When spawning subagents via the Agent tool, always pass `mode: "bypassPermissions"` explicitly. The Agent tool's default mode is `acceptEdits`, which **overrides** the agent frontmatter `permissionMode` field.
|
|
37
|
+
|
|
38
|
+
| Setting | Effect |
|
|
39
|
+
|---------|--------|
|
|
40
|
+
| Agent frontmatter `permissionMode: bypassPermissions` | Ignored if Agent tool `mode` not set |
|
|
41
|
+
| Agent tool `mode: "bypassPermissions"` | **Required** — actually controls subagent permissions |
|
|
42
|
+
| Agent tool `mode` omitted | Defaults to `acceptEdits` → prompts for Bash, WebFetch |
|
|
43
|
+
|
|
44
|
+
Skills that spawn agents MUST include `mode: "bypassPermissions"` in their Agent tool call instructions. This applies to all routing skills, pipeline skills, and any skill that delegates work to subagents.
|
|
@@ -1,49 +1,66 @@
|
|
|
1
|
-
# [SHOULD]
|
|
1
|
+
# [SHOULD] Routing Enrichment Rules
|
|
2
2
|
|
|
3
3
|
> **Priority**: SHOULD | **ID**: R019
|
|
4
4
|
|
|
5
5
|
## Core Rule
|
|
6
6
|
|
|
7
|
-
Routing skills SHOULD use
|
|
7
|
+
Routing skills SHOULD use enrichment layers to improve agent/skill/guide selection accuracy. Two enrichment sources are available — they complement each other and both are advisory only.
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## Enrichment Layers
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
### Layer 1: Ontology-RAG (MCP-based)
|
|
12
|
+
|
|
13
|
+
When the `ontology-rag` MCP server is available, routing skills call `get_agent_for_task(query)` to get `suggested_skills` from the ontology graph. Inject suggestions into the spawned agent's prompt.
|
|
12
14
|
|
|
13
15
|
```
|
|
14
16
|
Static routing → agent selected
|
|
15
17
|
↓
|
|
16
|
-
get_agent_for_task(original_query)
|
|
18
|
+
get_agent_for_task(original_query) [MCP]
|
|
17
19
|
↓
|
|
18
20
|
Extract suggested_skills
|
|
19
21
|
↓
|
|
20
|
-
Prepend to spawned agent prompt
|
|
21
|
-
|
|
22
|
+
Prepend to spawned agent prompt
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Layer 2: Wiki-RAG (wiki index-based)
|
|
26
|
+
|
|
27
|
+
When routing confidence is below 90%, query `wiki/index.yaml` for relevant agent/skill/guide pages. Inject findings as supplementary routing signals.
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
Static routing → ambiguous (confidence < 90%)
|
|
31
|
+
↓
|
|
32
|
+
wiki/index.yaml search for matching pages
|
|
33
|
+
↓
|
|
34
|
+
Extract agent/skill/guide suggestions
|
|
35
|
+
↓
|
|
36
|
+
Inject as suggested_context in agent prompt
|
|
22
37
|
```
|
|
23
38
|
|
|
24
39
|
## Failure Handling
|
|
25
40
|
|
|
26
41
|
| Scenario | Action |
|
|
27
42
|
|----------|--------|
|
|
28
|
-
| MCP server unavailable | Skip silently, proceed
|
|
29
|
-
|
|
|
30
|
-
|
|
|
43
|
+
| MCP server unavailable | Skip silently, proceed without ontology enrichment |
|
|
44
|
+
| wiki/index.yaml missing | Skip silently, proceed without wiki enrichment |
|
|
45
|
+
| Either returns empty | Proceed with unmodified prompt |
|
|
46
|
+
| Parsing error | Skip silently, log warning |
|
|
31
47
|
|
|
32
|
-
**
|
|
48
|
+
**Enrichment failure MUST NOT block or delay routing.** Both layers are advisory only.
|
|
33
49
|
|
|
34
50
|
## Scope
|
|
35
51
|
|
|
36
|
-
| Applies to |
|
|
37
|
-
|
|
38
|
-
| secretary-routing |
|
|
39
|
-
| dev-lead-routing |
|
|
40
|
-
| de-lead-routing |
|
|
41
|
-
| qa-lead-routing |
|
|
52
|
+
| Applies to | Ontology-RAG | Wiki-RAG |
|
|
53
|
+
|------------|:------------:|:--------:|
|
|
54
|
+
| secretary-routing | ✓ | ✓ |
|
|
55
|
+
| dev-lead-routing | ✓ | ✓ |
|
|
56
|
+
| de-lead-routing | ✓ | ✓ |
|
|
57
|
+
| qa-lead-routing | ✓ | ✓ |
|
|
42
58
|
|
|
43
59
|
## Interaction with Other Rules
|
|
44
60
|
|
|
45
61
|
| Rule | Interaction |
|
|
46
62
|
|------|-------------|
|
|
47
|
-
| R010 | Orchestrator calls
|
|
48
|
-
| R015 |
|
|
49
|
-
| R009 |
|
|
63
|
+
| R010 | Orchestrator calls enrichment tools; subagent receives enriched prompt |
|
|
64
|
+
| R015 | Enrichment does not change R015 confidence thresholds — display behavior unchanged |
|
|
65
|
+
| R009 | Each enrichment call adds ~300 tokens; no parallelism impact |
|
|
66
|
+
| R022 | Wiki-RAG depends on up-to-date wiki pages — stale wiki reduces enrichment quality |
|
|
@@ -78,3 +78,7 @@ Fix: Recommended remediation
|
|
|
78
78
|
- [ ] Do file operations stay within R002-declared access scope?
|
|
79
79
|
- [ ] Are domain boundaries respected (backend agent not editing frontend files)?
|
|
80
80
|
- [ ] Could an agent's task contract be tightened without losing functionality?
|
|
81
|
+
|
|
82
|
+
## Permission Mode
|
|
83
|
+
|
|
84
|
+
When spawning agents via the Agent tool during this skill's execution, always pass `mode: "bypassPermissions"`. The Agent tool default (`acceptEdits`) overrides agent frontmatter `permissionMode`, causing permission prompts during unattended execution.
|
|
@@ -84,12 +84,22 @@ For **new pipeline code**, **DAG scaffolding**, or **SQL model generation**:
|
|
|
84
84
|
### Step 3: Expert Selection
|
|
85
85
|
Route to appropriate DE expert based on tool/framework detection.
|
|
86
86
|
|
|
87
|
-
> **Permission Mode**: When spawning agents, pass `mode: "bypassPermissions"
|
|
87
|
+
> **Permission Mode**: When spawning agents via Agent tool, always pass `mode: "bypassPermissions"`. The Agent tool default (`acceptEdits`) overrides agent frontmatter `permissionMode`, causing permission prompts during unattended execution.
|
|
88
88
|
|
|
89
89
|
### Step 4: Ontology-RAG Enrichment (R019)
|
|
90
90
|
|
|
91
91
|
If `get_agent_for_task` MCP tool is available, call it with the original query and inject `suggested_skills` into the agent prompt. Skip silently on failure.
|
|
92
92
|
|
|
93
|
+
### Step 4b: Wiki-RAG Enrichment
|
|
94
|
+
|
|
95
|
+
For ambiguous routing (confidence < 90%), query the wiki for context:
|
|
96
|
+
|
|
97
|
+
1. Search `wiki/index.yaml` for DE-related pages matching the request
|
|
98
|
+
2. Inject relevant skill/guide suggestions into the spawned agent's prompt
|
|
99
|
+
3. Particularly useful for cross-domain DE tasks (e.g., Kafka + Spark)
|
|
100
|
+
|
|
101
|
+
Advisory only — skip silently if wiki unavailable.
|
|
102
|
+
|
|
93
103
|
### Step 5: Soul Injection (R006)
|
|
94
104
|
|
|
95
105
|
If the selected agent has `soul: true` in frontmatter, read and prepend `.claude/agents/souls/{agent-name}.soul.md` content to the prompt. Skip silently if file doesn't exist.
|
|
@@ -82,22 +82,39 @@ Phase 2: Reality-Check Planning
|
|
|
82
82
|
- Each ADOPT item: Does it already exist? Partially implemented?
|
|
83
83
|
- Each ADAPT item: What is the current state to adapt from?
|
|
84
84
|
- Each AVOID item: Are the alternatives already available?
|
|
85
|
-
3. **
|
|
85
|
+
3. **Deliverable Dependency Verification**: After exploration, verify inter-deliverable dependencies:
|
|
86
|
+
- For each deliverable pair, check: do they share files, functions, or modules?
|
|
87
|
+
- Classify each pair: `independent` (parallel-safe), `sequential` (order required), `shared-state` (synchronization needed)
|
|
88
|
+
- **Default bias**: Assume `independent` unless exploration finds concrete shared state
|
|
89
|
+
- Build dependency matrix:
|
|
86
90
|
|
|
87
91
|
```
|
|
88
|
-
|
|
|
89
|
-
|
|
90
|
-
|
|
|
91
|
-
|
|
|
92
|
-
| "Migrate to v3" | Already on v3.1 | Overestimate | Remove from plan |
|
|
93
|
-
| "Add rate limiting" | Basic limiter exists | Partial gap | Adapt existing |
|
|
92
|
+
| Deliverable A | Deliverable B | Classification | Evidence |
|
|
93
|
+
|---------------|---------------|----------------|----------|
|
|
94
|
+
| D1: Auth | D2: API | independent | No shared files |
|
|
95
|
+
| D1: Auth | D3: Tests | sequential | D3 tests D1 output |
|
|
94
96
|
```
|
|
95
97
|
|
|
96
|
-
|
|
98
|
+
- **Orchestrator override**: The dependency classification is advisory. The orchestrator or user can reclassify pairs when the automated analysis is overly conservative.
|
|
99
|
+
|
|
100
|
+
4. **Gap Analysis**: Build a reconciliation table:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
| Research Finding | Actual Code State | Gap Type | Action | Dependencies |
|
|
104
|
+
|-----------------|-------------------|----------|--------|-------------|
|
|
105
|
+
| "No caching" | Redis client exists | Overestimate | Remove from plan | — |
|
|
106
|
+
| "Need auth middleware" | No auth layer | Real gap | Keep in plan | D3 (sequential) |
|
|
107
|
+
| "Migrate to v3" | Already on v3.1 | Overestimate | Remove from plan | — |
|
|
108
|
+
| "Add rate limiting" | Basic limiter exists | Partial gap | Adapt existing | independent |
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
5. **Refined Plan**: Write implementation plan containing ONLY real gaps:
|
|
97
112
|
- Remove overestimates (already implemented)
|
|
98
113
|
- Adjust partial gaps (adapt, don't rebuild)
|
|
99
114
|
- Prioritize real gaps by impact
|
|
100
|
-
|
|
115
|
+
6. **User Approval**: `ExitPlanMode` presents the refined plan for user review
|
|
116
|
+
- Include dependency matrix in plan output
|
|
117
|
+
- Display override option: "Dependency classifications are advisory. Reply with reclassifications if needed."
|
|
101
118
|
|
|
102
119
|
### Phase 3: Plan Verification Research
|
|
103
120
|
|
|
@@ -342,3 +359,7 @@ phases_completed: 3
|
|
|
342
359
|
verdict: PASS|REVISE
|
|
343
360
|
---
|
|
344
361
|
```
|
|
362
|
+
|
|
363
|
+
## Permission Mode
|
|
364
|
+
|
|
365
|
+
When spawning agents via the Agent tool during this skill's execution, always pass `mode: "bypassPermissions"`. The Agent tool default (`acceptEdits`) overrides agent frontmatter `permissionMode`, causing permission prompts during unattended execution.
|
|
@@ -109,3 +109,7 @@ Each agent receives the full diff and returns findings as structured JSON:
|
|
|
109
109
|
- This skill replaces ad-hoc cross-verification with a repeatable process
|
|
110
110
|
- Round 7 philosophy check references CLAUDE.md architecture section and R006/R010/R021 rules
|
|
111
111
|
- Regression check compares function signatures, export lists, and test counts against develop baseline
|
|
112
|
+
|
|
113
|
+
## Permission Mode
|
|
114
|
+
|
|
115
|
+
When spawning agents via the Agent tool during this skill's execution, always pass `mode: "bypassPermissions"`. The Agent tool default (`acceptEdits`) overrides agent frontmatter `permissionMode`, causing permission prompts during unattended execution.
|
|
@@ -20,6 +20,7 @@ context: fork
|
|
|
20
20
|
| Architect | arch-documenter, arch-speckit-agent |
|
|
21
21
|
| Security | sec-codeql-expert |
|
|
22
22
|
| Infra | infra-docker-expert, infra-aws-expert |
|
|
23
|
+
| Slack | slack-cli-expert |
|
|
23
24
|
|
|
24
25
|
## File Extension Mapping
|
|
25
26
|
|
|
@@ -74,6 +75,7 @@ context: fork
|
|
|
74
75
|
| security, codeql, cve, vulnerability, sarif, sast, security audit | sec-codeql-expert |
|
|
75
76
|
| architecture, adr, openapi, swagger, diagram | arch-documenter |
|
|
76
77
|
| spec, specification, tdd, requirements | arch-speckit-agent |
|
|
78
|
+
| slack, slack-cli, slack app, slack deploy, slack trigger, slack datastore | slack-cli-expert |
|
|
77
79
|
|
|
78
80
|
## Model Selection
|
|
79
81
|
|
|
@@ -121,12 +123,26 @@ For **new file creation**, **boilerplate**, or **test code generation**:
|
|
|
121
123
|
### Step 3: Expert Agent Selection
|
|
122
124
|
Route to appropriate language/framework expert based on file extension and keyword mapping.
|
|
123
125
|
|
|
124
|
-
> **Permission Mode**: When spawning agents, pass `mode: "bypassPermissions"
|
|
126
|
+
> **Permission Mode**: When spawning agents via Agent tool, always pass `mode: "bypassPermissions"`. The Agent tool default (`acceptEdits`) overrides agent frontmatter `permissionMode`, causing permission prompts during unattended execution.
|
|
125
127
|
|
|
126
128
|
### Step 4: Ontology-RAG Enrichment (R019)
|
|
127
129
|
|
|
128
130
|
If `get_agent_for_task` MCP tool is available, call it with the original query and inject `suggested_skills` into the agent prompt. Skip silently on failure.
|
|
129
131
|
|
|
132
|
+
### Step 4b: Wiki-RAG Enrichment
|
|
133
|
+
|
|
134
|
+
For ambiguous routing (confidence < 90%), query the wiki for context:
|
|
135
|
+
|
|
136
|
+
1. Search `wiki/index.yaml` for agent/skill pages matching detected keywords
|
|
137
|
+
2. If wiki suggests a specific skill or guide for the task, inject as `suggested_context` in the agent prompt
|
|
138
|
+
3. This helps agents receive relevant guide references automatically
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
wiki-rag query: "{user_request}" → wiki agent/skill pages → suggested_context injection
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Advisory only — skip silently if wiki unavailable.
|
|
145
|
+
|
|
130
146
|
### Step 5: Soul Injection (R006)
|
|
131
147
|
|
|
132
148
|
If the selected agent has `soul: true` in frontmatter, read and prepend `.claude/agents/souls/{agent-name}.soul.md` content to the prompt. Skip silently if file doesn't exist.
|
|
@@ -175,6 +175,21 @@ Each agent defines:
|
|
|
175
175
|
- weights (scoring factors)
|
|
176
176
|
```
|
|
177
177
|
|
|
178
|
+
### With Skill Triggers
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
Skill triggers are defined in agent-triggers.yaml alongside agent triggers.
|
|
182
|
+
Each skill trigger has a `routing_rule` field that specifies which skill to invoke.
|
|
183
|
+
|
|
184
|
+
When a skill trigger matches with confidence >= 70%:
|
|
185
|
+
1. Display the intent detection output with skill name
|
|
186
|
+
2. Invoke the skill via Skill tool instead of spawning an agent
|
|
187
|
+
3. If confidence < 70%, list skill options for user selection
|
|
188
|
+
|
|
189
|
+
Skill triggers use the `skill-` prefix in their YAML key to distinguish
|
|
190
|
+
from agent triggers.
|
|
191
|
+
```
|
|
192
|
+
|
|
178
193
|
## Error Handling
|
|
179
194
|
|
|
180
195
|
### No Match (< 30% confidence)
|
|
@@ -436,3 +436,323 @@ agents:
|
|
|
436
436
|
file_patterns: []
|
|
437
437
|
supported_actions: [optimize, compress, proxy]
|
|
438
438
|
base_confidence: 85
|
|
439
|
+
|
|
440
|
+
# ---------------------------------------------------------------------------
|
|
441
|
+
# Skill Triggers — route user intent to skill invocation
|
|
442
|
+
# ---------------------------------------------------------------------------
|
|
443
|
+
|
|
444
|
+
# Development workflow skills
|
|
445
|
+
skill-tdd:
|
|
446
|
+
keywords:
|
|
447
|
+
korean: [TDD, 테스트 주도, 테스트 먼저]
|
|
448
|
+
english: [tdd, "test driven", "test first", "write tests first"]
|
|
449
|
+
file_patterns: []
|
|
450
|
+
supported_actions: [implement, test, develop]
|
|
451
|
+
base_confidence: 80
|
|
452
|
+
routing_rule: "Invoke superpowers:test-driven-development skill"
|
|
453
|
+
|
|
454
|
+
skill-sdd:
|
|
455
|
+
keywords:
|
|
456
|
+
korean: [SDD, 스펙 주도, 스펙 기반]
|
|
457
|
+
english: [sdd, "spec driven", specification, "spec first"]
|
|
458
|
+
file_patterns: ["sdd/**"]
|
|
459
|
+
supported_actions: [plan, spec, design]
|
|
460
|
+
base_confidence: 80
|
|
461
|
+
routing_rule: "Invoke sdd-dev skill"
|
|
462
|
+
|
|
463
|
+
skill-structured-dev:
|
|
464
|
+
keywords:
|
|
465
|
+
korean: [구조화 개발, 6단계, 단계별]
|
|
466
|
+
english: ["structured dev", "6 stage", "stage-based"]
|
|
467
|
+
file_patterns: []
|
|
468
|
+
supported_actions: [implement, develop]
|
|
469
|
+
base_confidence: 75
|
|
470
|
+
routing_rule: "Invoke structured-dev-cycle skill"
|
|
471
|
+
|
|
472
|
+
# Review and verification skills
|
|
473
|
+
skill-deep-verify:
|
|
474
|
+
keywords:
|
|
475
|
+
korean: [딥검증, 릴리즈 검증, 다각도 검증]
|
|
476
|
+
english: ["deep verify", "release verify", "multi-angle"]
|
|
477
|
+
file_patterns: []
|
|
478
|
+
supported_actions: [verify, review, check]
|
|
479
|
+
base_confidence: 80
|
|
480
|
+
routing_rule: "Invoke deep-verify skill"
|
|
481
|
+
|
|
482
|
+
skill-adversarial-review:
|
|
483
|
+
keywords:
|
|
484
|
+
korean: [보안 리뷰, 적대적 리뷰, 공격자 관점]
|
|
485
|
+
english: ["security review", adversarial, "attacker mindset", "trust boundary"]
|
|
486
|
+
file_patterns: []
|
|
487
|
+
supported_actions: [review, audit, security]
|
|
488
|
+
base_confidence: 80
|
|
489
|
+
routing_rule: "Invoke adversarial-review skill"
|
|
490
|
+
|
|
491
|
+
skill-code-review:
|
|
492
|
+
keywords:
|
|
493
|
+
korean: [코드 리뷰, 베스트 프랙티스 리뷰]
|
|
494
|
+
english: ["code review", "best practice review", "dev review"]
|
|
495
|
+
file_patterns: []
|
|
496
|
+
supported_actions: [review, check]
|
|
497
|
+
base_confidence: 70
|
|
498
|
+
routing_rule: "Invoke dev-review skill"
|
|
499
|
+
|
|
500
|
+
# Planning skills
|
|
501
|
+
skill-deep-plan:
|
|
502
|
+
keywords:
|
|
503
|
+
korean: [딥플랜, 연구 계획, 검증 계획]
|
|
504
|
+
english: ["deep plan", "research plan", "validated plan"]
|
|
505
|
+
file_patterns: []
|
|
506
|
+
supported_actions: [plan, research, design]
|
|
507
|
+
base_confidence: 80
|
|
508
|
+
routing_rule: "Invoke deep-plan skill"
|
|
509
|
+
|
|
510
|
+
skill-release-plan:
|
|
511
|
+
keywords:
|
|
512
|
+
korean: [릴리즈 계획, 배포 계획]
|
|
513
|
+
english: ["release plan", "deployment plan"]
|
|
514
|
+
file_patterns: []
|
|
515
|
+
supported_actions: [plan, release]
|
|
516
|
+
base_confidence: 85
|
|
517
|
+
routing_rule: "Invoke release-plan skill"
|
|
518
|
+
|
|
519
|
+
# Pipeline and automation skills
|
|
520
|
+
skill-pipeline:
|
|
521
|
+
keywords:
|
|
522
|
+
korean: [파이프라인, 자동 개발, 자동화]
|
|
523
|
+
english: [pipeline, "auto dev", automation]
|
|
524
|
+
file_patterns: ["workflows/*.yaml"]
|
|
525
|
+
supported_actions: [run, execute, automate]
|
|
526
|
+
base_confidence: 85
|
|
527
|
+
routing_rule: "Invoke pipeline skill"
|
|
528
|
+
|
|
529
|
+
skill-evaluator-optimizer:
|
|
530
|
+
keywords:
|
|
531
|
+
korean: [평가, 최적화 루프, 루브릭, 반복 개선]
|
|
532
|
+
english: [evaluator, optimizer, rubric, "iterative improvement", "ralph loop", "ralph wiggum"]
|
|
533
|
+
file_patterns: []
|
|
534
|
+
supported_actions: [evaluate, optimize, iterate]
|
|
535
|
+
base_confidence: 80
|
|
536
|
+
routing_rule: "Invoke evaluator-optimizer skill"
|
|
537
|
+
|
|
538
|
+
# Analysis and triage skills
|
|
539
|
+
skill-professor-triage:
|
|
540
|
+
keywords:
|
|
541
|
+
korean: [트리아지, 이슈 분석, 프로페서]
|
|
542
|
+
english: [triage, "issue analysis", professor, "cross analysis"]
|
|
543
|
+
file_patterns: []
|
|
544
|
+
supported_actions: [analyze, triage, assess]
|
|
545
|
+
base_confidence: 85
|
|
546
|
+
routing_rule: "Invoke professor-triage skill"
|
|
547
|
+
|
|
548
|
+
skill-scout:
|
|
549
|
+
keywords:
|
|
550
|
+
korean: [스카우트, URL 평가, 외부 분석]
|
|
551
|
+
english: [scout, "url analysis", "external evaluation"]
|
|
552
|
+
file_patterns: []
|
|
553
|
+
supported_actions: [scout, analyze, evaluate]
|
|
554
|
+
base_confidence: 85
|
|
555
|
+
routing_rule: "Invoke scout skill"
|
|
556
|
+
|
|
557
|
+
skill-idea:
|
|
558
|
+
keywords:
|
|
559
|
+
korean: [아이디어, 이슈 제안]
|
|
560
|
+
english: [idea, "issue proposal", "feature idea"]
|
|
561
|
+
file_patterns: []
|
|
562
|
+
supported_actions: [propose, ideate, suggest]
|
|
563
|
+
base_confidence: 80
|
|
564
|
+
routing_rule: "Invoke idea skill"
|
|
565
|
+
|
|
566
|
+
# Wiki and knowledge skills
|
|
567
|
+
skill-wiki:
|
|
568
|
+
keywords:
|
|
569
|
+
korean: [위키, 지식 베이스, 위키 생성]
|
|
570
|
+
english: [wiki, "knowledge base", "wiki generate", "wiki ingest"]
|
|
571
|
+
file_patterns: ["wiki/**"]
|
|
572
|
+
supported_actions: [generate, ingest, lint, update]
|
|
573
|
+
base_confidence: 85
|
|
574
|
+
routing_rule: "Invoke wiki skill"
|
|
575
|
+
|
|
576
|
+
skill-wiki-rag:
|
|
577
|
+
keywords:
|
|
578
|
+
korean: [위키 검색, 프로젝트 질문, 아키텍처 질문, 어떻게 작동]
|
|
579
|
+
english: ["wiki search", "how does", "which agent", "what rule", architecture, workflow]
|
|
580
|
+
file_patterns: []
|
|
581
|
+
supported_actions: [search, query, ask]
|
|
582
|
+
base_confidence: 75
|
|
583
|
+
routing_rule: "Invoke wiki-rag skill"
|
|
584
|
+
|
|
585
|
+
# Token and optimization skills
|
|
586
|
+
skill-token-efficiency:
|
|
587
|
+
keywords:
|
|
588
|
+
korean: [토큰 효율, 토큰 감사, 토큰 절감]
|
|
589
|
+
english: ["token efficiency", "token audit", "token saving", "token defense"]
|
|
590
|
+
file_patterns: []
|
|
591
|
+
supported_actions: [audit, optimize, monitor]
|
|
592
|
+
base_confidence: 85
|
|
593
|
+
routing_rule: "Invoke token-efficiency-audit skill"
|
|
594
|
+
|
|
595
|
+
skill-simplify:
|
|
596
|
+
keywords:
|
|
597
|
+
korean: [단순화, 코드 정리, 중복 제거]
|
|
598
|
+
english: [simplify, cleanup, deduplicate, "reduce complexity"]
|
|
599
|
+
file_patterns: []
|
|
600
|
+
supported_actions: [simplify, clean, reduce]
|
|
601
|
+
base_confidence: 75
|
|
602
|
+
routing_rule: "Invoke simplify skill"
|
|
603
|
+
|
|
604
|
+
# Memory skills
|
|
605
|
+
skill-memory-save:
|
|
606
|
+
keywords:
|
|
607
|
+
korean: [메모리 저장, 기억해, 저장해]
|
|
608
|
+
english: ["save memory", "remember this", "store this"]
|
|
609
|
+
file_patterns: []
|
|
610
|
+
supported_actions: [save, store, remember]
|
|
611
|
+
base_confidence: 85
|
|
612
|
+
routing_rule: "Invoke memory-management skill"
|
|
613
|
+
|
|
614
|
+
skill-memory-recall:
|
|
615
|
+
keywords:
|
|
616
|
+
korean: [메모리 검색, 기억 찾기, 회상]
|
|
617
|
+
english: ["recall memory", "search memory", "find memory", "what did we"]
|
|
618
|
+
file_patterns: []
|
|
619
|
+
supported_actions: [recall, search, find]
|
|
620
|
+
base_confidence: 85
|
|
621
|
+
routing_rule: "Invoke memory-recall skill"
|
|
622
|
+
|
|
623
|
+
# Harness management skills
|
|
624
|
+
skill-analysis:
|
|
625
|
+
keywords:
|
|
626
|
+
korean: [프로젝트 분석, 하네스 분석, 에이전트 분석]
|
|
627
|
+
english: ["project analysis", "harness analysis", "agent analysis", "analyze project"]
|
|
628
|
+
file_patterns: []
|
|
629
|
+
supported_actions: [analyze, configure, optimize]
|
|
630
|
+
base_confidence: 80
|
|
631
|
+
routing_rule: "Invoke analysis skill"
|
|
632
|
+
|
|
633
|
+
skill-adaptive-harness:
|
|
634
|
+
keywords:
|
|
635
|
+
korean: [하네스 최적화, 에이전트 비활성화, 프로젝트 프로필]
|
|
636
|
+
english: ["harness optimize", "deactivate agents", "project profile", "adaptive harness"]
|
|
637
|
+
file_patterns: []
|
|
638
|
+
supported_actions: [optimize, profile, adapt]
|
|
639
|
+
base_confidence: 80
|
|
640
|
+
routing_rule: "Invoke adaptive-harness skill"
|
|
641
|
+
|
|
642
|
+
# Worker-reviewer skills
|
|
643
|
+
skill-worker-reviewer:
|
|
644
|
+
keywords:
|
|
645
|
+
korean: [워커 리뷰어, 반복 리뷰, 리뷰 사이클]
|
|
646
|
+
english: ["worker reviewer", "review cycle", "iterative review"]
|
|
647
|
+
file_patterns: []
|
|
648
|
+
supported_actions: [review, iterate, cycle]
|
|
649
|
+
base_confidence: 75
|
|
650
|
+
routing_rule: "Invoke worker-reviewer-pipeline skill"
|
|
651
|
+
|
|
652
|
+
skill-agora:
|
|
653
|
+
keywords:
|
|
654
|
+
korean: [아고라, 합의, 적대적 합의, 다중 LLM]
|
|
655
|
+
english: [agora, consensus, "adversarial consensus", "multi llm"]
|
|
656
|
+
file_patterns: []
|
|
657
|
+
supported_actions: [debate, consensus, verify]
|
|
658
|
+
base_confidence: 85
|
|
659
|
+
routing_rule: "Invoke agora skill"
|
|
660
|
+
|
|
661
|
+
# Debugging skill
|
|
662
|
+
skill-debugging:
|
|
663
|
+
keywords:
|
|
664
|
+
korean: [디버깅, 버그 찾기, 재현]
|
|
665
|
+
english: [debug, "find bug", reproduce, "root cause"]
|
|
666
|
+
file_patterns: []
|
|
667
|
+
supported_actions: [debug, reproduce, diagnose]
|
|
668
|
+
base_confidence: 80
|
|
669
|
+
routing_rule: "Invoke systematic-debugging skill"
|
|
670
|
+
|
|
671
|
+
skill-stuck-recovery:
|
|
672
|
+
keywords:
|
|
673
|
+
korean: [멈춤, 루프, 무한 반복, 복구]
|
|
674
|
+
english: [stuck, loop, "infinite loop", recovery, "not progressing"]
|
|
675
|
+
file_patterns: []
|
|
676
|
+
supported_actions: [recover, unstick, diagnose]
|
|
677
|
+
base_confidence: 85
|
|
678
|
+
routing_rule: "Invoke stuck-recovery skill"
|
|
679
|
+
|
|
680
|
+
# CVE and security skills
|
|
681
|
+
skill-cve-triage:
|
|
682
|
+
keywords:
|
|
683
|
+
korean: [CVE, 취약점, 보안 취약점]
|
|
684
|
+
english: [cve, vulnerability, "security vulnerability", "cve triage"]
|
|
685
|
+
file_patterns: []
|
|
686
|
+
supported_actions: [triage, analyze, patch]
|
|
687
|
+
base_confidence: 85
|
|
688
|
+
routing_rule: "Invoke cve-triage skill"
|
|
689
|
+
|
|
690
|
+
skill-npm-audit:
|
|
691
|
+
keywords:
|
|
692
|
+
korean: [npm 감사, 의존성 보안, 패키지 취약점]
|
|
693
|
+
english: ["npm audit", "dependency security", "package vulnerability"]
|
|
694
|
+
file_patterns: ["package.json", "package-lock.json"]
|
|
695
|
+
supported_actions: [audit, scan, fix]
|
|
696
|
+
base_confidence: 85
|
|
697
|
+
routing_rule: "Invoke npm-audit skill"
|
|
698
|
+
|
|
699
|
+
# Best practices skills (framework-specific)
|
|
700
|
+
skill-best-practices:
|
|
701
|
+
keywords:
|
|
702
|
+
korean: [베스트 프랙티스, 모범 사례, 패턴]
|
|
703
|
+
english: ["best practices", "best practice", pattern, convention]
|
|
704
|
+
file_patterns: []
|
|
705
|
+
supported_actions: [review, apply, check]
|
|
706
|
+
base_confidence: 60
|
|
707
|
+
routing_rule: "Route to language/framework specific best-practices skill based on file context"
|
|
708
|
+
|
|
709
|
+
# Monitoring skill
|
|
710
|
+
skill-monitoring:
|
|
711
|
+
keywords:
|
|
712
|
+
korean: [모니터링, 텔레메트리, 사용량 추적]
|
|
713
|
+
english: [monitoring, telemetry, "usage tracking", opentelemetry]
|
|
714
|
+
file_patterns: []
|
|
715
|
+
supported_actions: [setup, enable, disable, configure]
|
|
716
|
+
base_confidence: 80
|
|
717
|
+
routing_rule: "Invoke monitoring-setup skill"
|
|
718
|
+
|
|
719
|
+
# Deployment skill
|
|
720
|
+
skill-vercel-deploy:
|
|
721
|
+
keywords:
|
|
722
|
+
korean: [버셀 배포, 프리뷰, 프로덕션 배포]
|
|
723
|
+
english: ["vercel deploy", preview, "production deploy"]
|
|
724
|
+
file_patterns: ["vercel.json"]
|
|
725
|
+
supported_actions: [deploy, preview, promote]
|
|
726
|
+
base_confidence: 85
|
|
727
|
+
routing_rule: "Invoke vercel-deploy skill"
|
|
728
|
+
|
|
729
|
+
# ---------------------------------------------------------------------------
|
|
730
|
+
# Guide Reference Triggers — route user questions to relevant guides
|
|
731
|
+
# ---------------------------------------------------------------------------
|
|
732
|
+
|
|
733
|
+
guide-claude-code:
|
|
734
|
+
keywords:
|
|
735
|
+
korean: [클로드 코드, CC 가이드, 에이전트 가이드, 스킬 가이드, 훅 가이드]
|
|
736
|
+
english: ["claude code", "cc guide", "agent guide", "skill guide", "hook guide"]
|
|
737
|
+
file_patterns: []
|
|
738
|
+
supported_actions: [explain, reference, lookup]
|
|
739
|
+
base_confidence: 70
|
|
740
|
+
routing_rule: "Reference guides/claude-code/ directory"
|
|
741
|
+
|
|
742
|
+
guide-development:
|
|
743
|
+
keywords:
|
|
744
|
+
korean: [개발 가이드, 코딩 가이드, 개발 패턴]
|
|
745
|
+
english: ["dev guide", "coding guide", "development pattern"]
|
|
746
|
+
file_patterns: []
|
|
747
|
+
supported_actions: [reference, lookup]
|
|
748
|
+
base_confidence: 65
|
|
749
|
+
routing_rule: "Reference guides/development/ directory"
|
|
750
|
+
|
|
751
|
+
guide-best-practices:
|
|
752
|
+
keywords:
|
|
753
|
+
korean: [참조 가이드, 레퍼런스]
|
|
754
|
+
english: ["reference guide", "best practice guide"]
|
|
755
|
+
file_patterns: []
|
|
756
|
+
supported_actions: [reference, lookup]
|
|
757
|
+
base_confidence: 60
|
|
758
|
+
routing_rule: "Reference appropriate guides/ subdirectory"
|
|
@@ -115,3 +115,7 @@ mgr-gitnerd: gh release create -> create release with notes
|
|
|
115
115
|
- Uses git history and gh CLI for data gathering
|
|
116
116
|
- Claude Code analyzes and generates notes in-context
|
|
117
117
|
- Resource count changes auto-detected from CLAUDE.md history
|
|
118
|
+
|
|
119
|
+
## Permission Mode
|
|
120
|
+
|
|
121
|
+
When spawning agents via the Agent tool during this skill's execution, always pass `mode: "bypassPermissions"`. The Agent tool default (`acceptEdits`) overrides agent frontmatter `permissionMode`, causing permission prompts during unattended execution.
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
name: auto-dev
|
|
2
|
+
description: "Automated development pipeline — from issue triage to release"
|
|
3
|
+
version: "2.0.0"
|
|
4
|
+
|
|
5
|
+
# Design rule: each pipeline run produces ONE bounded release unit (3-7 issues), not all open issues.
|
|
6
|
+
# This pipeline is a project-agnostic template. Project-specific overrides belong in
|
|
7
|
+
# the project's own workflows/auto-dev.yaml (e.g., AgentNav, second-brain).
|
|
8
|
+
|
|
9
|
+
steps:
|
|
10
|
+
- name: pre-triage
|
|
11
|
+
prompt: |
|
|
12
|
+
Phase 1 — Ensure required labels exist, then scan issues.
|
|
13
|
+
|
|
14
|
+
1. Create labels if missing (idempotent):
|
|
15
|
+
gh label create in-progress --color "FBCA04" --description "Work in progress" --force 2>/dev/null
|
|
16
|
+
gh label create verify-ready --color "0E8A16" --description "Ready for verification" --force 2>/dev/null
|
|
17
|
+
gh label create needs-review --color "D93F0B" --description "Needs manual review" --force 2>/dev/null
|
|
18
|
+
|
|
19
|
+
2. Scan open GitHub issues:
|
|
20
|
+
gh issue list --state open --limit 100 --json number,title,labels,body,milestone
|
|
21
|
+
|
|
22
|
+
3. Group by label and compute for each issue:
|
|
23
|
+
- dependencies: parse "see #N", "depends on #N", "#N 참조" from body
|
|
24
|
+
- blocked_by_decision: true if body references any decision-needed issue
|
|
25
|
+
- effort: XS/S/M/L from scope
|
|
26
|
+
- order: topological sort over dependencies
|
|
27
|
+
|
|
28
|
+
4. Output: dependency-sorted issue table with blocked_by_decision flag.
|
|
29
|
+
description: "Ensure labels exist, scan issues, dependency-analyze"
|
|
30
|
+
|
|
31
|
+
- name: scope-selection
|
|
32
|
+
prompt: |
|
|
33
|
+
Select a single bounded release scope (3-7 issues) for THIS pipeline run.
|
|
34
|
+
|
|
35
|
+
Selection rules:
|
|
36
|
+
1. Determine release tier:
|
|
37
|
+
- No tags yet → v0.1.0
|
|
38
|
+
- Otherwise: highest-priority open tier (bug → chore → feature)
|
|
39
|
+
2. Exclude:
|
|
40
|
+
- blocked_by_decision == true
|
|
41
|
+
- Issues requiring manual/human action
|
|
42
|
+
3. Sort by dependency: prerequisites before dependents
|
|
43
|
+
4. Cap at 7 issues; if priority issues < 7, stop at that priority (don't mix tiers)
|
|
44
|
+
5. Minimum 1 issue; if 0 eligible, halt with "no eligible issues for auto-dev run"
|
|
45
|
+
|
|
46
|
+
Create release milestone and assign scoped issues.
|
|
47
|
+
Output markdown release manifest:
|
|
48
|
+
| order | # | title | prerequisite | effort |
|
|
49
|
+
|
|
50
|
+
Persist manifest as pipeline state for subsequent steps.
|
|
51
|
+
description: "Pick 3-7 issues as v{X.Y.Z} scope, create milestone"
|
|
52
|
+
depends_on: pre-triage
|
|
53
|
+
|
|
54
|
+
- name: triage
|
|
55
|
+
skill: professor-triage
|
|
56
|
+
description: "Cross-analysis triage with priority assessment (scoped to release manifest)"
|
|
57
|
+
depends_on: scope-selection
|
|
58
|
+
|
|
59
|
+
- name: plan
|
|
60
|
+
skill: release-plan
|
|
61
|
+
description: "Release unit plan from triaged issues"
|
|
62
|
+
depends_on: triage
|
|
63
|
+
|
|
64
|
+
- name: deep-plan
|
|
65
|
+
skill: deep-plan
|
|
66
|
+
description: "Research-validated implementation plan (research → plan → verify)"
|
|
67
|
+
depends_on: plan
|
|
68
|
+
|
|
69
|
+
- name: implement
|
|
70
|
+
prompt: |
|
|
71
|
+
Execute the deep-plan output for the scoped release manifest.
|
|
72
|
+
|
|
73
|
+
Per-issue lifecycle:
|
|
74
|
+
1. Start: gh issue edit <N> --add-label in-progress --assignee @me
|
|
75
|
+
2. Comment: gh issue comment <N> --body "Implementation started via auto-dev pipeline"
|
|
76
|
+
3. Dispatch specialist agents per file domain:
|
|
77
|
+
- Detect file types in scope and route to matching agent
|
|
78
|
+
- Use specialized agents (lang-*, be-*, fe-*, infra-*) over general-purpose
|
|
79
|
+
4. TDD via superpowers:test-driven-development when tests apply
|
|
80
|
+
5. Commit via mgr-gitnerd with `Fixes #<N>` trailer in body
|
|
81
|
+
6. On success: remove in-progress, add verify-ready
|
|
82
|
+
7. On failure: remove in-progress, add needs-review, comment error summary
|
|
83
|
+
|
|
84
|
+
Rules:
|
|
85
|
+
- Parallel execution per R009 (max 4 concurrent, respect dependencies)
|
|
86
|
+
- Issues whose prerequisites failed in-run MUST be skipped (log reason)
|
|
87
|
+
- No direct orchestrator writes (R010)
|
|
88
|
+
- All Agent tool calls MUST pass mode: "bypassPermissions" to prevent permission prompts during unattended execution
|
|
89
|
+
|
|
90
|
+
## Local CI-mimic verification (MUST run before marking implement done)
|
|
91
|
+
|
|
92
|
+
After all implementation tasks complete, run these scripts in sequence and halt on failure:
|
|
93
|
+
|
|
94
|
+
1. bash .github/scripts/verify-template-sync.sh
|
|
95
|
+
2. bash .github/scripts/verify-wiki-sync.sh
|
|
96
|
+
|
|
97
|
+
If either fails:
|
|
98
|
+
- For wiki-sync failures: delegate to wiki-curator to generate missing pages (`/omcustom:wiki ingest <path>`)
|
|
99
|
+
- For template-sync failures: delegate to mgr-updater to sync `.claude/` -> `templates/.claude/`
|
|
100
|
+
- After fixes, re-run the scripts until both pass
|
|
101
|
+
|
|
102
|
+
This mirrors CI and prevents the known 1-2 wasted push cycles per release (ref: issue #927, v0.98.0 PR #925).
|
|
103
|
+
description: "Per-issue implementation with lifecycle, specialist routing, and CI-mimic verification"
|
|
104
|
+
depends_on: deep-plan
|
|
105
|
+
|
|
106
|
+
- name: verify-build
|
|
107
|
+
prompt: |
|
|
108
|
+
Project-specific build and test verification.
|
|
109
|
+
|
|
110
|
+
Auto-detect project type and run appropriate checks:
|
|
111
|
+
- Node/Bun: package.json → install + lint + type-check + test
|
|
112
|
+
- Python: py_compile + pytest
|
|
113
|
+
- Go: go build + go vet + go test
|
|
114
|
+
- Docker: docker build (if Dockerfile exists)
|
|
115
|
+
- Static site: file existence + format validation
|
|
116
|
+
|
|
117
|
+
Halt on first failure. Report exact command + stderr.
|
|
118
|
+
Do NOT proceed to release if any check fails.
|
|
119
|
+
description: "Auto-detected build + test verification"
|
|
120
|
+
depends_on: implement
|
|
121
|
+
|
|
122
|
+
- name: deep-verify
|
|
123
|
+
skill: deep-verify
|
|
124
|
+
description: "Multi-angle release quality verification"
|
|
125
|
+
depends_on: verify-build
|
|
126
|
+
|
|
127
|
+
- name: release
|
|
128
|
+
prompt: |
|
|
129
|
+
Create a GitHub Release.
|
|
130
|
+
|
|
131
|
+
1. Version:
|
|
132
|
+
- No existing tags → v0.1.0
|
|
133
|
+
- Otherwise: semver bump (patch for bugfix, minor for features)
|
|
134
|
+
2. Release notes via omcustom-release-notes skill
|
|
135
|
+
3. Delegate to mgr-gitnerd:
|
|
136
|
+
- git tag + push
|
|
137
|
+
- gh release create
|
|
138
|
+
4. Close milestone
|
|
139
|
+
5. Close verify-ready issues with "Fixed in v{version}"
|
|
140
|
+
Label needs-review issues as "Deferred from v{version}"
|
|
141
|
+
|
|
142
|
+
Adapt release mechanism to project:
|
|
143
|
+
- npm project: PR + merge + npm publish verification
|
|
144
|
+
- Non-npm: direct tag on main (trunk-based)
|
|
145
|
+
description: "Git tag + GitHub Release + close milestone/issues"
|
|
146
|
+
depends_on: deep-verify
|
|
147
|
+
|
|
148
|
+
- name: ci-check
|
|
149
|
+
prompt: |
|
|
150
|
+
Post-release CI verification.
|
|
151
|
+
|
|
152
|
+
1. Check if .github/workflows/ has CI workflows
|
|
153
|
+
If NOT: skip with "No CI configured. Skipping." and continue.
|
|
154
|
+
2. If CI exists:
|
|
155
|
+
- gh run list --limit 5
|
|
156
|
+
- Wait for runs triggered by the new tag/push
|
|
157
|
+
- If failures: diagnose, fix, re-verify
|
|
158
|
+
3. For npm projects: verify npm publish succeeded (npm view <pkg> version)
|
|
159
|
+
4. Report final CI status.
|
|
160
|
+
description: "Post-release CI verification and fix loop"
|
|
161
|
+
depends_on: release
|
|
162
|
+
|
|
163
|
+
- name: post-release-followup
|
|
164
|
+
skill: post-release-followup
|
|
165
|
+
description: "Register follow-ups from this release as new issues"
|
|
166
|
+
depends_on: ci-check
|
|
@@ -46,9 +46,9 @@ Remove duplicates (same issue referenced from multiple sources). Categorize:
|
|
|
46
46
|
|
|
47
47
|
| Category | Criteria | Default Action |
|
|
48
48
|
|----------|----------|----------------|
|
|
49
|
-
|
|
|
50
|
-
|
|
|
51
|
-
|
|
|
49
|
+
| **즉시 실행** | P1/P2 잔여 이슈, MEDIUM+ 검증 발견사항, Critical/High PR 리뷰 발견사항 | 즉시 실행 |
|
|
50
|
+
| **이슈 등록** | P3 이슈, LOW 검증 발견사항, 새 TODO, Medium PR 리뷰 발견사항 | 이슈로 등록 |
|
|
51
|
+
| **참고** | 이미 추적 중인 이슈, 외관 관련 메모 | 건너뛰기 |
|
|
52
52
|
|
|
53
53
|
### 3. Present to User
|
|
54
54
|
|
|
@@ -117,8 +117,8 @@ When creating follow-up issues:
|
|
|
117
117
|
|
|
118
118
|
```bash
|
|
119
119
|
gh issue create \
|
|
120
|
-
--title "{
|
|
121
|
-
--body "##
|
|
120
|
+
--title "{간결한 설명}" \
|
|
121
|
+
--body "## 출처\n\nv{version} 릴리즈 워크플로우에서 발견.\n\n## 컨텍스트\n\n{triage/verify에서의 상세 컨텍스트}\n\n## 권장 조치\n\n{권장 사항}" \
|
|
122
122
|
--label "professor"
|
|
123
123
|
```
|
|
124
124
|
|
|
@@ -132,3 +132,7 @@ Add priority label (`P1`, `P2`, `P3`) based on categorization.
|
|
|
132
132
|
- Issue creation uses `gh` CLI directly (read-only operation pattern)
|
|
133
133
|
- If no follow-up candidates found, report "No follow-up actions needed" and complete
|
|
134
134
|
- PR review feedback is available shortly after PR creation — the omc_pr_analyzer bot comments automatically
|
|
135
|
+
|
|
136
|
+
## Permission Mode
|
|
137
|
+
|
|
138
|
+
When spawning agents via the Agent tool during this skill's execution, always pass `mode: "bypassPermissions"`. The Agent tool default (`acceptEdits`) overrides agent frontmatter `permissionMode`, causing permission prompts during unattended execution.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: professor-triage
|
|
3
3
|
description: Analyze GitHub issues against current codebase and perform automated triage with priority assessment
|
|
4
4
|
scope: harness
|
|
5
|
-
version: 2.
|
|
5
|
+
version: 2.2.0
|
|
6
6
|
user-invocable: true
|
|
7
7
|
effort: high
|
|
8
8
|
context: fork
|
|
@@ -126,27 +126,27 @@ For each analyzed issue, generate multi-perspective analysis comments and artifa
|
|
|
126
126
|
```
|
|
127
127
|
## 🏛️ Senior Architect Analysis
|
|
128
128
|
|
|
129
|
-
###
|
|
130
|
-
|
|
|
131
|
-
|
|
132
|
-
| {
|
|
129
|
+
### 아키텍처 영향
|
|
130
|
+
| 컴포넌트 | 영향 | 위험도 |
|
|
131
|
+
|----------|------|--------|
|
|
132
|
+
| {컴포넌트} | {설명} | {High/Medium/Low} |
|
|
133
133
|
|
|
134
|
-
###
|
|
135
|
-
{
|
|
134
|
+
### 코드 수준 분석
|
|
135
|
+
{Phase 2 코드베이스 분석의 구체적 file:line 참조}
|
|
136
136
|
|
|
137
|
-
###
|
|
138
|
-
-
|
|
139
|
-
-
|
|
137
|
+
### 전략적 평가
|
|
138
|
+
- **실현 가능성**: {근거가 포함된 평가}
|
|
139
|
+
- **우선순위 권장**: {P1/P2/P3 및 근거}
|
|
140
140
|
|
|
141
|
-
###
|
|
142
|
-
|
|
|
143
|
-
|
|
144
|
-
| {
|
|
141
|
+
### 리스크 및 고려사항
|
|
142
|
+
| 리스크 | 가능성 | 완화 방안 |
|
|
143
|
+
|--------|--------|----------|
|
|
144
|
+
| {리스크} | {High/Medium/Low} | {완화 방안} |
|
|
145
145
|
|
|
146
|
-
|
|
146
|
+
**예상 작업량**: {XS/S/M/L/XL}
|
|
147
147
|
|
|
148
148
|
---
|
|
149
|
-
_🏛️ Senior Architect perspective — `/professor-triage` v2.
|
|
149
|
+
_🏛️ Senior Architect perspective — `/professor-triage` v2.2.0_
|
|
150
150
|
```
|
|
151
151
|
|
|
152
152
|
**4B: 🤝 Project Colleague Review** — Delegate to arch-documenter (model: sonnet) to post GitHub comment:
|
|
@@ -154,19 +154,19 @@ _🏛️ Senior Architect perspective — `/professor-triage` v2.1.0_
|
|
|
154
154
|
```
|
|
155
155
|
## 🤝 Project Colleague Review
|
|
156
156
|
|
|
157
|
-
###
|
|
158
|
-
{
|
|
157
|
+
### 구현 아이디어
|
|
158
|
+
{구체적 코드 위치 및 file:line 참조가 포함된 변경 제안}
|
|
159
159
|
|
|
160
|
-
###
|
|
161
|
-
- {
|
|
160
|
+
### 놓치기 쉬운 세부사항
|
|
161
|
+
- {이름 충돌, 유효성 검사 우회, 경쟁 조건, 엣지 케이스}
|
|
162
162
|
|
|
163
|
-
###
|
|
164
|
-
1. {
|
|
165
|
-
2. {
|
|
166
|
-
3. {
|
|
163
|
+
### 권장 다음 단계
|
|
164
|
+
1. {구체적 file/function 참조가 포함된 실행 가능한 단계}
|
|
165
|
+
2. {실행 가능한 단계}
|
|
166
|
+
3. {실행 가능한 단계}
|
|
167
167
|
|
|
168
168
|
---
|
|
169
|
-
_🤝 Project Colleague perspective — `/professor-triage` v2.
|
|
169
|
+
_🤝 Project Colleague perspective — `/professor-triage` v2.2.0_
|
|
170
170
|
```
|
|
171
171
|
|
|
172
172
|
Note: Do NOT include a "First Impressions" (첫인상) section in the Colleague Review — this was explicitly excluded per user feedback.
|
|
@@ -176,38 +176,38 @@ Note: Do NOT include a "First Impressions" (첫인상) section in the Colleague
|
|
|
176
176
|
```
|
|
177
177
|
## 🎓 Professor Synthesis
|
|
178
178
|
|
|
179
|
-
###
|
|
180
|
-
|
|
|
181
|
-
|
|
182
|
-
| {
|
|
179
|
+
### 코드베이스 검증
|
|
180
|
+
| 주장 (Architect/Colleague) | 검증 | 근거 |
|
|
181
|
+
|---------------------------|------|------|
|
|
182
|
+
| {주장} | ✅/⚠️/❌ | {file:line 또는 git 근거} |
|
|
183
183
|
|
|
184
|
-
###
|
|
185
|
-
|
|
|
186
|
-
|
|
187
|
-
| {
|
|
184
|
+
### 합의 및 이견
|
|
185
|
+
| 주제 | Architect | Colleague | 판정 |
|
|
186
|
+
|------|-----------|-----------|------|
|
|
187
|
+
| {주제} | {입장} | {입장} | {종합 판단} |
|
|
188
188
|
|
|
189
|
-
###
|
|
190
|
-
|
|
|
191
|
-
|
|
192
|
-
|
|
|
193
|
-
|
|
|
194
|
-
|
|
|
195
|
-
|
|
|
189
|
+
### 우선순위 매트릭스
|
|
190
|
+
| 차원 | 평가 |
|
|
191
|
+
|------|------|
|
|
192
|
+
| 긴급성 | {High/Medium/Low} |
|
|
193
|
+
| 중요성 | {High/Medium/Low} |
|
|
194
|
+
| 규모 | {XS/S/M/L/XL} |
|
|
195
|
+
| 권장 순서 | {배치 내 N/M} |
|
|
196
196
|
|
|
197
|
-
###
|
|
198
|
-
{
|
|
197
|
+
### 누락된 관점
|
|
198
|
+
{Architect나 Colleague 모두 제기하지 않은 고려사항}
|
|
199
199
|
|
|
200
|
-
###
|
|
201
|
-
|
|
|
202
|
-
|
|
203
|
-
| 1 | {
|
|
204
|
-
| 2 | {
|
|
200
|
+
### 실행 로드맵
|
|
201
|
+
| 단계 | 작업 | 파일 | 의존성 |
|
|
202
|
+
|------|------|------|--------|
|
|
203
|
+
| 1 | {작업} | {파일} | — |
|
|
204
|
+
| 2 | {작업} | {파일} | 단계 1 |
|
|
205
205
|
|
|
206
|
-
###
|
|
207
|
-
{
|
|
206
|
+
### 최종 결론
|
|
207
|
+
{확정적 권장 사항이 포함된 2-3문장 종합}
|
|
208
208
|
|
|
209
209
|
---
|
|
210
|
-
_🎓 Professor Synthesis — `/professor-triage` v2.
|
|
210
|
+
_🎓 Professor Synthesis — `/professor-triage` v2.2.0_
|
|
211
211
|
```
|
|
212
212
|
|
|
213
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:
|
|
@@ -215,14 +215,14 @@ _🎓 Professor Synthesis — `/professor-triage` v2.1.0_
|
|
|
215
215
|
```
|
|
216
216
|
## 🔬 Professor Triage — Codebase Analysis Result
|
|
217
217
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
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
223
|
|
|
224
224
|
---
|
|
225
|
-
|
|
225
|
+
_`/professor-triage` v2.2.0에 의해 현재 코드베이스 대비 분석됨 — 관련 이슈 {N}개_
|
|
226
226
|
```
|
|
227
227
|
|
|
228
228
|
**4E: Artifact Report** — Delegate to arch-documenter to write:
|
|
@@ -233,37 +233,37 @@ Timestamps use local machine time (consistent with other artifact skills).
|
|
|
233
233
|
|
|
234
234
|
Template:
|
|
235
235
|
```
|
|
236
|
-
# Professor Triage
|
|
236
|
+
# Professor Triage 리포트 — YYYY-MM-DD
|
|
237
237
|
|
|
238
|
-
##
|
|
239
|
-
| # |
|
|
240
|
-
|
|
238
|
+
## 분석 대상
|
|
239
|
+
| # | 제목 | 라벨 | 생성일 |
|
|
240
|
+
|---|------|------|--------|
|
|
241
241
|
|
|
242
|
-
##
|
|
242
|
+
## 이슈별 분석
|
|
243
243
|
### #NNN — title
|
|
244
|
-
-
|
|
245
|
-
-
|
|
246
|
-
-
|
|
247
|
-
-
|
|
248
|
-
-
|
|
249
|
-
-
|
|
250
|
-
-
|
|
251
|
-
|
|
252
|
-
##
|
|
253
|
-
###
|
|
254
|
-
###
|
|
255
|
-
###
|
|
256
|
-
###
|
|
257
|
-
|
|
258
|
-
##
|
|
259
|
-
### Architect
|
|
260
|
-
### Colleague
|
|
261
|
-
### Professor Synthesis
|
|
262
|
-
|
|
263
|
-
##
|
|
264
|
-
|
|
|
265
|
-
|
|
266
|
-
##
|
|
244
|
+
- **영향 파일**: N개 분석 — N✅ N⚠️ N❌
|
|
245
|
+
- **아키텍처 영향**: ...
|
|
246
|
+
- **구현 경로**: ...
|
|
247
|
+
- **리스크/우선순위**: P1/P2/P3
|
|
248
|
+
- **규모**: XS/S/M/L/XL
|
|
249
|
+
- **이미 해결됨?**: Yes/No/Partial — 근거
|
|
250
|
+
- **권장 조치**: ...
|
|
251
|
+
|
|
252
|
+
## 교차 분석
|
|
253
|
+
### 공통 패턴
|
|
254
|
+
### 중복/병합 후보
|
|
255
|
+
### 상충 발견사항 해결
|
|
256
|
+
### 우선순위 매트릭스
|
|
257
|
+
|
|
258
|
+
## 다관점 요약
|
|
259
|
+
### Architect 주요 사항
|
|
260
|
+
### Colleague 주요 사항
|
|
261
|
+
### Professor Synthesis 핵심 포인트
|
|
262
|
+
|
|
263
|
+
## 실행된 조치
|
|
264
|
+
| 이슈 | 조치 | 상태 |
|
|
265
|
+
|
|
266
|
+
## 보류 중인 조치 (확인 필요)
|
|
267
267
|
```
|
|
268
268
|
|
|
269
269
|
### Phase 4F: Comment Verification Gate
|
|
@@ -319,3 +319,7 @@ Present to user and wait for approval before executing:
|
|
|
319
319
|
- Phase 4F: Verification gate for all 4 comment types
|
|
320
320
|
- Phase 5: `mgr-gitnerd` for all GitHub operations
|
|
321
321
|
- No external dependencies (omc_issue_analyzer removed in v2.0.0, multi-perspective analysis restored in v2.1.0)
|
|
322
|
+
|
|
323
|
+
## Permission Mode
|
|
324
|
+
|
|
325
|
+
When spawning agents via the Agent tool during this skill's execution, always pass `mode: "bypassPermissions"`. The Agent tool default (`acceptEdits`) overrides agent frontmatter `permissionMode`, causing permission prompts during unattended execution.
|
|
@@ -45,12 +45,21 @@ quality_analysis → qa-planner + qa-engineer (parallel)
|
|
|
45
45
|
full_qa_cycle → all agents (sequential)
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
> **Permission Mode**: When spawning agents, pass `mode: "bypassPermissions"
|
|
48
|
+
> **Permission Mode**: When spawning agents via Agent tool, always pass `mode: "bypassPermissions"`. The Agent tool default (`acceptEdits`) overrides agent frontmatter `permissionMode`, causing permission prompts during unattended execution.
|
|
49
49
|
|
|
50
50
|
### Ontology-RAG Enrichment (R019)
|
|
51
51
|
|
|
52
52
|
If `get_agent_for_task` MCP tool is available, call it with the original query and inject `suggested_skills` into the agent prompt. Skip silently on failure.
|
|
53
53
|
|
|
54
|
+
### Wiki-RAG Enrichment
|
|
55
|
+
|
|
56
|
+
For ambiguous routing (confidence < 90%), query the wiki for context:
|
|
57
|
+
|
|
58
|
+
1. Search `wiki/index.yaml` for QA-related pages matching the request
|
|
59
|
+
2. Inject relevant skill/guide suggestions into the spawned agent's prompt
|
|
60
|
+
|
|
61
|
+
Advisory only — skip silently if wiki unavailable.
|
|
62
|
+
|
|
54
63
|
### Step 5: Soul Injection (R006)
|
|
55
64
|
|
|
56
65
|
If the selected agent has `soul: true` in frontmatter, read and prepend `.claude/agents/souls/{agent-name}.soul.md` content to the prompt. Skip silently if file doesn't exist.
|
|
@@ -131,21 +131,21 @@ Apply semantic versioning to each release group in sequence:
|
|
|
131
131
|
For each release group, produce:
|
|
132
132
|
|
|
133
133
|
```markdown
|
|
134
|
-
## vX.Y.Z
|
|
134
|
+
## vX.Y.Z 릴리즈 계획
|
|
135
135
|
|
|
136
|
-
|
|
136
|
+
**예상 범위**: {XS|S|M|L 합계} | **이슈**: N | **병렬 가능**: N
|
|
137
137
|
|
|
138
|
-
| # |
|
|
139
|
-
|
|
140
|
-
| #NNN | P2 | S |
|
|
141
|
-
| #NNN | P1 | XS |
|
|
138
|
+
| # | 우선순위 | 규모 | 제목 | 의존성 |
|
|
139
|
+
|---|----------|------|------|--------|
|
|
140
|
+
| #NNN | P2 | S | 이슈 제목 | 없음 |
|
|
141
|
+
| #NNN | P1 | XS | 이슈 제목 | 없음 |
|
|
142
142
|
|
|
143
|
-
###
|
|
144
|
-
1. #NNN — {
|
|
145
|
-
2. #NNN — {
|
|
143
|
+
### 구현 순서
|
|
144
|
+
1. #NNN — {한줄 설명} (권장 에이전트: {agent-type})
|
|
145
|
+
2. #NNN — {한줄 설명} (권장 에이전트: {agent-type})
|
|
146
146
|
|
|
147
|
-
###
|
|
148
|
-
- {
|
|
147
|
+
### 참고 사항
|
|
148
|
+
- {의존성 제약, 호환성 이슈, 리스크 등}
|
|
149
149
|
```
|
|
150
150
|
|
|
151
151
|
### Completeness Check
|
|
@@ -159,18 +159,18 @@ Before generating the plan document, verify:
|
|
|
159
159
|
If any issue is missing from release bins, halt and report the discrepancy.
|
|
160
160
|
|
|
161
161
|
**Agent suggestion heuristic**:
|
|
162
|
-
|
|
|
163
|
-
|
|
164
|
-
|
|
|
165
|
-
|
|
|
166
|
-
|
|
|
167
|
-
|
|
|
162
|
+
| 이슈 도메인 | 권장 에이전트 |
|
|
163
|
+
|-------------|--------------|
|
|
164
|
+
| 문서, CLAUDE.md, README | arch-documenter |
|
|
165
|
+
| 규칙 (R00x) | mgr-claude-code-bible |
|
|
166
|
+
| 에이전트 (.claude/agents/) | mgr-creator / mgr-updater |
|
|
167
|
+
| 스킬 (.claude/skills/) | mgr-creator / mgr-updater |
|
|
168
168
|
| CI, GitHub Actions | mgr-gitnerd |
|
|
169
169
|
| TypeScript/Node | lang-typescript-expert |
|
|
170
170
|
| Python | lang-python-expert |
|
|
171
171
|
| Go | lang-golang-expert |
|
|
172
|
-
|
|
|
173
|
-
|
|
|
172
|
+
| 테스트 | qa-engineer |
|
|
173
|
+
| 일반 수정 | general-purpose |
|
|
174
174
|
|
|
175
175
|
### Phase 7: Output
|
|
176
176
|
|
|
@@ -184,16 +184,16 @@ Use today's date and the first planned release version in the filename.
|
|
|
184
184
|
|
|
185
185
|
File header format:
|
|
186
186
|
```markdown
|
|
187
|
-
#
|
|
187
|
+
# 릴리즈 계획 — YYYY-MM-DD 생성
|
|
188
188
|
|
|
189
|
-
>
|
|
190
|
-
>
|
|
189
|
+
> 출처: YYYY-MM-DD 기준 `verify-done` 라벨 오픈 이슈
|
|
190
|
+
> 제외된 이슈 (이미 오픈 PR에 포함): #NNN, #NNN
|
|
191
191
|
|
|
192
|
-
{
|
|
192
|
+
{릴리즈 그룹}
|
|
193
193
|
|
|
194
|
-
##
|
|
195
|
-
|
|
|
196
|
-
|
|
194
|
+
## 요약
|
|
195
|
+
| 릴리즈 | 이슈 수 | 규모 | P1 | P2 | P3 |
|
|
196
|
+
|--------|---------|------|----|----|-----|
|
|
197
197
|
| vX.Y.Z | N | S | 0 | 3 | 1 |
|
|
198
198
|
```
|
|
199
199
|
|
|
@@ -205,3 +205,7 @@ File header format:
|
|
|
205
205
|
- User confirms before any downstream action (implementation, commits)
|
|
206
206
|
- Zero network calls except `gh` CLI (local API)
|
|
207
207
|
- If no eligible issues found, report and stop — do not generate empty plan
|
|
208
|
+
|
|
209
|
+
## Permission Mode
|
|
210
|
+
|
|
211
|
+
When spawning agents via the Agent tool during this skill's execution, always pass `mode: "bypassPermissions"`. The Agent tool default (`acceptEdits`) overrides agent frontmatter `permissionMode`, causing permission prompts during unattended execution.
|
|
@@ -16,7 +16,7 @@ Routes agent management tasks to the appropriate manager agent. This skill conta
|
|
|
16
16
|
|
|
17
17
|
| Agent | Purpose | Triggers |
|
|
18
18
|
|-------|---------|----------|
|
|
19
|
-
| mgr-creator | Create new agents | "create agent", "new agent" |
|
|
19
|
+
| mgr-creator | Create new agents, skills, guides | "create agent", "new agent", "create skill", "new skill", "create guide", "new guide" |
|
|
20
20
|
| mgr-updater | Update external agents | "update agent", "sync" |
|
|
21
21
|
| mgr-supplier | Validate dependencies | "audit", "check deps" |
|
|
22
22
|
| mgr-gitnerd | Git operations | "commit", "push", "pr" |
|
|
@@ -44,6 +44,8 @@ Before routing via Task tool, evaluate Agent Teams eligibility first:
|
|
|
44
44
|
User Input → Routing → Manager Agent
|
|
45
45
|
|
|
46
46
|
create → mgr-creator
|
|
47
|
+
create skill → mgr-creator
|
|
48
|
+
create guide → mgr-creator
|
|
47
49
|
update → mgr-updater
|
|
48
50
|
audit → mgr-supplier
|
|
49
51
|
git → mgr-gitnerd
|
|
@@ -64,6 +66,20 @@ batch → multiple (parallel)
|
|
|
64
66
|
|
|
65
67
|
If `get_agent_for_task` MCP tool is available, call it with the original query and inject `suggested_skills` into the agent prompt. Skip silently on failure.
|
|
66
68
|
|
|
69
|
+
### Step 4b: Wiki-RAG Enrichment
|
|
70
|
+
|
|
71
|
+
If the user's request is ambiguous or confidence is below 90%, query the wiki for additional context:
|
|
72
|
+
|
|
73
|
+
1. Search `wiki/index.yaml` for pages matching the detected domain keywords
|
|
74
|
+
2. Extract relevant agent/skill/guide recommendations from wiki pages
|
|
75
|
+
3. Inject findings into the routing decision as supplementary signals
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
wiki-rag query: "{user_request}" → wiki pages → agent/skill/guide suggestions
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Wiki-RAG enrichment is advisory — it supplements but does not override keyword matching. Skip silently if wiki/index.yaml doesn't exist.
|
|
82
|
+
|
|
67
83
|
### Step 5: Soul Injection (R006)
|
|
68
84
|
|
|
69
85
|
If the selected agent has `soul: true` in frontmatter, read and prepend `.claude/agents/souls/{agent-name}.soul.md` content to the prompt. Skip silently if file doesn't exist.
|
|
@@ -80,7 +96,7 @@ If the selected agent has `soul: true` in frontmatter, read and prepend `.claude
|
|
|
80
96
|
5. Report result to user
|
|
81
97
|
```
|
|
82
98
|
|
|
83
|
-
> **Permission Mode**: When spawning agents, pass `mode: "bypassPermissions"
|
|
99
|
+
> **Permission Mode**: When spawning agents via Agent tool, always pass `mode: "bypassPermissions"`. The Agent tool default (`acceptEdits`) overrides agent frontmatter `permissionMode`, causing permission prompts during unattended execution.
|
|
84
100
|
|
|
85
101
|
### 2. Batch/Parallel Task Routing
|
|
86
102
|
|
|
@@ -190,6 +190,10 @@ rm -f /tmp/.claude-dev-stage # Clear (disable blocking)
|
|
|
190
190
|
- **Single session**: The fixed path `/tmp/.claude-dev-stage` does not support concurrent Claude Code sessions. Running multiple sessions simultaneously may cause stage state conflicts.
|
|
191
191
|
- **World-writable path**: The `/tmp/` directory is accessible to all users. For multi-user environments, consider using a user-scoped path like `/tmp/.claude-dev-stage-$(id -u)`.
|
|
192
192
|
|
|
193
|
+
## Permission Mode
|
|
194
|
+
|
|
195
|
+
When spawning agents via the Agent tool during this skill's execution, always pass `mode: "bypassPermissions"`. The Agent tool default (`acceptEdits`) overrides agent frontmatter `permissionMode`, causing permission prompts during unattended execution.
|
|
196
|
+
|
|
193
197
|
## Display Format
|
|
194
198
|
|
|
195
199
|
```
|
package/templates/manifest.json
CHANGED