@uzysjung/agent-harness 26.165.0 → 26.167.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 CHANGED
@@ -14,13 +14,13 @@ Claude Code나 Codex에 규칙을 계속 덧붙여 왔다면 한 번쯤 겪어
14
14
 
15
15
  uzys-agent-harness는 에이전트를 규칙 목록으로 묶지 않는다. 대신 네 가지 철학으로 에이전트가 일하는 환경을 만든다.
16
16
 
17
- ### 1. 모델이 좋아지면 하네스도 함께 좋아진다
17
+ ### 1. 모델이 좋아질 때 막히지 않도록 만든다
18
18
 
19
- "이건 해라, 저건 하지 마라"를 늘어놓지 않고, 무엇을 기준으로 판단할지와 넘으면 안 되는 선을 알려 준다. 예를 들어 "모든 변경에 테스트를 붙여라" 대신 "변경이 미치는 영향과 되돌리는 비용을 보고 검증 깊이를 정하라"고 알려 준다. 모델이 스스로 잘하게 된 일은 지시에서 뺀다. 그래서 새 모델이 나오면 에이전트는 옛 규칙에 막히지 않고 그 능력을 쓸 수 있다.
19
+ "이건 해라, 저건 하지 마라"를 늘어놓지 않고, 무엇을 기준으로 판단할지와 넘으면 안 되는 선을 알려 준다. 예를 들어 "모든 변경에 테스트를 붙여라" 대신 "변경이 미치는 영향과 되돌리는 비용을 보고 검증 깊이를 정하라"고 알려 준다. 모델이 스스로 잘하게 된 일은 지시에서 뺀다. 새 모델이 나와도 옛 규칙이 그 능력을 가로막지 않게 하려는 것이고, 내 프로젝트에서 낡은 지시를 찾아 줄여 주는 스킬도 함께 들어 있다.
20
20
 
21
21
  ### 2. 방향과 경계가 있으면 에이전트는 스스로 더 멀리 간다
22
22
 
23
- 일을 맡기기 전에 프로젝트가 가야 할 방향, 이번 작업의 완료 기준, 넘으면 안 되는 선부터 정한다. 기준이 있으니 에이전트는 해 보고, 기준에 비춰 확인하고, 고치는 과정을 스스로 되풀이한다. 단계마다 지시하지 않아도 더 오래 혼자 일할 수 있고, 사람에게는 사람이 정해야 할 것만 묻게 한다.
23
+ 일을 맡기기 전에 프로젝트가 가야 할 방향, 이번 작업의 완료 기준, 넘으면 안 되는 선부터 정한다. 기준이 있으니 에이전트는 해 보고, 기준에 비춰 확인하고, 고치는 과정을 스스로 되풀이한다. 단계마다 일일이 지시해야 하는 일을 줄이고, 사람에게는 사람이 정해야 할 것만 묻게 하려는 것이다.
24
24
 
25
25
  ### 3. 하네스는 늘 가볍게 유지한다
26
26
 
@@ -28,9 +28,9 @@ uzys-agent-harness는 에이전트를 규칙 목록으로 묶지 않는다. 대
28
28
 
29
29
  ### 4. 여러 관점과 여러 에이전트로 속도, 비용, 품질을 맞춘다
30
30
 
31
- 결과물을 만든 에이전트가 스스로 평가하지 않는다. 검토는 다른 에이전트가 맡고, 개발 트랙에는 여러 사용자 입장(페르소나)에서 결과물을 따져 보는 스킬도 들어간다. 선택 스킬을 더하면 작업마다 어울리는 모델과 추론 강도를 골라 가벼운 일은 빠르고 싸게, 중요한 일은 꼼꼼하게 처리하고, 다른 회사의 모델에게 의견을 물을 수도 있다.
31
+ 스스로 하는 점검과 독립 검토를 나눈다. 중요한 변경은 결과물을 만들지 않은 다른 에이전트가 검토하고, 개발 트랙에는 여러 사용자 입장(페르소나)에서 결과물을 따져 보는 스킬도 들어간다. 개발 트랙에는 작업마다 어울리는 모델과 추론 강도를 골라 가벼운 일은 빠르고 싸게, 중요한 일은 꼼꼼하게 처리하게 하는 스킬도 들어가고, 그 회사의 CLI 가 있으면 다른 회사의 모델에게 의견을 물을 수도 있다.
32
32
 
33
- 이 네 가지를 담은 룰과 스킬, 그리고 프로젝트 스택에 맞는 외부 스킬(공식 저장소이거나 검증 기준을 통과한 것)을 명령 하나로 설치한다. 내 `CLAUDE.md`에는 주석으로 표시한 블록 하나만 붙고 나머지는 건드리지 않는다. 지울 때도 `CLAUDE.md`나 `.mcp.json` 같은 공용 파일에서는 하네스가 넣은 부분만 빠진다. Claude Code, Codex, OpenCode, Antigravity에서 쓸 수 있고, 파일 편집을 막는 훅과 검토 에이전트는 Claude Code에서 동작한다.
33
+ 이 네 가지를 담은 룰과 스킬, 그리고 프로젝트 스택에 맞는 외부 스킬(공식 저장소이거나, 출처와 인기도, 설치 경로를 확인해 고른 것)을 명령 하나로 설치한다. 내 `CLAUDE.md`에는 주석으로 표시한 블록 하나만 붙고 나머지는 건드리지 않는다. 지울 때도 `CLAUDE.md`나 `.mcp.json` 같은 공용 파일에서는 하네스가 넣은 부분만 빠진다. Claude Code, Codex, OpenCode, Antigravity에서 쓸 수 있고, 파일 편집을 막는 훅과 검토 에이전트는 Claude Code에서 동작한다.
34
34
 
35
35
  ## 지금 설치하기
36
36
 
@@ -48,13 +48,13 @@ npx -y @uzysjung/agent-harness
48
48
  1/5 Tracks 만들려는 것을 고른다(개발 스택 또는 업무 종류). 맞는 항목이 미리 체크된다
49
49
  2/5 CLI claude / codex / opencode / antigravity 중 하나 이상을 고른다
50
50
  3/5 Install items 미리 체크된 항목을 보고 빼거나 더한다
51
- 4/5 Confirm 요약과, 이 선택으로 매 세션 늘어나는 토큰 수를 확인한다
51
+ 4/5 Confirm 요약과, 하네스가 매 세션 더하는 지시의 토큰 추정치를 확인한다
52
52
  5/5 Installing
53
53
  ```
54
54
 
55
55
  트랙을 고르면 그에 맞는 룰과 스킬, 외부 도구가 미리 체크된다. 어디까지나 추천이다. 3단계에서 무엇을 넣고 뺄지는 모두 직접 정하면 되고, 트랙을 여러 개 골라도 된다. 마법사 없이 설치할 때도 `--with <id>`와 `--without <id>`로 똑같이 고를 수 있다.
56
56
 
57
- 설치가 끝나면 같은 폴더에서 AI 코딩 도구를 연다. 첫 세션부터 룰과 스킬이 적용된다.
57
+ 설치가 끝나면 같은 폴더에서 AI 코딩 도구를 연다. 첫 세션부터 룰과 스킬을 읽는다. Codex는 이 폴더를 신뢰(Trust and continue)해야 프로젝트 설정(MCP와 훅)까지 켜진다.
58
58
 
59
59
  ```bash
60
60
  claude # 또는 codex / opencode / agy(Antigravity)
@@ -102,15 +102,15 @@ CI, 컨테이너, 스크립트처럼 마법사를 띄울 수 없는 곳에서는
102
102
 
103
103
  ### 경계는 이유와 함께 알려 주고, 강제로 막는 것은 최소로 한다
104
104
 
105
- 넘으면 안 되는 선은 분명히 적는다. 되돌리기 어려운 삭제나 배포, 여러 사람이 함께 쓰는 저장소나 데이터베이스에 기록하는 일은 맡긴 범위를 벗어나면 먼저 묻게 한다. 맡긴 범위 안의 일은 매번 묻지 않고 끝까지 하도록 한다. 강제로 막는 장치는 두 가지뿐이다. 하나는 Claude Code에서 `.env`, lock 파일, 인증서를 고치지 못하게 막는 훅이고, 다른 하나는 직접 한 번 실행하면 GitHub 기본 브랜치에 보호 규칙을 걸어 주는 스크립트다.
105
+ 넘으면 안 되는 선은 분명히 적는다. 되돌리기 어려운 삭제나 배포, 여러 사람이 함께 쓰는 저장소나 데이터베이스에 기록하는 일은 맡긴 범위를 벗어나면 먼저 묻게 한다. 맡긴 범위 안의 일은 매번 묻지 않고 끝까지 하도록 한다. 강제로 막는 장치는 두 가지뿐이다. 하나는 Claude Code가 파일 편집 도구로 `.env`, lock 파일, 인증서를 고치지 못하게 막는 훅이다. 셸 명령으로 바꾸거나 내용을 읽는 것까지 막는 장치는 아니다. 다른 하나는 직접 한 번 실행하면 GitHub 기본 브랜치에 보호 규칙을 걸어 주는 스크립트다.
106
106
 
107
107
  ### 모델이 잘하게 된 일은 지시에서 뺀다
108
108
 
109
- 매 세션 읽는 지시는 그만큼 컨텍스트를 차지한다. 예전 모델의 약점을 메우려던 지시는 더 나은 모델에게 방해가 되기도 한다. 그래서 설치할 때는 고른 항목 때문에 매 세션 토큰이 얼마나 늘어나는지 먼저 보여 준다. 설치한 뒤에는 `audit-harness-fit` 스킬이 내 프로젝트에서 더는 필요 없는 지시나 똑같은 확인을 되풀이하게 만드는 절차를 찾아, 고칠 곳을 알려 준다.
109
+ 매 세션 읽는 지시는 그만큼 컨텍스트를 차지한다. 예전 모델의 약점을 메우려던 지시는 더 나은 모델에게 방해가 되기도 한다. 그래서 설치할 때는 고른 항목 때문에 하네스가 매 세션 더하는 지시가 몇 토큰쯤인지 추정해 먼저 보여 준다. 외부 스킬은 이 숫자에 들어가지 않는다. 설치한 뒤에는 `audit-harness-fit` 스킬이 내 프로젝트에서 더는 필요 없는 지시나 똑같은 확인을 되풀이하게 만드는 절차를 찾아, 고칠 곳을 알려 준다.
110
110
 
111
111
  ### 만드는 에이전트와 검사하는 에이전트를 나눈다
112
112
 
113
- 자기가 한 일을 자기가 검사하면 놓치기 쉽다. Claude Code에서는 코드를 짜지 않은 `reviewer` 서브에이전트가 테스트나 앱을 직접 돌려 보고 결과를 검사한다. 선택 스킬인 `model-orchestration`을 더하면 에이전트가 일마다 어떤 모델에게 얼마나 깊이 생각하게 할지 고른다. 가벼운 일은 빠르고 싸게, 판단할 게 많은 일은 더 강한 모델에게 맡겨 속도와 비용, 품질 사이에서 균형을 잡는다.
113
+ 자기가 한 일을 자기가 검사하면 놓치기 쉽다. Claude Code에서는 코드를 짜지 않은 `reviewer` 서브에이전트가 테스트나 앱을 직접 돌려 보고 결과를 검사한다. 개발 트랙에는 `model-orchestration` 스킬이 들어가 에이전트가 일마다 어떤 모델에게 얼마나 깊이 생각하게 할지 고른다. 가벼운 일은 빠르고 싸게, 판단할 게 많은 일은 더 강한 모델에게 맡겨 속도와 비용, 품질 사이에서 균형을 잡는다.
114
114
 
115
115
  작업 원칙 전문은 [templates/CLAUDE.md](templates/CLAUDE.md)에서 볼 수 있다. 설치하면 이 파일이 `CLAUDE-uzys-harness.md`라는 이름으로 들어가고, 내 `CLAUDE.md`는 한 줄로 이 파일을 불러온다. 프로젝트의 방향은 [docs/NORTH_STAR.md](docs/NORTH_STAR.md)에 정리해 두었다.
116
116
 
@@ -128,7 +128,7 @@ your-project/
128
128
  │ ├── agents/ 메인 에이전트가 일을 넘기는 서브에이전트(reviewer, implementer 등).
129
129
  │ ├── hooks/ 도구가 자동으로 실행하는 훅 스크립트(세션 시작, 파일 보호).
130
130
  │ └── settings.json 훅을 등록한다. 기존 설정과 합친다.
131
- ├── .mcp.json context7(최신 라이브러리 문서), github 등 MCP 서버. 기존 설정과 합친다.
131
+ ├── .mcp.json context7(최신 라이브러리 문서)와 트랙별 MCP 서버. 기존 설정과 합친다.
132
132
  └── .uzys-agent-harness/ 설치 기록과 보조 스크립트.
133
133
  ```
134
134
 
@@ -156,7 +156,7 @@ your-project/
156
156
 
157
157
  ## 지원하는 스택과 함께 제공하는 스킬
158
158
 
159
- 트랙은 개발 스택이나 업무 종류별로 묶어 둔 시작 구성이다. 표의 위쪽 9개가 개발 트랙, 아래쪽 3개가 업무 트랙이다. 트랙을 고르면 아래 외부 스킬과 도구가 미리 체크된다. 미리 체크되는 것은 모두 공식 저장소이거나 이 프로젝트의 검증 기준을 통과한 저장소다([SECURITY.md](SECURITY.md)).
159
+ 트랙은 개발 스택이나 업무 종류별로 묶어 둔 시작 구성이다. 표의 위쪽 9개가 개발 트랙, 아래쪽 3개가 업무 트랙이다. 트랙을 고르면 아래 외부 스킬과 도구가 미리 체크된다. 미리 체크되는 것은 모두 공식 저장소이거나, 출처와 인기도, 설치 경로를 확인해 고른 저장소다. 내용의 안전성이나 결과물의 품질까지 보증하지는 않는다([SECURITY.md](SECURITY.md)).
160
160
 
161
161
  | 트랙 | 스택 | 미리 체크되는 외부 스킬·도구 |
162
162
  |---|---|---|
@@ -170,18 +170,18 @@ your-project/
170
170
  | `tooling` | 앱 스택 없는 Bash·Markdown 프로젝트 | 없음 |
171
171
  | `full` | 개발 트랙 전부와 문서 작업 | 위 항목 전부 + `anthropic-document-skills` |
172
172
  | `executive` | 제안서, 실사, 발표 자료, 재무 모델 | `anthropic-document-skills` |
173
- | `project-management` | PM 업무 | 없음 (`product-skills` 선택 가능) |
173
+ | `project-management` | PM 업무 | 없음 |
174
174
  | `growth-marketing` | 그로스·콘텐츠 마케팅 | 없음 (`marketingskills` 선택 가능) |
175
175
 
176
- MCP 서버도 함께 들어간다. 모든 트랙에 `context7`(최신 라이브러리 문서), `github`, `chrome-devtools`가 들어가고, `csr-*`와 `ssr-htmx` 트랙에는 배포용 `railway-mcp-server`가, `csr-supabase`에는 `supabase`가 더해진다. `full`은 둘 다 받는다. `ssr-nextjs`에서는 Railway MCP가 기본이 아니고, 직접 고르면 들어간다.
176
+ MCP 서버도 함께 들어간다. 모든 트랙에 `context7`(최신 라이브러리 문서)가 들어가고, 웹 트랙(`csr-*`, `ssr-*`, `full`)에는 Google 사용 통계를 끈 `chrome-devtools`가 더해진다. `csr-*`와 `ssr-htmx` 트랙에는 `railway-mcp-server`(Railway 원격 서버 — 처음 쓸 때 로그인한다)가, `csr-supabase`에는 `supabase`가 더해진다. `full`은 둘 다 받는다. `ssr-nextjs`에서는 Railway MCP가 기본이 아니고, 직접 고르면 들어간다. Vercel·GitHub 공식 원격 서버(`vercel`, `github-mcp`)는 미리 체크되지 않는다 — `--with`로 더한다.
177
177
 
178
178
  미리 체크되지는 않지만 3단계나 `--with <id>`로 더할 수 있는 것도 있다.
179
179
 
180
180
  - 프론트엔드·디자인: `web-design-guidelines`, `taste-skill`, `jakubkrehel-skills`, `preline`, `scroll-world`
181
- - 배포: `vercel-cli`, `netlify-cli`, `supabase-cli`, `railway-mcp-server`, `railway-skills`
182
- - 보안 리뷰: `security-guidance`, `trailofbits-skills`
183
- - 제품·마케팅·재무: `product-skills`, `marketingskills`, `finance-skills`
184
- - 발표·영상: `frontend-slides`, `marp-slide`, `revealjs`, `remotion`, `gsap-skills` 등
181
+ - 배포: `vercel-cli`, `netlify-cli`, `supabase-cli`, `railway-mcp-server`, `vercel`, `railway-skills`
182
+ - 보안 리뷰: `security-guidance`, `claude-security`
183
+ - 마케팅·재무: `marketingskills`, `finance-skills`
184
+ - 발표·영상: `frontend-slides`, `marp-slide`, `hyperframes`, `remotion`, `gsap-skills` 등
185
185
  - 정해진 개발 절차가 필요한 팀: `openspec`, `bmad-method` ([WORKFLOWS.md](docs/WORKFLOWS.md)에서 비교)
186
186
 
187
187
  트랙별 전체 구성은 [docs/TRACKS.md](docs/TRACKS.md)에, 항목별 출처와 설치 방식, 지원 도구는 [docs/COMPATIBILITY.md](docs/COMPATIBILITY.md)에 있다.
@@ -208,9 +208,15 @@ MCP 서버도 함께 들어간다. 모든 트랙에 `context7`(최신 라이브
208
208
 
209
209
  | 지금 이렇게 하고 있다면 | 이 하네스와 다른 점 |
210
210
  |---|---|
211
- | `CLAUDE.md`나 `AGENTS.md`를 직접 쓴다 | 그 파일은 그대로 둔다. 하네스는 주석으로 표시한 블록 하나만 붙이고 나머지는 건드리지 않는다. 대신 파일 하나로는 할 수 없는 것을 더해 준다. Claude Code에서 실제로 막는 훅과 만드는 에이전트와 따로 있는 검사 에이전트, 그리고 업데이트가 하네스가 넣은 것만 바꾸게 하는 설치 기록이다. |
211
+ | `CLAUDE.md`나 `AGENTS.md`를 직접 쓴다 | 그 파일은 그대로 둔다. 하네스는 주석으로 표시한 블록 하나만 붙이고 나머지는 건드리지 않는다. 대신 파일 하나로는 할 수 없는 것을 더해 준다. Claude Code에서 보호 파일 편집을 막는 훅과 만드는 에이전트와 따로 있는 검사 에이전트, 그리고 업데이트가 하네스가 넣은 것만 바꾸게 하는 설치 기록이다. |
212
212
  | 마켓플레이스에서 스킬을 골라 쓴다 | 스킬 하나만 필요하면 그것만 받으면 된다. `npx skills add uzysjung/uzys-agent-harness --skill <id> -a claude-code` (id 목록은 `--list`나 [skills.sh](https://skills.sh/uzysjung/uzys-agent-harness)에서 볼 수 있다). 설치 마법사는 스킬 목록만으로는 채울 수 없는 것, 곧 매 세션 읽는 룰과 훅, 서브에이전트, 그리고 이것들을 최신으로 유지하는 설치 기록을 위한 것이다. |
213
- | 룰이 많은 다른 하네스를 쓴다 | 매 세션 읽는 지시가 적고, 설치 전에 세션마다 드는 토큰 수를 보여 준다. 정해진 순서대로 개발하는 방식이 필요하면 외부 워크플로 키트인 `openspec`이나 `bmad-method`를 더하면 된다. 둘 다 선택이며 [WORKFLOWS.md](docs/WORKFLOWS.md)에 비교해 두었다. |
213
+ | 룰이 많은 다른 하네스를 쓴다 | 매 세션 읽는 룰은 짧은 것 몇 개로 두고 긴 절차는 필요할 때만 읽게 한다. 설치 전에 그 지시의 토큰 추정치를 보여 준다. 정해진 순서대로 개발하는 방식이 필요하면 외부 워크플로 키트인 `openspec`이나 `bmad-method`를 더하면 된다. 둘 다 선택이며 [WORKFLOWS.md](docs/WORKFLOWS.md)에 비교해 두었다. |
214
+
215
+ ## 이 하네스가 맞지 않는 경우
216
+
217
+ - **정해진 절차를 그대로 따르게 해야 할 때.** 이 하네스는 절차 대신 판단 기준을 주고 결정은 모델에게 맡긴다. 감사나 규제 때문에 단계가 고정돼야 한다면 `openspec`이나 `bmad-method` 같은 워크플로 키트를 더하거나, 그 절차를 직접 규칙으로 쓰는 편이 맞다.
218
+ - **판단을 맡기기 어려운 작은 모델을 쓸 때.** 기준만 주는 지시는 모델이 그 기준으로 스스로 판단할 수 있을 때 힘을 낸다.
219
+ - **효과를 숫자로 확인한 뒤에 쓰고 싶을 때.** 이 프로젝트의 테스트는 설치와 파일 처리가 맞게 되는지를 검증한다. 하네스를 쓸 때와 안 쓸 때의 개발 성과를 비교한 측정 결과는 아직 없다.
214
220
 
215
221
  ## 문서
216
222
 
package/README.md CHANGED
@@ -14,13 +14,13 @@ If you have kept adding rules to Claude Code or Codex, you have probably run int
14
14
 
15
15
  uzys-agent-harness doesn't tie the agent down with a list of rules. It builds the agent's working environment on four ideas.
16
16
 
17
- ### 1. As models get better, the harness gets better with them
17
+ ### 1. Built so better models aren't held back
18
18
 
19
- Instead of piling up dos and don'ts, it tells the agent what to base its judgment on and which lines it must not cross. For example, instead of "add tests to every change," it says "decide how deeply to verify based on the change's impact and the cost of undoing it." Instructions for things the model now does well on its own come out. So when a new model arrives, the agent can use what it can do instead of being held back by old rules.
19
+ Instead of piling up dos and don'ts, it tells the agent what to base its judgment on and which lines it must not cross. For example, instead of "add tests to every change," it says "decide how deeply to verify based on the change's impact and the cost of undoing it." Instructions for things the model now does well on its own come out. The aim is that when a new model arrives, old rules don't stand in the way of what it can do, and a skill is included that finds stale instructions in your own project so you can trim them.
20
20
 
21
21
  ### 2. With a direction and limits, the agent goes further on its own
22
22
 
23
- Before work is handed over, the project's direction, the task's definition of done, and the lines not to cross are set first. With those to check against, the agent tries, checks its work, and fixes it, again and again, on its own. It can work longer without step-by-step direction, and it is told to ask you only about the decisions that are yours.
23
+ Before work is handed over, the project's direction, the task's definition of done, and the lines not to cross are set first. With those to check against, the agent tries, checks its work, and fixes it, again and again, on its own. The aim is to cut down on step-by-step direction and to have the agent ask you only about the decisions that are yours.
24
24
 
25
25
  ### 3. The harness stays light
26
26
 
@@ -28,9 +28,9 @@ Every instruction the agent reads each session takes up context, and as they pil
28
28
 
29
29
  ### 4. Several viewpoints and several agents balance speed, cost, and quality
30
30
 
31
- The agent that built something doesn't judge its own work. Review goes to another agent, and dev tracks also get a skill that examines the work from several user perspectives (personas). With the optional skills, each task gets a fitting model and reasoning effort, light work fast and cheap and important work done carefully, and a model from another vendor can give a second opinion.
31
+ Self-checks and independent review are kept apart. Important changes are reviewed by an agent that didn't build them, and dev tracks also get a skill that examines the work from several user perspectives (personas). Dev tracks also get skills that give each task a fitting model and reasoning effort, light work fast and cheap and important work done carefully, and, if you have that vendor's CLI, let a model from another vendor give a second opinion.
32
32
 
33
- One command installs the rules and skills that carry these four ideas, plus third-party skills for your stack (from official repositories or ones that passed this project's vetting). Your `CLAUDE.md` gets one block marked with comments and nothing else is touched. On uninstall, shared files such as `CLAUDE.md` and `.mcp.json` lose only the harness's part. Works with Claude Code, Codex, OpenCode, and Antigravity; the hook that blocks file edits and the reviewer agent run on Claude Code.
33
+ One command installs the rules and skills that carry these four ideas, plus third-party skills for your stack (from official repositories, or picked after checking their source, popularity, and install path). Your `CLAUDE.md` gets one block marked with comments and nothing else is touched. On uninstall, shared files such as `CLAUDE.md` and `.mcp.json` lose only the harness's part. Works with Claude Code, Codex, OpenCode, and Antigravity; the hook that blocks file edits and the reviewer agent run on Claude Code.
34
34
 
35
35
  ## Install it now
36
36
 
@@ -48,13 +48,13 @@ The wizard has five steps:
48
48
  1/5 Tracks what you are building (a dev stack or a kind of work). Items that fit are pre-checked
49
49
  2/5 CLI one or more of claude / codex / opencode / antigravity
50
50
  3/5 Install items review the pre-checked items; drop or add anything
51
- 4/5 Confirm a summary, and how many tokens your selection adds per session
51
+ 4/5 Confirm a summary, and an estimate of the tokens the harness adds per session
52
52
  5/5 Installing
53
53
  ```
54
54
 
55
55
  Picking a track pre-checks the rules, skills, and external tools that fit it. That is only a recommendation. At step 3 you decide everything that goes in or stays out, and you can pick more than one track. Without the wizard, `--with <id>` and `--without <id>` make the same choices.
56
56
 
57
- Then open your AI coding tool in the same folder. The rules and skills apply from the first session:
57
+ Then open your AI coding tool in the same folder. The rules and skills are read from the first session. On Codex, the project settings (MCP and hooks) turn on only after you trust the folder ("Trust and continue"):
58
58
 
59
59
  ```bash
60
60
  claude # or codex / opencode / agy (Antigravity)
@@ -102,15 +102,15 @@ Instead of prescribing a method, the harness first says what done looks like. Th
102
102
 
103
103
  ### Limits come with reasons, and very few are enforced
104
104
 
105
- Hard limits are written down plainly. Destructive actions, deployments, and writes to anything other people share, such as a repository or a database, need your approval when they go beyond the work you handed over. Routine work inside that scope is meant to go ahead without repeated check-ins. Only two things are enforced mechanically: on Claude Code, a hook blocks edits to `.env`, lock files, and certificates, and a bundled script, when you run it once, puts protection rules on your GitHub default branch.
105
+ Hard limits are written down plainly. Destructive actions, deployments, and writes to anything other people share, such as a repository or a database, need your approval when they go beyond the work you handed over. Routine work inside that scope is meant to go ahead without repeated check-ins. Only two things are enforced mechanically: on Claude Code, a hook stops the file-edit tools from changing `.env`, lock files, and certificates (it does not stop shell commands from changing them, or anything from reading them), and a bundled script, when you run it once, puts protection rules on your GitHub default branch.
106
106
 
107
107
  ### What the model now does well comes out of the instructions
108
108
 
109
- Every instruction read each session takes up context, and instructions written for an older model's weak spots can get in a newer model's way. So before you install, the wizard shows how many tokens your selection adds to every session. After you install, the `audit-harness-fit` skill finds instructions your project no longer needs, and procedures that make the agent check the same thing over and over, then suggests what to change.
109
+ Every instruction read each session takes up context, and instructions written for an older model's weak spots can get in a newer model's way. So before you install, the wizard shows an estimate of how many tokens the harness's instructions add to every session. Third-party skills are not counted in that number. After you install, the `audit-harness-fit` skill finds instructions your project no longer needs, and procedures that make the agent check the same thing over and over, then suggests what to change.
110
110
 
111
111
  ### The agent that builds is not the one that checks
112
112
 
113
- An agent checking its own work tends to miss things. On Claude Code, a `reviewer` subagent that didn't write the code runs your tests or the app and checks the result. With the optional `model-orchestration` skill, the agent also picks the model and reasoning effort for each task: fast and cheap for light work, stronger where more judgment is needed. That is how speed, cost, and quality get balanced.
113
+ An agent checking its own work tends to miss things. On Claude Code, a `reviewer` subagent that didn't write the code runs your tests or the app and checks the result. On dev tracks, the `model-orchestration` skill also has the agent pick the model and reasoning effort for each task: fast and cheap for light work, stronger where more judgment is needed. That is how speed, cost, and quality get balanced.
114
114
 
115
115
  The full working principles are in [templates/CLAUDE.md](templates/CLAUDE.md). They are installed as `CLAUDE-uzys-harness.md` and pulled in by one line in your `CLAUDE.md`. The project's direction is in [docs/NORTH_STAR.md](docs/NORTH_STAR.md).
116
116
 
@@ -128,7 +128,7 @@ your-project/
128
128
  │ ├── agents/ reviewer, implementer: subagents the main agent hands work to
129
129
  │ ├── hooks/ session start, file protection. Claude Code runs them itself
130
130
  │ └── settings.json registers the hooks (merged with yours)
131
- ├── .mcp.json MCP servers: context7 (current library docs), github, and more (merged with yours)
131
+ ├── .mcp.json MCP servers: context7 (current library docs) and more by track (merged with yours)
132
132
  └── .uzys-agent-harness/ the install record and helper scripts
133
133
  ```
134
134
 
@@ -149,7 +149,7 @@ Plugins are a Claude Code feature, so only Claude Code gets them. Rules and skil
149
149
 
150
150
  ## Supported stacks and the skills that come with them
151
151
 
152
- A track is a starting setup for a dev stack or a kind of work: the top nine rows are dev tracks, the bottom three are work tracks. Picking a track pre-checks the external skills and tools below. Everything pre-checked comes from an official repository or one that passed this project's vetting ([SECURITY.md](SECURITY.md)).
152
+ A track is a starting setup for a dev stack or a kind of work: the top nine rows are dev tracks, the bottom three are work tracks. Picking a track pre-checks the external skills and tools below. Everything pre-checked comes from an official repository, or from one picked after checking its source, popularity, and install path. That does not vouch for the safety of its contents or the quality of what it produces ([SECURITY.md](SECURITY.md)).
153
153
 
154
154
  | Track | Stack | Pre-checked external skills and tools |
155
155
  |---|---|---|
@@ -163,18 +163,18 @@ A track is a starting setup for a dev stack or a kind of work: the top nine rows
163
163
  | `tooling` | Bash and Markdown projects with no app stack | None |
164
164
  | `full` | Every dev track, plus documents | All of the above, plus `anthropic-document-skills` |
165
165
  | `executive` | Proposals, due diligence, decks, financial models | `anthropic-document-skills` |
166
- | `project-management` | PM work | None (`product-skills` available) |
166
+ | `project-management` | PM work | None |
167
167
  | `growth-marketing` | Growth and content marketing | None (`marketingskills` available) |
168
168
 
169
- MCP servers come too. Every track gets `context7` (current library docs), `github`, and `chrome-devtools`. The `csr-*` and `ssr-htmx` tracks add `railway-mcp-server` for deployment, and `csr-supabase` adds `supabase`. `full` gets both. On `ssr-nextjs`, Railway MCP is not a default; pick it if you want it.
169
+ MCP servers come too. Every track gets `context7` (current library docs). Web tracks (`csr-*`, `ssr-*`, `full`) add `chrome-devtools`, with Google's usage statistics turned off. The `csr-*` and `ssr-htmx` tracks add `railway-mcp-server` (Railway's remote server — you sign in on first use), and `csr-supabase` adds `supabase`. `full` gets both. On `ssr-nextjs`, Railway MCP is not a default; pick it if you want it. Vercel's and GitHub's official remote servers (`vercel`, `github-mcp`) are never pre-checked — add them with `--with`.
170
170
 
171
171
  More external assets are never pre-checked but can be added at step 3 or with `--with <id>`:
172
172
 
173
173
  - Frontend and design: `web-design-guidelines`, `taste-skill`, `jakubkrehel-skills`, `preline`, `scroll-world`
174
- - Deployment: `vercel-cli`, `netlify-cli`, `supabase-cli`, `railway-mcp-server`, `railway-skills`
175
- - Security review: `security-guidance`, `trailofbits-skills`
176
- - Product, marketing, finance: `product-skills`, `marketingskills`, `finance-skills`
177
- - Slides and video: `frontend-slides`, `marp-slide`, `revealjs`, `remotion`, `gsap-skills`, and more
174
+ - Deployment: `vercel-cli`, `netlify-cli`, `supabase-cli`, `railway-mcp-server`, `vercel`, `railway-skills`
175
+ - Security review: `security-guidance`, `claude-security`
176
+ - Marketing and finance: `marketingskills`, `finance-skills`
177
+ - Slides and video: `frontend-slides`, `marp-slide`, `hyperframes`, `remotion`, `gsap-skills`, and more
178
178
  - Teams that want a fixed development process: `openspec`, `bmad-method` (compared in [WORKFLOWS.md](docs/WORKFLOWS.md))
179
179
 
180
180
  Each track's full set is in [docs/TRACKS.md](docs/TRACKS.md). Every asset's source, install method, and supported tools are in [docs/COMPATIBILITY.md](docs/COMPATIBILITY.md).
@@ -201,9 +201,15 @@ In a terminal, `uninstall` offers three choices (one tool, selected assets, or e
201
201
 
202
202
  | If you currently… | How this is different |
203
203
  |---|---|
204
- | Write your own `CLAUDE.md` or `AGENTS.md` | Keep it. The harness adds one marked block and leaves the rest alone. It adds what a single file can't: on Claude Code, a hook that actually blocks and a reviewer separate from the agent that builds; and an install record so `update` changes only what the harness put there. |
204
+ | Write your own `CLAUDE.md` or `AGENTS.md` | Keep it. The harness adds one marked block and leaves the rest alone. It adds what a single file can't: on Claude Code, a hook that blocks edits to protected files and a reviewer separate from the agent that builds; and an install record so `update` changes only what the harness put there. |
205
205
  | Pick skills from a marketplace | If you only need one skill, take just that one: `npx skills add uzysjung/uzys-agent-harness --skill <id> -a claude-code` (see ids with `--list`, or on [skills.sh](https://skills.sh/uzysjung/uzys-agent-harness)). The wizard is for what a skill list doesn't cover: standing rules, hooks, subagents, and the record that keeps them current. |
206
- | Use another harness with many rules | Fewer standing instructions, and you see their per-session token cost before you install. If you want a fixed, step-by-step process, add the third-party workflow kits `openspec` or `bmad-method`. Both are optional and compared in [WORKFLOWS.md](docs/WORKFLOWS.md). |
206
+ | Use another harness with many rules | Only a few short rules are read every session; longer procedures are read when needed. You see an estimate of their per-session token cost before you install. If you want a fixed, step-by-step process, add the third-party workflow kits `openspec` or `bmad-method`. Both are optional and compared in [WORKFLOWS.md](docs/WORKFLOWS.md). |
207
+
208
+ ## When this harness is not a fit
209
+
210
+ - **You need a fixed procedure followed step by step.** This harness gives judgment criteria instead of procedures and leaves the decisions to the model. If an audit or regulation requires fixed steps, add a workflow kit such as `openspec` or `bmad-method`, or write those steps as your own rules.
211
+ - **You use a small model you can't trust with judgment calls.** Instructions that give criteria rather than steps pay off when the model can make the call itself.
212
+ - **You want numbers on the benefit before you adopt it.** This project's tests check that installing and file handling work as intended. There are no measurements yet comparing development results with and without the harness.
207
213
 
208
214
  ## Docs
209
215
 
@@ -141,16 +141,17 @@ var EXTERNAL_ASSETS = [
141
141
  // v26.108.0 (ADR-037, 라이프사이클 자산화 ②) — CI 스캐폴드: `.github/workflows/` fill-in
142
142
  // 워크플로(tag-트리거 CI + 실DB 서비스 컨테이너 + coverage 게이트 + Playwright E2E).
143
143
  // 실무 CI 패턴의 도메인 중립 일반화 (CI 부재 프로젝트의 갭이 계기). `.claude/` 밖에
144
- // 쓰는 첫 자산 — opt-in 전용 + 기존 워크플로 파일은 절대 덮어쓰지 않는다 (src/ci-scaffold.ts,
144
+ // 쓰는 첫 자산 — 기존 워크플로 파일은 절대 덮어쓰지 않는다 (src/ci-scaffold.ts,
145
145
  // manifest 경유 아님 — CLI 선택과 무관하게 설치되는 CLI-agnostic 산출물).
146
+ // ADR-105 (#726, 사용자 결정 2026-10-11) — opt-in 전용 → 개발 트랙 기본. 없을 때만 쓰는 계약은 그대로.
146
147
  {
147
148
  id: "ci-scaffold",
148
149
  tier: "official",
149
150
  // uzys 본 하네스 자체 템플릿
150
- description: "CI scaffold \u2014 .github/workflows fill-in templates (tag-triggered CI + real-DB service container + coverage gate + Playwright E2E); never overwrites existing workflow files (opt-in)",
151
+ description: "CI scaffold \u2014 .github/workflows fill-in templates (tag-triggered CI + real-DB service container + coverage gate + Playwright E2E); writes only when the file is absent, never overwrites existing workflow files",
151
152
  category: "workflow",
152
153
  source: "uzys",
153
- condition: { kind: "opt-in" },
154
+ condition: { kind: "has-dev-track" },
154
155
  method: { kind: "internal", key: "ci-scaffold" }
155
156
  },
156
157
  // === Repo-bundled internal skills (uzys 1st-party, v26.87.0) ===
@@ -258,10 +259,11 @@ var EXTERNAL_ASSETS = [
258
259
  id: "model-orchestration",
259
260
  tier: "official",
260
261
  // uzys 자사 스킬 리포
261
- 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)",
262
+ 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",
262
263
  category: "workflow",
263
264
  source: "uzys",
264
- condition: { kind: "opt-in" },
265
+ // ADR-105 (#726) — opt-in → 개발 트랙 기본.
266
+ condition: { kind: "has-dev-track" },
265
267
  method: { kind: "internal", key: "model-orchestration" }
266
268
  },
267
269
  {
@@ -270,10 +272,12 @@ var EXTERNAL_ASSETS = [
270
272
  id: "external-model-consult",
271
273
  tier: "official",
272
274
  // uzys 자사 스킬 리포
273
- description: "External model consult \u2014 ask an available external model/provider for an independent draft, critique, or provider-only output such as image generation (opt-in \u2014 recommended; requires that provider's CLI)",
275
+ description: "External model consult \u2014 ask an available external model/provider for an independent draft, critique, or provider-only output such as image generation (requires that provider's CLI)",
274
276
  category: "dev-tools",
275
277
  source: "uzys",
276
- condition: { kind: "opt-in" },
278
+ // ADR-105 (#726) — opt-in → 개발 트랙 기본. 설치는 디렉터리 복사뿐이라 provider CLI 가 없어도
279
+ // 설치는 성공한다 — 없으면 실행 시점에 래퍼가 멈추고 스킬이 "설치·로그인은 사용자 몫"을 알린다.
280
+ condition: { kind: "has-dev-track" },
277
281
  method: { kind: "internal", key: "external-model-consult" }
278
282
  },
279
283
  {
@@ -326,8 +330,9 @@ var EXTERNAL_ASSETS = [
326
330
  method: { kind: "internal", key: "self-hosted-github-runner" }
327
331
  },
328
332
  {
329
- // 트랙과 무관한 글쓰기 규율이라 어느 트랙에서도 고를 수 있고, 어느 트랙에도 자동으로는
330
- // 안 깔린다(opt-in). 한국어로 쓰지 않는 사용자에게 기본 설치되면 그대로 낭비다.
333
+ // 트랙과 무관한 글쓰기 규율이다. ADR-105 (#726, 사용자 결정 2026-10-11) — opt-in → 개발 트랙
334
+ // 기본. 한국어로 쓰지 않는 설치자에게는 descriptor 상주가 낭비라는 대가를 받아들였다
335
+ // (빼려면 `--without natural-korean`).
331
336
  // user-centered-explanation 과의 경계: 저쪽은 **무엇을 어떤 형식으로 말할지**(설명·승인
332
337
  // 요청의 구조)이고, 이쪽은 **한국어로 쓰는 행위 자체**(답변·글쓰기·번역·퇴고)의 표현이다.
333
338
  // #428 — 전신 `humanize-korean`(#355, 진단-우선 퇴고)을 개명·교체했다. 범위가 퇴고에서
@@ -336,10 +341,10 @@ var EXTERNAL_ASSETS = [
336
341
  id: "natural-korean",
337
342
  tier: "official",
338
343
  // uzys 자사 스킬
339
- 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)",
344
+ 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",
340
345
  category: "workflow",
341
346
  source: "uzys",
342
- condition: { kind: "opt-in" },
347
+ condition: { kind: "has-dev-track" },
343
348
  method: { kind: "internal", key: "natural-korean" }
344
349
  },
345
350
  // === Option-gated (v26.42.0 — opt-in, BREAKING vs prior has-dev-track auto-install) ===
@@ -398,12 +403,13 @@ var EXTERNAL_ASSETS = [
398
403
  // #709 (ADR-101) — Railway MCP 서버의 **선택** 경로. 서버 정의는 트랙 표(`templates/track-mcp-map.tsv`)의 같은 이름
399
404
  // 행 하나다(key === 행 이름). 그 행의 패턴이 기본 트랙(csr-* · ssr-htmx · full)을 정하고, 이 항목은 그 밖의 트랙
400
405
  // (ssr-nextjs 등)에서 위저드 체크 · `--with` 로 고르게 한다. experimental 이라 조건으로는 미리 체크되지 않는다.
401
- // 상류 repo 는 archived — Railway 의 현행 경로(`railway mcp`)로 행 명령을 바꾸는 일은 별도 이슈.
406
+ // #712 (ADR-106) — 행이 Railway 공식 원격 서버(`https://mcp.railway.com`, OAuth)로 바뀌었다. 이름 · 키 id 는 그대로라 기록이
407
+ // 이어져 update 가 같은 키를 갈아 끼운다.
402
408
  {
403
409
  id: "railway-mcp-server",
404
410
  tier: "experimental",
405
- // railwayapp/railway-mcp-server 190★ · archived (월간 trust-tier-drift 가 REPO_OVERRIDE 로 감시)
406
- description: "Railway MCP server (`npx -y @railway/mcp-server`) in `.mcp.json` \u2014 already on by default on csr-*, ssr-htmx and full; check it to add it on any other track (e.g. ssr-nextjs). Upstream repo is archived; Railway's current route is `railway mcp` (opt-in)",
411
+ // railwayapp/cli 621★ (원격 서버에 공개 저장소가 따로 없다 — 같은 벤더의 CLI 를 감시, REPO_OVERRIDE)
412
+ description: "Railway's official remote MCP (https://mcp.railway.com, signs in with OAuth on first use) in .mcp.json, Codex and OpenCode \u2014 default on csr-* \xB7 ssr-htmx \xB7 full; check it to add it on any other track",
407
413
  category: "backend",
408
414
  source: "railwayapp",
409
415
  condition: { kind: "opt-in" },
@@ -412,19 +418,59 @@ var EXTERNAL_ASSETS = [
412
418
  cliSupportOverride: ["claude", "codex", "opencode"],
413
419
  method: { kind: "internal", key: "railway-mcp-server" }
414
420
  },
421
+ // #711 (ADR-106) — Vercel 공식 원격 MCP. 트랙 표 행의 패턴은 `-`(기본 트랙 없음) — 어느 트랙에서도 미리 체크하지 않는다
422
+ // (사용자 확정 2026-10-11 "opt-in", ssr-nextjs 포함). Antigravity 는 MCP 를 받지 않는다(Vercel 승인 클라이언트에도 없다).
423
+ {
424
+ id: "vercel",
425
+ tier: "vetted",
426
+ // Vercel MCP 에 공개 저장소가 따로 없다 — 같은 벤더의 vercel/vercel 16k 를 감시(REPO_OVERRIDE)
427
+ description: "Vercel's official remote MCP (https://mcp.vercel.com, signs in with OAuth on first use) in .mcp.json, Codex and OpenCode. Only if this project deploys to Vercel",
428
+ category: "backend",
429
+ source: "vercel",
430
+ condition: { kind: "opt-in" },
431
+ cliSupportOverride: ["claude", "codex", "opencode"],
432
+ method: { kind: "internal", key: "vercel" }
433
+ },
434
+ // #722 (ADR-106) — GitHub 공식 원격 MCP 의 opt-in 경로. 기본에서 뺀 옛 `github`(@modelcontextprotocol/server-github, 상류
435
+ // deprecated)와 **다른 이름**이다 — 같은 이름이면 옛 설치본의 기록된 몫이 선택으로 읽혀 PAT 없는 설치자에게 매 세션 실패하는
436
+ // 서버가 조용히 깔린다. 인증 = 환경변수 GITHUB_PAT(파일에는 이름만).
437
+ {
438
+ id: "github-mcp",
439
+ tier: "vetted",
440
+ // github/github-mcp-server 33.5k (REPO_OVERRIDE)
441
+ description: "GitHub's official remote MCP server (api.githubcopilot.com) in .mcp.json, Codex and OpenCode \u2014 needs a GitHub personal access token in GITHUB_PAT in the shell you start the CLI from. Not needed when the agent uses the gh CLI",
442
+ category: "dev-tools",
443
+ source: "github",
444
+ condition: { kind: "opt-in" },
445
+ cliSupportOverride: ["claude", "codex", "opencode"],
446
+ method: { kind: "internal", key: "github-mcp" }
447
+ },
448
+ // #722 (ADR-106) — Chrome DevTools MCP. 트랙 표 행이 웹 트랙(csr-* · ssr-* · full)의 기본이고, 이 항목은 그 밖의 트랙에서
449
+ // 고르게 한다. Google 사용 통계는 행의 `--no-usage-statistics` 로 끈다.
450
+ {
451
+ id: "chrome-devtools",
452
+ tier: "vetted",
453
+ // ChromeDevTools/chrome-devtools-mcp 53k (REPO_OVERRIDE)
454
+ description: "Chrome DevTools MCP \u2014 browser automation, console, network and performance tools for the agent. Default on csr-* \xB7 ssr-* \xB7 full; check it to add it on any other track. Google's usage statistics are turned off (--no-usage-statistics)",
455
+ category: "understanding",
456
+ source: "ChromeDevTools",
457
+ condition: { kind: "opt-in" },
458
+ cliSupportOverride: ["claude", "codex", "opencode"],
459
+ method: { kind: "internal", key: "chrome-devtools" }
460
+ },
415
461
  // === csr-supabase|full CLI ===
416
462
  {
417
463
  id: "vercel-cli",
418
464
  tier: "vetted",
419
- // vercel/vercel 15k
420
- description: "Vercel CLI \u2014 the real deploy tool as a devDependency (global under --scope global). Only if this project deploys to Vercel. `vercel mcp` then wires Vercel's official MCP (OAuth) into Claude Code",
465
+ // vercel/vercel 16k
466
+ description: "Vercel CLI \u2014 the real deploy tool as a devDependency (global under --scope global). Only if this project deploys to Vercel. Non-interactive `vercel link`/deploy needs `--scope` when your account has several teams (55.0.0+)",
421
467
  category: "backend",
422
468
  source: "vercel",
423
469
  // 2026-08-02 사용자 결정: 트랙 기본 → opt-in (ADR-063). #709 가 ssr-nextjs 기본으로 바꿨다가 #715 에서 되돌렸다 —
424
470
  // 설치자 package.json 에 의존성을 더하고(에이전트는 npx 로 쓸 수 있다) login 없이는 쓸 것이 없으며 핀이 낡는다.
425
- // Next.js 의 Vercel 기본은 공식 MCP(#711)로 채운다.
471
+ // Vercel 공식 MCP 도 opt-in 이다(`vercel` 항목, #711 · ADR-106 — 사용자 확정 2026-10-11).
426
472
  condition: { kind: "opt-in" },
427
- method: { kind: "npm", pkg: "vercel", version: "54.17.3" }
473
+ method: { kind: "npm", pkg: "vercel", version: "63.1.2" }
428
474
  },
429
475
  {
430
476
  // v26.106.0 (ADR-035, 사용자 승인 B): 배포 CLI 2종 동시 기본의 중복 해소 — npm dl 실측 10.11:1
@@ -604,20 +650,6 @@ var EXTERNAL_ASSETS = [
604
650
  pluginId: "understand-anything@understand-anything"
605
651
  }
606
652
  },
607
- {
608
- id: "agentmemory",
609
- tier: "vetted",
610
- // rohitg00/agentmemory 21k
611
- description: "AgentMemory \u2014 a separate memory server (MCP + hooks) that persists state across sessions; the runtime server is its own install (npx @agentmemory/agentmemory). Check first whether your CLI's own memory and project records already cover it",
612
- category: "understanding",
613
- source: "rohitg00",
614
- condition: { kind: "opt-in" },
615
- method: {
616
- kind: "plugin",
617
- marketplace: "rohitg00/agentmemory",
618
- pluginId: "agentmemory@agentmemory"
619
- }
620
- },
621
653
  // === Visual & Media (v26.85.0) — 코드-퍼스트 제작 자산. 전부 opt-in. ===
622
654
  // Docker 실설치 검증 PASS (실 claude 2.1.177): plugin install / npx skills add resolve 확인.
623
655
  {
@@ -684,24 +716,22 @@ var EXTERNAL_ASSETS = [
684
716
  method: { kind: "skill", source: "hugohe3/ppt-master", skill: "ppt-master" }
685
717
  },
686
718
  {
687
- id: "web-video-presentation",
688
- tier: "vetted",
689
- // ConardLi/garden-skills 8.4k
690
- description: "web-video-presentation \u2014 click-driven 16:9 web decks that play like video, with optional TTS narration. Keeps a step-by-step approval procedure; use for narrated web presentations",
691
- category: "visual-media",
692
- source: "ConardLi",
693
- condition: { kind: "opt-in" },
694
- method: { kind: "skill", source: "ConardLi/garden-skills", skill: "web-video-presentation" }
695
- },
696
- {
697
- id: "revealjs",
698
- tier: "experimental",
699
- // ryanbbrown/revealjs-skill 347 (<1000 → experimental, opt-in + 경고)
700
- description: "reveal.js \u2014 HTML presentations with themes, code highlighting, and speaker notes, no build step. Overlaps the other HTML deck assets; pick it when you specifically need reveal.js templates or compatibility",
719
+ // ADR-104 (#726) — web-video-presentation 의 교체. plugin 인 이유: skill 방식이면 상류 CLI 가
720
+ // 작업 중 `npx hyperframes skills update`/`init` 으로 같은 스킬 디렉터리를 다시 쓰고 prune 해
721
+ // 설치 기록(#573 sha)과 어긋난다. plugin 모드는 그 런타임 설치를 상류가 스스로 금한다.
722
+ // Anthropic 공식 마켓플레이스 항목(sha 고정 URL 소스, 내용 저자 HeyGen) — 그래서 tier official.
723
+ id: "hyperframes",
724
+ tier: "official",
725
+ // anthropics/claude-plugins-official 등재 (heygen-com/hyperframes)
726
+ description: "HyperFrames \u2014 write video as HTML and render it to MP4 (headless Chrome + FFmpeg): narrated explainers, slideshow-style decks, captions and voice-over. Rendering needs Node 22+ and FFmpeg",
701
727
  category: "visual-media",
702
- source: "ryanbbrown",
728
+ source: "heygen-com",
703
729
  condition: { kind: "opt-in" },
704
- method: { kind: "skill", source: "ryanbbrown/revealjs-skill", skill: "revealjs" }
730
+ method: {
731
+ kind: "plugin",
732
+ marketplace: "anthropics/claude-plugins-official",
733
+ pluginId: "hyperframes@claude-plugins-official"
734
+ }
705
735
  },
706
736
  // === Supabase agent-skills (csr-supabase|full) ===
707
737
  {
@@ -830,25 +860,6 @@ var EXTERNAL_ASSETS = [
830
860
  pluginId: "finance-skills@claude-code-skills"
831
861
  }
832
862
  },
833
- // === Project Management Track (v0.5.0) ===
834
- // SPEC §3.5 — product-skills: has-dev-track + project-management 합집합 (executive/growth-marketing 제외).
835
- {
836
- id: "product-skills",
837
- tier: "vetted",
838
- // alirezarezvani 16k
839
- description: "product-skills \u2014 RICE prioritization, PRD, interview analysis, design tokens, project scaffolding (15 skills with Python tools). Pick it for product-management work, and use the tools you need",
840
- category: "dev-tools",
841
- source: "alirezarezvani",
842
- // v26.106.0 (ADR-035, 사용자 승인 C): dev 8트랙 기본에서 제외 — PM 스킬 15종은 PM 트랙 목적
843
- // 자산. dev 트랙은 wizard 체크 / --with 로 opt-in.
844
- // 2026-08-02 사용자 결정: 트랙 기본 → opt-in (ADR-063)
845
- condition: { kind: "opt-in" },
846
- method: {
847
- kind: "plugin",
848
- marketplace: "alirezarezvani/claude-skills",
849
- pluginId: "product-skills@claude-code-skills"
850
- }
851
- },
852
863
  // === Growth Marketing Track (v0.5.0) ===
853
864
  // 2026-08-02 정비 — alirezarezvani 번들 4종(c-level·business-growth·pm·marketing) +
854
865
  // research-summarizer 제거. 남는 마케팅 번들은 아래 coreyhaines31/marketingskills 하나로,
@@ -881,24 +892,29 @@ var EXTERNAL_ASSETS = [
881
892
  // karpathy-gate.sh · settings.json PreToolUse auto-wire)도 함께 삭제 — BREAKING, ADR-060.
882
893
  // === Option-gated ===
883
894
  {
884
- // v26.39.2 fix — marketplace name = "trailofbits" (NOT "trailofbits-skills") +
885
- // "trailofbits-skills" plugin 자체가 존재하지 않음. marketplace 안에 14+ 개별 plugin.
886
- // 단일 대표 plugin = `differential-review` (코드 변경 보안 리뷰, 가장 보편).
887
- // 추가 plugin 원하는 사용자는: `claude plugin install <name>@trailofbits` (예: audit-context-building)
888
- id: "trailofbits-skills",
889
- tier: "vetted",
890
- // trailofbits/skills 5.5k (CC-BY-SA — 출처 신뢰)
891
- description: "Trail of Bits differential-review \u2014 security review of a change: history, call impact, attack scenarios, verification scope. For security-relevant changes, not every PR",
895
+ // ADR-104 (#726) — trailofbits-skills(differential-review)의 교체. Anthropic 공식 플러그인.
896
+ // `git push` 에 훅을 걸고 스캔이 시간·토큰을 쓰므로 opt-in 이다.
897
+ id: "claude-security",
898
+ tier: "official",
899
+ // anthropics/claude-plugins-official 등재 (./plugins/claude-security)
900
+ description: "Claude Security \u2014 on-request vulnerability scan of a branch, PR, or commit diff; a verifier agent challenges each finding and results are tallied in code; asks you to confirm the cost before it starts. For a light diff check, the built-in /security-review is enough",
892
901
  category: "dev-tools",
893
- source: "trailofbits",
902
+ source: "anthropics",
894
903
  condition: { kind: "opt-in" },
895
904
  method: {
896
905
  kind: "plugin",
897
- marketplace: "trailofbits/skills",
898
- pluginId: "differential-review@trailofbits"
906
+ marketplace: "anthropics/claude-plugins-official",
907
+ pluginId: "claude-security@claude-plugins-official"
899
908
  }
900
909
  }
901
910
  ];
911
+ var REMOVED_CATALOG_ASSETS = {
912
+ "product-skills": {},
913
+ agentmemory: {},
914
+ revealjs: {},
915
+ "trailofbits-skills": { replacedBy: "claude-security" },
916
+ "web-video-presentation": { replacedBy: "hyperframes" }
917
+ };
902
918
  var DEV_METHOD_SKILL_IDS = [
903
919
  "compaction-handoff",
904
920
  "user-centered-explanation",
@@ -1029,7 +1045,7 @@ import { dirname as dirname3, join as join4 } from "path";
1029
1045
  // package.json
1030
1046
  var package_default = {
1031
1047
  name: "@uzysjung/agent-harness",
1032
- version: "26.165.0",
1048
+ version: "26.167.0",
1033
1049
  description: "Curate vetted AI-coding skills & plugins by your tech stack \u2014 install only what you need, across Claude Code, Codex, OpenCode & Antigravity",
1034
1050
  type: "module",
1035
1051
  publishConfig: {
@@ -2097,7 +2113,7 @@ var dev = (s) => hasDevTrack(s.tracks);
2097
2113
  var onTracks = (pattern) => (s) => anyTrack(s.tracks, pattern);
2098
2114
  var COMMON_RULES = ["git-policy", "change-management", "doc-governance"];
2099
2115
  var DEV_RULES = ["test-policy", "ship-checklist"];
2100
- var UI_RULES = [];
2116
+ var UI_RULES = ["ui-components"];
2101
2117
  var TRACK_RULES = {
2102
2118
  base: [],
2103
2119
  // #456 — 공통 룰만. cli-development 는 tooling·full 전용
@@ -2568,6 +2584,7 @@ export {
2568
2584
  anyTrack,
2569
2585
  hasUiTrack,
2570
2586
  EXTERNAL_ASSETS,
2587
+ REMOVED_CATALOG_ASSETS,
2571
2588
  DEV_METHOD_SKILL_IDS,
2572
2589
  INTERNAL_BUNDLED_SKILL_IDS,
2573
2590
  CONTINUOUS_SKILLS,
@@ -2654,4 +2671,4 @@ export {
2654
2671
  CATEGORIES,
2655
2672
  CATEGORY_TITLES
2656
2673
  };
2657
- //# sourceMappingURL=chunk-QHBJ7PMU.js.map
2674
+ //# sourceMappingURL=chunk-KVXCTS6D.js.map