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.
- package/.claude-plugin/plugin.json +2 -2
- package/CHANGELOG.md +103 -67
- package/README.ko.md +130 -120
- package/README.md +88 -81
- package/VERSIONING.md +2 -2
- package/bin/install.js +318 -257
- package/commands/cast.md +179 -172
- package/docs/context-change-review.ko.md +14 -0
- package/docs/context-change-review.md +14 -0
- package/docs/external-context-policy.ko.md +15 -0
- package/docs/external-context-policy.md +15 -0
- package/docs/graph-contracts-and-guards.md +61 -0
- package/docs/harness-lifecycle-signals.ko.md +23 -0
- package/docs/harness-lifecycle-signals.md +23 -0
- package/docs/hooks.md +49 -0
- package/docs/memory-decision-layers.ko.md +14 -0
- package/docs/memory-decision-layers.md +14 -0
- package/docs/memory.md +31 -0
- package/docs/phase-5-update-confidence.ko.md +99 -0
- package/docs/phase-5-update-confidence.md +97 -0
- package/docs/planned-work-units.ko.md +77 -0
- package/docs/planned-work-units.md +77 -0
- package/docs/pr/2026-06-07-phase-5-6-follow-up.ko.md +35 -0
- package/docs/pr/2026-06-07-v1.2.0-improvements.html +450 -0
- package/docs/pr/2026-06-07-v1.2.1.md +25 -0
- package/docs/pr/2026-06-08-planned-work-units.ko.md +27 -0
- package/docs/pr/2026-06-08-v1.2.2.ko.md +27 -0
- package/docs/repo-signals.ko.md +104 -0
- package/docs/repo-signals.md +95 -77
- package/docs/research.md +16 -0
- package/docs/tink-idea-implementation-plan.ko.md +201 -0
- package/docs/update-diagnosis.ko.md +16 -0
- package/docs/update-diagnosis.md +16 -0
- package/docs/update-troubleshooting.ko.md +113 -0
- package/docs/update-troubleshooting.md +100 -0
- package/docs/update-verification-recipe.ko.md +118 -0
- package/docs/update-verification-recipe.md +119 -0
- package/docs/verification-evidence-details.ko.md +14 -0
- package/docs/verification-evidence-details.md +14 -0
- package/docs/work-state.ko.md +94 -0
- package/docs/work-state.md +92 -0
- package/package.json +7 -9
- package/templates/claude/commands/tink/cast.md +179 -172
- package/templates/codex/skills/tink-cast/SKILL.md +14 -13
- package/templates/codex/skills/tink-core/RULES.md +163 -112
- package/templates/tink/memory/approved/README.md +5 -0
- package/templates/tink/memory/candidate/README.md +5 -0
- package/templates/tink/memory/evidence/README.md +5 -0
- package/templates/tink/memory/rejected/README.md +5 -0
- package/templates/tink/schemas/harness-lifecycle.schema.json +44 -0
- package/templates/tink/schemas/mcp-policy.schema.json +65 -0
- 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
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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.
|
|
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
|
|