oh-my-customcode 0.12.1 → 0.12.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -11
- package/dist/cli/index.js +137 -336
- package/dist/index.js +99 -260
- package/package.json +2 -4
- package/templates/.claude/skills/codex-exec/SKILL.md +123 -0
- package/templates/.claude/skills/codex-exec/scripts/codex-wrapper.cjs +413 -0
- package/templates/CLAUDE.md.en +1 -0
- package/templates/CLAUDE.md.ko +1 -0
- package/templates/.codex/agents/arch-documenter.md +0 -33
- package/templates/.codex/agents/arch-speckit-agent.md +0 -47
- package/templates/.codex/agents/be-express-expert.md +0 -30
- package/templates/.codex/agents/be-fastapi-expert.md +0 -43
- package/templates/.codex/agents/be-go-backend-expert.md +0 -43
- package/templates/.codex/agents/be-nestjs-expert.md +0 -28
- package/templates/.codex/agents/be-springboot-expert.md +0 -40
- package/templates/.codex/agents/db-postgres-expert.md +0 -36
- package/templates/.codex/agents/db-redis-expert.md +0 -36
- package/templates/.codex/agents/db-supabase-expert.md +0 -35
- package/templates/.codex/agents/de-airflow-expert.md +0 -34
- package/templates/.codex/agents/de-dbt-expert.md +0 -34
- package/templates/.codex/agents/de-kafka-expert.md +0 -81
- package/templates/.codex/agents/de-pipeline-expert.md +0 -32
- package/templates/.codex/agents/de-snowflake-expert.md +0 -36
- package/templates/.codex/agents/de-spark-expert.md +0 -36
- package/templates/.codex/agents/fe-svelte-agent.md +0 -29
- package/templates/.codex/agents/fe-vercel-agent.md +0 -37
- package/templates/.codex/agents/fe-vuejs-agent.md +0 -30
- package/templates/.codex/agents/infra-aws-expert.md +0 -47
- package/templates/.codex/agents/infra-docker-expert.md +0 -47
- package/templates/.codex/agents/lang-golang-expert.md +0 -43
- package/templates/.codex/agents/lang-java21-expert.md +0 -39
- package/templates/.codex/agents/lang-kotlin-expert.md +0 -43
- package/templates/.codex/agents/lang-python-expert.md +0 -43
- package/templates/.codex/agents/lang-rust-expert.md +0 -43
- package/templates/.codex/agents/lang-typescript-expert.md +0 -43
- package/templates/.codex/agents/mgr-claude-code-bible.md +0 -58
- package/templates/.codex/agents/mgr-creator.md +0 -39
- package/templates/.codex/agents/mgr-gitnerd.md +0 -45
- package/templates/.codex/agents/mgr-sauron.md +0 -161
- package/templates/.codex/agents/mgr-supplier.md +0 -35
- package/templates/.codex/agents/mgr-sync-checker.md +0 -38
- package/templates/.codex/agents/mgr-updater.md +0 -33
- package/templates/.codex/agents/qa-engineer.md +0 -32
- package/templates/.codex/agents/qa-planner.md +0 -73
- package/templates/.codex/agents/qa-writer.md +0 -27
- package/templates/.codex/agents/sys-memory-keeper.md +0 -43
- package/templates/.codex/agents/sys-naggy.md +0 -37
- package/templates/.codex/agents/tool-bun-expert.md +0 -26
- package/templates/.codex/agents/tool-npm-expert.md +0 -30
- package/templates/.codex/agents/tool-optimizer.md +0 -34
- package/templates/.codex/codex-native-hash.txt +0 -1
- package/templates/.codex/contexts/dev.md +0 -20
- package/templates/.codex/contexts/ecomode.md +0 -63
- package/templates/.codex/contexts/index.yaml +0 -41
- package/templates/.codex/contexts/research.md +0 -28
- package/templates/.codex/contexts/review.md +0 -23
- package/templates/.codex/hooks/hooks.json +0 -150
- package/templates/.codex/install-hooks.sh +0 -100
- package/templates/.codex/rules/MAY-optimization.md +0 -29
- package/templates/.codex/rules/MUST-agent-design.md +0 -57
- package/templates/.codex/rules/MUST-agent-identification.md +0 -29
- package/templates/.codex/rules/MUST-continuous-improvement.md +0 -25
- package/templates/.codex/rules/MUST-intent-transparency.md +0 -42
- package/templates/.codex/rules/MUST-language-policy.md +0 -27
- package/templates/.codex/rules/MUST-orchestrator-coordination.md +0 -128
- package/templates/.codex/rules/MUST-parallel-execution.md +0 -97
- package/templates/.codex/rules/MUST-permissions.md +0 -30
- package/templates/.codex/rules/MUST-safety.md +0 -23
- package/templates/.codex/rules/MUST-sync-verification.md +0 -125
- package/templates/.codex/rules/MUST-tool-identification.md +0 -82
- package/templates/.codex/rules/SHOULD-agent-teams.md +0 -39
- package/templates/.codex/rules/SHOULD-ecomode.md +0 -37
- package/templates/.codex/rules/SHOULD-error-handling.md +0 -33
- package/templates/.codex/rules/SHOULD-hud-statusline.md +0 -32
- package/templates/.codex/rules/SHOULD-interaction.md +0 -34
- package/templates/.codex/rules/SHOULD-memory-integration.md +0 -39
- package/templates/.codex/rules/index.yaml +0 -141
- package/templates/.codex/skills/airflow-best-practices/SKILL.md +0 -56
- package/templates/.codex/skills/audit-agents/SKILL.md +0 -116
- package/templates/.codex/skills/aws-best-practices/SKILL.md +0 -280
- package/templates/.codex/skills/claude-code-bible/SKILL.md +0 -100
- package/templates/.codex/skills/claude-code-bible/scripts/fetch-docs.js +0 -272
- package/templates/.codex/skills/create-agent/SKILL.md +0 -91
- package/templates/.codex/skills/dbt-best-practices/SKILL.md +0 -54
- package/templates/.codex/skills/de-lead-routing/SKILL.md +0 -243
- package/templates/.codex/skills/dev-lead-routing/SKILL.md +0 -94
- package/templates/.codex/skills/dev-refactor/SKILL.md +0 -123
- package/templates/.codex/skills/dev-review/SKILL.md +0 -81
- package/templates/.codex/skills/docker-best-practices/SKILL.md +0 -275
- package/templates/.codex/skills/fastapi-best-practices/SKILL.md +0 -270
- package/templates/.codex/skills/fix-refs/SKILL.md +0 -107
- package/templates/.codex/skills/go-backend-best-practices/SKILL.md +0 -338
- package/templates/.codex/skills/go-best-practices/SKILL.md +0 -203
- package/templates/.codex/skills/help/SKILL.md +0 -125
- package/templates/.codex/skills/intent-detection/SKILL.md +0 -215
- package/templates/.codex/skills/intent-detection/patterns/agent-triggers.yaml +0 -349
- package/templates/.codex/skills/kafka-best-practices/SKILL.md +0 -52
- package/templates/.codex/skills/kotlin-best-practices/SKILL.md +0 -256
- package/templates/.codex/skills/lists/SKILL.md +0 -78
- package/templates/.codex/skills/memory-management/SKILL.md +0 -195
- package/templates/.codex/skills/memory-recall/SKILL.md +0 -152
- package/templates/.codex/skills/memory-save/SKILL.md +0 -126
- package/templates/.codex/skills/monitoring-setup/SKILL.md +0 -115
- package/templates/.codex/skills/npm-audit/SKILL.md +0 -72
- package/templates/.codex/skills/npm-publish/SKILL.md +0 -63
- package/templates/.codex/skills/npm-version/SKILL.md +0 -75
- package/templates/.codex/skills/optimize-analyze/SKILL.md +0 -55
- package/templates/.codex/skills/optimize-bundle/SKILL.md +0 -67
- package/templates/.codex/skills/optimize-report/SKILL.md +0 -74
- package/templates/.codex/skills/pipeline-architecture-patterns/SKILL.md +0 -83
- package/templates/.codex/skills/postgres-best-practices/SKILL.md +0 -66
- package/templates/.codex/skills/python-best-practices/SKILL.md +0 -222
- package/templates/.codex/skills/qa-lead-routing/SKILL.md +0 -290
- package/templates/.codex/skills/react-best-practices/SKILL.md +0 -101
- package/templates/.codex/skills/redis-best-practices/SKILL.md +0 -83
- package/templates/.codex/skills/result-aggregation/SKILL.md +0 -164
- package/templates/.codex/skills/rust-best-practices/SKILL.md +0 -267
- package/templates/.codex/skills/sauron-watch/SKILL.md +0 -144
- package/templates/.codex/skills/secretary-routing/SKILL.md +0 -203
- package/templates/.codex/skills/snowflake-best-practices/SKILL.md +0 -65
- package/templates/.codex/skills/spark-best-practices/SKILL.md +0 -52
- package/templates/.codex/skills/springboot-best-practices/SKILL.md +0 -218
- package/templates/.codex/skills/status/SKILL.md +0 -153
- package/templates/.codex/skills/supabase-postgres-best-practices/SKILL.md +0 -99
- package/templates/.codex/skills/typescript-best-practices/SKILL.md +0 -321
- package/templates/.codex/skills/update-docs/SKILL.md +0 -140
- package/templates/.codex/skills/update-external/SKILL.md +0 -149
- package/templates/.codex/skills/vercel-deploy/SKILL.md +0 -73
- package/templates/.codex/skills/web-design-guidelines/SKILL.md +0 -118
- package/templates/.codex/skills/writing-clearly-and-concisely/SKILL.md +0 -64
- package/templates/.codex/uninstall-hooks.sh +0 -52
- package/templates/AGENTS.md.en +0 -39
- package/templates/AGENTS.md.ko +0 -39
- package/templates/manifest.codex.json +0 -43
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: secretary-routing
|
|
3
|
-
description: Routes agent management tasks to the correct manager agent. Use when user requests agent creation, updates, audits, git operations, sync checks, or verification.
|
|
4
|
-
user-invocable: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Secretary Routing Skill
|
|
8
|
-
|
|
9
|
-
## Purpose
|
|
10
|
-
|
|
11
|
-
Routes agent management tasks to the appropriate manager agent. This skill contains the coordination logic for orchestrating manager agents (mgr-creator, mgr-updater, mgr-supplier, mgr-gitnerd, mgr-sync-checker, mgr-sauron).
|
|
12
|
-
|
|
13
|
-
## Manager Agents
|
|
14
|
-
|
|
15
|
-
| Agent | Purpose | Triggers |
|
|
16
|
-
|-------|---------|----------|
|
|
17
|
-
| mgr-creator | Create new agents | "create agent", "new agent" |
|
|
18
|
-
| mgr-updater | Update external agents | "update agent", "sync" |
|
|
19
|
-
| mgr-supplier | Validate dependencies | "audit", "check deps" |
|
|
20
|
-
| mgr-gitnerd | Git operations | "commit", "push", "pr" |
|
|
21
|
-
| mgr-sync-checker | Sync verification | "sync check", "verify sync" |
|
|
22
|
-
| mgr-sauron | R016 auto-verification | "verify", "full check" |
|
|
23
|
-
| mgr-claude-code-bible | Codex spec compliance | "spec check", "verify compliance" |
|
|
24
|
-
| sys-memory-keeper | Memory operations | "save memory", "recall", "memory search" |
|
|
25
|
-
| sys-naggy | TODO management | "todo", "track tasks", "task list" |
|
|
26
|
-
|
|
27
|
-
## Command Routing
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
User Input → Routing → Manager Agent
|
|
31
|
-
|
|
32
|
-
create → mgr-creator
|
|
33
|
-
update → mgr-updater
|
|
34
|
-
audit → mgr-supplier
|
|
35
|
-
git → mgr-gitnerd
|
|
36
|
-
sync → mgr-sync-checker
|
|
37
|
-
verify → mgr-sauron
|
|
38
|
-
spec → mgr-claude-code-bible
|
|
39
|
-
memory → sys-memory-keeper
|
|
40
|
-
todo → sys-naggy
|
|
41
|
-
batch → multiple (parallel)
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
## Routing Rules
|
|
45
|
-
|
|
46
|
-
### 1. Single Task Routing
|
|
47
|
-
|
|
48
|
-
```
|
|
49
|
-
1. Parse user command and identify intent
|
|
50
|
-
2. Select appropriate manager agent:
|
|
51
|
-
- "create agent X" → mgr-creator
|
|
52
|
-
- "update agent Y" → mgr-updater
|
|
53
|
-
- "audit agent Z" → mgr-supplier
|
|
54
|
-
- "git commit/push/pr" → mgr-gitnerd
|
|
55
|
-
- "sync check" → mgr-sync-checker
|
|
56
|
-
- "verify" → mgr-sauron
|
|
57
|
-
- "spec check" → mgr-claude-code-bible
|
|
58
|
-
- "save/recall memory" → sys-memory-keeper
|
|
59
|
-
- "todo/task list" → sys-naggy
|
|
60
|
-
3. Spawn Task with selected agent role
|
|
61
|
-
4. Monitor execution
|
|
62
|
-
5. Report result to user
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### 2. Batch/Parallel Task Routing
|
|
66
|
-
|
|
67
|
-
When command requires multiple independent operations:
|
|
68
|
-
|
|
69
|
-
```
|
|
70
|
-
1. Break down into sub-tasks
|
|
71
|
-
2. Identify parallelizable tasks (max 4)
|
|
72
|
-
3. Spawn parallel Task instances
|
|
73
|
-
4. Coordinate execution following R009
|
|
74
|
-
5. Aggregate results following R013 (ecomode)
|
|
75
|
-
6. Report summary to user
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
Example:
|
|
79
|
-
```
|
|
80
|
-
User: "Create golang, python, rust expert agents"
|
|
81
|
-
|
|
82
|
-
Route:
|
|
83
|
-
Task(mgr-creator role → create lang-golang-expert, model: "balanced")
|
|
84
|
-
Task(mgr-creator role → create lang-python-expert, model: "balanced")
|
|
85
|
-
Task(mgr-creator role → create lang-rust-expert, model: "balanced")
|
|
86
|
-
|
|
87
|
-
Result: 3 agents created in parallel
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
## Sub-agent Model Selection
|
|
91
|
-
|
|
92
|
-
Use Task tool's `model` parameter to optimize cost and performance:
|
|
93
|
-
|
|
94
|
-
### Model Mapping
|
|
95
|
-
|
|
96
|
-
| Agent | Recommended Model | Reason |
|
|
97
|
-
|-------|-------------------|--------|
|
|
98
|
-
| mgr-creator | `balanced` | File generation, balanced |
|
|
99
|
-
| mgr-updater | `balanced` | External sync, web fetch |
|
|
100
|
-
| mgr-supplier | `fast` | File scan, validation |
|
|
101
|
-
| mgr-gitnerd | `balanced` | Commit message quality |
|
|
102
|
-
| mgr-sync-checker | `fast` | Fast verification |
|
|
103
|
-
| mgr-sauron | `balanced` | Multi-round verification |
|
|
104
|
-
| mgr-claude-code-bible | `balanced` | Spec compliance checks |
|
|
105
|
-
| sys-memory-keeper | `balanced` | Memory operations, search |
|
|
106
|
-
| sys-naggy | `fast` | Simple TODO tracking |
|
|
107
|
-
|
|
108
|
-
### Task Call Examples
|
|
109
|
-
|
|
110
|
-
```
|
|
111
|
-
# Complex analysis (rare)
|
|
112
|
-
Task(
|
|
113
|
-
subagent_type: "general-purpose",
|
|
114
|
-
prompt: "Analyze agent dependencies and suggest improvements",
|
|
115
|
-
model: "reasoning"
|
|
116
|
-
)
|
|
117
|
-
|
|
118
|
-
# Standard manager task (create agent)
|
|
119
|
-
Task(
|
|
120
|
-
subagent_type: "general-purpose",
|
|
121
|
-
prompt: "Create new lang-golang-expert agent following mgr-creator workflow",
|
|
122
|
-
model: "balanced"
|
|
123
|
-
)
|
|
124
|
-
|
|
125
|
-
# Simple file operation
|
|
126
|
-
Task(
|
|
127
|
-
subagent_type: "general-purpose",
|
|
128
|
-
prompt: "Search for all AGENT.md files and validate symlinks",
|
|
129
|
-
model: "fast"
|
|
130
|
-
)
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
## Parallel Execution
|
|
134
|
-
|
|
135
|
-
Following R009:
|
|
136
|
-
- Maximum 4 parallel instances
|
|
137
|
-
- Only non-orchestrator agents
|
|
138
|
-
- Independent tasks only
|
|
139
|
-
- Proper resource management
|
|
140
|
-
|
|
141
|
-
## Display Format
|
|
142
|
-
|
|
143
|
-
When spawning parallel tasks, use format: `{task-name}:{model}`
|
|
144
|
-
|
|
145
|
-
```
|
|
146
|
-
[Parallel] Spawning 3 instances...
|
|
147
|
-
|
|
148
|
-
[Instance 1] create-golang:balanced → lang-golang-expert
|
|
149
|
-
[Instance 2] create-python:balanced → lang-python-expert
|
|
150
|
-
[Instance 3] create-rust:balanced → lang-rust-expert
|
|
151
|
-
|
|
152
|
-
[Progress] ████████░░░░ 2/3
|
|
153
|
-
|
|
154
|
-
[Instance 1] create-golang:balanced ✓ lang-golang-expert created
|
|
155
|
-
[Instance 2] create-python:balanced ✓ lang-python-expert created
|
|
156
|
-
[Instance 3] create-rust:balanced ✓ lang-rust-expert created
|
|
157
|
-
|
|
158
|
-
[Summary] 3/3 tasks completed successfully
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
## Ecomode Integration
|
|
162
|
-
|
|
163
|
-
When 4+ parallel tasks are spawned, activate ecomode (R013):
|
|
164
|
-
- Compact output format (status + 1-2 sentence summary)
|
|
165
|
-
- Skip intermediate steps
|
|
166
|
-
- Return essential results only
|
|
167
|
-
- Aggregate with icons: ✓ (success), ✗ (failed), ⚠ (partial)
|
|
168
|
-
|
|
169
|
-
## Error Handling
|
|
170
|
-
|
|
171
|
-
```yaml
|
|
172
|
-
retry_policy:
|
|
173
|
-
max_retries: 3
|
|
174
|
-
backoff: exponential
|
|
175
|
-
|
|
176
|
-
failure_modes:
|
|
177
|
-
single_failure: Report and continue
|
|
178
|
-
critical_failure: Stop and escalate
|
|
179
|
-
timeout: Retry or skip with notice
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
## Agent Teams Awareness
|
|
183
|
-
|
|
184
|
-
Before routing via Task tool, check if Agent Teams is available (`CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` or TeamCreate/SendMessage tools present).
|
|
185
|
-
|
|
186
|
-
**Self-check:** Does this task need 3+ agents, shared state, or inter-agent communication? If yes, prefer Agent Teams over Task tool. See R018 for the full decision matrix.
|
|
187
|
-
|
|
188
|
-
| Scenario | Preferred |
|
|
189
|
-
|----------|-----------|
|
|
190
|
-
| Single manager task | Task Tool |
|
|
191
|
-
| Batch agent creation (3+) | Agent Teams |
|
|
192
|
-
| Multi-round verification (sauron) | Task Tool |
|
|
193
|
-
| Agent audit + fix cycle | Agent Teams |
|
|
194
|
-
|
|
195
|
-
## Usage
|
|
196
|
-
|
|
197
|
-
This skill is NOT user-invocable. It should be automatically triggered when the main conversation detects agent management intent.
|
|
198
|
-
|
|
199
|
-
Detection criteria:
|
|
200
|
-
- User mentions agent creation/update/audit
|
|
201
|
-
- Command starts with manager agent name
|
|
202
|
-
- System operation requires coordination
|
|
203
|
-
- Batch operation on agents/skills/guides
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: snowflake-best-practices
|
|
3
|
-
description: Snowflake best practices for cloud data warehouse design, query optimization, and cost management
|
|
4
|
-
user-invocable: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Snowflake Best Practices
|
|
8
|
-
|
|
9
|
-
## Warehouse Design
|
|
10
|
-
|
|
11
|
-
### Sizing (CRITICAL)
|
|
12
|
-
- Start small (XS or S), scale up as needed
|
|
13
|
-
- Enable auto-scaling for concurrency
|
|
14
|
-
- Enable auto-suspend (1 minute idle)
|
|
15
|
-
- Separate warehouses for different workloads
|
|
16
|
-
|
|
17
|
-
### Multi-Cluster Warehouses
|
|
18
|
-
- Use for high concurrency (many users)
|
|
19
|
-
- Set min/max clusters based on load
|
|
20
|
-
- Scaling policy: Standard (default) or Economy
|
|
21
|
-
|
|
22
|
-
## Query Optimization
|
|
23
|
-
|
|
24
|
-
### Clustering Keys (CRITICAL)
|
|
25
|
-
- Define clustering keys for frequently filtered columns
|
|
26
|
-
- Improves micro-partition pruning
|
|
27
|
-
- Monitor clustering depth
|
|
28
|
-
- Automatic clustering: `ALTER TABLE ... CLUSTER BY (...)`
|
|
29
|
-
|
|
30
|
-
### Result Caching
|
|
31
|
-
- 24-hour cache for identical queries
|
|
32
|
-
- Use SHOW PARAMETERS to check cache status
|
|
33
|
-
- Bypass cache with query hint: `/*+ NO_RESULT_CACHE */`
|
|
34
|
-
|
|
35
|
-
### Materialized Views
|
|
36
|
-
- For repeated aggregations
|
|
37
|
-
- Automatically refreshed on base table changes
|
|
38
|
-
- Cost: storage + refresh compute
|
|
39
|
-
|
|
40
|
-
## Data Loading
|
|
41
|
-
|
|
42
|
-
### COPY INTO (CRITICAL)
|
|
43
|
-
- Batch load from stages (S3/GCS/Azure)
|
|
44
|
-
- File size: 100-250MB compressed (optimal)
|
|
45
|
-
- Use pattern matching for multiple files
|
|
46
|
-
|
|
47
|
-
### Snowpipe
|
|
48
|
-
- Continuous ingestion
|
|
49
|
-
- Event-driven (S3 notifications)
|
|
50
|
-
- Serverless compute
|
|
51
|
-
|
|
52
|
-
## Cost Optimization
|
|
53
|
-
|
|
54
|
-
### Resource Monitors
|
|
55
|
-
- Set credit quotas per warehouse
|
|
56
|
-
- Alerts and suspend actions
|
|
57
|
-
- Track consumption with WAREHOUSE_METERING_HISTORY
|
|
58
|
-
|
|
59
|
-
### Storage
|
|
60
|
-
- Use zero-copy cloning for dev/test
|
|
61
|
-
- Time travel retention: 1 day (standard), 90 days (enterprise)
|
|
62
|
-
- Fail-safe: 7 days (not configurable)
|
|
63
|
-
|
|
64
|
-
## References
|
|
65
|
-
- [Snowflake Best Practices](https://docs.snowflake.com/en/user-guide/best-practices)
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: spark-best-practices
|
|
3
|
-
description: Apache Spark best practices for PySpark and Scala distributed data processing
|
|
4
|
-
user-invocable: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Apache Spark Best Practices
|
|
8
|
-
|
|
9
|
-
## Performance Optimization
|
|
10
|
-
|
|
11
|
-
### Broadcast Joins (CRITICAL)
|
|
12
|
-
- Use `broadcast(small_df)` for small-large table joins
|
|
13
|
-
- Default broadcast threshold: 10MB (`spark.sql.autoBroadcastJoinThreshold`)
|
|
14
|
-
- Avoid broadcast for tables > 100MB
|
|
15
|
-
|
|
16
|
-
### Shuffles (CRITICAL)
|
|
17
|
-
- Minimize shuffles: expensive operations
|
|
18
|
-
- Use `coalesce()` to reduce partitions without shuffle
|
|
19
|
-
- Use `repartition()` only when necessary (causes shuffle)
|
|
20
|
-
- Predicate pushdown: filter before joins
|
|
21
|
-
|
|
22
|
-
### Caching
|
|
23
|
-
- Cache DataFrames used multiple times: `df.cache()` or `df.persist()`
|
|
24
|
-
- Choose storage level: MEMORY_ONLY, MEMORY_AND_DISK, DISK_ONLY
|
|
25
|
-
- Unpersist when done: `df.unpersist()`
|
|
26
|
-
|
|
27
|
-
## Resource Management
|
|
28
|
-
|
|
29
|
-
### Executor Configuration
|
|
30
|
-
- Executor memory: 80% of available memory per executor
|
|
31
|
-
- Executor cores: 4-5 cores per executor (optimal)
|
|
32
|
-
- Dynamic allocation: enable for varying workloads
|
|
33
|
-
|
|
34
|
-
### Partitioning
|
|
35
|
-
- Optimal partition size: 100-200MB
|
|
36
|
-
- Too few partitions: underutilized cluster
|
|
37
|
-
- Too many partitions: task overhead
|
|
38
|
-
|
|
39
|
-
## Data Processing
|
|
40
|
-
|
|
41
|
-
### UDFs
|
|
42
|
-
- Prefer built-in functions over UDFs
|
|
43
|
-
- Use Pandas UDF for vectorized operations
|
|
44
|
-
- Avoid Python UDFs (serialization overhead)
|
|
45
|
-
|
|
46
|
-
### Storage Formats
|
|
47
|
-
- Parquet: default for analytics (columnar, compression)
|
|
48
|
-
- ORC: alternative to Parquet
|
|
49
|
-
- Delta/Iceberg: ACID transactions, time travel
|
|
50
|
-
|
|
51
|
-
## References
|
|
52
|
-
- [Spark Performance Tuning](https://spark.apache.org/docs/latest/tuning.html)
|
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: springboot-best-practices
|
|
3
|
-
description: Spring Boot patterns for enterprise Java applications
|
|
4
|
-
user-invocable: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Rules
|
|
8
|
-
|
|
9
|
-
### 1. Project Structure
|
|
10
|
-
Layered architecture: controller (REST), service (business logic), repository (data access), model/entity, dto, config, exception.
|
|
11
|
-
|
|
12
|
-
### 2. Dependency Injection
|
|
13
|
-
Constructor injection preferred. Use @RequiredArgsConstructor with final fields. Avoid field injection with @Autowired.
|
|
14
|
-
|
|
15
|
-
```java
|
|
16
|
-
// GOOD: Constructor injection
|
|
17
|
-
@Service
|
|
18
|
-
@RequiredArgsConstructor
|
|
19
|
-
public class UserService {
|
|
20
|
-
private final UserRepository userRepository;
|
|
21
|
-
private final EmailService emailService;
|
|
22
|
-
}
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
### 3. REST API Design
|
|
26
|
-
@RestController + @RequestMapping. Use @Validated for input, ResponseEntity for responses, proper HTTP status codes.
|
|
27
|
-
|
|
28
|
-
```java
|
|
29
|
-
@RestController
|
|
30
|
-
@RequestMapping("/api/v1/users")
|
|
31
|
-
@RequiredArgsConstructor
|
|
32
|
-
public class UserController {
|
|
33
|
-
private final UserService userService;
|
|
34
|
-
|
|
35
|
-
@GetMapping("/{id}")
|
|
36
|
-
public ResponseEntity<UserResponse> getUser(@PathVariable Long id) {
|
|
37
|
-
return ResponseEntity.ok(userService.findById(id));
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
@PostMapping
|
|
41
|
-
@ResponseStatus(HttpStatus.CREATED)
|
|
42
|
-
public UserResponse createUser(@Valid @RequestBody UserRequest request) {
|
|
43
|
-
return userService.create(request);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### 4. Service Layer
|
|
49
|
-
Business logic in services. @Transactional boundaries at service level. Interface + implementation pattern.
|
|
50
|
-
|
|
51
|
-
```java
|
|
52
|
-
@Service
|
|
53
|
-
@Transactional(readOnly = true)
|
|
54
|
-
@RequiredArgsConstructor
|
|
55
|
-
public class UserServiceImpl implements UserService {
|
|
56
|
-
private final UserRepository userRepository;
|
|
57
|
-
|
|
58
|
-
@Override
|
|
59
|
-
public UserResponse findById(Long id) {
|
|
60
|
-
User user = userRepository.findById(id)
|
|
61
|
-
.orElseThrow(() -> new UserNotFoundException(id));
|
|
62
|
-
return userMapper.toResponse(user);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
@Override
|
|
66
|
-
@Transactional
|
|
67
|
-
public UserResponse create(UserRequest request) {
|
|
68
|
-
User user = userMapper.toEntity(request);
|
|
69
|
-
return userMapper.toResponse(userRepository.save(user));
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### 5. Data Access
|
|
75
|
-
Spring Data JPA. @Query or method naming for custom queries. @Entity with proper JPA annotations.
|
|
76
|
-
|
|
77
|
-
```java
|
|
78
|
-
public interface UserRepository extends JpaRepository<User, Long> {
|
|
79
|
-
Optional<User> findByEmail(String email);
|
|
80
|
-
|
|
81
|
-
@Query("SELECT u FROM User u WHERE u.status = :status")
|
|
82
|
-
List<User> findByStatus(@Param("status") UserStatus status);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
@Entity
|
|
86
|
-
@Table(name = "users")
|
|
87
|
-
@Getter
|
|
88
|
-
@NoArgsConstructor(access = AccessLevel.PROTECTED)
|
|
89
|
-
public class User {
|
|
90
|
-
@Id
|
|
91
|
-
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
92
|
-
private Long id;
|
|
93
|
-
|
|
94
|
-
@Column(nullable = false, unique = true)
|
|
95
|
-
private String email;
|
|
96
|
-
|
|
97
|
-
@Enumerated(EnumType.STRING)
|
|
98
|
-
private UserStatus status;
|
|
99
|
-
}
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### 6. Exception Handling
|
|
103
|
-
@RestControllerAdvice for global handling. Domain-specific exceptions with proper HTTP status mapping.
|
|
104
|
-
|
|
105
|
-
```java
|
|
106
|
-
@RestControllerAdvice
|
|
107
|
-
public class GlobalExceptionHandler {
|
|
108
|
-
@ExceptionHandler(UserNotFoundException.class)
|
|
109
|
-
@ResponseStatus(HttpStatus.NOT_FOUND)
|
|
110
|
-
public ErrorResponse handleUserNotFound(UserNotFoundException ex) {
|
|
111
|
-
return new ErrorResponse("USER_NOT_FOUND", ex.getMessage());
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
@ExceptionHandler(MethodArgumentNotValidException.class)
|
|
115
|
-
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
|
116
|
-
public ErrorResponse handleValidation(MethodArgumentNotValidException ex) {
|
|
117
|
-
List<String> errors = ex.getBindingResult()
|
|
118
|
-
.getFieldErrors()
|
|
119
|
-
.stream()
|
|
120
|
-
.map(e -> e.getField() + ": " + e.getDefaultMessage())
|
|
121
|
-
.toList();
|
|
122
|
-
return new ErrorResponse("VALIDATION_ERROR", errors);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### 7. Configuration
|
|
128
|
-
Profile-based: application-{profile}.yml. @ConfigurationProperties for type-safe config. Externalize sensitive values.
|
|
129
|
-
|
|
130
|
-
```yaml
|
|
131
|
-
# application.yml
|
|
132
|
-
spring:
|
|
133
|
-
profiles:
|
|
134
|
-
active: ${SPRING_PROFILES_ACTIVE:local}
|
|
135
|
-
datasource:
|
|
136
|
-
url: ${DATABASE_URL}
|
|
137
|
-
username: ${DATABASE_USERNAME}
|
|
138
|
-
password: ${DATABASE_PASSWORD}
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
```java
|
|
142
|
-
@Configuration
|
|
143
|
-
@ConfigurationProperties(prefix = "app")
|
|
144
|
-
@Validated
|
|
145
|
-
public class AppProperties {
|
|
146
|
-
@NotBlank
|
|
147
|
-
private String name;
|
|
148
|
-
|
|
149
|
-
@Min(1)
|
|
150
|
-
private int maxConnections;
|
|
151
|
-
}
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
### 8. Security
|
|
155
|
-
Spring Security with SecurityFilterChain. Externalize secrets. Proper authentication/authorization patterns.
|
|
156
|
-
|
|
157
|
-
```java
|
|
158
|
-
@Configuration
|
|
159
|
-
@EnableWebSecurity
|
|
160
|
-
@RequiredArgsConstructor
|
|
161
|
-
public class SecurityConfig {
|
|
162
|
-
@Bean
|
|
163
|
-
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
|
|
164
|
-
return http
|
|
165
|
-
.csrf(csrf -> csrf.disable())
|
|
166
|
-
.sessionManagement(session ->
|
|
167
|
-
session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
|
|
168
|
-
.authorizeHttpRequests(auth -> auth
|
|
169
|
-
.requestMatchers("/api/v1/auth/**").permitAll()
|
|
170
|
-
.requestMatchers("/api/v1/admin/**").hasRole("ADMIN")
|
|
171
|
-
.anyRequest().authenticated())
|
|
172
|
-
.build();
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### 9. Testing
|
|
178
|
-
@WebMvcTest (controller), @DataJpaTest (repository), @SpringBootTest (integration), @MockBean for mocking.
|
|
179
|
-
|
|
180
|
-
```java
|
|
181
|
-
// Controller test
|
|
182
|
-
@WebMvcTest(UserController.class)
|
|
183
|
-
class UserControllerTest {
|
|
184
|
-
@Autowired
|
|
185
|
-
private MockMvc mockMvc;
|
|
186
|
-
|
|
187
|
-
@MockBean
|
|
188
|
-
private UserService userService;
|
|
189
|
-
|
|
190
|
-
@Test
|
|
191
|
-
void getUser_shouldReturnUser() throws Exception {
|
|
192
|
-
given(userService.findById(1L))
|
|
193
|
-
.willReturn(new UserResponse(1L, "test@example.com"));
|
|
194
|
-
|
|
195
|
-
mockMvc.perform(get("/api/v1/users/1"))
|
|
196
|
-
.andExpect(status().isOk())
|
|
197
|
-
.andExpect(jsonPath("$.email").value("test@example.com"));
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
// Repository test
|
|
202
|
-
@DataJpaTest
|
|
203
|
-
class UserRepositoryTest {
|
|
204
|
-
@Autowired
|
|
205
|
-
private UserRepository userRepository;
|
|
206
|
-
|
|
207
|
-
@Test
|
|
208
|
-
void findByEmail_shouldReturnUser() {
|
|
209
|
-
User user = userRepository.save(new User("test@example.com"));
|
|
210
|
-
Optional<User> found = userRepository.findByEmail("test@example.com");
|
|
211
|
-
assertThat(found).isPresent();
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
## Application
|
|
217
|
-
|
|
218
|
-
Always: constructor injection, layered architecture, DTOs, global exception handling, externalized config, proper security, layer-appropriate tests.
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: status
|
|
3
|
-
description: Show system status and health checks
|
|
4
|
-
argument-hint: "[--verbose] [--health]"
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# System Status Skill
|
|
8
|
-
|
|
9
|
-
Show comprehensive system status including agents, skills, guides, and health checks.
|
|
10
|
-
|
|
11
|
-
## Options
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
--verbose, -v Detailed status
|
|
15
|
-
--health, -h Health checks only
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Output Format
|
|
19
|
-
|
|
20
|
-
### Default Status
|
|
21
|
-
```
|
|
22
|
-
AI Agent System - Status
|
|
23
|
-
|
|
24
|
-
System:
|
|
25
|
-
Rules: 10 loaded (R000-R009)
|
|
26
|
-
|
|
27
|
-
Agents:
|
|
28
|
-
Orchestrator: 1 (secretary)
|
|
29
|
-
Manager: 3 (mgr-creator, mgr-updater, mgr-supplier)
|
|
30
|
-
SW Engineer: 6
|
|
31
|
-
Backend Engineer: 3
|
|
32
|
-
Infra Engineer: 2
|
|
33
|
-
Total: 15 agents
|
|
34
|
-
|
|
35
|
-
Skills:
|
|
36
|
-
Development: 8
|
|
37
|
-
Backend: 3
|
|
38
|
-
Infrastructure: 2
|
|
39
|
-
Total: 13 skills
|
|
40
|
-
|
|
41
|
-
Guides: 12 loaded
|
|
42
|
-
Commands: 10 available
|
|
43
|
-
|
|
44
|
-
Health: ✓ OK
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### Verbose Status
|
|
48
|
-
```
|
|
49
|
-
status --verbose
|
|
50
|
-
|
|
51
|
-
AI Agent System - Detailed Status
|
|
52
|
-
|
|
53
|
-
Rules:
|
|
54
|
-
MUST:
|
|
55
|
-
✓ R000 language-policy
|
|
56
|
-
✓ R001 safety
|
|
57
|
-
✓ R002 permissions
|
|
58
|
-
✓ R006 agent-design
|
|
59
|
-
|
|
60
|
-
SHOULD:
|
|
61
|
-
✓ R003 interaction
|
|
62
|
-
✓ R004 error-handling
|
|
63
|
-
✓ R007 agent-identification
|
|
64
|
-
✓ R008 tool-identification
|
|
65
|
-
|
|
66
|
-
MAY:
|
|
67
|
-
✓ R005 optimization
|
|
68
|
-
✓ R009 parallel-execution
|
|
69
|
-
|
|
70
|
-
Agents:
|
|
71
|
-
orchestrator/
|
|
72
|
-
✓ secretary (internal)
|
|
73
|
-
|
|
74
|
-
manager/
|
|
75
|
-
✓ mgr-creator (internal)
|
|
76
|
-
✓ mgr-updater (internal)
|
|
77
|
-
✓ mgr-supplier (internal)
|
|
78
|
-
|
|
79
|
-
sw-engineer/
|
|
80
|
-
✓ lang-golang-expert (internal)
|
|
81
|
-
✓ lang-python-expert (internal)
|
|
82
|
-
✓ lang-rust-expert (internal)
|
|
83
|
-
✓ lang-kotlin-expert (internal)
|
|
84
|
-
✓ lang-typescript-expert (internal)
|
|
85
|
-
✓ fe-vercel-agent (external v1.0.0)
|
|
86
|
-
|
|
87
|
-
sw-engineer/backend/
|
|
88
|
-
✓ be-fastapi-expert (internal)
|
|
89
|
-
✓ be-springboot-expert (internal)
|
|
90
|
-
✓ be-go-backend-expert (internal)
|
|
91
|
-
|
|
92
|
-
infra-engineer/
|
|
93
|
-
✓ infra-docker-expert (internal)
|
|
94
|
-
✓ infra-aws-expert (internal)
|
|
95
|
-
|
|
96
|
-
Skills:
|
|
97
|
-
development/
|
|
98
|
-
✓ go-best-practices
|
|
99
|
-
✓ python-best-practices
|
|
100
|
-
✓ rust-best-practices
|
|
101
|
-
✓ kotlin-best-practices
|
|
102
|
-
✓ typescript-best-practices
|
|
103
|
-
✓ react-best-practices
|
|
104
|
-
✓ web-design-guidelines
|
|
105
|
-
✓ vercel-deploy
|
|
106
|
-
|
|
107
|
-
backend/
|
|
108
|
-
✓ fastapi-best-practices
|
|
109
|
-
✓ springboot-best-practices
|
|
110
|
-
✓ go-backend-best-practices
|
|
111
|
-
|
|
112
|
-
infrastructure/
|
|
113
|
-
✓ docker-best-practices
|
|
114
|
-
✓ aws-best-practices
|
|
115
|
-
|
|
116
|
-
Guides:
|
|
117
|
-
✓ claude-code, web-design
|
|
118
|
-
✓ golang, python, rust, kotlin, typescript
|
|
119
|
-
✓ fastapi, springboot, go-backend
|
|
120
|
-
✓ docker, aws
|
|
121
|
-
|
|
122
|
-
Commands:
|
|
123
|
-
system: lists, status, help
|
|
124
|
-
manager: create-agent, update-docs, update-external, audit-agents, fix-refs
|
|
125
|
-
dev: dev-review, dev-refactor
|
|
126
|
-
|
|
127
|
-
All systems operational.
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
### Health Check
|
|
131
|
-
```
|
|
132
|
-
status --health
|
|
133
|
-
|
|
134
|
-
Health Checks:
|
|
135
|
-
|
|
136
|
-
Agents:
|
|
137
|
-
✓ 15/15 agents valid
|
|
138
|
-
✓ All agent files exist in .codex/agents/
|
|
139
|
-
|
|
140
|
-
Dependencies:
|
|
141
|
-
✓ All skill references valid
|
|
142
|
-
✓ All guide references valid
|
|
143
|
-
|
|
144
|
-
External Sources:
|
|
145
|
-
✓ fe-vercel-agent (github: reachable)
|
|
146
|
-
|
|
147
|
-
Documentation:
|
|
148
|
-
✓ AGENTS.md in sync
|
|
149
|
-
✓ All .codex/agents/*.md files valid
|
|
150
|
-
✓ All .codex/skills/*/SKILL.md files valid
|
|
151
|
-
|
|
152
|
-
Result: HEALTHY
|
|
153
|
-
```
|