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.
Files changed (57) hide show
  1. package/README.md +5 -5
  2. package/dist/cli/index.js +1 -1
  3. package/dist/index.js +1 -1
  4. package/package.json +1 -1
  5. package/templates/.claude/agents/arch-speckit-agent.md +1 -1
  6. package/templates/.claude/agents/be-springboot-expert.md +3 -3
  7. package/templates/.claude/agents/de-airflow-expert.md +2 -2
  8. package/templates/.claude/agents/de-dbt-expert.md +1 -0
  9. package/templates/.claude/agents/de-kafka-expert.md +2 -1
  10. package/templates/.claude/agents/de-spark-expert.md +3 -1
  11. package/templates/.claude/agents/fe-flutter-agent.md +3 -3
  12. package/templates/.claude/agents/lang-java-expert.md +42 -0
  13. package/templates/.claude/agents/slack-cli-expert.md +1 -1
  14. package/templates/.claude/hooks/hooks.json +10 -0
  15. package/templates/.claude/hooks/scripts/playwright-compress.sh +50 -0
  16. package/templates/.claude/ontology/agents.yaml +2 -2
  17. package/templates/.claude/ontology/skills.yaml +1 -1
  18. package/templates/.claude/rules/MUST-orchestrator-coordination.md +29 -0
  19. package/templates/.claude/skills/adaptive-harness/SKILL.md +1 -1
  20. package/templates/.claude/skills/agora/SKILL.md +2 -0
  21. package/templates/.claude/skills/airflow-best-practices/SKILL.md +4 -4
  22. package/templates/.claude/skills/analysis/SKILL.md +1 -1
  23. package/templates/.claude/skills/dbt-best-practices/SKILL.md +5 -0
  24. package/templates/.claude/skills/design-shotgun/SKILL.md +104 -0
  25. package/templates/.claude/skills/dev-lead-routing/SKILL.md +3 -3
  26. package/templates/.claude/skills/django-best-practices/SKILL.md +1 -1
  27. package/templates/.claude/skills/evaluator-optimizer/SKILL.md +2 -0
  28. package/templates/.claude/skills/flutter-best-practices/SKILL.md +5 -5
  29. package/templates/.claude/skills/intent-detection/SKILL.md +2 -0
  30. package/templates/.claude/skills/intent-detection/patterns/agent-triggers.yaml +3 -3
  31. package/templates/.claude/skills/{java21-best-practices → java-best-practices}/SKILL.md +14 -14
  32. package/templates/.claude/skills/kafka-best-practices/SKILL.md +3 -1
  33. package/templates/.claude/skills/multi-model-verification/SKILL.md +2 -0
  34. package/templates/.claude/skills/playwright-compress/SKILL.md +68 -0
  35. package/templates/.claude/skills/pr-auto-improve/SKILL.md +1 -1
  36. package/templates/.claude/skills/product-strategy/SKILL.md +82 -0
  37. package/templates/.claude/skills/research/SKILL.md +2 -0
  38. package/templates/.claude/skills/spark-best-practices/SKILL.md +3 -1
  39. package/templates/.claude/skills/springboot-best-practices/SKILL.md +1 -1
  40. package/templates/.claude/skills/task-decomposition/SKILL.md +45 -1
  41. package/templates/.claude/skills/update-docs/SKILL.md +2 -2
  42. package/templates/.claude/skills/worker-reviewer-pipeline/SKILL.md +2 -0
  43. package/templates/CLAUDE.md +4 -3
  44. package/templates/guides/airflow/README.md +8 -8
  45. package/templates/guides/browser-automation/01-browser-automation-patterns.md +68 -0
  46. package/templates/guides/claude-code/14-token-efficiency.md +187 -0
  47. package/templates/guides/docker/compose-best-practices.md +3 -5
  48. package/templates/guides/docker/dockerfile-best-practices.md +9 -9
  49. package/templates/guides/flutter/index.yaml +1 -1
  50. package/templates/guides/flutter/state-management.md +4 -4
  51. package/templates/guides/index.yaml +9 -3
  52. package/templates/guides/{java21 → java}/index.yaml +9 -9
  53. package/templates/guides/{java21/modern-java21.md → java/modern-java.md} +2 -2
  54. package/templates/guides/slack-cli/README.md +1 -1
  55. package/templates/manifest.json +3 -3
  56. package/templates/.claude/agents/lang-java21-expert.md +0 -42
  57. /package/templates/guides/{java21 → java}/java-style-guide.md +0 -0
@@ -1,13 +1,13 @@
1
1
  ---
2
- name: java21-best-practices
3
- description: Modern Java 21 patterns from Virtual Threads, Pattern Matching, Records, and Sealed Classes
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 21 patterns and best practices leveraging the latest language features for clean, performant, and maintainable Java code.
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/java21/java-style-guide.md
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/java21/modern-java21.md
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/java21/modern-java21.md
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/java21/modern-java21.md
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/java21/modern-java21.md
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/java21/modern-java21.md
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/java21/modern-java21.md
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/java21/modern-java21.md
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/java21/java-style-guide.md
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/java21/java-style-guide.md
177
+ Reference: guides/java/java-style-guide.md
178
178
 
179
179
  ## Application
180
180
 
181
- When writing or reviewing Java 21 code:
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-java21-expert |
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)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: springboot-best-practices
3
- description: Spring Boot patterns for enterprise Java applications
3
+ description: Spring Boot 4.0 patterns for enterprise Java 25 applications
4
4
  scope: core
5
5
  user-invocable: false
6
6
  ---
@@ -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-java21-expert.md (referenced but not found)
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-java21-expert (not found)
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.
@@ -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/ # 스킬 (109 디렉토리)
118
+ | +-- skills/ # 스킬 (112 디렉토리)
118
119
  | +-- rules/ # 전역 규칙 (R000-R022)
119
120
  | +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
120
121
  | +-- contexts/ # 컨텍스트 파일 (ecomode)
121
- +-- guides/ # 레퍼런스 문서 (39 토픽)
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-java21-expert |
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.8)
1
+ # Apache Airflow Guide (3.2.0)
2
2
 
3
- Reference documentation for Apache Airflow 3.1.8 DAG development best practices.
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.1.8 official documentation](https://airflow.apache.org/docs/apache-airflow/3.1.8/) and [Astronomer best practices](https://docs.astronomer.io/).
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.1.8 Official Docs](https://airflow.apache.org/docs/apache-airflow/3.1.8/)
43
- - [Airflow 3.1.8 Best Practices](https://airflow.apache.org/docs/apache-airflow/3.1.8/best-practices.html)
44
- - [Airflow Task SDK](https://airflow.apache.org/docs/apache-airflow/3.1.8/authoring-and-scheduling/index.html)
45
- - [Airflow TaskFlow API](https://airflow.apache.org/docs/apache-airflow/3.1.8/core-concepts/taskflow.html)
46
- - [Migration Guide 2.x → 3.x](https://airflow.apache.org/docs/apache-airflow/3.1.8/migration-guide.html)
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