oh-my-customcode 1.0.15 → 1.0.17
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/LICENSE +75 -21
- package/README.md +16 -2
- package/dist/cli/index.js +6 -2
- package/dist/index.js +6 -2
- package/package.json +6 -2
- package/templates/.claude/rules/MAY-optimization.md +2 -0
- package/templates/.claude/rules/MUST-agent-design.md +2 -0
- package/templates/.claude/rules/MUST-agent-identification.md +3 -1
- package/templates/.claude/rules/MUST-completion-verification.md +1 -0
- package/templates/.claude/rules/MUST-orchestrator-coordination.md +2 -0
- package/templates/.claude/rules/MUST-permissions.md +2 -0
- package/templates/.claude/rules/MUST-safety.md +2 -0
- package/templates/.claude/rules/MUST-tool-identification.md +3 -1
- package/templates/manifest.json +1 -1
package/LICENSE
CHANGED
|
@@ -1,21 +1,75 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
# PolyForm Noncommercial License 1.0.0
|
|
2
|
+
|
|
3
|
+
<https://polyformproject.org/licenses/noncommercial/1.0.0>
|
|
4
|
+
|
|
5
|
+
Required Notice: Copyright (c) 2026 baekenough (https://github.com/baekenough)
|
|
6
|
+
|
|
7
|
+
## Acceptance
|
|
8
|
+
|
|
9
|
+
In order to get any license under these terms, you must agree to them as both strict obligations and conditions to all your licenses.
|
|
10
|
+
|
|
11
|
+
## Copyright License
|
|
12
|
+
|
|
13
|
+
The licensor grants you a copyright license for the software to do everything you might do with the software that would otherwise infringe the licensor's copyright in it for any permitted purpose. However, you may only distribute the software according to Distribution License and make changes or new works based on the software according to Changes and New Works License.
|
|
14
|
+
|
|
15
|
+
## Distribution License
|
|
16
|
+
|
|
17
|
+
The licensor grants you an additional copyright license to distribute copies of the software. Your license to distribute covers distributing the software with changes and new works permitted by Changes and New Works License.
|
|
18
|
+
|
|
19
|
+
## Notices
|
|
20
|
+
|
|
21
|
+
You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these terms or the URL for them above, as well as copies of any plain-text lines beginning with `Required Notice:` that the licensor provided with the software. For example:
|
|
22
|
+
|
|
23
|
+
> Required Notice: Copyright Yoyodyne, Inc. (http://example.com)
|
|
24
|
+
|
|
25
|
+
## Changes and New Works License
|
|
26
|
+
|
|
27
|
+
The licensor grants you an additional copyright license to make changes and new works based on the software for any permitted purpose.
|
|
28
|
+
|
|
29
|
+
## Patent License
|
|
30
|
+
|
|
31
|
+
The licensor grants you a patent license for the software that covers patent claims the licensor can license, or becomes able to license, that you would infringe by using the software.
|
|
32
|
+
|
|
33
|
+
## Noncommercial Purposes
|
|
34
|
+
|
|
35
|
+
Any noncommercial purpose is a permitted purpose.
|
|
36
|
+
|
|
37
|
+
## Personal Uses
|
|
38
|
+
|
|
39
|
+
Personal use for research, experiment, and testing for the benefit of public knowledge, personal study, private entertainment, hobby projects, amateur pursuits, or religious observance, without any anticipated commercial application, is use for a permitted purpose.
|
|
40
|
+
|
|
41
|
+
## Noncommercial Organizations
|
|
42
|
+
|
|
43
|
+
Use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization, or government institution is use for a permitted purpose regardless of the source of funding or obligations resulting from the funding.
|
|
44
|
+
|
|
45
|
+
## Fair Use
|
|
46
|
+
|
|
47
|
+
You may have "fair use" rights for the software under the law. These terms do not limit them.
|
|
48
|
+
|
|
49
|
+
## No Other Rights
|
|
50
|
+
|
|
51
|
+
These terms do not allow you to sublicense or transfer any of your licenses to anyone else, or prevent the licensor from granting licenses to anyone else. These terms do not imply any other licenses.
|
|
52
|
+
|
|
53
|
+
## Patent Defense
|
|
54
|
+
|
|
55
|
+
If you make any written claim that the software infringes or contributes to infringement of any patent, your patent license for the software granted under these terms ends immediately. If your company makes such a claim, your patent license ends immediately for work on behalf of your company.
|
|
56
|
+
|
|
57
|
+
## Violations
|
|
58
|
+
|
|
59
|
+
The first time you are notified in writing that you have violated any of these terms, or done anything with the software not covered by your licenses, your licenses can nonetheless continue if you come into full compliance with these terms, and take practical steps to correct past violations, within 32 days of receiving notice. Otherwise, all your licenses end immediately.
|
|
60
|
+
|
|
61
|
+
## No Liability
|
|
62
|
+
|
|
63
|
+
As far as the law allows, the software comes as is, without any warranty or condition, and the licensor will not be liable to you for any damages arising out of these terms or the use or nature of the software, under any kind of legal claim.
|
|
64
|
+
|
|
65
|
+
## Definitions
|
|
66
|
+
|
|
67
|
+
The **licensor** is the individual or entity offering these terms, and the **software** is the software the licensor makes available under these terms.
|
|
68
|
+
|
|
69
|
+
**You** refers to the individual or entity agreeing to these terms.
|
|
70
|
+
|
|
71
|
+
**Your company** is any legal entity, sole proprietorship, or other kind of organization that you work for, plus all organizations that have control over, are under the control of, or are under common control with that organization. **Control** means ownership of substantially all the assets of an entity, or the power to direct its management and policies by vote, contract, or otherwise. Control can be direct or indirect.
|
|
72
|
+
|
|
73
|
+
**Your licenses** are all the licenses granted to you for the software under these terms.
|
|
74
|
+
|
|
75
|
+
**Use** means anything you do with the software requiring one of your licenses.
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
> **Your AI Agent Stack. Compiled, Not Configured.**
|
|
8
8
|
|
|
9
9
|
[](https://www.npmjs.com/package/oh-my-customcode)
|
|
10
|
-
[](https://polyformproject.org/licenses/noncommercial/1.0.0/)
|
|
11
11
|
[](https://github.com/baekenough/oh-my-customcode/actions/workflows/ci.yml)
|
|
12
12
|
[](https://github.com/baekenough/oh-my-customcode/actions/workflows/security-audit.yml)
|
|
13
13
|
|
|
@@ -309,9 +309,23 @@ Requirements: Node.js >= 18.0.0, Claude Code CLI.
|
|
|
309
309
|
|
|
310
310
|
---
|
|
311
311
|
|
|
312
|
+
## Support
|
|
313
|
+
|
|
314
|
+
If oh-my-customcode saves you time or you like where it's heading, consider supporting development:
|
|
315
|
+
|
|
316
|
+
[](https://github.com/sponsors/baekenough)
|
|
317
|
+
|
|
318
|
+
Every contribution keeps the compiler running. ☕
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
312
322
|
## License
|
|
313
323
|
|
|
314
|
-
[
|
|
324
|
+
This project is licensed under the **[PolyForm Noncommercial License 1.0.0](LICENSE)**.
|
|
325
|
+
|
|
326
|
+
You are free to **use, modify, and distribute** oh-my-customcode for any **noncommercial** purpose — personal projects, research, education, and nonprofit/government use. **Commercial use is not permitted** under this license.
|
|
327
|
+
|
|
328
|
+
Need a commercial license? Open an issue or reach out to the author.
|
|
315
329
|
|
|
316
330
|
---
|
|
317
331
|
|
package/dist/cli/index.js
CHANGED
|
@@ -241,7 +241,7 @@ var init_package = __esm(() => {
|
|
|
241
241
|
workspaces: [
|
|
242
242
|
"packages/*"
|
|
243
243
|
],
|
|
244
|
-
version: "1.0.
|
|
244
|
+
version: "1.0.17",
|
|
245
245
|
description: "Batteries-included agent harness for Claude Code",
|
|
246
246
|
type: "module",
|
|
247
247
|
bin: {
|
|
@@ -308,7 +308,11 @@ var init_package = __esm(() => {
|
|
|
308
308
|
"cli"
|
|
309
309
|
],
|
|
310
310
|
author: "baekenough",
|
|
311
|
-
|
|
311
|
+
funding: {
|
|
312
|
+
type: "github",
|
|
313
|
+
url: "https://github.com/sponsors/baekenough"
|
|
314
|
+
},
|
|
315
|
+
license: "PolyForm-Noncommercial-1.0.0",
|
|
312
316
|
repository: {
|
|
313
317
|
type: "git",
|
|
314
318
|
url: "git+https://github.com/baekenough/oh-my-customcode.git"
|
package/dist/index.js
CHANGED
|
@@ -2031,7 +2031,7 @@ var package_default = {
|
|
|
2031
2031
|
workspaces: [
|
|
2032
2032
|
"packages/*"
|
|
2033
2033
|
],
|
|
2034
|
-
version: "1.0.
|
|
2034
|
+
version: "1.0.17",
|
|
2035
2035
|
description: "Batteries-included agent harness for Claude Code",
|
|
2036
2036
|
type: "module",
|
|
2037
2037
|
bin: {
|
|
@@ -2098,7 +2098,11 @@ var package_default = {
|
|
|
2098
2098
|
"cli"
|
|
2099
2099
|
],
|
|
2100
2100
|
author: "baekenough",
|
|
2101
|
-
|
|
2101
|
+
funding: {
|
|
2102
|
+
type: "github",
|
|
2103
|
+
url: "https://github.com/sponsors/baekenough"
|
|
2104
|
+
},
|
|
2105
|
+
license: "PolyForm-Noncommercial-1.0.0",
|
|
2102
2106
|
repository: {
|
|
2103
2107
|
type: "git",
|
|
2104
2108
|
url: "git+https://github.com/baekenough/oh-my-customcode.git"
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"workspaces": [
|
|
4
4
|
"packages/*"
|
|
5
5
|
],
|
|
6
|
-
"version": "1.0.
|
|
6
|
+
"version": "1.0.17",
|
|
7
7
|
"description": "Batteries-included agent harness for Claude Code",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"bin": {
|
|
@@ -70,7 +70,11 @@
|
|
|
70
70
|
"cli"
|
|
71
71
|
],
|
|
72
72
|
"author": "baekenough",
|
|
73
|
-
"
|
|
73
|
+
"funding": {
|
|
74
|
+
"type": "github",
|
|
75
|
+
"url": "https://github.com/sponsors/baekenough"
|
|
76
|
+
},
|
|
77
|
+
"license": "PolyForm-Noncommercial-1.0.0",
|
|
74
78
|
"repository": {
|
|
75
79
|
"type": "git",
|
|
76
80
|
"url": "git+https://github.com/baekenough/oh-my-customcode.git"
|
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
|
|
21
21
|
> **Shell output parsing — use Python, not read/grep (#1401 찐빠 #3)**: adb bounds rect, 좌표쌍, JSON 분할 등 구조화된 출력 파싱은 `read`+`grep -o` 파이프라인 대신 Python (`python3 -c "..."`) 을 사용한다. `read`+`grep -o` 조합은 공백 차이에 취약해 헛값을 산출한다. SSH 원격 `bash -c` 인자에 소괄호 포함 금지 — `ssh host "cmd; cmd2"` 형식 사용.
|
|
22
22
|
|
|
23
|
+
> **`ls | tail` 시계열 오판 (#1417)**: `ls`는 파일명을 알파벳/사전순으로 정렬하므로 `ls <dir> | tail`로 "가장 최근 파일"을 판단하면 오판한다(파일명 순서 ≠ mtime 순서). 시계열 최신 판단은 `ls -t`, `find <dir> -newermt <ts>`, 또는 stat/timestamp 기반 정렬을 명시한다. `tail`만으로 "최신" 단정 금지. Origin: #1417 (외부 통화녹음 진단 세션 — `ls TPhoneCallRecords | tail -6`이 알파벳순이라 최신을 6/18로 오판 → `find -newermt`로 6/19~20 파일 발견해 정정).
|
|
24
|
+
|
|
23
25
|
### Capability-Aware Tool Scheduling
|
|
24
26
|
|
|
25
27
|
When dispatching parallel tool calls, consider per-tool capabilities to optimize scheduling:
|
|
@@ -193,6 +193,8 @@ Agent frontmatter `hooks:` now fire when the agent runs as a main-thread agent v
|
|
|
193
193
|
|
|
194
194
|
> **v2.1.157+**: `settings.json` `agent` field is now honored for dispatched sessions (with `--agent <name>` override). `EnterWorktree` can switch between Claude-managed worktrees mid-session, and worktrees are left unlocked when the agent finishes (enabling `git worktree remove`/`prune` cleanup).
|
|
195
195
|
|
|
196
|
+
> **v2.1.191+**: Hooks with comma-separated matchers (e.g. `"Bash,PowerShell"`) now fire correctly — previously such matchers silently never fired. Relevant when authoring `.claude/hooks/` entries that target multiple tools in one matcher.
|
|
197
|
+
|
|
196
198
|
## Permission Mode Guidance
|
|
197
199
|
|
|
198
200
|
CC defaults `mode` to `acceptEdits` if not specified — always pass `mode: "bypassPermissions"` explicitly in Agent tool calls (see R010). See guidance details via Read tool.
|
|
@@ -132,4 +132,6 @@ R007 헤더 누락은 외부 프로젝트 디버깅, SSH 진단, 배포 작업
|
|
|
132
132
|
|
|
133
133
|
기술적 몰입 중 헤더 누락이 반복될 경우 즉시 re-anchor: 다음 응답에 `┌─ Agent:` 풀 헤더를 붙이고 이후 계속 유지한다.
|
|
134
134
|
|
|
135
|
-
|
|
135
|
+
외부 프로젝트 진단 세션(예: #1417 통화녹음 수집 진단)에서 세션 전체에 걸쳐 헤더가 반복 누락되는 재발이 관측되었다 — 진단 몰입 중에도 매 응답 헤더를 고정한다.
|
|
136
|
+
|
|
137
|
+
Reference issues: #1401, #1417.
|
|
@@ -219,6 +219,7 @@ triage-dispatch.yml 실패 원인을 파일 Read 전에 "triaged 라벨 부재 +
|
|
|
219
219
|
|------|------|
|
|
220
220
|
| 로그/출력을 읽기 전 "error loop"·"무한 루프"로 특성화 | 대표 샘플을 먼저 읽고 INFO/WARN/ERROR 분포 확인 후 특성화 |
|
|
221
221
|
| 첫 namespace/scope만 보고 전체 단정 | 관련 scope 확인 후 결론 |
|
|
222
|
+
| 정렬 기준 미검증 시계열 단정 (`ls\|tail`로 "최신") | 시계열 판단은 mtime/timestamp 정렬(`ls -t`/`find -newermt`) 명시 후 결론 — 파일명순 ≠ 시간순 (#1417) |
|
|
222
223
|
|
|
223
224
|
Origin: #1266 ④.
|
|
224
225
|
|
|
@@ -329,6 +329,8 @@ Before spawning any agent:
|
|
|
329
329
|
|
|
330
330
|
> **v2.1.187+**: Fixed subagent depth tracking — resumed subagents restore their original spawn depth, and forked subagents count toward the depth cap. Also fixed background jobs stuck in "working" indefinitely when an agent ended a turn without structured output, and leaked agent worktree registrations are now auto-cleaned. Reinforces the sole-orchestrator design's depth accounting (cf. v2.1.172 5-level nesting note). `mode: "bypassPermissions"` remains required.
|
|
331
331
|
|
|
332
|
+
> **v2.1.191+**: Stopping a background agent from the tasks panel is now PERMANENT — a stopped agent no longer resurrects after being stopped. Strengthens background-agent lifecycle control. `mode: "bypassPermissions"` on every Agent tool call remains required.
|
|
333
|
+
|
|
332
334
|
## Agent Capability Pre-Check
|
|
333
335
|
|
|
334
336
|
Before delegating a task to a subagent, MUST verify the target agent's tool capabilities against the task requirements. Failure to pre-check causes round-trip waste (delegation → failure → re-delegation).
|
|
@@ -53,6 +53,8 @@ Use a `"*"` deny rule in `settings.json` to enforce a deny-by-default posture, t
|
|
|
53
53
|
|
|
54
54
|
> **v2.1.187+**: Org-configured model restrictions now apply to the model picker, `--model`, `/model`, and `ANTHROPIC_MODEL`, surfacing a "restricted by your organization's settings" message for a restricted model. Extends the v2.1.175 `enforceAvailableModels` managed-setting scope to the model picker/env entry points. Also added the `sandbox.credentials` setting (blocks sandboxed reads of credential files/secret env) — cross-ref R001.
|
|
55
55
|
|
|
56
|
+
> **v2.1.191+**: Sandbox network permission dialog now REMEMBERS hosts allowed with "Yes" for the rest of the session (no per-connection re-prompt). Also: `/permissions` Recently-denied tab now PERSISTS an approved denial on close (previously discarded); managed `forceRemoteSettingsRefresh` now takes effect via MDM/file policy with `Cache-Control: no-cache`; MCP capability discovery (`tools/list`/`prompts/list`/`resources/list`) and OAuth token requests now retry transient network errors with backoff (headless skips the browser popup). Relevant to Tier-4/Tier-6 (sandbox network + MCP) permission flows.
|
|
57
|
+
|
|
56
58
|
## Agent Tool Permission Mode
|
|
57
59
|
|
|
58
60
|
When spawning subagents via the Agent tool, always pass `mode: "bypassPermissions"` explicitly. The Agent tool's default mode is `acceptEdits`, which **overrides** the agent frontmatter `permissionMode` field.
|
|
@@ -100,6 +100,8 @@ Cross-reference: R010 Subagent Scope-Creep STOP Protocol, R002 (permission tiers
|
|
|
100
100
|
|
|
101
101
|
> **v2.1.187+**: Added the `sandbox.credentials` setting — blocks sandboxed commands from reading credential files and secret environment variables. Platform-level complement to this section's credential guardrails (the model still never echoes secret values; CC now also blocks sandboxed reads of credential files/secret env at the platform level) — defense-in-depth.
|
|
102
102
|
|
|
103
|
+
> **v2.1.191+**: Sandbox network permission "Yes" approvals are remembered per-session (cf. R002). Reduces re-prompts but means an allowed host stays allowed for the session — scope network allows deliberately.
|
|
104
|
+
|
|
103
105
|
## Required Before Destructive Operations
|
|
104
106
|
|
|
105
107
|
Verify target, assess impact scope, check recoverability, get user approval.
|
|
@@ -172,4 +172,6 @@ R007 헤더와 마찬가지로, R008 prefix 누락도 외부 프로젝트 디버
|
|
|
172
172
|
| 외부 프로젝트 디버깅 | **동일하게 필수** |
|
|
173
173
|
| SSH / 배포 / 인프라 작업 | **동일하게 필수** |
|
|
174
174
|
|
|
175
|
-
|
|
175
|
+
외부 프로젝트 진단 세션(#1417)에서 Bash/Edit/Read/Agent 모든 호출에 `[agent][model] → Tool:` prefix가 세션 전체 누락된 재발이 관측되었다 — 도구 호출 직전 prefix 부착을 워크플로에 내재화한다.
|
|
176
|
+
|
|
177
|
+
Reference issues: #1401, #1417.
|
package/templates/manifest.json
CHANGED