A small harness layer for Claude Code and Codex
Tink helps Claude Code or Codex choose the right harness, keep run state visible, and improve the harness set as you work.
Tink is knit in reverse: untying tangled workflows and knitting better ones back together. It also nods to Tinker Bell, the small helper at your side.
English · 한국어
New coding harnesses show up almost every day. Many of them are genuinely useful.
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.
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.
Tink started from a simple question:
Could Claude Code or Codex grow with me in the same way?
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.
Claude Code plugin install:
/plugin marketplace add dotoricode/tink-harness
/plugin install tink@tink-harness
/reload-plugins
/tink:setup
Standalone compatibility installer:
npx tink-harness@latest installStandalone installer auto-detects LANG (English fallback). Pass --lang=en|ko|zh to override.
Codex skill install:
npx tink-harness@latest installDuring 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>.
Claude Code plugin users:
/plugin marketplace update tink-harness
/plugin update tink@tink-harness
/reload-plugins
If update does not find the latest version, uninstall and install again:
/plugin uninstall tink@tink-harness
/plugin install tink@tink-harness
To update an existing standalone install (keeps user-modified files):
npx tink-harness@latest updateFor Codex:
npx tink-harness@latest updateDuring update, select the installed agent surface you want to refresh.
Tink keeps the command surface small.
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, use the $tink skill with the same action names: cast, verify, list, frog, weave, setup, and update.
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.
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.
Use it when the task is more than a quick answer.
verify runs the checks promised in .tink/current/contract.json.
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.
Use it before release, publish, deploy, public PR, or any task where evidence matters.
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."
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.
Use it when the harness set starts to feel noisy.
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.
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.
Use it when a harness is useful but slightly wrong.
/tink:setup: choose language, install scope, git tracking, and hook policy./tink:list: inspect available harnesses and recent usage signals./tink:update: detect install source and show the safe update command.
Tink uses files you can inspect:
.tink/harnesses/: reusable task harnesses.tink/rules/: a small rule graph that chooses only relevant harnesses, checks, and opt-in guard candidates.tink/schemas/: structured file schemas, including the current run contract.tink/current/: the current run state.tink/runs/: compact records from finished, blocked, canceled, or replaced runs.tink/maintenance/: verification, friction, and weave signals that help repeated failures become approved improvements.tink/memory/: approved mistakes, preferences, and lessons
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.
The important rule is approval.
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.
Tink is not:
- a coding agent
- a workflow engine
- a multi-agent runtime
- a prompt library
- a replacement for Claude Code or Codex
It is a small harness layer for Claude Code or Codex.
MIT
