@uzysjung/agent-harness 26.161.0 → 26.162.1

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
@@ -22,15 +22,14 @@ Node 20 이상이 필요하다. 프로젝트 폴더에서 다음 명령을 실
22
22
  npx -y @uzysjung/agent-harness
23
23
  ```
24
24
 
25
- 위저드가 다음 여섯 단계를 안내한다:
25
+ 위저드가 다음 다섯 단계를 안내한다:
26
26
 
27
27
  ```
28
- 1/6 Tracks 무엇을 만드는지(스택) — 항목을 미리 체크해 줄 뿐이다
29
- 2/6 CLI claude / codex / opencode / antigravity — 여러 개 가능
30
- 3/6 Install items 트랙에 맞는 항목이 미리 체크되어 있다. 원치 않는 것은 해제
31
- 4/6 Scope Project(기본값, 이 폴더에만) 또는 Global
32
- 5/6 Confirm 요약과 함께, 이 선택이 매 세션에 얹는 컨텍스트 크기를 보여 준다
33
- 6/6 Installing
28
+ 1/5 Tracks 무엇을 만드는지(스택) — 항목을 미리 체크해 줄 뿐이다
29
+ 2/5 CLI claude / codex / opencode / antigravity — 여러 개 가능
30
+ 3/5 Install items 트랙에 맞는 항목이 미리 체크되어 있다. 원치 않는 것은 해제
31
+ 4/5 Confirm 요약과 함께, 이 선택이 매 세션에 얹는 컨텍스트 크기를 보여 준다
32
+ 5/5 Installing
34
33
  ```
35
34
 
36
35
  그다음 같은 폴더에서 AI 코딩 도구를 실행하면, 첫 세션부터 룰과 스킬이 바로 적용된다:
@@ -94,7 +93,7 @@ claude # 또는 codex / opencode / agy
94
93
 
95
94
  **기존 프로젝트에 적용해도 안전하다.** 내가 직접 수정한 파일을 교체해야 할 때는 타임스탬프를 붙여 백업본을 남기고 그 경로를 알려 준다. 내가 작성하거나 수정한 파일은 백업 없이 지우지 않으며, 기존에 있던 `.mcp.json` 서버 설정은 덮어쓰지 않고 내용을 병합한다([기존 프로젝트에 설치하기](docs/USAGE.md#installing-into-an-existing-project)).
96
95
 
97
- **기본적으로 현재 프로젝트에만 설치된다.** 위저드 4단계에서 Global 을 선택하지 않는 한 `~/.codex/` · `~/.opencode/` · `~/.gemini/` 디렉터리나 전역 npm 환경에는 아무것도 설치하지 않는다. 유일한 예외는 Claude Code 플러그인이다 — `claude` CLI 는 범위를 불문하고 플러그인 캐시를 `~/.claude/plugins/` 디렉터리에 저장하며 프로젝트는 메타데이터로 구분하기 때문이다. `.claude/` 디렉터리 밖에는 `.mcp.json`, `.gitignore` 파일에 추가하는 몇 줄(파일이 이미 있을 때), Supabase 트랙의 경우 `.env.example`, 그리고 설치 기록을 남기는 `.uzys-agent-harness/` 디렉터리만 생성한다 — [전체 설치 목록 보기](docs/USAGE.md#what-the-harness-writes).
96
+ **현재 프로젝트에만 설치된다.** `~/.codex/` · `~/.opencode/` · `~/.gemini/` 디렉터리나 전역 npm 환경에는 아무것도 설치하지 않는다. 유일한 예외는 Claude Code 플러그인이다 — `claude` CLI 는 플러그인 캐시를 `~/.claude/plugins/` 디렉터리에 저장하며 프로젝트는 메타데이터로 구분하기 때문이다. `.claude/` 디렉터리 밖에는 `.mcp.json`, `.gitignore` 파일에 추가하는 몇 줄(파일이 이미 있을 때), Supabase 트랙의 경우 `.env.example`, 그리고 설치 기록을 남기는 `.uzys-agent-harness/` 디렉터리만 생성한다 — [전체 설치 목록 보기](docs/USAGE.md#what-the-harness-writes).
98
97
 
99
98
  ## 다른 도구를 이미 쓰고 있다면
100
99
 
package/README.md CHANGED
@@ -22,15 +22,14 @@ You need Node 20 or newer. Run this in your project folder:
22
22
  npx -y @uzysjung/agent-harness
23
23
  ```
24
24
 
25
- The wizard asks six things:
25
+ The wizard asks five things:
26
26
 
27
27
  ```
28
- 1/6 Tracks what you are building (a stack) — this only pre-checks items
29
- 2/6 CLI claude / codex / opencode / antigravity — one or more
30
- 3/6 Install items everything is pre-checked for your track; uncheck what you don't want
31
- 4/6 Scope Project (default, this folder only) or Global
32
- 5/6 Confirm summary, plus how much context your selection adds to each session
33
- 6/6 Installing
28
+ 1/5 Tracks what you are building (a stack) — this only pre-checks items
29
+ 2/5 CLI claude / codex / opencode / antigravity — one or more
30
+ 3/5 Install items everything is pre-checked for your track; uncheck what you don't want
31
+ 4/5 Confirm summary, plus how much context your selection adds to each session
32
+ 5/5 Installing
34
33
  ```
35
34
 
36
35
  Then open your AI coding tool in the same folder. The rules and skills are live from the first session:
@@ -94,7 +93,7 @@ In a terminal, `uninstall` offers three choices — one CLI, selected assets, or
94
93
 
95
94
  **Safe on an existing project.** Before replacing a file you edited, the harness writes a timestamped backup next to it and prints the path. Nothing you wrote or edited is deleted without a backup beside it, and your existing `.mcp.json` servers are merged, not replaced ([installing into an existing project](docs/USAGE.md#installing-into-an-existing-project)).
96
95
 
97
- **Your project only, by default.** Nothing goes to `~/.codex/`, `~/.opencode/`, `~/.gemini/`, or global npm unless you choose Global at step 4. Claude Code plugins are the one exception: the `claude` CLI keeps its plugin cache under `~/.claude/plugins/` in either scope and isolates projects by metadata. Besides `.claude/`, install writes `.mcp.json`, a few `.gitignore` lines (when that file exists), an `.env.example` on Supabase tracks, and its own record at `.uzys-agent-harness/` — [the full list](docs/USAGE.md#what-the-harness-writes).
96
+ **Your project only.** Nothing goes to `~/.codex/`, `~/.opencode/`, `~/.gemini/`, or global npm. Claude Code plugins are the one exception: the `claude` CLI keeps its plugin cache under `~/.claude/plugins/` and isolates projects by metadata. Besides `.claude/`, install writes `.mcp.json`, a few `.gitignore` lines (when that file exists), an `.env.example` on Supabase tracks, and its own record at `.uzys-agent-harness/` — [the full list](docs/USAGE.md#what-the-harness-writes).
98
97
 
99
98
  ## Already using another tool?
100
99
 
@@ -1483,15 +1483,6 @@ function copyBackupDir(target, now = /* @__PURE__ */ new Date()) {
1483
1483
  cpSync(realpathSync(target), backup, { recursive: true });
1484
1484
  return backup;
1485
1485
  }
1486
- function backupFileIfChanged(target, newContent, now = /* @__PURE__ */ new Date()) {
1487
- if (!existsSync2(target)) {
1488
- return null;
1489
- }
1490
- if (readFileSync2(target, "utf-8") === newContent) {
1491
- return null;
1492
- }
1493
- return backupFile(target, now);
1494
- }
1495
1486
  function backupFile(target, now = /* @__PURE__ */ new Date()) {
1496
1487
  return claimBackupPath(
1497
1488
  `${target}.backup-${formatStamp(now)}`,
@@ -1626,7 +1617,7 @@ function mergeRootFiles(previous, current) {
1626
1617
  const prior = byPath.get(file.path);
1627
1618
  byPath.set(
1628
1619
  file.path,
1629
- prior ? {
1620
+ prior && file.change !== "displaced" ? {
1630
1621
  path: file.path,
1631
1622
  change: prior.change === "created" ? "created" : file.change,
1632
1623
  notes: [.../* @__PURE__ */ new Set([...prior.notes, ...file.notes])]
@@ -1808,7 +1799,60 @@ var RETIRED_AGENTS = [
1808
1799
  { id: "silent-failure-hunter", instead: "Claude Code \uC758 `/code-review` \uAC00 \uAC19\uC740 \uC77C\uC744 \uD55C\uB2E4" },
1809
1800
  { id: "build-error-resolver", instead: "\uBAA8\uB378\uC774 \uAE30\uBCF8\uC73C\uB85C \uD558\uB294 \uC77C\uC774\uB77C \uB300\uCCB4 \uC790\uC0B0\uC774 \uC5C6\uB2E4" }
1810
1801
  ];
1811
- var RETIRED_AGENT_IDS = RETIRED_AGENTS.map((a) => a.id);
1802
+ var RETIRED_PATHS = [
1803
+ // rules (23)
1804
+ "rules/api-contract.md",
1805
+ "rules/benchmark-parity.md",
1806
+ "rules/code-style.md",
1807
+ "rules/commit-policy.md",
1808
+ "rules/data-analysis.md",
1809
+ "rules/database.md",
1810
+ "rules/design-workflow.md",
1811
+ "rules/ecc-git-workflow.md",
1812
+ "rules/ecc-performance-common.md",
1813
+ "rules/ecc-security-common.md",
1814
+ "rules/ecc-testing.md",
1815
+ "rules/error-handling.md",
1816
+ "rules/gates-taxonomy.md",
1817
+ "rules/gsd-planner-antipatterns.md",
1818
+ "rules/htmx.md",
1819
+ "rules/model-routing.md",
1820
+ "rules/nextjs.md",
1821
+ "rules/no-false-ship.md",
1822
+ "rules/playwright-launch.md",
1823
+ "rules/pyside6.md",
1824
+ "rules/seo.md",
1825
+ "rules/shadcn.md",
1826
+ "rules/tauri.md",
1827
+ // agents (5)
1828
+ "agents/build-error-resolver.md",
1829
+ "agents/code-reviewer.md",
1830
+ "agents/plan-checker.md",
1831
+ "agents/security-reviewer.md",
1832
+ "agents/silent-failure-hunter.md",
1833
+ // commands/uzys (7)
1834
+ "commands/uzys/auto.md",
1835
+ "commands/uzys/build.md",
1836
+ "commands/uzys/plan.md",
1837
+ "commands/uzys/review.md",
1838
+ "commands/uzys/ship.md",
1839
+ "commands/uzys/spec.md",
1840
+ "commands/uzys/test.md",
1841
+ // hooks (10)
1842
+ "hooks/agentshield-gate.sh",
1843
+ "hooks/checkpoint-snapshot.sh",
1844
+ "hooks/codebase-map.sh",
1845
+ "hooks/gate-check.sh",
1846
+ "hooks/hito-counter.sh",
1847
+ "hooks/karpathy-gate.sh",
1848
+ "hooks/mcp-pre-exec.sh",
1849
+ "hooks/spec-drift-check.sh",
1850
+ "hooks/task-brief-nudge.sh",
1851
+ "hooks/uncommitted-check.sh"
1852
+ ];
1853
+ var RETIRED_AGENT_IDS = RETIRED_PATHS.filter(
1854
+ (p) => p.startsWith("agents/")
1855
+ ).map((p) => p.slice("agents/".length).replace(/\.md$/, ""));
1812
1856
  var ALWAYS_HOOKS = ["session-start.sh", "protect-files.sh"];
1813
1857
  var COMMON_SKILL_DIRS = [];
1814
1858
  var DEV_SKILL_DIRS = [];
@@ -2001,7 +2045,6 @@ export {
2001
2045
  copyDir,
2002
2046
  backupDir,
2003
2047
  copyBackupDir,
2004
- backupFileIfChanged,
2005
2048
  backupFile,
2006
2049
  listFilesRecursive,
2007
2050
  ensureProjectSkeleton,
@@ -2024,10 +2067,11 @@ export {
2024
2067
  ALL_RULES,
2025
2068
  TRACK_AGENTS,
2026
2069
  RETIRED_AGENTS,
2070
+ RETIRED_PATHS,
2027
2071
  RETIRED_AGENT_IDS,
2028
2072
  isCliNeutralTarget,
2029
2073
  buildManifest,
2030
2074
  CATEGORIES,
2031
2075
  CATEGORY_TITLES
2032
2076
  };
2033
- //# sourceMappingURL=chunk-MBRLCU5O.js.map
2077
+ //# sourceMappingURL=chunk-3G34MEGZ.js.map