oh-my-customcode 0.91.0 → 0.93.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/cli/index.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/templates/.claude/agents/de-airflow-expert.md +17 -5
- package/templates/.claude/rules/SHOULD-ecomode.md +9 -0
- package/templates/.claude/rules/SHOULD-hud-statusline.md +8 -0
- package/templates/.claude/skills/action-validator/SKILL.md +14 -0
- package/templates/.claude/skills/airflow-best-practices/SKILL.md +52 -15
- package/templates/.claude/skills/harness-synthesizer/SKILL.md +145 -0
- package/templates/CLAUDE.md +9 -2
- package/templates/guides/airflow/README.md +26 -11
- package/templates/guides/cc-token-saver/README.md +97 -0
- package/templates/manifest.json +4 -4
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
**[한국어 문서 (Korean)](./README_ko.md)**
|
|
15
15
|
|
|
16
|
-
48 agents.
|
|
16
|
+
48 agents. 106 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 (
|
|
135
|
+
### Skills (106)
|
|
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 (
|
|
225
|
+
### Guides (37)
|
|
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/ #
|
|
275
|
+
│ ├── skills/ # 106 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/ #
|
|
282
|
+
└── guides/ # 37 reference documents
|
|
283
283
|
```
|
|
284
284
|
|
|
285
285
|
---
|
package/dist/cli/index.js
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -17,19 +17,31 @@ tools:
|
|
|
17
17
|
permissionMode: bypassPermissions
|
|
18
18
|
---
|
|
19
19
|
|
|
20
|
-
You are an expert Apache Airflow developer for production-ready DAGs following official best practices.
|
|
20
|
+
You are an expert Apache Airflow developer for production-ready DAGs following official best practices, targeting **Airflow 3.1.8**.
|
|
21
21
|
|
|
22
22
|
## Capabilities
|
|
23
23
|
|
|
24
|
-
- DAG authoring
|
|
25
|
-
-
|
|
26
|
-
-
|
|
24
|
+
- DAG authoring with `airflow.sdk` namespace (`DAG`, `@task`, `Asset`)
|
|
25
|
+
- TaskFlow API patterns and dynamic task mapping (`expand()`)
|
|
26
|
+
- Task dependency design and scheduling (cron, timetables, data-aware with Assets)
|
|
27
|
+
- DAG and task testing (`dag.test()`, unit tests, integration tests)
|
|
27
28
|
- Connection/variable management and secret backend integration
|
|
28
29
|
- DAG parsing and execution optimization
|
|
30
|
+
- Airflow 2.x → 3.x migration guidance (import paths, deprecated context vars, AIP-72/AIP-44)
|
|
31
|
+
|
|
32
|
+
## Key Airflow 3.x Differences
|
|
33
|
+
|
|
34
|
+
| Area | Airflow 2.x | Airflow 3.x |
|
|
35
|
+
|------|-------------|-------------|
|
|
36
|
+
| Imports | `from airflow.models import DAG` | `from airflow.sdk import DAG, task` |
|
|
37
|
+
| Data-aware | `Dataset` | `Asset` |
|
|
38
|
+
| Context | `execution_date` | `dag_run.logical_date` |
|
|
39
|
+
| Architecture | Tight coupling | Task Execution Interface (AIP-72) |
|
|
40
|
+
| API | DB direct access | Internal API (AIP-44) |
|
|
29
41
|
|
|
30
42
|
## Skills
|
|
31
43
|
|
|
32
|
-
Apply **airflow-best-practices** for core Airflow guidelines.
|
|
44
|
+
Apply **airflow-best-practices** for core Airflow 3.1.8 guidelines.
|
|
33
45
|
|
|
34
46
|
## Reference Guides
|
|
35
47
|
|
|
@@ -103,3 +103,12 @@ The `context-budget-advisor.sh` hook monitors context usage and emits warnings w
|
|
|
103
103
|
- Does NOT override explicit user settings
|
|
104
104
|
- Advisory only — never blocks operations
|
|
105
105
|
- Context percentage from statusline data when available
|
|
106
|
+
|
|
107
|
+
## Token Guardian Coexistence (cc-token-saver)
|
|
108
|
+
|
|
109
|
+
| Component | Trigger | Scope |
|
|
110
|
+
|-----------|---------|-------|
|
|
111
|
+
| `context-budget-advisor.sh` (R013) | Context usage % approaching threshold | In-session budget |
|
|
112
|
+
| Token Guardian (cc-token-saver) | 1h cache TTL idle detection | Cross-session cost |
|
|
113
|
+
|
|
114
|
+
Both can run simultaneously — different triggers, complementary coverage. R013's context budget is usage-based (approaching limit), Token Guardian is time-based (idle cache expiry).
|
|
@@ -41,3 +41,11 @@ RL/WL segments omitted on CC older than v2.1.80.
|
|
|
41
41
|
## Integration
|
|
42
42
|
|
|
43
43
|
Integrates with R007 (Agent ID), R008 (Tool ID), R009 (Parallel).
|
|
44
|
+
|
|
45
|
+
## External Plugin Statusline Conflict
|
|
46
|
+
|
|
47
|
+
| Plugin | Component | Resolution |
|
|
48
|
+
|--------|-----------|------------|
|
|
49
|
+
| cc-token-saver | Live Status Line | R012 `.claude/statusline.sh` has priority. Disable cc-token-saver statusline to avoid duplicate status bars. |
|
|
50
|
+
|
|
51
|
+
Internal statusline (`.claude/statusline.sh`) is the primary status display. External plugin status lines are supplementary or disabled.
|
|
@@ -67,6 +67,20 @@ policy_cache:
|
|
|
67
67
|
|
|
68
68
|
Policy caching reduces redundant LLM calls for well-understood workflows. Policies are advisory — the orchestrator may override.
|
|
69
69
|
|
|
70
|
+
## Code Harness Integration (AutoHarness)
|
|
71
|
+
|
|
72
|
+
When a synthesized harness exists for an agent (`.claude/outputs/harnesses/{agent-name}-*.yaml`), action-validator can use it for enhanced validation:
|
|
73
|
+
|
|
74
|
+
| Mode | Source | Behavior |
|
|
75
|
+
|------|--------|----------|
|
|
76
|
+
| Advisory (default) | Prompt-based checks | Emit warnings only |
|
|
77
|
+
| Code-verified | harness-synthesizer output | Run harness validation code, emit advisory results |
|
|
78
|
+
| Hard-enforce (opt-in) | harness-synthesizer `--hard-enforce` | Block invalid actions (requires explicit opt-in, see R021) |
|
|
79
|
+
|
|
80
|
+
To generate a harness for an agent: `/harness-synthesizer --agent {name} --mode verifier`
|
|
81
|
+
|
|
82
|
+
Code harness validation is additive — it supplements prompt-based checks, not replaces them.
|
|
83
|
+
|
|
70
84
|
## Scope
|
|
71
85
|
|
|
72
86
|
This skill is an advisory layer, not a hard enforcement mechanism:
|
|
@@ -5,29 +5,48 @@ scope: core
|
|
|
5
5
|
user-invocable: false
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# Apache Airflow Best Practices
|
|
8
|
+
# Apache Airflow Best Practices (3.1.8)
|
|
9
9
|
|
|
10
10
|
## DAG Authoring
|
|
11
11
|
|
|
12
|
+
### Imports (Airflow 3.x)
|
|
13
|
+
- Use `from airflow.sdk import DAG, task, Asset` — the stable public API
|
|
14
|
+
- Legacy `from airflow.models import DAG` and `from airflow.decorators import task` are deprecated
|
|
15
|
+
|
|
12
16
|
### Top-Level Code (CRITICAL)
|
|
13
17
|
- Avoid heavy computation at module level (executed on every DAG parse)
|
|
14
|
-
- Minimize imports at module level
|
|
15
|
-
-
|
|
16
|
-
-
|
|
18
|
+
- Minimize imports at module level — lazy-load inside `@task` functions
|
|
19
|
+
- Never call APIs, query databases, or access Variables at top level
|
|
20
|
+
- If Variables needed at top level, enable experimental cache with TTL
|
|
21
|
+
|
|
22
|
+
### TaskFlow API (Default Pattern)
|
|
23
|
+
- Use `@task` decorator for all Python tasks (preferred over classic operators)
|
|
24
|
+
- XCom serialization is automatic — return values become XCom
|
|
25
|
+
- Use `@task.branch` for branching logic
|
|
26
|
+
- Use `@task.sensor` for sensor tasks
|
|
27
|
+
|
|
28
|
+
### Dynamic Task Mapping
|
|
29
|
+
- Use `task.expand()` for runtime-determined task instances
|
|
30
|
+
- Combine with `.partial()` for fixed kwargs
|
|
31
|
+
- Map over lists, dicts, or XCom outputs from upstream tasks
|
|
17
32
|
|
|
18
33
|
### Scheduling
|
|
19
|
-
- Use cron expressions or timetables
|
|
20
|
-
- Set `catchup=False` for most
|
|
21
|
-
- Use data-aware scheduling (
|
|
34
|
+
- Use cron expressions or timetables for `schedule` parameter
|
|
35
|
+
- Set `catchup=False` for most DAGs
|
|
36
|
+
- Use data-aware scheduling with `Asset` (replaces `Dataset`) for dependencies
|
|
22
37
|
- Configure SLA monitoring
|
|
23
38
|
|
|
24
39
|
### Task Dependencies
|
|
25
|
-
- Use `>>` / `<<` for clarity
|
|
26
|
-
- Group related tasks with TaskGroup
|
|
40
|
+
- Use `>>` / `<<` operators for clarity
|
|
41
|
+
- Group related tasks with `TaskGroup`
|
|
27
42
|
- Avoid deep nesting (max 3 levels)
|
|
28
43
|
|
|
29
44
|
## Testing
|
|
30
45
|
|
|
46
|
+
### Local Testing
|
|
47
|
+
- Use `dag.test()` in `if __name__ == "__main__":` block for IDE debugging
|
|
48
|
+
- Runs all tasks in single serialized process without executor
|
|
49
|
+
|
|
31
50
|
### Unit Tests
|
|
32
51
|
- Test DAG import without errors
|
|
33
52
|
- Detect cycles in dependencies
|
|
@@ -42,16 +61,34 @@ user-invocable: false
|
|
|
42
61
|
## Production Deployment
|
|
43
62
|
|
|
44
63
|
### Performance
|
|
45
|
-
- Lazy-load heavy libraries inside
|
|
64
|
+
- Lazy-load heavy libraries inside `@task` functions
|
|
46
65
|
- Use connection pooling
|
|
47
|
-
- Minimize DAG parse time
|
|
48
|
-
- Enable parallelism
|
|
66
|
+
- Minimize DAG parse time (target < 30s for all DAGs)
|
|
67
|
+
- Enable parallelism appropriately
|
|
49
68
|
|
|
50
69
|
### Reliability
|
|
51
|
-
- Set appropriate retries and retry_delay
|
|
70
|
+
- Set appropriate `retries` and `retry_delay`
|
|
52
71
|
- Use SLA callbacks for monitoring
|
|
53
|
-
- Implement proper error handling
|
|
72
|
+
- Implement proper error handling with `on_failure_callback`
|
|
54
73
|
- Log important events
|
|
55
74
|
|
|
75
|
+
## Migration: 2.x → 3.x
|
|
76
|
+
|
|
77
|
+
### Deprecated (Remove or Replace)
|
|
78
|
+
| Deprecated | Replacement |
|
|
79
|
+
|-----------|-------------|
|
|
80
|
+
| `from airflow.models import DAG` | `from airflow.sdk import DAG` |
|
|
81
|
+
| `from airflow.decorators import task` | `from airflow.sdk import task` |
|
|
82
|
+
| `Dataset` | `Asset` |
|
|
83
|
+
| `execution_date` in context | `dag_run.logical_date` |
|
|
84
|
+
| `conf` in task context | Removed — use Variables or params |
|
|
85
|
+
|
|
86
|
+
### Architecture Changes
|
|
87
|
+
- **AIP-72**: Task Execution Interface — tasks run in isolated subprocesses via Execution API Server
|
|
88
|
+
- **AIP-44**: Internal API — components communicate via API, not direct DB access
|
|
89
|
+
- **New UI**: React-based web interface (replaces Flask-based UI)
|
|
90
|
+
|
|
56
91
|
## References
|
|
57
|
-
- [Airflow Best Practices](https://airflow.apache.org/docs/apache-airflow/
|
|
92
|
+
- [Airflow 3.1.8 Best Practices](https://airflow.apache.org/docs/apache-airflow/3.1.8/best-practices.html)
|
|
93
|
+
- [Airflow SDK (Task SDK)](https://airflow.apache.org/docs/apache-airflow/3.1.8/authoring-and-scheduling/index.html)
|
|
94
|
+
- [Migration Guide 2.x → 3.x](https://airflow.apache.org/docs/apache-airflow/3.1.8/migration-guide.html)
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: harness-synthesizer
|
|
3
|
+
description: Synthesize code harnesses for agent action validation — AutoHarness-inspired verifier/filter/policy generation
|
|
4
|
+
scope: core
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
user-invocable: true
|
|
7
|
+
argument-hint: "[--mode verifier|filter|policy] [--agent <name>] [--dry-run]"
|
|
8
|
+
effort: high
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Harness Synthesizer Skill
|
|
12
|
+
|
|
13
|
+
## Purpose
|
|
14
|
+
|
|
15
|
+
Synthesize executable validation harnesses for agent tool calls, inspired by AutoHarness (Google DeepMind, arxiv 2603.03329). Generates code-level verifiers that check action validity before or after execution, reducing agent errors through structured constraint enforcement.
|
|
16
|
+
|
|
17
|
+
Default mode is advisory (verifier). Hard enforcement requires explicit `--hard-enforce` opt-in per R021.
|
|
18
|
+
|
|
19
|
+
## Three Modes
|
|
20
|
+
|
|
21
|
+
| Mode | Flag | Behavior | Enforcement |
|
|
22
|
+
|------|------|----------|-------------|
|
|
23
|
+
| `verifier` | default | Post-hoc check: validates tool call results after execution | Advisory only |
|
|
24
|
+
| `filter` | `--mode filter` | Pre-execution check: blocks invalid tool calls | Opt-in, requires `--hard-enforce` |
|
|
25
|
+
| `policy` | `--mode policy` | Suggests the best valid action from available options | Advisory only |
|
|
26
|
+
|
|
27
|
+
### Verifier Mode (Default)
|
|
28
|
+
|
|
29
|
+
Generates a YAML harness that describes post-execution checks for each tool the agent uses. Checks are emitted as advisory warnings — they do not block execution.
|
|
30
|
+
|
|
31
|
+
```yaml
|
|
32
|
+
# Example verifier harness output
|
|
33
|
+
harness:
|
|
34
|
+
agent: lang-golang-expert
|
|
35
|
+
mode: verifier
|
|
36
|
+
rules:
|
|
37
|
+
- tool: Write
|
|
38
|
+
checks:
|
|
39
|
+
- field: file_path
|
|
40
|
+
pattern: ".*\\.go$"
|
|
41
|
+
on_fail: warn # advisory
|
|
42
|
+
- field: content
|
|
43
|
+
must_not_contain: "TODO:"
|
|
44
|
+
on_fail: warn
|
|
45
|
+
- tool: Bash
|
|
46
|
+
checks:
|
|
47
|
+
- command_pattern: "^(go build|go test|go fmt|go vet)"
|
|
48
|
+
on_fail: warn
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Filter Mode (Opt-in)
|
|
52
|
+
|
|
53
|
+
Generates pre-execution filter rules. Requires `--hard-enforce` flag. Used when advisory warnings are insufficient and the risk of invalid actions is high.
|
|
54
|
+
|
|
55
|
+
```yaml
|
|
56
|
+
# Example filter harness output (--hard-enforce)
|
|
57
|
+
harness:
|
|
58
|
+
agent: mgr-gitnerd
|
|
59
|
+
mode: filter
|
|
60
|
+
enforcement: hard
|
|
61
|
+
rules:
|
|
62
|
+
- tool: Bash
|
|
63
|
+
blocks:
|
|
64
|
+
- pattern: "git push --force"
|
|
65
|
+
reason: "Force push to protected branch"
|
|
66
|
+
- pattern: "git reset --hard"
|
|
67
|
+
reason: "Destructive reset without confirmation"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Policy Mode
|
|
71
|
+
|
|
72
|
+
Generates a policy function that ranks valid actions and suggests the best one. Useful for agents with multiple valid paths to the same goal.
|
|
73
|
+
|
|
74
|
+
```yaml
|
|
75
|
+
# Example policy harness output
|
|
76
|
+
harness:
|
|
77
|
+
agent: qa-engineer
|
|
78
|
+
mode: policy
|
|
79
|
+
policies:
|
|
80
|
+
- scenario: "test file modification"
|
|
81
|
+
preferred_sequence:
|
|
82
|
+
- tool: Read
|
|
83
|
+
reason: "Read before modifying"
|
|
84
|
+
- tool: Edit
|
|
85
|
+
reason: "Edit is safer than Write for existing files"
|
|
86
|
+
avoid:
|
|
87
|
+
- tool: Write
|
|
88
|
+
on_existing_file: true
|
|
89
|
+
reason: "Overwrites without diff"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Workflow
|
|
93
|
+
|
|
94
|
+
1. **Read target agent frontmatter** — extract `tools`, `domain`, `limitations` fields
|
|
95
|
+
2. **Analyze recent tool call patterns** — check `.claude/outputs/` for prior session logs (if available)
|
|
96
|
+
3. **Synthesize validation harness** — generate YAML harness matching agent's declared capabilities
|
|
97
|
+
4. **Refine via evaluator-optimizer loop** — iterate harness against edge cases (3 rounds max)
|
|
98
|
+
5. **Save output** — write to `.claude/outputs/harnesses/{agent-name}-{mode}.yaml`
|
|
99
|
+
6. **Report** — print harness summary and integration instructions
|
|
100
|
+
|
|
101
|
+
## Integration
|
|
102
|
+
|
|
103
|
+
| System | How |
|
|
104
|
+
|--------|-----|
|
|
105
|
+
| `action-validator` | Harness output feeds into action-validator's code-verified mode |
|
|
106
|
+
| `adaptive-harness --learn` | Auto-triggers harness-synthesizer for project-specific patterns |
|
|
107
|
+
| `evaluator-optimizer` | Provides iterative refinement loop (gradient-free optimization) |
|
|
108
|
+
| `pipeline-guards` | Harness checks usable as pipeline quality gates |
|
|
109
|
+
|
|
110
|
+
## Usage Examples
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# Generate advisory verifier for lang-golang-expert
|
|
114
|
+
/harness-synthesizer --agent lang-golang-expert --mode verifier
|
|
115
|
+
|
|
116
|
+
# Dry-run: preview harness without saving
|
|
117
|
+
/harness-synthesizer --agent mgr-gitnerd --mode filter --dry-run
|
|
118
|
+
|
|
119
|
+
# Generate hard-enforce filter (explicit opt-in)
|
|
120
|
+
/harness-synthesizer --agent mgr-gitnerd --mode filter --hard-enforce
|
|
121
|
+
|
|
122
|
+
# Generate policy harness
|
|
123
|
+
/harness-synthesizer --agent qa-engineer --mode policy
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## R021 Compliance
|
|
127
|
+
|
|
128
|
+
- Default `verifier` mode: advisory only — never blocks tool execution
|
|
129
|
+
- `filter` mode without `--hard-enforce`: advisory only — emits warnings
|
|
130
|
+
- `filter --hard-enforce`: opt-in hard enforcement — requires explicit user flag
|
|
131
|
+
- All harness output is saved to `.claude/outputs/harnesses/` (git-untracked)
|
|
132
|
+
|
|
133
|
+
## Output Format
|
|
134
|
+
|
|
135
|
+
Harnesses are saved as YAML at `.claude/outputs/harnesses/{agent-name}-{mode}.yaml`. Each harness includes:
|
|
136
|
+
|
|
137
|
+
```yaml
|
|
138
|
+
harness:
|
|
139
|
+
agent: {agent-name}
|
|
140
|
+
mode: verifier | filter | policy
|
|
141
|
+
version: 1.0.0
|
|
142
|
+
generated: {ISO-8601 timestamp}
|
|
143
|
+
enforcement: advisory | hard # hard only with --hard-enforce
|
|
144
|
+
rules: [...]
|
|
145
|
+
```
|
package/templates/CLAUDE.md
CHANGED
|
@@ -135,6 +135,7 @@ oh-my-customcode로 구동됩니다.
|
|
|
135
135
|
| `/skill-extractor` | 세션 성공 패턴에서 스킬 후보 추출 |
|
|
136
136
|
| `/deep-plan` | 연구 검증 기반 계획 수립 (research → plan → verify) |
|
|
137
137
|
| `/deep-verify` | 다중 관점 릴리즈 품질 검증 |
|
|
138
|
+
| `/harness-synthesizer` | 에이전트 액션 검증용 코드 하네스 합성 (AutoHarness 기반) |
|
|
138
139
|
| `/professor-triage` | 이슈 교차 분석 트리아지 (omc_issue_analyzer 댓글 기반) |
|
|
139
140
|
| `/release-plan` | verify-done 이슈 릴리즈 유닛 계획 생성 |
|
|
140
141
|
| `/pipeline` | YAML 파이프라인 실행 (예: /pipeline auto-dev) |
|
|
@@ -157,11 +158,11 @@ project/
|
|
|
157
158
|
+-- CLAUDE.md # 진입점
|
|
158
159
|
+-- .claude/
|
|
159
160
|
| +-- agents/ # 서브에이전트 정의 (48 파일)
|
|
160
|
-
| +-- skills/ # 스킬 (
|
|
161
|
+
| +-- skills/ # 스킬 (106 디렉토리)
|
|
161
162
|
| +-- rules/ # 전역 규칙 (R000-R022)
|
|
162
163
|
| +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
|
|
163
164
|
| +-- contexts/ # 컨텍스트 파일 (ecomode)
|
|
164
|
-
+-- guides/ # 레퍼런스 문서 (
|
|
165
|
+
+-- guides/ # 레퍼런스 문서 (37 토픽)
|
|
165
166
|
```
|
|
166
167
|
|
|
167
168
|
## 오케스트레이션
|
|
@@ -273,6 +274,12 @@ Claude Code의 Agent Teams 기능이 활성화되어 있으면 (`CLAUDE_CODE_EXP
|
|
|
273
274
|
| obsidian-skills | - | 옵시디언 마크다운 지원 |
|
|
274
275
|
| context7 | claude-plugins-official | 라이브러리 문서 조회 |
|
|
275
276
|
|
|
277
|
+
### 권장 플러그인
|
|
278
|
+
|
|
279
|
+
| 플러그인 | 소스 | 용도 |
|
|
280
|
+
|----------|------|------|
|
|
281
|
+
| cc-token-saver | ww-w-ai/cc-token-saver | 토큰/비용 최적화 (Token Guardian, /continue, /usage-view) |
|
|
282
|
+
|
|
276
283
|
### 권장 MCP 서버
|
|
277
284
|
|
|
278
285
|
| 서버 | 용도 |
|
|
@@ -1,22 +1,35 @@
|
|
|
1
|
-
# Apache Airflow Guide
|
|
1
|
+
# Apache Airflow Guide (3.1.8)
|
|
2
2
|
|
|
3
|
-
Reference documentation for Apache Airflow DAG development best practices.
|
|
3
|
+
Reference documentation for Apache Airflow 3.1.8 DAG development best practices.
|
|
4
4
|
|
|
5
5
|
## Source
|
|
6
6
|
|
|
7
|
-
Based on [Apache Airflow official documentation](https://airflow.apache.org/docs/) and [Astronomer best practices](https://
|
|
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/).
|
|
8
|
+
|
|
9
|
+
## Airflow 3.x Key Changes
|
|
10
|
+
|
|
11
|
+
| Change | Details |
|
|
12
|
+
|--------|---------|
|
|
13
|
+
| SDK namespace | `from airflow.sdk import DAG, task, Asset` |
|
|
14
|
+
| Task Execution (AIP-72) | Isolated subprocess execution via Execution API Server |
|
|
15
|
+
| Internal API (AIP-44) | Components use API instead of direct DB access |
|
|
16
|
+
| Asset (was Dataset) | Data-aware scheduling primitive renamed |
|
|
17
|
+
| Context cleanup | `execution_date` → `dag_run.logical_date` |
|
|
18
|
+
| New UI | React-based web interface |
|
|
19
|
+
| TaskFlow API | `@task` is the default pattern for Python tasks |
|
|
8
20
|
|
|
9
21
|
## Categories
|
|
10
22
|
|
|
11
23
|
| Priority | Category | Impact |
|
|
12
24
|
|----------|----------|--------|
|
|
13
|
-
| 1 | DAG Authoring | CRITICAL |
|
|
14
|
-
| 2 |
|
|
15
|
-
| 3 | Testing | HIGH |
|
|
16
|
-
| 4 | Scheduling | HIGH |
|
|
25
|
+
| 1 | DAG Authoring (airflow.sdk) | CRITICAL |
|
|
26
|
+
| 2 | TaskFlow API & Dynamic Mapping | CRITICAL |
|
|
27
|
+
| 3 | Testing (dag.test()) | HIGH |
|
|
28
|
+
| 4 | Scheduling & Assets | HIGH |
|
|
17
29
|
| 5 | Connections & Variables | MEDIUM |
|
|
18
30
|
| 6 | Monitoring & SLA | MEDIUM |
|
|
19
31
|
| 7 | Performance Optimization | LOW-MEDIUM |
|
|
32
|
+
| 8 | 2.x → 3.x Migration | HIGH |
|
|
20
33
|
|
|
21
34
|
## Usage
|
|
22
35
|
|
|
@@ -26,7 +39,9 @@ This guide is referenced by:
|
|
|
26
39
|
|
|
27
40
|
## External Resources
|
|
28
41
|
|
|
29
|
-
- [Airflow Official Docs](https://airflow.apache.org/docs/)
|
|
30
|
-
- [Airflow Best Practices](https://airflow.apache.org/docs/apache-airflow/
|
|
31
|
-
- [
|
|
32
|
-
- [Airflow TaskFlow API](https://airflow.apache.org/docs/apache-airflow/
|
|
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)
|
|
47
|
+
- [Astronomer Docs](https://docs.astronomer.io/)
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# cc-token-saver Integration Guide
|
|
2
|
+
|
|
3
|
+
> **Source**: https://github.com/ww-w-ai/cc-token-saver (Apache-2.0)
|
|
4
|
+
> **Strategy**: External plugin — keep as plugin, no internalization
|
|
5
|
+
|
|
6
|
+
## Installation
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
claude plugin marketplace add ww-w-ai/cc-token-saver
|
|
10
|
+
claude plugin install cc-token-saver
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Feature Overview
|
|
14
|
+
|
|
15
|
+
| Feature | Description |
|
|
16
|
+
|---------|-------------|
|
|
17
|
+
| Token Guardian | Detects 1h prompt cache TTL idle expiry and warns before cache invalidates |
|
|
18
|
+
| Smart Session Architecture | Auto-injects SubTask delegation patterns into context |
|
|
19
|
+
| `/continue` | Zero-cost context restore after session pause |
|
|
20
|
+
| Live Status Line | Real-time token/cost status bar |
|
|
21
|
+
| `/usage-view` | Cost dashboard showing per-session and cumulative spend |
|
|
22
|
+
| `/report-limit` | Community-sourced rate limit reporting |
|
|
23
|
+
|
|
24
|
+
## Conflict Resolution with oh-my-customcode
|
|
25
|
+
|
|
26
|
+
### Live Status Line (R012 Priority)
|
|
27
|
+
|
|
28
|
+
oh-my-customcode runs its own statusline via `.claude/statusline.sh` (R012). Two simultaneous status bars create visual clutter.
|
|
29
|
+
|
|
30
|
+
**Resolution**: R012 statusline has priority. Disable cc-token-saver's Live Status Line:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# In cc-token-saver config (if supported), or ignore its statusline output
|
|
34
|
+
# oh-my-customcode statusline is configured in .claude/settings.local.json
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The R012 statusline already covers: Cost, Rate Limit %, Weekly Limit %, Context %. cc-token-saver's Live Status Line is redundant when R012 is active.
|
|
38
|
+
|
|
39
|
+
### SubTask Delegation (R009/R010/R018 Priority)
|
|
40
|
+
|
|
41
|
+
cc-token-saver's Smart Session Architecture auto-injects SubTask delegation patterns. oh-my-customcode has its own delegation rules (R010) and parallel execution rules (R009/R018).
|
|
42
|
+
|
|
43
|
+
**Resolution**: Internal rules always take precedence (R010 External Skills vs Internal Rules).
|
|
44
|
+
|
|
45
|
+
| cc-token-saver suggests | oh-my-customcode rule |
|
|
46
|
+
|-------------------------|----------------------|
|
|
47
|
+
| Use SubTask for delegation | Agent tool via routing skills (R010) |
|
|
48
|
+
| Sequential delegation pattern | Parallel when independent (R009) |
|
|
49
|
+
| Generic subtask agent | Specialized agent by domain (R010) |
|
|
50
|
+
|
|
51
|
+
Ignore cc-token-saver's SubTask suggestions when they conflict with R009/R010/R018.
|
|
52
|
+
|
|
53
|
+
### Token Guardian ↔ R013 context-budget-advisor.sh (Coexistence)
|
|
54
|
+
|
|
55
|
+
These two components solve different problems and can run simultaneously:
|
|
56
|
+
|
|
57
|
+
| Component | Trigger | Scope |
|
|
58
|
+
|-----------|---------|-------|
|
|
59
|
+
| `context-budget-advisor.sh` (R013) | Context usage % approaching threshold | In-session budget management |
|
|
60
|
+
| Token Guardian (cc-token-saver) | 1h cache TTL idle detection | Cross-session cache cost |
|
|
61
|
+
|
|
62
|
+
**No conflict** — Token Guardian fires on idle time, R013 fires on context percentage. Both warnings are useful.
|
|
63
|
+
|
|
64
|
+
## Usage Scenarios
|
|
65
|
+
|
|
66
|
+
### `/continue` — Zero-cost context restore
|
|
67
|
+
|
|
68
|
+
Use after interrupting and resuming a session. Restores context without re-spending tokens.
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
/continue
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Best for: returning to a paused task, recovering from accidental session close.
|
|
75
|
+
|
|
76
|
+
### `/usage-view` — Cost dashboard
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
/usage-view
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Shows per-session and cumulative cost. Useful for budget tracking across long sessions.
|
|
83
|
+
|
|
84
|
+
### `/report-limit` — Community rate limit data
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
/report-limit
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Reports your current rate limit hit to the community pool and shows aggregate rate limit data from other users. Helps gauge when limits reset.
|
|
91
|
+
|
|
92
|
+
## Integration Notes
|
|
93
|
+
|
|
94
|
+
- R013 ecomode and Token Guardian are complementary, not competing
|
|
95
|
+
- R012 statusline supersedes cc-token-saver's Live Status Line
|
|
96
|
+
- R009/R010/R018 delegation rules override cc-token-saver's SubTask patterns
|
|
97
|
+
- `/continue`, `/usage-view`, `/report-limit` have no conflicts with internal rules — use freely
|
package/templates/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
3
|
-
"lastUpdated": "2026-04-
|
|
2
|
+
"version": "0.93.0",
|
|
3
|
+
"lastUpdated": "2026-04-18T00:00:00.000Z",
|
|
4
4
|
"components": [
|
|
5
5
|
{
|
|
6
6
|
"name": "rules",
|
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
"name": "skills",
|
|
19
19
|
"path": ".claude/skills",
|
|
20
20
|
"description": "Reusable skill modules (includes slash commands)",
|
|
21
|
-
"files":
|
|
21
|
+
"files": 106
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"name": "guides",
|
|
25
25
|
"path": "guides",
|
|
26
26
|
"description": "Reference documentation",
|
|
27
|
-
"files":
|
|
27
|
+
"files": 37
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"name": "hooks",
|