@uzysjung/agent-harness 26.93.0 → 26.94.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.
@@ -5,7 +5,7 @@ import {
5
5
  EXTERNAL_ASSETS,
6
6
  TRUST_TIER,
7
7
  init_esm_shims
8
- } from "./chunk-43QLTKR4.js";
8
+ } from "./chunk-TL2BU732.js";
9
9
 
10
10
  // src/trust-tier-drift.ts
11
11
  init_esm_shims();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uzysjung/agent-harness",
3
- "version": "26.93.0",
3
+ "version": "26.94.0",
4
4
  "description": "Curate vetted AI-coding skills & plugins by your tech stack — install only what you need, across Claude Code, Codex, OpenCode & Antigravity",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -2,10 +2,11 @@
2
2
  name: model-orchestration
3
3
  description: >-
4
4
  Apply the fixed model-role and thinking-effort policy whenever work is delegated to subagents
5
- or a model/effort choice is made: the orchestrator (top-tier model) does planning, design,
6
- documentation, and synthesis DIRECTLY; V&V and complex work go to Opus at xhigh or above;
7
- simple bounded coding goes to Sonnet at high or above — never delegate below those effort
8
- floors. Use whenever you are about to spawn an Agent/Task/Workflow worker, pick a model for a
5
+ or a model/effort choice is made: the orchestrator (top-tier model) DIRECTLY sets service
6
+ direction, reviews plan/spec documents (with multi-persona-review), improves shipped features,
7
+ and hunts performance/security problems; plan/spec/planning documents are AUTHORED by Opus,
8
+ which also owns core implementation and V&V, at xhigh or above; repetitive implementation and
9
+ E2E tests go to Sonnet at high or above — never delegate below those effort floors. Use whenever you are about to spawn an Agent/Task/Workflow worker, pick a model for a
9
10
  subtask, set a thinking/effort level, assign verification, or hand off orchestration because
10
11
  the current model's quota is exhausted. Trigger on "위임해", "에이전트로 돌려", "오케스트레이션",
11
12
  "모델 역할분담", "어떤 모델로", "effort 얼마로", "thinking level", "서브에이전트", or in English
@@ -16,7 +17,8 @@ description: >-
16
17
 
17
18
  # Model Orchestration Policy
18
19
 
19
- A fixed role split between model tiers, set by the user (2026-07-04). The premise is
20
+ A fixed role split between model tiers, set by the user (2026-07-04, revised 2026-07-07). The
21
+ premise is
20
22
  **quality-over-cost**: delegation floors are set at the effort levels Anthropic itself
21
23
  recommends for intelligence-sensitive work ("start with xhigh for coding and agentic use
22
24
  cases, high as the minimum for most intelligence-sensitive workloads" — official effort
@@ -25,42 +27,50 @@ cost instinct conflict, the policy wins; surface the cost, don't silently downgr
25
27
 
26
28
  ## Role split
27
29
 
28
- | Role | Who | Effort floor | Notes |
29
- |------|-----|--------------|-------|
30
- | **Orchestrator + Product Manager** | Top-tier session model (Fable) | session level | Directs everything. Does planning, design, and documents **itself** — see below |
31
- | **V&V (verification) + complex work** | `opus` | **xhigh** (or `max`) | Verification, review, architecture-heavy or ambiguous implementation |
32
- | **Simple, bounded coding** | `sonnet` | **high** (or above) | Mechanical edits, well-specified single-purpose implementations, research sweeps |
30
+ | Role | Who | Effort floor | Duties |
31
+ |------|-----|--------------|--------|
32
+ | **Orchestrator + Product Manager** | Top-tier session model (Fable) | session level | Directs everything. Directly: 서비스 방향성 수립·논의, 기획/스펙문서 **리뷰**, 기개발 기능 **개선**, 문제점(성능·보안) 발굴 — see below |
33
+ | **Doc author + core builder + V&V** | `opus` | **xhigh** (or `max`) | 기획/스펙/계획 문서 **작성·관리**, 핵심 구현(novel logic · architecture-touching · security surface), V&V |
34
+ | **Repetitive implementation + E2E** | `sonnet` | **high** (or above) | 반복 구현(pattern-following, boilerplate, example-driven migrations), E2E 테스트 작성·실행, research sweeps |
33
35
  | **Orchestrator stand-in** (quota exhausted) | `opus` @ `max` | max | Takes over orchestration via a handoff — see "Orchestrator handoff" |
34
36
 
35
37
  The orchestrator assigns a thinking/effort level **per task** at delegation time. Delegating
36
38
  below a floor is a policy violation, not a tuning choice.
37
39
 
38
- ## Never delegated: planning, design, documents
40
+ ## The orchestrator's own lane: direction, review, judgment
39
41
 
40
- 기획(planning) · 설계(design) · 문서(documentation) are the orchestrator's own work — along
41
- with final synthesis and judgment calls. Why: these artifacts *are* the orchestration. A plan
42
- written by a worker model becomes a plan the orchestrator has to re-derive to trust; the
43
- context that shaped it (user intent, constraints, history) lives in the orchestrator's window
44
- and does not survive a delegation prompt. Delegate execution, not direction.
42
+ The orchestrator authors **direction**, not documents. 서비스 방향성(where the product goes),
43
+ 스펙 리뷰(is this plan right?), 기능 개선(what should get better in what shipped?), and
44
+ 성능·보안 문제 발굴 stay in the orchestrator's window that's where user intent, constraints,
45
+ and history live, and judgment is the one thing a delegation prompt can't carry.
45
46
 
46
- ## Routing test: simple vs complex
47
+ Document *drafting* is delegated to Opus with a direction brief (intent, constraints, decided
48
+ trade-offs). This buys an author≠reviewer split for documents themselves: **Opus writes, the
49
+ orchestrator reviews** — a draft you review with fresh eyes gets scrutiny your own draft never
50
+ would. For 기획/스펙문서 리뷰, run the [[multi-persona-review]] skill (3–5 disjoint persona
51
+ reviewers, severity-ranked synthesis) instead of a single-pass read; the orchestrator arbitrates
52
+ its findings rather than line-editing alone.
53
+
54
+ ## Routing test: repetitive vs core
47
55
 
48
56
  Before routing to any model: **deterministic transforms don't get a model at all.** A rename,
49
57
  a format sweep, a mechanical find-and-replace is `sed`/`grep`/script work — spending model
50
58
  tokens on what code answers deterministically fails the routing test at step zero.
51
59
 
52
- Route to **Sonnet** when ALL of these hold; otherwise it's Opus work:
60
+ Route to **Sonnet** (반복 구현 · E2E) when ALL of these hold; otherwise it's Opus core work:
53
61
 
54
- - The task is **bounded and fully specified** — you can write its acceptance criteria in a few
55
- lines without "use judgment" clauses.
56
- - It's **low-blast-radius**: mechanical edits, a well-scoped function, a research sweep, test
57
- boilerplate. A wrong answer is cheap to detect and redo.
62
+ - The task is **repetitive or example-driven** — a pattern already exists to follow (an
63
+ adjacent implementation, a spec with worked examples, a test suite to extend). Acceptance
64
+ criteria fit in a few lines without "use judgment" clauses.
65
+ - It's **low-blast-radius**: boilerplate, N-th instance of an established shape, E2E test
66
+ authoring/execution, a research sweep. A wrong answer is cheap to detect and redo.
58
67
  - It needs **no architectural or cross-cutting decisions**. Actions carry implicit decisions;
59
68
  a worker making design choices in isolation silently diverges from the system (the classic
60
69
  parallel-agent failure).
61
70
 
62
- Anything with ambiguity, security surface, multi-file coupling, or verification duty routes to
63
- **Opus @ xhigh+**. When unsure, route up the cost delta is smaller than a redo.
71
+ **Core implementation** novel logic, first-of-its-kind shapes, ambiguity, security surface,
72
+ multi-file coupling routes to **Opus @ xhigh+**, as does all verification duty. When unsure,
73
+ route up — the cost delta is smaller than a redo.
64
74
 
65
75
  Parallelism rule of thumb (three independent sources converge on this): **parallel reads are
66
76
  safe, parallel writes are dangerous**. Fan out freely for research/search/review; keep writes
@@ -121,14 +131,20 @@ turn — delegate when the task's value justifies it, not by reflex.
121
131
 
122
132
  ## V&V separation
123
133
 
124
- The implementer never verifies its own work. Two mechanisms, use both when stakes allow:
134
+ The implementer never verifies its own work the *instance* that wrote something never judges
135
+ it. How that plays out per lane:
125
136
 
126
- - **Fresh context**: a verifier that saw the implementation happen inherits the implementer's
137
+ - **Sonnet implemented** (반복 구현/E2E) **Opus @ xhigh verifies** (cross-model + fresh
138
+ context — catches classes of bugs same-model review does not).
139
+ - **Opus implemented** (핵심 구현) → a **fresh Opus instance** verifies: a NEW agent with no
140
+ shared history. A verifier that watched the implementation happen inherits the implementer's
127
141
  mental model and anchors on it — same-session self-review reliably misses the same edge
128
- cases the implementation missed. Spawn verification as a NEW agent with no shared history.
129
- - **Different model**: Sonnet implements → **Opus @ xhigh verifies**. If the orchestrator
130
- implemented something directly, Opus still verifies. Cross-model review catches classes of
131
- bugs same-model review does not.
142
+ cases the implementation missed. Instance separation is what makes "Opus builds AND Opus
143
+ verifies" coherent.
144
+ - **Orchestrator layer on top**: the orchestrator hunts 성능·보안 문제점 in shipped features —
145
+ a second, higher-altitude pass that judges what a diff-level verifier doesn't (product fit,
146
+ systemic risk). Documents get the same split: Opus authors, the orchestrator reviews via
147
+ [[multi-persona-review]].
132
148
 
133
149
  This pairs with, not replaces, deterministic gates (tests, typecheck, CI) — the verifier
134
150
  judges what automation can't: spec fit, missed edge cases, design drift.
@@ -144,8 +160,9 @@ build on. Hand off manually:
144
160
  git snapshot (clean tree + open-PR check), emit the fixed-field resume anchor
145
161
  (current state / verified / what's left / next action).
146
162
  2. The successor session starts on `opus` at `max` (`/model opus` + `/effort max`), reads the
147
- anchor, and continues as orchestrator under this same policy — including doing planning,
148
- design, and documents itself.
163
+ anchor, and continues as orchestrator under this same policy — setting direction, reviewing,
164
+ and hunting problems itself (it can author documents directly too, since it already runs at
165
+ the Opus doc-author tier — no separate delegation needed while it stands in).
149
166
  3. When the top-tier model becomes available again, hand back the same way.
150
167
 
151
168
  ## Anti-patterns
@@ -153,8 +170,10 @@ build on. Hand off manually:
153
170
  | Anti-pattern | Why it's a violation |
154
171
  |---|---|
155
172
  | `Agent(model: "opus")` with session at default effort | Inherits `high` < xhigh floor — use a pinned agent role, Workflow opts, or raise session effort |
156
- | Delegating a plan, spec, or doc draft to a worker | Direction work is the orchestrator's own — delegation loses the shaping context |
157
- | Sonnet on an ambiguous / architectural / security task | Fails the routing test; route up to Opus |
173
+ | Delegating 방향성 수립 or a final judgment call to a worker | Direction is the orchestrator's own — a delegation prompt can't carry the shaping context |
174
+ | Accepting an Opus-authored spec/plan without orchestrator review | Author≠reviewer applies to documents too run [[multi-persona-review]] before accepting |
175
+ | Orchestrator hand-writing full spec/plan drafts itself | Authoring is Opus's lane — brief the direction, delegate the draft, review the result |
176
+ | Sonnet on core work (novel / architectural / security) | Fails the routing test; route up to Opus |
158
177
  | Effort below floor "to save tokens" | The floors ARE the policy; surface cost concerns to the user instead |
159
178
  | Implementer verifying its own diff | Anchoring — verification needs fresh context, prefer a different model |
160
179
  | Two agents writing the same files in parallel | Conflicting implicit decisions; keep writes sequential or worktree-isolated |
@@ -164,9 +183,12 @@ build on. Hand off manually:
164
183
  ## Quick reference
165
184
 
166
185
  ```
167
- 복잡한 구현 / 검증 / 리뷰 → opus @ xhigh (또는 max) pinned role 또는 Workflow opts
168
- 단순 코딩 / 리서치 스윕 sonnet @ high 이상
186
+ 방향성 수립 / 스펙 리뷰(multi-persona-review) / 기능 개선 / 성능·보안 문제발굴
187
+ 오케스트레이터(Fable) 직접
188
+ 기획·스펙·계획 문서 작성·관리 / 핵심 구현 / V&V
189
+ → opus @ xhigh (또는 max) — pinned role 또는 Workflow opts
190
+ 반복 구현 / E2E 테스트 / 리서치 스윕
191
+ → sonnet @ high 이상
169
192
  결정적 변환 (rename·포맷) → 모델 위임 금지 — sed/grep/스크립트 직접
170
- 기획 · 설계 · 문서 · 종합 → 오케스트레이터 직접 (위임 금지)
171
193
  Fable 소진 → compaction-handoff → opus @ max 가 오케스트레이터 대행
172
194
  ```
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../node_modules/tsup/assets/esm_shims.js","../src/external-assets.ts","../src/track-match.ts","../src/categories.ts"],"sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","/**\n * External asset matrix — bash setup-harness.sh L791~1067 등가 데이터.\n *\n * SPEC: docs/specs/cli-rewrite-completeness.md F3\n * Source: setup-harness.sh@911c246~1 (v27.18 직전, bash cutover 전)\n *\n * Track 또는 옵션 조건이 충족되면 install pipeline에서 method를 호출.\n * 실패는 \"warn-skip\" — 종료 시 누락 자산 보고 (OQ1 결정).\n *\n * code-style 800줄 cap 예외: 본 파일은 ~85% 가 큐레이션 자산 카탈로그(43 entry × ~13줄)\n * = 데이터. 로직(interface·condition 평가·shouldInstallAsset)은 소량. 데이터/로직 분리는\n * 별도 사이클(Phase R) 후보 — 현재는 카탈로그 단일 SSOT 가독성 우선. (v26.79.0 기준 802줄)\n */\n\nimport type { Category, Source } from \"./categories.js\";\nimport { hasDevTrack } from \"./track-match.js\";\nimport type { OptionFlags, Track } from \"./types.js\";\n\nexport type ExternalAssetMethod =\n /** `npx skills add <source>[ --skill <name>] --yes` */\n | { kind: \"skill\"; source: string; skill?: string }\n /** `claude plugin marketplace add <marketplace>` + `claude plugin install <pluginId>` */\n | { kind: \"plugin\"; marketplace: string; pluginId: string }\n /**\n * `npm install --save-dev <pkg>@<version>` (global scope 시 `-g`).\n * v26.80.0 — `version` 필수 (pinning). vetting 은 시점 검증인데 unpinned 는 미래 코드\n * 실행 = hijacked vetted repo 직행 구멍 (ADR-021 \"지속 검증\" 주장과 모순). pkg 는 bare\n * 이름 유지 (detectVersion 이 `<npm root>/<pkg>/package.json` 경로로 사용). bump 정책:\n * A2 자산 audit 주기에 Docker 검증 후 갱신 (docs/COMPATIBILITY.md §pinning).\n */\n | { kind: \"npm\"; pkg: string; version: string }\n /** `npx <cmd>@<version> [args...]` — fire-and-forget 실행. v26.80.0 — version 필수 (위와 동일 근거). */\n | { kind: \"npx-run\"; cmd: string; version: string; args?: string[] }\n /** `bash <script> <args...>` — 로컬 스크립트 (예: prune-ecc.sh) */\n | { kind: \"shell-script\"; script: string; args: string[] }\n /**\n * v26.81.0 (ADR-022) — 내부 템플릿 자산. external-installer 가 spawn 하지 않음 —\n * installer Phase 1 의 manifest/transform 게이팅이 `isAssetSelected(key)` 로 읽는다.\n * (이전 OptionFlags.withTauri/withUzysHarness 자리. wizard/CLI 표면은 일반 자산과 동일)\n */\n | {\n kind: \"internal\";\n key:\n | \"tauri-desktop\"\n // v26.87.0 — dev-method skills (uzys 1st-party, repo-bundled templates).\n | \"multi-persona-review\"\n | \"gap-analysis-e2e\"\n | \"ultracode-service-audit\"\n | \"asis-tobe-decision\"\n | \"compaction-handoff\"\n | \"northstar-roadmap\"\n // v26.93.0 — Orchestration & Model Policy (사용자 확정 2026-07-04) 스킬화.\n | \"model-orchestration\";\n };\n\nexport type ExternalAssetCondition =\n /** Track 중 1개 이상이 set와 일치 */\n | { kind: \"any-track\"; tracks: Track[] }\n /** dev track (executive 외 모두) */\n | { kind: \"has-dev-track\" }\n /** OptionFlags 의 특정 플래그 true (잔존 동작 옵션용 — ADR-022 후 자산 토글엔 사용 금지) */\n | { kind: \"option\"; flag: keyof OptionFlags }\n /**\n * v26.81.0 (ADR-022) — 순수 opt-in: condition 매치 항상 false. wizard 체크 또는\n * `--with <id>` 의 forceInclude 로만 설치. 이전의 자산 1:1 OptionFlags(`withBmad` 등\n * 13종)를 대체 — 자산 추가 시 플래그 코드 0곳.\n */\n | { kind: \"opt-in\" };\n\nexport interface ExternalAsset {\n /** 안정 식별자 — 로깅 + 누락 보고 + 테스트에서 사용 */\n id: string;\n /** 사람이 읽는 라벨 (한 줄) */\n description: string;\n /** v26.43.0 — Category-based UI 그룹화. SPEC §3.1. */\n category: Category;\n /** v26.43.0 — 정확한 출처 (GitHub org/user). Step 2 라벨. SPEC §3.5 R6. */\n source: Source;\n condition: ExternalAssetCondition;\n method: ExternalAssetMethod;\n /**\n * v26.79.0 — 검증 Trust Tier. 자산 entry 의 **필수 필드** (SSOT). 이전엔 별도 `TRUST_TIER`\n * Record 였으나 누락(컴파일러 미검출) + stale(좀비 키, v26.76.0 content-creator 제거 전례)\n * drift 가 가능했음 → entry 에 통합: **누락은 컴파일 에러, stale 은 구조적 불가능**.\n * `TRUST_TIER` / `assetTrustTier` 는 이 필드에서 derive (EXTERNAL_ASSETS 정의 뒤).\n * star snapshot(2026-05~06)은 각 entry tier 라인 주석. 실 drift 판정은 trust-tier-drift 가 live fetch.\n */\n tier: TrustTier;\n}\n\n/**\n * v26.71.0 (PRD v26-71) — 검증 Trust Tier. North Star 세 기둥 ②.\n * - official: Anthropic 공식 marketplace + 본 하네스 자체.\n * - vetted: star ≥ 1000 + 활성 유지보수 (D2; 라이선스 미표기/비-OSI 는 출처 신뢰).\n * - experimental: star < 1000 — opt-in + 경고 (pre-check 제외).\n */\nexport type TrustTier = \"official\" | \"vetted\" | \"experimental\";\n\nconst ALL_CSR_SSR_FULL: Track[] = [\n \"csr-supabase\",\n \"csr-fastify\",\n \"csr-fastapi\",\n \"ssr-htmx\",\n \"ssr-nextjs\",\n \"full\",\n];\n\n/** csr-*|ssr-nextjs|full per bash setup-harness.sh L1041 (ssr-htmx 제외 — htmx는 React 미사용). */\nconst CSR_SSR_NEXTJS_FULL: Track[] = [\n \"csr-supabase\",\n \"csr-fastify\",\n \"csr-fastapi\",\n \"ssr-nextjs\",\n \"full\",\n];\n\nconst RAILWAY_TRACKS: Track[] = [\"csr-fastify\", \"csr-fastapi\", \"ssr-htmx\", \"ssr-nextjs\", \"full\"];\n\n/**\n * v0.8.1 — executive-style Track SSOT (reviewer MEDIUM-3 fix).\n *\n * 3 Track 모두 dev/UI baseline 미적용 — `.claude/agents/strategist` + project-claude/<track>.md만.\n * `track-match.ts:hasDevTrack()` 의 negation domain. 사용처:\n * - `shouldInstallAsset` `has-dev-track` 분기 코멘트 (L458)\n * - `tests/external-assets.test.ts` invariant\n *\n * 신규 executive-style Track 추가 시 이 상수만 수정 → 모든 사용처 자동 반영.\n */\nexport const EXECUTIVE_STYLE_TRACKS: ReadonlyArray<Track> = [\n \"executive\",\n \"project-management\",\n \"growth-marketing\",\n];\n\n/**\n * v0.8.1 — `hasDevTrack` SSOT 의 array 표현 (reviewer MEDIUM-3 fix).\n *\n * `track-match.ts:hasDevTrack()` 와 동등 (TRACKS \\ EXECUTIVE_STYLE_TRACKS = 8 Track).\n * `any-track` condition 에 dev set 전체를 인라인하지 않도록 사용.\n */\nexport const DEV_TRACKS: ReadonlyArray<Track> = [\n \"csr-supabase\",\n \"csr-fastify\",\n \"csr-fastapi\",\n \"ssr-htmx\",\n \"ssr-nextjs\",\n \"data\",\n \"tooling\",\n \"full\",\n];\n\n/**\n * v0.8.1 — dev + project-management 합집합 (reviewer MEDIUM-3 fix).\n *\n * `product-skills` (PM 도메인까지 사용) 의 9-Track 인라인 배열을 SSOT 상수로 교체.\n */\nexport const DEV_PLUS_PM_TRACKS: ReadonlyArray<Track> = [...DEV_TRACKS, \"project-management\"];\n\n/**\n * 60 자산 매트릭스 (v26.93.0 model-orchestration internal + v26.92.0 frontend-design official + v26.91.0 marketingskills opt-in + v26.87.0 dev-method skills 6종 internal + v26.86.0 Visual & Media 프레젠테이션 4종 + v26.85.0 5종 + v26.81.0 internal 2종 — ADR-022). bash setup-harness.sh@911c246~1 L791~1067 + 1320~1370 동등.\n *\n * 호출 순서: data → dev-baseline → railway → supabase-cli → impeccable → dev-tools →\n * supabase-skills → react/ui → next → executive → GSD → ToB → ECC.\n */\nexport const EXTERNAL_ASSETS: ReadonlyArray<ExternalAsset> = [\n // === data Track ===\n {\n id: \"polars-K-Dense\",\n tier: \"vetted\", // K-Dense-AI 26k\n description: \"Polars — fast Rust-based DataFrame (pandas alternative, data track)\",\n category: \"data\",\n source: \"K-Dense-AI\",\n condition: { kind: \"any-track\", tracks: [\"data\", \"full\"] },\n method: { kind: \"skill\", source: \"K-Dense-AI/scientific-agent-skills\", skill: \"polars\" },\n // v26.56.0 — description 보강: 트랙 hint + 한 줄 의미\n },\n {\n id: \"dask-K-Dense\",\n tier: \"vetted\", // K-Dense-AI 26k\n description: \"Dask — distributed processing (large DataFrames · cluster, data track)\",\n category: \"data\",\n source: \"K-Dense-AI\",\n condition: { kind: \"any-track\", tracks: [\"data\", \"full\"] },\n method: { kind: \"skill\", source: \"K-Dense-AI/scientific-agent-skills\", skill: \"dask\" },\n },\n {\n id: \"python-resource-management\",\n tier: \"vetted\", // wshobson/agents 36k\n description: \"Python memory · CPU management patterns (wshobson, data track)\",\n category: \"data\",\n source: \"wshobson\",\n condition: { kind: \"any-track\", tracks: [\"data\", \"full\"] },\n method: {\n kind: \"skill\",\n source: \"https://github.com/wshobson/agents\",\n skill: \"python-resource-management\",\n },\n },\n {\n id: \"python-performance-optimization\",\n tier: \"vetted\", // wshobson/agents 36k\n description: \"Python performance optimization (profiling · vectorize, wshobson, data track)\",\n category: \"data\",\n source: \"wshobson\",\n condition: { kind: \"any-track\", tracks: [\"data\", \"full\"] },\n method: {\n kind: \"skill\",\n source: \"https://github.com/wshobson/agents\",\n skill: \"python-performance-optimization\",\n },\n },\n {\n id: \"anthropic-data-plugin\",\n tier: \"official\", // anthropics/knowledge-work-plugins 18k\n description: \"Anthropic data plugin (visualization, SQL exploration)\",\n category: \"data\",\n source: \"anthropics\",\n condition: { kind: \"any-track\", tracks: [\"data\", \"full\"] },\n method: {\n kind: \"plugin\",\n marketplace: \"anthropics/knowledge-work-plugins\",\n pluginId: \"data@knowledge-work-plugins\",\n },\n },\n\n // === Internal template assets (v26.81.0, ADR-022 — 이전 OptionFlags.withTauri/withUzysHarness) ===\n {\n id: \"tauri-desktop\",\n tier: \"official\", // uzys 본 하네스 자체 템플릿\n description: \"Tauri desktop rule template (CSR/full tracks — manifest rule mapping)\",\n category: \"frontend\",\n source: \"uzys\",\n condition: { kind: \"opt-in\" },\n method: { kind: \"internal\", key: \"tauri-desktop\" },\n },\n\n // === Dev-method skills (uzys 1st-party, v26.87.0) ===\n // 본 하네스의 작업 방법론 skill 6종 (repo-bundled templates). tier official, core on dev tracks\n // (has-dev-track → 기본 설치; wizard uncheck / --without <id> 로 제외 가능 — isAssetSelected 게이팅).\n {\n id: \"multi-persona-review\",\n tier: \"official\", // uzys 본 하네스 자체 템플릿\n description:\n \"Multi-persona review — critique one artifact via 3-5 parallel user personas, then synthesize P0/P1/P2 fixes\",\n category: \"dev-tools\",\n source: \"uzys\",\n condition: { kind: \"has-dev-track\" },\n method: { kind: \"internal\", key: \"multi-persona-review\" },\n },\n {\n id: \"gap-analysis-e2e\",\n tier: \"official\", // uzys 본 하네스 자체 템플릿\n description:\n \"Gap analysis E2E — detect north-star / correctness / UX gaps, then benchmark how reference services solved each\",\n category: \"dev-tools\",\n source: \"uzys\",\n condition: { kind: \"has-dev-track\" },\n method: { kind: \"internal\", key: \"gap-analysis-e2e\" },\n },\n {\n id: \"ultracode-service-audit\",\n tier: \"official\", // uzys 본 하네스 자체 템플릿\n description:\n \"Ultracode service audit — multi-agent, adversarially-verified full-service audit across 7 dimensions → milestone roadmap\",\n category: \"dev-tools\",\n source: \"uzys\",\n condition: { kind: \"has-dev-track\" },\n method: { kind: \"internal\", key: \"ultracode-service-audit\" },\n },\n {\n id: \"asis-tobe-decision\",\n tier: \"official\", // uzys 본 하네스 자체 템플릿\n description:\n \"ASIS→TOBE decision — present an A-or-B / approval moment as context → recommendation → option table → AS-IS/TO-BE contrast\",\n category: \"workflow\",\n source: \"uzys\",\n condition: { kind: \"has-dev-track\" },\n method: { kind: \"internal\", key: \"asis-tobe-decision\" },\n },\n {\n id: \"compaction-handoff\",\n tier: \"official\", // uzys 본 하네스 자체 템플릿\n description:\n \"Compaction handoff — persist durable state + git snapshot + resume anchor before a context /compact so nothing is lost\",\n category: \"workflow\",\n source: \"uzys\",\n condition: { kind: \"has-dev-track\" },\n method: { kind: \"internal\", key: \"compaction-handoff\" },\n },\n {\n id: \"northstar-roadmap\",\n tier: \"official\", // uzys 본 하네스 자체 템플릿\n description:\n \"North-star roadmap — measure current state vs the vision doc, then propose a ranked feature backlog persisted to docs/plans + memory\",\n category: \"workflow\",\n source: \"uzys\",\n condition: { kind: \"has-dev-track\" },\n method: { kind: \"internal\", key: \"northstar-roadmap\" },\n },\n // v26.93.0 — 사용자 확정(2026-07-04) Orchestration & Model Policy 스킬화. 위임 시 모델\n // 역할분담(orchestrator 직접: 기획·설계·문서 / opus@xhigh+: V&V·복잡 / sonnet@high+: 단순)\n // + effort floor 강제 3경로 + quota 핸드오프([[compaction-handoff]] 재사용).\n {\n id: \"model-orchestration\",\n tier: \"official\", // uzys 본 하네스 자체 템플릿\n description:\n \"Model orchestration policy — role split (orchestrator plans directly · opus@xhigh+ verifies · sonnet@high+ simple coding) + effort floors + delegation spec + quota handoff\",\n category: \"workflow\",\n source: \"uzys\",\n condition: { kind: \"has-dev-track\" },\n method: { kind: \"internal\", key: \"model-orchestration\" },\n },\n\n // === Option-gated (v26.42.0 — opt-in, BREAKING vs prior has-dev-track auto-install) ===\n {\n id: \"addy-agent-skills\",\n tier: \"vetted\", // addyosmani 47k\n description: \"addy agent-skills (general dev)\",\n category: \"workflow\",\n source: \"addyosmani\",\n condition: { kind: \"opt-in\" },\n method: {\n kind: \"plugin\",\n marketplace: \"addyosmani/agent-skills\",\n pluginId: \"agent-skills@addy-agent-skills\",\n },\n },\n {\n id: \"superpowers\",\n tier: \"official\", // anthropics/claude-plugins-official 공식 배포 (소스 obra 213k)\n // 저자 = obra (190k★ github.com/obra/superpowers). 호스팅 = Anthropic 공식\n // marketplace github.com/anthropics/claude-plugins-official (\"Official,\n // Anthropic-managed directory of high quality Claude Code Plugins\").\n // source/marketplace 분리는 의도적 — source=저자, marketplace=registry.\n description: \"Superpowers — agentic skills framework (obra, Anthropic official marketplace)\",\n category: \"workflow\",\n source: \"obra\",\n condition: { kind: \"opt-in\" },\n method: {\n kind: \"plugin\",\n marketplace: \"anthropics/claude-plugins-official\",\n pluginId: \"superpowers@claude-plugins-official\",\n },\n },\n {\n // v26.75.0 (ADR-021) — wshobson/agents marketplace.json name = \"claude-code-workflows\"\n // (84 plugins). 대표 = full-stack-orchestration. 다른 orchestrator(agent-orchestration/\n // tdd-workflows/ship-mate 등): `claude plugin install <name>@claude-code-workflows`.\n id: \"wshobson-agents\",\n tier: \"vetted\", // wshobson/agents 36k\n description: \"wshobson agents — multi-agent orchestration workflows (full-stack/tdd/review)\",\n category: \"workflow\",\n source: \"wshobson\",\n condition: { kind: \"opt-in\" },\n method: {\n kind: \"plugin\",\n marketplace: \"wshobson/agents\",\n pluginId: \"full-stack-orchestration@claude-code-workflows\",\n },\n },\n {\n // v26.75.0 (ADR-021) — `npm i --save-dev @fission-ai/openspec` 후 `openspec init` 로 슬래시 주입.\n id: \"openspec\",\n tier: \"vetted\", // Fission-AI/OpenSpec 53k\n description: \"OpenSpec — spec-driven brownfield delta workflow (propose → apply → archive)\",\n category: \"workflow\",\n source: \"fission-ai\",\n condition: { kind: \"opt-in\" },\n method: { kind: \"npm\", pkg: \"@fission-ai/openspec\", version: \"1.4.1\" },\n },\n {\n // v26.75.0 (ADR-021) — 비대화형 install. v26.75.1: `--directory .` 누락 시 \"Installation\n // directory\" 프롬프트에서 hang (Docker realcli 검출). cwd(=project) 기준 `.` 지정으로 봉합.\n id: \"bmad-method\",\n tier: \"vetted\", // bmad-code-org/BMAD-METHOD 48k\n description: \"BMAD-METHOD — multi-agent agile workflow (PM/Architect/Dev, 12+ agents)\",\n category: \"workflow\",\n source: \"bmad-code-org\",\n condition: { kind: \"opt-in\" },\n method: {\n kind: \"npx-run\",\n cmd: \"bmad-method\",\n version: \"6.9.0\",\n args: [\"install\", \"--directory\", \".\", \"--tools\", \"claude-code\", \"--yes\"],\n },\n },\n\n // === Railway (csr-fastify|csr-fastapi|ssr-*|full) ===\n // v0.6.3 — railway-plugin entry 제거. railwayapp/railway-plugin repo 자체 존재 안 함\n // (404 Not Found). 공식 docs (https://docs.railway.com/ai/claude-code-plugin) 형식은\n // marketplace add `railwayapp/railway-skills` + plugin install `railway@railway-skills`만.\n // → 아래 railway-skills entry로 단일화.\n {\n id: \"railway-skills\",\n tier: \"experimental\", // railwayapp/railway-skills 268\n description: \"Railway agent-skills (deploy + project/service/env management)\",\n category: \"backend\",\n source: \"railwayapp\",\n condition: { kind: \"any-track\", tracks: RAILWAY_TRACKS },\n method: {\n kind: \"plugin\",\n marketplace: \"railwayapp/railway-skills\",\n pluginId: \"railway@railway-skills\",\n },\n },\n\n // === csr-supabase|full CLI ===\n {\n id: \"vercel-cli\",\n tier: \"vetted\", // vercel/vercel 15k\n description: \"Vercel CLI (npm)\",\n category: \"backend\",\n source: \"vercel\",\n condition: { kind: \"any-track\", tracks: [\"csr-supabase\", \"full\"] },\n method: { kind: \"npm\", pkg: \"vercel\", version: \"54.17.3\" },\n },\n {\n id: \"netlify-cli\",\n tier: \"vetted\", // netlify/cli 1.9k\n description: \"Netlify CLI (npm)\",\n category: \"backend\",\n source: \"netlify\",\n condition: { kind: \"any-track\", tracks: [\"csr-supabase\", \"full\"] },\n method: { kind: \"npm\", pkg: \"netlify-cli\", version: \"26.1.0\" },\n },\n {\n id: \"supabase-cli\",\n tier: \"vetted\", // supabase 103k\n description: \"Supabase CLI (npm) — first 'supabase login' requires OAuth\",\n category: \"backend\",\n source: \"supabase\",\n condition: { kind: \"any-track\", tracks: [\"csr-supabase\", \"full\"] },\n method: { kind: \"npm\", pkg: \"supabase\", version: \"2.108.0\" },\n },\n\n // === UI tracks (csr-*|ssr-*|full) ===\n {\n id: \"impeccable\",\n tier: \"vetted\", // pbakaus 31k\n description:\n \"Impeccable — UI design guide + visual consistency review (pbakaus, single-skill repo)\",\n category: \"frontend\",\n source: \"pbakaus\",\n condition: { kind: \"any-track\", tracks: ALL_CSR_SSR_FULL },\n // v26.54.1 — skills cli 1.5.7 부터 `--skill <name>` 명시 필수 (single-skill repo 도)\n method: { kind: \"skill\", source: \"pbakaus/impeccable\", skill: \"impeccable\" },\n },\n // v26.92.0 — frontend-design (Anthropic official, claude-plugins-official 984.5K installs).\n // impeccable(생성↔리뷰 짝)의 official 보완재 — frontend-design=distinctive UI 코드 생성,\n // impeccable=일관성 리뷰. 사용자 결정: has-dev-track 기본추천 (impeccable=UI 트랙보다\n // 넓게 — 모든 개발 트랙, executive 제외). category=frontend (UI 자산, wizard 그룹).\n // repoForAsset=marketplace(anthropics/claude-plugins-official); official tier=drift 제외.\n {\n id: \"frontend-design\",\n tier: \"official\", // anthropics/claude-plugins-official (Anthropic 저자, 984.5K installs)\n description:\n \"frontend-design — distinctive production-grade UI generation (Anthropic official, avoids generic AI aesthetics)\",\n category: \"frontend\",\n source: \"anthropics\",\n condition: { kind: \"has-dev-track\" },\n method: {\n kind: \"plugin\",\n marketplace: \"anthropics/claude-plugins-official\",\n pluginId: \"frontend-design@claude-plugins-official\",\n },\n },\n\n // === dev tools (has_dev_track) ===\n {\n id: \"playwright-skill\",\n tier: \"experimental\", // testdino-hq/playwright-skill 264\n description: \"Playwright — browser automation E2E test authoring guide (testdino-hq)\",\n category: \"dev-tools\",\n source: \"testdino-hq\",\n condition: { kind: \"has-dev-track\" },\n // v26.54.1 — skills cli 1.5.7 부터 `--skill <name>` 명시 필수\n method: {\n kind: \"skill\",\n source: \"testdino-hq/playwright-skill\",\n skill: \"playwright-skill\",\n },\n },\n {\n id: \"find-skills\",\n tier: \"vetted\", // vercel-labs/skills 20k (license none — 출처 신뢰)\n description: \"find-skills — search · rank all installed skills (vercel-labs, all dev tracks)\",\n category: \"dev-tools\",\n source: \"vercel-labs\",\n condition: { kind: \"has-dev-track\" },\n method: { kind: \"skill\", source: \"vercel-labs/skills\", skill: \"find-skills\" },\n },\n {\n id: \"agent-browser\",\n tier: \"vetted\", // vercel-labs/agent-browser 34k\n description:\n \"agent-browser — agent-friendly Playwright wrapper (screenshot · DOM search CLI, dev tracks)\",\n // v26.78.0 — Understanding 으로 재분류: 웹 지각(screenshot·DOM). 영상/코드 지각과 같은 축.\n category: \"understanding\",\n source: \"vercel-labs\",\n condition: { kind: \"has-dev-track\" },\n method: { kind: \"npm\", pkg: \"agent-browser\", version: \"0.31.0\" },\n },\n // v26.78.0 — Understanding 신규 3종 (plugin, opt-in). 에이전트 인지 증강: 영상·코드 지각 + 메모리.\n {\n id: \"claude-video\",\n tier: \"vetted\", // bradautomates/claude-video 1.8k\n description:\n \"Claude Video — /watch downloads any video, extracts frames + transcript so Claude can see + hear it (yt-dlp/ffmpeg auto on first run)\",\n category: \"understanding\",\n source: \"bradautomates\",\n condition: { kind: \"opt-in\" },\n method: {\n kind: \"plugin\",\n marketplace: \"bradautomates/claude-video\",\n pluginId: \"watch@claude-video\",\n },\n },\n {\n id: \"understand-anything\",\n tier: \"vetted\", // Lum1104/Understand-Anything 53k\n description:\n \"Understand Anything — multi-agent pipeline builds an interactive knowledge graph of your codebase (files/functions/deps) to explore + query\",\n category: \"understanding\",\n source: \"Lum1104\",\n condition: { kind: \"opt-in\" },\n method: {\n kind: \"plugin\",\n marketplace: \"Lum1104/Understand-Anything\",\n pluginId: \"understand-anything@understand-anything\",\n },\n },\n {\n id: \"agentmemory\",\n tier: \"vetted\", // rohitg00/agentmemory 21k\n description:\n \"AgentMemory — persistent memory runtime; plugin auto-wires MCP (53 tools) + hooks + skills. Runtime server: npx @agentmemory/agentmemory\",\n category: \"understanding\",\n source: \"rohitg00\",\n condition: { kind: \"opt-in\" },\n method: {\n kind: \"plugin\",\n marketplace: \"rohitg00/agentmemory\",\n pluginId: \"agentmemory@agentmemory\",\n },\n },\n\n // === Visual & Media (v26.85.0) — 코드-퍼스트 제작 자산. 전부 opt-in. ===\n // Docker 실설치 검증 PASS (실 claude 2.1.177): plugin install / npx skills add resolve 확인.\n {\n id: \"frontend-slides\",\n tier: \"vetted\", // zarazhangrui/frontend-slides 21k\n description:\n \"frontend-slides — dependency-free HTML slide decks (presets · templates · PPTX→HTML · PDF export)\",\n category: \"visual-media\",\n source: \"zarazhangrui\",\n condition: { kind: \"opt-in\" },\n method: {\n kind: \"plugin\",\n marketplace: \"zarazhangrui/frontend-slides\",\n pluginId: \"frontend-slides@frontend-slides\",\n },\n },\n {\n id: \"marp-slide\",\n tier: \"vetted\", // softaworks/agent-toolkit 2k\n description: \"marp-slide — Marp Markdown slides (7 themes · PPTX/PDF export)\",\n category: \"visual-media\",\n source: \"softaworks\",\n // softaworks plugin dir 는 plugin.json 부재 → skill 경로가 안전 (Docker 검증).\n condition: { kind: \"opt-in\" },\n method: { kind: \"skill\", source: \"softaworks/agent-toolkit\", skill: \"marp-slide\" },\n },\n {\n id: \"mermaid-diagrams\",\n tier: \"vetted\", // softaworks/agent-toolkit 2k\n description:\n \"mermaid-diagrams — Mermaid flow/sequence/ER/state diagram authoring (code · docs)\",\n category: \"visual-media\",\n source: \"softaworks\",\n condition: { kind: \"opt-in\" },\n method: { kind: \"skill\", source: \"softaworks/agent-toolkit\", skill: \"mermaid-diagrams\" },\n },\n {\n id: \"gsap-skills\",\n tier: \"vetted\", // greensock/gsap-skills 9k (GSAP 본가 공식)\n description:\n \"GSAP skills — official GreenSock motion/scroll animation guide (8 skills: timeline · scrolltrigger · react)\",\n category: \"visual-media\",\n source: \"greensock\",\n condition: { kind: \"opt-in\" },\n method: {\n kind: \"plugin\",\n marketplace: \"greensock/gsap-skills\",\n pluginId: \"gsap-skills@gsap-skills\",\n },\n },\n {\n // remotion: star 3.6k → vetted (star 기반 tier SSOT + trust-tier-drift CI 정합, 사용자 결정 2026-06-13).\n // 코어 BUSL(Business Source License) — opt-in + description 고지로 신중 취급 (경고 배지 대신).\n // --skill 값 = remotion-best-practices (dir `remotion` ≠ frontmatter name, Docker 실측 확정).\n id: \"remotion\",\n tier: \"vetted\", // remotion-dev/skills 3.6k (license none — 출처 신뢰; 코어 BUSL 고지)\n description:\n \"Remotion — programmatic MP4 video from React components (data-driven). Core license = BUSL\",\n category: \"visual-media\",\n source: \"remotion-dev\",\n condition: { kind: \"opt-in\" },\n method: { kind: \"skill\", source: \"remotion-dev/skills\", skill: \"remotion-best-practices\" },\n },\n // Issue #176 — 프레젠테이션 생성 스택 4종 (Docker 실설치 4/4 PASS: skills@1.5.11 add <src> --agent claude-code --skill, 2026-06-20).\n {\n id: \"ppt-master\",\n tier: \"vetted\", // hugohe3/ppt-master 29k\n description:\n \"ppt-master — editable PowerPoint (.pptx) from any document (native shapes · speaker notes · custom .pptx template)\",\n category: \"visual-media\",\n source: \"hugohe3\",\n condition: { kind: \"opt-in\" },\n method: { kind: \"skill\", source: \"hugohe3/ppt-master\", skill: \"ppt-master\" },\n },\n {\n // deer-flow 72k 거대 harness지만 --skill 로 ppt-generation 단일 skill만 설치 (skills/public/ 중첩, Docker 확인).\n id: \"ppt-generation\",\n tier: \"vetted\", // bytedance/deer-flow 72k\n description:\n \"ppt-generation — PPTX by generating an image per slide and composing into PowerPoint (deer-flow skill)\",\n category: \"visual-media\",\n source: \"bytedance\",\n condition: { kind: \"opt-in\" },\n method: { kind: \"skill\", source: \"bytedance/deer-flow\", skill: \"ppt-generation\" },\n },\n {\n id: \"web-video-presentation\",\n tier: \"vetted\", // ConardLi/garden-skills 8.4k\n description:\n \"web-video-presentation — click-driven 16:9 web decks that look like video (optional TTS narration; garden-skills)\",\n category: \"visual-media\",\n source: \"ConardLi\",\n condition: { kind: \"opt-in\" },\n method: { kind: \"skill\", source: \"ConardLi/garden-skills\", skill: \"web-video-presentation\" },\n },\n {\n id: \"revealjs\",\n tier: \"experimental\", // ryanbbrown/revealjs-skill 347 (<1000 → experimental, opt-in + 경고)\n description:\n \"reveal.js — polished HTML presentations (themes · multi-column · code highlight · speaker notes, no build step)\",\n category: \"visual-media\",\n source: \"ryanbbrown\",\n condition: { kind: \"opt-in\" },\n method: { kind: \"skill\", source: \"ryanbbrown/revealjs-skill\", skill: \"revealjs\" },\n },\n {\n id: \"architecture-decision-record\",\n tier: \"experimental\", // yonatangross/orchestkit 179\n description:\n \"ADR — Architecture Decision Record template + status flow (orchestkit, one of 80+ skills)\",\n category: \"dev-tools\",\n source: \"yonatangross\",\n condition: { kind: \"has-dev-track\" },\n method: {\n kind: \"skill\",\n source: \"yonatangross/orchestkit\",\n skill: \"architecture-decision-record\",\n },\n },\n\n // === Supabase agent-skills (csr-supabase|full) ===\n {\n id: \"supabase-agent-skills\",\n tier: \"vetted\", // supabase/agent-skills 2.2k\n description:\n \"Supabase — RLS · auth · edge function · realtime guide (csr-supabase · full tracks)\",\n category: \"backend\",\n source: \"supabase\",\n condition: { kind: \"any-track\", tracks: [\"csr-supabase\", \"full\"] },\n method: {\n kind: \"plugin\",\n marketplace: \"supabase/agent-skills\",\n pluginId: \"supabase@supabase-agent-skills\",\n },\n },\n {\n id: \"postgres-best-practices\",\n tier: \"vetted\", // supabase/agent-skills 2.2k\n description:\n \"Postgres best practices — schema · index · query patterns (csr-supabase · full tracks)\",\n category: \"backend\",\n source: \"supabase\",\n condition: { kind: \"any-track\", tracks: [\"csr-supabase\", \"full\"] },\n method: {\n kind: \"plugin\",\n marketplace: \"supabase/agent-skills\",\n pluginId: \"postgres-best-practices@supabase-agent-skills\",\n },\n },\n\n // === React + Next UI tracks ===\n // v0.6.3 — vercel-labs/agent-skills source는 short form 안 됨. full HTTPS URL 필요.\n // 사용자 확인 형식: `npx skills add https://github.com/vercel-labs/agent-skills --skill <name>`.\n {\n id: \"react-best-practices\",\n tier: \"vetted\", // vercel-labs/agent-skills 27k (license none — 출처 신뢰)\n description:\n \"React best practices — Vercel's hook · perf · component patterns (CSR · SSR · Next tracks)\",\n category: \"frontend\",\n source: \"vercel-labs\",\n condition: { kind: \"any-track\", tracks: CSR_SSR_NEXTJS_FULL },\n method: {\n kind: \"skill\",\n source: \"https://github.com/vercel-labs/agent-skills\",\n // v0.6.5 — skills.sh registry name. GitHub dir 이름(react-best-practices)과 다름.\n // skills.sh: 대부분 vercel- prefix (web-design-guidelines, deploy-to-vercel만 예외).\n skill: \"vercel-react-best-practices\",\n },\n },\n {\n id: \"shadcn-ui\",\n tier: \"vetted\", // shadcn-ui/ui 115k\n description: \"shadcn/ui — Radix-based React component copy + Tailwind theme (shadcn official)\",\n category: \"frontend\",\n source: \"shadcn-ui\",\n condition: { kind: \"any-track\", tracks: CSR_SSR_NEXTJS_FULL },\n // v26.54.1 — shadcn/ui repo 의 실제 skill 이름은 `shadcn` (자산 id 와 다름).\n method: { kind: \"skill\", source: \"shadcn/ui\", skill: \"shadcn\" },\n },\n {\n id: \"web-design-guidelines\",\n tier: \"vetted\", // vercel-labs/agent-skills 27k (license none — 출처 신뢰)\n description:\n \"Web design guidelines — Vercel's visual hierarchy · color · spacing (CSR · SSR · Next tracks)\",\n category: \"frontend\",\n source: \"vercel-labs\",\n condition: { kind: \"any-track\", tracks: CSR_SSR_NEXTJS_FULL },\n method: {\n kind: \"skill\",\n source: \"https://github.com/vercel-labs/agent-skills\",\n skill: \"web-design-guidelines\",\n },\n },\n {\n id: \"next-skills\",\n tier: \"experimental\", // vercel-labs/next-skills 895\n description:\n \"Next-skills — Next.js App Router · Server Action patterns (ssr-nextjs · full tracks)\",\n category: \"backend\",\n source: \"vercel-labs\",\n condition: { kind: \"any-track\", tracks: [\"ssr-nextjs\", \"full\"] },\n method: { kind: \"skill\", source: \"vercel-labs/next-skills\" },\n },\n\n // === Executive tracks ===\n {\n id: \"anthropic-document-skills\",\n tier: \"official\", // anthropics/skills 144k\n description: \"Anthropic document-skills (pptx/docx/xlsx/pdf)\",\n category: \"business\",\n source: \"anthropics\",\n condition: { kind: \"any-track\", tracks: [\"executive\", \"full\"] },\n method: {\n kind: \"plugin\",\n marketplace: \"anthropics/skills\",\n pluginId: \"document-skills@anthropic-agent-skills\",\n },\n },\n // alirezarezvani/claude-skills marketplace (v2.3.0) — 2026-04-25 통합 갱신.\n // 기존 alirezarezvani/c-level-skills + alirezarezvani/finance-skills 별도 marketplace\n // → 통합된 alirezarezvani/claude-skills marketplace (claude-code-skills 이름)로 이동.\n {\n id: \"c-level-skills\",\n tier: \"vetted\", // alirezarezvani 16k\n description: \"c-level-skills (claude-code-skills, 28 advisory)\",\n category: \"business\",\n source: \"alirezarezvani\",\n condition: { kind: \"any-track\", tracks: [\"executive\", \"full\"] },\n method: {\n kind: \"plugin\",\n marketplace: \"alirezarezvani/claude-skills\",\n pluginId: \"c-level-skills@claude-code-skills\",\n },\n },\n {\n id: \"business-growth-skills\",\n tier: \"vetted\", // alirezarezvani 16k\n description: \"business-growth-skills (4 — customer success, sales eng, revops, contract)\",\n category: \"business\",\n source: \"alirezarezvani\",\n // v0.5.0 — growth-marketing Track에서도 재사용. 합집합 조건.\n condition: { kind: \"any-track\", tracks: [\"executive\", \"full\", \"growth-marketing\"] },\n method: {\n kind: \"plugin\",\n marketplace: \"alirezarezvani/claude-skills\",\n pluginId: \"business-growth-skills@claude-code-skills\",\n },\n },\n {\n id: \"finance-skills\",\n tier: \"vetted\", // alirezarezvani 16k\n description: \"finance-skills (3 — financial analyst, SaaS metrics, investment advisor)\",\n category: \"business\",\n source: \"alirezarezvani\",\n condition: { kind: \"any-track\", tracks: [\"executive\", \"full\"] },\n method: {\n kind: \"plugin\",\n marketplace: \"alirezarezvani/claude-skills\",\n pluginId: \"finance-skills@claude-code-skills\",\n },\n },\n\n // === Project Management Track (v0.5.0) ===\n // SPEC docs/specs/new-tracks-pm-growth.md §3.5 — pm-skills 4/4.\n {\n id: \"pm-skills\",\n tier: \"vetted\", // alirezarezvani 16k\n description:\n \"pm-skills (6 — senior PM, scrum master, Jira/Confluence/Atlassian admin, template creator)\",\n category: \"business\",\n source: \"alirezarezvani\",\n condition: { kind: \"any-track\", tracks: [\"project-management\"] },\n method: {\n kind: \"plugin\",\n marketplace: \"alirezarezvani/claude-skills\",\n pluginId: \"pm-skills@claude-code-skills\",\n },\n },\n // SPEC §3.5 — product-skills: has-dev-track + project-management 합집합 (executive/growth-marketing 제외).\n // v0.8.1 — DEV_PLUS_PM_TRACKS 상수로 SSOT 통일 (reviewer MEDIUM-3 fix).\n {\n id: \"product-skills\",\n tier: \"vetted\", // alirezarezvani 16k\n description: \"product-skills (15 — RICE, PRD, agile PO, UX research, SaaS scaffolder ...)\",\n category: \"dev-tools\",\n source: \"alirezarezvani\",\n condition: { kind: \"any-track\", tracks: [...DEV_PLUS_PM_TRACKS] },\n method: {\n kind: \"plugin\",\n marketplace: \"alirezarezvani/claude-skills\",\n pluginId: \"product-skills@claude-code-skills\",\n },\n },\n\n // === Growth Marketing Track (v0.5.0) ===\n // SPEC docs/specs/new-tracks-pm-growth.md §3.5 — 4 entries 모두 4/4.\n {\n id: \"marketing-skills\",\n tier: \"vetted\", // alirezarezvani 16k\n description:\n \"marketing-skills (44 — content/SEO/CRO/channels/growth/intelligence/sales/twitter)\",\n category: \"business\",\n source: \"alirezarezvani\",\n condition: { kind: \"any-track\", tracks: [\"growth-marketing\"] },\n method: {\n kind: \"plugin\",\n marketplace: \"alirezarezvani/claude-skills\",\n pluginId: \"marketing-skills@claude-code-skills\",\n },\n },\n // v26.91.0 — coreyhaines31/marketingskills (35k★, MIT, plugin v2.5.1). 위 alirezarezvani\n // marketing-skills(16k) 와 병존 — id 구분(marketingskills ≠ marketing-skills). opt-in =\n // growth-marketing 외 전 트랙에서도 wizard 토글 + `--with marketingskills` 로 설치 가능\n // (\"SEO 는 일반 개발에도 활용\" 충족: dev 트랙에서 본 번들 토글). 45 스킬 중 SEO 7종\n // (seo-audit/schema/ai-seo/site-architecture/programmatic-seo/content/aso)은 상호참조\n // (product-marketing 우선 + seo-audit↔schema↔ai-seo)라 부분 추출 시 포인터 깨짐 → 번들\n // 통째 설치만 정합. repoForAsset = marketplace(coreyhaines31/marketingskills) → drift 라이브.\n {\n id: \"marketingskills\",\n tier: \"vetted\", // coreyhaines31 35k\n description: \"marketingskills (45 — CRO/copywriting/SEO/AI-SEO/ads/growth, coreyhaines31 35k★)\",\n category: \"business\",\n source: \"coreyhaines31\",\n condition: { kind: \"opt-in\" },\n method: {\n kind: \"plugin\",\n marketplace: \"coreyhaines31/marketingskills\",\n pluginId: \"marketing-skills@marketingskills\",\n },\n },\n // v26.76.0 — content-creator / demand-gen 제거: alirezarezvani/claude-skills marketplace.json 에\n // 해당 plugin 부재(Docker 실설치 검출, exit 1). 거짓 광고 0건 원칙(Promise=Implementation).\n // growth-marketing 트랙은 business-growth-skills + marketing-skills + research-summarizer 유지.\n {\n id: \"research-summarizer\",\n tier: \"vetted\", // alirezarezvani 16k\n description: \"research-summarizer (market research summarization)\",\n category: \"business\",\n source: \"alirezarezvani\",\n condition: { kind: \"any-track\", tracks: [\"growth-marketing\"] },\n method: {\n kind: \"plugin\",\n marketplace: \"alirezarezvani/claude-skills\",\n pluginId: \"research-summarizer@claude-code-skills\",\n },\n },\n\n // === Code-quality enforcement (has-dev-track, v0.5.0) ===\n // SPEC §3.5 — karpathy-coder 4/4. CLAUDE.md P1-P4 선언적 원칙의 검출 도구 layer.\n // 4 Python tools (stdlib only) + reviewer agent + /karpathy-check + pre-commit hook.\n {\n id: \"karpathy-coder\",\n tier: \"vetted\", // alirezarezvani 16k\n description:\n \"karpathy-coder (4 Python tool + reviewer agent + /karpathy-check + pre-commit hook)\",\n category: \"dev-tools\",\n source: \"alirezarezvani\",\n condition: { kind: \"has-dev-track\" },\n method: {\n kind: \"plugin\",\n marketplace: \"alirezarezvani/claude-skills\",\n pluginId: \"karpathy-coder@claude-code-skills\",\n },\n },\n\n // === Option-gated ===\n {\n id: \"gsd-orchestrator\",\n tier: \"vetted\", // gsd-build/get-shit-done 63k\n description: \"GSD orchestrator (npx get-shit-done-cc)\",\n category: \"workflow\",\n source: \"get-shit-done-cc\",\n condition: { kind: \"opt-in\" },\n method: { kind: \"npx-run\", cmd: \"get-shit-done-cc\", version: \"1.42.3\" },\n },\n {\n // v26.39.2 fix — marketplace name = \"trailofbits\" (NOT \"trailofbits-skills\") +\n // \"trailofbits-skills\" plugin 자체가 존재하지 않음. marketplace 안에 14+ 개별 plugin.\n // 단일 대표 plugin = `differential-review` (코드 변경 보안 리뷰, 가장 보편).\n // 추가 plugin 원하는 사용자는: `claude plugin install <name>@trailofbits` (예: audit-context-building)\n id: \"trailofbits-skills\",\n tier: \"vetted\", // trailofbits/skills 5.5k (CC-BY-SA — 출처 신뢰)\n description: \"Trail of Bits differential-review plugin (security-focused code review)\",\n category: \"dev-tools\",\n source: \"trailofbits\",\n condition: { kind: \"opt-in\" },\n method: {\n kind: \"plugin\",\n marketplace: \"trailofbits/skills\",\n pluginId: \"differential-review@trailofbits\",\n },\n },\n {\n id: \"ecc-plugin\",\n tier: \"vetted\", // affaan-m/everything-claude-code 199k\n description: \"ECC — 60 agents · 230 skills · 75 commands. Affaan's hackathon package\",\n category: \"ecc-suite\",\n source: \"affaan-m\",\n condition: { kind: \"opt-in\" },\n // v26.54.1 — upstream marketplace.json 의 name 은 \"ecc\" (plugin name 도 \"ecc\").\n // 기존 매핑 `everything-claude-code@everything-claude-code` 는 marketplace 가\n // 그 이름으로 등록되던 옛 버전 기준. fresh install 에서는 \"Plugin not found\" 발생.\n method: {\n kind: \"plugin\",\n marketplace: \"affaan-m/everything-claude-code\",\n pluginId: \"ecc@ecc\",\n },\n },\n {\n id: \"ecc-prune\",\n tier: \"official\", // uzys 본 하네스 자체\n description:\n \"ECC prune (drop items beyond curated 89 KEEP → copy to .claude/local-plugins/ecc/)\",\n category: \"ecc-suite\",\n source: \"uzys\",\n condition: { kind: \"option\", flag: \"withPrune\" },\n method: {\n kind: \"shell-script\",\n script: \"scripts/prune-ecc.sh\",\n args: [\"--apply\", \"--force\"],\n },\n },\n];\n\n/**\n * v26.87.0 — dev-method skill ids (uzys 1st-party, internal templates). installer 의\n * `selectedInternalSkills` 계산 + manifest copy 게이팅 + 테스트가 공유하는 SSOT.\n * 각 id 는 method.kind===\"internal\" 이며 `templates/skills/<id>/SKILL.md` 로 번들된다.\n */\nexport const DEV_METHOD_SKILL_IDS: ReadonlyArray<string> = [\n \"multi-persona-review\",\n \"gap-analysis-e2e\",\n \"ultracode-service-audit\",\n \"asis-tobe-decision\",\n \"compaction-handoff\",\n \"northstar-roadmap\",\n // v26.93.0 — Orchestration & Model Policy.\n \"model-orchestration\",\n];\n\n/**\n * v26.79.0 — `TRUST_TIER` 는 EXTERNAL_ASSETS.tier 에서 derive (단일 출처). 별도 Record 유지 시\n * 누락/stale drift 가능 → 제거. 기존 소비자(prompts.ts·gen-compatibility·trust-tier-drift)는\n * 이 derived map 을 그대로 import. id 키는 각 자산 id 와 1:1 (자산 추가 시 자동 반영).\n */\nexport const TRUST_TIER: Record<string, TrustTier> = Object.fromEntries(\n EXTERNAL_ASSETS.map((a) => [a.id, a.tier]),\n);\n\n/** 자산의 검증 tier. 미분류(catalog 외 id)는 보수적으로 experimental. */\nexport function assetTrustTier(assetId: string): TrustTier {\n return TRUST_TIER[assetId] ?? \"experimental\";\n}\n\n/**\n * v26.47.0 — User override of preset/option condition (Phase C full, SPEC §3.1).\n * - `forceInclude`: condition 무관 강제 포함 (사용자가 명시 추가)\n * - `forceExclude`: condition 무관 강제 제외 (사용자가 추천 ✓ 풀음)\n *\n * 우선순위: `forceExclude` > `forceInclude` > `condition`.\n */\nexport interface UserOverride {\n forceInclude: ReadonlyArray<string>;\n forceExclude: ReadonlyArray<string>;\n}\n\n/**\n * 조건 평가 — 주어진 spec(tracks + options + userOverride)에서 자산이 설치 대상인지 판정.\n */\nexport function shouldInstallAsset(\n asset: ExternalAsset,\n ctx: {\n tracks: ReadonlyArray<Track>;\n options: OptionFlags;\n userOverride?: UserOverride;\n },\n): boolean {\n // v26.47.0 — userOverride 우선순위: forceExclude > forceInclude > condition.\n if (ctx.userOverride?.forceExclude.includes(asset.id)) return false;\n if (ctx.userOverride?.forceInclude.includes(asset.id)) return true;\n // v26.71.1 — experimental(T3) opt-in only (PRD v26-71 R6/AC4). condition 매치만으론 미설치.\n // --with <id> (forceInclude) 또는 interactive 체크(→forceInclude) 시에만 설치 — 선택권 유지(강제 차단 아님).\n // v26.71.0 은 recommendedExternalAssets(pre-check)에만 제외 적용 → 비대화형/미체크 install 경로 누락 버그 fix.\n // 게이트는 명시 분류(TRUST_TIER[id])만 본다 — assetTrustTier()의 unknown→experimental default 는\n // DISPLAY(경고 배지)용이며 설치 게이트엔 미적용. 실 자산 전부 매핑은 \"no-missing\" 테스트가 강제(AC1).\n if (TRUST_TIER[asset.id] === \"experimental\") return false;\n return matchesCondition(asset, ctx);\n}\n\n/**\n * Track/option condition 매치만 평가 (tier·override 무관). shouldInstallAsset 의 조건절 +\n * experimentalOptInCandidates 의 \"조건은 맞지만 T3\" 판정에서 공유 (SSOT).\n */\nfunction matchesCondition(\n asset: ExternalAsset,\n ctx: { tracks: ReadonlyArray<Track>; options: OptionFlags },\n): boolean {\n const cond = asset.condition;\n switch (cond.kind) {\n case \"any-track\":\n return ctx.tracks.some((t) => cond.tracks.includes(t));\n case \"has-dev-track\":\n // SSOT — track-match.ts hasDevTrack(): csr-*|ssr-*|data|full|tooling (= DEV_TRACKS).\n // EXECUTIVE_STYLE_TRACKS (executive + project-management + growth-marketing) 는 제외.\n return hasDevTrack(ctx.tracks);\n case \"option\":\n return ctx.options[cond.flag] === true;\n case \"opt-in\":\n // v26.81.0 (ADR-022) — 순수 opt-in: condition 으론 절대 설치 안 됨.\n // forceInclude(wizard 체크 / --with <id>)가 shouldInstallAsset 상위에서 처리.\n return false;\n }\n}\n\n/**\n * v26.81.0 (ADR-022) — spec 에서 특정 자산의 선택 여부 판정.\n * 내부 자산(tauri-desktop)의 manifest/transform 게이팅이 이전\n * `spec.options.withTauri` 등 boolean 자리를 대체해 호출. (wizard 체크/--with 는\n * forceInclude 로 들어오므로 shouldInstallAsset 가 그대로 판정)\n */\nexport function isAssetSelected(\n assetId: string,\n ctx: {\n tracks: ReadonlyArray<Track>;\n options: OptionFlags;\n userOverride?: UserOverride;\n },\n): boolean {\n const asset = EXTERNAL_ASSETS.find((a) => a.id === assetId);\n return asset ? shouldInstallAsset(asset, ctx) : false;\n}\n\n/**\n * v26.71.1 — track/option condition 은 매치하지만 T3(experimental)라서 default 설치에서 제외된 자산.\n * forceInclude(--with / interactive 체크)된 것은 이미 설치되므로 제외. 비대화형 install 의\n * discoverability 힌트용 (Transparent Defaults — 숨김 0건. --with 로 opt-in 가능함을 사용자에게 알림).\n */\nexport function experimentalOptInCandidates(ctx: {\n tracks: ReadonlyArray<Track>;\n options: OptionFlags;\n userOverride?: UserOverride;\n}): ReadonlyArray<ExternalAsset> {\n return EXTERNAL_ASSETS.filter(\n (a) =>\n TRUST_TIER[a.id] === \"experimental\" &&\n !ctx.userOverride?.forceInclude.includes(a.id) &&\n matchesCondition(a, ctx),\n );\n}\n\n/**\n * spec에 적용 가능한 자산 필터.\n */\nexport function filterApplicableAssets(\n assets: ReadonlyArray<ExternalAsset>,\n ctx: {\n tracks: ReadonlyArray<Track>;\n options: OptionFlags;\n userOverride?: UserOverride;\n },\n): ReadonlyArray<ExternalAsset> {\n return assets.filter((a) => shouldInstallAsset(a, ctx));\n}\n","import type { Track } from \"./types.js\";\n\n/** Match a track against a glob-style pattern (bash-compatible: `csr-*`, `csr-*|full`). */\nexport function matchTrack(track: Track, pattern: string): boolean {\n return pattern.split(\"|\").some((p) => globToRegex(p.trim()).test(track));\n}\n\nexport function anyTrack(tracks: ReadonlyArray<Track>, pattern: string): boolean {\n return tracks.some((t) => matchTrack(t, pattern));\n}\n\nexport function hasDevTrack(tracks: ReadonlyArray<Track>): boolean {\n // Dev tracks = anything that is NOT executive AND NOT tooling-only-meta.\n // Mirrors setup-harness.sh has_dev_track: csr-*, ssr-*, data, full, tooling.\n return anyTrack(tracks, \"csr-*|ssr-*|data|full|tooling\");\n}\n\nexport function hasUiTrack(tracks: ReadonlyArray<Track>): boolean {\n return anyTrack(tracks, \"csr-*|ssr-*|full\");\n}\n\n/** Convert a bash glob (only `*` is supported) to a strict-anchored RegExp. */\nfunction globToRegex(pattern: string): RegExp {\n const escaped = pattern.replace(/[.+?^${}()|[\\]\\\\]/g, \"\\\\$&\").replace(/\\*/g, \".*\");\n return new RegExp(`^${escaped}$`);\n}\n","/**\n * Category-based installer (v26.43.0) — 분야별 대표 스킬 큐레이션.\n *\n * 9 카테고리: Frontend / Backend / Data / Business / Dev Tools / Understanding / Visual & Media / Workflow / ECC Suite.\n * 각 카테고리 안에서 자산은 (출처, ExternalAsset.id) 로 식별. Step 2 UI 그룹화 기준.\n *\n * Source labels = 정확한 GitHub org/user (Phase A의 SSOT).\n * `[3rd-party]` 같은 generic 라벨 금지 (SPEC R6).\n */\n\nexport const CATEGORIES = [\n \"frontend\",\n \"backend\",\n \"data\",\n \"business\",\n \"dev-tools\",\n \"understanding\",\n \"visual-media\",\n \"workflow\",\n \"ecc-suite\",\n] as const;\nexport type Category = (typeof CATEGORIES)[number];\n\nexport const CATEGORY_TITLES: Record<Category, string> = {\n frontend: \"🎨 Frontend (UI · Design)\",\n backend: \"🗄️ Backend (API · DB · Deploy)\",\n data: \"📊 Data\",\n business: \"💼 Business (Documents)\",\n \"dev-tools\": \"🛡️ Dev Tools (Security · Quality)\",\n // v26.78.0 — 에이전트 인지 증강: 환경에 대한 지각(영상·웹·코드) + 기억(memory).\n understanding: \"🧠 Understanding (Perception · Memory)\",\n // v26.85.0 — 코드-퍼스트 비주얼/미디어 제작: 슬라이드·다이어그램·모션·동영상.\n \"visual-media\": \"🎬 Visual & Media (Slides · Diagrams · Motion · Video)\",\n workflow: \"🔄 Workflow (Development Cycle)\",\n \"ecc-suite\": \"📦 ECC Suite\",\n};\n\n/** Source labels — GitHub org/user. Maps the canonical owner shown to the user. */\nexport const SOURCE_LABELS = {\n anthropics: \"anthropics\",\n \"vercel-labs\": \"vercel-labs\",\n \"shadcn-ui\": \"shadcn/ui\",\n vercel: \"vercel\",\n netlify: \"netlify\",\n supabase: \"supabase\",\n railwayapp: \"railwayapp\",\n trailofbits: \"trailofbits\",\n obra: \"obra\",\n addyosmani: \"addyosmani\",\n pbakaus: \"pbakaus\",\n \"K-Dense-AI\": \"K-Dense-AI\",\n wshobson: \"wshobson\",\n \"testdino-hq\": \"testdino-hq\",\n yonatangross: \"yonatangross\",\n alirezarezvani: \"alirezarezvani\",\n \"affaan-m\": \"affaan-m\",\n \"get-shit-done-cc\": \"get-shit-done-cc\",\n \"fission-ai\": \"Fission-AI\",\n \"bmad-code-org\": \"bmad-code-org\",\n // v26.78.0 — Understanding 카테고리 신규 출처\n bradautomates: \"bradautomates\",\n Lum1104: \"Lum1104\",\n rohitg00: \"rohitg00\",\n // v26.85.0 — Visual & Media 카테고리 출처 (Docker 실설치 검증 PASS).\n zarazhangrui: \"zarazhangrui\",\n greensock: \"greensock\",\n softaworks: \"softaworks\",\n \"remotion-dev\": \"remotion-dev\",\n // v26.86.0 — Visual & Media 프레젠테이션 4종 (Issue #176, Docker 실설치 4/4 PASS).\n hugohe3: \"hugohe3\",\n bytedance: \"bytedance\",\n ConardLi: \"ConardLi\",\n ryanbbrown: \"ryanbbrown\",\n // v26.91.0 — Business 카테고리 마케팅 번들 (coreyhaines31/marketingskills 35k★, MIT).\n coreyhaines31: \"coreyhaines31\",\n uzys: \"this project\",\n} as const;\nexport type Source = keyof typeof SOURCE_LABELS;\n"],"mappings":"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","names":[]}