@uzysjung/agent-harness 26.150.0 → 26.152.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.ko.md +2 -2
- package/README.md +2 -2
- package/dist/{chunk-NKBUDHPC.js → chunk-EQDC2AAU.js} +125 -69
- package/dist/chunk-EQDC2AAU.js.map +1 -0
- package/dist/index.js +269 -284
- package/dist/index.js.map +1 -1
- package/dist/trust-tier-drift.js +1 -1
- package/package.json +1 -1
- package/templates/CLAUDE.md +145 -164
- package/templates/agents/reviewer.md +4 -5
- package/templates/antigravity/AGENTS.md.template +3 -23
- package/templates/codex/AGENTS.md.template +5 -56
- package/templates/hooks/protect-files.sh +4 -0
- package/templates/opencode/AGENTS.md.template +4 -52
- package/templates/opencode/opencode.json.template +0 -8
- package/templates/rules/change-management.md +2 -4
- package/templates/rules/cli-development.md +2 -4
- package/templates/rules/doc-governance.md +3 -1
- package/templates/rules/git-policy.md +1 -1
- package/templates/rules/ship-checklist.md +3 -3
- package/templates/rules/test-policy.md +3 -8
- package/templates/settings.json +1 -16
- package/templates/skills/audit-harness-fit/README.md +113 -0
- package/templates/skills/audit-harness-fit/SKILL.md +64 -433
- package/templates/skills/audit-harness-fit/evals/scenarios.yaml +222 -0
- package/templates/skills/audit-harness-fit/references/apply.md +66 -0
- package/templates/skills/audit-harness-fit/references/audit.md +160 -0
- package/templates/skills/audit-harness-fit/references/populate.md +74 -0
- package/templates/skills/audit-harness-fit/references/verification.md +123 -0
- package/templates/skills/audit-service-gaps/SKILL.md +0 -2
- package/templates/skills/compaction-handoff/SKILL.md +2 -2
- package/templates/skills/model-orchestration/SKILL.md +13 -24
- package/templates/skills/natural-korean/SKILL.md +45 -0
- package/templates/skills/north-star/references/roadmap-method.md +2 -2
- package/templates/skills/{task-brief → objective-brief}/SKILL.md +17 -16
- package/templates/skills/recurrence-prevention/SKILL.md +16 -16
- package/templates/track-mcp-map.tsv +1 -1
- package/dist/chunk-NKBUDHPC.js.map +0 -1
- package/templates/agents/build-error-resolver.md +0 -111
- package/templates/agents/code-reviewer.md +0 -237
- package/templates/agents/plan-checker.md +0 -116
- package/templates/agents/security-reviewer.md +0 -108
- package/templates/agents/silent-failure-hunter.md +0 -50
- package/templates/hooks/task-brief-nudge.sh +0 -57
- package/templates/skills/agent-introspection-debugging/SKILL.md +0 -153
- package/templates/skills/audit-harness-fit/references/official-criteria.md +0 -367
- package/templates/skills/continuous-learning-v2/SKILL.md +0 -361
- package/templates/skills/continuous-learning-v2/agents/observer-loop.sh +0 -362
- package/templates/skills/continuous-learning-v2/agents/observer.md +0 -189
- package/templates/skills/continuous-learning-v2/agents/session-guardian.sh +0 -150
- package/templates/skills/continuous-learning-v2/agents/start-observer.sh +0 -252
- package/templates/skills/continuous-learning-v2/config.json +0 -8
- package/templates/skills/continuous-learning-v2/hooks/observe.sh +0 -585
- package/templates/skills/continuous-learning-v2/scripts/detect-project.sh +0 -322
- package/templates/skills/continuous-learning-v2/scripts/instinct-cli.py +0 -1956
- package/templates/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +0 -31
- package/templates/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +0 -68
- package/templates/skills/continuous-learning-v2/scripts/test_parse_instinct.py +0 -1420
- package/templates/skills/deep-research/SKILL.md +0 -179
- package/templates/skills/deep-research/agents/openai.yaml +0 -7
- package/templates/skills/eval-harness/SKILL.md +0 -306
- package/templates/skills/eval-harness/agents/openai.yaml +0 -7
- package/templates/skills/humanize-korean/SKILL.md +0 -228
- package/templates/skills/spec-scaling/SKILL.md +0 -89
- package/templates/skills/strategic-compact/SKILL.md +0 -145
- package/templates/skills/strategic-compact/suggest-compact.sh +0 -54
- package/templates/skills/verification-loop/SKILL.md +0 -250
- package/templates/skills/verification-loop/agents/openai.yaml +0 -7
- package/templates/skills/verification-loop/references/tracks.md +0 -49
package/README.ko.md
CHANGED
|
@@ -63,9 +63,9 @@ npx -y @uzysjung/agent-harness uninstall # 무엇을 뺄지 고른다
|
|
|
63
63
|
|
|
64
64
|
## 무엇을 얻는가
|
|
65
65
|
|
|
66
|
-
- **스택 기반 큐레이션.** 검증된 옵션 중에서 이 프로젝트에 실제로 필요한 자산만 골라 설치한다. `csr-supabase` 를 고르면 세 묶음이 미리 체크된다 — 모든 track 이 받는 4종(`north-star`·`
|
|
66
|
+
- **스택 기반 큐레이션.** 검증된 옵션 중에서 이 프로젝트에 실제로 필요한 자산만 골라 설치한다. `csr-supabase` 를 고르면 세 묶음이 미리 체크된다 — 모든 track 이 받는 4종(`north-star`·`objective-brief`·`gh-issue-workflow`·`audit-harness-fit`), 개발 track 이 받는 것들(`find-skills`·`agent-browser`·`frontend-design` + 방법론 스킬 5종), 그리고 이 스택이 필요로 하는 React·shadcn·Supabase·Postgres. 카탈로그의 나머지는 처음부터 끼어들지 않는다.
|
|
67
67
|
|
|
68
|
-
- **규율 레이어.** 실제 프로덕션 프로젝트를 에이전트로 운영하며 추출한 룰·훅·방법론 스킬·CI 스캐폴드로 구성된다. 문서 거버넌스와 검증 게이트, 작업 브리프 정규화, 재발 방지 체계를 아우르며, 특히 스킬 14종은 마켓플레이스에 의존하지 않고 이 저장소에서 직접 쓰고 관리한다. 그중
|
|
68
|
+
- **규율 레이어.** 실제 프로덕션 프로젝트를 에이전트로 운영하며 추출한 룰·훅·방법론 스킬·CI 스캐폴드로 구성된다. 문서 거버넌스와 검증 게이트, 작업 브리프 정규화, 재발 방지 체계를 아우르며, 특히 스킬 14종은 마켓플레이스에 의존하지 않고 이 저장소에서 직접 쓰고 관리한다. 그중 13종은 id 로 지정할 수 있고(`--with`/`--without`), 그 13종 가운데 5종은 3단계 화면에서 한 줄로 묶여 함께 켜지고 꺼진다. 이 레이어 덕분에 단순한 skill 모음을 넘어선 하네스로 작동한다.
|
|
69
69
|
|
|
70
70
|
- **4개 CLI, 하나의 어휘.** 1급 지원 대상인 Claude Code 에는 모든 자산·훅·plugin 을 적용하고, Codex, OpenCode, Antigravity 에는 skill 과 rule 레이어를 적용한다. 프로젝트가 특정 CLI 에 묶이지 않는다.
|
|
71
71
|
|
package/README.md
CHANGED
|
@@ -59,9 +59,9 @@ This tool starts from the stack instead. You pick a track, and it pre-checks the
|
|
|
59
59
|
|
|
60
60
|
## What you get
|
|
61
61
|
|
|
62
|
-
- **Curation by tech stack.** Of the vetted options, you install only what this project calls for. Pick `csr-supabase` and step 3 pre-checks three groups: the four that every track gets (`north-star`, `
|
|
62
|
+
- **Curation by tech stack.** Of the vetted options, you install only what this project calls for. Pick `csr-supabase` and step 3 pre-checks three groups: the four that every track gets (`north-star`, `objective-brief`, `gh-issue-workflow`, `audit-harness-fit`), the dev-track set (`find-skills`, `agent-browser`, `frontend-design`, and the five method skills), and the ones this stack calls for — React, shadcn, Supabase, Postgres. Not the rest of the catalog.
|
|
63
63
|
|
|
64
|
-
- **A discipline layer.** Rules, hooks, method skills, and CI scaffolds distilled from running real production projects with agents: doc governance, verification gates, normalized task briefs, recurrence prevention. Fourteen of those skills are written and maintained in this repo rather than pulled from a marketplace —
|
|
64
|
+
- **A discipline layer.** Rules, hooks, method skills, and CI scaffolds distilled from running real production projects with agents: doc governance, verification gates, normalized task briefs, recurrence prevention. Fourteen of those skills are written and maintained in this repo rather than pulled from a marketplace — thirteen of them selectable by id with `--with` / `--without`, five of which collapse into one row at step 3 — so the harness ships the method, not just a pointer to one. This layer is what makes it a harness rather than a skill pack.
|
|
65
65
|
|
|
66
66
|
- **Four CLIs, one vocabulary.** Claude Code is first class — all assets, hooks, and plugins. Codex, OpenCode, and Antigravity get the skills and rules layer. Your project is not locked to one CLI.
|
|
67
67
|
|
|
@@ -195,16 +195,6 @@ var EXTERNAL_ASSETS = [
|
|
|
195
195
|
condition: { kind: "has-dev-track" },
|
|
196
196
|
method: { kind: "internal", key: "audit-service-gaps" }
|
|
197
197
|
},
|
|
198
|
-
{
|
|
199
|
-
id: "verification-loop",
|
|
200
|
-
tier: "official",
|
|
201
|
-
// uzys 자사 스킬 리포
|
|
202
|
-
description: "Verification loop \u2014 run proportional verification tracks (UI \xB7 API \xB7 CLI \xB7 library \xB7 docs \xB7 real user flow) and end with evidence plus a fixed verdict; a green build is not proof of user-visible completion",
|
|
203
|
-
category: "dev-tools",
|
|
204
|
-
source: "uzys",
|
|
205
|
-
condition: { kind: "has-dev-track" },
|
|
206
|
-
method: { kind: "internal", key: "verification-loop" }
|
|
207
|
-
},
|
|
208
198
|
{
|
|
209
199
|
id: "multi-persona-review",
|
|
210
200
|
tier: "official",
|
|
@@ -240,7 +230,7 @@ var EXTERNAL_ASSETS = [
|
|
|
240
230
|
id: "model-orchestration",
|
|
241
231
|
tier: "official",
|
|
242
232
|
// uzys 자사 스킬 리포
|
|
243
|
-
description: "Model orchestration \u2014 decompose work by capability and route independent, bounded tasks to available agents while preserving ownership, permissions, and verification (opt-in \u2014 recommended)",
|
|
233
|
+
description: "Model orchestration \u2014 decompose work by capability and route independent, bounded tasks to available agents while preserving ownership, permissions, and verification. Model names are Claude Code vocabulary; on other CLIs the same split maps onto that vendor's tiers (opt-in \u2014 recommended)",
|
|
244
234
|
category: "workflow",
|
|
245
235
|
source: "uzys",
|
|
246
236
|
condition: { kind: "opt-in" },
|
|
@@ -261,27 +251,31 @@ var EXTERNAL_ASSETS = [
|
|
|
261
251
|
{
|
|
262
252
|
// 복원 9종이 아니라 신설이다 — 이관 이력이 없다.
|
|
263
253
|
// 전 트랙인 이유: 위임과 요청 정규화는 개발 트랙의 행위가 아니라 **전 트랙의 행위**다.
|
|
264
|
-
// executive 트랙도 서브에이전트에 일을 넘기고, 그때 브리프가 없으면 완료 판정 기준 없이
|
|
265
|
-
//
|
|
266
|
-
//
|
|
267
|
-
|
|
254
|
+
// executive 트랙도 서브에이전트에 일을 넘기고, 그때 브리프가 없으면 완료 판정 기준 없이 넘긴다.
|
|
255
|
+
// ADR-088 (#426 F-04) — 전신 `task-brief` 개명. 문턱이 **위임 · 설계 · 다단계(피처/프로젝트
|
|
256
|
+
// 규모 이상)** 로 좁혀졌고, 한 줄 요청마다 브리프를 권하던 매 프롬프트 넛지 훅과 상시 스킬
|
|
257
|
+
// 안내(`CONTINUOUS_SKILLS`)가 함께 빠졌다. 이름이 그 문턱을 들고 있다.
|
|
258
|
+
id: "objective-brief",
|
|
268
259
|
tier: "official",
|
|
269
260
|
// uzys 자사 스킬
|
|
270
|
-
description: "
|
|
261
|
+
description: "Objective brief \u2014 normalize a delegation, a design task, or multi-step work at feature scale into the canonical brief (objective \xB7 inputs \xB7 invariants \xB7 success criteria \xB7 boundaries \xB7 autonomy \xB7 verification) and write every delegation prompt in that same shape",
|
|
271
262
|
category: "workflow",
|
|
272
263
|
source: "uzys",
|
|
273
264
|
condition: { kind: "any-track", tracks: [...TRACKS] },
|
|
274
|
-
method: { kind: "internal", key: "
|
|
265
|
+
method: { kind: "internal", key: "objective-brief" }
|
|
275
266
|
},
|
|
276
267
|
{
|
|
277
|
-
//
|
|
268
|
+
// objective-brief 와 같은 신설이다 — 이관 이력이 없다.
|
|
278
269
|
// 전 트랙인 이유: 이 하네스는 **모든 트랙에** 앵커·룰·훅을 깐다. 그 상주층이 밥값을 하는지
|
|
279
270
|
// 되묻는 루프만 개발 트랙에 두면, 상주 비용은 전원이 무는데 감사는 일부만 갖는 비대칭이
|
|
280
271
|
// 된다. 감사 대상이 개발 산출물이 아니라 **설치본 자신**이라 트랙 술어와 무관하다.
|
|
272
|
+
// ADR-084 (#425) — 2판. 판정 근거가 공식 체크리스트 인용에서 **확정된 의도 + 리포 실증**으로
|
|
273
|
+
// 바뀌었고, 모드 4개(audit · verification · apply · populate)를 SKILL.md 가 references 로
|
|
274
|
+
// 라우팅한다. 비-Claude CLI 도 디렉터리째 받는 것이 전제다(#431).
|
|
281
275
|
id: "audit-harness-fit",
|
|
282
276
|
tier: "official",
|
|
283
277
|
// uzys 자사 스킬
|
|
284
|
-
description: "Audit harness fit \u2014 audit
|
|
278
|
+
description: "Audit harness fit \u2014 audit or clean up agent instructions and skills: remove needless questions and rechecks, reconcile conflicting or changed guidance, retire low-value rules and skills, move decision history out of resident text, right-size user-journey verification; also fill or refresh AGENTS.md / CLAUDE.md project context from repository evidence",
|
|
285
279
|
category: "workflow",
|
|
286
280
|
source: "uzys",
|
|
287
281
|
condition: { kind: "any-track", tracks: [...TRACKS] },
|
|
@@ -307,15 +301,18 @@ var EXTERNAL_ASSETS = [
|
|
|
307
301
|
// 트랙과 무관한 글쓰기 규율이라 어느 트랙에서도 고를 수 있고, 어느 트랙에도 자동으로는
|
|
308
302
|
// 안 깔린다(opt-in). 한국어로 쓰지 않는 사용자에게 기본 설치되면 그대로 낭비다.
|
|
309
303
|
// clear-korean-communication 과의 경계: 저쪽은 **무엇을 어떤 형식으로 말할지**(설명·승인
|
|
310
|
-
// 요청의 구조)이고, 이쪽은
|
|
311
|
-
|
|
304
|
+
// 요청의 구조)이고, 이쪽은 **한국어로 쓰는 행위 자체**(답변·글쓰기·번역·퇴고)의 표현이다.
|
|
305
|
+
// #428 — 전신 `humanize-korean`(#355, 진단-우선 퇴고)을 개명·교체했다. 범위가 퇴고에서
|
|
306
|
+
// 쓰기·번역까지로 넓어져 이름이 뜻과 어긋났다. 옛 id 로 깐 설치본은 `update` 가 손대지
|
|
307
|
+
// 않고(설치된 디렉터리만 갱신) 그대로 남는다 — 새 판은 `--with natural-korean` 으로 받는다.
|
|
308
|
+
id: "natural-korean",
|
|
312
309
|
tier: "official",
|
|
313
310
|
// uzys 자사 스킬
|
|
314
|
-
description: "
|
|
311
|
+
description: "Natural Korean \u2014 write, answer, translate, and revise in Korean that reads as Korean: keep meaning and register, cut translationese, needless English, stock phrases, and mechanical repetition; fix only what is actually awkward (opt-in)",
|
|
315
312
|
category: "workflow",
|
|
316
313
|
source: "uzys",
|
|
317
314
|
condition: { kind: "opt-in" },
|
|
318
|
-
method: { kind: "internal", key: "
|
|
315
|
+
method: { kind: "internal", key: "natural-korean" }
|
|
319
316
|
},
|
|
320
317
|
// === Option-gated (v26.42.0 — opt-in, BREAKING vs prior has-dev-track auto-install) ===
|
|
321
318
|
{
|
|
@@ -351,8 +348,8 @@ var EXTERNAL_ASSETS = [
|
|
|
351
348
|
}
|
|
352
349
|
},
|
|
353
350
|
// v26.110.0 (ADR-039, 오피셜 플러그인 큐레이션) — feature-dev: 탐색→설계→구현 워크플로우 +
|
|
354
|
-
// 전용 에이전트 3종(
|
|
355
|
-
// "
|
|
351
|
+
// 전용 에이전트 3종(탐색·설계·리뷰). 방법론류 — ADR-032 "워크플로우 강제 구조는 기본
|
|
352
|
+
// 불필요" + 그 리뷰 에이전트가 Claude Code 기본 `/code-review` 와 중복(ADR-089)
|
|
356
353
|
// → superpowers 와 동급 opt-in.
|
|
357
354
|
{
|
|
358
355
|
id: "feature-dev",
|
|
@@ -554,8 +551,8 @@ var EXTERNAL_ASSETS = [
|
|
|
554
551
|
},
|
|
555
552
|
// === dev tools (has_dev_track) ===
|
|
556
553
|
// v26.110.0 (ADR-039) — code-review: /code-review 커맨드 1개 (다중 에이전트 confidence
|
|
557
|
-
// 스코어링 PR 리뷰). 기본 리뷰
|
|
558
|
-
//
|
|
554
|
+
// 스코어링 PR 리뷰). 기본 리뷰 레인(`reviewer`)과 표면 중복 + Claude Code 네이티브
|
|
555
|
+
// /code-review 와 충돌 소지 → opt-in. (ADR-089 로 우리 리뷰 에이전트 2종은 은퇴했다.)
|
|
559
556
|
{
|
|
560
557
|
id: "code-review",
|
|
561
558
|
tier: "official",
|
|
@@ -572,7 +569,7 @@ var EXTERNAL_ASSETS = [
|
|
|
572
569
|
},
|
|
573
570
|
// v26.110.0 (ADR-039) — security-guidance: 매 편집 패턴 경고 + LLM diff 리뷰 (훅 12파일,
|
|
574
571
|
// Python + Agent SDK 의존). 상시 훅 = 매 편집 비용 + 폭발 반경 — 실측 전 기본설치 금지
|
|
575
|
-
// (Context Cost NSM) → opt-in. security-
|
|
572
|
+
// (Context Cost NSM) → opt-in. Claude Code `/security-review`·agentshield ship 게이트와 보완.
|
|
576
573
|
{
|
|
577
574
|
id: "security-guidance",
|
|
578
575
|
tier: "official",
|
|
@@ -1019,19 +1016,42 @@ var DEV_METHOD_SKILL_IDS = [
|
|
|
1019
1016
|
"clear-korean-communication",
|
|
1020
1017
|
"audit-service-gaps",
|
|
1021
1018
|
"multi-persona-review",
|
|
1022
|
-
"recurrence-prevention"
|
|
1023
|
-
"verification-loop"
|
|
1019
|
+
"recurrence-prevention"
|
|
1024
1020
|
];
|
|
1025
1021
|
var INTERNAL_BUNDLED_SKILL_IDS = [
|
|
1026
1022
|
...DEV_METHOD_SKILL_IDS,
|
|
1027
1023
|
"north-star",
|
|
1028
1024
|
"gh-issue-workflow",
|
|
1029
|
-
"
|
|
1025
|
+
"objective-brief",
|
|
1030
1026
|
"audit-harness-fit",
|
|
1031
1027
|
"model-orchestration",
|
|
1032
1028
|
"external-model-consult",
|
|
1033
1029
|
"self-hosted-github-runner",
|
|
1034
|
-
"
|
|
1030
|
+
"natural-korean"
|
|
1031
|
+
];
|
|
1032
|
+
var CONTINUOUS_SKILLS = [
|
|
1033
|
+
{
|
|
1034
|
+
id: "clear-korean-communication",
|
|
1035
|
+
whenToApply: "applies to every answer, report, and approval request \u2014 a decision is presented as AS-IS \u2192 TO-BE from the position of whoever lives with the result; not only at the moment approval is asked for"
|
|
1036
|
+
},
|
|
1037
|
+
{
|
|
1038
|
+
id: "model-orchestration",
|
|
1039
|
+
whenToApply: "when work is delegated, it decides which lane takes the work and how that lane is run"
|
|
1040
|
+
}
|
|
1041
|
+
];
|
|
1042
|
+
var RENAMED_SKILL_IDS = {
|
|
1043
|
+
"task-brief": "objective-brief",
|
|
1044
|
+
"humanize-korean": "natural-korean"
|
|
1045
|
+
};
|
|
1046
|
+
var RETIRED_SKILL_IDS = [
|
|
1047
|
+
"strategic-compact",
|
|
1048
|
+
"continuous-learning-v2",
|
|
1049
|
+
"spec-scaling",
|
|
1050
|
+
// ADR-090 (#452) — 관측 없는 자산 은퇴. 앞 세 종과 같은 경로로 안내한다.
|
|
1051
|
+
"verification-loop",
|
|
1052
|
+
"deep-research",
|
|
1053
|
+
"eval-harness",
|
|
1054
|
+
"agent-introspection-debugging"
|
|
1035
1055
|
];
|
|
1036
1056
|
var TRUST_TIER = Object.fromEntries(
|
|
1037
1057
|
EXTERNAL_ASSETS.map((a) => [a.id, a.tier])
|
|
@@ -1415,9 +1435,34 @@ var HARNESS_ANCHOR_FILE = "CLAUDE-uzys-harness.md";
|
|
|
1415
1435
|
var HARNESS_IMPORT_LINE = `@${HARNESS_ANCHOR_FILE}`;
|
|
1416
1436
|
var IMPORT_MARKER_START = "<!-- uzys-harness:import:start -->";
|
|
1417
1437
|
var IMPORT_MARKER_END = "<!-- uzys-harness:import:end -->";
|
|
1418
|
-
|
|
1419
|
-
|
|
1438
|
+
function renderContinuousSkillsNote(selectedInternalSkills) {
|
|
1439
|
+
const lines = CONTINUOUS_SKILLS.filter((s) => selectedInternalSkills.includes(s.id)).map(
|
|
1440
|
+
(s) => `- \`${s.id}\` \u2014 ${s.whenToApply}.`
|
|
1441
|
+
);
|
|
1442
|
+
if (lines.length === 0) return "";
|
|
1443
|
+
return [
|
|
1444
|
+
"## Skills that apply continuously",
|
|
1445
|
+
"",
|
|
1446
|
+
"These installed skills apply to every response or delegation; no prompt ever looks like their job, so open them from this list:",
|
|
1447
|
+
"",
|
|
1448
|
+
...lines
|
|
1449
|
+
].join("\n");
|
|
1450
|
+
}
|
|
1451
|
+
function withContinuousSkillsNote(scaffold, selectedInternalSkills) {
|
|
1452
|
+
const note = renderContinuousSkillsNote(selectedInternalSkills);
|
|
1453
|
+
return note ? `${scaffold}
|
|
1454
|
+
|
|
1455
|
+
${note}` : scaffold;
|
|
1456
|
+
}
|
|
1457
|
+
function importBlock(continuousSkills) {
|
|
1458
|
+
const note = renderContinuousSkillsNote(continuousSkills);
|
|
1459
|
+
const body = note ? `${HARNESS_IMPORT_LINE}
|
|
1460
|
+
|
|
1461
|
+
${note}` : HARNESS_IMPORT_LINE;
|
|
1462
|
+
return `${IMPORT_MARKER_START}
|
|
1463
|
+
${body}
|
|
1420
1464
|
${IMPORT_MARKER_END}`;
|
|
1465
|
+
}
|
|
1421
1466
|
var TRACK_DISPLAY_NAMES = {
|
|
1422
1467
|
tooling: "Tooling",
|
|
1423
1468
|
"csr-supabase": "CSR Supabase",
|
|
@@ -1511,18 +1556,27 @@ ${renderFillScaffold()}
|
|
|
1511
1556
|
`;
|
|
1512
1557
|
}
|
|
1513
1558
|
function upsertHarnessImport(existing, opts) {
|
|
1559
|
+
const block = importBlock(opts.continuousSkills ?? []);
|
|
1514
1560
|
if (existing === null) {
|
|
1515
1561
|
return `${mergeProjectClaude(opts)}
|
|
1516
|
-
${
|
|
1562
|
+
${block}
|
|
1517
1563
|
`;
|
|
1518
1564
|
}
|
|
1565
|
+
const start = existing.indexOf(IMPORT_MARKER_START);
|
|
1566
|
+
if (start !== -1) {
|
|
1567
|
+
const endAt = existing.indexOf(IMPORT_MARKER_END, start);
|
|
1568
|
+
if (endAt === -1) return existing;
|
|
1569
|
+
const current = existing.slice(start, endAt + IMPORT_MARKER_END.length);
|
|
1570
|
+
if (current === block) return existing;
|
|
1571
|
+
return `${existing.slice(0, start)}${block}${existing.slice(endAt + IMPORT_MARKER_END.length)}`;
|
|
1572
|
+
}
|
|
1519
1573
|
if (hasHarnessImport(existing)) {
|
|
1520
1574
|
return existing;
|
|
1521
1575
|
}
|
|
1522
1576
|
const body = existing.endsWith("\n") ? existing : `${existing}
|
|
1523
1577
|
`;
|
|
1524
1578
|
return `${body}
|
|
1525
|
-
${
|
|
1579
|
+
${block}
|
|
1526
1580
|
`;
|
|
1527
1581
|
}
|
|
1528
1582
|
function stripHarnessImport(text) {
|
|
@@ -1606,24 +1660,29 @@ function resolveRules(spec) {
|
|
|
1606
1660
|
return [...set].sort();
|
|
1607
1661
|
}
|
|
1608
1662
|
var ALL_RULES = resolveRules({ tracks: [...TRACKS] });
|
|
1609
|
-
var CORE_AGENTS = ["reviewer"
|
|
1610
|
-
var
|
|
1611
|
-
var
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
//
|
|
1619
|
-
"
|
|
1663
|
+
var CORE_AGENTS = ["reviewer"];
|
|
1664
|
+
var DEV_AGENTS = ["implementer"];
|
|
1665
|
+
var TRACK_AGENTS = [
|
|
1666
|
+
["data-analyst", "data|full"],
|
|
1667
|
+
["strategist", "executive|full"]
|
|
1668
|
+
];
|
|
1669
|
+
var RETIRED_AGENTS = [
|
|
1670
|
+
{ id: "code-reviewer", instead: "Claude Code \uC758 `/code-review` \uAC00 \uAC19\uC740 \uC77C\uC744 \uD55C\uB2E4" },
|
|
1671
|
+
{ id: "security-reviewer", instead: "Claude Code \uC758 `/security-review` \uAC00 \uAC19\uC740 \uC77C\uC744 \uD55C\uB2E4" },
|
|
1672
|
+
// ADR-090 (#452) — spawn 0 · 결함만 관측된 세 종. **대안을 종마다 적는다**: 한 문구로 뭉치면
|
|
1673
|
+
// 자기 에이전트와 상관없는 대안을 읽게 되고, 그건 "대신 쓸 것을 말한다"의 뜻을 잃는다.
|
|
1674
|
+
{ id: "plan-checker", instead: "`reviewer` \uAC00 \uACC4\uD68D \uBB38\uC11C\uB3C4 \uAC19\uC740 \uACC4\uC57D\uC73C\uB85C \uAC80\uD1A0\uD55C\uB2E4" },
|
|
1675
|
+
{ id: "silent-failure-hunter", instead: "Claude Code \uC758 `/code-review` \uAC00 \uAC19\uC740 \uC77C\uC744 \uD55C\uB2E4" },
|
|
1676
|
+
{ id: "build-error-resolver", instead: "\uBAA8\uB378\uC774 \uAE30\uBCF8\uC73C\uB85C \uD558\uB294 \uC77C\uC774\uB77C \uB300\uCCB4 \uC790\uC0B0\uC774 \uC5C6\uB2E4" }
|
|
1620
1677
|
];
|
|
1678
|
+
var RETIRED_AGENT_IDS = RETIRED_AGENTS.map((a) => a.id);
|
|
1679
|
+
var ALWAYS_HOOKS = ["session-start.sh", "protect-files.sh"];
|
|
1621
1680
|
var COMMON_SKILL_DIRS = [];
|
|
1622
|
-
var COMMON_SKILL_DIRS_ECC = [
|
|
1623
|
-
var MODIFIED_COMMON_SKILL_DIRS = [
|
|
1681
|
+
var COMMON_SKILL_DIRS_ECC = [];
|
|
1682
|
+
var MODIFIED_COMMON_SKILL_DIRS = [];
|
|
1624
1683
|
var DEV_SKILL_DIRS = [];
|
|
1625
|
-
var DEV_SKILL_DIRS_ECC = [
|
|
1626
|
-
var MODIFIED_DEV_SKILL_DIRS = [
|
|
1684
|
+
var DEV_SKILL_DIRS_ECC = [];
|
|
1685
|
+
var MODIFIED_DEV_SKILL_DIRS = [];
|
|
1627
1686
|
var MODIFIED_ECC_SKILL_DIRS = [...MODIFIED_COMMON_SKILL_DIRS, ...MODIFIED_DEV_SKILL_DIRS];
|
|
1628
1687
|
var UI_SKILL_DIRS = ["ui-visual-review"];
|
|
1629
1688
|
var UI_SKILL_DIRS_ECC = ["e2e-testing"];
|
|
@@ -1681,20 +1740,12 @@ function buildManifest(spec) {
|
|
|
1681
1740
|
applies: dev
|
|
1682
1741
|
});
|
|
1683
1742
|
}
|
|
1684
|
-
for (const a of
|
|
1685
|
-
m.push({
|
|
1686
|
-
source: `agents/${a}.md`,
|
|
1687
|
-
target: `.claude/agents/${a}.md`,
|
|
1688
|
-
type: "file",
|
|
1689
|
-
applies: (s) => !s.withEcc
|
|
1690
|
-
});
|
|
1691
|
-
}
|
|
1692
|
-
for (const a of DEV_AGENTS_ECC) {
|
|
1743
|
+
for (const [a, pattern] of TRACK_AGENTS) {
|
|
1693
1744
|
m.push({
|
|
1694
1745
|
source: `agents/${a}.md`,
|
|
1695
1746
|
target: `.claude/agents/${a}.md`,
|
|
1696
1747
|
type: "file",
|
|
1697
|
-
applies: (
|
|
1748
|
+
applies: onTracks(pattern)
|
|
1698
1749
|
});
|
|
1699
1750
|
}
|
|
1700
1751
|
for (const sd of COMMON_SKILL_DIRS) {
|
|
@@ -1721,12 +1772,6 @@ function buildManifest(spec) {
|
|
|
1721
1772
|
applies: all
|
|
1722
1773
|
});
|
|
1723
1774
|
}
|
|
1724
|
-
m.push({
|
|
1725
|
-
source: "skills/spec-scaling",
|
|
1726
|
-
target: ".claude/skills/spec-scaling",
|
|
1727
|
-
type: "dir",
|
|
1728
|
-
applies: all
|
|
1729
|
-
});
|
|
1730
1775
|
for (const sd of ["market-research", "investor-materials", "investor-outreach"]) {
|
|
1731
1776
|
m.push({
|
|
1732
1777
|
source: `skills/${sd}`,
|
|
@@ -1932,7 +1977,12 @@ function residentCost(entries, root = resolveBundleRoot()) {
|
|
|
1932
1977
|
}
|
|
1933
1978
|
}
|
|
1934
1979
|
const harnessAnchor = fileTokens(join3(root, "templates", "CLAUDE.md"));
|
|
1935
|
-
const projectScaffold = estimateTokens(
|
|
1980
|
+
const projectScaffold = estimateTokens(
|
|
1981
|
+
withContinuousSkillsNote(
|
|
1982
|
+
renderFillScaffold(),
|
|
1983
|
+
CONTINUOUS_SKILLS.map((s) => s.id)
|
|
1984
|
+
).trim().length
|
|
1985
|
+
);
|
|
1936
1986
|
const projectClaudeMd = harnessAnchor + projectScaffold;
|
|
1937
1987
|
const claudeMdItems = (harnessAnchor > 0 ? 1 : 0) + (projectScaffold > 0 ? 1 : 0);
|
|
1938
1988
|
return makeResidentCost({
|
|
@@ -2044,6 +2094,9 @@ export {
|
|
|
2044
2094
|
EXTERNAL_ASSETS,
|
|
2045
2095
|
DEV_METHOD_SKILL_IDS,
|
|
2046
2096
|
INTERNAL_BUNDLED_SKILL_IDS,
|
|
2097
|
+
CONTINUOUS_SKILLS,
|
|
2098
|
+
RENAMED_SKILL_IDS,
|
|
2099
|
+
RETIRED_SKILL_IDS,
|
|
2047
2100
|
TRUST_TIER,
|
|
2048
2101
|
assetTrustTier,
|
|
2049
2102
|
isAssetSelected,
|
|
@@ -2074,12 +2127,15 @@ export {
|
|
|
2074
2127
|
legacyInstallLogPath,
|
|
2075
2128
|
HARNESS_ANCHOR_FILE,
|
|
2076
2129
|
HARNESS_IMPORT_LINE,
|
|
2130
|
+
withContinuousSkillsNote,
|
|
2077
2131
|
renderFillScaffold,
|
|
2078
2132
|
upsertHarnessImport,
|
|
2079
2133
|
stripHarnessImport,
|
|
2080
2134
|
buildAssetSpec,
|
|
2081
2135
|
resolveRules,
|
|
2082
2136
|
ALL_RULES,
|
|
2137
|
+
RETIRED_AGENTS,
|
|
2138
|
+
RETIRED_AGENT_IDS,
|
|
2083
2139
|
isCliNeutralTarget,
|
|
2084
2140
|
buildManifest,
|
|
2085
2141
|
CATEGORIES,
|
|
@@ -2092,4 +2148,4 @@ export {
|
|
|
2092
2148
|
formatResidentCostLine,
|
|
2093
2149
|
formatResidentCostBlock
|
|
2094
2150
|
};
|
|
2095
|
-
//# sourceMappingURL=chunk-
|
|
2151
|
+
//# sourceMappingURL=chunk-EQDC2AAU.js.map
|