team-toon-tack 2.0.3 → 2.3.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.
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "ttt-marketplace",
3
+ "owner": {
4
+ "name": "wayne930242",
5
+ "email": "wayne930242@gmail.com"
6
+ },
7
+ "metadata": {
8
+ "description": "Linear task management tools for Claude Code - efficient workflow without MCP overhead",
9
+ "version": "1.0.0"
10
+ },
11
+ "plugins": [
12
+ {
13
+ "name": "team-toon-tack",
14
+ "source": "./",
15
+ "description": "Linear task sync & management CLI with commands and skills",
16
+ "version": "2.3.0"
17
+ }
18
+ ]
19
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "team-toon-tack",
3
+ "description": "Linear task sync & management CLI for Claude Code - saves tokens vs MCP",
4
+ "version": "2.3.0",
5
+ "author": {
6
+ "name": "wayne930242",
7
+ "email": "wayne930242@gmail.com"
8
+ },
9
+ "repository": "https://github.com/wayne930242/team-toon-tack",
10
+ "license": "MIT",
11
+ "keywords": [
12
+ "claude-code",
13
+ "linear",
14
+ "task-management",
15
+ "workflow",
16
+ "productivity"
17
+ ]
18
+ }
package/README.md CHANGED
@@ -10,10 +10,11 @@ Optimized Linear workflow for Claude Code — saves significant tokens compared
10
10
  - **Smart Task Selection** — Auto-pick highest priority unassigned work with `/work-on next`
11
11
  - **Multi-team Support** — Sync and filter issues across multiple teams
12
12
  - **Flexible Sync Modes** — Choose between remote (immediate Linear sync) or local (offline-first, sync later with `--update`)
13
- - **QA/PM Team Support** — Auto-update parent issues in QA/PM team to "Testing" when completing dev tasks
13
+ - **Completion Modes** — Four modes for task completion: simple, strict review, upstream strict, upstream not strict
14
+ - **QA Team Support** — Auto-update parent issues in QA team to "Testing" when completing dev tasks
14
15
  - **Attachment Download** — Auto-download Linear images and files to local `.ttt/output/` for AI vision analysis
15
16
  - **Blocked Status** — Set tasks as blocked when waiting on external dependencies
16
- - **Auto Command Setup** — `ttt init` can install Claude Code commands with custom prefix
17
+ - **Claude Code Plugin** — Install plugin for `/ttt-*` commands and auto-activated skills
17
18
  - **Cycle History** — Local `.toon` files preserve cycle data for AI context
18
19
  - **User Filtering** — Only see issues assigned to you or unassigned
19
20
 
@@ -30,21 +31,45 @@ ttt init
30
31
  ```
31
32
 
32
33
  During init, you'll configure:
34
+ - **Dev team**: Your development team (single selection)
35
+ - **Dev testing status**: Testing/review status for your dev team (optional)
36
+ - **QA team(s)**: For cross-team parent issue updates, each with its own testing status (optional)
37
+ - **Completion mode**: How task completion is handled (see below)
33
38
  - **Status source**: `remote` (update Linear immediately) or `local` (work offline, sync with `ttt sync --update`)
34
- - **QA/PM team**: For cross-team parent issue updates (parent must be set in Linear)
35
- - **Claude Code commands**: Auto-install with optional prefix (e.g., `/ttt:work-on`)
36
39
 
37
- ### 2. Daily Workflow
40
+ ### Completion Modes
38
41
 
39
- In Claude Code:
42
+ | Mode | Behavior |
43
+ |------|----------|
44
+ | `simple` | Mark task as Done + parent as Done. Default when no QA team configured. |
45
+ | `strict_review` | Mark task to dev testing + parent to QA testing. |
46
+ | `upstream_strict` | Mark task as Done + parent to Testing. Falls back to dev testing if no parent. Default when QA team configured. |
47
+ | `upstream_not_strict` | Mark task as Done + parent to Testing. No fallback if no parent. |
48
+
49
+ ### 2. Install Claude Code Plugin (Optional)
50
+
51
+ ```
52
+ /plugin marketplace add wayne930242/team-toon-tack
53
+ /plugin install team-toon-tack@wayne930242
54
+ ```
55
+
56
+ ### 3. Daily Workflow
57
+
58
+ In Claude Code (with plugin installed):
40
59
 
41
60
  ```
42
- /sync # Fetch all Linear issues for current cycle
43
- /work-on next # Pick highest priority task & start working
44
- /done-job # Complete task with AI-generated summary
61
+ /ttt-sync # Fetch all Linear issues for current cycle
62
+ /ttt-work-on next # Pick highest priority task & start working
63
+ /ttt-done # Complete task with AI-generated summary
45
64
  ```
46
65
 
47
- That's it.
66
+ Or using CLI directly:
67
+
68
+ ```bash
69
+ ttt sync
70
+ ttt work-on next
71
+ ttt done -m "Completed the task"
72
+ ```
48
73
 
49
74
  ---
50
75
 
@@ -103,6 +128,15 @@ ttt status MP-123 --set done # Mark as done
103
128
  ttt status MP-123 --set blocked # Set as blocked (waiting on dependency)
104
129
  ```
105
130
 
131
+ ### `ttt get-issue`
132
+
133
+ Fetch and display issue details from Linear.
134
+
135
+ ```bash
136
+ ttt get-issue MP-123 # Fetch from Linear and display
137
+ ttt get-issue MP-123 --local # Show from local data only
138
+ ```
139
+
106
140
  ### `ttt config`
107
141
 
108
142
  Configure settings.
@@ -134,6 +168,29 @@ your-project/
134
168
  | `LINEAR_API_KEY` | **Required.** Your Linear API key |
135
169
  | `TOON_DIR` | Config directory (default: `.ttt`) |
136
170
 
171
+ ## Claude Code Plugin
172
+
173
+ Install the plugin for Claude Code integration:
174
+
175
+ ```
176
+ /plugin marketplace add wayne930242/team-toon-tack
177
+ /plugin install team-toon-tack@wayne930242
178
+ ```
179
+
180
+ ### Available Commands
181
+
182
+ | Command | Description |
183
+ |---------|-------------|
184
+ | `/ttt-sync` | Sync Linear issues to local cycle data |
185
+ | `/ttt-work-on` | Start working on a task |
186
+ | `/ttt-done` | Mark current task as completed |
187
+ | `/ttt-status` | Show or modify task status |
188
+ | `/ttt-get-issue` | Fetch and display issue details |
189
+
190
+ ### Auto-Activated Skill
191
+
192
+ The plugin includes a `linear-task-manager` skill that automatically activates when working with Linear tasks, providing workflow guidance and best practices.
193
+
137
194
  ## License
138
195
 
139
196
  MIT
package/README.zh-TW.md CHANGED
@@ -10,10 +10,11 @@
10
10
  - **智慧任務挑選** — `/work-on next` 自動選擇最高優先級的未指派工作
11
11
  - **多團隊支援** — 跨多個團隊同步與過濾 issue
12
12
  - **彈性同步模式** — 選擇 remote(即時同步 Linear)或 local(離線優先,稍後用 `--update` 同步)
13
- - **QA/PM 團隊支援** 完成開發任務時自動將 QA/PM 團隊的 parent issue 更新為「Testing」
13
+ - **完成模式**四種任務完成模式:簡單、嚴格審查、上下游嚴格、上下游非嚴格
14
+ - **QA 團隊支援** — 完成開發任務時自動將 QA 團隊的 parent issue 更新為「Testing」
14
15
  - **附件下載** — 自動下載 Linear 圖片和檔案到本地 `.ttt/output/`,供 AI 視覺分析
15
16
  - **阻塞狀態** — 等待外部依賴時可設定任務為 blocked
16
- - **自動安裝指令**`ttt init` 可自動安裝 Claude Code commands,支援自訂前綴
17
+ - **Claude Code Plugin** 安裝 plugin 即可使用 `/ttt-*` 指令和自動啟用的技能
17
18
  - **Cycle 歷史保存** — 本地 `.toon` 檔案保留 cycle 資料,方便 AI 檢閱
18
19
  - **使用者過濾** — 只顯示指派給你或未指派的工作
19
20
 
@@ -30,21 +31,45 @@ ttt init
30
31
  ```
31
32
 
32
33
  初始化時會設定:
34
+ - **開發團隊**:你的開發團隊(單選)
35
+ - **開發團隊測試狀態**:開發團隊的 testing/review 狀態(可選)
36
+ - **QA 團隊**:跨團隊 parent issue 更新,各自設定 testing 狀態(可選)
37
+ - **完成模式**:任務完成時的處理方式(見下方說明)
33
38
  - **狀態來源**:`remote`(即時更新 Linear)或 `local`(離線工作,用 `ttt sync --update` 同步)
34
- - **QA/PM 團隊**:跨團隊 parent issue 更新(需在 Linear 設定 parent)
35
- - **Claude Code commands**:自動安裝,可選前綴(如 `/ttt:work-on`)
36
39
 
37
- ### 2. 每日工作流
40
+ ### 完成模式
38
41
 
39
- Claude Code 中:
42
+ | 模式 | 行為 |
43
+ |------|------|
44
+ | `simple` | 任務標記為 Done,parent 也標記為 Done。未設定 QA 團隊時的預設值。 |
45
+ | `strict_review` | 任務標記到開發團隊的 testing 狀態,parent 標記到 QA 團隊的 testing 狀態。 |
46
+ | `upstream_strict` | 任務標記為 Done,parent 移動到 Testing。若無 parent,fallback 到開發團隊的 testing 狀態。設定 QA 團隊時的預設值。 |
47
+ | `upstream_not_strict` | 任務標記為 Done,parent 移動到 Testing。若無 parent 不做 fallback。 |
48
+
49
+ ### 2. 安裝 Claude Code Plugin(選擇性)
50
+
51
+ ```
52
+ /plugin marketplace add wayne930242/team-toon-tack
53
+ /plugin install team-toon-tack@wayne930242
54
+ ```
55
+
56
+ ### 3. 每日工作流
57
+
58
+ 在 Claude Code 中(安裝 plugin 後):
40
59
 
41
60
  ```
42
- /sync # 從 Linear 取得當前 cycle 所有 issue
43
- /work-on next # 挑選最高優先級任務並開始工作
44
- /done-job # 完成任務,附上 AI 生成的摘要
61
+ /ttt-sync # 從 Linear 取得當前 cycle 所有 issue
62
+ /ttt-work-on next # 挑選最高優先級任務並開始工作
63
+ /ttt-done # 完成任務,附上 AI 生成的摘要
45
64
  ```
46
65
 
47
- 就這樣。
66
+ 或直接使用 CLI:
67
+
68
+ ```bash
69
+ ttt sync
70
+ ttt work-on next
71
+ ttt done -m "完成任務"
72
+ ```
48
73
 
49
74
  ---
50
75
 
@@ -103,6 +128,15 @@ ttt status MP-123 --set done # 標記為完成
103
128
  ttt status MP-123 --set blocked # 設為阻塞(等待外部依賴)
104
129
  ```
105
130
 
131
+ ### `ttt get-issue`
132
+
133
+ 從 Linear 取得並顯示 issue 詳細資訊。
134
+
135
+ ```bash
136
+ ttt get-issue MP-123 # 從 Linear 取得並顯示
137
+ ttt get-issue MP-123 --local # 只從本地資料顯示
138
+ ```
139
+
106
140
  ### `ttt config`
107
141
 
108
142
  配置設定。
@@ -134,6 +168,29 @@ your-project/
134
168
  | `LINEAR_API_KEY` | **必填**。你的 Linear API 金鑰 |
135
169
  | `TOON_DIR` | 配置目錄(預設:`.ttt`) |
136
170
 
171
+ ## Claude Code Plugin
172
+
173
+ 安裝 plugin 以整合 Claude Code:
174
+
175
+ ```
176
+ /plugin marketplace add wayne930242/team-toon-tack
177
+ /plugin install team-toon-tack@wayne930242
178
+ ```
179
+
180
+ ### 可用指令
181
+
182
+ | 指令 | 說明 |
183
+ |------|------|
184
+ | `/ttt-sync` | 同步 Linear issue 到本地 |
185
+ | `/ttt-work-on` | 開始處理任務 |
186
+ | `/ttt-done` | 標記當前任務完成 |
187
+ | `/ttt-status` | 顯示或修改任務狀態 |
188
+ | `/ttt-get-issue` | 取得並顯示 issue 詳情 |
189
+
190
+ ### 自動啟用技能
191
+
192
+ Plugin 包含 `linear-task-manager` 技能,在處理 Linear 任務時會自動啟用,提供工作流程指導和最佳實踐。
193
+
137
194
  ## 授權
138
195
 
139
196
  MIT
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: ttt-done
3
+ description: Mark current task as completed
4
+ arguments:
5
+ - name: issue-id
6
+ description: Optional issue ID if multiple tasks in progress
7
+ required: false
8
+ - name: message
9
+ description: Completion message (use -m flag)
10
+ required: false
11
+ ---
12
+
13
+ # TTT Done Command
14
+
15
+ Mark the current in-progress task as completed.
16
+
17
+ ## Usage
18
+
19
+ ### Auto-Select (single in-progress task)
20
+ ```bash
21
+ ttt done
22
+ ```
23
+
24
+ ### Specific Issue
25
+ If `issue-id` is provided:
26
+ ```bash
27
+ ttt done {{ issue-id }}
28
+ ```
29
+
30
+ ### With Completion Message
31
+ If `message` is provided:
32
+ ```bash
33
+ ttt done -m "{{ message }}"
34
+ ```
35
+
36
+ ### Combined
37
+ ```bash
38
+ ttt done {{ issue-id }} -m "{{ message }}"
39
+ ```
40
+
41
+ ## What This Does
42
+
43
+ Based on configured completion mode:
44
+
45
+ | Mode | Behavior |
46
+ |------|----------|
47
+ | `simple` | Task → Done, Parent → Done |
48
+ | `strict_review` | Task → Testing, Parent → QA Testing |
49
+ | `upstream_strict` | Task → Done, Parent → Testing |
50
+ | `upstream_not_strict` | Task → Done, Parent → Testing (no fallback) |
51
+
52
+ Also:
53
+ 1. Gets latest git commit info
54
+ 2. Adds completion comment to Linear with commit details
55
+ 3. Syncs task back from Linear to update local status
56
+
57
+ ## Before Running
58
+
59
+ Ensure you have:
60
+ 1. Committed your changes with a meaningful message
61
+ 2. Run tests and lint checks
62
+ 3. Pushed to remote branch (if applicable)
@@ -0,0 +1,71 @@
1
+ ---
2
+ name: ttt-get-issue
3
+ description: Fetch and display issue details from Linear
4
+ arguments:
5
+ - name: issue-id
6
+ description: Issue ID to fetch (e.g., MP-624)
7
+ required: true
8
+ - name: local
9
+ description: Only show from local data (add --local flag)
10
+ required: false
11
+ ---
12
+
13
+ # TTT Get-Issue Command
14
+
15
+ Fetch and display full issue details from Linear.
16
+
17
+ ## Usage
18
+
19
+ ### Fetch from Linear
20
+ ```bash
21
+ ttt get-issue {{ issue-id }}
22
+ ```
23
+
24
+ ### Show from Local Data Only
25
+ If `local` is "true" or "--local":
26
+ ```bash
27
+ ttt get-issue {{ issue-id }} --local
28
+ ```
29
+
30
+ ## What This Does
31
+
32
+ 1. Fetches full issue details from Linear API (or local cache if --local)
33
+ 2. Displays comprehensive information:
34
+ - Title and description
35
+ - Status (both Linear and local)
36
+ - Priority level
37
+ - Labels
38
+ - Assignee
39
+ - Branch name
40
+ - Parent issue (if subtask)
41
+ - Attachments with local paths
42
+ - Comments with timestamps
43
+
44
+ ## Use Cases
45
+
46
+ - Review issue details before starting work
47
+ - Check requirements and acceptance criteria
48
+ - View attachments and mockups
49
+ - Read comment history and discussions
50
+ - Verify issue status without full sync
51
+
52
+ ## Output Format
53
+
54
+ ```
55
+ 📋 MP-624: Issue Title
56
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
57
+ Status: In Progress | Local: in-progress
58
+ Priority: 🔴 Urgent
59
+ Labels: frontend, bug
60
+ Assignee: developer@example.com
61
+ Branch: feature/mp-624-fix-bug
62
+
63
+ Description:
64
+ [Full description content]
65
+
66
+ Attachments:
67
+ - screenshot.png (local: .ttt/output/MP-624/...)
68
+
69
+ Comments:
70
+ [Comment history]
71
+ ```
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: ttt-status
3
+ description: Show or modify task status
4
+ arguments:
5
+ - name: issue-id
6
+ description: Issue ID to check/modify (omit for current in-progress task)
7
+ required: false
8
+ - name: set
9
+ description: New status to set (+1, -1, pending, in-progress, completed, blocked, done)
10
+ required: false
11
+ ---
12
+
13
+ # TTT Status Command
14
+
15
+ Show or modify the status of a task.
16
+
17
+ ## Usage
18
+
19
+ ### Show Current In-Progress Task
20
+ ```bash
21
+ ttt status
22
+ ```
23
+
24
+ ### Show Specific Issue
25
+ If `issue-id` is provided:
26
+ ```bash
27
+ ttt status {{ issue-id }}
28
+ ```
29
+
30
+ ### Set Status
31
+ If `set` is provided:
32
+ ```bash
33
+ ttt status {{ issue-id }} --set {{ set }}
34
+ ```
35
+
36
+ ## Status Values
37
+
38
+ | Value | Description |
39
+ |-------|-------------|
40
+ | `+1` | Move to next status (pending → in-progress → completed) |
41
+ | `-1` | Move to previous status |
42
+ | `+2` | Skip two statuses forward |
43
+ | `-2` | Skip two statuses backward |
44
+ | `pending` | Set to pending |
45
+ | `in-progress` | Set to in-progress |
46
+ | `completed` | Set to completed |
47
+ | `blocked` | Set to blocked (waiting on dependency) |
48
+ | `todo` | Set Linear to Todo status |
49
+ | `done` | Set Linear to Done status |
50
+
51
+ ## Examples
52
+
53
+ ```bash
54
+ ttt status MP-624 --set +1 # Move to next status
55
+ ttt status MP-624 --set blocked # Mark as blocked
56
+ ttt status --set pending # Reset current task
57
+ ```
58
+
59
+ ## Output
60
+
61
+ Displays:
62
+ - Task ID and title
63
+ - Local status vs Linear status
64
+ - Priority and labels
65
+ - Assignee information
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: ttt-sync
3
+ description: Sync Linear issues to local cycle data
4
+ arguments:
5
+ - name: issue-id
6
+ description: Optional specific issue ID to sync (e.g., MP-624)
7
+ required: false
8
+ - name: update
9
+ description: Push local status changes to Linear (add --update flag)
10
+ required: false
11
+ ---
12
+
13
+ # TTT Sync Command
14
+
15
+ Sync issues from Linear to local `.ttt/cycle.toon` file.
16
+
17
+ ## Usage
18
+
19
+ Run the sync command based on arguments provided:
20
+
21
+ ### Default Sync (all matching issues)
22
+ ```bash
23
+ ttt sync
24
+ ```
25
+
26
+ ### Sync Specific Issue
27
+ If `issue-id` is provided:
28
+ ```bash
29
+ ttt sync {{ issue-id }}
30
+ ```
31
+
32
+ ### Push Local Changes
33
+ If `update` is "true" or "--update":
34
+ ```bash
35
+ ttt sync --update
36
+ ```
37
+
38
+ ## What This Does
39
+
40
+ 1. Fetches active cycle from Linear
41
+ 2. Downloads all issues matching configured filters (team, status, labels)
42
+ 3. Preserves local status for existing tasks
43
+ 4. Downloads Linear images to `.ttt/output/`
44
+ 5. Updates `cycle.toon` with fresh data
45
+
46
+ ## Output
47
+
48
+ After running, report:
49
+ - Number of tasks synced
50
+ - Current cycle name
51
+ - Any status updates pushed to Linear (if --update used)
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: ttt-work-on
3
+ description: Start working on a Linear task
4
+ arguments:
5
+ - name: issue-id
6
+ description: Issue ID (e.g., MP-624), 'next' for auto-select, or omit for interactive
7
+ required: false
8
+ ---
9
+
10
+ # TTT Work-On Command
11
+
12
+ Start working on a task from the current cycle.
13
+
14
+ ## Usage
15
+
16
+ ### Interactive Selection
17
+ ```bash
18
+ ttt work-on
19
+ ```
20
+
21
+ ### Specific Issue
22
+ If `issue-id` is provided (e.g., MP-624):
23
+ ```bash
24
+ ttt work-on {{ issue-id }}
25
+ ```
26
+
27
+ ### Auto-Select Highest Priority
28
+ If `issue-id` is "next":
29
+ ```bash
30
+ ttt work-on next
31
+ ```
32
+
33
+ ## What This Does
34
+
35
+ 1. Marks the task as `in-progress` locally
36
+ 2. Updates Linear status to "In Progress" (if status_source is remote)
37
+ 3. Displays full task details including:
38
+ - Title and description
39
+ - Priority and labels
40
+ - Attachments and comments
41
+ - Branch name for checkout
42
+
43
+ ## After Running
44
+
45
+ 1. Read the task description and requirements
46
+ 2. Check out the suggested branch: `git checkout -b <branch-name>`
47
+ 3. Run type-check and lint before starting: `bun type-check && bun lint`
48
+ 4. Begin implementation
package/dist/bin/cli.js CHANGED
@@ -12,6 +12,7 @@ const COMMANDS = [
12
12
  "work-on",
13
13
  "done",
14
14
  "status",
15
+ "get-issue",
15
16
  "config",
16
17
  "help",
17
18
  "version",
@@ -24,14 +25,15 @@ USAGE:
24
25
  ttt <command> [options]
25
26
 
26
27
  COMMANDS:
27
- init Initialize config files in current directory
28
- sync Sync issues from Linear to local cycle.ttt
29
- work-on Start working on a task (interactive or by ID)
30
- done Mark current task as completed
31
- status Show or modify task status
32
- config Configure settings (status mappings, filters)
33
- help Show this help message
34
- version Show version
28
+ init Initialize config files in current directory
29
+ sync Sync issues from Linear to local cycle.ttt
30
+ work-on Start working on a task (interactive or by ID)
31
+ done Mark current task as completed
32
+ status Show or modify task status
33
+ get-issue Fetch and display issue details from Linear
34
+ config Configure settings (status mappings, filters)
35
+ help Show this help message
36
+ version Show version
35
37
 
36
38
  GLOBAL OPTIONS:
37
39
  -d, --dir <path> Config directory (default: .ttt)
@@ -46,6 +48,7 @@ EXAMPLES:
46
48
  ttt work-on next # Auto-select highest priority
47
49
  ttt done # Complete current task
48
50
  ttt done -m "Fixed the bug" # With completion message
51
+ ttt get-issue MP-123 # Fetch issue details from Linear
49
52
 
50
53
  ENVIRONMENT:
51
54
  LINEAR_API_KEY Required. Your Linear API key
@@ -117,6 +120,10 @@ async function main() {
117
120
  process.argv = ["node", "status.js", ...commandArgs];
118
121
  await import(`${scriptDir}status.js`);
119
122
  break;
123
+ case "get-issue":
124
+ process.argv = ["node", "get-issue.js", ...commandArgs];
125
+ await import(`${scriptDir}get-issue.js`);
126
+ break;
120
127
  case "config":
121
128
  process.argv = ["node", "config.js", ...commandArgs];
122
129
  await import(`${scriptDir}config.js`);