tink-harness 1.0.0 → 1.2.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/.claude-plugin/plugin.json +2 -2
- package/CHANGELOG.md +67 -5
- package/README.ko.md +49 -153
- package/README.md +82 -40
- package/VERSIONING.md +8 -8
- package/bin/install.js +257 -111
- package/commands/cast.md +214 -46
- package/commands/frog.md +9 -0
- package/commands/update.md +1 -5
- package/commands/verify.md +252 -0
- package/commands/weave.md +41 -27
- package/docs/compatibility-policy.md +30 -0
- package/docs/mcp-safe-profile.md +118 -0
- package/docs/pr/2026-06-07-v1.2.0.md +60 -0
- package/docs/repo-signals.md +77 -0
- package/package.json +11 -6
- package/skills/tink/SKILL.md +73 -66
- package/templates/claude/commands/tink/cast.md +214 -46
- package/templates/claude/commands/tink/frog.md +9 -0
- package/templates/claude/commands/tink/update.md +1 -5
- package/templates/claude/commands/tink/verify.md +252 -0
- package/templates/claude/commands/tink/weave.md +41 -27
- package/templates/claude/skills/tink/SKILL.md +73 -66
- package/templates/codex/skills/tink-cast/SKILL.md +13 -0
- package/templates/codex/skills/tink-core/RULES.md +112 -0
- package/templates/codex/skills/tink-frog/SKILL.md +13 -0
- package/templates/codex/skills/tink-list/SKILL.md +13 -0
- package/templates/codex/skills/tink-setup/SKILL.md +13 -0
- package/templates/codex/skills/tink-update/SKILL.md +13 -0
- package/templates/codex/skills/tink-verify/SKILL.md +13 -0
- package/templates/codex/skills/tink-weave/SKILL.md +13 -0
- package/templates/tink/config.json +10 -1
- package/templates/tink/harnesses/index.json +174 -157
- package/templates/tink/harnesses/pr-merge.md +53 -0
- package/templates/tink/hooks/guards.json +32 -0
- package/templates/tink/hooks/user-prompt-submit.mjs +51 -49
- package/templates/tink/maintenance/friction.jsonl +1 -0
- package/templates/tink/rules/index.json +128 -0
- package/templates/tink/schemas/context-map.schema.json +154 -0
- package/templates/tink/schemas/contract.schema.json +113 -0
- package/templates/tink/schemas/session.schema.json +37 -0
- package/templates/tink/schemas/verification.schema.json +141 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,11 +2,73 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to Tink are tracked here.
|
|
4
4
|
|
|
5
|
-
## [Unreleased]
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
## [Unreleased]
|
|
6
|
+
|
|
7
|
+
No unreleased changes yet.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## [1.2.0] - 2026-06-07
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Codex autocomplete aliases matching the Claude Code command surface: `$tink:cast`, `$tink:verify`, `$tink:list`, `$tink:frog`, `$tink:weave`, `$tink:setup`, and `$tink:update`.
|
|
15
|
+
- Contract-first context artifacts for non-trivial runs: `context-pack.md`, `context-map.json`, and `excluded-context.md`.
|
|
16
|
+
- Repo Signal fixtures and documentation so `/tink:cast` can select relevant tests, schemas, sync partners, and verification hints without adding a new `tink index` command.
|
|
17
|
+
- Verify Runner schema and fixtures for `.tink/current/verification.json`, including pass, fail, blocked, skipped, final report, notes summary, and maintenance signal behavior.
|
|
18
|
+
- MCP Safe Profile documentation and external-context profile schema support for sources such as Figma, GitHub, official docs, dashboards, API responses, screenshots, attachments, and runbooks.
|
|
19
|
+
- Compatibility policy documenting that new Tink work must support Claude Code and Codex, plus macOS and Windows.
|
|
20
|
+
- PR history draft for this release in `docs/pr/2026-06-07-v1.2.0.md`.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- Codex documentation and installer next-step guidance now prefer `$tink:*` spelling while keeping legacy `$tink <action>` prompts compatible.
|
|
25
|
+
- Project guidance now uses lower-case `templates/codex/skills/` and the actual `.claude/` / `.claude-plugin/` paths so Mac/Linux case-sensitive filesystems match the documented structure.
|
|
26
|
+
- Codex skill display is focused on action aliases only; shared Codex rules now live in non-visible `tink-core/RULES.md`.
|
|
27
|
+
- `/tink:cast` records included, excluded, and external context more explicitly, including sensitivity, confidence, source handles, and verification hints.
|
|
28
|
+
- `/tink:verify` now uses one portable runner model for Claude Code `/tink:verify` and Codex `$tink:verify`.
|
|
29
|
+
- README and Korean README now explain the 1.2.0 release highlights and point to compatibility, repo signal, and MCP Safe Profile docs.
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
|
|
33
|
+
- Existing Codex installs that still have the old visible `skills/tink/SKILL.md` directory are cleaned up during install/update when it is recognized as the legacy Tink skill.
|
|
34
|
+
|
|
35
|
+
### Removed
|
|
36
|
+
|
|
37
|
+
- Removed the old installable Codex `tink` skill surface so the picker no longer shows duplicate or awkward `Tink: Tink` entries.
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
## [1.1.1] - 2026-05-26
|
|
41
|
+
|
|
42
|
+
### Added
|
|
43
|
+
|
|
44
|
+
- Small Writ-inspired rule selection: rule graph nodes now distinguish `mandatory` and `retrievable` guidance with phase, budget cost, and keyword metadata.
|
|
45
|
+
- Current-run `session.json` schema so Tink can record `loaded_rule_ids_by_phase` and avoid repeating the same rule guidance during a run.
|
|
46
|
+
- Verification evidence and friction templates: `/tink:verify` now documents `.tink/current/verification.json` evidence and `.tink/maintenance/friction.jsonl` failure signals.
|
|
47
|
+
|
|
48
|
+
### Changed
|
|
49
|
+
|
|
50
|
+
- `/tink:cast`, `/tink:verify`, and `/tink:weave` now describe the smaller rule-loading path: mandatory first, keyword retrieval second, phase dedupe, compact evidence, then repeated-friction promotion through weave.
|
|
51
|
+
- README and graph docs now explain the compact rule graph, verification evidence, and friction signal flow.
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
## [1.1.0] - 2026-05-26
|
|
55
|
+
|
|
56
|
+
### Added
|
|
57
|
+
|
|
58
|
+
- Contract-first run model: `/tink:cast` now writes `.tink/current/contract.json` for non-trivial runs so task type, risks, success conditions, forbidden actions, verification, and evidence are structured before harness bodies are loaded.
|
|
59
|
+
- `/tink:verify` command: runs the checks promised in the current contract, records compact evidence, and feeds failed checks into weave as `check_failed` signals.
|
|
60
|
+
- Repo-local rule graph templates in `.tink/rules/index.json`, plus `contract.schema.json`, so Tink can select relevant harnesses, checks, and opt-in guard candidates without loading large Markdown by default.
|
|
61
|
+
- Opt-in guard templates for repeated failures that should become real Claude Code hook boundaries after explicit approval.
|
|
62
|
+
- Documentation for graph contracts, verification, and guard promotion.
|
|
63
|
+
|
|
64
|
+
### Changed
|
|
65
|
+
|
|
66
|
+
- `/tink:weave` can now classify improvements as harness edits, rule graph updates, or opt-in hook guard candidates.
|
|
67
|
+
- Hook recommendation script now uses readable multilingual messages and keeps the default hook advisory-only.
|
|
68
|
+
|
|
69
|
+
### Planned
|
|
70
|
+
|
|
71
|
+
- Layered scope model: merge `global` (`~/.tink/`) + `repo` (`.tink/`) + `local` (`.tink/local/` or `.tink/settings.local.json`) following the Claude Code settings pattern. Tracked separately.
|
|
10
72
|
|
|
11
73
|
|
|
12
74
|
## [1.0.0] - 2026-05-25
|
package/README.ko.md
CHANGED
|
@@ -2,25 +2,11 @@
|
|
|
2
2
|
<img src=".github/assets/hero.gif" alt="Tink Hero Banner" width="100%">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
<strong>Tink</strong>
|
|
7
|
-
</h1>
|
|
5
|
+
# Tink
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
Claude Code와 Codex를 위한 작은 하네스 레이어입니다.
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
Tink는 작업에 맞는 하네스를 고르고, 작업에 맞는 하네스를 만들기도 하며, 하네스를 개선 및 제거도 합니다.
|
|
13
|
-
</p>
|
|
14
|
-
|
|
15
|
-
<p>
|
|
16
|
-
<em>Tink는 <strong>knit(뜨개질)</strong>을 거꾸로 한 이름입니다. 엉킨 작업 흐름을 풀고, 더 나은 흐름으로 다시 뜨개질해 묶어준다는 뜻입니다. 동시에 곁에 있는 작은 조력자 팅커벨에 대한 오마주이기도 합니다.</em>
|
|
17
|
-
</p>
|
|
18
|
-
|
|
19
|
-
<p>
|
|
20
|
-
<a href="https://github.com/dotoricode/tink-harness/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/dotoricode/tink-harness/ci.yml?branch=main&label=ci" alt="CI"></a>
|
|
21
|
-
<a href="https://github.com/dotoricode/tink-harness/blob/main/LICENSE"><img src="https://img.shields.io/github/license/dotoricode/tink-harness" alt="License"></a>
|
|
22
|
-
<a href="https://github.com/dotoricode/tink-harness/stargazers"><img src="https://img.shields.io/github/stars/dotoricode/tink-harness?style=social" alt="GitHub stars"></a>
|
|
23
|
-
</p>
|
|
9
|
+
Tink는 지금 작업에 맞는 하네스를 고르고, 실행 상태를 보이게 만들고, 실제 사용 중 생긴 실패와 피드백으로 하네스 세트를 개선합니다.
|
|
24
10
|
|
|
25
11
|
[English](README.md) · **한국어**
|
|
26
12
|
|
|
@@ -28,196 +14,106 @@
|
|
|
28
14
|
|
|
29
15
|
## 왜 만들었나
|
|
30
16
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
처음에는 하나씩 써보면서 저에게 맞는 것만 남겼습니다. 그런데 여러 개를 섞을수록 환경이 점점 엉켜갔습니다. 매번 처음부터 다시 정리하기가 지쳐서, 결국 제가 이해하고 통제할 수 있는 skill 기반 흐름으로 돌아갔습니다.
|
|
34
|
-
|
|
35
|
-
그 뒤로 한동안 Hermes Agent를 썼습니다. 그때 마음에 남은 것은, 쓸수록 시스템이 나아진다는 점이었습니다. 반복되는 작업이 다시 쓸 수 있는 skill이 되고, 실수가 기억이 되며, 시스템이 사용하는 사람에게 천천히 맞춰져 갔습니다.
|
|
17
|
+
새로운 AI 코딩 하네스와 워크플로는 계속 늘어납니다. 좋은 것도 많지만, 여러 개를 섞다 보면 환경이 무거워지고 매번 다시 정리해야 합니다.
|
|
36
18
|
|
|
37
|
-
Tink는
|
|
38
|
-
|
|
39
|
-
> Claude Code나 Codex도 저와 함께 이렇게 자랄 수 있을까요?
|
|
40
|
-
|
|
41
|
-
큰 프레임워크를 더 얹지 않고도, 에이전트를 더 늘리지 않고도. 그저 Claude나 Codex가 지금 작업에 맞는 하네스를 고르고, 맞는 게 없으면 새로 만들고, 시간이 지나며 그 모음을 더 좋게 다듬도록 돕는 방식으로요.
|
|
19
|
+
Tink는 큰 프레임워크가 아닙니다. Claude Code나 Codex가 지금 작업에 필요한 절차만 고르고, 없으면 작은 임시 하네스를 만들고, 반복되는 실수만 승인 후 재사용 지식으로 남기도록 돕습니다.
|
|
42
20
|
|
|
43
21
|
## 설치
|
|
44
22
|
|
|
45
|
-
Claude Code
|
|
23
|
+
Claude Code 플러그인:
|
|
46
24
|
|
|
47
25
|
```text
|
|
48
26
|
/plugin marketplace add dotoricode/tink-harness
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
```text
|
|
52
27
|
/plugin install tink@tink-harness
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
```text
|
|
56
28
|
/reload-plugins
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
```text
|
|
60
29
|
/tink:setup
|
|
61
30
|
```
|
|
62
31
|
|
|
63
|
-
|
|
32
|
+
Standalone / Codex 호환 설치:
|
|
64
33
|
|
|
65
34
|
```bash
|
|
66
|
-
npx
|
|
35
|
+
npx tink-harness@latest install
|
|
67
36
|
```
|
|
68
37
|
|
|
69
|
-
|
|
38
|
+
설치 중 `Claude Code`, `Codex`, 또는 둘 다를 선택할 수 있습니다. Codex에서는 `$tink:cast <task>`로 시작합니다.
|
|
70
39
|
|
|
71
40
|
## 업데이트
|
|
72
41
|
|
|
73
|
-
Claude Code
|
|
42
|
+
Claude Code 플러그인:
|
|
74
43
|
|
|
75
44
|
```text
|
|
76
45
|
/plugin marketplace update tink-harness
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
```text
|
|
80
46
|
/plugin update tink@tink-harness
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
```text
|
|
84
47
|
/reload-plugins
|
|
85
48
|
```
|
|
86
49
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
```text
|
|
90
|
-
/plugin uninstall tink@tink-harness
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
```text
|
|
94
|
-
/plugin install tink@tink-harness
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
기존 독립형 설치를 업데이트하려면(사용자 수정 파일은 유지됩니다):
|
|
50
|
+
Standalone / Codex:
|
|
98
51
|
|
|
99
52
|
```bash
|
|
100
|
-
npx
|
|
53
|
+
npx tink-harness@latest update
|
|
101
54
|
```
|
|
102
55
|
|
|
103
|
-
##
|
|
104
|
-
|
|
105
|
-
Tink는 명령 체계를 최소한으로 유지합니다.
|
|
106
|
-
|
|
107
|
-
Tink는 플러그인 우선 구조이며, 모든 명령은 `tink` 네임스페이스를 사용합니다. 따라서 공개되는 명령은 `/tink:*`로 한정되고 일반 명령과의 충돌을 피할 수 있습니다.
|
|
108
|
-
|
|
109
|
-
### `/tink:cast`
|
|
110
|
-
|
|
111
|
-
**cast**는 뜨개질에서 첫 코를 잡는 동작입니다. 모든 작업의 시작점이 됩니다.
|
|
112
|
-
|
|
113
|
-
Tink에서 `cast`는 기본 실행 흐름입니다. 작업을 읽고, 적절한 하네스를 선택하거나 초안을 만들고, 짧은 내부 검토를 거친 뒤 `.tink/current/`에 현재 작업 상태를 구성합니다. 이후 사용자 승인을 받고 안전한 첫 단계를 실행합니다.
|
|
114
|
-
|
|
115
|
-
단순한 질의응답을 넘어서는 작업이라면 보통 `cast`로 시작합니다.
|
|
116
|
-
|
|
117
|
-
### `/tink:frog`
|
|
118
|
-
|
|
119
|
-
**frog**는 잘못 뜬 부분을 풀어내는 뜨개질 용어입니다. 실을 푸는 소리인 "rip it, rip it"에서 이름이 왔습니다.
|
|
120
|
-
|
|
121
|
-
Tink에서 `frog`는:
|
|
56
|
+
## 1.2.0에서 달라진 점
|
|
122
57
|
|
|
123
|
-
|
|
124
|
-
- 다른 하네스와 역할이 겹치는 항목
|
|
125
|
-
- 범위가 지나치게 넓은 하네스
|
|
126
|
-
- 유지 비용 대비 효율이 낮은 하네스
|
|
58
|
+
이번 릴리스는 Tink를 Claude Code와 Codex에서 같은 하네스 레이어로 쓰기 쉽게 정리합니다.
|
|
127
59
|
|
|
128
|
-
|
|
60
|
+
- Codex에는 하나의 넓은 `tink` 스킬 대신 `$tink:cast`, `$tink:verify` 같은 action skill만 보이도록 설치됩니다.
|
|
61
|
+
- 비단순 작업은 `context-pack.md`, `context-map.json`, `excluded-context.md`로 어떤 context를 썼고 뺐는지 남깁니다.
|
|
62
|
+
- Repo Signal은 새 `tink index` 명령을 만들지 않고도 관련 테스트, 스키마, 동기화 파일, 검증 힌트를 고르는 데 쓰입니다.
|
|
63
|
+
- `/tink:verify`와 `$tink:verify`는 같은 Verify Runner 모델을 쓰며 `.tink/current/verification.json`에 검증 증거를 남깁니다.
|
|
64
|
+
- 외부 context는 MCP Safe Profile을 따릅니다. 가장 작은 source handle만 남기고, 신뢰도와 민감도를 표시하며, 위험하거나 너무 넓은 context는 `excluded-context.md`에 따로 기록합니다.
|
|
129
65
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
하네스 구성이 복잡하거나 정리가 필요할 때 사용합니다.
|
|
133
|
-
|
|
134
|
-
### `/tink:weave`
|
|
135
|
-
|
|
136
|
-
**weave**는 뜨개질을 마친 뒤 남은 실을 안쪽으로 정리해 마감하는 과정(**weave in**)에서 따온 이름입니다.
|
|
137
|
-
|
|
138
|
-
Tink에서 `weave`는 실제 사용 기록, 실패 사례, 사용자 수정 내용을 바탕으로 기존 하네스를 다듬습니다.
|
|
139
|
-
|
|
140
|
-
목표는 다음 실행이:
|
|
141
|
-
|
|
142
|
-
- 더 명확하고
|
|
143
|
-
- 더 안전하며
|
|
144
|
-
- 더 검증 가능하도록
|
|
145
|
-
|
|
146
|
-
개선하는 것입니다.
|
|
147
|
-
|
|
148
|
-
하네스가 거의 맞지만 조금씩 어긋나기 시작할 때 사용합니다.
|
|
149
|
-
|
|
150
|
-
### 기타 명령
|
|
151
|
-
|
|
152
|
-
- `/tink:setup`
|
|
153
|
-
- 언어, 설치 범위, Git 추적, Hook 정책을 설정합니다.
|
|
154
|
-
|
|
155
|
-
- `/tink:list`
|
|
156
|
-
- 사용 가능한 하네스와 최근 사용 내역을 확인합니다.
|
|
157
|
-
|
|
158
|
-
- `/tink:update`
|
|
159
|
-
- 설치 경로를 감지하고 안전한 업데이트 방법을 안내합니다.
|
|
160
|
-
|
|
161
|
-
## 동작 방식
|
|
66
|
+
## 명령
|
|
162
67
|
|
|
163
|
-
|
|
68
|
+
Claude Code에서는 `/tink:*`, Codex에서는 `$tink:*`을 씁니다. 예전 `$tink cast` 형식도 호환되지만, 기본 안내와 자동완성 표면은 `$tink:*`입니다.
|
|
164
69
|
|
|
165
|
-
|
|
166
|
-
- 재사용 가능한 작업 하네스
|
|
70
|
+
### `/tink:cast` / `$tink:cast`
|
|
167
71
|
|
|
168
|
-
|
|
169
|
-
- 현재 실행 상태
|
|
72
|
+
작업을 읽고, 필요한 하네스만 고르고, `.tink/current/` 실행 상태를 만든 뒤 첫 번째 안전한 단계를 시작합니다.
|
|
170
73
|
|
|
171
|
-
|
|
172
|
-
- 완료·중단·취소·교체된 실행 기록
|
|
74
|
+
Tink는 이제 비단순 작업에 대해 `.tink/current/contract.json`도 만듭니다. 이 파일에는 작업 종류, 위험, 성공 조건, 금지 사항, 검증 명령이 들어갑니다.
|
|
173
75
|
|
|
174
|
-
|
|
175
|
-
- 승인된 실수, 선호 설정, 작업 중 얻은 교훈
|
|
76
|
+
### `/tink:verify` / `$tink:verify`
|
|
176
77
|
|
|
177
|
-
|
|
78
|
+
`contract.json`에 적힌 검증을 실제로 실행하고 증거를 남깁니다.
|
|
178
79
|
|
|
179
|
-
|
|
80
|
+
릴리스, 배포, 공개 PR처럼 "된 것 같다"가 아니라 "확인했다"가 필요한 작업에서 씁니다.
|
|
180
81
|
|
|
181
|
-
|
|
182
|
-
- 메모리 저장
|
|
183
|
-
- 정리 작업
|
|
184
|
-
- 개선 제안
|
|
82
|
+
### `/tink:frog` / `$tink:frog`
|
|
185
83
|
|
|
186
|
-
|
|
84
|
+
거의 쓰지 않거나 겹치거나 너무 무거운 하네스를 정리 후보로 제안합니다. 사용자 승인 없이는 삭제하지 않습니다.
|
|
187
85
|
|
|
188
|
-
|
|
86
|
+
### `/tink:weave` / `$tink:weave`
|
|
189
87
|
|
|
190
|
-
|
|
88
|
+
실제 실패, 반복 사용, 사용자 수정 내용을 바탕으로 하네스를 조금 더 정확하게 고칩니다. 필요한 경우 `.tink/rules/`의 rule graph나 opt-in hook guard 후보로 승격합니다.
|
|
191
89
|
|
|
192
|
-
|
|
193
|
-
- 배포
|
|
194
|
-
- 삭제
|
|
195
|
-
- 대규모 수정
|
|
196
|
-
- 되돌리기 어려운 변경
|
|
90
|
+
### 기타
|
|
197
91
|
|
|
198
|
-
|
|
92
|
+
- `/tink:setup` / `$tink:setup`: 언어, 설치 범위, git 추적, hook 정책 설정
|
|
93
|
+
- `/tink:list` / `$tink:list`: 사용 가능한 하네스와 사용 신호 확인
|
|
94
|
+
- `/tink:update` / `$tink:update`: 설치 출처를 확인하고 안전한 업데이트 안내
|
|
199
95
|
|
|
200
|
-
|
|
96
|
+
## 작동 방식
|
|
201
97
|
|
|
202
|
-
|
|
203
|
-
- 메모리 항목
|
|
204
|
-
- `.claude/` 워크플로 파일
|
|
98
|
+
Tink는 직접 볼 수 있는 파일을 씁니다.
|
|
205
99
|
|
|
206
|
-
|
|
100
|
+
- `.tink/harnesses/`: 재사용 가능한 작업 하네스
|
|
101
|
+
- `.tink/rules/`: 계약 내용에 맞춰 필요한 하네스, 체크, guard 후보만 고르는 작은 rule graph
|
|
102
|
+
- `.tink/schemas/`: `contract.json` 같은 구조화 파일의 스키마
|
|
103
|
+
- `.tink/current/`: 현재 실행 상태
|
|
104
|
+
- `.tink/runs/`: 완료, 중단, 취소, 교체된 실행 기록
|
|
105
|
+
- `.tink/maintenance/`: 검증, friction, weave 신호 기록
|
|
106
|
+
- `.tink/memory/`: 승인된 실수, 선호, 교훈
|
|
207
107
|
|
|
208
|
-
|
|
108
|
+
Rule graph는 작게 유지합니다. Tink는 먼저 필수 규칙을 고르고, 작업 사실이나 keyword에 맞는 선택 규칙만 가져오며, phase별로 이미 읽은 rule id를 기록해 같은 안내를 반복하지 않습니다.
|
|
209
109
|
|
|
210
|
-
|
|
110
|
+
설계 메모는 `docs/`에 둡니다. 기본 호환성 기준은 `docs/compatibility-policy.md`에 있으며, 새 작업은 Claude Code와 Codex, macOS와 Windows를 함께 고려해야 합니다. Repo Signal 동작은 `docs/repo-signals.md`에 정리되어 있고, 외부 context 안전 기준은 `docs/mcp-safe-profile.md`에 정리되어 있습니다.
|
|
211
111
|
|
|
212
|
-
|
|
112
|
+
중요한 원칙은 승인입니다. 현재 작업을 진행하는 승인과, 미래에도 재사용될 상태를 저장하는 승인은 별개입니다. 새 하네스, 메모리, rule graph, hook guard 저장은 항상 별도 승인이 필요합니다.
|
|
213
113
|
|
|
214
|
-
|
|
215
|
-
- 워크플로 엔진
|
|
216
|
-
- 멀티 에이전트 런타임
|
|
217
|
-
- 프롬프트 라이브러리
|
|
218
|
-
- Claude Code나 Codex 대체 도구
|
|
114
|
+
## Tink가 아닌 것
|
|
219
115
|
|
|
220
|
-
Tink는 Claude Code
|
|
116
|
+
Tink는 코딩 에이전트, 워크플로 엔진, 멀티 에이전트 런타임, 프롬프트 라이브러리가 아닙니다. Claude Code와 Codex 위에 얹는 작은 하네스 레이어입니다.
|
|
221
117
|
|
|
222
118
|
## 라이선스
|
|
223
119
|
|
package/README.md
CHANGED
|
@@ -6,17 +6,18 @@
|
|
|
6
6
|
<strong>Tink</strong>
|
|
7
7
|
</h1>
|
|
8
8
|
|
|
9
|
-
<p>A small harness layer for Claude Code</p>
|
|
10
|
-
|
|
11
|
-
<p>
|
|
12
|
-
Tink helps Claude Code choose the right harness, keep run state visible, and improve the harness set as you work.
|
|
13
|
-
</p>
|
|
9
|
+
<p>A small harness layer for Claude Code and Codex</p>
|
|
10
|
+
|
|
11
|
+
<p>
|
|
12
|
+
Tink helps Claude Code or Codex choose the right harness, keep run state visible, and improve the harness set as you work.
|
|
13
|
+
</p>
|
|
14
14
|
|
|
15
15
|
<p>
|
|
16
16
|
<em>Tink is <strong>knit</strong> in reverse: untying tangled workflows and knitting better ones back together. It also nods to Tinker Bell, the small helper at your side.</em>
|
|
17
17
|
</p>
|
|
18
18
|
|
|
19
19
|
<p>
|
|
20
|
+
<a href="https://www.npmjs.com/package/tink-harness"><img src="https://img.shields.io/npm/v/tink-harness?label=npm&color=cb3837" alt="npm version"></a>
|
|
20
21
|
<a href="https://github.com/dotoricode/tink-harness/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/dotoricode/tink-harness/ci.yml?branch=main&label=ci" alt="CI"></a>
|
|
21
22
|
<a href="https://github.com/dotoricode/tink-harness/blob/main/LICENSE"><img src="https://img.shields.io/github/license/dotoricode/tink-harness" alt="License"></a>
|
|
22
23
|
<a href="https://github.com/dotoricode/tink-harness/stargazers"><img src="https://img.shields.io/github/stars/dotoricode/tink-harness?style=social" alt="GitHub stars"></a>
|
|
@@ -60,13 +61,21 @@ Claude Code plugin install:
|
|
|
60
61
|
/tink:setup
|
|
61
62
|
```
|
|
62
63
|
|
|
63
|
-
Standalone compatibility installer:
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
npx
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
Standalone installer auto-detects `LANG` (English fallback). Pass `--lang=en|ko|zh` to override.
|
|
64
|
+
Standalone compatibility installer:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npx tink-harness@latest install
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Standalone installer auto-detects `LANG` (English fallback). Pass `--lang=en|ko|zh` to override.
|
|
71
|
+
|
|
72
|
+
Codex skill install:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
npx tink-harness@latest install
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
During install, select `Codex` when asked which agent surface to install. You can select both `Claude Code` and `Codex` in the same run. Then open Codex and use `$tink:cast <task>`.
|
|
70
79
|
|
|
71
80
|
## Update
|
|
72
81
|
|
|
@@ -94,27 +103,53 @@ If update does not find the latest version, uninstall and install again:
|
|
|
94
103
|
/plugin install tink@tink-harness
|
|
95
104
|
```
|
|
96
105
|
|
|
97
|
-
To update an existing standalone install (keeps user-modified files):
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
npx
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
106
|
+
To update an existing standalone install (keeps user-modified files):
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
npx tink-harness@latest update
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
For Codex:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
npx tink-harness@latest update
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
During update, select the installed agent surface you want to refresh.
|
|
119
|
+
|
|
120
|
+
## What's new in 1.2.0
|
|
121
|
+
|
|
122
|
+
This release makes Tink work as one harness layer across Claude Code and Codex.
|
|
123
|
+
|
|
124
|
+
- Codex now installs focused `$tink:*` action skills instead of one broad visible `tink` skill, so the picker shows commands like `$tink:cast` and `$tink:verify` cleanly.
|
|
125
|
+
- Non-trivial runs now create context artifacts: `context-pack.md`, `context-map.json`, and `excluded-context.md`.
|
|
126
|
+
- Repo Signals help `/tink:cast` choose relevant tests, schemas, sync partners, and verification hints without adding a new `tink index` command.
|
|
127
|
+
- `/tink:verify` and `$tink:verify` share one portable Verify Runner model and write compact evidence to `.tink/current/verification.json`.
|
|
128
|
+
- External context now follows the MCP Safe Profile: include only the smallest useful source handle, mark confidence and sensitivity, exclude unsafe context visibly, and connect important claims to verification.
|
|
129
|
+
|
|
130
|
+
## Commands
|
|
131
|
+
|
|
132
|
+
Tink keeps the command surface small.
|
|
133
|
+
|
|
134
|
+
Tink is plugin-first in Claude Code. Commands are namespaced under `tink`, so the public surface stays `/tink:*` and avoids generic command conflicts. In Codex, Tink installs matching `$tink:*` skills for autocomplete: `$tink:cast`, `$tink:verify`, `$tink:list`, `$tink:frog`, `$tink:weave`, `$tink:setup`, and `$tink:update`. Legacy `$tink cast` style prompts still work, but `$tink:*` is the preferred spelling.
|
|
135
|
+
|
|
136
|
+
### `/tink:cast` / `$tink:cast`
|
|
110
137
|
|
|
111
138
|
**cast** means to place the first loops on the needle (코잡기, Cast on). In knitting, casting on is the very first step — it sets the foundation for everything that follows.
|
|
112
139
|
|
|
113
|
-
In Tink, `cast` is the main path. It reads the task, chooses or drafts the right harness, runs a quick internal sanity check, creates `.tink/current/` as the visible workbench, and starts the first safe step after approval.
|
|
114
|
-
|
|
115
|
-
Use it when the task is more than a quick answer.
|
|
116
|
-
|
|
117
|
-
### `/tink:
|
|
140
|
+
In Tink, `cast` is the main path. It reads the task, chooses or drafts the right harness, runs a quick internal sanity check, creates `.tink/current/` as the visible workbench, and starts the first safe step after approval.
|
|
141
|
+
|
|
142
|
+
Use it when the task is more than a quick answer.
|
|
143
|
+
|
|
144
|
+
### `/tink:verify` / `$tink:verify`
|
|
145
|
+
|
|
146
|
+
`verify` runs the checks promised in `.tink/current/contract.json`.
|
|
147
|
+
|
|
148
|
+
Tink now writes a small task contract for non-trivial runs: what kind of work this is, what must be true when it is done, what is forbidden, and which commands or manual checks prove it. `/tink:verify` uses that contract instead of relying on a vague "looks done" claim.
|
|
149
|
+
|
|
150
|
+
Use it before release, publish, deploy, public PR, or any task where evidence matters.
|
|
151
|
+
|
|
152
|
+
### `/tink:frog` / `$tink:frog`
|
|
118
153
|
|
|
119
154
|
**frog** means to rip out stitches (풀시오, Frogging). In knitting, frogging unravels rows that went wrong — the name comes from the sound of pulling out yarn, "rip it, rip it."
|
|
120
155
|
|
|
@@ -122,7 +157,7 @@ In Tink, `frog` looks for harnesses that are unused, overlapping, too broad, or
|
|
|
122
157
|
|
|
123
158
|
Use it when the harness set starts to feel noisy.
|
|
124
159
|
|
|
125
|
-
### `/tink:weave`
|
|
160
|
+
### `/tink:weave` / `$tink:weave`
|
|
126
161
|
|
|
127
162
|
**weave** means to weave in the ends (실오라기 정리, Weave in). In knitting, weaving in secures the loose threads left after finishing, giving the work its final shape.
|
|
128
163
|
|
|
@@ -132,20 +167,27 @@ Use it when a harness is useful but slightly wrong.
|
|
|
132
167
|
|
|
133
168
|
### Other commands
|
|
134
169
|
|
|
135
|
-
- `/tink:setup`: choose language, install scope, git tracking, and hook policy.
|
|
136
|
-
- `/tink:list`: inspect available harnesses and recent usage signals.
|
|
137
|
-
- `/tink:update`: detect install source and show the safe update command.
|
|
170
|
+
- `/tink:setup` / `$tink:setup`: choose language, install scope, git tracking, and hook policy.
|
|
171
|
+
- `/tink:list` / `$tink:list`: inspect available harnesses and recent usage signals.
|
|
172
|
+
- `/tink:update` / `$tink:update`: detect install source and show the safe update command.
|
|
138
173
|
|
|
139
174
|
## How it works
|
|
140
175
|
|
|
141
176
|
Tink uses files you can inspect:
|
|
142
177
|
|
|
143
|
-
- `.tink/harnesses/`: reusable task harnesses
|
|
144
|
-
- `.tink/
|
|
145
|
-
- `.tink/
|
|
146
|
-
- `.tink/
|
|
147
|
-
|
|
148
|
-
|
|
178
|
+
- `.tink/harnesses/`: reusable task harnesses
|
|
179
|
+
- `.tink/rules/`: a small rule graph that chooses only relevant harnesses, checks, and opt-in guard candidates
|
|
180
|
+
- `.tink/schemas/`: structured file schemas, including the current run contract
|
|
181
|
+
- `.tink/current/`: the current run state
|
|
182
|
+
- `.tink/runs/`: compact records from finished, blocked, canceled, or replaced runs
|
|
183
|
+
- `.tink/maintenance/`: verification, friction, and weave signals that help repeated failures become approved improvements
|
|
184
|
+
- `.tink/memory/`: approved mistakes, preferences, and lessons
|
|
185
|
+
|
|
186
|
+
The rule graph stays small on purpose. Tink loads matching mandatory rules first, retrieves only relevant optional rules by task facts or keywords, and records loaded rule ids by phase so the same guidance is not repeated in one run.
|
|
187
|
+
|
|
188
|
+
Design notes live in `docs/`. The compatibility baseline is `docs/compatibility-policy.md`: every new slice should consider Claude Code and Codex, plus macOS and Windows. Repo signal behavior is described in `docs/repo-signals.md`. External context safety is described in `docs/mcp-safe-profile.md`.
|
|
189
|
+
|
|
190
|
+
The important rule is approval.
|
|
149
191
|
|
|
150
192
|
Tink may suggest a harness, a memory entry, a cleanup, or an improvement. Before each run is committed, Tink runs one quick sanity check and surfaces a proposal only when something important is at stake. Low-risk steps let you continue with recorded assumptions; irreversible or externally visible actions (publish, deploy, deletions, broad changes) require explicit approval. Saving anything reusable — a new harness, a memory entry, a `.claude/` workflow file — always needs its own separate approval; approving the current run does not authorize saves that future installs would inherit.
|
|
151
193
|
|
package/VERSIONING.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Versioning
|
|
2
2
|
|
|
3
|
-
Current version: `
|
|
3
|
+
Current version: `1.2.0`
|
|
4
4
|
|
|
5
|
-
Tink
|
|
5
|
+
Tink follows semver from `1.0.0` onward.
|
|
6
6
|
|
|
7
7
|
## Source of truth
|
|
8
8
|
|
|
@@ -15,13 +15,13 @@ Keep these versions aligned for every versioned release:
|
|
|
15
15
|
|
|
16
16
|
Claude Code uses `.claude-plugin/plugin.json` to decide whether plugin users can receive an update. If this value does not change, `/plugin update` can report that the plugin is already latest even after new commits.
|
|
17
17
|
|
|
18
|
-
##
|
|
18
|
+
## Bump rules
|
|
19
19
|
|
|
20
|
-
Use semver
|
|
20
|
+
Use semver.
|
|
21
21
|
|
|
22
|
-
- Patch, for example `
|
|
23
|
-
- Minor, for example `
|
|
24
|
-
- Major `
|
|
22
|
+
- Patch, for example `1.1.2`: docs, tests, installer polish, command wording, small template fixes, non-breaking maintenance structure. Prefer a patch release for each user-visible improvement instead of letting many small changes pile up in `[Unreleased]`.
|
|
23
|
+
- Minor, for example `1.1.0`: new command behavior, meaningful installer flow change, new persisted state shape, or anything existing users should deliberately notice — all backwards compatible.
|
|
24
|
+
- Major, for example `2.0.0`: breaking change to the command surface, plugin contract, persisted state shape, or installer flow that existing users must migrate for.
|
|
25
25
|
|
|
26
26
|
## Release checklist
|
|
27
27
|
|
|
@@ -67,7 +67,7 @@ Claude Code plugin users:
|
|
|
67
67
|
Standalone compatibility installer users:
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
|
-
npx
|
|
70
|
+
npx tink-harness@latest update
|
|
71
71
|
```
|
|
72
72
|
|
|
73
73
|
`update` preserves user-modified files. The `--force` flag is reserved for emergency repair and is not the recommended path.
|