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.
- package/.claude-plugin/marketplace.json +14 -0
- package/.claude-plugin/plugin.json +8 -0
- package/CHANGELOG.md +109 -0
- package/LICENSE +21 -0
- package/README.ko.md +224 -0
- package/README.md +166 -0
- package/VERSIONING.md +73 -0
- package/bin/install.js +520 -0
- package/commands/cast.md +484 -0
- package/commands/frog.md +77 -0
- package/commands/list.md +104 -0
- package/commands/setup.md +185 -0
- package/commands/update.md +90 -0
- package/commands/weave.md +81 -0
- package/hooks/hooks.json +15 -0
- package/package.json +52 -0
- package/skills/tink/SKILL.md +66 -0
- package/templates/claude/commands/tink/cast.md +484 -0
- package/templates/claude/commands/tink/frog.md +77 -0
- package/templates/claude/commands/tink/list.md +104 -0
- package/templates/claude/commands/tink/setup.md +185 -0
- package/templates/claude/commands/tink/update.md +90 -0
- package/templates/claude/commands/tink/weave.md +81 -0
- package/templates/claude/skills/tink/SKILL.md +66 -0
- package/templates/tink/config.json +20 -0
- package/templates/tink/harnesses/HARNESS.md +28 -0
- package/templates/tink/harnesses/bug-fix.md +31 -0
- package/templates/tink/harnesses/code-change.md +30 -0
- package/templates/tink/harnesses/docs.md +30 -0
- package/templates/tink/harnesses/harness-curation.md +78 -0
- package/templates/tink/harnesses/harness-synthesis.md +52 -0
- package/templates/tink/harnesses/index.json +157 -0
- package/templates/tink/harnesses/pre-publish-multi-agent-verify.md +44 -0
- package/templates/tink/harnesses/research.md +31 -0
- package/templates/tink/harnesses/review.md +31 -0
- package/templates/tink/harnesses/ship.md +33 -0
- package/templates/tink/harnesses/tink-feedback-apply.md +37 -0
- package/templates/tink/hooks/user-prompt-submit.json +7 -0
- package/templates/tink/hooks/user-prompt-submit.mjs +49 -0
- package/templates/tink/maintenance/ledger.jsonl +0 -0
- package/templates/tink/maintenance/weave-queue.json +3 -0
- package/templates/tink/memory/lessons.md +17 -0
- package/templates/tink/memory/mistakes.md +16 -0
- 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.
|