tink-harness 1.2.1 → 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 (51) hide show
  1. package/.claude-plugin/plugin.json +2 -2
  2. package/CHANGELOG.md +103 -75
  3. package/README.ko.md +130 -122
  4. package/README.md +96 -92
  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-08-planned-work-units.ko.md +27 -0
  26. package/docs/pr/2026-06-08-v1.2.2.ko.md +27 -0
  27. package/docs/repo-signals.ko.md +104 -0
  28. package/docs/repo-signals.md +95 -77
  29. package/docs/research.md +16 -0
  30. package/docs/tink-idea-implementation-plan.ko.md +201 -0
  31. package/docs/update-diagnosis.ko.md +16 -0
  32. package/docs/update-diagnosis.md +16 -0
  33. package/docs/update-troubleshooting.ko.md +113 -0
  34. package/docs/update-troubleshooting.md +100 -0
  35. package/docs/update-verification-recipe.ko.md +118 -0
  36. package/docs/update-verification-recipe.md +119 -0
  37. package/docs/verification-evidence-details.ko.md +14 -0
  38. package/docs/verification-evidence-details.md +14 -0
  39. package/docs/work-state.ko.md +94 -0
  40. package/docs/work-state.md +92 -0
  41. package/package.json +2 -4
  42. package/templates/claude/commands/tink/cast.md +179 -172
  43. package/templates/codex/skills/tink-cast/SKILL.md +14 -13
  44. package/templates/codex/skills/tink-core/RULES.md +163 -112
  45. package/templates/tink/memory/approved/README.md +5 -0
  46. package/templates/tink/memory/candidate/README.md +5 -0
  47. package/templates/tink/memory/evidence/README.md +5 -0
  48. package/templates/tink/memory/rejected/README.md +5 -0
  49. package/templates/tink/schemas/harness-lifecycle.schema.json +44 -0
  50. package/templates/tink/schemas/mcp-policy.schema.json +65 -0
  51. package/templates/tink/schemas/verification.schema.json +154 -141
package/README.md CHANGED
@@ -6,27 +6,27 @@
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
- <p>
20
- <a href="https://github.com/dotoricode/tink-harness/releases/tag/v1.2.1"><img src="https://img.shields.io/github/v/release/dotoricode/tink-harness?label=release&color=2ea44f" alt="GitHub release"></a>
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>
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>
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>
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>
25
- </p>
26
-
27
- <p><strong>Latest release:</strong> v1.2.1focused Codex skills, visible context artifacts, portable verification, and safer external context.</p>
28
-
29
- **English** · [한국어](README.ko.md)
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>
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>
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>
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>
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>
25
+ </p>
26
+
27
+ <p><strong>Latest release:</strong> v1.2.2update confidence, planned work units, evidence details, and memory policy scaffolding.</p>
28
+
29
+ **English** · [한국어](README.ko.md)
30
30
 
31
31
  ---
32
32
 
@@ -64,21 +64,21 @@ Claude Code plugin install:
64
64
  /tink:setup
65
65
  ```
66
66
 
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>`.
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>`.
82
82
 
83
83
  ## Update
84
84
 
@@ -106,53 +106,57 @@ If update does not find the latest version, uninstall and install again:
106
106
  /plugin install tink@tink-harness
107
107
  ```
108
108
 
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
- ## What's new in 1.2.0
124
-
125
- This release makes Tink work as one harness layer across Claude Code and Codex.
126
-
127
- - 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.
128
- - Non-trivial runs now create context artifacts: `context-pack.md`, `context-map.json`, and `excluded-context.md`.
129
- - Repo Signals help `/tink:cast` choose relevant tests, schemas, sync partners, and verification hints without adding a new `tink index` command.
130
- - `/tink:verify` and `$tink:verify` share one portable Verify Runner model and write compact evidence to `.tink/current/verification.json`.
131
- - 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.
132
-
133
- ## Commands
134
-
135
- Tink keeps the command surface small.
136
-
137
- 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.
138
-
139
- ### `/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`
140
144
 
141
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.
142
146
 
143
- 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.
144
-
145
- Use it when the task is more than a quick answer.
146
-
147
- ### `/tink:verify` / `$tink:verify`
148
-
149
- `verify` runs the checks promised in `.tink/current/contract.json`.
150
-
151
- 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.
152
-
153
- Use it before release, publish, deploy, public PR, or any task where evidence matters.
154
-
155
- ### `/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`
156
160
 
157
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."
158
162
 
@@ -160,7 +164,7 @@ In Tink, `frog` looks for harnesses that are unused, overlapping, too broad, or
160
164
 
161
165
  Use it when the harness set starts to feel noisy.
162
166
 
163
- ### `/tink:weave` / `$tink:weave`
167
+ ### `/tink:weave` / `$tink:weave`
164
168
 
165
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.
166
170
 
@@ -170,27 +174,27 @@ Use it when a harness is useful but slightly wrong.
170
174
 
171
175
  ### Other commands
172
176
 
173
- - `/tink:setup` / `$tink:setup`: choose language, install scope, git tracking, and hook policy.
174
- - `/tink:list` / `$tink:list`: inspect available harnesses and recent usage signals.
175
- - `/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.
176
180
 
177
181
  ## How it works
178
182
 
179
183
  Tink uses files you can inspect:
180
184
 
181
- - `.tink/harnesses/`: reusable task harnesses
182
- - `.tink/rules/`: a small rule graph that chooses only relevant harnesses, checks, and opt-in guard candidates
183
- - `.tink/schemas/`: structured file schemas, including the current run contract
184
- - `.tink/current/`: the current run state
185
- - `.tink/runs/`: compact records from finished, blocked, canceled, or replaced runs
186
- - `.tink/maintenance/`: verification, friction, and weave signals that help repeated failures become approved improvements
187
- - `.tink/memory/`: approved mistakes, preferences, and lessons
188
-
189
- 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.
190
-
191
- 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`.
192
-
193
- 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.
194
198
 
195
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.
196
200
 
package/VERSIONING.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Versioning
2
2
 
3
- Current version: `1.2.1`
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