oh-my-customcode 1.1.47 → 1.1.49
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 +7 -6
- package/dist/cli/index.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/templates/.claude/agents/agora-runner.md +114 -0
- package/templates/.claude/hooks/scripts/agent-teams-advisor.sh +6 -1
- package/templates/.claude/hooks/scripts/r007-r008-drift-advisor.sh +41 -3
- package/templates/.claude/hooks/scripts/session-env-check.sh +29 -3
- package/templates/.claude/rules/MAY-optimization.md +6 -0
- package/templates/.claude/rules/MUST-agent-design.md +2 -0
- package/templates/.claude/rules/MUST-completion-verification.md +33 -2
- package/templates/.claude/rules/MUST-enforcement-policy.md +3 -3
- package/templates/.claude/rules/MUST-intent-transparency.md +7 -2
- package/templates/.claude/rules/MUST-orchestrator-coordination.md +50 -5
- package/templates/.claude/rules/MUST-parallel-execution.md +56 -7
- package/templates/.claude/rules/MUST-sync-verification.md +21 -2
- package/templates/.claude/rules/MUST-tool-identification.md +22 -4
- package/templates/.claude/skills/agora/SKILL.md +325 -0
- package/templates/.claude/skills/agora/scripts/agora.sh +761 -0
- package/templates/.claude/skills/agora/scripts/anonymize.sh +492 -0
- package/templates/.claude/skills/agora/scripts/judge.sh +427 -0
- package/templates/.claude/skills/agora/scripts/response-schema.json +26 -0
- package/templates/.claude/skills/agora/scripts/reviewers.sh +312 -0
- package/templates/.claude/skills/agora/scripts/verdict-schema.json +34 -0
- package/templates/.claude/skills/hada-scout/SKILL.md +1 -1
- package/templates/.claude/skills/help/SKILL.md +1 -1
- package/templates/.claude/skills/pipeline/workflows/auto-dev.yaml +47 -6
- package/templates/.claude/skills/sauron-watch/SKILL.md +1 -1
- package/templates/.claude/skills/status/SKILL.md +3 -3
- package/templates/.claude/skills/token-efficiency-audit/SKILL.md +1 -1
- package/templates/.github/workflows/wiki-sync.yml +1 -1
- package/templates/CLAUDE.md +3 -3
- package/templates/CLAUDE.md.en +3 -3
- package/templates/CLAUDE.md.ko +3 -3
- package/templates/README.md +5 -5
- package/templates/guides/agent-eval/README.md +1 -1
- package/templates/manifest.json +3 -3
- package/templates/workflows/auto-dev.yaml +47 -6
package/templates/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.1.
|
|
2
|
+
"version": "1.1.49",
|
|
3
3
|
"lastUpdated": "2026-07-14T00:00:00.000Z",
|
|
4
4
|
"omcustomMinClaudeCode": "2.1.121",
|
|
5
5
|
"omcustomMinClaudeCodeReason": "Sensitive-path direct Write/Edit on .claude/** under bypassPermissions (R010 deprecation, #1101)",
|
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
"name": "agents",
|
|
15
15
|
"path": ".claude/agents",
|
|
16
16
|
"description": "AI agent definitions (flat .md files with prefixes)",
|
|
17
|
-
"files":
|
|
17
|
+
"files": 50
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
"name": "skills",
|
|
21
21
|
"path": ".claude/skills",
|
|
22
22
|
"description": "Reusable skill modules (includes slash commands)",
|
|
23
|
-
"files":
|
|
23
|
+
"files": 115
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
26
|
"name": "guides",
|
|
@@ -5,6 +5,14 @@ version: "2.1.0"
|
|
|
5
5
|
# Design rule: each pipeline run produces ONE bounded release unit (3-7 issues), not all open issues.
|
|
6
6
|
# This pipeline is a project-agnostic template. Project-specific overrides belong in
|
|
7
7
|
# the project's own workflows/auto-dev.yaml (e.g., AgentNav, second-brain).
|
|
8
|
+
#
|
|
9
|
+
# Design rule (R020 「위임 경계를 Phase 개수로 설계」 배선, Origin: #1595 #4):
|
|
10
|
+
# 아래 `skill:` 스텝 중 다중 Phase 스킬(deep-plan = research→plan→verify, deep-verify = 다각 검증)은
|
|
11
|
+
# 스킬을 그대로 spawn하지 않는다. Phase 경계가 곧 종료 유혹 지점이므로, 발주 전에 스킬의 Phase를
|
|
12
|
+
# 읽고 **단일 목표 1개짜리 위임**으로 분할해 순차 발주한다. 실측(v1.1.48): `skill: deep-plan`을
|
|
13
|
+
# 그대로 호출한 결과 tool_uses=0 / 6.9초 / 산출물 0으로 종료했고, 단일 목표 Plan 에이전트로
|
|
14
|
+
# 재설계하니 1/1 완주했다. `skill:` 값은 **분할의 근거가 되는 스킬 정의**를 가리키는 것이지
|
|
15
|
+
# "이 스킬을 1회 호출하라"는 뜻이 아니다.
|
|
8
16
|
|
|
9
17
|
steps:
|
|
10
18
|
- name: pre-triage
|
|
@@ -270,7 +278,7 @@ steps:
|
|
|
270
278
|
|
|
271
279
|
- name: deep-plan
|
|
272
280
|
skill: deep-plan
|
|
273
|
-
description: "Research-validated implementation plan (research → plan → verify) — skipped if docs-only, integrated-analysis allowed if lite"
|
|
281
|
+
description: "Research-validated implementation plan (research → plan → verify) — skipped if docs-only, integrated-analysis allowed if lite. MULTI-PHASE: 스킬을 그대로 spawn하지 말고 R020 「위임 경계를 Phase 개수로 설계」에 따라 단일 목표 위임으로 분할해 순차 발주한다 (#1595 #4)."
|
|
274
282
|
depends_on: plan
|
|
275
283
|
|
|
276
284
|
- name: implement
|
|
@@ -357,7 +365,7 @@ steps:
|
|
|
357
365
|
|
|
358
366
|
- name: deep-verify
|
|
359
367
|
skill: deep-verify
|
|
360
|
-
description: "Multi-angle release quality verification — self-review checklist if docs-only; mgr-sauron R017 + core self-check if lite"
|
|
368
|
+
description: "Multi-angle release quality verification — self-review checklist if docs-only; mgr-sauron R017 + core self-check if lite. MULTI-PHASE: 스킬을 그대로 spawn하지 말고 R020 「위임 경계를 Phase 개수로 설계」에 따라 단일 목표 위임으로 분할해 순차 발주한다 (#1595 #4)."
|
|
361
369
|
depends_on: verify-build
|
|
362
370
|
|
|
363
371
|
- name: release
|
|
@@ -398,8 +406,18 @@ steps:
|
|
|
398
406
|
# Edit ONLY the .version field — do NOT overwrite templates/manifest.json wholesale (e.g. a source-hash path→hash map).
|
|
399
407
|
# Recover a corrupted manifest: git show HEAD:templates/manifest.json | jq '.version="<NEW>"' > templates/manifest.json (#1423/#1154).
|
|
400
408
|
d. templates/manifest.json: jq '.version = "<NEW>"' templates/manifest.json > templates/manifest.json.tmp && mv templates/manifest.json.tmp templates/manifest.json [on release/v{NEW}]
|
|
401
|
-
e.
|
|
402
|
-
|
|
409
|
+
e. ⚠ PREREQUISITE: steps c (package.json) AND d (templates/manifest.json) MUST BOTH be completed
|
|
410
|
+
before running this step. bun run build — run standalone (NO pipe), read exit code directly
|
|
411
|
+
($? after a pipe is the last command's, R005/#1492).
|
|
412
|
+
Actual mechanism (corrected, #1593): `bun run build` invokes `scripts/sync-source-lockfile.ts`
|
|
413
|
+
(a 10-line wrapper with no version literals of its own), which calls
|
|
414
|
+
`generateAndWriteLockfileForDir` (`src/core/lockfile.ts`). That function reads versions via
|
|
415
|
+
`loadVersions()` (`src/core/sync.ts`) — `generatorVersion` FROM package.json, `templateVersion`
|
|
416
|
+
FROM templates/manifest.json — and writes both into .omcustom.lock.json. If step d has not yet
|
|
417
|
+
landed when this runs, the lockfile silently records the PREVIOUS templateVersion — no warning,
|
|
418
|
+
no error. Observed contamination: v1.1.47 shipped generatorVersion=1.1.47 / templateVersion=1.1.46
|
|
419
|
+
because the bump commit created package.json + lockfile together and manifest.json was bumped in
|
|
420
|
+
a later commit. Do NOT run this step until BOTH c and d are staged. [on release/v{NEW}]
|
|
403
421
|
f. git status --short — enumerate ALL tracked drift (`^ M`) the build produced; stage EVERY one (esp. .omcustom.lock.json) before commit.
|
|
404
422
|
(#1531 — .omcustom.lock.json missed staging across 4 consecutive releases after v1.1.29; root cause was no build step between version bump and commit.) [on release/v{NEW}]
|
|
405
423
|
g. mgr-gitnerd commit: "chore(release): bump to v<NEW>" — MUST include the drift from step f.
|
|
@@ -411,12 +429,27 @@ steps:
|
|
|
411
429
|
i. mandatory verification (with existence guard for partial-update safety), run on release/v{NEW}:
|
|
412
430
|
[ -f scripts/verify-version-sync.sh ] && bash scripts/verify-version-sync.sh || echo "::warning::verify-version-sync.sh not found, version sync verification skipped"
|
|
413
431
|
(verify-version-sync.sh 가 exit 1 시 release 단계 halt)
|
|
432
|
+
j. lockfile 3-way assertion (#1593 제안3, closes the gap step i's 2-way check misses) — run standalone
|
|
433
|
+
(NO pipe), read exit code directly, on release/v{NEW}:
|
|
434
|
+
jq -e --arg v "<NEW>" '.generatorVersion==$v and .templateVersion==$v' .omcustom.lock.json
|
|
435
|
+
실패 시 release 단계 halt — cause is almost always step e run before step d landed; fix by
|
|
436
|
+
re-running step d then step e, re-staging, and re-running this assertion.
|
|
414
437
|
|
|
415
438
|
Version decision (semver) — PATCH-PREFERRED policy (post-1.0.0):
|
|
416
439
|
- No existing tags → v0.1.0
|
|
417
440
|
- Previous tag exists → DEFAULT to patch. When in doubt, patch — do NOT reflexively bump minor for rule/doc/skill edits.
|
|
418
441
|
- patch (DEFAULT): rule/doc/skill/config/wiki/workflow changes, bugfixes, hardening, CC-compat notes — the vast majority of this project's changes
|
|
419
|
-
- minor: ONLY a
|
|
442
|
+
- minor: ONLY a new user-facing capability that changes HOW the harness is used — a new
|
|
443
|
+
workflow axis, a new command surface users must learn, or a contract other components
|
|
444
|
+
depend on. NOT "a file was added under .claude/skills/ or .claude/agents/".
|
|
445
|
+
⚠ Counter-example (Origin: v1.1.49 세션, 사용자 지적): adding one skill + one agent
|
|
446
|
+
(agora: skills 114→115, agents 49→50) was initially scoped as v1.2.0 minor by reading
|
|
447
|
+
the old wording literally. That was WRONG — this repo adds skills routinely, and
|
|
448
|
+
skills reached 115 while the version stayed v1.1.48, so skill/agent addition is
|
|
449
|
+
ESTABLISHED as patch (target was corrected to v1.1.49). Count growth is this repo's
|
|
450
|
+
baseline rate of change, NOT a minor signal. If a version bump would follow
|
|
451
|
+
mechanically from "a new file exists", it is patch. Ask instead: does a user's
|
|
452
|
+
workflow change because of this?
|
|
420
453
|
- major: breaking changes to user-facing contracts (CLI flags, public skill/command names, public API), or a deliberate milestone declaration (e.g., v1.0.0)
|
|
421
454
|
- Previous tag is ahead of source version (e.g., tag v0.136.1, package.json 0.136.0): use next available skip-version (0.136.2)
|
|
422
455
|
|
|
@@ -428,7 +461,15 @@ steps:
|
|
|
428
461
|
b. mgr-gitnerd creates PR: gh pr create --base develop --head release/v{NEW} --title "chore(release): bump to v{NEW}" --body "<MUST include 'Closes #N' for EVERY issue this release resolves>"
|
|
429
462
|
⚠ auto-tag.yml closes issues by grep'ing Closes/Fixes/Resolves keywords in the PR BODY — NOT by milestone membership NOR by commit message trailers. If the keywords are missing, no issues close and the workflow still reports success (#1531). Commit-message close keywords are explicitly forbidden during `implement` and step 1.g above (#1542) — the PR body is the ONLY place a close keyword should appear.
|
|
430
463
|
Before creating the PR (whether via inline --body or --body-file), confirm the body text actually contains a Closes line per issue.
|
|
431
|
-
c. mgr-gitnerd merges PR
|
|
464
|
+
c. mgr-gitnerd merges PR: gh pr merge {n} --merge --delete-branch (plain merge — NOT --admin).
|
|
465
|
+
Ground-truth (measured 2026-08-15, `gh api repos/{owner}/{repo}/branches/develop/protection`):
|
|
466
|
+
required status checks are exactly 6 — Test, Lint, Template Sync, Version Sync,
|
|
467
|
+
Dependency Security Audit, Rust Tests (strict=true); enforce_admins=false; NO
|
|
468
|
+
required_pull_request_reviews (no reviewer-approval requirement exists). v1.1.47 merged with a
|
|
469
|
+
plain `gh pr merge 1585 --merge --delete-branch` — no --admin needed. A plain merge succeeds
|
|
470
|
+
once all 6 checks report green. If the merge is rejected, do NOT reflexively add --admin —
|
|
471
|
+
re-run the protection query above to re-measure current requirements and report the actual
|
|
472
|
+
blocker (R010 bypass-flag pre-check: name what is bypassed and why before ever using --admin).
|
|
432
473
|
d. DO NOT manually git tag or gh release create.
|
|
433
474
|
auto-tag.yml fires on release/v* PR merge → creates tag → closes issues linked via PR-body Closes/Fixes/Resolves keywords → closes milestone → deletes release branch.
|
|
434
475
|
release.yml fires on the tag → npm publish + GitHub Release creation.
|