oh-my-customcode 0.101.0 → 0.103.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/README.md +5 -5
- package/dist/cli/index.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/templates/.claude/agents/arch-speckit-agent.md +1 -1
- package/templates/.claude/agents/be-springboot-expert.md +3 -3
- package/templates/.claude/agents/de-airflow-expert.md +2 -2
- package/templates/.claude/agents/de-dbt-expert.md +1 -0
- package/templates/.claude/agents/de-kafka-expert.md +2 -1
- package/templates/.claude/agents/de-spark-expert.md +3 -1
- package/templates/.claude/agents/fe-flutter-agent.md +3 -3
- package/templates/.claude/agents/lang-java-expert.md +42 -0
- package/templates/.claude/agents/slack-cli-expert.md +1 -1
- package/templates/.claude/hooks/hooks.json +10 -0
- package/templates/.claude/hooks/scripts/playwright-compress.sh +50 -0
- package/templates/.claude/ontology/agents.yaml +2 -2
- package/templates/.claude/ontology/skills.yaml +1 -1
- package/templates/.claude/rules/MUST-orchestrator-coordination.md +29 -0
- package/templates/.claude/skills/adaptive-harness/SKILL.md +1 -1
- package/templates/.claude/skills/agora/SKILL.md +2 -0
- package/templates/.claude/skills/airflow-best-practices/SKILL.md +4 -4
- package/templates/.claude/skills/analysis/SKILL.md +1 -1
- package/templates/.claude/skills/dbt-best-practices/SKILL.md +5 -0
- package/templates/.claude/skills/design-shotgun/SKILL.md +104 -0
- package/templates/.claude/skills/dev-lead-routing/SKILL.md +3 -3
- package/templates/.claude/skills/django-best-practices/SKILL.md +1 -1
- package/templates/.claude/skills/evaluator-optimizer/SKILL.md +2 -0
- package/templates/.claude/skills/flutter-best-practices/SKILL.md +5 -5
- package/templates/.claude/skills/intent-detection/SKILL.md +2 -0
- package/templates/.claude/skills/intent-detection/patterns/agent-triggers.yaml +3 -3
- package/templates/.claude/skills/{java21-best-practices → java-best-practices}/SKILL.md +14 -14
- package/templates/.claude/skills/kafka-best-practices/SKILL.md +3 -1
- package/templates/.claude/skills/multi-model-verification/SKILL.md +2 -0
- package/templates/.claude/skills/playwright-compress/SKILL.md +68 -0
- package/templates/.claude/skills/pr-auto-improve/SKILL.md +1 -1
- package/templates/.claude/skills/product-strategy/SKILL.md +82 -0
- package/templates/.claude/skills/research/SKILL.md +2 -0
- package/templates/.claude/skills/spark-best-practices/SKILL.md +3 -1
- package/templates/.claude/skills/springboot-best-practices/SKILL.md +1 -1
- package/templates/.claude/skills/task-decomposition/SKILL.md +45 -1
- package/templates/.claude/skills/update-docs/SKILL.md +2 -2
- package/templates/.claude/skills/worker-reviewer-pipeline/SKILL.md +2 -0
- package/templates/CLAUDE.md +4 -3
- package/templates/guides/airflow/README.md +8 -8
- package/templates/guides/browser-automation/01-browser-automation-patterns.md +68 -0
- package/templates/guides/claude-code/14-token-efficiency.md +187 -0
- package/templates/guides/docker/compose-best-practices.md +3 -5
- package/templates/guides/docker/dockerfile-best-practices.md +9 -9
- package/templates/guides/flutter/index.yaml +1 -1
- package/templates/guides/flutter/state-management.md +4 -4
- package/templates/guides/index.yaml +9 -3
- package/templates/guides/{java21 → java}/index.yaml +9 -9
- package/templates/guides/{java21/modern-java21.md → java/modern-java.md} +2 -2
- package/templates/guides/slack-cli/README.md +1 -1
- package/templates/manifest.json +3 -3
- package/templates/.claude/agents/lang-java21-expert.md +0 -42
- /package/templates/guides/{java21 → java}/java-style-guide.md +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: Modern Java
|
|
2
|
+
name: java-best-practices
|
|
3
|
+
description: Modern Java 25 LTS patterns from Virtual Threads, Pattern Matching, Records, and Sealed Classes
|
|
4
4
|
scope: core
|
|
5
5
|
user-invocable: false
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
## Purpose
|
|
9
9
|
|
|
10
|
-
Apply modern Java
|
|
10
|
+
Apply modern Java 25 LTS patterns and best practices leveraging the latest language features for clean, performant, and maintainable Java code.
|
|
11
11
|
|
|
12
12
|
## Core Principles
|
|
13
13
|
|
|
@@ -44,7 +44,7 @@ records:
|
|
|
44
44
|
example: record Point(int x, int y) {}
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
Reference: guides/
|
|
47
|
+
Reference: guides/java/java-style-guide.md
|
|
48
48
|
|
|
49
49
|
### 2. Virtual Threads (JEP 444)
|
|
50
50
|
|
|
@@ -65,7 +65,7 @@ antipatterns:
|
|
|
65
65
|
- "synchronized blocks in Virtual Thread code — use ReentrantLock instead"
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
Reference: guides/
|
|
68
|
+
Reference: guides/java/modern-java.md
|
|
69
69
|
|
|
70
70
|
### 3. Pattern Matching
|
|
71
71
|
|
|
@@ -80,7 +80,7 @@ switch_patterns:
|
|
|
80
80
|
null_handling: "case null supported in switch"
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
-
Reference: guides/
|
|
83
|
+
Reference: guides/java/modern-java.md
|
|
84
84
|
|
|
85
85
|
### 4. Records (JEP 395)
|
|
86
86
|
|
|
@@ -100,7 +100,7 @@ antipatterns:
|
|
|
100
100
|
- "Using records for entities with behavior — prefer classes"
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
-
Reference: guides/
|
|
103
|
+
Reference: guides/java/modern-java.md
|
|
104
104
|
|
|
105
105
|
### 5. Record Patterns (JEP 440)
|
|
106
106
|
|
|
@@ -111,7 +111,7 @@ patterns:
|
|
|
111
111
|
nested: "Nested record patterns for deep destructuring"
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
-
Reference: guides/
|
|
114
|
+
Reference: guides/java/modern-java.md
|
|
115
115
|
|
|
116
116
|
### 6. Sealed Classes (JEP 409)
|
|
117
117
|
|
|
@@ -124,7 +124,7 @@ principles:
|
|
|
124
124
|
pattern: "sealed interface with record implementations, exhaustive switch (no default needed)"
|
|
125
125
|
```
|
|
126
126
|
|
|
127
|
-
Reference: guides/
|
|
127
|
+
Reference: guides/java/modern-java.md
|
|
128
128
|
|
|
129
129
|
### 7. Sequenced Collections (JEP 431)
|
|
130
130
|
|
|
@@ -136,7 +136,7 @@ principles:
|
|
|
136
136
|
methods: "getFirst(), getLast(), addFirst(), addLast(), reversed(), firstEntry()"
|
|
137
137
|
```
|
|
138
138
|
|
|
139
|
-
Reference: guides/
|
|
139
|
+
Reference: guides/java/modern-java.md
|
|
140
140
|
|
|
141
141
|
### 8. Text Blocks and String Features
|
|
142
142
|
|
|
@@ -146,7 +146,7 @@ patterns:
|
|
|
146
146
|
formatted: "String.formatted() for template substitution (since Java 15)"
|
|
147
147
|
```
|
|
148
148
|
|
|
149
|
-
Reference: guides/
|
|
149
|
+
Reference: guides/java/modern-java.md
|
|
150
150
|
|
|
151
151
|
### 9. Error Handling
|
|
152
152
|
|
|
@@ -162,7 +162,7 @@ patterns:
|
|
|
162
162
|
multi_catch: "catch (IOException | SQLException e) for related exceptions"
|
|
163
163
|
```
|
|
164
164
|
|
|
165
|
-
Reference: guides/
|
|
165
|
+
Reference: guides/java/java-style-guide.md
|
|
166
166
|
|
|
167
167
|
### 10. Documentation
|
|
168
168
|
|
|
@@ -174,11 +174,11 @@ best_practices:
|
|
|
174
174
|
- Keep Javadoc focused on "what", not "how"
|
|
175
175
|
```
|
|
176
176
|
|
|
177
|
-
Reference: guides/
|
|
177
|
+
Reference: guides/java/java-style-guide.md
|
|
178
178
|
|
|
179
179
|
## Application
|
|
180
180
|
|
|
181
|
-
When writing or reviewing Java
|
|
181
|
+
When writing or reviewing Java 25 LTS code:
|
|
182
182
|
|
|
183
183
|
1. **Use** Records for pure data classes over verbose POJOs
|
|
184
184
|
2. **Use** Sealed Classes + Pattern Matching for type hierarchies
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: kafka-best-practices
|
|
3
|
-
description: Apache Kafka best practices for event streaming, topic design, and producer-consumer patterns
|
|
3
|
+
description: Apache Kafka 4.2 best practices for event streaming, topic design, and producer-consumer patterns
|
|
4
4
|
scope: core
|
|
5
5
|
user-invocable: false
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Apache Kafka Best Practices
|
|
9
9
|
|
|
10
|
+
> **Version**: Kafka 4.2.0. ZooKeeper is fully removed in Kafka 4.x — use KRaft mode for all cluster deployments.
|
|
11
|
+
|
|
10
12
|
## Producer Patterns
|
|
11
13
|
|
|
12
14
|
### Idempotent Producer (CRITICAL)
|
|
@@ -128,3 +128,5 @@ Multi-model verification uses 3x the tokens of a single review. Reserve for:
|
|
|
128
128
|
- Security-sensitive modifications
|
|
129
129
|
- Architecture decisions
|
|
130
130
|
- Pre-release verification
|
|
131
|
+
|
|
132
|
+
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,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: playwright-compress
|
|
3
|
+
description: PostToolUse hook that compresses Playwright MCP tool output using Haiku summarization — Layer 4 of the token defense stack
|
|
4
|
+
scope: core
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
user-invocable: false
|
|
7
|
+
disable-model-invocation: true
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Playwright MCP Output Compression (Layer 4)
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
Reduces Playwright MCP tool output tokens by 94-96% using intelligent Haiku summarization while preserving `ref=` values for interactive flow continuity.
|
|
15
|
+
|
|
16
|
+
## Architecture
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
MCP tool response (37K+ chars)
|
|
20
|
+
↓ PostToolUse hook
|
|
21
|
+
↓ playwright-compress.sh
|
|
22
|
+
↓ claude -p --model haiku (summarize)
|
|
23
|
+
↓ updatedMCPToolOutput (1.4K-1.9K chars)
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Token Defense Stack Position
|
|
27
|
+
|
|
28
|
+
| Layer | Component | Mechanism | Scope |
|
|
29
|
+
|-------|-----------|-----------|-------|
|
|
30
|
+
| 1 | cc-token-saver | Time-based budget alerts | Session |
|
|
31
|
+
| 2 | R013 Ecomode | Context-aware output compression | Agent |
|
|
32
|
+
| 3 | MAX_MCP_OUTPUT_TOKENS | Hard truncation (lossy) | Setting |
|
|
33
|
+
| **4** | **playwright-compress** | **Intelligent summarization (lossless ref=)** | **Hook** |
|
|
34
|
+
|
|
35
|
+
## Behavior
|
|
36
|
+
|
|
37
|
+
- **Trigger**: PostToolUse on `mcp__playwright__.*` tools
|
|
38
|
+
- **Skip condition**: Output < 3000 characters (not worth compressing)
|
|
39
|
+
- **ref= preservation**: All `ref=` attribute values are extracted and preserved in the summary
|
|
40
|
+
- **Fallback**: If Haiku summarization fails, original output is returned unchanged
|
|
41
|
+
- **Auth**: Uses Claude subscription auth (`claude -p`), no API key needed
|
|
42
|
+
|
|
43
|
+
## Integration
|
|
44
|
+
|
|
45
|
+
| Rule | Interaction |
|
|
46
|
+
|------|-------------|
|
|
47
|
+
| R001 | No external data transmission — uses local `claude -p` |
|
|
48
|
+
| R013 | Complements Ecomode (Layer 2) with MCP-specific compression |
|
|
49
|
+
| R021 | Advisory PostToolUse hook — never blocks |
|
|
50
|
+
|
|
51
|
+
## Hook Configuration
|
|
52
|
+
|
|
53
|
+
Configured in `.claude/hooks/hooks.json` PostToolUse section:
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"matcher": "mcp_tool_name matches \"mcp__playwright__.*\" || mcp_tool_name matches \"mcp__claude-in-chrome__.*\"",
|
|
58
|
+
"hooks": [{
|
|
59
|
+
"type": "command",
|
|
60
|
+
"command": "bash .claude/hooks/scripts/playwright-compress.sh"
|
|
61
|
+
}],
|
|
62
|
+
"description": "Layer 4: Compress Playwright/Chrome MCP output via Haiku summarization"
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Source
|
|
67
|
+
|
|
68
|
+
Adapted from [treesoop/claude-native-plugin](https://github.com/treesoop/claude-native-plugin) playwright-optimizer (MIT).
|
|
@@ -96,7 +96,7 @@ User: "improve PR #215"
|
|
|
96
96
|
| *.py | lang-python-expert |
|
|
97
97
|
| *.go | lang-golang-expert |
|
|
98
98
|
| *.kt | lang-kotlin-expert |
|
|
99
|
-
| *.java | lang-
|
|
99
|
+
| *.java | lang-java-expert |
|
|
100
100
|
| *.rs | lang-rust-expert |
|
|
101
101
|
| Test files | qa-engineer |
|
|
102
102
|
| Docs, README | arch-documenter |
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: product-strategy
|
|
3
|
+
description: YC-style product strategy assessment with forced questions and CEO scope modes — adapted from gstack /office-hours pattern
|
|
4
|
+
scope: core
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
user-invocable: true
|
|
7
|
+
argument-hint: "[product/feature name]"
|
|
8
|
+
effort: high
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Product Strategy Assessment
|
|
12
|
+
|
|
13
|
+
## Purpose
|
|
14
|
+
|
|
15
|
+
Forces rigorous product thinking by applying YC's 6 mandatory questions before any major feature decision. Prevents "build first, think later" anti-pattern.
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
/product-strategy "new authentication system"
|
|
21
|
+
/product-strategy "API rate limiting redesign"
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Workflow
|
|
25
|
+
|
|
26
|
+
### Phase 1: YC Forced Questions
|
|
27
|
+
|
|
28
|
+
Before any implementation planning, answer ALL 6 questions. Incomplete answers block Phase 2.
|
|
29
|
+
|
|
30
|
+
| # | Question | Must Answer |
|
|
31
|
+
|---|----------|-------------|
|
|
32
|
+
| 1 | **Who is the user?** | Specific persona, not "everyone" |
|
|
33
|
+
| 2 | **What problem does this solve?** | Observable behavior, not assumed need |
|
|
34
|
+
| 3 | **How do they solve it today?** | Current workaround — if none exists, question the need |
|
|
35
|
+
| 4 | **Why is this solution better?** | Measurable improvement, not "it's newer" |
|
|
36
|
+
| 5 | **What's the smallest version that validates the hypothesis?** | MVP scope — ruthlessly cut |
|
|
37
|
+
| 6 | **How will you know it worked?** | Success metric, measurable within 2 weeks |
|
|
38
|
+
|
|
39
|
+
### Phase 2: CEO Scope Mode Assessment
|
|
40
|
+
|
|
41
|
+
Categorize the feature into one of 4 modes:
|
|
42
|
+
|
|
43
|
+
| Mode | Signal | Action |
|
|
44
|
+
|------|--------|--------|
|
|
45
|
+
| **Expansion** | Strong user signal + clear gap | Full implementation, invest aggressively |
|
|
46
|
+
| **Selective** | Mixed signals, some demand | Targeted implementation, measure before expanding |
|
|
47
|
+
| **Hold** | Low signal, maintenance only | Keep working, no new investment |
|
|
48
|
+
| **Reduction** | Negative signal, cost > value | Phase out, redirect resources |
|
|
49
|
+
|
|
50
|
+
### Phase 3: Output
|
|
51
|
+
|
|
52
|
+
Generate structured assessment:
|
|
53
|
+
|
|
54
|
+
```markdown
|
|
55
|
+
## Product Strategy: {feature}
|
|
56
|
+
|
|
57
|
+
### YC Assessment
|
|
58
|
+
1. User: {answer}
|
|
59
|
+
2. Problem: {answer}
|
|
60
|
+
3. Current solution: {answer}
|
|
61
|
+
4. Why better: {answer}
|
|
62
|
+
5. MVP: {answer}
|
|
63
|
+
6. Success metric: {answer}
|
|
64
|
+
|
|
65
|
+
### Scope Mode: {Expansion|Selective|Hold|Reduction}
|
|
66
|
+
Rationale: {why this mode}
|
|
67
|
+
|
|
68
|
+
### Recommendation
|
|
69
|
+
{Go / No-Go / Needs more data}
|
|
70
|
+
Next step: {specific action}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Integration
|
|
74
|
+
|
|
75
|
+
| Rule | Interaction |
|
|
76
|
+
|------|-------------|
|
|
77
|
+
| R010 | Orchestrator invokes skill; no file writes |
|
|
78
|
+
| R015 | Transparent assessment — user sees all reasoning |
|
|
79
|
+
|
|
80
|
+
## Source
|
|
81
|
+
|
|
82
|
+
Adapted from [garrytan/gstack](https://github.com/garrytan/gstack) /office-hours + /plan-ceo-review patterns.
|
|
@@ -491,3 +491,5 @@ Agent(
|
|
|
491
491
|
| dag-orchestration | Phase sequencing follows DAG pattern |
|
|
492
492
|
| result-aggregation | Team results formatted per aggregation skill |
|
|
493
493
|
| multi-model-verification | Phase 2 uses multi-model verification pattern |
|
|
494
|
+
|
|
495
|
+
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.
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spark-best-practices
|
|
3
|
-
description: Apache Spark best practices for PySpark and Scala distributed data processing
|
|
3
|
+
description: Apache Spark 4.0.2 best practices for PySpark and Scala distributed data processing
|
|
4
4
|
scope: core
|
|
5
5
|
user-invocable: false
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Apache Spark Best Practices
|
|
9
9
|
|
|
10
|
+
> **Version**: Spark 4.0.2. Key changes from Spark 3.x: ANSI mode is now **default** (stricter SQL type coercion and overflow checks), and Spark Connect provides a decoupled client-server protocol for remote Spark access.
|
|
11
|
+
|
|
10
12
|
## Performance Optimization
|
|
11
13
|
|
|
12
14
|
### Broadcast Joins (CRITICAL)
|
|
@@ -48,6 +48,12 @@ Before decomposing, select the appropriate workflow pattern:
|
|
|
48
48
|
├── Map subtasks to agents (use routing skills)
|
|
49
49
|
└── Generate DAG workflow spec
|
|
50
50
|
|
|
51
|
+
2.5. Validate granularity against pipeline-guards limits:
|
|
52
|
+
├── For each subtask, estimate file count
|
|
53
|
+
├── If files > 10 → emit advisory: [Guard] ⚠ Subtask "{id}" assigned {n} files (> 10) — splitting by layer
|
|
54
|
+
├── If files > 15 → emit hard warning: [Guard] 🛑 Subtask "{id}" assigned {n} files (> 15) — must split
|
|
55
|
+
└── Auto-split oversized subtasks by layer/domain until all ≤ 10
|
|
56
|
+
|
|
51
57
|
3. Present plan to user (R015 transparency)
|
|
52
58
|
├── Show decomposed subtasks with agents
|
|
53
59
|
├── Show dependency graph
|
|
@@ -172,10 +178,43 @@ A subtask is **atomic** when it meets ALL of:
|
|
|
172
178
|
- Single concern (one logical change)
|
|
173
179
|
- Independently testable outcome
|
|
174
180
|
- < 15 minutes estimated duration
|
|
175
|
-
- < 3 files affected
|
|
181
|
+
- < 3 files affected (ideal atomic size)
|
|
182
|
+
- MUST NOT exceed 10 files (pipeline-guards advisory threshold)
|
|
183
|
+
- If > 10 files unavoidable → emit [Guard] warning and split by layer/domain
|
|
184
|
+
- > 15 files is a hard violation — always split further (pipeline-guards hard cap)
|
|
176
185
|
|
|
177
186
|
If a subtask is not atomic → decompose further (max 2 levels deep).
|
|
178
187
|
|
|
188
|
+
## Granularity Validation
|
|
189
|
+
|
|
190
|
+
After decomposition, validate each subtask against pipeline-guards file limits:
|
|
191
|
+
|
|
192
|
+
| Subtask Files | Action |
|
|
193
|
+
|---------------|--------|
|
|
194
|
+
| ≤ 3 | Ideal atomic size — no action |
|
|
195
|
+
| 4-10 | Acceptable — proceed without warning |
|
|
196
|
+
| 11-15 | Advisory warning, attempt further split |
|
|
197
|
+
| > 15 | Hard warning, MUST split before execution |
|
|
198
|
+
|
|
199
|
+
### Validation Process
|
|
200
|
+
|
|
201
|
+
For each decomposed subtask:
|
|
202
|
+
1. Count estimated files
|
|
203
|
+
2. If > 10:
|
|
204
|
+
a. Emit: `[Guard] ⚠ Subtask "{id}" assigned {n} files (> 10) — splitting by layer`
|
|
205
|
+
b. Attempt split by: layer (domain → adapter → handler) or domain separation
|
|
206
|
+
c. Re-validate split results
|
|
207
|
+
3. If > 15 after split attempt:
|
|
208
|
+
a. Emit: `[Guard] 🛑 Subtask "{id}" still has {n} files (> 15) — requires user override`
|
|
209
|
+
b. Pause for user confirmation before proceeding
|
|
210
|
+
|
|
211
|
+
### Generated DAG Adjustment
|
|
212
|
+
|
|
213
|
+
When granularity validation triggers a split, update the DAG spec:
|
|
214
|
+
- Original node is replaced by 2+ child nodes
|
|
215
|
+
- Dependencies are preserved (children inherit parent's deps)
|
|
216
|
+
- `max_parallel` in config respects R009 limits (soft: 4, hard: 5)
|
|
217
|
+
|
|
179
218
|
## Skip Decomposition When
|
|
180
219
|
|
|
181
220
|
| Condition | Reason |
|
|
@@ -185,6 +224,10 @@ If a subtask is not atomic → decompose further (max 2 levels deep).
|
|
|
185
224
|
| User explicitly requests "just do it" | User override |
|
|
186
225
|
| Single domain, single agent | No parallelization benefit |
|
|
187
226
|
|
|
227
|
+
## Permission Mode
|
|
228
|
+
|
|
229
|
+
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.
|
|
230
|
+
|
|
188
231
|
## Integration
|
|
189
232
|
|
|
190
233
|
| Component | Integration |
|
|
@@ -195,3 +238,4 @@ If a subtask is not atomic → decompose further (max 2 levels deep).
|
|
|
195
238
|
| R010 | Decomposition happens in orchestrator only |
|
|
196
239
|
| R015 | Plan displayed before execution for user approval |
|
|
197
240
|
| R018 | 3+ agents in plan → check Agent Teams eligibility |
|
|
241
|
+
| pipeline-guards | Validates subtask file count against 10/15 granularity limits |
|
|
@@ -99,7 +99,7 @@ Scanning project structure...
|
|
|
99
99
|
|
|
100
100
|
Agents:
|
|
101
101
|
✓ 15 agents found in .claude/agents/
|
|
102
|
-
✗ Missing: lang-
|
|
102
|
+
✗ Missing: lang-java-expert.md (referenced but not found)
|
|
103
103
|
|
|
104
104
|
Skills:
|
|
105
105
|
✓ 13 skills found in .claude/skills/
|
|
@@ -123,7 +123,7 @@ Run "/update-docs" to fix.
|
|
|
123
123
|
Syncing documentation with project structure...
|
|
124
124
|
|
|
125
125
|
[1/3] Verifying agents
|
|
126
|
-
- Removed reference: lang-
|
|
126
|
+
- Removed reference: lang-java-expert (not found)
|
|
127
127
|
✓ 15 → 14 agents
|
|
128
128
|
|
|
129
129
|
[2/3] Verifying skills
|
|
@@ -163,3 +163,5 @@ config: {max_iterations: 1, quality_gate: majority_pass}
|
|
|
163
163
|
- Worker and Reviewer must be different agent instances (same type allowed)
|
|
164
164
|
- Nested pipelines not supported (use dag-orchestration for complex flows)
|
|
165
165
|
- Pipeline does not auto-commit; orchestrator decides post-pipeline actions
|
|
166
|
+
|
|
167
|
+
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.
|
package/templates/CLAUDE.md
CHANGED
|
@@ -103,6 +103,7 @@ oh-my-customcode로 구동됩니다.
|
|
|
103
103
|
| 릴리즈 | `/pipeline auto-dev`, `/omcustom-release-notes`, `/release-plan` | 자동 개발, 릴리즈 노트 |
|
|
104
104
|
| 리서치 | `/research`, `/scout`, `/deep-plan`, `/omcustom:agora` | 병렬 분석, URL 평가, 연구 계획 |
|
|
105
105
|
| 메모리 | `/memory-save`, `/memory-recall` | 세션 메모리 관리 |
|
|
106
|
+
| 최적화 | `/token-efficiency-audit` | 토큰 효율 감사 (3계층 방어 스택) |
|
|
106
107
|
| 시스템 | `/omcustom:lists`, `/omcustom:status`, `/omcustom:help` | 전체 목록, 상태, 도움말 |
|
|
107
108
|
|
|
108
109
|
> 전체 커맨드 목록 (60+ 커맨드): `/omcustom:lists` 실행
|
|
@@ -114,11 +115,11 @@ project/
|
|
|
114
115
|
+-- CLAUDE.md # 진입점
|
|
115
116
|
+-- .claude/
|
|
116
117
|
| +-- agents/ # 서브에이전트 정의 (48 파일)
|
|
117
|
-
| +-- skills/ # 스킬 (
|
|
118
|
+
| +-- skills/ # 스킬 (112 디렉토리)
|
|
118
119
|
| +-- rules/ # 전역 규칙 (R000-R022)
|
|
119
120
|
| +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
|
|
120
121
|
| +-- contexts/ # 컨텍스트 파일 (ecomode)
|
|
121
|
-
+-- guides/ # 레퍼런스 문서 (
|
|
122
|
+
+-- guides/ # 레퍼런스 문서 (40 토픽)
|
|
122
123
|
```
|
|
123
124
|
|
|
124
125
|
## 오케스트레이션
|
|
@@ -161,7 +162,7 @@ oh-my-customcode는 소프트웨어 컴파일과 동일한 구조를 따릅니
|
|
|
161
162
|
|
|
162
163
|
| 타입 | 수량 | 에이전트 |
|
|
163
164
|
|------|------|----------|
|
|
164
|
-
| SW Engineer/Language | 6 | lang-golang-expert, lang-python-expert, lang-rust-expert, lang-kotlin-expert, lang-typescript-expert, lang-
|
|
165
|
+
| SW Engineer/Language | 6 | lang-golang-expert, lang-python-expert, lang-rust-expert, lang-kotlin-expert, lang-typescript-expert, lang-java-expert |
|
|
165
166
|
| SW Engineer/Backend | 6 | be-fastapi-expert, be-springboot-expert, be-go-backend-expert, be-express-expert, be-nestjs-expert, be-django-expert |
|
|
166
167
|
| SW Engineer/Frontend | 5 | fe-vercel-agent, fe-vuejs-agent, fe-svelte-agent, fe-flutter-agent, fe-design-expert |
|
|
167
168
|
| SW Engineer/Tooling | 4 | tool-npm-expert, tool-optimizer, tool-bun-expert, slack-cli-expert |
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# Apache Airflow Guide (3.
|
|
1
|
+
# Apache Airflow Guide (3.2.0)
|
|
2
2
|
|
|
3
|
-
Reference documentation for Apache Airflow 3.
|
|
3
|
+
Reference documentation for Apache Airflow 3.2.0 DAG development best practices.
|
|
4
4
|
|
|
5
5
|
## Source
|
|
6
6
|
|
|
7
|
-
Based on [Apache Airflow 3.
|
|
7
|
+
Based on [Apache Airflow 3.2.0 official documentation](https://airflow.apache.org/docs/apache-airflow/3.2.0/) and [Astronomer best practices](https://docs.astronomer.io/).
|
|
8
8
|
|
|
9
9
|
## Airflow 3.x Key Changes
|
|
10
10
|
|
|
@@ -39,9 +39,9 @@ This guide is referenced by:
|
|
|
39
39
|
|
|
40
40
|
## External Resources
|
|
41
41
|
|
|
42
|
-
- [Airflow 3.
|
|
43
|
-
- [Airflow 3.
|
|
44
|
-
- [Airflow Task SDK](https://airflow.apache.org/docs/apache-airflow/3.
|
|
45
|
-
- [Airflow TaskFlow API](https://airflow.apache.org/docs/apache-airflow/3.
|
|
46
|
-
- [Migration Guide 2.x → 3.x](https://airflow.apache.org/docs/apache-airflow/3.
|
|
42
|
+
- [Airflow 3.2.0 Official Docs](https://airflow.apache.org/docs/apache-airflow/3.2.0/)
|
|
43
|
+
- [Airflow 3.2.0 Best Practices](https://airflow.apache.org/docs/apache-airflow/3.2.0/best-practices.html)
|
|
44
|
+
- [Airflow Task SDK](https://airflow.apache.org/docs/apache-airflow/3.2.0/authoring-and-scheduling/index.html)
|
|
45
|
+
- [Airflow TaskFlow API](https://airflow.apache.org/docs/apache-airflow/3.2.0/core-concepts/taskflow.html)
|
|
46
|
+
- [Migration Guide 2.x → 3.x](https://airflow.apache.org/docs/apache-airflow/3.2.0/migration-guide.html)
|
|
47
47
|
- [Astronomer Docs](https://docs.astronomer.io/)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Browser Automation Patterns for AI Agents
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Reference guide for AI-controlled browser automation patterns, focusing on integration with Claude Code and MCP-based browser tools.
|
|
6
|
+
|
|
7
|
+
## Patterns
|
|
8
|
+
|
|
9
|
+
### 1. MCP-based Browser Control (Recommended)
|
|
10
|
+
|
|
11
|
+
Use MCP tools (`mcp__claude-in-chrome__*` or `mcp__playwright__*`) for browser interaction:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
Agent → MCP tool call → Browser extension/Playwright → Page interaction
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**Advantages**: Native integration, no external dependencies, permission-controlled.
|
|
18
|
+
|
|
19
|
+
### 2. Cookie-Based Authentication
|
|
20
|
+
|
|
21
|
+
For testing authenticated flows, import cookies from a real browser session:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Export cookies from browser (DevTools → Application → Cookies)
|
|
25
|
+
# Import into Playwright context for authenticated testing
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Use case**: QA testing of authenticated pages without re-implementing login flows.
|
|
29
|
+
|
|
30
|
+
### 3. Anti-Bot Stealth Patterns
|
|
31
|
+
|
|
32
|
+
When automating against sites with bot detection:
|
|
33
|
+
- Use realistic viewport sizes and user agents
|
|
34
|
+
- Add human-like delays between actions
|
|
35
|
+
- Randomize mouse movement patterns
|
|
36
|
+
- Respect robots.txt and rate limits
|
|
37
|
+
|
|
38
|
+
**Caution**: Only use for authorized testing on your own applications.
|
|
39
|
+
|
|
40
|
+
### 4. Cross-AI Vendor Orchestration
|
|
41
|
+
|
|
42
|
+
Multiple AI agents can share browser sessions via:
|
|
43
|
+
- Shared MCP server connection
|
|
44
|
+
- ngrok tunnels for remote access (scoped tokens for security)
|
|
45
|
+
- Agent Teams (R018) for coordination
|
|
46
|
+
|
|
47
|
+
## Tools Available in oh-my-customcode
|
|
48
|
+
|
|
49
|
+
| Tool | Scope | Configuration |
|
|
50
|
+
|------|-------|---------------|
|
|
51
|
+
| `mcp__claude-in-chrome__*` | Chrome DevTools Protocol | MCP server in settings |
|
|
52
|
+
| `mcp__playwright__*` | Playwright automation | MCP server in settings |
|
|
53
|
+
| `playwright-compress` | Output compression (Layer 4) | PostToolUse hook |
|
|
54
|
+
|
|
55
|
+
## Security Considerations
|
|
56
|
+
|
|
57
|
+
| Concern | Mitigation |
|
|
58
|
+
|---------|-----------|
|
|
59
|
+
| Credential exposure | Never hardcode credentials; use env vars or cookie import |
|
|
60
|
+
| External data transmission | R001 compliance — no PII to external services |
|
|
61
|
+
| Rate limiting | Respect target site limits; implement backoff |
|
|
62
|
+
| Scope creep | Only automate your own applications or authorized targets |
|
|
63
|
+
|
|
64
|
+
## References
|
|
65
|
+
|
|
66
|
+
- [garrytan/gstack](https://github.com/garrytan/gstack) — /browse, /pair-agent patterns
|
|
67
|
+
- [playwright.dev](https://playwright.dev) — Official Playwright documentation
|
|
68
|
+
- [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/) — CDP reference
|