oh-my-customcode 0.60.0 → 0.61.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
- 46 agents. 95 skills. 21 rules. One command.
16
+ 46 agents. 97 skills. 21 rules. One command.
17
17
 
18
18
  ```bash
19
19
  npm install -g oh-my-customcode && cd your-project && omcustom init
@@ -146,7 +146,7 @@ Each agent declares its tools, model, memory scope, and limitations in YAML fron
146
146
 
147
147
  ---
148
148
 
149
- ### Skills (95)
149
+ ### Skills (97)
150
150
 
151
151
  | Category | Count | Includes |
152
152
  |----------|-------|----------|
@@ -282,7 +282,7 @@ your-project/
282
282
  ├── CLAUDE.md # Entry point
283
283
  ├── .claude/
284
284
  │ ├── agents/ # 46 agent definitions
285
- │ ├── skills/ # 95 skill modules
285
+ │ ├── skills/ # 97 skill modules
286
286
  │ ├── rules/ # 21 governance rules (R000-R021)
287
287
  │ ├── hooks/ # 15 lifecycle hook scripts
288
288
  │ ├── schemas/ # Tool input validation schemas
package/dist/cli/index.js CHANGED
@@ -9325,7 +9325,7 @@ var init_package = __esm(() => {
9325
9325
  workspaces: [
9326
9326
  "packages/*"
9327
9327
  ],
9328
- version: "0.60.0",
9328
+ version: "0.61.0",
9329
9329
  description: "Batteries-included agent harness for Claude Code",
9330
9330
  type: "module",
9331
9331
  bin: {
@@ -24805,7 +24805,8 @@ var en_default = {
24805
24805
  interactiveSelect: "Select projects to update:",
24806
24806
  interactiveNoneSelected: "No projects selected. Exiting.",
24807
24807
  interactiveUpdating: "Updating selected projects...",
24808
- projectLatestSuffix: "(latest)"
24808
+ projectLatestSuffix: "(latest)",
24809
+ newVersionAvailable: "[Info] oh-my-customcode v{{latest}} available (current: v{{current}}). Run 'npm i -g oh-my-customcode' to upgrade."
24809
24810
  },
24810
24811
  list: {
24811
24812
  description: "List installed components",
@@ -25189,7 +25190,8 @@ var ko_default = {
25189
25190
  interactiveSelect: "업데이트할 프로젝트 선택:",
25190
25191
  interactiveNoneSelected: "선택된 프로젝트가 없습니다. 종료합니다.",
25191
25192
  interactiveUpdating: "선택된 프로젝트 업데이트 중...",
25192
- projectLatestSuffix: "(최신)"
25193
+ projectLatestSuffix: "(최신)",
25194
+ newVersionAvailable: "[정보] oh-my-customcode v{{latest}} 사용 가능 (현재: v{{current}}). 'npm i -g oh-my-customcode'를 실행하여 업그레이드하세요."
25193
25195
  },
25194
25196
  list: {
25195
25197
  description: "설치된 컴포넌트 목록 표시",
@@ -30519,7 +30521,19 @@ async function loadCustomizationManifest(targetDir) {
30519
30521
  }
30520
30522
 
30521
30523
  // src/cli/update.ts
30522
- async function updateCommand(options = {}) {
30524
+ async function checkCliVersion(checkFn) {
30525
+ try {
30526
+ const result = checkFn({ currentVersion: package_default.version });
30527
+ if (result.updateAvailable && result.latestVersion) {
30528
+ console.log(i18n.t("cli.update.newVersionAvailable", {
30529
+ latest: result.latestVersion,
30530
+ current: package_default.version
30531
+ }));
30532
+ }
30533
+ } catch {}
30534
+ }
30535
+ async function updateCommand(options = {}, cliVersionCheck = checkSelfUpdate) {
30536
+ await checkCliVersion(cliVersionCheck);
30523
30537
  try {
30524
30538
  if (options.all) {
30525
30539
  await updateAllProjects(options);
@@ -30556,7 +30570,6 @@ async function updateSingleProject(targetDir, options) {
30556
30570
  printUpdateResults(result);
30557
30571
  if (!result.success) {
30558
30572
  process.exit(1);
30559
- return false;
30560
30573
  }
30561
30574
  return true;
30562
30575
  }
package/dist/index.js CHANGED
@@ -1672,7 +1672,7 @@ var package_default = {
1672
1672
  workspaces: [
1673
1673
  "packages/*"
1674
1674
  ],
1675
- version: "0.60.0",
1675
+ version: "0.61.0",
1676
1676
  description: "Batteries-included agent harness for Claude Code",
1677
1677
  type: "module",
1678
1678
  bin: {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "workspaces": [
4
4
  "packages/*"
5
5
  ],
6
- "version": "0.60.0",
6
+ "version": "0.61.0",
7
7
  "description": "Batteries-included agent harness for Claude Code",
8
8
  "type": "module",
9
9
  "bin": {
@@ -52,6 +52,23 @@ domain: backend # backend | frontend | data-engineering | devops |
52
52
 
53
53
  > **Note**: `isolation`, `background`, `maxTurns`, `maxTokens`, `mcpServers`, `hooks`, `permissionMode`, `disallowedTools`, `limitations` are supported in Claude Code v2.1.63+. Hook types `PostCompact`, `Elicitation`, `ElicitationResult` require v2.1.76+. `CwdChanged`, `FileChanged` hook events and `managed-settings.d/` drop-in directory require v2.1.83+. Conditional `if` field for hooks requires v2.1.85+.
54
54
 
55
+ ## Permission Mode Guidance
56
+
57
+ When spawning agents via the Agent tool, CC applies a default `mode` of `acceptEdits` if not explicitly specified. To maintain consistent permission behavior:
58
+
59
+ 1. **Agent frontmatter `permissionMode`**: Declares the agent's intended permission level. CC respects this when the agent is spawned via Agent tool.
60
+ 2. **Agent tool `mode` parameter**: Overrides frontmatter at spawn time. Routing skills should pass this explicitly.
61
+ 3. **Recommendation**: For agents that modify files, set `permissionMode: bypassPermissions` in frontmatter if the project uses `bypassPermissions` mode.
62
+
63
+ | Mode | Behavior |
64
+ |------|----------|
65
+ | `default` | CC decides per-tool prompting |
66
+ | `acceptEdits` | Auto-accept file edits, prompt for others |
67
+ | `bypassPermissions` | Skip all permission prompts |
68
+ | `plan` | Require plan approval |
69
+ | `dontAsk` | Non-interactive, deny unapproved |
70
+ | `auto` | AI decides safety |
71
+
55
72
  <!-- DETAIL: Isolation/Token/Limitations/Escalation details
56
73
  ### Isolation Modes
57
74
 
@@ -25,6 +25,15 @@ Available when `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` or TeamCreate/SendMessag
25
25
 
26
26
  **When Agent Teams is enabled and criteria are met, usage is required.**
27
27
 
28
+ ### Scope: Intra-Session vs Cross-Session
29
+
30
+ | Scope | Tool | Protocol | Use Case |
31
+ |-------|------|----------|----------|
32
+ | Intra-session | `SendMessage` (Agent Teams) | Peer-to-peer within team | Multi-agent collaboration in one session |
33
+ | Cross-session | `send_message` (claude-peers-mcp) | Broker-mediated | Multi-terminal/project coordination |
34
+
35
+ These are distinct mechanisms. Agent Teams `SendMessage` requires `TeamCreate` and operates within a single Claude Code session. claude-peers-mcp `send_message` operates across separate Claude Code processes via a localhost broker.
36
+
28
37
  ## Self-Check (Before Agent Tool)
29
38
 
30
39
  Before using Agent tool for 2+ agent tasks, complete this check:
@@ -0,0 +1,75 @@
1
+ ---
2
+ name: action-validator
3
+ description: Pre-action boundary checking — validates agent tool calls against declared capabilities and task contracts
4
+ scope: core
5
+ user-invocable: false
6
+ ---
7
+
8
+ # Action Validator Skill
9
+
10
+ ## Purpose
11
+
12
+ Advisory pre-action validation layer that checks agent tool calls against declared capabilities, file access scope (R002), and task contracts before execution. Inspired by AutoHarness (Google DeepMind) — enforcing action-space legality at agent boundaries.
13
+
14
+ This skill does NOT block actions (R021 advisory-first model). It emits warnings when agents attempt operations outside their declared scope.
15
+
16
+ ## Validation Checks
17
+
18
+ | Check | What | Against |
19
+ |-------|------|---------|
20
+ | Tool scope | Tool being called | Agent's `tools` frontmatter list |
21
+ | File scope | File path in Write/Edit | R002 file access rules |
22
+ | Domain scope | Target file extension | Agent's `domain` frontmatter |
23
+ | Task contract | Operation type | Task description constraints |
24
+
25
+ ## Advisory Format
26
+
27
+ ```
28
+ --- [Action Validator] Scope warning ---
29
+ Agent: {agent-name}
30
+ Tool: {tool-name}
31
+ Target: {file-path}
32
+ Issue: {description}
33
+ Declared scope: {agent's declared tools/domain}
34
+ 💡 Suggestion: {recommended action}
35
+ ---
36
+ ```
37
+
38
+ ## Integration Points
39
+
40
+ | System | How |
41
+ |--------|-----|
42
+ | PreToolUse hooks | Optional hook to check tool calls (advisory only) |
43
+ | pipeline-guards | Complements pipeline stage gates |
44
+ | adversarial-review | Provides action-space-legality criterion |
45
+ | R002 (Permissions) | Validates against declared file access rules |
46
+ | R010 (Orchestrator) | Orchestrator validates subagent scope claims |
47
+
48
+ ## Policy Cache Pattern
49
+
50
+ For high-repetition agents (e.g., mgr-gitnerd commit workflows), capture validated decision paths as reusable policies:
51
+
52
+ ```yaml
53
+ policy_cache:
54
+ agent: mgr-gitnerd
55
+ action: git-commit
56
+ validated_steps:
57
+ - tool: Bash
58
+ pattern: "git add *"
59
+ verdict: allow
60
+ - tool: Bash
61
+ pattern: "git commit *"
62
+ verdict: allow
63
+ - tool: Bash
64
+ pattern: "git push *"
65
+ verdict: warn_confirm
66
+ ```
67
+
68
+ Policy caching reduces redundant LLM calls for well-understood workflows. Policies are advisory — the orchestrator may override.
69
+
70
+ ## Scope
71
+
72
+ This skill is an advisory layer, not a hard enforcement mechanism:
73
+ - **Does**: Emit warnings, log scope violations, suggest corrections
74
+ - **Does NOT**: Block tool execution, modify agent behavior, override R021
75
+ - **Future**: May integrate with PreToolUse hooks for automated checking (see R021 promotion criteria)
@@ -70,3 +70,11 @@ Fix: Recommended remediation
70
70
  - Complements `dev-review` (best practices) with attacker perspective
71
71
  - Works with `sec-codeql-expert` for pattern-based + logic-based coverage
72
72
  - Can be chained: `dev-review` → `adversarial-review` for complete coverage
73
+ - Works with `action-validator` for action-space legality checking
74
+
75
+ ### Action-Space Legality (AutoHarness Pattern)
76
+
77
+ - [ ] Do agents only call tools within their declared `tools` frontmatter?
78
+ - [ ] Do file operations stay within R002-declared access scope?
79
+ - [ ] Are domain boundaries respected (backend agent not editing frontend files)?
80
+ - [ ] Could an agent's task contract be tightened without losing functionality?
@@ -77,6 +77,8 @@ For **new pipeline code**, **DAG scaffolding**, or **SQL model generation**:
77
77
  ### Step 3: Expert Selection
78
78
  Route to appropriate DE expert based on tool/framework detection.
79
79
 
80
+ > **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`.
81
+
80
82
  ### Step 4: Ontology-RAG Enrichment (R019)
81
83
 
82
84
  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.
@@ -13,7 +13,7 @@ context: fork
13
13
  | Type | Agents |
14
14
  |------|--------|
15
15
  | Language | lang-golang-expert, lang-python-expert, lang-rust-expert, lang-kotlin-expert, lang-typescript-expert, lang-java21-expert |
16
- | Frontend | fe-vercel-agent, fe-vuejs-agent, fe-svelte-agent, fe-flutter-agent |
16
+ | Frontend | fe-vercel-agent, fe-vuejs-agent, fe-svelte-agent, fe-flutter-agent, fe-design-expert |
17
17
  | Backend | be-fastapi-expert, be-springboot-expert, be-go-backend-expert, be-nestjs-expert, be-express-expert, be-django-expert |
18
18
  | Tooling | tool-npm-expert, tool-optimizer, tool-bun-expert |
19
19
  | Database | db-supabase-expert, db-postgres-expert, db-redis-expert |
@@ -55,6 +55,7 @@ context: fork
55
55
  | vue | fe-vuejs-agent |
56
56
  | svelte | fe-svelte-agent |
57
57
  | flutter, dart, riverpod, bloc, widget | fe-flutter-agent |
58
+ | design, typography, color, motion, ux writing, ui design, "design system", "design review", impeccable | fe-design-expert |
58
59
  | fastapi | be-fastapi-expert |
59
60
  | django | be-django-expert |
60
61
  | spring, springboot | be-springboot-expert |
@@ -111,6 +112,8 @@ For **new file creation**, **boilerplate**, or **test code generation**:
111
112
  ### Step 3: Expert Agent Selection
112
113
  Route to appropriate language/framework expert based on file extension and keyword mapping.
113
114
 
115
+ > **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`.
116
+
114
117
  ### Step 4: Ontology-RAG Enrichment (R019)
115
118
 
116
119
  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.
@@ -114,3 +114,32 @@ OTEL_LOGS_EXPORTER=otlp
114
114
  OTEL_EXPORTER_OTLP_PROTOCOL=grpc
115
115
  OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
116
116
  ```
117
+
118
+ ## HTTP-Level Inspection (Optional)
119
+
120
+ For deeper payload-level debugging beyond aggregated metrics, [Claude Inspector](https://github.com/kangraemin/claude-inspector) provides MITM proxy inspection of Claude Code HTTP traffic.
121
+
122
+ | Aspect | OTel Monitoring (this skill) | Claude Inspector |
123
+ |--------|------------------------------|-----------------|
124
+ | Layer | Application (hooks, stdout) | HTTP (MITM proxy) |
125
+ | Metrics | Aggregated (cost, tokens, duration) | Per-request payload breakdown |
126
+ | Cache visibility | Not available | Prompt Cache hit/miss rates |
127
+ | Sub-agent view | Summary via hooks | Full parent vs sub-agent context comparison |
128
+ | Setup | Built-in (hooks + statusline) | External tool (Homebrew on macOS) |
129
+
130
+ ### When to Use
131
+
132
+ - **OTel monitoring**: Daily operations, cost tracking, performance trends
133
+ - **Claude Inspector**: Debugging specific payload issues, measuring CLAUDE.md token impact, verifying ecomode (R013) effectiveness, profiling sub-agent context inheritance
134
+
135
+ ### Setup
136
+
137
+ ```bash
138
+ # macOS
139
+ brew install kangraemin/tap/claude-inspector
140
+
141
+ # Run proxy
142
+ claude-inspector
143
+ ```
144
+
145
+ Claude Inspector is external to oh-my-customcode and does not require any project configuration changes.
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: peer-messaging
3
+ description: Cross-session Claude Code instance messaging via claude-peers-mcp broker
4
+ scope: core
5
+ user-invocable: false
6
+ ---
7
+
8
+ # Peer Messaging Skill
9
+
10
+ ## Purpose
11
+
12
+ Enables cross-session coordination between multiple Claude Code instances through the claude-peers-mcp broker. Complements Agent Teams (R018, intra-session) with inter-session messaging.
13
+
14
+ ## Scope Clarification
15
+
16
+ | Scope | Mechanism | Tools | Use Case |
17
+ |-------|-----------|-------|----------|
18
+ | Intra-session agents | Agent Teams (R018) | TeamCreate, SendMessage | Single session multi-agent collaboration |
19
+ | Cross-session instances | claude-peers-mcp | list_peers, send_message | Multi-terminal/project real-time coordination |
20
+ | Cross-session memory | claude-mem | save_memory, search | Async memory persistence |
21
+
22
+ > **Important**: R018's `SendMessage` and claude-peers-mcp's `send_message` are different tools with different scopes. Do not confuse them.
23
+
24
+ ## MCP Tool Mapping
25
+
26
+ | Tool | Purpose | oh-my-customcode Scenario |
27
+ |------|---------|---------------------------|
28
+ | `list_peers` | Discover active Claude instances | `omcustom:status` system overview |
29
+ | `send_message` | Send message to peer | Cross-project workflow coordination |
30
+ | `set_summary` | Broadcast current task summary | DAG cross-project step sync |
31
+ | `check_messages` | Read incoming messages | Receive coordination signals |
32
+
33
+ ## Use Cases
34
+
35
+ ### Multi-Project Workflow
36
+ Terminal A runs `auto-dev` on project-1; Terminal B works on dependent project-2. Peers coordinate via messages when blocking dependencies are resolved.
37
+
38
+ ### Cross-Project QA
39
+ Share test infrastructure state between projects running concurrent test suites.
40
+
41
+ ### DAG Bridge
42
+ `dag-orchestration` cross-project steps can use peer messaging for synchronization (currently impossible without this tool).
43
+
44
+ ## Setup
45
+
46
+ ```bash
47
+ # Install broker (optional MCP server)
48
+ npm install -g claude-peers-mcp
49
+
50
+ # Add to MCP config
51
+ claude mcp add claude-peers-mcp -- npx claude-peers-mcp
52
+ ```
53
+
54
+ ## Integration
55
+
56
+ - Works with R018 Agent Teams (different scope, complementary)
57
+ - Works with claude-mem (async vs sync messaging)
58
+ - Works with `omcustom:status` (peer discovery)
59
+ - Broker runs on localhost:7899 (SQLite-backed)
@@ -45,6 +45,8 @@ 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`.
49
+
48
50
  ### Ontology-RAG Enrichment (R019)
49
51
 
50
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.
@@ -80,6 +80,8 @@ If the selected agent has `soul: true` in frontmatter, read and prepend `.claude
80
80
  5. Report result to user
81
81
  ```
82
82
 
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`.
84
+
83
85
  ### 2. Batch/Parallel Task Routing
84
86
 
85
87
  When command requires multiple independent operations:
@@ -138,7 +138,7 @@ project/
138
138
  +-- CLAUDE.md # 진입점
139
139
  +-- .claude/
140
140
  | +-- agents/ # 서브에이전트 정의 (46 파일)
141
- | +-- skills/ # 스킬 (95 디렉토리)
141
+ | +-- skills/ # 스킬 (97 디렉토리)
142
142
  | +-- rules/ # 전역 규칙 (R000-R021)
143
143
  | +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
144
144
  | +-- contexts/ # 컨텍스트 파일 (ecomode)
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.60.0",
2
+ "version": "0.61.0",
3
3
  "lastUpdated": "2026-03-24T00:00:00.000Z",
4
4
  "components": [
5
5
  {
@@ -18,7 +18,7 @@
18
18
  "name": "skills",
19
19
  "path": ".claude/skills",
20
20
  "description": "Reusable skill modules (includes slash commands)",
21
- "files": 95
21
+ "files": 97
22
22
  },
23
23
  {
24
24
  "name": "guides",