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,185 @@
1
+ ---
2
+ description: Configure Tink language, install scope, git tracking, and hook policy.
3
+ ---
4
+
5
+ # /tink:setup
6
+
7
+ Set up Tink for Claude Code.
8
+
9
+ ## Goal
10
+ Prepare one small self-growing harness system that helps Claude choose/build harnesses, avoid repeated mistakes, and remember reusable lessons only after approval.
11
+
12
+ ## Interaction policy
13
+ Always call the `AskUserQuestion` tool for choice prompts. Do not render `❯` text format. Do not ask the user to type a number inline.
14
+
15
+ Map prompt content to `AskUserQuestion` fields:
16
+ - `question`: the full question text
17
+ - `header`: max 12-character tag (e.g. "언어 선택", "설치 범위", "Git 설정")
18
+ - `label`: 1–5 word option name. Add "(권장)" if recommended.
19
+ - `description`: explanatory text for the option
20
+
21
+ Use Korean field values when `.tink/config.json` language is `ko` or `auto` with Korean input; use English otherwise.
22
+
23
+ ## Setup review mode
24
+ If `.tink/config.json` already exists, do not jump straight to git tracking. First show a short current-settings review, then ask what to change.
25
+
26
+ Use this wording in Korean:
27
+
28
+ ```text
29
+ 현재 Tink 설정입니다.
30
+
31
+ - 언어: {language}
32
+ - 범위 (Scope): {install_scope}
33
+ - 톤 (Tone): calm, clear, concise, no jokes
34
+ - Hook: {hook_scope}
35
+ - Git 추적: {git_policy_or_inferred_policy}
36
+
37
+ 톤은 선택 항목이 아니라 Tink의 고정 정책입니다. 조용하고 명확하게, 농담 없이 답하는 것을 기본으로 합니다.
38
+
39
+ ? 무엇을 바꿀까요?
40
+ ❯ 1. 그대로 사용 (권장)
41
+ 2. 언어 변경
42
+ 3. 범위 변경
43
+ 4. 훅/Git 변경
44
+ ```
45
+
46
+ If the user chooses `그대로 사용`, summarize available commands and stop. Do not re-ask git tracking.
47
+ If the user chooses `훅/Git 변경`, first walk through the Git tracking question, then the Hook registration question.
48
+
49
+ ## Legacy Tiny migration
50
+ If `.tiny/`, `.claude/commands/tiny/`, `.claude/commands/tiny-use.md`, or output that recommends `/tiny:use` is present, treat it as legacy state from the old Tiny/Tink prototype. Do not keep recommending `/tiny:use`.
51
+
52
+ Show this short explanation before changing files:
53
+
54
+ ```text
55
+ 이전 Tiny 설정이 보입니다.
56
+
57
+ Tink v1에서는 `/tiny:use` 대신 `/tink:cast`를 사용합니다.
58
+ 필요하면 기존 `.tiny/`의 harness/config/memory를 `.tink/`로 옮기고, 앞으로의 안내를 `/tink:cast` 기준으로 정리할 수 있습니다.
59
+
60
+ ? 어떻게 할까요?
61
+ ❯ 1. 이전 Tiny 설정을 Tink로 옮기기
62
+ 2. 이전 Tiny 설정은 그대로 두고 Tink만 사용하기
63
+ 3. 취소
64
+ ```
65
+
66
+ Only migrate after the user chooses option 1. Migration means copying useful `.tiny/harnesses/`, `.tiny/config.json`, and `.tiny/memory/` into `.tink/` without deleting the original unless the user explicitly asks. Update stale guidance so future next steps say `/tink:cast`, not `/tiny:use`.
67
+
68
+ ## First question: language
69
+ Always ask language first if it is not already clear from `.tink/config.json`.
70
+
71
+ ```text
72
+ ? 언어를 선택해주세요.
73
+ ❯ 1. 한국어
74
+ 2. English
75
+ 3. 中文
76
+ ```
77
+
78
+ Use the selected language for setup prompts, run files, approval prompts, and final reports. Keep built-in harness IDs in English for stable filenames.
79
+
80
+ ## Before asking choices
81
+ Explain the current files in plain language before asking the user to choose. Keep the explanation short.
82
+
83
+ Use this wording in Korean:
84
+
85
+ ```text
86
+ Tink는 두 종류의 파일을 씁니다.
87
+
88
+ 1. 재사용 하네스 (Reusable Harnesses): `.tink/harnesses/`
89
+ 작업 방식 템플릿입니다. 예: bug-fix, research, review.
90
+ 팀이 같이 쓰면 유용하므로 보통 git에 커밋합니다.
91
+
92
+ 2. 실행 상태 (Run State): `.tink/current/`, `.tink/runs/`, `.tink/cache/`
93
+ 이번 작업 계획, 체크, 임시 메모입니다.
94
+ 개인/임시 기록이라 기본적으로 git에서 제외합니다.
95
+ ```
96
+
97
+ ## Setup questions
98
+ Ask these questions in order. Use the `AskUserQuestion` tool for all choice prompts (see Interaction policy above).
99
+
100
+ ### 1. Scope
101
+ ```text
102
+ ? Tink를 어디에 설정할까요?
103
+ ❯ 1. Repo 범위 (Repo Scope, 권장)
104
+ 이 프로젝트에만 `.claude/`와 `.tink/`를 둡니다. 팀 공유와 프로젝트별 하네스에 적합합니다.
105
+ 2. Global 범위 (Global Scope)
106
+ 사용자 홈의 Claude Code 설정에 둡니다. 여러 프로젝트에서 같은 명령을 쓰고 싶을 때 적합합니다.
107
+ ```
108
+
109
+ There is no `Both` option by default.
110
+
111
+ ### 2. Git tracking
112
+ Ask only after explaining consequences.
113
+
114
+ ```text
115
+ ? 프로젝트 하네스 (Harness)를 git에 커밋할까요?
116
+
117
+ 먼저 차이를 설명합니다.
118
+
119
+ ❯ 1. 하네스만 커밋 (Harnesses only, 권장)
120
+ 좋은 점:
121
+ - 팀원과 같은 작업 방식, 체크리스트, 선호를 공유합니다.
122
+ - 다른 PC나 새 clone에서도 Tink가 같은 기준으로 동작합니다.
123
+ - 실행 기록은 빠져서 repo가 지저분해지지 않습니다.
124
+
125
+ 실제로 커밋되는 것:
126
+ - `.tink/harnesses/`: 작업 방식 템플릿
127
+ - `.tink/config.json`: 언어/scope 같은 기본 설정
128
+ - `.tink/memory/`: 승인된 반복 실수, 선호, 교훈
129
+
130
+ 제외되는 것:
131
+ - `.tink/current/`, `.tink/runs/`, `.tink/cache/`: 이번 실행 기록/임시 상태
132
+
133
+ 2. 전부 커밋
134
+ 좋은 점:
135
+ - 실행 과정까지 전부 남길 수 있습니다.
136
+ 주의:
137
+ - 임시 메모, 작업 중 파일, 개인 맥락이 섞일 수 있어 대부분 비권장입니다.
138
+
139
+ 3. 커밋 안 함
140
+ 좋은 점:
141
+ - repo에는 아무 흔적을 남기지 않고 개인 도구로만 씁니다.
142
+ 결과:
143
+ - 다른 팀원, 다른 PC, 새 clone에서는 harness가 공유되지 않습니다.
144
+ - 프로젝트별로 쌓은 개선이 유실되거나 재설정이 필요할 수 있습니다.
145
+ ```
146
+
147
+ ### 3. Hook registration
148
+ Hook is optional and off by default. If selected in the installer, it is registered as a Claude Code `UserPromptSubmit` hook. Do not ask for hook scope again. Use the already selected repo/global scope.
149
+
150
+ Explain:
151
+
152
+ ```text
153
+ Hook은 선택 사항입니다.
154
+
155
+ 무엇을 하나요?
156
+ - Claude Code `UserPromptSubmit`에 등록되어 일반 사용자 프롬프트를 보고 “/tink:cast를 먼저 쓰면 좋겠다”는 추천만 합니다.
157
+ - 작업을 자동 실행하지 않습니다.
158
+ - 메모리 (Memory)나 하네스 (Harness)를 자동 저장하지 않습니다.
159
+ - `/grill-me` 같은 다른 slash skill 명령은 가로채지 않습니다.
160
+
161
+ 지금은 hook 없이 `/tink:cast`를 직접 쓰는 흐름을 권장합니다.
162
+ ```
163
+
164
+ ## Command map after setup
165
+ Explain the five commands:
166
+
167
+ ```text
168
+ 사용 가능한 Tink 명령입니다.
169
+
170
+ - `/tink:setup`: 언어, repo/global 범위 (Scope), git 추적, 훅 (Hook) 정책을 정합니다.
171
+ - `/tink:cast`: 작업에 맞는 하네스 (Harness)를 고르거나 만들고, 적용하고, 재사용 교훈을 저장 제안합니다. 가장 자주 쓰는 명령입니다.
172
+ - `/tink:list`: 사용 가능한 하네스 (Harness)와 최근 사용 신호를 짧게 보여줍니다.
173
+ - `/tink:frog`: 거의 쓰지 않는 하네스 (Harness)를 근거와 함께 제거 후보로 제안합니다. 승인 전 삭제하지 않습니다.
174
+ - `/tink:weave`: 자주 쓰는 하네스 (Harness)를 실제 실패/반복/피드백 기준으로 개선합니다. 승인 전 저장하지 않습니다.
175
+ ```
176
+
177
+ ## Do not
178
+ - Do not edit `CLAUDE.md` automatically.
179
+ - Do not ask the user to choose before explaining the consequences.
180
+ - Do not ask for tone selection. Tone is a fixed Tink policy, not a setup choice.
181
+ - Do not use jokes.
182
+ - Do not intercept other slash commands with Tink hooks.
183
+
184
+ ## Tone
185
+ Calm, clear, concise. No jokes. Show this as a fixed policy during setup review; do not turn it into another preference menu.
@@ -0,0 +1,90 @@
1
+ ---
2
+ description: Detect install source, diagnose user-modified files, and show the safe update command.
3
+ ---
4
+
5
+ # /tink:update
6
+
7
+ Tink를 최신 버전으로 안전하게 업데이트하는 방법을 안내합니다.
8
+
9
+ ## What this command does
10
+ This command does not run the update itself. It detects how Tink was installed in this project, diagnoses whether any user-modified files are at risk, and shows the correct command to run.
11
+
12
+ ## Procedure
13
+ 1. **Source-repo guard (first):** If the project root contains all of `templates/tink/`, `bin/install.js`, and a `package.json` whose `name` is `"tink-harness"`, this is the tink-harness source repository itself — not a consumer install. Skip the rest of the procedure and emit the "source repo" output (see below). Do not show plugin or npx update commands in this case.
14
+ 2. Detect install source:
15
+ - If the project root (or `cwd`) has `.claude-plugin/plugin.json` and a top-level `commands/` directory, Tink was installed via Claude Code plugin marketplace.
16
+ - Otherwise, treat it as an `npx tink-harness install` (standalone) installation.
17
+ 3. Scan for files that have diverged from the latest installed templates (read-only inspection only):
18
+ - **Always updated**: `.claude/commands/tink/`, `.claude/skills/tink/`, `.tink/maintenance/` — template changes always propagate here.
19
+ - **Preserved if user-modified**: `.tink/harnesses/`, `.tink/hooks/`, `.tink/memory/`, `.tink/config.json` — respects `weave` customizations and local configuration.
20
+ 4. Show the appropriate update path and a short list of files in the "preserved" category that have diverged.
21
+
22
+ ## Update path: Claude Code plugin
23
+ ```text
24
+ /plugin marketplace update tink-harness
25
+ /plugin update tink@tink-harness
26
+ /reload-plugins
27
+ ```
28
+ If update is not detected, uninstall and reinstall:
29
+ ```text
30
+ /plugin uninstall tink@tink-harness
31
+ /plugin install tink@tink-harness
32
+ ```
33
+ The plugin path is handled by Claude Code and does not touch the local `.tink/` directory.
34
+
35
+ ## Update path: npx (standalone)
36
+ ```text
37
+ npx tink-harness update
38
+ ```
39
+ Before v1.0.0 publish:
40
+ ```text
41
+ npx github:dotoricode/tink-harness update
42
+ ```
43
+
44
+ The `update` subcommand:
45
+ - **Always overwrites**: commands, skills, and maintenance files (`.claude/commands/tink/`, `.claude/skills/tink/`, `.tink/maintenance/`) — so you get the latest harness runner and command behavior automatically.
46
+ - **Preserves if modified**: harnesses, hooks, memory, and config (`.tink/harnesses/`, `.tink/hooks/`, `.tink/memory/`, `.tink/config.json`) — respects your `weave` customizations and local settings.
47
+
48
+ ## Output format (source repo)
49
+
50
+ If the source-repo guard triggers, print only this and stop — do not present plugin or npx commands:
51
+
52
+ ```text
53
+ ### 🧶 Tink 업데이트 안내
54
+
55
+ 이 디렉토리는 tink-harness **소스 리포지토리**입니다. 일반 사용자 업데이트 대상이 아니에요.
56
+
57
+ - 개발 변경 반영: `git pull` 후 일반적인 빌드/테스트 흐름을 사용하세요.
58
+ - 사용자 환경에서 업데이트 흐름을 검증하려면 별도의 프로젝트 디렉토리에서 이 명령을 실행하세요.
59
+ ```
60
+
61
+ ## Output format
62
+
63
+ ```text
64
+ ### 🧶 Tink 업데이트 안내
65
+
66
+ **설치 경로**: <plugin marketplace | npx standalone>
67
+
68
+ **항상 업데이트됨**: commands, skills, maintenance (최신 버전으로 자동 반영)
69
+
70
+ **사용자 수정 파일** (업데이트 시 보존):
71
+ - <path1>
72
+ - <path2>
73
+ - (보존할 파일 없음)
74
+
75
+ **업데이트 명령**:
76
+ <command lines>
77
+
78
+ ? 어떻게 할까요?
79
+ 1. 위 명령 복사해서 직접 실행
80
+ 2. 변경 사항 미리 보기 (`npx tink-harness update --dry-run`) ← npx standalone에서만 표시
81
+ 3. 취소
82
+ ```
83
+
84
+ Use `AskUserQuestion`. Show option 2 (dry-run) **only on the npx standalone path** — Claude Code plugin updates have no dry-run equivalent. So: plugin path → 2 options (run / cancel); npx path → 3 options (run / dry-run / cancel).
85
+
86
+ ## Do not
87
+ - Do not actually run the update command — show it for the user to run in their shell or Claude Code.
88
+ - Do not modify `.tink/` files during diagnosis.
89
+ - Do not bypass the user choice; always offer cancel.
90
+ - Do not present plugin or npx update commands when the source-repo guard triggers — the user is editing tink-harness itself and would get misleading instructions.
@@ -0,0 +1,81 @@
1
+ ---
2
+ description: Improve active harnesses based on real use, failures, and corrections.
3
+ ---
4
+
5
+ # /tink:weave
6
+
7
+ Improve harnesses that are actually being used.
8
+
9
+ ## Purpose
10
+ Tink should get sharper through use, not grow randomly.
11
+
12
+ ## Interaction policy
13
+ Always call the `AskUserQuestion` tool for choice prompts. Do not render `❯` text format. Do not ask the user to type a number inline.
14
+
15
+ Map prompt content to `AskUserQuestion` fields:
16
+ - `question`: the full question text
17
+ - `header`: max 12-character tag (e.g. "진행 방식", "저장 여부")
18
+ - `label`: 1–5 word option name. Add "(권장)" if recommended.
19
+ - `description`: explanatory text for the option
20
+
21
+ Use Korean field values when `.tink/config.json` language is `ko` or `auto` with Korean input; use English otherwise.
22
+
23
+ ## Procedure
24
+ 1. Read `.tink/harnesses/index.json`. If invoked from `/tink:frog`, first read the purge output, `.tink/current/notes.md`, or `.tink/maintenance/weave-queue.json` for the weave handoff packet.
25
+ 2. Identify one or a few active harnesses to improve using real failures and evidence:
26
+ - repeated mistakes
27
+ - user corrections
28
+ - failed checks
29
+ - confusing approval prompts
30
+ - too much context footprint
31
+ - missing done criteria
32
+ 3. Require concrete evidence handles before proposing a save:
33
+ - run record path or run ID
34
+ - current notes path when same-conversation certainty exists
35
+ - failed check name
36
+ - compact user correction snippet
37
+ - purge handoff ID from `.tink/maintenance/weave-queue.json`
38
+ 4. Classify the evidence as repeated or single-run. Single-run evidence may suggest a trial edit, but should not become broad policy unless the user explicitly approves.
39
+ 5. Explain why the change belongs in the harness rather than `.tink/memory/` or `.tink/current/notes.md`.
40
+ 6. Read only the target harness files.
41
+ 7. Propose small edits:
42
+ - clearer when-to-use trigger
43
+ - better ask-first question
44
+ - tighter checks
45
+ - smaller context footprint
46
+ - explicit failure recovery
47
+ 8. Show an approval payload: destination files, exact patch summary, evidence handles, repeated vs single-run classification, why reusable, context-cost delta, sensitive content excluded, rollback path.
48
+ 9. Ask for approval before saving.
49
+ 10. Apply surgical changes, update index metadata if needed, mark the weave queue item status, and append the approval/result to `.tink/maintenance/ledger.jsonl`.
50
+
51
+ ## Approval format
52
+ ```text
53
+ Hone target:
54
+ - code-change
55
+
56
+ Evidence:
57
+ - source: `.tink/runs/2026-05-22-code-change.md`
58
+ - classification: repeated
59
+ - observed failure: verification command was unclear in two runs
60
+
61
+ Approval payload:
62
+ - operation: weave
63
+ - destination files: `.tink/harnesses/code-change.md`, `.tink/harnesses/index.json` if metadata changes
64
+ - context-cost delta: neutral or smaller
65
+ - ledger: append op ID to `.tink/maintenance/ledger.jsonl`
66
+ - rollback: revert this patch or rerun `/tink:weave` with the previous trigger
67
+
68
+ Proposed improvement:
69
+ - Checks 섹션에 “검증 명령과 실패 시 마지막 안전 지점 기록” 추가
70
+
71
+ ? 진행할까요?
72
+ ❯ 1. 승인 — 이 개선 저장
73
+ 2. 조정
74
+ 3. 취소
75
+ ```
76
+
77
+ ## Do not
78
+ - Do not rewrite a harness from scratch unless the user asks.
79
+ - Do not add broad principles that do not change behavior.
80
+ - Do not save one-off task progress as harness knowledge.
81
+ - Do not propose a harness edit without evidence handles.
@@ -0,0 +1,66 @@
1
+ ---
2
+ name: tink
3
+ description: Self-growing harnesses for Claude Code. Use to cast, apply, frog, and weave task harnesses.
4
+ ---
5
+
6
+ # Tink
7
+
8
+ Tink helps Claude cast the smallest useful harness, materialize it as run state, and start the work. It keeps the active harness/tool set small because too many tools can hurt performance, and it can suggest small habit-aware calibrations from observed signals.
9
+
10
+ ## Core philosophy
11
+ Tink is one self-growing skill, not a pile of commands and not a skill recommendation list.
12
+
13
+ It should:
14
+ 1. understand the task,
15
+ 2. choose the smallest effective harness/tool set,
16
+ 3. replace heavy harnesses when the current stage or token budget makes them harmful,
17
+ 4. build or synthesize a narrow harness when none fits,
18
+ 5. apply it only after approval,
19
+ 6. create `.tink/current/` run state before deeper work,
20
+ 7. recommend small habit-aware calibrations from observed context/token/input/output/reset signals,
21
+ 8. execute the first safe step after approval,
22
+ 9. avoid repeating the same mistake,
23
+ 10. remember reusable lessons only after approval,
24
+ 11. keep the harness set small by purging or honing it over time.
25
+
26
+ ## Command surface
27
+ Use only these commands:
28
+
29
+ - `/tink:setup`: configure language, scope, git tracking, and hook policy.
30
+ - `/tink:cast`: main path. Choose/build/synthesize a harness, run Stitch, create run state, start work, and propose reusable learning.
31
+ - `/tink:list`: inspect harnesses and lightweight usage signals.
32
+ - `/tink:frog`: propose unused or redundant harness removal. Never delete without approval.
33
+ - `/tink:weave`: improve active harnesses based on real use, failures, and corrections.
34
+ - `/tink:update`: detect install source, diagnose user-modified files, and show the safe update command.
35
+
36
+ ## Operating rules
37
+ 1. Read `.tink/harnesses/index.json` before loading harness bodies.
38
+ 2. Read small approved memory files when present: `.tink/memory/mistakes.md`, `preferences.md`, `lessons.md`.
39
+ 3. Prefer the smallest useful harness set. Use context footprint, not a universal hard cap: tiny harnesses may stack, large harnesses load one at a time after approval, and meta harnesses should reduce or replace context rather than pile on.
40
+ 4. If `.tink/current/` exists and continuity is uncertain, read the five current files, summarize goal / last safe point / next step / open questions / verification, then ask resume/archive/replace/cancel before continuing.
41
+ 5. Run the synthesis probe on the initial harness choice. The probe produces one of three outcomes: strong fit (0-1 yes), generic fit (2-3 yes), or no fit (4-5 yes or no harness matches). Strong fit keeps the harness; generic fit adds a run-only draft; no fit loads `harness-synthesis`.
42
+ 6. If no existing harness fits, use `harness-synthesis` to draft a narrow domain-specific harness instead of forcing a bad fit.
43
+ 7. If too many tools, skills, agents, or harnesses are available, use `harness-curation` to choose the smallest effective set before loading more context.
44
+ 8. If lightweight signals show recurring context, token, prompt-quality, output-length, reset, or evidence habits, use `harness-curation` to make one advisory recommendation.
45
+ 9. When research notes, examples, prior failures, or user corrections are available, extract behavior-shaping rules: triggers, decision rules, checks, stop conditions, recovery, and evidence.
46
+ 10. Run Stitch once before committing to `.tink/current/`: evaluate every time, show exactly one proposal only for high-impact quality or safety branches, and use configured language.
47
+ 11. Use soft Stitch choices `Approve`, `Add requirements`, `Continue as-is` or localized equivalents; use hard choices `Approve`, `Add requirements`, `Cancel` only.
48
+ 12. Hard gates must not offer `Continue as-is` or `이대로 진행`, and Stitch may change method or order but not the user's goal without separate approval.
49
+ 13. Treat Reusable State Save Gate as a separate hard approval gate for `.tink/memory/*`, `.tink/harnesses/*`, `.tink/config.json`, `.claude/`, and template/plugin files that affect future installs.
50
+ 14. Current-run approval never authorizes reusable-state writes; before saving reusable state, show operation, destination files, exact entry or patch summary, reusable reason, sensitive content excluded, and rollback/removal path.
51
+ 15. Ask for approval before applying, saving, purging, or honing.
52
+ 16. After approval, create `.tink/current/plan.md`, `checks.md`, `steps.json`, `notes.md`, and `answers.md`.
53
+ 17. Do not stop at recommendation. Execute the first safe step after run state exists.
54
+ 18. Store reusable memory under `.tink/memory/` only after separate Reusable State Save Gate approval.
55
+ 19. If a check fails, update `.tink/current/notes.md`, state the failure, last safe point, and next single action.
56
+ 20. Keep context compact. Do not paste raw logs or full diffs.
57
+ 21. Use calm, clear, concise language. Prefer plain everyday words over technical terms — if a simpler word works, use it. No jokes.
58
+
59
+ ## Quality bar
60
+ The user should not have to repeat themselves. If the same mistake appears twice, propose `/tink:weave` or a memory update through `/tink:cast`.
61
+
62
+ A successful Tink run leaves evidence:
63
+ - current run files exist or were intentionally archived,
64
+ - checks were verified or explicitly blocked,
65
+ - the final answer reports changed files and evidence,
66
+ - reusable learning is proposed only when it will matter again.
@@ -0,0 +1,20 @@
1
+ {
2
+ "version": 1,
3
+ "context_mode": "compact",
4
+ "prefer_existing_harnesses": true,
5
+ "read_runs_by_default": false,
6
+ "save_new_harnesses_after_approval": true,
7
+ "tone": "calm",
8
+ "humor": "off",
9
+ "language": "auto",
10
+ "install_scope": "repo",
11
+ "hook_scope": "off",
12
+ "default_harnesses_per_task": 4,
13
+ "harness_lines_warning": 100,
14
+ "context_budget": "soft",
15
+ "memory_has_entries": {
16
+ "mistakes": false,
17
+ "preferences": false,
18
+ "lessons": false
19
+ }
20
+ }
@@ -0,0 +1,28 @@
1
+ # Tink 하네스 카탈로그
2
+
3
+ 사람이 빠르게 훑어보기 위한 하네스 요약 모음. `index.json`이 진짜 원본이고, 이 파일은 사람용 색인입니다. 새 작업을 시작하기 전에 먼저 훑어서 기존 하네스를 재사용하거나 여러 하네스의 단계를 조합할 수 있을지 검토하세요.
4
+
5
+ ## 작업용 하네스
6
+
7
+ - **[code-change](./code-change.md)** (small) — 범위가 명확한 코드 추가·변경·리팩토링. 관련 파일만 손대고 테스트 근거 남기기.
8
+ - **[bug-fix](./bug-fix.md)** (small) — 재현 → 근본 원인 → 최소 수정 → 회귀 확인.
9
+ - **[research](./research.md)** (small) — 옵션 비교, 문서 읽기, 근거 수집. 추측 분리, 다음 액션 명시.
10
+ - **[review](./review.md)** (small) — 변경·위험·PR 검토. 실측 발견점만 기록.
11
+ - **[docs](./docs.md)** (tiny) — README, 가이드, PRD. 독자와 다음 행동을 명확히.
12
+ - **[ship](./ship.md)** (small) — PR 준비, 릴리스, 배포. 위험·롤백 명시. cast 시작 시 안전판이 미리 켜집니다.
13
+
14
+ ## 관리용 메타 하네스
15
+
16
+ - **[harness-curation](./harness-curation.md)** — 도구·하네스가 너무 많거나 무거울 때 최소 묶음 고르기. 컨텍스트·출력 습관 보정도 이 하네스 내 섹션으로 처리.
17
+ - **[harness-synthesis](./harness-synthesis.md)** — 기존 하네스로 안 풀리는 반복 도메인일 때 좁은 새 하네스 만들기.
18
+ - **[tink-feedback-apply](./tink-feedback-apply.md)** — Tink 동작·UX·출력 품질 피드백을 올바른 레이어에 최소 변경으로 적용.
19
+
20
+ ## 합성된 도메인 하네스
21
+
22
+ - **[pre-publish-multi-agent-verify](./pre-publish-multi-agent-verify.md)** (small) — 공개 publish 직전 격리 환경에서 여러 에이전트로 install·UX·docs·leak·slash 표면을 병렬 검증. 시나리오 사전 잠금, evidence-only, blocker/major/minor/nit 분류.
23
+
24
+ ## 사용 원칙
25
+
26
+ 1. **재사용 우선**: 새 요구사항이 들어오면 기존 하네스의 단계·검증을 *조합*해서 해결할 수 있는지 먼저 봅니다.
27
+ 2. **새 하네스는 신중히**: `harness-synthesis`는 *기존 하네스로 정말 안 될 때*만. 호출해도 기본은 임시 초안(이번 실행만 적용), 영구 저장은 별도 승인 필요.
28
+ 3. **사람용 카탈로그**: 이 파일은 빠른 훑어보기 용도입니다. 자동 검증은 `index.json`이 담당하고, 하네스 추가·제거 시 이 파일은 사람이 직접 업데이트합니다.
@@ -0,0 +1,31 @@
1
+ # bug-fix
2
+
3
+ ## When to use
4
+ Something is broken and needs a minimal fix.
5
+
6
+ ## Ask first
7
+ - How can the bug be reproduced?
8
+ - What is expected vs actual?
9
+ - Is there a failing test, log, or screenshot?
10
+
11
+ ## Plan
12
+ 1. Reproduce or explain why reproduction is not possible.
13
+ 2. Identify the likely root cause.
14
+ 3. Make the smallest fix.
15
+ 4. Run a regression check.
16
+ 5. Report the evidence.
17
+
18
+ ## Checks
19
+ - Reproduction confirmed, or impossibility is explained.
20
+ - Root cause identified, not just symptom.
21
+ - Fix is minimal — no unrelated changes included.
22
+ - Regression check run, or reason not run is stated.
23
+ - Do not repeat questions already answered in `.tink/current/answers.md`.
24
+
25
+ ## Done means
26
+ - Bug no longer reproduces or risk is stated.
27
+ - Root cause is explained.
28
+ - Regression check is complete.
29
+
30
+ ## If it fails, Tink back
31
+ Return to the last safe step. State what failed, the last safe point, and the next single action.
@@ -0,0 +1,30 @@
1
+ # code-change
2
+
3
+ ## When to use
4
+ Add, change, or refactor code with a clear scope.
5
+
6
+ ## Ask first
7
+ - What is the target behavior?
8
+ - What files or areas are in scope?
9
+ - What must not change?
10
+
11
+ ## Plan
12
+ 1. Inspect before editing.
13
+ 2. Make the smallest useful change.
14
+ 3. Avoid unrelated cleanup.
15
+ 4. Run the relevant check.
16
+ 5. Report changed files and evidence.
17
+
18
+ ## Checks
19
+ - Only target files modified; no unrelated changes.
20
+ - Tests or build verified, or reason not run is stated.
21
+ - Changed lines match stated scope — no unnoticed behavior shift.
22
+ - Do not repeat questions already answered in `.tink/current/answers.md`.
23
+
24
+ ## Done means
25
+ - Only related files changed.
26
+ - Tests/build pass, or reason not run is stated.
27
+ - Diff evidence is available.
28
+
29
+ ## If it fails, Tink back
30
+ Return to the last safe step. State what failed, the last safe point, and the next single action.
@@ -0,0 +1,30 @@
1
+ # docs
2
+
3
+ ## When to use
4
+ Write or improve README, guides, PRDs, or user-facing docs.
5
+
6
+ ## Ask first
7
+ - Who is the reader?
8
+ - What should the reader do next?
9
+ - What tone should be used?
10
+
11
+ ## Plan
12
+ 1. Define the reader and goal.
13
+ 2. Outline first.
14
+ 3. Use plain words.
15
+ 4. Add examples only where useful.
16
+ 5. Check for missing next steps.
17
+
18
+ ## Checks
19
+ - Reader and goal are explicitly stated.
20
+ - At least one next action is present.
21
+ - No jargon left undefined for the stated reader.
22
+ - Do not repeat questions already answered in `.tink/current/answers.md`.
23
+
24
+ ## Done means
25
+ - Reader and action are clear.
26
+ - Structure is easy to scan.
27
+ - No unnecessary jargon.
28
+
29
+ ## If it fails, Tink back
30
+ Return to the last safe step. State what failed, the last safe point, and the next single action.
@@ -0,0 +1,78 @@
1
+ # harness-curation
2
+
3
+ ## When to use
4
+ The user has too many tools, skills, agents, or harnesses available, and the next task needs the smallest effective operating set.
5
+
6
+ Use this when:
7
+ - more tools are making the agent worse, slower, or more expensive,
8
+ - a strong harness is too heavy for the current stage,
9
+ - parallel agents would exceed token or coordination budget,
10
+ - the task needs a different harness than the previous task,
11
+ - Tink must prevent repeated mistakes and maintain the harness set.
12
+
13
+ Use this harness (not a separate tool) when operating habits need calibration across runs — see the section at the bottom.
14
+
15
+ ## Ask first
16
+ - What is the current task and success evidence?
17
+ - What is the constraint: token budget, time, model capacity, tool permissions, or MVP stage?
18
+ - Which tool or harness feels useful but too heavy right now?
19
+ - Is this a one-run downgrade, a reusable routing rule, or a harness maintenance update?
20
+
21
+ Do not repeat questions already answered in `.tink/current/answers.md`.
22
+
23
+ ## Plan
24
+ 1. State the task stage: spike, MVP, implementation, review, release, or postmortem.
25
+ 2. Choose the smallest effective set:
26
+ - target 3-5 tools/harnesses,
27
+ - never exceed 10 without explicit reason,
28
+ - prefer fewer when context is tight.
29
+ 3. Decide whether to use, replace, synthesize, hone, or purge:
30
+ - use: existing harness fits and is cheap enough,
31
+ - replace: a strong harness is too heavy for this task,
32
+ - synthesize: no narrow harness exists,
33
+ - weave: repeated mistake or user correction changed the workflow,
34
+ - frog: harness is unused, duplicate, or too broad to change behavior.
35
+ 4. If a known harness is too heavy, create a lean variant for this run instead of forcing it.
36
+ 5. Write the routing decision into `.tink/current/plan.md` and the reason into `.tink/current/notes.md`.
37
+ 6. After the run, propose only durable updates:
38
+ - memory for repeated mistakes or stable preferences,
39
+ - harness edit for reusable workflow changes,
40
+ - index metadata update for usage or context cost.
41
+
42
+ ## Checks
43
+ - The selected set is explicitly smaller than the available set.
44
+ - Heavy harnesses are rejected or deferred with a reason.
45
+ - The run has a clear token/context budget posture.
46
+ - The final answer reports why this harness set was enough.
47
+ - No memory or harness maintenance is saved without approval.
48
+
49
+ ## Done means
50
+ - The current task has an approved minimal harness set.
51
+ - If a new harness was needed, `harness-synthesis` produced a narrow draft.
52
+ - If a repeated mistake was found, Tink proposed memory or `/tink:weave`.
53
+ - If a harness is too broad or unused, Tink proposed `/tink:frog` or a lean replacement.
54
+
55
+ ## If it fails, Tink back
56
+ If the chosen set is too weak, add one harness only and record why. If it is too heavy, remove the least task-critical harness and continue from the last safe point.
57
+
58
+ ## When context habits also need calibration
59
+
60
+ Use this section when signals span multiple runs — not just the current task's tool selection.
61
+
62
+ Signals:
63
+ - frequent `/new` or context resets mid-task
64
+ - waiting until automatic compact before clearing
65
+ - long prompts mixing multiple unrelated goals
66
+ - short prompts missing success criteria
67
+ - long final answers when a concise handoff would work
68
+ - repeated corrections about output length, evidence, routing, or context hygiene
69
+
70
+ Habit types:
71
+ - **context-hoarder**: waits for compact, accumulates stale context
72
+ - **context-resetter**: uses `/new` often, loses useful continuity
73
+ - **over-loader**: too many tools/harnesses/agents at once
74
+ - **under-specifier**: goals without success criteria or constraints
75
+ - **over-explainer**: asks for or receives too much output
76
+ - **evidence-seeker**: needs raw-state evidence and negative signals
77
+
78
+ Calibration: recommend one small change — lean harness set, prompt template, output-length rule, reset rule, or memory proposal. If the signal is weak, stay advisory only. Save only after approval.