oh-my-customcode 0.58.0 → 0.58.2

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. 94 skills. 21 rules. One command.
16
+ 46 agents. 95 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 (94)
149
+ ### Skills (95)
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/ # 94 skill modules
285
+ │ ├── skills/ # 95 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.58.0",
9328
+ version: "0.58.2",
9329
9329
  description: "Batteries-included agent harness for Claude Code",
9330
9330
  type: "module",
9331
9331
  bin: {
package/dist/index.js CHANGED
@@ -1672,7 +1672,7 @@ var package_default = {
1672
1672
  workspaces: [
1673
1673
  "packages/*"
1674
1674
  ],
1675
- version: "0.58.0",
1675
+ version: "0.58.2",
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.58.0",
6
+ "version": "0.58.2",
7
7
  "description": "Batteries-included agent harness for Claude Code",
8
8
  "type": "module",
9
9
  "bin": {
@@ -41,10 +41,10 @@ Implemented in `.claude/hooks/hooks.json` (PreToolUse → Agent/Task matcher).
41
41
  ### Format
42
42
 
43
43
  ```
44
- {Cost} | {project} | {branch} | RL:{rate_limit}% | WL:{weekly_limit}% | CTX:{usage}%
44
+ {Cost} | {project} | {branch} | RL:{rate_limit}% {countdown} | WL:{weekly_limit}% {countdown} | CTX:{usage}%
45
45
  ```
46
46
 
47
- Example: `$0.05 | my-project | develop | RL:45% | WL:72% | CTX:42%`
47
+ Example: `$0.05 | my-project | develop | RL:45% 3h20m | WL:72% 2d3h | CTX:42%`
48
48
 
49
49
  ### Configuration
50
50
 
@@ -81,6 +81,17 @@ The `RL:{rate_limit}%` segment only appears when Claude Code v2.1.80+ provides `
81
81
 
82
82
  The `WL:{weekly_limit}%` segment shows the 7-day rolling rate limit percentage. Both RL and WL segments are omitted on older versions.
83
83
 
84
+ ### Countdown Format
85
+
86
+ The `{countdown}` shows time until RL/WL resets. Omitted when data is unavailable.
87
+
88
+ | Remaining | Display | Example |
89
+ |-----------|---------|---------|
90
+ | >= 1 day | `{d}d{h}h` | `2d3h` |
91
+ | >= 1 hour | `{h}h{m}m` | `5h30m` |
92
+ | < 1 hour | `{m}m` | `45m` |
93
+ | expired/unavailable | (omitted) | `WL:72%` |
94
+
84
95
  ## Integration
85
96
 
86
97
  Integrates with R007 (Agent ID), R008 (Tool ID), R009 (Parallel).
@@ -0,0 +1,134 @@
1
+ ---
2
+ name: post-release-followup
3
+ description: Analyze release workflow findings and recommend follow-up actions — execute immediately or register as issues
4
+ scope: harness
5
+ user-invocable: false
6
+ effort: medium
7
+ ---
8
+
9
+ # Post-Release Follow-up
10
+
11
+ ## Purpose
12
+
13
+ After PR creation in the omcustom-dev release workflow, collect unaddressed findings and present actionable follow-up recommendations. The user chooses: execute now, register as issues, or skip.
14
+
15
+ ## Workflow
16
+
17
+ ### 1. Collect Follow-up Candidates
18
+
19
+ Gather unfinished work from multiple sources:
20
+
21
+ **Source A — Remaining open issues**:
22
+ - Run: `gh issue list --label verify-done --state open --json number,title,labels`
23
+ - These are triaged issues NOT included in the current release
24
+
25
+ **Source B — Deep-verify findings**:
26
+ - Read the latest deep-verify output from `.claude/outputs/sessions/{today}/`
27
+ - Extract any MEDIUM or LOW severity findings that were flagged but not fixed
28
+
29
+ **Source C — Triage deferred items**:
30
+ - Read the latest professor-triage output from `.claude/outputs/sessions/{today}/`
31
+ - Extract items explicitly marked as deferred or P3
32
+
33
+ **Source D — TODO markers in changed files**:
34
+ - Run: `git diff develop...HEAD --name-only` to get changed files
35
+ - Search changed files for `TODO`, `FIXME`, `HACK` markers added in this release
36
+
37
+ **Source E — PR review feedback**:
38
+ - Run: `gh api repos/{owner}/{repo}/pulls/{pr_number}/comments` and `gh api repos/{owner}/{repo}/issues/{pr_number}/comments`
39
+ - Parse omc_pr_analyzer bot comments (Senior Architect, Project Colleague, Professor Synthesis)
40
+ - Extract findings categorized as Critical, High, Medium
41
+ - Identify: required fixes, recommended improvements, structural concerns
42
+
43
+ ### 2. Deduplicate and Categorize
44
+
45
+ Remove duplicates (same issue referenced from multiple sources). Categorize:
46
+
47
+ | Category | Criteria | Default Action |
48
+ |----------|----------|----------------|
49
+ | **Immediate** | P1/P2 remaining issues, MEDIUM+ verify findings, Critical/High PR review findings | Execute now |
50
+ | **Trackable** | P3 issues, LOW verify findings, new TODOs, Medium PR review findings | Register as issue |
51
+ | **Informational** | Already-tracked issues, cosmetic notes | Skip |
52
+
53
+ ### 3. Present to User
54
+
55
+ Display follow-up summary:
56
+
57
+ ```
58
+ [Follow-up] {n}개 후속 작업 발견
59
+
60
+ ━━━ 즉시 실행 추천 ({count}개) ━━━
61
+ 1. {description} — 출처: {source}
62
+ 2. {description} — 출처: {source}
63
+
64
+ ━━━ 이슈 등록 추천 ({count}개) ━━━
65
+ 3. {description} — 출처: {source}
66
+ 4. {description} — 출처: {source}
67
+
68
+ ━━━ 참고 사항 ({count}개) ━━━
69
+ 5. {description} — 이미 #{issue_number}로 추적 중
70
+
71
+ 선택:
72
+ [A] 추천대로 실행 (즉시 실행 + 이슈 등록)
73
+ [B] 모두 즉시 실행
74
+ [C] 모두 이슈 등록
75
+ [D] 개별 선택 (항목별로 질문)
76
+ [E] 건너뛰기
77
+ ```
78
+
79
+ Use AskUserQuestion (or equivalent user prompt) to get the choice.
80
+
81
+ ### 4. Process User Choice
82
+
83
+ **Option A (추천대로)**:
84
+ - "Immediate" items → delegate to appropriate specialist agents for execution
85
+ - "Trackable" items → create GitHub issues via `gh issue create`
86
+ - "Informational" items → skip
87
+
88
+ **Option B (모두 즉시 실행)**:
89
+ - All Immediate + Trackable items → delegate to specialist agents
90
+ - Follow implementation patterns from the release workflow
91
+
92
+ **Option C (모두 이슈 등록)**:
93
+ - All Immediate + Trackable items → `gh issue create` with appropriate labels
94
+ - Label: `professor` for auto-triage in next workflow run
95
+
96
+ **Option D (개별 선택)**:
97
+ - For each item, ask: `[{n}] {description} — 실행(E) / 이슈(I) / 건너뛰기(S)?`
98
+ - Process each per user choice
99
+
100
+ **Option E (건너뛰기)**:
101
+ - Skip all follow-up actions
102
+ - Complete workflow
103
+
104
+ ### 5. Report
105
+
106
+ ```
107
+ [Follow-up Complete]
108
+ ├── 즉시 실행: {n}개 완료
109
+ ├── 이슈 등록: {n}개 (#{numbers})
110
+ ├── 건너뛰기: {n}개
111
+ └── 총 처리: {total}개
112
+ ```
113
+
114
+ ## Issue Creation Template
115
+
116
+ When creating follow-up issues:
117
+
118
+ ```bash
119
+ gh issue create \
120
+ --title "{concise description}" \
121
+ --body "## Source\n\nDiscovered during v{version} release workflow.\n\n## Context\n\n{detailed context from triage/verify}\n\n## Suggested Action\n\n{recommendation}" \
122
+ --label "professor"
123
+ ```
124
+
125
+ Add priority label (`P1`, `P2`, `P3`) based on categorization.
126
+
127
+ ## Notes
128
+
129
+ - This skill runs in the main conversation context (via workflow skill step)
130
+ - User interaction is expected — this is NOT a fully automated step
131
+ - All file modifications delegated to specialist subagents per R010
132
+ - Issue creation uses `gh` CLI directly (read-only operation pattern)
133
+ - If no follow-up candidates found, report "No follow-up actions needed" and complete
134
+ - PR review feedback is available shortly after PR creation — the omc_pr_analyzer bot comments automatically
@@ -66,9 +66,9 @@ fi
66
66
 
67
67
  # ---------------------------------------------------------------------------
68
68
  # 4. Single jq call — extract all fields as TSV
69
- # Fields: model_name, project_dir, ctx_pct, ctx_size, cost_usd, rl_5h_pct, rl_7d_pct
69
+ # Fields: model_name, project_dir, ctx_pct, ctx_size, cost_usd, rl_5h_pct, rl_7d_pct, rl_5h_resets, rl_7d_resets
70
70
  # ---------------------------------------------------------------------------
71
- IFS=$'\t' read -r model_name project_dir ctx_pct ctx_size cost_usd rl_5h_pct rl_7d_pct <<< "$(
71
+ IFS=$'\t' read -r model_name project_dir ctx_pct ctx_size cost_usd rl_5h_pct rl_7d_pct rl_5h_resets rl_7d_resets <<< "$(
72
72
  printf '%s' "$json" | jq -r '[
73
73
  (.model.display_name // "unknown"),
74
74
  (.workspace.current_dir // ""),
@@ -76,7 +76,9 @@ IFS=$'\t' read -r model_name project_dir ctx_pct ctx_size cost_usd rl_5h_pct rl_
76
76
  (.context_window.context_window_size // 0),
77
77
  (.cost.total_cost_usd // 0),
78
78
  (.rate_limits.five_hour.used_percentage // -1),
79
- (.rate_limits.seven_day.used_percentage // -1)
79
+ (.rate_limits.seven_day.used_percentage // -1),
80
+ (.rate_limits.five_hour.resets_at // -1),
81
+ (.rate_limits.seven_day.resets_at // -1)
80
82
  ] | @tsv'
81
83
  )"
82
84
 
@@ -85,7 +87,32 @@ IFS=$'\t' read -r model_name project_dir ctx_pct ctx_size cost_usd rl_5h_pct rl_
85
87
  # ---------------------------------------------------------------------------
86
88
  COST_BRIDGE_FILE="/tmp/.claude-cost-${PPID}"
87
89
  _tmp="${COST_BRIDGE_FILE}.tmp.$$"
88
- printf '%s\t%s\t%s\t%s\t%s\n' "$cost_usd" "$ctx_pct" "$(date +%s)" "$rl_5h_pct" "$rl_7d_pct" > "$_tmp" 2>/dev/null && mv -f "$_tmp" "$COST_BRIDGE_FILE" 2>/dev/null || true
90
+ printf '%s\t%s\t%s\t%s\t%s\t%s\t%s\n' "$cost_usd" "$ctx_pct" "$(date +%s)" "$rl_5h_pct" "$rl_7d_pct" "$rl_5h_resets" "$rl_7d_resets" > "$_tmp" 2>/dev/null && mv -f "$_tmp" "$COST_BRIDGE_FILE" 2>/dev/null || true
91
+
92
+ # ---------------------------------------------------------------------------
93
+ # 4c. Countdown helper — converts resets_at epoch to human-readable duration
94
+ # ---------------------------------------------------------------------------
95
+ _countdown() {
96
+ local resets_at="$1"
97
+ if [[ "$resets_at" =~ ^[0-9]+$ ]] && [[ "$resets_at" -gt 0 ]]; then
98
+ local now
99
+ now=$(date +%s)
100
+ local remaining=$((resets_at - now))
101
+ if [[ "$remaining" -gt 0 ]]; then
102
+ local days=$((remaining / 86400))
103
+ local hours=$(( (remaining % 86400) / 3600 ))
104
+ if [[ "$days" -gt 0 ]]; then
105
+ printf '%dd%dh' "$days" "$hours"
106
+ elif [[ "$hours" -gt 0 ]]; then
107
+ local mins=$(( (remaining % 3600) / 60 ))
108
+ printf '%dh%dm' "$hours" "$mins"
109
+ else
110
+ local mins=$((remaining / 60))
111
+ printf '%dm' "$mins"
112
+ fi
113
+ fi
114
+ fi
115
+ }
89
116
 
90
117
  # ---------------------------------------------------------------------------
91
118
  # 5. Model display name + color (bash 3.2 compatible case pattern matching)
@@ -271,6 +298,12 @@ if [[ "$rl_5h_int" -ge 0 ]]; then
271
298
  fi
272
299
  fi
273
300
 
301
+ # Append countdown to RL display if available
302
+ rl_countdown="$(_countdown "$rl_5h_resets")"
303
+ if [[ -n "$rl_countdown" && -n "$rl_display" ]]; then
304
+ rl_display="${rl_display} ${rl_countdown}"
305
+ fi
306
+
274
307
  # ---------------------------------------------------------------------------
275
308
  # 9c. Weekly rate limit percentage with color (v2.1.80+, optional)
276
309
  # ---------------------------------------------------------------------------
@@ -292,6 +325,12 @@ if [[ "$wl_7d_int" -ge 0 ]]; then
292
325
  fi
293
326
  fi
294
327
 
328
+ # Append countdown to WL display if available
329
+ wl_countdown="$(_countdown "$rl_7d_resets")"
330
+ if [[ -n "$wl_countdown" && -n "$wl_display" ]]; then
331
+ wl_display="${wl_display} ${wl_countdown}"
332
+ fi
333
+
295
334
  # ---------------------------------------------------------------------------
296
335
  # 10. Assemble and output the status line
297
336
  # ---------------------------------------------------------------------------
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.58.0",
2
+ "version": "0.58.2",
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": 94
21
+ "files": 95
22
22
  },
23
23
  {
24
24
  "name": "guides",