team-toon-tack 3.9.0 → 3.10.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 +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +20 -0
- package/README.md +42 -12
- package/README.zh-TW.md +42 -12
- package/commands/ttt-comment.md +1 -1
- package/commands/ttt-status.md +1 -1
- package/commands/ttt-work-on.md +40 -72
- package/commands/ttt-write-work-on-skill.md +1 -1
- package/dist/bin/cli.js +10 -7
- package/dist/scripts/cancel.js +4 -1
- package/dist/scripts/claim.js +235 -0
- package/dist/scripts/comment.js +2 -2
- package/dist/scripts/create.d.ts +1 -1
- package/dist/scripts/create.js +23 -5
- package/dist/scripts/done-job.js +2 -2
- package/dist/scripts/estimate.js +2 -2
- package/dist/scripts/lib/adapters/linear-adapter.js +10 -3
- package/dist/scripts/lib/adapters/trello-adapter.d.ts +1 -1
- package/dist/scripts/lib/adapters/trello-adapter.js +85 -5
- package/dist/scripts/lib/init/file-ops.js +1 -1
- package/dist/scripts/lib/init/linear-init.js +2 -2
- package/dist/scripts/lib/init/prompts.js +1 -1
- package/dist/scripts/lib/init/trello-init.js +2 -2
- package/dist/scripts/status.js +2 -2
- package/dist/scripts/utils.d.ts +14 -0
- package/dist/scripts/utils.js +47 -22
- package/package.json +3 -1
- package/skills/managing-linear-tasks/SKILL.md +38 -36
- package/dist/scripts/work-on.js +0 -153
- /package/dist/scripts/{work-on.d.ts → claim.d.ts} +0 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "team-toon-tack",
|
|
3
|
+
"version": "3.10.0",
|
|
4
|
+
"description": "透過 ttt CLI 同步與管理 Linear、Trello 任務。",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "wayne930242"
|
|
7
|
+
},
|
|
8
|
+
"repository": "https://github.com/wayne930242/team-toon-tack",
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"skills": "./skills/",
|
|
11
|
+
"interface": {
|
|
12
|
+
"displayName": "team-toon-tack",
|
|
13
|
+
"shortDescription": "同步與管理 Linear、Trello 任務",
|
|
14
|
+
"longDescription": "透過 ttt CLI 同步任務、查詢狀態、記錄估時,並依使用者要求更新 Linear 與 Trello。",
|
|
15
|
+
"developerName": "wayne930242",
|
|
16
|
+
"category": "Productivity",
|
|
17
|
+
"capabilities": ["Interactive", "Write"],
|
|
18
|
+
"defaultPrompt": ["使用 ttt 同步並列出我的任務。"]
|
|
19
|
+
}
|
|
20
|
+
}
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Optimized task workflow for Claude Code — supports Linear and Trello, saves si
|
|
|
8
8
|
|
|
9
9
|
- **Token Efficient** — Local cycle cache eliminates repeated API calls, saving significant tokens vs MCP
|
|
10
10
|
- **Multi-source Support** — Works with both Linear and Trello
|
|
11
|
-
- **
|
|
11
|
+
- **Batch Ticket Claiming** — Claim one or many tickets at once with `ttt claim`, or auto-pick your highest priority pending tasks with `ttt claim next <n>`
|
|
12
12
|
- **Multi-team Support** — Sync and filter issues across multiple teams/boards
|
|
13
13
|
- **Flexible Sync Modes** — Choose between remote (immediate sync) or local (offline-first, sync later with `--update`)
|
|
14
14
|
- **Completion Modes** — Four modes for task completion (Linear): simple, strict review, upstream strict, upstream not strict
|
|
@@ -67,16 +67,39 @@ During init, you'll be prompted to select your task source (Linear or Trello) an
|
|
|
67
67
|
|
|
68
68
|
```
|
|
69
69
|
/plugin marketplace add wayne930242/team-toon-tack
|
|
70
|
-
/plugin install team-toon-tack@
|
|
70
|
+
/plugin install team-toon-tack@ttt-marketplace
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
+
### Codex plugin 安裝(選擇性)
|
|
74
|
+
|
|
75
|
+
先依上方步驟安裝 `ttt` CLI 並執行 `ttt init`。Plugin 提供任務管理技能,透過 shell 呼叫 CLI。
|
|
76
|
+
|
|
77
|
+
從 GitHub 安裝:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
codex plugin marketplace add wayne930242/team-toon-tack
|
|
81
|
+
codex plugin add team-toon-tack@ttt-marketplace
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
從本地 checkout 安裝,在此 repository 根目錄執行:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
codex plugin marketplace add "$PWD"
|
|
88
|
+
codex plugin add team-toon-tack@ttt-marketplace
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
若已註冊同名的 GitHub marketplace,先執行 `codex plugin marketplace remove ttt-marketplace`,再加入本地路徑。
|
|
92
|
+
修改已安裝的同版本內容後,先執行 `codex plugin remove team-toon-tack@ttt-marketplace`,再執行上述 `codex plugin add` 重新安裝。
|
|
93
|
+
|
|
94
|
+
安裝完成後開啟新的 Codex 對話,使用 `$managing-linear-tasks`,或直接說「使用 ttt 同步並列出我的任務」。Codex 會使用 `ttt sync`、`ttt show` 等 CLI 指令。
|
|
95
|
+
|
|
73
96
|
### 3. Daily Workflow
|
|
74
97
|
|
|
75
98
|
In Claude Code (with plugin installed):
|
|
76
99
|
|
|
77
100
|
```
|
|
78
101
|
/ttt:sync # Fetch all issues/cards for current cycle
|
|
79
|
-
/ttt:work-on next #
|
|
102
|
+
/ttt:work-on next # Claim highest priority ticket & start working
|
|
80
103
|
/ttt:estimate MP-123 6 # Save a local 6-hour estimate
|
|
81
104
|
/ttt:done # Complete task with AI-generated summary
|
|
82
105
|
```
|
|
@@ -85,7 +108,7 @@ Or using CLI directly:
|
|
|
85
108
|
|
|
86
109
|
```bash
|
|
87
110
|
ttt sync
|
|
88
|
-
ttt
|
|
111
|
+
ttt claim next
|
|
89
112
|
ttt estimate MP-123 6
|
|
90
113
|
ttt done -m "Completed the task"
|
|
91
114
|
```
|
|
@@ -121,16 +144,23 @@ ttt sync MP-123 # Sync specific issue only
|
|
|
121
144
|
ttt sync --update # Push local status changes to remote (for local mode)
|
|
122
145
|
```
|
|
123
146
|
|
|
124
|
-
### `ttt
|
|
147
|
+
### `ttt claim`
|
|
125
148
|
|
|
126
|
-
|
|
149
|
+
Claim ticket(s): move them to in-progress locally and on the remote source.
|
|
150
|
+
Alias: `ttt work-on`.
|
|
127
151
|
|
|
128
152
|
```bash
|
|
129
|
-
ttt
|
|
130
|
-
ttt
|
|
131
|
-
ttt
|
|
153
|
+
ttt claim # Interactive multi-select
|
|
154
|
+
ttt claim MP-123 # Claim one ticket
|
|
155
|
+
ttt claim MP-123 MP-124 # Batch claim
|
|
156
|
+
ttt claim next # Claim highest priority pending task
|
|
157
|
+
ttt claim next 3 # Claim top 3 pending tasks
|
|
158
|
+
ttt claim --dry-run # Preview without changes
|
|
132
159
|
```
|
|
133
160
|
|
|
161
|
+
Completed, in-review, and blocked tickets are reported and skipped without
|
|
162
|
+
stopping the rest of the batch. An unknown ID aborts before anything is claimed.
|
|
163
|
+
|
|
134
164
|
### `ttt estimate`
|
|
135
165
|
|
|
136
166
|
Save a local human-effort estimate that persists in `.ttt/cycle.toon`.
|
|
@@ -237,7 +267,7 @@ Install the plugin for Claude Code integration:
|
|
|
237
267
|
|
|
238
268
|
```
|
|
239
269
|
/plugin marketplace add wayne930242/team-toon-tack
|
|
240
|
-
/plugin install team-toon-tack@
|
|
270
|
+
/plugin install team-toon-tack@ttt-marketplace
|
|
241
271
|
```
|
|
242
272
|
|
|
243
273
|
### Available Commands
|
|
@@ -245,7 +275,7 @@ Install the plugin for Claude Code integration:
|
|
|
245
275
|
| Command | Description |
|
|
246
276
|
|---------|-------------|
|
|
247
277
|
| `/ttt:sync` | Sync issues to local cycle data |
|
|
248
|
-
| `/ttt:work-on` |
|
|
278
|
+
| `/ttt:work-on` | Claim ticket(s) and work on them |
|
|
249
279
|
| `/ttt:estimate` | Save a local human-effort estimate |
|
|
250
280
|
| `/ttt:done` | Mark current task as completed |
|
|
251
281
|
| `/ttt:status` | Show or modify task status |
|
|
@@ -253,7 +283,7 @@ Install the plugin for Claude Code integration:
|
|
|
253
283
|
|
|
254
284
|
### Auto-Activated Skill
|
|
255
285
|
|
|
256
|
-
The plugin includes a `linear-
|
|
286
|
+
The plugin includes a `managing-linear-tasks` skill that automatically activates when working with tasks, providing workflow guidance and best practices.
|
|
257
287
|
|
|
258
288
|
## License
|
|
259
289
|
|
package/README.zh-TW.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
- **節省 Token** — 本地 cycle 快取避免重複 API 呼叫,比 MCP 省下大量 token
|
|
10
10
|
- **多來源支援** — 支援 Linear 和 Trello
|
|
11
|
-
-
|
|
11
|
+
- **批次領票** — `ttt claim` 可一次領一張或多張票,`ttt claim next <n>` 自動領取最高優先級的待辦任務
|
|
12
12
|
- **多團隊支援** — 跨多個團隊/看板同步與過濾 issue
|
|
13
13
|
- **彈性同步模式** — 選擇 remote(即時同步)或 local(離線優先,稍後用 `--update` 同步)
|
|
14
14
|
- **完成模式** — 四種任務完成模式(Linear):簡單、嚴格審查、上下游嚴格、上下游非嚴格
|
|
@@ -67,16 +67,39 @@ ttt init
|
|
|
67
67
|
|
|
68
68
|
```
|
|
69
69
|
/plugin marketplace add wayne930242/team-toon-tack
|
|
70
|
-
/plugin install team-toon-tack@
|
|
70
|
+
/plugin install team-toon-tack@ttt-marketplace
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
+
### Codex plugin 安裝(選擇性)
|
|
74
|
+
|
|
75
|
+
先依上方步驟安裝 `ttt` CLI 並執行 `ttt init`。Plugin 提供任務管理技能,透過 shell 呼叫 CLI。
|
|
76
|
+
|
|
77
|
+
從 GitHub 安裝:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
codex plugin marketplace add wayne930242/team-toon-tack
|
|
81
|
+
codex plugin add team-toon-tack@ttt-marketplace
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
從本地 checkout 安裝,在此 repository 根目錄執行:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
codex plugin marketplace add "$PWD"
|
|
88
|
+
codex plugin add team-toon-tack@ttt-marketplace
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
若已註冊同名的 GitHub marketplace,先執行 `codex plugin marketplace remove ttt-marketplace`,再加入本地路徑。
|
|
92
|
+
修改已安裝的同版本內容後,先執行 `codex plugin remove team-toon-tack@ttt-marketplace`,再執行上述 `codex plugin add` 重新安裝。
|
|
93
|
+
|
|
94
|
+
安裝完成後開啟新的 Codex 對話,使用 `$managing-linear-tasks`,或直接說「使用 ttt 同步並列出我的任務」。Codex 會使用 `ttt sync`、`ttt show` 等 CLI 指令。
|
|
95
|
+
|
|
73
96
|
### 3. 每日工作流
|
|
74
97
|
|
|
75
98
|
在 Claude Code 中(安裝 plugin 後):
|
|
76
99
|
|
|
77
100
|
```
|
|
78
101
|
/ttt:sync # 取得當前 cycle 所有 issue/card
|
|
79
|
-
/ttt:work-on next #
|
|
102
|
+
/ttt:work-on next # 領取最高優先級的票並開始工作
|
|
80
103
|
/ttt:estimate MP-123 6 # 寫入本地 6 小時估時
|
|
81
104
|
/ttt:done # 完成任務,附上 AI 生成的摘要
|
|
82
105
|
```
|
|
@@ -85,7 +108,7 @@ ttt init
|
|
|
85
108
|
|
|
86
109
|
```bash
|
|
87
110
|
ttt sync
|
|
88
|
-
ttt
|
|
111
|
+
ttt claim next
|
|
89
112
|
ttt estimate MP-123 6
|
|
90
113
|
ttt done -m "完成任務"
|
|
91
114
|
```
|
|
@@ -121,16 +144,23 @@ ttt sync MP-123 # 只同步特定 issue
|
|
|
121
144
|
ttt sync --update # 將本地狀態推送到遠端(local 模式用)
|
|
122
145
|
```
|
|
123
146
|
|
|
124
|
-
### `ttt
|
|
147
|
+
### `ttt claim`
|
|
125
148
|
|
|
126
|
-
|
|
149
|
+
領票:把票在本地與遠端來源改成 in-progress。
|
|
150
|
+
別名:`ttt work-on`。
|
|
127
151
|
|
|
128
152
|
```bash
|
|
129
|
-
ttt
|
|
130
|
-
ttt
|
|
131
|
-
ttt
|
|
153
|
+
ttt claim # 互動多選
|
|
154
|
+
ttt claim MP-123 # 領一張票
|
|
155
|
+
ttt claim MP-123 MP-124 # 批次領票
|
|
156
|
+
ttt claim next # 領最高優先級的待辦任務
|
|
157
|
+
ttt claim next 3 # 領最高優先級的前 3 張票
|
|
158
|
+
ttt claim --dry-run # 預覽,不改狀態
|
|
132
159
|
```
|
|
133
160
|
|
|
161
|
+
已完成、審核中、blocked 的票會逐張回報並跳過,不中斷整批。
|
|
162
|
+
批次中出現不存在的 ID 時,整批在動任何票之前中止。
|
|
163
|
+
|
|
134
164
|
### `ttt estimate`
|
|
135
165
|
|
|
136
166
|
把人類工程工時估算寫進 `.ttt/cycle.toon`,並在之後的同步中保留下來。
|
|
@@ -237,7 +267,7 @@ your-project/
|
|
|
237
267
|
|
|
238
268
|
```
|
|
239
269
|
/plugin marketplace add wayne930242/team-toon-tack
|
|
240
|
-
/plugin install team-toon-tack@
|
|
270
|
+
/plugin install team-toon-tack@ttt-marketplace
|
|
241
271
|
```
|
|
242
272
|
|
|
243
273
|
### 可用指令
|
|
@@ -245,7 +275,7 @@ your-project/
|
|
|
245
275
|
| 指令 | 說明 |
|
|
246
276
|
|------|------|
|
|
247
277
|
| `/ttt:sync` | 同步 issue 到本地 |
|
|
248
|
-
| `/ttt:work-on` |
|
|
278
|
+
| `/ttt:work-on` | 領票並開始處理 |
|
|
249
279
|
| `/ttt:estimate` | 寫入本地人力估時 |
|
|
250
280
|
| `/ttt:done` | 標記當前任務完成 |
|
|
251
281
|
| `/ttt:status` | 顯示或修改任務狀態 |
|
|
@@ -253,7 +283,7 @@ your-project/
|
|
|
253
283
|
|
|
254
284
|
### 自動啟用技能
|
|
255
285
|
|
|
256
|
-
Plugin 包含 `linear-
|
|
286
|
+
Plugin 包含 `managing-linear-tasks` 技能,在處理任務時會自動啟用,提供工作流程指導和最佳實踐。
|
|
257
287
|
|
|
258
288
|
## 授權
|
|
259
289
|
|
package/commands/ttt-comment.md
CHANGED
|
@@ -57,5 +57,5 @@ Report:
|
|
|
57
57
|
| Error | Solution |
|
|
58
58
|
|-------|----------|
|
|
59
59
|
| `Message is required` | Add `-m "your message"` |
|
|
60
|
-
| `No in-progress task` | Specify issue-id or run `ttt
|
|
60
|
+
| `No in-progress task` | Specify issue-id or run `ttt claim` first |
|
|
61
61
|
| `Issue not found` | Issue doesn't exist in remote either — check the ID |
|
package/commands/ttt-status.md
CHANGED
|
@@ -80,5 +80,5 @@ If a `--set` operation is performed, the remote task is added to local cycle dat
|
|
|
80
80
|
|
|
81
81
|
| Error | Solution |
|
|
82
82
|
|-------|----------|
|
|
83
|
-
| `No in-progress task` | Specify issue-id or run `ttt
|
|
83
|
+
| `No in-progress task` | Specify issue-id or run `ttt claim` first |
|
|
84
84
|
| `Issue not found` | Issue doesn't exist in remote either — check the ID |
|
package/commands/ttt-work-on.md
CHANGED
|
@@ -1,114 +1,82 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ttt:work-on
|
|
3
|
-
description:
|
|
3
|
+
description: Claim Linear/Trello ticket(s) and work on them
|
|
4
4
|
arguments:
|
|
5
|
-
- name: issue-
|
|
6
|
-
description: "
|
|
5
|
+
- name: issue-ids
|
|
6
|
+
description: "One or more issue IDs (e.g., MP-624 MP-625), or 'next' / 'next <n>' for auto-select. Defaults to 'next'."
|
|
7
7
|
required: false
|
|
8
|
-
default: next
|
|
9
8
|
- name: dry-run
|
|
10
9
|
description: Preview selection without changing status
|
|
11
10
|
required: false
|
|
12
11
|
---
|
|
13
12
|
|
|
14
13
|
<law>
|
|
15
|
-
YOU MUST execute the `ttt
|
|
14
|
+
YOU MUST execute the `ttt claim` command using the Bash tool.
|
|
16
15
|
DO NOT manually edit cycle.toon or change task status by other means.
|
|
17
|
-
After
|
|
16
|
+
After each task is completed, YOU MUST execute `/ttt:done -m "summary"`. This is MANDATORY.
|
|
18
17
|
</law>
|
|
19
18
|
|
|
20
|
-
# /ttt:work-on —
|
|
19
|
+
# /ttt:work-on — Claim a Ticket and Work on It
|
|
20
|
+
|
|
21
|
+
`ttt claim` is the command; `ttt work-on` is its alias. Claiming moves the ticket
|
|
22
|
+
to in-progress locally and on the remote source.
|
|
21
23
|
|
|
22
24
|
## Execution
|
|
23
25
|
|
|
24
26
|
```bash
|
|
25
|
-
ttt
|
|
27
|
+
ttt claim {{ issue-ids | default: "next" }} {{ "--dry-run" if dry-run }}
|
|
26
28
|
```
|
|
27
29
|
|
|
28
30
|
### Argument Resolution
|
|
29
31
|
|
|
30
32
|
| Input | Command |
|
|
31
33
|
|-------|---------|
|
|
32
|
-
| (none) | `ttt
|
|
33
|
-
| `next` | `ttt
|
|
34
|
-
| `
|
|
35
|
-
|
|
|
36
|
-
| `MP-624
|
|
34
|
+
| (none) | `ttt claim next` |
|
|
35
|
+
| `next` | `ttt claim next` |
|
|
36
|
+
| `next 3` | `ttt claim next 3` |
|
|
37
|
+
| `MP-624` | `ttt claim MP-624` |
|
|
38
|
+
| `MP-624 MP-625` | `ttt claim MP-624 MP-625` |
|
|
39
|
+
| `--dry-run` | `ttt claim next --dry-run` |
|
|
40
|
+
| `MP-624 --dry-run` | `ttt claim MP-624 --dry-run` |
|
|
37
41
|
|
|
38
42
|
## Full CLI Reference
|
|
39
43
|
|
|
40
44
|
```
|
|
41
|
-
Usage: ttt
|
|
45
|
+
Usage: ttt claim [issue-id...] [options]
|
|
46
|
+
|
|
47
|
+
Claim ticket(s): move them to in-progress locally and on the remote source.
|
|
48
|
+
Alias: ttt work-on
|
|
42
49
|
|
|
43
50
|
Arguments:
|
|
44
|
-
issue-id
|
|
45
|
-
|
|
51
|
+
issue-id One or more issue IDs (e.g., MP-624 MP-625)
|
|
52
|
+
'next' claims the highest priority pending task
|
|
53
|
+
'next <n>' claims the top <n> pending tasks
|
|
54
|
+
If omitted, shows interactive multi-select
|
|
46
55
|
|
|
47
56
|
Options:
|
|
48
|
-
--dry-run Pick
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
## Workflow — Plan → Test → Code → Review
|
|
52
|
-
|
|
53
|
-
Follow this loop for every task.
|
|
54
|
-
Skipping phases is not "pragmatic", it is debt.
|
|
55
|
-
|
|
56
|
-
### 1. Branch
|
|
57
|
-
|
|
58
|
-
Check current branch and repo convention first (e.g. recent `git log --oneline -10`, existing branch naming pattern).
|
|
59
|
-
If unclear whether to branch or what name to use, ask the user instead of assuming.
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
git checkout -b <branch-name-matching-user-convention>
|
|
57
|
+
--dry-run Pick tickets without changing status (preview only)
|
|
63
58
|
```
|
|
64
59
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
60
|
+
Tickets that are already completed, in review, or blocked are reported and
|
|
61
|
+
skipped without stopping the rest of the batch. An unknown ID aborts before
|
|
62
|
+
anything is claimed.
|
|
68
63
|
|
|
69
|
-
|
|
70
|
-
- Clear and small (≤2 files, obvious change) → state a 2–3 bullet plan inline before coding.
|
|
64
|
+
## After Claiming — Delegate the Implementation
|
|
71
65
|
|
|
72
|
-
|
|
73
|
-
Planning collapses ambiguity before implementation.
|
|
66
|
+
This command claims the tickets. The implementation workflow belongs to the user.
|
|
74
67
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
Red → Green → Refactor per behavior:
|
|
78
|
-
|
|
79
|
-
1. Write one failing test naming the behavior.
|
|
80
|
-
2. Run test — verify it fails for the expected reason.
|
|
81
|
-
3. Write minimal code to pass.
|
|
82
|
-
4. Run test — verify pass, other tests still green.
|
|
83
|
-
5. Refactor if needed, keep green.
|
|
84
|
-
|
|
85
|
-
No production code without a failing test first.
|
|
86
|
-
|
|
87
|
-
### 4. Review (before `/ttt:done`)
|
|
88
|
-
|
|
89
|
-
Verify before claiming completion — run and confirm output:
|
|
90
|
-
|
|
91
|
-
- Full test suite passes.
|
|
92
|
-
- `npm run lint` / `npm run type` clean (or project-specific commands).
|
|
93
|
-
- Only requested scope changed — no drive-by edits.
|
|
94
|
-
- No debug logs, stubs, TODOs.
|
|
95
|
-
|
|
96
|
-
Evidence before assertions.
|
|
97
|
-
Do not claim complete without running the commands.
|
|
98
|
-
|
|
99
|
-
### 5. Complete
|
|
100
|
-
|
|
101
|
-
```text
|
|
102
|
-
/ttt:done -m "summary"
|
|
103
|
-
```
|
|
68
|
+
**Use the user's own workflow whenever one exists** — routing or laws in their root `CLAUDE.md`, the project `CLAUDE.md`, or a `work-on` / `start-work` skill. Follow it as written and add nothing.
|
|
104
69
|
|
|
105
|
-
|
|
106
|
-
This is MANDATORY.
|
|
70
|
+
**Only when none exists**, run this minimal loop:
|
|
107
71
|
|
|
108
|
-
|
|
72
|
+
- Branch using the repo's existing naming convention.
|
|
73
|
+
- State a short plan before coding; for unclear scope or 3+ files, settle the scope with the user first.
|
|
74
|
+
- Write the failing test first, then the minimal code to pass it.
|
|
75
|
+
- Run lint / type / test and report the real output before claiming completion.
|
|
76
|
+
- Offer `/ttt:write-work-on-skill` to capture this project's commands as a reusable skill.
|
|
109
77
|
|
|
110
|
-
|
|
111
|
-
|
|
78
|
+
When several tickets were claimed at once, carry them one at a time and close
|
|
79
|
+
each with `/ttt:done -m "summary"` before starting the next.
|
|
112
80
|
|
|
113
81
|
## Error Handling
|
|
114
82
|
|
|
@@ -49,7 +49,7 @@ Create `.claude/skills/{{ $1 | default: "work-on" }}/SKILL.md` using the Plan
|
|
|
49
49
|
```markdown
|
|
50
50
|
---
|
|
51
51
|
name: {{ $1 | default: "work-on" }}
|
|
52
|
-
description: Project workflow — Plan → Test → Code → Review. Invoke after ttt
|
|
52
|
+
description: Project workflow — Plan → Test → Code → Review. Invoke after ttt claim claims a ticket.
|
|
53
53
|
---
|
|
54
54
|
|
|
55
55
|
# Work-On Skill ({{ project-name }})
|
package/dist/bin/cli.js
CHANGED
|
@@ -10,6 +10,7 @@ const VERSION = pkg.version;
|
|
|
10
10
|
const COMMANDS = [
|
|
11
11
|
"init",
|
|
12
12
|
"sync",
|
|
13
|
+
"claim",
|
|
13
14
|
"work-on",
|
|
14
15
|
"estimate",
|
|
15
16
|
"done",
|
|
@@ -34,7 +35,8 @@ USAGE:
|
|
|
34
35
|
COMMANDS:
|
|
35
36
|
init Initialize config files in current directory
|
|
36
37
|
sync Sync issues from Linear to local cycle.ttt
|
|
37
|
-
|
|
38
|
+
claim Claim ticket(s) and move them to in-progress
|
|
39
|
+
work-on Alias for claim
|
|
38
40
|
estimate Store a local human-effort estimate for a task
|
|
39
41
|
done Mark current task as completed
|
|
40
42
|
status Show or modify task status
|
|
@@ -58,9 +60,9 @@ EXAMPLES:
|
|
|
58
60
|
ttt init # Initialize .ttt directory
|
|
59
61
|
ttt init -d ./custom # Initialize in custom directory
|
|
60
62
|
ttt sync # Sync from Linear
|
|
61
|
-
ttt
|
|
62
|
-
ttt
|
|
63
|
-
ttt
|
|
63
|
+
ttt claim # Interactive multi-select
|
|
64
|
+
ttt claim MP-123 MP-124 # Claim several tickets at once
|
|
65
|
+
ttt claim next 3 # Claim top 3 pending tasks
|
|
64
66
|
ttt estimate MP-123 6 # Save a 6-hour estimate locally
|
|
65
67
|
ttt done # Complete current task
|
|
66
68
|
ttt done -m "Fixed the bug" # With completion message
|
|
@@ -146,9 +148,10 @@ async function main() {
|
|
|
146
148
|
process.argv = ["node", "sync.js", ...commandArgs];
|
|
147
149
|
await importScript("sync.js");
|
|
148
150
|
break;
|
|
151
|
+
case "claim":
|
|
149
152
|
case "work-on":
|
|
150
|
-
process.argv = ["node", "
|
|
151
|
-
await importScript("
|
|
153
|
+
process.argv = ["node", "claim.js", ...commandArgs];
|
|
154
|
+
await importScript("claim.js");
|
|
152
155
|
break;
|
|
153
156
|
case "estimate":
|
|
154
157
|
process.argv = ["node", "estimate.js", ...commandArgs];
|
|
@@ -172,7 +175,7 @@ async function main() {
|
|
|
172
175
|
break;
|
|
173
176
|
case "create":
|
|
174
177
|
process.argv = ["node", "create.js", ...commandArgs];
|
|
175
|
-
await importScript("create.js");
|
|
178
|
+
await importScript("create.js").then((module) => module.create());
|
|
176
179
|
break;
|
|
177
180
|
case "assign":
|
|
178
181
|
process.argv = ["node", "assign.js", ...commandArgs];
|