oh-my-customcode 0.43.0 → 0.44.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
- 44 agents. 75 skills. 21 rules. One command.
16
+ 44 agents. 76 skills. 21 rules. One command.
17
17
 
18
18
  ```bash
19
19
  npm install -g oh-my-customcode && cd your-project && omcustom init
@@ -138,7 +138,7 @@ Each agent declares its tools, model, memory scope, and limitations in YAML fron
138
138
 
139
139
  ---
140
140
 
141
- ### Skills (75)
141
+ ### Skills (76)
142
142
 
143
143
  | Category | Count | Includes |
144
144
  |----------|-------|----------|
package/dist/cli/index.js CHANGED
@@ -9376,9 +9376,7 @@ var require_src = __commonJS((exports, module) => {
9376
9376
  });
9377
9377
 
9378
9378
  // src/cli/index.ts
9379
- import { existsSync as existsSync3 } from "node:fs";
9380
9379
  import { createRequire as createRequire2 } from "node:module";
9381
- import { join as join14 } from "node:path";
9382
9380
 
9383
9381
  // node_modules/.bun/commander@14.0.2/node_modules/commander/esm.mjs
9384
9382
  var import__ = __toESM(require_commander(), 1);
@@ -15107,8 +15105,9 @@ async function startServeBackground(projectRoot, port = DEFAULT_PORT) {
15107
15105
  const child = spawn("node", [join9(buildDir, "index.js")], {
15108
15106
  env: {
15109
15107
  ...process.env,
15110
- PORT: String(port),
15111
- HOST: "127.0.0.1",
15108
+ OMCUSTOM_PORT: String(port),
15109
+ OMCUSTOM_HOST: "localhost",
15110
+ OMCUSTOM_ORIGIN: `http://localhost:${port}`,
15112
15111
  OMCUSTOM_PROJECT_ROOT: projectRoot
15113
15112
  },
15114
15113
  stdio: "ignore",
@@ -17025,8 +17024,9 @@ function runForeground(projectRoot, port) {
17025
17024
  spawnSync2("node", [join12(buildDir, "index.js")], {
17026
17025
  env: {
17027
17026
  ...process.env,
17028
- PORT: String(port),
17029
- HOST: "127.0.0.1",
17027
+ OMCUSTOM_PORT: String(port),
17028
+ OMCUSTOM_HOST: "localhost",
17029
+ OMCUSTOM_ORIGIN: `http://localhost:${port}`,
17030
17030
  OMCUSTOM_PROJECT_ROOT: projectRoot
17031
17031
  },
17032
17032
  stdio: "inherit"
@@ -17749,13 +17749,6 @@ function createProgram() {
17749
17749
  console.warn(warnings);
17750
17750
  console.warn("");
17751
17751
  }
17752
- const commandName = actionCommand.name();
17753
- if (commandName !== "serve-stop" && commandName !== "serve") {
17754
- const cwd = process.cwd();
17755
- if (existsSync3(join14(cwd, ".claude"))) {
17756
- startServeBackground(cwd).catch(() => {});
17757
- }
17758
- }
17759
17752
  });
17760
17753
  return program2;
17761
17754
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "oh-my-customcode",
3
3
  "workspaces": ["packages/*"],
4
- "version": "0.43.0",
4
+ "version": "0.44.0",
5
5
  "description": "Batteries-included agent harness for Claude Code",
6
6
  "type": "module",
7
7
  "bin": {
@@ -0,0 +1,95 @@
1
+ ---
2
+ name: omcustom:web
3
+ description: Control and inspect the built-in Web UI (packages/serve) — start, stop, status, open
4
+ scope: harness
5
+ argument-hint: "[start|stop|status|open]"
6
+ user-invocable: true
7
+ ---
8
+
9
+ # Web UI Control
10
+
11
+ Interactive control for the built-in Web UI server (packages/serve).
12
+
13
+ ## Arguments
14
+
15
+ | Argument | Action |
16
+ |----------|--------|
17
+ | `status` (default) | Show server status (PID, port, URL) |
18
+ | `start` | Start the Web UI server in background |
19
+ | `stop` | Stop the running Web UI server |
20
+ | `open` | Open the Web UI in the default browser |
21
+
22
+ ## Workflow
23
+
24
+ ### Step 1: Check Server Status
25
+
26
+ Run these checks via Bash:
27
+
28
+ ```bash
29
+ PORT=${OMCUSTOM_PORT:-4321}
30
+ PID_FILE="$HOME/.omcustom-serve.pid"
31
+ PID=$(cat "$PID_FILE" 2>/dev/null)
32
+
33
+ # Process alive?
34
+ if [ -n "$PID" ] && kill -0 "$PID" 2>/dev/null; then
35
+ STATUS="running"
36
+ else
37
+ STATUS="stopped"
38
+ # Clean stale PID file
39
+ [ -f "$PID_FILE" ] && rm "$PID_FILE"
40
+ fi
41
+
42
+ # Port check
43
+ PORT_PID=$(lsof -ti :$PORT 2>/dev/null | head -1)
44
+
45
+ echo "STATUS=$STATUS PID=$PID PORT=$PORT PORT_PID=$PORT_PID"
46
+ ```
47
+
48
+ ### Step 2: Display Status
49
+
50
+ ```
51
+ Web UI Control
52
+ ─────────────
53
+ Status: ● Running (PID {PID})
54
+ URL: http://localhost:{PORT}
55
+ Log: ~/.omcustom-serve.log
56
+ ```
57
+
58
+ or
59
+
60
+ ```
61
+ Web UI Control
62
+ ─────────────
63
+ Status: ○ Stopped
64
+ Port: {PORT} (free)
65
+ ```
66
+
67
+ ### Step 3: Execute Subcommand
68
+
69
+ | Subcommand | Action |
70
+ |------------|--------|
71
+ | `status` | Display status from Step 2, then exit |
72
+ | `start` | If stopped → run `omcustom serve` via Bash. If running → show URL |
73
+ | `stop` | If running → run `omcustom serve-stop` via Bash. If stopped → inform user |
74
+ | `open` | If running → `open http://localhost:{PORT}` (macOS). If stopped → ask to start first |
75
+
76
+ ### Step 4: Port Conflict Detection
77
+
78
+ Before `start`, check if port is already occupied by another process:
79
+
80
+ ```bash
81
+ PORT_PID=$(lsof -ti :$PORT 2>/dev/null | head -1)
82
+ if [ -n "$PORT_PID" ]; then
83
+ PROC=$(ps -p $PORT_PID -o comm= 2>/dev/null)
84
+ echo "Port $PORT is occupied by $PROC (PID $PORT_PID)"
85
+ fi
86
+ ```
87
+
88
+ If occupied by a non-serve process, warn the user and suggest `--port` option.
89
+
90
+ ## No Argument Behavior
91
+
92
+ When called without arguments (`/omcustom:web`):
93
+ 1. Show status
94
+ 2. If stopped, suggest: "Run `/omcustom:web start` to start the server"
95
+ 3. If running, suggest: "Run `/omcustom:web open` to open in browser"
@@ -131,7 +131,7 @@ project/
131
131
  +-- CLAUDE.md # 진입점
132
132
  +-- .claude/
133
133
  | +-- agents/ # 서브에이전트 정의 (44 파일)
134
- | +-- skills/ # 스킬 (75 디렉토리)
134
+ | +-- skills/ # 스킬 (76 디렉토리)
135
135
  | +-- rules/ # 전역 규칙 (R000-R021)
136
136
  | +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
137
137
  | +-- contexts/ # 컨텍스트 파일 (ecomode)
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.43.0",
2
+ "version": "0.44.0",
3
3
  "lastUpdated": "2026-03-16T00: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": 75
21
+ "files": 76
22
22
  },
23
23
  {
24
24
  "name": "guides",