@uzysjung/agent-harness 26.148.1 → 26.149.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.
@@ -287,6 +287,36 @@ var EXTERNAL_ASSETS = [
287
287
  condition: { kind: "any-track", tracks: [...TRACKS] },
288
288
  method: { kind: "internal", key: "audit-harness-fit" }
289
289
  },
290
+ {
291
+ // CI 가 멈췄을 때(결제 실패·쿼터 소진·Actions 장애) 검증을 포기하지도, 위조하지도 않는 절차.
292
+ // has-dev-track 인 이유: 이건 **누가 요청해서 켜는 것이 아니라 사고가 났을 때 켜지는** 것이다.
293
+ // CI 가 죽고 나서야 필요해지는 자산을 opt-in 으로 두면, 정작 그 순간에 없다. 대신 executive
294
+ // 트랙에는 깔지 않는다 — 거기엔 워크플로가 없다.
295
+ // DEV_METHOD_SKILL_IDS 에 넣지 않는 이유: 저건 wizard 의 "하네스 방법론 N종" 묶음이고,
296
+ // 이건 방법론이 아니라 사고 대응 런북이다. 묶음에 끼면 묶음의 뜻이 흐려진다.
297
+ id: "self-hosted-github-runner",
298
+ tier: "official",
299
+ // uzys 자사 스킬
300
+ description: "Self-hosted GitHub runner \u2014 when hosted runners stop (billing failure, spending limit, minutes exhausted, org quota, Actions outage), run the repo's existing workflow files unchanged on a Docker self-hosted runner instead of copying CI steps into a local script; covers runner-label switching, architecture and cache-key traps, container isolation, the risk that pull_request jobs then execute on your own machine, and the rollback path",
301
+ category: "dev-tools",
302
+ source: "uzys",
303
+ condition: { kind: "has-dev-track" },
304
+ method: { kind: "internal", key: "self-hosted-github-runner" }
305
+ },
306
+ {
307
+ // 트랙과 무관한 글쓰기 규율이라 어느 트랙에서도 고를 수 있고, 어느 트랙에도 자동으로는
308
+ // 안 깔린다(opt-in). 한국어로 쓰지 않는 사용자에게 기본 설치되면 그대로 낭비다.
309
+ // clear-korean-communication 과의 경계: 저쪽은 **무엇을 어떤 형식으로 말할지**(설명·승인
310
+ // 요청의 구조)이고, 이쪽은 **이미 쓴 글의 문체**를 진단해 최소 수정한다.
311
+ id: "humanize-korean",
312
+ tier: "official",
313
+ // uzys 자사 스킬
314
+ description: "Humanize Korean \u2014 diagnose what actually reads as translationese, AI clich\xE9, or mechanical structure in Korean prose, then fix only what the diagnosis justifies, preserving facts, numbers, terminology and register (opt-in). References epoko77-ai/im-not-ai",
315
+ category: "workflow",
316
+ source: "uzys",
317
+ condition: { kind: "opt-in" },
318
+ method: { kind: "internal", key: "humanize-korean" }
319
+ },
290
320
  // === Option-gated (v26.42.0 — opt-in, BREAKING vs prior has-dev-track auto-install) ===
291
321
  {
292
322
  id: "addy-agent-skills",
@@ -999,7 +1029,9 @@ var INTERNAL_BUNDLED_SKILL_IDS = [
999
1029
  "task-brief",
1000
1030
  "audit-harness-fit",
1001
1031
  "model-orchestration",
1002
- "external-model-consult"
1032
+ "external-model-consult",
1033
+ "self-hosted-github-runner",
1034
+ "humanize-korean"
1003
1035
  ];
1004
1036
  var TRUST_TIER = Object.fromEntries(
1005
1037
  EXTERNAL_ASSETS.map((a) => [a.id, a.tier])
@@ -1440,12 +1472,21 @@ var FILL_SPECS = {
1440
1472
  placeholder: "the single command that proves a change is safe, and the done bar"
1441
1473
  }
1442
1474
  };
1443
- var SCAFFOLD_BANNER = [
1444
- "> \u2699\uFE0F **SCAFFOLD \u2014 not filled in yet.** The sections below are a fill-in template for THIS project, not verified facts.",
1445
- "> To fill: open this file and paste each `<!-- FILL: \u2026 -->` comment's instruction into your coding agent (e.g. Claude Code) \u2014 it will inspect the real repo and write the section. You can also fill them by hand; the comments are the instructions.",
1446
- `> The working principles live in this project's harness anchor \u2014 \`${HARNESS_ANCHOR_FILE}\` (Claude Code, imported from this file), \`AGENTS.md\` (Codex/OpenCode), or \`.agents/rules/uzys-harness.md\` (Antigravity). This file is **project-specific context only**.`
1447
- ].join("\n");
1448
- function renderFillScaffold() {
1475
+ function anchorLine(surface) {
1476
+ if (surface === "claude") {
1477
+ return `> The working principles live in this project's harness anchor \`${HARNESS_ANCHOR_FILE}\`, imported at the bottom of this file. Everything above that import is **project-specific context only**.`;
1478
+ }
1479
+ const self = surface === "antigravity-rule" ? "`.agents/rules/uzys-harness.md`" : "`AGENTS.md`";
1480
+ return `> **This file (${self}) is the harness anchor** \u2014 it carries the working principles in full, further down. Only the \`## \u2026\` sections immediately below are project-specific context for you to fill in.`;
1481
+ }
1482
+ function scaffoldBanner(surface) {
1483
+ return [
1484
+ "> \u2699\uFE0F **SCAFFOLD \u2014 not filled in yet.** The sections below are a fill-in template for THIS project, not verified facts.",
1485
+ "> To fill: open this file and paste each `<!-- FILL: \u2026 -->` comment's instruction into your coding agent (e.g. Claude Code) \u2014 it will inspect the real repo and write the section. You can also fill them by hand; the comments are the instructions.",
1486
+ anchorLine(surface)
1487
+ ].join("\n");
1488
+ }
1489
+ function renderFillScaffold(surface = "claude") {
1449
1490
  const blocks = FILL_SECTIONS.map((id) => {
1450
1491
  const spec = FILL_SPECS[id];
1451
1492
  return `## ${spec.title}
@@ -1454,7 +1495,7 @@ function renderFillScaffold() {
1454
1495
 
1455
1496
  _(not filled yet \u2014 ${spec.placeholder})_`;
1456
1497
  });
1457
- return `${SCAFFOLD_BANNER}
1498
+ return `${scaffoldBanner(surface)}
1458
1499
 
1459
1500
  ${blocks.join("\n\n")}`;
1460
1501
  }
@@ -2002,4 +2043,4 @@ export {
2002
2043
  formatResidentCostLine,
2003
2044
  formatResidentCostBlock
2004
2045
  };
2005
- //# sourceMappingURL=chunk-PTUM2NI3.js.map
2046
+ //# sourceMappingURL=chunk-YSW3OLH4.js.map