@uzysjung/agent-harness 26.147.0 → 26.148.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 +5 -5
- package/README.md +3 -3
- package/dist/{chunk-GPH5AWLX.js → chunk-PTUM2NI3.js} +25 -20
- package/dist/chunk-PTUM2NI3.js.map +1 -0
- package/dist/index.js +224 -123
- package/dist/index.js.map +1 -1
- package/dist/trust-tier-drift.js +1 -1
- package/package.json +2 -1
- package/templates/rules/ship-checklist.md +1 -0
- package/templates/scripts/check-absence.sh +17 -3
- package/dist/chunk-GPH5AWLX.js.map +0 -1
package/README.ko.md
CHANGED
|
@@ -50,28 +50,28 @@ npx -y @uzysjung/agent-harness uninstall # 무엇을 뺄지 고른다
|
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
터미널에서 `uninstall` 을 실행하면 항목별로 지울지 전부 지울지 묻는다. 안전하게 되돌릴 수 있는
|
|
53
|
-
것만 되돌리고, 글로벌
|
|
53
|
+
것만 되돌리고, 글로벌 자산과 `.mcp.json` 같은 `.claude/` 밖 파일은 지우는 대신 경로를
|
|
54
54
|
*출력한다* — 사용자 내용이 섞인 파일은 기계적으로 고치지 않는다. 설치 화면에서 체크를 풀어도
|
|
55
55
|
제거되지 않으며, 제거는 오직 이 명령에서만 일어난다. 자세한 내용은
|
|
56
56
|
[uninstall](docs/USAGE.md#uninstall-v26640) 참고.
|
|
57
57
|
|
|
58
58
|
## 왜
|
|
59
59
|
|
|
60
|
-
코딩 에이전트는 계속
|
|
60
|
+
코딩 에이전트는 계속 발전하지만, 한 번 설치한 skill 과 MCP 는 실제 사용과 무관하게 매 세션 context window 를 점유한다. awesome-list 에 수백 개의 선택지가 있어도 내 기술 스택에 맞는 항목을 찾아주지는 않는다. 결국 전부 설치해 매 세션 불필요한 비용을 치르거나, 프로젝트를 시작할 때마다 직접 목록을 확인하고 골라야 한다.
|
|
61
61
|
|
|
62
62
|
이 도구는 스택에서 출발한다. 원하는 track 을 고르면 해당 track 이 필요로 하는 자산이 미리 체크된다. 사용자는 설치를 진행하기 전에 선택된 자산을 검토하고 필요 없는 항목을 해제할 수 있다.
|
|
63
63
|
|
|
64
64
|
## 무엇을 얻는가
|
|
65
65
|
|
|
66
|
-
- **스택 기반 큐레이션.** 검증된 옵션 중에서 이 프로젝트에 실제로 필요한 자산만 골라 설치한다. `csr-supabase` 를 고르면
|
|
66
|
+
- **스택 기반 큐레이션.** 검증된 옵션 중에서 이 프로젝트에 실제로 필요한 자산만 골라 설치한다. `csr-supabase` 를 고르면 세 묶음이 미리 체크된다 — 모든 track 이 받는 4종(`north-star`·`task-brief`·`gh-issue-workflow`·`audit-harness-fit`), 개발 track 이 받는 것들(`find-skills`·`agent-browser`·`frontend-design` + 방법론 스킬 6종), 그리고 이 스택이 필요로 하는 React·shadcn·Supabase·Postgres. 카탈로그의 나머지는 처음부터 끼어들지 않는다.
|
|
67
67
|
|
|
68
|
-
- **규율 레이어.** 실제 프로덕션 프로젝트를 에이전트로 운영하며 추출한 룰·훅·방법론 스킬·CI 스캐폴드로 구성된다. 문서 거버넌스와 검증 게이트,
|
|
68
|
+
- **규율 레이어.** 실제 프로덕션 프로젝트를 에이전트로 운영하며 추출한 룰·훅·방법론 스킬·CI 스캐폴드로 구성된다. 문서 거버넌스와 검증 게이트, 작업 브리프 정규화, 재발 방지 체계를 아우르며, 특히 스킬 14종은 마켓플레이스에 의존하지 않고 이 저장소에서 직접 쓰고 관리한다. 그중 12종은 id 로 지정할 수 있고(`--with`/`--without`), 그 12종 가운데 6종은 3단계 화면에서 한 줄로 묶여 함께 켜지고 꺼진다. 이 레이어 덕분에 단순한 skill 모음을 넘어선 하네스로 작동한다.
|
|
69
69
|
|
|
70
70
|
- **4개 CLI, 하나의 어휘.** 1급 지원 대상인 Claude Code 에는 모든 자산·훅·plugin 을 적용하고, Codex, OpenCode, Antigravity 에는 skill 과 rule 레이어를 적용한다. 프로젝트가 특정 CLI 에 묶이지 않는다.
|
|
71
71
|
|
|
72
72
|
## 검증
|
|
73
73
|
|
|
74
|
-
vetted 등급의 조건은
|
|
74
|
+
vetted 등급의 조건은 GitHub star 1,000개 이상, 활발한 유지보수, 격리된 Docker 컨테이너에서의 실설치 검증 통과 세 가지다. 매월 CI cron 이 이 세 기준을 다시 검사한다.
|
|
75
75
|
|
|
76
76
|
단, vetted 가 라인 단위 보안 감사나 prompt-injection 스캔을 거쳤다는 뜻은 아니다. npm 과 npx 자산은 버전을 고정하지만, plugin 과 skill 자산은 upstream HEAD 를 참조하므로 아직 commit 을 고정하지 않는다. 설치하는 모든 자산은 일반적인 서드파티 의존성과 똑같이 취급할 것 — [SECURITY.md](SECURITY.md) 참고.
|
|
77
77
|
|
package/README.md
CHANGED
|
@@ -49,7 +49,7 @@ npx -y @uzysjung/agent-harness update # refresh it to the current release
|
|
|
49
49
|
npx -y @uzysjung/agent-harness uninstall # pick what to remove
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
Run in a terminal, `uninstall` asks what to take out — item by item, or everything. It reverses what it safely can and *prints* the rest — global assets,
|
|
52
|
+
Run in a terminal, `uninstall` asks what to take out — item by item, or everything. It reverses what it safely can and *prints* the rest — global-scope assets, and files outside `.claude/` such as `.mcp.json` — instead of editing files that hold your own content. Unchecking something in the installer never removes it; removal only happens here. See [uninstall](docs/USAGE.md#uninstall-v26640).
|
|
53
53
|
|
|
54
54
|
## Why
|
|
55
55
|
|
|
@@ -59,9 +59,9 @@ This tool starts from the stack instead. You pick a track, and it pre-checks the
|
|
|
59
59
|
|
|
60
60
|
## What you get
|
|
61
61
|
|
|
62
|
-
- **Curation by tech stack.** Of the vetted options, you install only what this project calls for. Pick `csr-supabase` and step 3 pre-checks React, shadcn, Supabase,
|
|
62
|
+
- **Curation by tech stack.** Of the vetted options, you install only what this project calls for. Pick `csr-supabase` and step 3 pre-checks three groups: the four that every track gets (`north-star`, `task-brief`, `gh-issue-workflow`, `audit-harness-fit`), the dev-track set (`find-skills`, `agent-browser`, `frontend-design`, and the six method skills), and the ones this stack calls for — React, shadcn, Supabase, Postgres. Not the rest of the catalog.
|
|
63
63
|
|
|
64
|
-
- **A discipline layer.** Rules, hooks, method skills, and CI scaffolds distilled from running real production projects with agents: doc governance, verification gates,
|
|
64
|
+
- **A discipline layer.** Rules, hooks, method skills, and CI scaffolds distilled from running real production projects with agents: doc governance, verification gates, normalized task briefs, recurrence prevention. Fourteen of those skills are written and maintained in this repo rather than pulled from a marketplace — twelve of them selectable by id with `--with` / `--without`, six of which collapse into one row at step 3 — so the harness ships the method, not just a pointer to one. This layer is what makes it a harness rather than a skill pack.
|
|
65
65
|
|
|
66
66
|
- **Four CLIs, one vocabulary.** Claude Code is first class — all assets, hooks, and plugins. Codex, OpenCode, and Antigravity get the skills and rules layer. Your project is not locked to one CLI.
|
|
67
67
|
|
|
@@ -443,23 +443,25 @@ var EXTERNAL_ASSETS = [
|
|
|
443
443
|
method: { kind: "npm", pkg: "supabase", version: "2.108.0" }
|
|
444
444
|
},
|
|
445
445
|
// === UI tracks (csr-*|ssr-*|full) ===
|
|
446
|
-
// v26.92.0 — frontend-design (Anthropic official
|
|
446
|
+
// v26.92.0 — frontend-design (Anthropic official).
|
|
447
447
|
// 사용자 결정: has-dev-track 기본추천 (모든 개발 트랙, executive 제외).
|
|
448
448
|
// category=frontend (UI 자산, wizard 그룹).
|
|
449
|
-
//
|
|
449
|
+
//
|
|
450
|
+
// 2026-08-26 (#344) — **plugin → skill.** 배달 방식이 도달 CLI 를 정한다(assetCliSupport):
|
|
451
|
+
// `plugin` 은 `claude plugin install` 을 spawn 하므로 **구조적으로 Claude Code 전용**이라,
|
|
452
|
+
// Codex·OpenCode·Antigravity 를 고른 사용자는 기본 추천 자산인데도 한 번도 받지 못했다
|
|
453
|
+
// (사용자 적발). 같은 스킬이 `anthropics/skills` 에 원본으로 있고 `npx skills add` 는
|
|
454
|
+
// `--agent` 로 네 CLI 전부에 깐다 — 실재 확인 2026-08-26: `skills/frontend-design/SKILL.md`.
|
|
455
|
+
// tier 는 official 그대로(저자 동일). marketplace 경유가 아니게 되어 upstream 판본을 직접 쓴다.
|
|
450
456
|
{
|
|
451
457
|
id: "frontend-design",
|
|
452
458
|
tier: "official",
|
|
453
|
-
// anthropics/
|
|
459
|
+
// anthropics/skills (Anthropic 저자, ★171.5K — 2026-08-26 gh api 실측)
|
|
454
460
|
description: "frontend-design \u2014 distinctive production-grade UI generation (Anthropic official, avoids generic AI aesthetics)",
|
|
455
461
|
category: "frontend",
|
|
456
462
|
source: "anthropics",
|
|
457
463
|
condition: { kind: "has-dev-track" },
|
|
458
|
-
method: {
|
|
459
|
-
kind: "plugin",
|
|
460
|
-
marketplace: "anthropics/claude-plugins-official",
|
|
461
|
-
pluginId: "frontend-design@claude-plugins-official"
|
|
462
|
-
}
|
|
464
|
+
method: { kind: "skill", source: "anthropics/skills", skill: "frontend-design" }
|
|
463
465
|
},
|
|
464
466
|
// 2026-08-02 정비 — 프론트엔드 품질 3종 (사용자 지시). 전부 opt-in: frontend-design 이 기본
|
|
465
467
|
// 생성기이고 이 셋은 그 위의 취향·디테일 층이라 상시 비용을 물릴 근거가 없다 (ADR-032/035
|
|
@@ -1093,12 +1095,21 @@ function copyFile(source, target) {
|
|
|
1093
1095
|
mkdirSync(dirname(target), { recursive: true });
|
|
1094
1096
|
copyFileSync(source, target);
|
|
1095
1097
|
}
|
|
1096
|
-
function copyDir(source, target) {
|
|
1098
|
+
function copyDir(source, target, foreignOf) {
|
|
1097
1099
|
if (!existsSync(source)) {
|
|
1098
1100
|
throw new Error(`Source dir not found: ${source}`);
|
|
1099
1101
|
}
|
|
1100
1102
|
mkdirSync(target, { recursive: true });
|
|
1101
|
-
|
|
1103
|
+
const skipped = [];
|
|
1104
|
+
for (const rel of listFilesRecursive(source)) {
|
|
1105
|
+
const foreign = foreignOf(rel);
|
|
1106
|
+
if (foreign !== null) {
|
|
1107
|
+
skipped.push(foreign);
|
|
1108
|
+
continue;
|
|
1109
|
+
}
|
|
1110
|
+
copyFile(join(source, rel), join(target, rel));
|
|
1111
|
+
}
|
|
1112
|
+
return skipped;
|
|
1102
1113
|
}
|
|
1103
1114
|
var MAX_BACKUP_CLAIMS = 100;
|
|
1104
1115
|
function claimBackupPath(base, claim) {
|
|
@@ -1664,25 +1675,19 @@ function buildManifest(spec) {
|
|
|
1664
1675
|
type: "file",
|
|
1665
1676
|
applies: all
|
|
1666
1677
|
});
|
|
1667
|
-
|
|
1668
|
-
source: "skills/market-research",
|
|
1669
|
-
target: ".claude/skills/market-research",
|
|
1670
|
-
type: "dir",
|
|
1671
|
-
applies: onTracks("executive|full")
|
|
1672
|
-
});
|
|
1673
|
-
for (const sd of ["investor-materials", "investor-outreach"]) {
|
|
1678
|
+
for (const sd of ["market-research", "investor-materials", "investor-outreach"]) {
|
|
1674
1679
|
m.push({
|
|
1675
1680
|
source: `skills/${sd}`,
|
|
1676
1681
|
target: `.claude/skills/${sd}`,
|
|
1677
1682
|
type: "dir",
|
|
1678
|
-
applies: onTracks("executive|full")
|
|
1683
|
+
applies: (s) => !s.withEcc && onTracks("executive|full")(s)
|
|
1679
1684
|
});
|
|
1680
1685
|
}
|
|
1681
1686
|
m.push({
|
|
1682
1687
|
source: "skills/nextjs-turbopack",
|
|
1683
1688
|
target: ".claude/skills/nextjs-turbopack",
|
|
1684
1689
|
type: "dir",
|
|
1685
|
-
applies: onTracks("ssr-nextjs|full")
|
|
1690
|
+
applies: (s) => !s.withEcc && onTracks("ssr-nextjs|full")(s)
|
|
1686
1691
|
});
|
|
1687
1692
|
for (const sd of INTERNAL_BUNDLED_SKILL_IDS) {
|
|
1688
1693
|
m.push({
|
|
@@ -1997,4 +2002,4 @@ export {
|
|
|
1997
2002
|
formatResidentCostLine,
|
|
1998
2003
|
formatResidentCostBlock
|
|
1999
2004
|
};
|
|
2000
|
-
//# sourceMappingURL=chunk-
|
|
2005
|
+
//# sourceMappingURL=chunk-PTUM2NI3.js.map
|