tink-harness 1.0.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.
Files changed (44) hide show
  1. package/.claude-plugin/marketplace.json +14 -0
  2. package/.claude-plugin/plugin.json +8 -0
  3. package/CHANGELOG.md +109 -0
  4. package/LICENSE +21 -0
  5. package/README.ko.md +224 -0
  6. package/README.md +166 -0
  7. package/VERSIONING.md +73 -0
  8. package/bin/install.js +520 -0
  9. package/commands/cast.md +484 -0
  10. package/commands/frog.md +77 -0
  11. package/commands/list.md +104 -0
  12. package/commands/setup.md +185 -0
  13. package/commands/update.md +90 -0
  14. package/commands/weave.md +81 -0
  15. package/hooks/hooks.json +15 -0
  16. package/package.json +52 -0
  17. package/skills/tink/SKILL.md +66 -0
  18. package/templates/claude/commands/tink/cast.md +484 -0
  19. package/templates/claude/commands/tink/frog.md +77 -0
  20. package/templates/claude/commands/tink/list.md +104 -0
  21. package/templates/claude/commands/tink/setup.md +185 -0
  22. package/templates/claude/commands/tink/update.md +90 -0
  23. package/templates/claude/commands/tink/weave.md +81 -0
  24. package/templates/claude/skills/tink/SKILL.md +66 -0
  25. package/templates/tink/config.json +20 -0
  26. package/templates/tink/harnesses/HARNESS.md +28 -0
  27. package/templates/tink/harnesses/bug-fix.md +31 -0
  28. package/templates/tink/harnesses/code-change.md +30 -0
  29. package/templates/tink/harnesses/docs.md +30 -0
  30. package/templates/tink/harnesses/harness-curation.md +78 -0
  31. package/templates/tink/harnesses/harness-synthesis.md +52 -0
  32. package/templates/tink/harnesses/index.json +157 -0
  33. package/templates/tink/harnesses/pre-publish-multi-agent-verify.md +44 -0
  34. package/templates/tink/harnesses/research.md +31 -0
  35. package/templates/tink/harnesses/review.md +31 -0
  36. package/templates/tink/harnesses/ship.md +33 -0
  37. package/templates/tink/harnesses/tink-feedback-apply.md +37 -0
  38. package/templates/tink/hooks/user-prompt-submit.json +7 -0
  39. package/templates/tink/hooks/user-prompt-submit.mjs +49 -0
  40. package/templates/tink/maintenance/ledger.jsonl +0 -0
  41. package/templates/tink/maintenance/weave-queue.json +3 -0
  42. package/templates/tink/memory/lessons.md +17 -0
  43. package/templates/tink/memory/mistakes.md +16 -0
  44. package/templates/tink/memory/preferences.md +16 -0
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "tink-harness",
3
+ "description": "Claude Code harness workflow plugin marketplace.",
4
+ "owner": {
5
+ "name": "dotori"
6
+ },
7
+ "plugins": [
8
+ {
9
+ "name": "tink",
10
+ "source": "./",
11
+ "description": "A small harness layer for Claude Code."
12
+ }
13
+ ]
14
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "tink",
3
+ "description": "A small harness layer for Claude Code.",
4
+ "version": "1.0.0",
5
+ "author": {
6
+ "name": "dotori"
7
+ }
8
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,109 @@
1
+ # Changelog
2
+
3
+ All notable changes to Tink are tracked here.
4
+
5
+ ## [Unreleased]
6
+
7
+ ### Planned (v1.1)
8
+
9
+ - 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
+
11
+
12
+ ## [1.0.0] - 2026-05-25
13
+
14
+ First stable release. All hardening gates passed.
15
+
16
+ ### Added
17
+
18
+ - `pre-publish-multi-agent-verify` harness: 5-agent parallel verification harness for npm publish readiness. Agents cover install matrix, UX walkthrough, doc consistency, secret leak audit, and slash/contract coverage.
19
+
20
+ ### Fixed
21
+
22
+ - `update` subcommand never propagated template changes to existing installs. Commands, skills, and maintenance files now always overwrite on update; harnesses, hooks, memory, and config are preserved when user-modified (respects `weave` customizations).
23
+ - `VERSIONING.md` update command used `npx tink-harness@latest update` (npm registry form, fails before first publish). Changed to `npx github:dotoricode/tink-harness update` (GitHub form, always works).
24
+
25
+ ### Removed
26
+
27
+ - Remaining phantom references to `context-habit-calibration` in `cast.md`, `list.md`, and `SKILL.md` (harness was merged into `harness-curation` in v0.1.5).
28
+
29
+
30
+ ## [0.1.5] - 2026-05-24
31
+
32
+ ### Added
33
+
34
+ - `tink-feedback-apply` harness: classify user feedback about Tink into the correct layer (behavioral, UX, preference, harness procedure, or new harness) and apply the minimum viable change.
35
+ - `/tink:list` output redesign: multi-line per harness, header field description, three categories (작업용 / 메타 / 이 저장소 전용), assessment section, and next-command suggestions.
36
+
37
+ ### Changed
38
+
39
+ - Built-in harness `## Checks` sections replaced generic boilerplate with domain-specific checks:
40
+ - `research`: decision named, options compared, facts/guesses labeled, recommendation follows evidence.
41
+ - `review`: correctness/security/data/UX risk addressed, severity labeled, no speculative blockers.
42
+ - `ship`: CI checks pass or reason stated, rollback documented, artifacts listed, risks explicit.
43
+ - `ship` Plan step 3: "Prepare notes for humans" → "Draft PR or release summary: what changed, what risks, what rollback."
44
+ - `harness-curation` now includes context habit calibration (signals, 6 habit types, calibration procedure) as an inline section. No separate harness needed.
45
+ - `index.json`: `harness-synthesis` and `harness-curation` classified as `kind: "meta"` to distinguish from work harnesses.
46
+
47
+ ### Removed
48
+
49
+ - `context-habit-calibration` standalone harness. Its content is now part of `harness-curation`.
50
+
51
+
52
+ ## [0.1.4] - 2026-05-23
53
+
54
+ ### Added
55
+
56
+ - `/tink:update` slash command: detects install source, diagnoses user-modified files, and shows the safe update command.
57
+ - `npx tink-harness update` subcommand: data-preserving update that keeps user-modified files. Use `--force` to overwrite everything (data loss risk).
58
+ - HARNESS.md harness catalog for fast human scanning.
59
+ - Hard-gate behavior for `ship` harness (release/publish/deploy/PR) — runs the safety gate at initial approval, not just at the first risky step.
60
+
61
+ ### Changed
62
+
63
+ - Default installer language now auto-detects from `LANG`/`LANGUAGE`/`LC_ALL`, falling back to English; previously hardcoded to Korean.
64
+ - README Update section recommends `npx ... update` only. The `install --force` path is no longer documented as a user-facing option (the `--force` flag remains in the code for emergency use but is not advertised).
65
+ - `/tink:cast` approval format uses plain language for the soft-gate review block; internal labels are kept in code/docs but not shown to the user.
66
+ - `/tink:cast` UX overhauls: shorter prompts, fewer approval gates for trivial tasks, single consolidated approval for soft-gate cases.
67
+
68
+ ### Fixed
69
+
70
+ - Restored the README hero image after the previous fix targeted the wrong surface.
71
+ - Increased the installer TINK banner contrast for dark terminal themes.
72
+
73
+
74
+ ## [0.1.3]
75
+
76
+ Skipped during pre-v1 sequencing.
77
+
78
+
79
+ ## [0.1.2] - 2026-05-22
80
+
81
+ ### Changed
82
+
83
+ - Added a synthesis probe so `/tink:cast` can detect when a built-in harness is only a generic fit.
84
+ - Made run-only draft harnesses the default path for generic-fit cases, with saving still requiring separate approval.
85
+ - Clarified that `harness-synthesis` should handle both `no fit` and `generic fit` cases.
86
+
87
+ ## [0.1.1] - 2026-05-22
88
+
89
+ ### Added
90
+
91
+ - Existing-user update instructions for Claude Code plugin installs.
92
+ - Standalone compatibility installer refresh command using `--force`.
93
+ - Maintenance evidence structure: approval ledger and weave queue templates.
94
+ - Run record fields for selected, rejected, actually loaded, and maintenance evidence.
95
+
96
+ ### Changed
97
+
98
+ - Bumped the Claude Code plugin version to make `/plugin update` detect the latest release.
99
+ - Clarified `unknown` evidence handling for `/tink:list`.
100
+ - Added evidence grades for `/tink:frog` and evidence handles for `/tink:weave`.
101
+
102
+ ## [0.1.0] - 2026-05-22
103
+
104
+ ### Added
105
+
106
+ - Initial pre-v1 plugin shape for Tink.
107
+ - Plugin-first `/tink:*` command surface.
108
+ - Standalone compatibility installer.
109
+ - Built-in harnesses, setup flow, optional hook recommendation, and visible `.tink/` state model.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 dotori
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.ko.md ADDED
@@ -0,0 +1,224 @@
1
+ <p align="center">
2
+ <img src=".github/assets/hero.gif" alt="Tink Hero Banner" width="100%">
3
+ </p>
4
+
5
+ <h1>
6
+ <strong>Tink</strong>
7
+ </h1>
8
+
9
+ <p>사람과 함께 일하며 함께 자라는 하네스</p>
10
+
11
+ <p>
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>
24
+
25
+ [English](README.md) · **한국어**
26
+
27
+ ---
28
+
29
+ ## 왜 만들었나
30
+
31
+ 요즘 새로운 AI 하네스가 거의 매일 등장합니다. 그중 상당수는 저에게 정말 유용했습니다.
32
+
33
+ 처음에는 하나씩 써보면서 저에게 맞는 것만 남겼습니다. 그런데 여러 개를 섞을수록 환경이 점점 엉켜갔습니다. 매번 처음부터 다시 정리하기가 지쳐서, 결국 제가 이해하고 통제할 수 있는 skill 기반 흐름으로 돌아갔습니다.
34
+
35
+ 그 뒤로 한동안 Hermes Agent를 썼습니다. 그때 마음에 남은 것은, 쓸수록 시스템이 나아진다는 점이었습니다. 반복되는 작업이 다시 쓸 수 있는 skill이 되고, 실수가 기억이 되며, 시스템이 사용하는 사람에게 천천히 맞춰져 갔습니다.
36
+
37
+ Tink는 단순한 질문에서 시작됐습니다:
38
+
39
+ > Claude Code나 Codex도 저와 함께 이렇게 자랄 수 있을까요?
40
+
41
+ 큰 프레임워크를 더 얹지 않고도, 에이전트를 더 늘리지 않고도. 그저 Claude나 Codex가 지금 작업에 맞는 하네스를 고르고, 맞는 게 없으면 새로 만들고, 시간이 지나며 그 모음을 더 좋게 다듬도록 돕는 방식으로요.
42
+
43
+ ## 설치
44
+
45
+ Claude Code 플러그인 설치:
46
+
47
+ ```text
48
+ /plugin marketplace add dotoricode/tink-harness
49
+ ```
50
+
51
+ ```text
52
+ /plugin install tink@tink-harness
53
+ ```
54
+
55
+ ```text
56
+ /reload-plugins
57
+ ```
58
+
59
+ ```text
60
+ /tink:setup
61
+ ```
62
+
63
+ 독립형(Standalone) 호환 설치 프로그램:
64
+
65
+ ```bash
66
+ npx github:dotoricode/tink-harness install
67
+ ```
68
+
69
+ 독립형 설치 프로그램은 `LANG` 환경 변수를 자동으로 감지합니다(감지 실패 시 영어 기본값). 강제로 지정하려면 `--lang=en|ko|zh`를 넘기세요.
70
+
71
+ ## 업데이트
72
+
73
+ Claude Code 플러그인 사용자:
74
+
75
+ ```text
76
+ /plugin marketplace update tink-harness
77
+ ```
78
+
79
+ ```text
80
+ /plugin update tink@tink-harness
81
+ ```
82
+
83
+ ```text
84
+ /reload-plugins
85
+ ```
86
+
87
+ 업데이트 명령으로 최신 버전을 찾지 못하면, 제거 후 다시 설치하세요:
88
+
89
+ ```text
90
+ /plugin uninstall tink@tink-harness
91
+ ```
92
+
93
+ ```text
94
+ /plugin install tink@tink-harness
95
+ ```
96
+
97
+ 기존 독립형 설치를 업데이트하려면(사용자 수정 파일은 유지됩니다):
98
+
99
+ ```bash
100
+ npx github:dotoricode/tink-harness update
101
+ ```
102
+
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`는:
122
+
123
+ - 더 이상 사용하지 않는 하네스
124
+ - 다른 하네스와 역할이 겹치는 항목
125
+ - 범위가 지나치게 넓은 하네스
126
+ - 유지 비용 대비 효율이 낮은 하네스
127
+
128
+ 를 찾아 정리를 제안합니다.
129
+
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
+ ## 동작 방식
162
+
163
+ Tink는 사용자가 직접 확인할 수 있는 파일 구조를 사용합니다.
164
+
165
+ - `.tink/harnesses/`
166
+ - 재사용 가능한 작업 하네스
167
+
168
+ - `.tink/current/`
169
+ - 현재 실행 상태
170
+
171
+ - `.tink/runs/`
172
+ - 완료·중단·취소·교체된 실행 기록
173
+
174
+ - `.tink/memory/`
175
+ - 승인된 실수, 선호 설정, 작업 중 얻은 교훈
176
+
177
+ 가장 중요한 원칙은 **승인(approval)** 입니다.
178
+
179
+ Tink는:
180
+
181
+ - 하네스 생성
182
+ - 메모리 저장
183
+ - 정리 작업
184
+ - 개선 제안
185
+
186
+ 을 수행할 수 있지만, 실제 적용 전에는 항상 사용자 확인을 거칩니다.
187
+
188
+ 실행 전에는 짧은 점검 단계를 수행하며, 중요한 변경이 있을 때만 별도 제안을 표시합니다.
189
+
190
+ 위험이 낮은 작업은 기록된 가정을 바탕으로 계속 진행할 수 있습니다. 하지만:
191
+
192
+ - 공개
193
+ - 배포
194
+ - 삭제
195
+ - 대규모 수정
196
+ - 되돌리기 어려운 변경
197
+
198
+ 처럼 외부 영향이 큰 작업은 반드시 명시적 승인이 필요합니다.
199
+
200
+ 또한:
201
+
202
+ - 새 하네스
203
+ - 메모리 항목
204
+ - `.claude/` 워크플로 파일
205
+
206
+ 같은 재사용 가능한 자산을 저장할 때는 항상 별도의 승인을 다시 받습니다.
207
+
208
+ 현재 실행을 승인했다고 해서, 이후 설치나 영구 저장까지 자동으로 승인되는 것은 아닙니다.
209
+
210
+ ## Tink가 하지 않는 것
211
+
212
+ Tink는 다음을 목표로 하지 않습니다.
213
+
214
+ - 코딩 에이전트
215
+ - 워크플로 엔진
216
+ - 멀티 에이전트 런타임
217
+ - 프롬프트 라이브러리
218
+ - Claude Code나 Codex 대체 도구
219
+
220
+ Tink는 Claude Code나 Codex 위에 얹는 작은 하네스 레이어입니다.
221
+
222
+ ## 라이선스
223
+
224
+ MIT
package/README.md ADDED
@@ -0,0 +1,166 @@
1
+ <p align="center">
2
+ <img src=".github/assets/hero.gif" alt="Tink Hero Banner" width="100%">
3
+ </p>
4
+
5
+ <h1>
6
+ <strong>Tink</strong>
7
+ </h1>
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>
14
+
15
+ <p>
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
+ </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>
24
+
25
+ **English** · [한국어](README.ko.md)
26
+
27
+ ---
28
+
29
+ ## Why I made this
30
+
31
+ New coding harnesses show up almost every day. Many of them are genuinely useful.
32
+
33
+ At first, I tried them one by one and kept the ones that fit me. But the more I mixed them, the more my environment got tangled. Resetting everything again and again was tiring, so I ended up falling back to a skill-based workflow that I could understand and control.
34
+
35
+ Then I used Hermes Agent for a while. What stayed with me was the way it gets better through use: repeated work turns into reusable skills, mistakes become memory, and the system slowly adapts to the person using it.
36
+
37
+ Tink started from a simple question:
38
+
39
+ > Could Claude Code or Codex grow with me in the same way?
40
+
41
+ Not by adding a big framework. Not by running more agents. Just by helping Claude or Codex choose the right harness for the current task, create one when nothing fits, and improve the set over time.
42
+
43
+ ## Install
44
+
45
+ Claude Code plugin install:
46
+
47
+ ```text
48
+ /plugin marketplace add dotoricode/tink-harness
49
+ ```
50
+
51
+ ```text
52
+ /plugin install tink@tink-harness
53
+ ```
54
+
55
+ ```text
56
+ /reload-plugins
57
+ ```
58
+
59
+ ```text
60
+ /tink:setup
61
+ ```
62
+
63
+ Standalone compatibility installer:
64
+
65
+ ```bash
66
+ npx github:dotoricode/tink-harness install
67
+ ```
68
+
69
+ Standalone installer auto-detects `LANG` (English fallback). Pass `--lang=en|ko|zh` to override.
70
+
71
+ ## Update
72
+
73
+ Claude Code plugin users:
74
+
75
+ ```text
76
+ /plugin marketplace update tink-harness
77
+ ```
78
+
79
+ ```text
80
+ /plugin update tink@tink-harness
81
+ ```
82
+
83
+ ```text
84
+ /reload-plugins
85
+ ```
86
+
87
+ If update does not find the latest version, uninstall and install again:
88
+
89
+ ```text
90
+ /plugin uninstall tink@tink-harness
91
+ ```
92
+
93
+ ```text
94
+ /plugin install tink@tink-harness
95
+ ```
96
+
97
+ To update an existing standalone install (keeps user-modified files):
98
+
99
+ ```bash
100
+ npx github:dotoricode/tink-harness update
101
+ ```
102
+
103
+ ## Commands
104
+
105
+ Tink keeps the command surface small.
106
+
107
+ Tink is plugin-first. Commands are namespaced under `tink`, so the public surface stays `/tink:*` and avoids generic command conflicts.
108
+
109
+ ### `/tink:cast`
110
+
111
+ **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
+
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:frog`
118
+
119
+ **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
+
121
+ In Tink, `frog` looks for harnesses that are unused, overlapping, too broad, or no longer worth their context cost. It proposes cleanup, but does not delete without approval.
122
+
123
+ Use it when the harness set starts to feel noisy.
124
+
125
+ ### `/tink:weave`
126
+
127
+ **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
+
129
+ In Tink, `weave` improves an existing harness using real use, failures, and corrections. It should make the next run clearer, safer, or easier to verify.
130
+
131
+ Use it when a harness is useful but slightly wrong.
132
+
133
+ ### Other commands
134
+
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.
138
+
139
+ ## How it works
140
+
141
+ Tink uses files you can inspect:
142
+
143
+ - `.tink/harnesses/`: reusable task harnesses
144
+ - `.tink/current/`: the current run state
145
+ - `.tink/runs/`: compact records from finished, blocked, canceled, or replaced runs
146
+ - `.tink/memory/`: approved mistakes, preferences, and lessons
147
+
148
+ The important rule is approval.
149
+
150
+ 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
+
152
+ ## What Tink is not
153
+
154
+ Tink is not:
155
+
156
+ - a coding agent
157
+ - a workflow engine
158
+ - a multi-agent runtime
159
+ - a prompt library
160
+ - a replacement for Claude Code or Codex
161
+
162
+ It is a small harness layer for Claude Code or Codex.
163
+
164
+ ## License
165
+
166
+ MIT
package/VERSIONING.md ADDED
@@ -0,0 +1,73 @@
1
+ # Versioning
2
+
3
+ Current version: `0.1.5`
4
+
5
+ Tink is pre-v1. Do not bump to `1.0.0` until the v1 release-hardening gates pass.
6
+
7
+ ## Source of truth
8
+
9
+ Keep these versions aligned for every versioned release:
10
+
11
+ - `package.json`
12
+ - `package-lock.json`
13
+ - `.claude-plugin/plugin.json`
14
+ - `CHANGELOG.md`
15
+
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
+
18
+ ## Pre-v1 bump rules
19
+
20
+ Use semver, but keep everything under `1.0.0` for now.
21
+
22
+ - Patch, for example `0.1.1` to `0.1.4`: docs, tests, installer polish, command wording, small template fixes, non-breaking maintenance structure.
23
+ - Minor, for example `0.1.x` to `0.2.0`: new command behavior, meaningful installer flow change, new persisted state shape, or anything existing users should deliberately notice.
24
+ - Major `1.0.0`: only after release-hardening tests, docs truthfulness, clean install smoke, plugin validation, CI, and explicit release decision.
25
+
26
+ ## Release checklist
27
+
28
+ Before pushing a versioned release:
29
+
30
+ 1. Update `package.json`, `package-lock.json`, and `.claude-plugin/plugin.json` to the same version.
31
+ 2. Add a `CHANGELOG.md` entry for the version.
32
+ 3. Confirm README update instructions still match the actual Claude Code plugin path.
33
+ 4. Run:
34
+
35
+ ```bash
36
+ npm test
37
+ ```
38
+
39
+ ```bash
40
+ git diff --check
41
+ ```
42
+
43
+ ```bash
44
+ claude plugin validate .claude-plugin/plugin.json
45
+ ```
46
+
47
+ ```bash
48
+ claude plugin validate .claude-plugin/marketplace.json
49
+ ```
50
+
51
+ ```bash
52
+ npm pack --dry-run --json
53
+ ```
54
+
55
+ 5. Push and verify GitHub Actions CI.
56
+
57
+ ## Existing-user update path
58
+
59
+ Claude Code plugin users:
60
+
61
+ ```text
62
+ /plugin marketplace update tink-harness
63
+ /plugin update tink@tink-harness
64
+ /reload-plugins
65
+ ```
66
+
67
+ Standalone compatibility installer users:
68
+
69
+ ```bash
70
+ npx github:dotoricode/tink-harness update
71
+ ```
72
+
73
+ `update` preserves user-modified files. The `--force` flag is reserved for emergency repair and is not the recommended path.