tink-harness 1.2.0 → 1.2.2

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 (52) hide show
  1. package/.claude-plugin/plugin.json +2 -2
  2. package/CHANGELOG.md +103 -67
  3. package/README.ko.md +130 -120
  4. package/README.md +88 -81
  5. package/VERSIONING.md +2 -2
  6. package/bin/install.js +318 -257
  7. package/commands/cast.md +179 -172
  8. package/docs/context-change-review.ko.md +14 -0
  9. package/docs/context-change-review.md +14 -0
  10. package/docs/external-context-policy.ko.md +15 -0
  11. package/docs/external-context-policy.md +15 -0
  12. package/docs/graph-contracts-and-guards.md +61 -0
  13. package/docs/harness-lifecycle-signals.ko.md +23 -0
  14. package/docs/harness-lifecycle-signals.md +23 -0
  15. package/docs/hooks.md +49 -0
  16. package/docs/memory-decision-layers.ko.md +14 -0
  17. package/docs/memory-decision-layers.md +14 -0
  18. package/docs/memory.md +31 -0
  19. package/docs/phase-5-update-confidence.ko.md +99 -0
  20. package/docs/phase-5-update-confidence.md +97 -0
  21. package/docs/planned-work-units.ko.md +77 -0
  22. package/docs/planned-work-units.md +77 -0
  23. package/docs/pr/2026-06-07-phase-5-6-follow-up.ko.md +35 -0
  24. package/docs/pr/2026-06-07-v1.2.0-improvements.html +450 -0
  25. package/docs/pr/2026-06-07-v1.2.1.md +25 -0
  26. package/docs/pr/2026-06-08-planned-work-units.ko.md +27 -0
  27. package/docs/pr/2026-06-08-v1.2.2.ko.md +27 -0
  28. package/docs/repo-signals.ko.md +104 -0
  29. package/docs/repo-signals.md +95 -77
  30. package/docs/research.md +16 -0
  31. package/docs/tink-idea-implementation-plan.ko.md +201 -0
  32. package/docs/update-diagnosis.ko.md +16 -0
  33. package/docs/update-diagnosis.md +16 -0
  34. package/docs/update-troubleshooting.ko.md +113 -0
  35. package/docs/update-troubleshooting.md +100 -0
  36. package/docs/update-verification-recipe.ko.md +118 -0
  37. package/docs/update-verification-recipe.md +119 -0
  38. package/docs/verification-evidence-details.ko.md +14 -0
  39. package/docs/verification-evidence-details.md +14 -0
  40. package/docs/work-state.ko.md +94 -0
  41. package/docs/work-state.md +92 -0
  42. package/package.json +7 -9
  43. package/templates/claude/commands/tink/cast.md +179 -172
  44. package/templates/codex/skills/tink-cast/SKILL.md +14 -13
  45. package/templates/codex/skills/tink-core/RULES.md +163 -112
  46. package/templates/tink/memory/approved/README.md +5 -0
  47. package/templates/tink/memory/candidate/README.md +5 -0
  48. package/templates/tink/memory/evidence/README.md +5 -0
  49. package/templates/tink/memory/rejected/README.md +5 -0
  50. package/templates/tink/schemas/harness-lifecycle.schema.json +44 -0
  51. package/templates/tink/schemas/mcp-policy.schema.json +65 -0
  52. package/templates/tink/schemas/verification.schema.json +154 -141
package/README.md CHANGED
@@ -6,23 +6,26 @@
6
6
  <strong>Tink</strong>
7
7
  </h1>
8
8
 
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>
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://github.com/dotoricode/tink-harness/releases/tag/v1.2.2"><img src="https://img.shields.io/github/v/release/dotoricode/tink-harness?label=release&color=2ea44f" alt="GitHub release"></a>
20
21
  <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>
21
22
  <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>
22
23
  <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>
23
24
  <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>
24
25
  </p>
25
26
 
27
+ <p><strong>Latest release:</strong> v1.2.2 — update confidence, planned work units, evidence details, and memory policy scaffolding.</p>
28
+
26
29
  **English** · [한국어](README.ko.md)
27
30
 
28
31
  ---
@@ -61,21 +64,21 @@ Claude Code plugin install:
61
64
  /tink:setup
62
65
  ```
63
66
 
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>`.
67
+ Standalone compatibility installer:
68
+
69
+ ```bash
70
+ npx tink-harness@latest install
71
+ ```
72
+
73
+ Standalone installer auto-detects `LANG` (English fallback). Pass `--lang=en|ko|zh` to override.
74
+
75
+ Codex skill install:
76
+
77
+ ```bash
78
+ npx tink-harness@latest install
79
+ ```
80
+
81
+ 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>`.
79
82
 
80
83
  ## Update
81
84
 
@@ -103,53 +106,57 @@ If update does not find the latest version, uninstall and install again:
103
106
  /plugin install tink@tink-harness
104
107
  ```
105
108
 
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`
109
+ To update an existing standalone install (keeps user-modified files):
110
+
111
+ ```bash
112
+ npx tink-harness@latest update
113
+ ```
114
+
115
+ For Codex:
116
+
117
+ ```bash
118
+ npx tink-harness@latest update
119
+ ```
120
+
121
+ During update, select the installed agent surface you want to refresh.
122
+
123
+ To quickly verify the updated install, see `docs/update-verification-recipe.md` or `docs/update-verification-recipe.ko.md`.
124
+
125
+ If an update looks stale or incomplete, see `docs/update-troubleshooting.md` or `docs/update-troubleshooting.ko.md`.
126
+
127
+ ## What's new in 1.2.0
128
+
129
+ This release makes Tink work as one harness layer across Claude Code and Codex.
130
+
131
+ - 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.
132
+ - Non-trivial runs now create context artifacts: `context-pack.md`, `context-map.json`, and `excluded-context.md`.
133
+ - Repo Signals and Context Graph Lite help `/tink:cast` and `$tink:cast` choose relevant tests, schemas, sync partners, and verification hints without adding a new `tink index` command.
134
+ - `/tink:verify` and `$tink:verify` share one portable Verify Runner model and write compact evidence to `.tink/current/verification.json`.
135
+ - 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.
136
+
137
+ ## Commands
138
+
139
+ Tink keeps the command surface small.
140
+
141
+ 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.
142
+
143
+ ### `/tink:cast` / `$tink:cast`
137
144
 
138
145
  **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.
139
146
 
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`
147
+ 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.
148
+
149
+ Use it when the task is more than a quick answer.
150
+
151
+ ### `/tink:verify` / `$tink:verify`
152
+
153
+ `verify` runs the checks promised in `.tink/current/contract.json`.
154
+
155
+ 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.
156
+
157
+ Use it before release, publish, deploy, public PR, or any task where evidence matters.
158
+
159
+ ### `/tink:frog` / `$tink:frog`
153
160
 
154
161
  **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."
155
162
 
@@ -157,7 +164,7 @@ In Tink, `frog` looks for harnesses that are unused, overlapping, too broad, or
157
164
 
158
165
  Use it when the harness set starts to feel noisy.
159
166
 
160
- ### `/tink:weave` / `$tink:weave`
167
+ ### `/tink:weave` / `$tink:weave`
161
168
 
162
169
  **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.
163
170
 
@@ -167,27 +174,27 @@ Use it when a harness is useful but slightly wrong.
167
174
 
168
175
  ### Other commands
169
176
 
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.
177
+ - `/tink:setup` / `$tink:setup`: choose language, install scope, git tracking, and hook policy.
178
+ - `/tink:list` / `$tink:list`: inspect available harnesses and recent usage signals.
179
+ - `/tink:update` / `$tink:update`: detect install source and show the safe update command.
173
180
 
174
181
  ## How it works
175
182
 
176
183
  Tink uses files you can inspect:
177
184
 
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.
185
+ - `.tink/harnesses/`: reusable task harnesses
186
+ - `.tink/rules/`: a small rule graph that chooses only relevant harnesses, checks, and opt-in guard candidates
187
+ - `.tink/schemas/`: structured file schemas, including the current run contract
188
+ - `.tink/current/`: the current run state
189
+ - `.tink/runs/`: compact records from finished, blocked, canceled, or replaced runs
190
+ - `.tink/maintenance/`: verification, friction, and weave signals that help repeated failures become approved improvements
191
+ - `.tink/memory/`: approved mistakes, preferences, and lessons
192
+
193
+ 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.
194
+
195
+ 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` or `docs/repo-signals.ko.md`. External context safety is described in `docs/mcp-safe-profile.md` and `docs/external-context-policy.md`. To read or review `.tink/current/` state, start with `docs/work-state.md` or `docs/work-state.ko.md`. Update confidence is still documented in `docs/phase-5-update-confidence.md` or `docs/phase-5-update-confidence.ko.md`. The planned work-unit list is `docs/planned-work-units.md` or `docs/planned-work-units.ko.md`, with details in the verification evidence, harness lifecycle, memory decision, context change, and update diagnosis docs. The broader Korean idea audit and roadmap is `docs/tink-idea-implementation-plan.ko.md`.
196
+
197
+ The important rule is approval.
191
198
 
192
199
  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.
193
200
 
package/VERSIONING.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Versioning
2
2
 
3
- Current version: `1.2.0`
3
+ Current version: `1.2.2`
4
4
 
5
5
  Tink follows semver from `1.0.0` onward.
6
6
 
@@ -19,7 +19,7 @@ Claude Code uses `.claude-plugin/plugin.json` to decide whether plugin users can
19
19
 
20
20
  Use semver.
21
21
 
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]`.
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
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
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