oh-my-customcode 0.100.1 → 0.102.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 CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  **[한국어 문서 (Korean)](./README_ko.md)**
15
15
 
16
- 48 agents. 109 skills. 22 rules. One command.
16
+ 48 agents. 112 skills. 22 rules. One command.
17
17
 
18
18
  ```bash
19
19
  npm install -g oh-my-customcode && cd your-project && omcustom init
@@ -132,7 +132,7 @@ Each agent declares its tools, model, memory scope, and limitations in YAML fron
132
132
 
133
133
  ---
134
134
 
135
- ### Skills (109)
135
+ ### Skills (112)
136
136
 
137
137
  | Category | Count | Includes |
138
138
  |----------|-------|----------|
@@ -222,7 +222,7 @@ Key rules: R010 (orchestrator never writes files), R009 (parallel execution mand
222
222
 
223
223
  ---
224
224
 
225
- ### Guides (39)
225
+ ### Guides (40)
226
226
 
227
227
  Reference documentation covering best practices, architecture decisions, and integration patterns. Located in `guides/` at project root, covering topics from agent design to CI/CD to observability.
228
228
 
@@ -272,14 +272,14 @@ your-project/
272
272
  ├── CLAUDE.md # Entry point
273
273
  ├── .claude/
274
274
  │ ├── agents/ # 48 agent definitions
275
- │ ├── skills/ # 109 skill modules
275
+ │ ├── skills/ # 112 skill modules
276
276
  │ ├── rules/ # 22 governance rules (R000-R021)
277
277
  │ ├── hooks/ # 15 lifecycle hook scripts
278
278
  │ ├── schemas/ # Tool input validation schemas
279
279
  │ ├── specs/ # Extracted canonical specs
280
280
  │ ├── contexts/ # 4 shared context files
281
281
  │ └── ontology/ # Knowledge graph for RAG
282
- └── guides/ # 39 reference documents
282
+ └── guides/ # 40 reference documents
283
283
  ```
284
284
 
285
285
  ---
package/dist/cli/index.js CHANGED
@@ -2334,7 +2334,7 @@ var init_package = __esm(() => {
2334
2334
  workspaces: [
2335
2335
  "packages/*"
2336
2336
  ],
2337
- version: "0.100.1",
2337
+ version: "0.102.0",
2338
2338
  description: "Batteries-included agent harness for Claude Code",
2339
2339
  type: "module",
2340
2340
  bin: {
package/dist/index.js CHANGED
@@ -2014,7 +2014,7 @@ var package_default = {
2014
2014
  workspaces: [
2015
2015
  "packages/*"
2016
2016
  ],
2017
- version: "0.100.1",
2017
+ version: "0.102.0",
2018
2018
  description: "Batteries-included agent harness for Claude Code",
2019
2019
  type: "module",
2020
2020
  bin: {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "workspaces": [
4
4
  "packages/*"
5
5
  ],
6
- "version": "0.100.1",
6
+ "version": "0.102.0",
7
7
  "description": "Batteries-included agent harness for Claude Code",
8
8
  "type": "module",
9
9
  "bin": {
@@ -475,6 +475,16 @@
475
475
  }
476
476
  ],
477
477
  "description": "Advisory reminder to sync skill counts in 6 locations when a SKILL.md is created/modified (R021)"
478
+ },
479
+ {
480
+ "matcher": "mcp_tool_name matches \"mcp__playwright__.*\" || mcp_tool_name matches \"mcp__claude-in-chrome__.*\"",
481
+ "hooks": [
482
+ {
483
+ "type": "command",
484
+ "command": "bash .claude/hooks/scripts/playwright-compress.sh"
485
+ }
486
+ ],
487
+ "description": "Layer 4: Compress Playwright/Chrome MCP output via Haiku summarization"
478
488
  }
479
489
  ],
480
490
  "Stop": [
@@ -0,0 +1,50 @@
1
+ #!/bin/bash
2
+ # Layer 4: Playwright/Chrome MCP Output Intelligence Compression
3
+ # Reduces MCP tool output by 94-96% using Haiku summarization
4
+ # Preserves ref= values for interactive flow continuity
5
+ # Source: adapted from treesoop/claude-native-plugin (MIT)
6
+
7
+ set -euo pipefail
8
+
9
+ input=$(cat)
10
+ tool_output=$(echo "$input" | jq -r '.tool_output // ""')
11
+
12
+ # Skip if output is small (< 3000 chars)
13
+ output_len=${#tool_output}
14
+ if [ "$output_len" -lt 3000 ]; then
15
+ echo "$input"
16
+ exit 0
17
+ fi
18
+
19
+ # Extract ref= values to preserve
20
+ refs=$(echo "$tool_output" | grep -oE 'ref="[^"]*"' | sort -u || true)
21
+
22
+ # Summarize using Haiku via subscription auth
23
+ summary=$(echo "$tool_output" | claude -p --model haiku "Summarize this browser page content concisely. Preserve ALL ref= attribute values exactly as they appear. Focus on: page structure, interactive elements with their ref values, visible text content, and any error messages." 2>/dev/null) || {
24
+ # Fallback: return original on failure
25
+ echo "$input"
26
+ exit 0
27
+ }
28
+
29
+ # Verify ref= preservation
30
+ if [ -n "$refs" ]; then
31
+ missing_refs=""
32
+ while IFS= read -r ref; do
33
+ if ! echo "$summary" | grep -qF "$ref"; then
34
+ missing_refs="$missing_refs $ref"
35
+ fi
36
+ done <<< "$refs"
37
+
38
+ # Append missing refs if any
39
+ if [ -n "$missing_refs" ]; then
40
+ summary="$summary
41
+
42
+ [Preserved refs]:$missing_refs"
43
+ fi
44
+ fi
45
+
46
+ # Return compressed output
47
+ compressed_len=${#summary}
48
+ savings=$(( (output_len - compressed_len) * 100 / output_len ))
49
+ echo "$input" | jq --arg summary "$summary" --arg savings "${savings}% reduced (${output_len}→${compressed_len} chars)" \
50
+ '.tool_output = $summary | .["updatedMCPToolOutput"] = $summary'
@@ -1,49 +1,66 @@
1
- # [SHOULD] Ontology-RAG Assisted Routing
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 ontology-RAG's `get_agent_for_task` MCP tool to enrich agent selection with contextual skill suggestions. Ontology-RAG is an enrichment layer it does NOT replace static routing.
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
- ## Integration Pattern
9
+ ## Enrichment Layers
10
10
 
11
- After static routing selects an agent, call `get_agent_for_task(query)` and extract `suggested_skills` from the response. Inject these into the spawned agent's prompt as contextual hints.
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
- "Ontology context suggests these skills may be relevant: {suggested_skills}"
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 with unmodified prompt |
29
- | get_agent_for_task returns empty | Proceed with unmodified prompt |
30
- | Response parsing error | Skip silently, log warning |
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
- **MCP failure MUST NOT block or delay routing.** Ontology-RAG is advisory only.
48
+ **Enrichment failure MUST NOT block or delay routing.** Both layers are advisory only.
33
49
 
34
50
  ## Scope
35
51
 
36
- | Applies to | Details |
37
- |------------|---------|
38
- | secretary-routing | Enriches manager agent selection |
39
- | dev-lead-routing | Enriches language/framework expert selection |
40
- | de-lead-routing | Enriches data engineering expert selection |
41
- | qa-lead-routing | Enriches QA workflow 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 MCP tool; subagent receives enriched prompt |
48
- | R015 | Post-fix confidence (0.30-0.40) remains below R015's 70% threshold; display behavior unchanged |
49
- | R009 | Ontology-RAG call adds ~300 tokens; no parallelism impact |
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 |
@@ -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"` in the Agent tool call if the session uses bypassPermissions. Without explicit mode, CC defaults to `acceptEdits`.
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.
@@ -0,0 +1,104 @@
1
+ ---
2
+ name: design-shotgun
3
+ description: Generate 4-6 parallel design mockups for rapid visual comparison — adapted from gstack /design-shotgun pattern
4
+ scope: core
5
+ version: 1.0.0
6
+ user-invocable: true
7
+ argument-hint: "<component/page description>"
8
+ effort: high
9
+ ---
10
+
11
+ # Design Shotgun — Parallel Mockup Generation
12
+
13
+ ## Purpose
14
+
15
+ Generates 4-6 independent design variations simultaneously, then presents them side-by-side for comparison. Prevents premature convergence on a single design direction.
16
+
17
+ ## Usage
18
+
19
+ ```
20
+ /design-shotgun "landing page hero section"
21
+ /design-shotgun "dashboard settings panel"
22
+ /design-shotgun "mobile navigation menu"
23
+ ```
24
+
25
+ ## Workflow
26
+
27
+ ### Phase 1: Brief Analysis
28
+
29
+ Parse the design brief to extract:
30
+ - Component type (page, section, widget, modal)
31
+ - Constraints (brand colors, existing design system, accessibility requirements)
32
+ - Target platform (web, mobile, responsive)
33
+
34
+ ### Phase 2: Parallel Generation (R009)
35
+
36
+ Spawn 4 parallel agents, each generating a distinct design approach:
37
+
38
+ | Agent | Style Direction | Focus |
39
+ |-------|----------------|-------|
40
+ | 1 | Minimal | Maximum whitespace, essential elements only |
41
+ | 2 | Data-dense | Information-rich, compact layout |
42
+ | 3 | Visual | Hero imagery, bold typography, emotional |
43
+ | 4 | Conventional | Industry-standard patterns, familiar UX |
44
+
45
+ Each agent generates:
46
+ - HTML mockup (self-contained, inline CSS)
47
+ - Design rationale (2-3 sentences)
48
+ - Accessibility notes
49
+
50
+ ### Phase 3: Comparison Board
51
+
52
+ Present all mockups with side-by-side comparison:
53
+
54
+ ```markdown
55
+ ## Design Shotgun Results: {component}
56
+
57
+ ### Variation 1: Minimal
58
+ Rationale: {why}
59
+ [HTML mockup code]
60
+
61
+ ### Variation 2: Data-dense
62
+ Rationale: {why}
63
+ [HTML mockup code]
64
+
65
+ ### Variation 3: Visual
66
+ Rationale: {why}
67
+ [HTML mockup code]
68
+
69
+ ### Variation 4: Conventional
70
+ Rationale: {why}
71
+ [HTML mockup code]
72
+
73
+ ## Comparison
74
+ | Criteria | V1 | V2 | V3 | V4 |
75
+ |----------|----|----|----|----|
76
+ | Readability | ★★★ | ★★ | ★★ | ★★★ |
77
+ | Visual impact | ★ | ★★ | ★★★ | ★★ |
78
+ | Information density | ★ | ★★★ | ★★ | ★★ |
79
+ | Accessibility | ★★★ | ★★ | ★★ | ★★★ |
80
+ ```
81
+
82
+ ### Phase 4: Selection & Refinement
83
+
84
+ User selects preferred variation(s). Selected design can be:
85
+ - Refined with follow-up iterations
86
+ - Combined with elements from other variations
87
+ - Handed to fe-design-expert for production implementation
88
+
89
+ ## Integration
90
+
91
+ | Component | Role |
92
+ |-----------|------|
93
+ | R009 | 4 parallel agents for mockup generation |
94
+ | impeccable-design | Quality baseline for generated mockups |
95
+ | fe-design-expert | Production refinement after selection |
96
+ | web-design-guidelines | Accessibility and UX compliance |
97
+
98
+ ## Permission Mode
99
+
100
+ 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.
101
+
102
+ ## Source
103
+
104
+ Adapted from [garrytan/gstack](https://github.com/garrytan/gstack) /design-shotgun pattern.
@@ -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"` in the Agent tool call if the session uses bypassPermissions. Without explicit mode, CC defaults to `acceptEdits`.
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"
@@ -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).
@@ -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.
@@ -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"` in the Agent tool call if the session uses bypassPermissions. Without explicit mode, CC defaults to `acceptEdits`.
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.
@@ -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"` in the Agent tool call if the session uses bypassPermissions. Without explicit mode, CC defaults to `acceptEdits`.
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
 
@@ -114,11 +114,11 @@ project/
114
114
  +-- CLAUDE.md # 진입점
115
115
  +-- .claude/
116
116
  | +-- agents/ # 서브에이전트 정의 (48 파일)
117
- | +-- skills/ # 스킬 (109 디렉토리)
117
+ | +-- skills/ # 스킬 (112 디렉토리)
118
118
  | +-- rules/ # 전역 규칙 (R000-R022)
119
119
  | +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
120
120
  | +-- contexts/ # 컨텍스트 파일 (ecomode)
121
- +-- guides/ # 레퍼런스 문서 (39 토픽)
121
+ +-- guides/ # 레퍼런스 문서 (40 토픽)
122
122
  ```
123
123
 
124
124
  ## 오케스트레이션
@@ -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
@@ -0,0 +1,187 @@
1
+ # Token Efficiency — Three-Layer Defense Stack
2
+
3
+ > **Source**: [Claude Code & Codex token efficiency by settings adjustment](https://www.stdy.blog/increasing-token-efficiency-by-setting-adjustment-in-claude-and-codex/)
4
+ > **Reference baseline**: Claude Code v2.1.114+ / Codex v0.121.0+
5
+
6
+ ## Why This Matters
7
+
8
+ Token spend in Claude Code is not purely a function of task complexity. A significant portion of token consumption occurs through structural overhead: auto-injected git instructions, IDE file listings, tool output that exceeds what the model actually needs, and session state reloaded unnecessarily across turns.
9
+
10
+ The three-layer defense stack addresses this overhead at three distinct points in the session lifecycle:
11
+
12
+ ```
13
+ ┌─────────────────────────────────────────────────────────────────┐
14
+ │ Layer 1: cc-token-saver (CACHE DEFENSE) │
15
+ │ Before session — protect prompt cache TTL from idle expiry │
16
+ ├─────────────────────────────────────────────────────────────────┤
17
+ │ Layer 2: R013 Ecomode (RUNTIME COMPRESSION) │
18
+ │ During session — compact output, aggregate results, prune input│
19
+ ├─────────────────────────────────────────────────────────────────┤
20
+ │ Layer 3: Settings-Based Gates (PRE-SESSION PREVENTION) │
21
+ │ Config time — disable injections before they happen │
22
+ ├─────────────────────────────────────────────────────────────────┤
23
+ │ Layer 4: playwright-compress (MCP OUTPUT INTELLIGENCE) │
24
+ │ PostToolUse hook — Haiku summarization of browser MCP output │
25
+ └─────────────────────────────────────────────────────────────────┘
26
+ ```
27
+
28
+ Each layer is independently deployable and non-overlapping. Together they form a complete defense.
29
+
30
+ ---
31
+
32
+ ## Layer 1: cc-token-saver (Prompt Cache TTL Guard)
33
+
34
+ **What it does:** Detects when the 1-hour prompt cache TTL is about to expire due to idle time. Warns before cache invalidates, preventing a full re-spend on the next turn.
35
+
36
+ **Why it matters:** Claude Code's prompt cache has a 1-hour TTL on idle. If you pause a long session, the entire cached context must be re-processed at full cost on the next message. cc-token-saver intercepts this.
37
+
38
+ **Key features:**
39
+ - Token Guardian: idle TTL detection and warning
40
+ - `/continue`: zero-cost context restore after session pause
41
+ - `/usage-view`: cost dashboard for session/cumulative spend
42
+
43
+ **When to use:** Always — install as a plugin and leave active.
44
+
45
+ **Reference:** `guides/cc-token-saver/README.md`
46
+
47
+ ---
48
+
49
+ ## Layer 2: R013 Ecomode (Runtime Behavior Compression)
50
+
51
+ **What it does:** Compresses agent output at runtime — compact result format, aggregated multi-agent results, and active pruning of irrelevant input context.
52
+
53
+ **Why it matters:** Without ecomode, subagents return verbose outputs that accumulate across parallel invocations. At 4+ concurrent agents, unchecked output grows the context window rapidly.
54
+
55
+ **Activation triggers:**
56
+ - 4+ parallel tasks running simultaneously
57
+ - Batch operations on independent targets
58
+ - Context usage approaching 80%
59
+ - Explicit "ecomode on"
60
+
61
+ **Key behaviors:**
62
+ - Agents return `status + 1-2 sentence summary + key_data only`
63
+ - File lists compressed to count (when > 5 files)
64
+ - Error traces: first/last 3 lines only
65
+ - Code references: `path:line` ref instead of full block
66
+
67
+ **When to use:** Auto-activates on threshold — configure threshold in ecomode config if needed.
68
+
69
+ **Reference:** `.claude/rules/SHOULD-ecomode.md` (R013)
70
+
71
+ ---
72
+
73
+ ## Layer 3: Settings-Based Gates (Pre-Session Prevention)
74
+
75
+ **What it does:** Disables token-consuming injections and sets output caps in configuration files before sessions start. These gates prevent overhead from ever entering the context window.
76
+
77
+ **Why it matters:** Certain Claude Code defaults inject tokens on every session start regardless of whether they are needed:
78
+ - `includeGitInstructions: true` (default) injects git workflow context on every session
79
+ - `autoConnectIde: true` injects file lists from connected IDEs
80
+ - Uncapped `BASH_MAX_OUTPUT_LENGTH` allows tool output to flood the context
81
+
82
+ **How to apply:** `token-efficiency-audit` skill — see `.claude/skills/token-efficiency-audit/SKILL.md`
83
+
84
+ ---
85
+
86
+ ## Lever Reference Table
87
+
88
+ ### Interactive Session Levers (safe for development)
89
+
90
+ | Lever | Location | Default | Recommended | Token Impact | Risk |
91
+ |-------|----------|---------|-------------|-------------|------|
92
+ | `includeGitInstructions` | settings.json | `true` | `false` | Medium — removes git workflow injection | None for most projects |
93
+ | `autoConnectIde` | settings.json | `true` | `false` | Low — removes IDE file list injection | Loses IDE file awareness |
94
+ | `attribution.commit` | settings.json | auto text | `""` | Low — removes attribution boilerplate | None |
95
+ | `attribution.pr` | settings.json | auto text | `""` | Low — removes attribution boilerplate | None |
96
+ | `BASH_MAX_OUTPUT_LENGTH` | env | unlimited | `15000` | High — caps bash output | Output truncated if > 15000 chars |
97
+ | `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | env | unlimited | `8000` | Medium — caps file read output | Large files truncated |
98
+ | `MAX_MCP_OUTPUT_TOKENS` | env | unlimited | `8000` | Medium — caps MCP output | MCP results truncated |
99
+ | `CLAUDE_CODE_GLOB_NO_IGNORE` | env | `true` | `false` | Low — respects .gitignore | Fewer files visible in globs |
100
+
101
+ ### CI/Worker-Only Levers (destructive — disables oh-my-customcode)
102
+
103
+ > These settings disable core oh-my-customcode functionality. **Never apply to interactive sessions.**
104
+
105
+ | Lever | What it disables | Token impact | oh-my-customcode impact |
106
+ |-------|-----------------|-------------|------------------------|
107
+ | `CLAUDE_CODE_DISABLE_CLAUDE_MDS=1` | All `.claude/*.md` files including CLAUDE.md | High | ALL global rules and routing offline |
108
+ | `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS=1` | Built-in agent definitions | High | All 48 agents unavailable |
109
+ | `ENABLE_CLAUDEAI_MCP_SERVERS=false` | MCP server connections | Medium | MCP-dependent skills unavailable |
110
+ | `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` | Agent auto-memory | Low | No persistent memory across sessions |
111
+
112
+ ### Codex CLI Levers
113
+
114
+ | Lever | Location | Default | Recommended | Token Impact |
115
+ |-------|----------|---------|-------------|-------------|
116
+ | `features.apps` | config.toml | `true` | `false` | Medium |
117
+ | `apps._default.enabled` | config.toml | `true` | `false` | Medium |
118
+ | `web_search` | config.toml | `"auto"` | `"disabled"` | Medium — web search adds significant context |
119
+ | `tool_output_token_limit` | config.toml | `10000` | `10000` | High — do not lower below 5000 |
120
+
121
+ ---
122
+
123
+ ## Tradeoffs and Guardrails
124
+
125
+ ### The re-call trap
126
+
127
+ Setting output limits too low forces the model into repeated re-call loops — the model issues `tail -n 50 output.txt` or re-reads files in chunks, which costs more tokens than the original uncapped output. The minimum values below are empirically safe floors:
128
+
129
+ | Variable | Safe minimum | Recommended |
130
+ |----------|-------------|-------------|
131
+ | `BASH_MAX_OUTPUT_LENGTH` | 10000 | 15000 |
132
+ | `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | 4000 | 8000 |
133
+ | `MAX_MCP_OUTPUT_TOKENS` | 4000 | 8000 |
134
+ | Codex `tool_output_token_limit` | 5000 | 10000 |
135
+
136
+ ### Version drift
137
+
138
+ Settings defaults change with minor CC version releases. After each upgrade, verify active defaults with `/token-efficiency-audit audit`. The reference baseline for this guide is CC v2.1.114+ / Codex v0.121.0+.
139
+
140
+ ### includeGitInstructions tradeoff
141
+
142
+ Disabling `includeGitInstructions` removes git workflow guidance from the context. For projects with non-standard git workflows or junior contributors, this guidance may be worth keeping. For projects with experienced teams using `mgr-gitnerd` (R010), the injection is redundant.
143
+
144
+ ---
145
+
146
+ ## Interaction with Other Rules
147
+
148
+ | Rule / Component | Interaction |
149
+ |-----------------|-------------|
150
+ | R013 Ecomode | Layer 2 runtime compression. These layers are complementary — apply both. |
151
+ | cc-token-saver | Layer 1 cache defense. `Token Guardian` + `BASH_MAX_OUTPUT_LENGTH` together eliminate the two largest waste sources. |
152
+ | R010 Orchestrator | `CLAUDE_CODE_DISABLE_CLAUDE_MDS` disables R010 enforcement — CI-only. |
153
+ | R001 Safety | `apply-ci` mode is Risk Level High — requires user confirmation before applying. |
154
+ | R012 HUD Statusline | Statusline shows CTX% — effective measure of Layer 2+3 combined impact. |
155
+ | playwright-compress | Layer 4 hook — complements Layer 3 MAX_MCP_OUTPUT_TOKENS with intelligent lossless compression. |
156
+
157
+ ---
158
+
159
+ ## Layer 4: MCP Output Intelligence Compression
160
+
161
+ PostToolUse hook that compresses Playwright and Chrome MCP tool output using Haiku summarization.
162
+
163
+ | Metric | Before | After | Reduction |
164
+ |--------|--------|-------|-----------|
165
+ | browser_navigate | 37,983 chars | 1,922 chars | -94% |
166
+ | browser_snapshot | 37,897 chars | 1,435 chars | -96% |
167
+
168
+ - Preserves `ref=` attribute values for interactive flow
169
+ - Skips output < 3000 chars
170
+ - Falls back to original on Haiku failure
171
+ - No API key needed (uses `claude -p` subscription auth)
172
+
173
+ Configuration: `.claude/hooks/scripts/playwright-compress.sh`
174
+ Hook trigger: `mcp__playwright__.*` and `mcp__claude-in-chrome__.*`
175
+
176
+ ---
177
+
178
+ ## Cross-References
179
+
180
+ - `guides/claude-code/13-cli-flags.md` — CLI flags for non-interactive/CI invocation
181
+ - `guides/cc-token-saver/README.md` — Layer 1 detailed guide
182
+ - `.claude/rules/SHOULD-ecomode.md` — Layer 2 R013 specification
183
+ - `.claude/skills/token-efficiency-audit/SKILL.md` — Layer 3 HOW: audit and apply
184
+ - `.claude/skills/monitoring-setup/SKILL.md` — Measure effectiveness via OTel metrics
185
+ - `.claude/skills/update-config/` — Generic settings.json manipulation (broader scope)
186
+ - `.claude/skills/playwright-compress/SKILL.md` — Layer 4 MCP output compression hook
187
+ - `.claude/hooks/scripts/playwright-compress.sh` — Layer 4 hook script
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.100.1",
2
+ "version": "0.102.0",
3
3
  "lastUpdated": "2026-04-18T00:00:00.000Z",
4
4
  "components": [
5
5
  {
@@ -18,13 +18,13 @@
18
18
  "name": "skills",
19
19
  "path": ".claude/skills",
20
20
  "description": "Reusable skill modules (includes slash commands)",
21
- "files": 109
21
+ "files": 112
22
22
  },
23
23
  {
24
24
  "name": "guides",
25
25
  "path": "guides",
26
26
  "description": "Reference documentation",
27
- "files": 39
27
+ "files": 40
28
28
  },
29
29
  {
30
30
  "name": "hooks",