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.
@@ -13,7 +13,7 @@
13
13
  "name": "team-toon-tack",
14
14
  "source": "./",
15
15
  "description": "Linear/Trello task sync & management CLI with commands and skills",
16
- "version": "2.8.5"
16
+ "version": "3.10.0"
17
17
  }
18
18
  ]
19
19
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "team-toon-tack",
3
3
  "description": "Linear/Trello task sync & management CLI for Claude Code - saves tokens vs MCP",
4
- "version": "2.8.5",
4
+ "version": "3.10.0",
5
5
  "author": {
6
6
  "name": "wayne930242",
7
7
  "email": "wayne930242@gmail.com"
@@ -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
- - **Smart Task Selection** — Auto-pick your highest priority pending task with `/work-on next`
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@wayne930242
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 # Pick highest priority task & start working
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 work-on next
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 work-on`
147
+ ### `ttt claim`
125
148
 
126
- Start working on a task.
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 work-on # Interactive selection
130
- ttt work-on MP-123 # Specific issue
131
- ttt work-on next # Auto-select highest priority
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@wayne930242
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` | Start working on a task |
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-task-manager` skill that automatically activates when working with tasks, providing workflow guidance and best practices.
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
- - **智慧任務挑選**`/work-on next` 自動選擇指派給你的最高優先級待辦任務
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@wayne930242
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 work-on next
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 work-on`
147
+ ### `ttt claim`
125
148
 
126
- 開始處理任務。
149
+ 領票:把票在本地與遠端來源改成 in-progress。
150
+ 別名:`ttt work-on`。
127
151
 
128
152
  ```bash
129
- ttt work-on # 互動選擇
130
- ttt work-on MP-123 # 指定 issue
131
- ttt work-on next # 自動選擇最高優先級
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@wayne930242
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-task-manager` 技能,在處理任務時會自動啟用,提供工作流程指導和最佳實踐。
286
+ Plugin 包含 `managing-linear-tasks` 技能,在處理任務時會自動啟用,提供工作流程指導和最佳實踐。
257
287
 
258
288
  ## 授權
259
289
 
@@ -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 work-on` first |
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 |
@@ -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 work-on` first |
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 |
@@ -1,114 +1,82 @@
1
1
  ---
2
2
  name: ttt:work-on
3
- description: Start working on a Linear task
3
+ description: Claim Linear/Trello ticket(s) and work on them
4
4
  arguments:
5
- - name: issue-id
6
- description: "Issue ID (e.g., MP-624) or 'next' for auto-select. Defaults to 'next'."
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 work-on` command using the Bash tool.
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 the task is completed, YOU MUST execute `/ttt:done -m "summary"`. This is MANDATORY.
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 — Start Working on a Task
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 work-on {{ issue-id | default: "next" }} {{ "--dry-run" if dry-run }}
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 work-on next` |
33
- | `next` | `ttt work-on next` |
34
- | `MP-624` | `ttt work-on MP-624` |
35
- | `--dry-run` | `ttt work-on next --dry-run` |
36
- | `MP-624 --dry-run` | `ttt work-on MP-624 --dry-run` |
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 work-on [issue-id] [options]
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 Issue ID (e.g., MP-624) or 'next' for auto-select
45
- If omitted, shows interactive selection
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 task without changing status (preview only)
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
- ### 2. Plan
66
-
67
- Scope decides depth.
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
- - Unclear requirements or 3+ files touched → if your environment has a brainstorming/planning skill, use it; otherwise clarify scope with the user and write a short plan before coding.
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
- Never go straight to code.
73
- Planning collapses ambiguity before implementation.
66
+ This command claims the tickets. The implementation workflow belongs to the user.
74
67
 
75
- ### 3. Test First (TDD)
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
- A task is NOT complete until `/ttt:done` runs.
106
- This is MANDATORY.
70
+ **Only when none exists**, run this minimal loop:
107
71
 
108
- ## Project-Specific Skill
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
- Check `.claude/skills/work-on/` or `.claude/skills/start-work/` for project-specific lint / type / test commands and conventions.
111
- If missing, suggest `/ttt:write-work-on-skill` it scaffolds a skill following this same 4-phase structure.
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 work-on picks a task.
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
- work-on Start working on a task (interactive or by ID)
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 work-on # Interactive task selection
62
- ttt work-on MP-123 # Work on specific issue
63
- ttt work-on next # Auto-select highest priority
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", "work-on.js", ...commandArgs];
151
- await importScript("work-on.js");
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];
@@ -70,4 +70,7 @@ Examples:
70
70
  console.log(` Removed from local cycle data.`);
71
71
  }
72
72
  }
73
- cancel().catch(console.error);
73
+ cancel().catch((error) => {
74
+ console.error(error);
75
+ process.exit(1);
76
+ });