@uzysjung/agent-harness 26.114.0 → 26.115.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/dist/index.js +3 -4
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/codex/README.md +0 -1
- package/templates/codex/config.toml.template +0 -8
- package/templates/codex/hooks/README.md +0 -1
- package/templates/opencode/AGENTS.md.template +0 -1
- package/templates/settings.json +1 -12
- package/templates/skills/northstar-roadmap/SKILL.md +6 -5
- package/templates/skills/recurrence-prevention/SKILL.md +10 -0
- package/templates/codex/hooks/hito-counter.sh +0 -7
- package/templates/hooks/hito-counter.sh +0 -26
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uzysjung/agent-harness",
|
|
3
|
-
"version": "26.
|
|
3
|
+
"version": "26.115.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": {
|
|
@@ -17,7 +17,6 @@ templates/codex/
|
|
|
17
17
|
├── config.toml.template # 프로젝트 .codex/config.toml (hooks + mcp + sandbox)
|
|
18
18
|
└── hooks/ # Shell 스크립트 (.claude/hooks/ 재사용 가능)
|
|
19
19
|
├── README.md # 포팅 상태 + Event 매핑
|
|
20
|
-
├── hito-counter.sh # user_prompt_submit
|
|
21
20
|
├── session-start.sh # session_start
|
|
22
21
|
└── uncommitted-check.sh # post_tool_use (Bash 한정)
|
|
23
22
|
```
|
|
@@ -50,14 +50,6 @@ type = "command"
|
|
|
50
50
|
timeout = 10
|
|
51
51
|
async = false
|
|
52
52
|
|
|
53
|
-
# UserPromptSubmit: HITO(Human-In-The-Loop Interrupts) 카운트
|
|
54
|
-
[[hooks.user_prompt_submit]]
|
|
55
|
-
name = "hito-counter"
|
|
56
|
-
command = ["{PROJECT_DIR}/.codex/hooks/hito-counter.sh"]
|
|
57
|
-
type = "command"
|
|
58
|
-
timeout = 5
|
|
59
|
-
async = true # non-blocking 측정
|
|
60
|
-
|
|
61
53
|
# PostToolUse: 미커밋 파일 경고 (Bash 한정)
|
|
62
54
|
[[hooks.post_tool_use]]
|
|
63
55
|
name = "uncommitted-check"
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
| Codex event (snake_case) | 스크립트 | 원본 (Claude) | 상태 |
|
|
9
9
|
|--------------------------|----------|---------------|------|
|
|
10
10
|
| `session_start` | `session-start.sh` | `.claude/hooks/session-start.sh` | Phase C 포팅 예정 |
|
|
11
|
-
| `user_prompt_submit` | `hito-counter.sh` | `.claude/hooks/hito-counter.sh` | Phase C 포팅 예정 |
|
|
12
11
|
| `post_tool_use` | `uncommitted-check.sh` | `.claude/hooks/uncommitted-check.sh` | Phase C 포팅 예정 |
|
|
13
12
|
| ❌ (hook 사용 안 함) | ❌ | `.claude/hooks/protect-files.sh` | **Codex sandbox로 이관 (ADR-002 v2 D3)** |
|
|
14
13
|
|
package/templates/settings.json
CHANGED
|
@@ -42,17 +42,6 @@
|
|
|
42
42
|
}
|
|
43
43
|
],
|
|
44
44
|
"PostToolUse": [],
|
|
45
|
-
"UserPromptSubmit": [
|
|
46
|
-
{
|
|
47
|
-
"hooks": [
|
|
48
|
-
{
|
|
49
|
-
"type": "command",
|
|
50
|
-
"command": "bash \"$CLAUDE_PROJECT_DIR/.claude/hooks/hito-counter.sh\"",
|
|
51
|
-
"async": true,
|
|
52
|
-
"timeout": 2
|
|
53
|
-
}
|
|
54
|
-
]
|
|
55
|
-
}
|
|
56
|
-
]
|
|
45
|
+
"UserPromptSubmit": []
|
|
57
46
|
}
|
|
58
47
|
}
|
|
@@ -73,8 +73,8 @@ Sanity-check the metric before trusting it:
|
|
|
73
73
|
north-star." Flag it instead of silently planning against a corrupt target.
|
|
74
74
|
|
|
75
75
|
> In this repo the literal north-star is **GitHub stars** (per memory and the service-audit
|
|
76
|
-
> roadmap), with the NORTH_STAR NSM (
|
|
77
|
-
> stars are supposed to reward. Plan toward stars **via** the value inputs, not by gaming the count.
|
|
76
|
+
> roadmap), with the NORTH_STAR NSM (context cost per install, justified-asset ratio) as the *value*
|
|
77
|
+
> the stars are supposed to reward. Plan toward stars **via** the value inputs, not by gaming the count.
|
|
78
78
|
|
|
79
79
|
### 2. ASSESS current state against each Input — expose the gap
|
|
80
80
|
|
|
@@ -123,12 +123,13 @@ document** — both the metric and the priorities are expected to be revised as
|
|
|
123
123
|
|
|
124
124
|
> **1. Metric + Inputs** (from `docs/NORTH_STAR.md`)
|
|
125
125
|
> North Star Metric: GitHub stars as the adoption signal that the harness delivers real value.
|
|
126
|
-
> Inputs: (a)
|
|
127
|
-
> (c) first-run install success, (d)
|
|
126
|
+
> Inputs: (a) context cost per install (resident + fired tokens), (b) Promise = Implementation
|
|
127
|
+
> (advertised assets 100% work), (c) first-run install success, (d) justified-asset ratio,
|
|
128
|
+
> (e) 4-CLI parity.
|
|
128
129
|
> *Leading-indicator check:* stars alone are gameable, so we plan against inputs (a)–(e), the value
|
|
129
130
|
> the stars reward — not the raw count.
|
|
130
131
|
>
|
|
131
|
-
> **2. Gap** — (a)
|
|
132
|
+
> **2. Gap** — (a) fired-body tokens unmeasured · (b) closed after no-false-ship work · (c)
|
|
132
133
|
> install-matrix green but no post-publish telemetry · (e) plugins don't yet reach non-Claude CLIs.
|
|
133
134
|
>
|
|
134
135
|
> **3. Direction** — "Make the *first 60 seconds* prove the value before asking for a star."
|
|
@@ -97,6 +97,16 @@ mechanism.** If the countermeasure's effect depends on someone (human or model)
|
|
|
97
97
|
the right moment, it is Level 1 no matter where the prose lives. Level 2 means the wrong action
|
|
98
98
|
*cannot complete*: the test fails, the hook exits 2, the duplicated list no longer exists.
|
|
99
99
|
|
|
100
|
+
**Write the gate as a sweep, not a list.** A Level-2 gate that enumerates the surfaces it covers
|
|
101
|
+
has just made a second copy of the very list that drifted — and whatever is missing from that copy
|
|
102
|
+
becomes the next habitat for the same defect. Prefer a glob, or a derive from a single source, that
|
|
103
|
+
picks up new surfaces on its own; if someone has to remember to extend the gate, it is already
|
|
104
|
+
failing at Level 1 wearing a Level-2 costume. Grant exemptions by marking the exempt item, never by
|
|
105
|
+
curating an inclusion list — the **default must be checked**. This harness learned it the expensive
|
|
106
|
+
way: five recurrences of one doc-fact drift, each answered by adding one more per-surface pattern,
|
|
107
|
+
and a file named as a drift surface in the fourth postmortem still carried zero coverage at the
|
|
108
|
+
fifth.
|
|
109
|
+
|
|
100
110
|
**Confirm before adding standing cost.** A rule is read every session and a gate runs on every
|
|
101
111
|
CI/tool call — both are permanent taxes on the harness. Levels 1 and 2 therefore need explicit
|
|
102
112
|
user confirmation (a brief escalation: signature, count with evidence, proposed artifact, its
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# ============================================================
|
|
3
|
-
# hito-counter.sh (v26.32.0)
|
|
4
|
-
# UserPromptSubmit hook — HITO (Human-In-The-Loop Occurrences) 측정용.
|
|
5
|
-
#
|
|
6
|
-
# NORTH_STAR.md NSM 추적을 위한 Phase 2 baseline 수집 인프라.
|
|
7
|
-
# 사용자 prompt submit 시마다 타임스탬프 1줄 추가.
|
|
8
|
-
# 프롬프트 내용은 기록하지 않음 (프라이버시).
|
|
9
|
-
#
|
|
10
|
-
# 로그 위치: .claude/evals/hito-YYYY-MM-DD.log
|
|
11
|
-
# 집계: `wc -l .claude/evals/hito-*.log` 로 일일 카운트
|
|
12
|
-
# 더 정밀한 분류(명시적 지시 vs 승인 vs 확인)는 수동 eval에서.
|
|
13
|
-
#
|
|
14
|
-
# Exit: 항상 0 (hook 차단 금지)
|
|
15
|
-
# ============================================================
|
|
16
|
-
|
|
17
|
-
DATE=$(date +%Y-%m-%d 2>/dev/null || echo "unknown")
|
|
18
|
-
LOG_DIR="${CLAUDE_PROJECT_DIR:-.}/.claude/evals"
|
|
19
|
-
LOG_FILE="$LOG_DIR/hito-$DATE.log"
|
|
20
|
-
|
|
21
|
-
mkdir -p "$LOG_DIR" 2>/dev/null || exit 0
|
|
22
|
-
|
|
23
|
-
TS=$(date -u +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || echo "?")
|
|
24
|
-
echo "$TS prompt_submit" >> "$LOG_FILE" 2>/dev/null
|
|
25
|
-
|
|
26
|
-
exit 0
|