team-toon-tack 3.2.7 → 3.2.9

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.5.2"
16
+ "version": "2.6.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.5.2",
4
+ "version": "2.6.0",
5
5
  "author": {
6
6
  "name": "wayne930242",
7
7
  "email": "wayne930242@gmail.com"
@@ -3,60 +3,80 @@ name: ttt:done
3
3
  description: Mark current task as completed
4
4
  arguments:
5
5
  - name: issue-id
6
- description: Optional issue ID if multiple tasks in progress
6
+ description: Issue ID if multiple tasks in progress (e.g., MP-624)
7
7
  required: false
8
8
  - name: message
9
- description: Completion message (use -m flag)
9
+ description: Completion message summarizing what was done
10
+ required: false
11
+ - name: from-remote
12
+ description: Fetch issue from Linear (bypass local data check)
10
13
  required: false
11
14
  ---
12
15
 
13
- # TTT Done Command
16
+ <law>
17
+ YOU MUST execute the `ttt done` command using the Bash tool.
18
+ DO NOT manually edit cycle.toon or Linear status by other means.
19
+ DO NOT skip this command — it updates both local and remote status, posts a completion comment, and syncs state.
20
+ </law>
14
21
 
15
- Mark the current in-progress task as completed.
22
+ # /ttt:done Complete a Task
16
23
 
17
- ## Usage
24
+ ## Execution
18
25
 
19
- ### Auto-Select (single in-progress task)
20
26
  ```bash
21
- ttt done
27
+ ttt done {{ issue-id }} {{ "-m \"" + message + "\"" if message }} {{ "--from-remote" if from-remote }}
22
28
  ```
23
29
 
24
- ### Specific Issue
25
- If `issue-id` is provided:
30
+ ### Common Examples
31
+
26
32
  ```bash
27
- ttt done {{ issue-id }}
33
+ ttt done # Complete current in-progress task
34
+ ttt done MP-624 # Complete specific task
35
+ ttt done -m "Fixed null check" # With completion message
36
+ ttt done MP-624 -m "Refactored auth" # Specific task with message
37
+ ttt done MP-624 --from-remote # Issue not in local data
28
38
  ```
29
39
 
30
- ### With Completion Message
31
- If `message` is provided:
32
- ```bash
33
- ttt done -m "{{ message }}"
40
+ ## Full CLI Reference
41
+
34
42
  ```
43
+ Usage: ttt done [issue-id] [-m message] [--from-remote]
35
44
 
36
- ### Combined
37
- ```bash
38
- ttt done {{ issue-id }} -m "{{ message }}"
45
+ Arguments:
46
+ issue-id Optional. Issue ID if multiple tasks in-progress
47
+
48
+ Options:
49
+ -m, --message Completion message describing what was done
50
+ -r, --from-remote Fetch issue from Linear (bypass local data check)
39
51
  ```
40
52
 
41
- ## What This Does
53
+ ## Before Running
54
+
55
+ Ensure:
56
+ 1. Code changes are committed (`git add && git commit`)
57
+ 2. Code quality checks passed (lint, type-check) if applicable
58
+
59
+ ## What It Does
42
60
 
43
61
  Based on configured completion mode:
44
62
 
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) |
63
+ | Mode | Task Status | Parent Status |
64
+ |------|-------------|---------------|
65
+ | `simple` | → Done | → Done |
66
+ | `strict_review` | → Testing | → QA Testing |
67
+ | `upstream_strict` | → Done | → Testing |
68
+ | `upstream_not_strict` | → Done | → Testing (no fallback) |
51
69
 
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
70
+ Additionally:
71
+ - Reads latest git commit info
72
+ - Posts completion comment to Linear with commit details
73
+ - Syncs task back from Linear to update local status
56
74
 
57
- ## Before Running
75
+ ## Error Handling
58
76
 
59
- Ensure you have:
60
- 1. Committed your changes with a meaningful message
61
- 2. Pushed to remote branch (if applicable)
62
- 3. Verified code quality (lint, type-check) if applicable
77
+ | Error | Solution |
78
+ |-------|----------|
79
+ | `No in-progress task` | Specify issue-id explicitly |
80
+ | `Multiple in-progress` | Specify issue-id to disambiguate |
81
+ | `Issue not found` | Use `--from-remote` flag |
82
+ | `No commits found` | Commit your changes first |
@@ -6,121 +6,85 @@ arguments:
6
6
  description: Issue ID to show (e.g., MP-624)
7
7
  required: false
8
8
  - name: label
9
- description: Filter by label (--label <label>)
9
+ description: Filter by label
10
10
  required: false
11
11
  - name: status
12
- description: Filter by status (--status <status>)
12
+ description: "Filter by status (e.g., 'In Progress', 'Todo')"
13
13
  required: false
14
14
  - name: user
15
- description: Filter by assignee (--user <email|me|unassigned>)
15
+ description: "Filter by assignee (email, 'me', or 'unassigned')"
16
16
  required: false
17
17
  - name: priority
18
- description: Filter by priority (--priority <0-4>)
18
+ description: "Filter by priority (0=None, 1=Urgent, 2=High, 3=Medium, 4=Low)"
19
19
  required: false
20
20
  - name: remote
21
- description: Fetch from Linear instead of local data (--remote)
21
+ description: Fetch from Linear API instead of local data
22
22
  required: false
23
23
  - name: export
24
- description: Output as markdown format (--export)
24
+ description: Output as markdown format
25
25
  required: false
26
26
  ---
27
27
 
28
- # TTT Show Command
28
+ <law>
29
+ YOU MUST execute the `ttt show` command using the Bash tool.
30
+ DO NOT read cycle.toon directly — the CLI handles formatting and filtering.
31
+ DO NOT simulate or fabricate issue data.
32
+ </law>
29
33
 
30
- Show issue details or search issues from local cycle data.
34
+ # /ttt:show Show Issues
31
35
 
32
- ## Usage
36
+ ## Execution
33
37
 
34
- ### Show All Issues
35
- ```bash
36
- ttt show
37
- ```
38
+ Build the command from arguments and run it:
38
39
 
39
- ### Show Specific Issue
40
40
  ```bash
41
- ttt show {{ issue-id }}
41
+ ttt show {{ issue-id }} \
42
+ {{ "--label " + label if label }} \
43
+ {{ "--status \"" + status + "\"" if status }} \
44
+ {{ "--user " + user if user }} \
45
+ {{ "--priority " + priority if priority }} \
46
+ {{ "--remote" if remote }} \
47
+ {{ "--export" if export }}
42
48
  ```
43
49
 
44
- ### Search by Filters
45
- ```bash
46
- ttt show --label {{ label }}
47
- ttt show --status "{{ status }}"
48
- ttt show --user {{ user }}
49
- ttt show --priority {{ priority }}
50
- ```
50
+ ### Common Examples
51
51
 
52
- ### Fetch from Linear (Remote)
53
52
  ```bash
54
- ttt show {{ issue-id }} --remote
55
- ttt show --remote --status todo
53
+ ttt show # List all local issues
54
+ ttt show MP-624 # Show specific issue
55
+ ttt show MP-624 --remote # Fetch fresh from Linear
56
+ ttt show MP-624 --export # Export as markdown
57
+ ttt show --label frontend # Filter by label
58
+ ttt show --status "In Progress" --user me # My in-progress issues
59
+ ttt show --priority 1 # All urgent issues
60
+ ttt show --export # Export all as markdown
56
61
  ```
57
62
 
58
- ## What This Does
59
-
60
- 1. By default, reads from local cycle.toon data (no API calls)
61
- 2. Supports filtering by label, status, user, priority
62
- 3. Use --remote to fetch fresh data from Linear API
63
- 4. Displays comprehensive information:
64
- - Title and description
65
- - Status (both Linear and local)
66
- - Priority level
67
- - Labels
68
- - Assignee
69
- - Branch name
70
- - Parent issue (if subtask)
71
- - Attachments with local paths
72
- - Comments with timestamps
73
-
74
- ## Filter Options
75
-
76
- | Option | Description | Example |
77
- |--------|-------------|---------|
78
- | `--label` | Filter by label name | `--label frontend` |
79
- | `--status` | Filter by Linear status | `--status "In Progress"` |
80
- | `--user` | Filter by assignee | `--user me`, `--user unassigned` |
81
- | `--priority` | Filter by priority (0-4) | `--priority 1` (Urgent) |
82
- | `--remote` | Fetch from Linear API | `--remote` |
83
- | `--export` | Output as markdown | `--export` |
84
-
85
- ## Priority Values
86
-
87
- - 0: None
88
- - 1: Urgent
89
- - 2: High
90
- - 3: Medium
91
- - 4: Low
63
+ ## Full CLI Reference
92
64
 
93
- ## Use Cases
94
-
95
- - List all issues in current cycle
96
- - Search issues by label or status
97
- - Review issue details before starting work
98
- - Check requirements and acceptance criteria
99
- - View attachments and mockups
100
- - Read comment history and discussions
101
-
102
- ## Examples
103
-
104
- ```bash
105
- # Show all local issues
106
- ttt show
107
-
108
- # Show specific issue
109
- ttt show MP-624
110
-
111
- # My in-progress issues
112
- ttt show --status "In Progress" --user me
65
+ ```
66
+ Usage: ttt show [issue-id] [options]
67
+
68
+ Arguments:
69
+ issue-id Optional. Show specific issue (e.g., MP-624)
70
+
71
+ Options:
72
+ --remote Fetch from Linear instead of local data
73
+ --export Output as markdown format
74
+ --label <label> Filter by label
75
+ --status <status> Filter by status
76
+ --user <email> Filter by assignee ("me", "unassigned", or email)
77
+ --priority <n> Filter by priority (0=None, 1=Urgent, 2=High, 3=Medium, 4=Low)
78
+ ```
113
79
 
114
- # All urgent issues
115
- ttt show --priority 1
80
+ ## After Execution
116
81
 
117
- # Frontend issues
118
- ttt show --label frontend
82
+ Present the output to the user. If `--export` was used, the output is markdown-formatted and can be used as context.
119
83
 
120
- # Fetch fresh data from Linear
121
- ttt show MP-624 --remote
84
+ ## Error Handling
122
85
 
123
- # Export as markdown
124
- ttt show --export
125
- ttt show MP-624 --export
126
- ```
86
+ | Error | Solution |
87
+ |-------|----------|
88
+ | `No cycle data found` | Run `ttt sync` first |
89
+ | `Issue not found` | Try `ttt show <id> --remote` or `ttt sync <id>` |
90
+ | `LINEAR_API_KEY not set` | Required for `--remote`; ask user to set it |
@@ -6,60 +6,74 @@ arguments:
6
6
  description: Issue ID to check/modify (omit for current in-progress task)
7
7
  required: false
8
8
  - name: set
9
- description: New status to set (+1, -1, pending, in-progress, completed, blocked, done)
9
+ description: "New status: +1, -1, +2, -2, pending, in-progress, completed, blocked, todo, done"
10
10
  required: false
11
11
  ---
12
12
 
13
- # TTT Status Command
13
+ <law>
14
+ YOU MUST execute the `ttt status` command using the Bash tool.
15
+ DO NOT manually edit cycle.toon or manipulate status by other means.
16
+ The CLI handles both local and remote status synchronization.
17
+ </law>
14
18
 
15
- Show or modify the status of a task.
19
+ # /ttt:status Show or Modify Task Status
16
20
 
17
- ## Usage
21
+ ## Execution
18
22
 
19
- ### Show Current In-Progress Task
20
23
  ```bash
21
- ttt status
24
+ ttt status {{ issue-id }} {{ "--set " + set if set }}
22
25
  ```
23
26
 
24
- ### Show Specific Issue
25
- If `issue-id` is provided:
27
+ ### Common Examples
28
+
26
29
  ```bash
27
- ttt status {{ issue-id }}
30
+ ttt status # Show current in-progress task
31
+ ttt status MP-624 # Show specific issue status
32
+ ttt status MP-624 --set +1 # Move to next status
33
+ ttt status MP-624 --set blocked # Mark as blocked
34
+ ttt status --set pending # Reset current task
28
35
  ```
29
36
 
30
- ### Set Status
31
- If `set` is provided:
32
- ```bash
33
- ttt status {{ issue-id }} --set {{ set }}
37
+ ## Full CLI Reference
38
+
34
39
  ```
40
+ Usage: ttt status [issue-id] [--set <status>]
35
41
 
36
- ## Status Values
42
+ Arguments:
43
+ issue-id Optional. Issue ID (omit for current in-progress task)
37
44
 
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 |
45
+ Options:
46
+ -s, --set <status> Set status. Values:
47
+ +1 Next status (pending → in-progress → completed)
48
+ -1 Previous status
49
+ +2 Skip two forward
50
+ -2 Skip two backward
51
+ pending Set to pending
52
+ in-progress Set to in-progress
53
+ completed Set to completed
54
+ blocked Set to blocked
55
+ todo Set Linear to Todo
56
+ done Set Linear to Done
57
+ ```
50
58
 
51
- ## Examples
59
+ ## Status Flow
52
60
 
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
61
+ ```
62
+ pending in-progress completed
63
+
64
+ blocked
57
65
  ```
58
66
 
59
- ## Output
67
+ ## After Execution
60
68
 
61
- Displays:
69
+ Report:
62
70
  - Task ID and title
63
71
  - Local status vs Linear status
64
72
  - Priority and labels
65
- - Assignee information
73
+
74
+ ## Error Handling
75
+
76
+ | Error | Solution |
77
+ |-------|----------|
78
+ | `No in-progress task` | Specify issue-id or run `ttt work-on` first |
79
+ | `Issue not found` | Run `ttt sync` to refresh local data |
@@ -5,47 +5,63 @@ arguments:
5
5
  - name: issue-id
6
6
  description: Optional specific issue ID to sync (e.g., MP-624)
7
7
  required: false
8
- - name: update
9
- description: Push local status changes to Linear (add --update flag)
8
+ - name: flags
9
+ description: "Additional flags: --all (all statuses), --update (push local changes)"
10
10
  required: false
11
11
  ---
12
12
 
13
- # TTT Sync Command
13
+ <law>
14
+ YOU MUST execute the `ttt sync` command using the Bash tool.
15
+ DO NOT simulate, summarize, or skip the command.
16
+ DO NOT manually edit cycle.toon or any .ttt/ files.
17
+ The CLI handles all syncing logic — your job is to run it and report the output.
18
+ </law>
14
19
 
15
- Sync issues from Linear to local `.ttt/cycle.toon` file.
20
+ # /ttt:sync Sync Issues
16
21
 
17
- ## Usage
22
+ ## Execution
18
23
 
19
- Run the sync command based on arguments provided:
24
+ Build the command from arguments and run it:
20
25
 
21
- ### Default Sync (all matching issues)
22
26
  ```bash
23
- ttt sync
27
+ ttt sync {{ issue-id }} {{ flags }}
24
28
  ```
25
29
 
26
- ### Sync Specific Issue
27
- If `issue-id` is provided:
28
- ```bash
29
- ttt sync {{ issue-id }}
30
- ```
30
+ ### Argument Resolution
31
+
32
+ | Input | Command |
33
+ |-------|---------|
34
+ | (none) | `ttt sync` |
35
+ | `MP-624` | `ttt sync MP-624` |
36
+ | `--all` | `ttt sync --all` |
37
+ | `--update` | `ttt sync --update` |
38
+ | `MP-624 --all` | `ttt sync MP-624 --all` |
39
+
40
+ ## Full CLI Reference
31
41
 
32
- ### Push Local Changes
33
- If `update` is "true" or "--update":
34
- ```bash
35
- ttt sync --update
36
42
  ```
43
+ Usage: ttt sync [issue-id] [--all] [--update]
37
44
 
38
- ## What This Does
45
+ Arguments:
46
+ issue-id Optional. Sync only this specific issue (e.g., MP-624)
39
47
 
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
48
+ Options:
49
+ --all Sync all issues regardless of status (default: only Todo/In Progress)
50
+ --update Push local status changes to Linear (for local mode users)
51
+ ```
45
52
 
46
- ## Output
53
+ ## After Execution
47
54
 
48
- After running, report:
55
+ Report to the user:
49
56
  - Number of tasks synced
50
57
  - Current cycle name
51
- - Any status updates pushed to Linear (if --update used)
58
+ - Any errors encountered
59
+
60
+ ## Error Handling
61
+
62
+ | Error | Solution |
63
+ |-------|----------|
64
+ | `LINEAR_API_KEY not set` | Ask user to set `LINEAR_API_KEY` environment variable |
65
+ | `No cycle data found` | Cycle may not exist in Linear; ask user to verify |
66
+ | `No config found` | Run `ttt init` first |
67
+ | Network error | Retry once, then report to user |
@@ -3,102 +3,80 @@ name: ttt:work-on
3
3
  description: Start working on a Linear task
4
4
  arguments:
5
5
  - name: issue-id
6
- description: Issue ID (e.g., MP-624). Defaults to 'next' (auto-select highest priority)
6
+ description: "Issue ID (e.g., MP-624) or 'next' for auto-select. Defaults to 'next'."
7
7
  required: false
8
8
  default: next
9
+ - name: dry-run
10
+ description: Preview selection without changing status
11
+ required: false
9
12
  ---
10
13
 
11
- # TTT Work-On Command
14
+ <law>
15
+ YOU MUST execute the `ttt work-on` command using the Bash tool.
16
+ 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.
18
+ </law>
12
19
 
13
- Start working on a task from the current cycle.
20
+ # /ttt:work-on Start Working on a Task
14
21
 
15
- ## Usage
22
+ ## Execution
16
23
 
17
- ### Auto-Select Highest Priority (Default)
18
24
  ```bash
19
- ttt work-on next
25
+ ttt work-on {{ issue-id | default: "next" }} {{ "--dry-run" if dry-run }}
20
26
  ```
21
27
 
22
- ### Specific Issue
23
- ```bash
24
- ttt work-on {{ issue-id }}
25
- ```
28
+ ### Argument Resolution
26
29
 
27
- ### Preview Mode (Dry Run)
28
- ```bash
29
- ttt work-on --dry-run # Interactive selection, preview only
30
- ttt work-on next --dry-run # Auto-select, preview only
31
- ```
30
+ | Input | Command |
31
+ |-------|---------|
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` |
32
37
 
33
- Use `--dry-run` to preview task selection without changing any status.
38
+ ## Full CLI Reference
34
39
 
35
- ## What This Does
40
+ ```
41
+ Usage: ttt work-on [issue-id] [options]
42
+
43
+ Arguments:
44
+ issue-id Issue ID (e.g., MP-624) or 'next' for auto-select
45
+ If omitted, shows interactive selection
36
46
 
37
- 1. Marks the task as `in-progress` locally
38
- 2. Updates Linear status to "In Progress" (if status_source is remote)
39
- 3. Displays full task details including:
40
- - Title and description
41
- - Priority and labels
42
- - Attachments and comments
43
- - Branch name for checkout
47
+ Options:
48
+ --dry-run Pick task without changing status (preview only)
49
+ ```
44
50
 
45
- ## After Running
51
+ ## After Execution
46
52
 
47
- 1. Read the task description and requirements
53
+ 1. Read the task description and requirements from the output
48
54
  2. Check out the suggested branch: `git checkout -b <branch-name>`
49
- 3. **Check for work-on skill** (see below)
55
+ 3. Check for project-specific **work-on skill** in `.claude/skills/`
50
56
  4. Begin implementation
51
57
 
52
- ## CRITICAL: After Task Completion
53
-
54
- **MUST execute `/ttt:done` when the task is completed.**
55
-
56
- This is MANDATORY. After finishing implementation:
58
+ ## CRITICAL: Task Completion Contract
57
59
 
58
- 1. Commit changes: `git add . && git commit -m "..."`
59
- 2. **Execute `/ttt:done -m "completion summary"`**
60
+ When the task is completed, you MUST execute:
60
61
 
61
- Do NOT skip this step. The task is not complete until `/ttt:done` is executed.
62
-
63
- ## Work-On Skill
64
-
65
- Check for project-specific work guidelines:
66
-
67
- ### 1. Check for Existing Work-On Skill
68
-
69
- Look for:
70
- - **Skills**: `work-on`, `start-work`, `begin-task` in `.claude/skills/`
71
- - **Alternative**: Check for `validate`, `check` skills that define project guidelines
72
-
73
- ### 2. If No Work-On Skill Found
74
-
75
- Suggest user create one:
76
62
  ```
77
- No work-on skill found for this project.
63
+ /ttt:done -m "completion summary"
64
+ ```
78
65
 
79
- A work-on skill defines best practices for starting tasks:
80
- - Code style and conventions
81
- - Pre-work validation checks
82
- - Branch naming conventions
83
- - Required setup steps
66
+ A task is NOT complete until `/ttt:done` is executed. Do NOT skip this step.
84
67
 
85
- Would you like to create one? (y/n)
86
- ```
68
+ ## Work-On Skill Integration
87
69
 
88
- If yes, run:
89
- ```
90
- /ttt:write-work-on-skill
91
- ```
70
+ After starting a task, check for project-specific work guidelines:
92
71
 
93
- The work-on skill should include:
94
- - **Validation**: lint, type-check, test commands
95
- - **Code style**: formatting, naming conventions
96
- - **Workflow**: branch naming, commit message format
97
- - **Setup**: required dependencies, environment checks
72
+ 1. Look for `work-on` or `start-work` skills in `.claude/skills/`
73
+ 2. If found, follow those guidelines
74
+ 3. If not found, suggest creating one with `/ttt:write-work-on-skill`
98
75
 
99
- ### 3. Use Work-On Skill
76
+ ## Error Handling
100
77
 
101
- Once available:
102
- - Follow the guidelines defined in the skill
103
- - Run any validation checks specified
104
- - Ensure code style compliance
78
+ | Error | Solution |
79
+ |-------|----------|
80
+ | `No cycle data found` | Run `ttt sync` first |
81
+ | `No eligible tasks` | All tasks assigned or in-review; run `ttt sync` to refresh |
82
+ | `Issue not found` | Run `ttt sync <id>` to fetch it |
@@ -30,7 +30,6 @@ export function displayTaskInfo(task) {
30
30
  console.log(`Labels: ${task.labels.join(", ")}`);
31
31
  if (task.assignee)
32
32
  console.log(`Assignee: ${task.assignee}`);
33
- console.log(`Branch: ${task.branch || "N/A"}`);
34
33
  if (task.url)
35
34
  console.log(`URL: ${task.url}`);
36
35
  }
@@ -94,7 +93,6 @@ export function displayTaskWithStatus(task) {
94
93
  console.log(` Priority: ${PRIORITY_LABELS[task.priority] || "None"}`);
95
94
  console.log(` Labels: ${task.labels.join(", ")}`);
96
95
  console.log(` Assignee: ${task.assignee || "Unassigned"}`);
97
- console.log(` Branch: ${task.branch || "N/A"}`);
98
96
  if (task.url)
99
97
  console.log(` URL: ${task.url}`);
100
98
  displayTaskDescription(task);
@@ -49,7 +49,6 @@ export async function fetchIssueDetail(issueId, options = {}) {
49
49
  assignee: assigneeEmail,
50
50
  priority: issue.priority,
51
51
  labels: labelNames,
52
- branch: issue.branchName,
53
52
  description: issue.description ?? undefined,
54
53
  parentIssueId: parent ? parent.identifier : undefined,
55
54
  url: issue.url,
@@ -10,8 +10,6 @@ function taskToMarkdown(task) {
10
10
  lines.push(`- **Priority**: ${priority}`);
11
11
  lines.push(`- **Labels**: ${task.labels.length > 0 ? task.labels.join(", ") : "-"}`);
12
12
  lines.push(`- **Assignee**: ${task.assignee || "Unassigned"}`);
13
- if (task.branch)
14
- lines.push(`- **Branch**: \`${task.branch}\``);
15
13
  if (task.url)
16
14
  lines.push(`- **URL**: ${task.url}`);
17
15
  if (task.parentIssueId)
@@ -106,7 +104,6 @@ async function fetchIssueFromRemote(issueId) {
106
104
  assignee: issue.assigneeEmail,
107
105
  priority: issue.priority,
108
106
  labels: issue.labels,
109
- branch: issue.branchName,
110
107
  description: issue.description,
111
108
  parentIssueId: issue.parentIssueId,
112
109
  url: issue.url,
@@ -178,7 +175,6 @@ async function searchIssuesFromRemote(filters) {
178
175
  assignee: issue.assigneeEmail,
179
176
  priority: issue.priority,
180
177
  labels: issue.labels,
181
- branch: issue.branchName,
182
178
  description: issue.description,
183
179
  parentIssueId: issue.parentIssueId,
184
180
  url: issue.url,
@@ -336,7 +336,6 @@ Examples:
336
336
  assignee: assigneeEmail,
337
337
  priority: issue.priority,
338
338
  labels: labelNames,
339
- branch: issue.branchName,
340
339
  description: issue.description ?? undefined,
341
340
  parentIssueId: parent ? parent.identifier : undefined,
342
341
  url: issue.url,
@@ -535,7 +534,6 @@ async function syncTrello(config, localConfig, options) {
535
534
  assignee: issue.assigneeEmail,
536
535
  priority: issue.priority,
537
536
  labels: issue.labels,
538
- branch: issue.branchName,
539
537
  description: issue.description,
540
538
  parentIssueId: issue.parentIssueId,
541
539
  url: issue.url,
@@ -34,9 +34,17 @@ Examples:
34
34
  const localConfig = await loadLocalConfig();
35
35
  // Get current user email for filtering
36
36
  const currentUserEmail = config.users[localConfig.current_user]?.email;
37
+ const normalizedCurrentUserEmail = currentUserEmail?.toLowerCase();
37
38
  const pendingTasks = data.tasks
38
- .filter((t) => t.localStatus === "pending" &&
39
- (!currentUserEmail || t.assignee === currentUserEmail))
39
+ .filter((t) => {
40
+ if (t.localStatus !== "pending")
41
+ return false;
42
+ if (!normalizedCurrentUserEmail)
43
+ return true;
44
+ if (!t.assignee)
45
+ return true; // Include unassigned tasks
46
+ return t.assignee.toLowerCase() === normalizedCurrentUserEmail;
47
+ })
40
48
  .sort((a, b) => {
41
49
  const pa = getPrioritySortIndex(a.priority, config.priority_order);
42
50
  const pb = getPrioritySortIndex(b.priority, config.priority_order);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "team-toon-tack",
3
- "version": "3.2.7",
3
+ "version": "3.2.9",
4
4
  "description": "Linear & Trello task sync & management CLI with TOON format",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: managing-linear-tasks
3
+ description: Use when the user mentions Linear or Trello issues, references issue IDs like MP-123, or asks to sync, show, start, complete, or check status of tasks.
4
+ ---
5
+
6
+ <law>
7
+ ALL task operations MUST go through the `ttt` CLI via Bash tool.
8
+ NEVER manually edit `.ttt/` files (cycle.toon, config.toon, local.toon).
9
+ NEVER fabricate issue data — always run the CLI to get real data.
10
+ After completing any task, MUST execute `/ttt:done -m "summary"`.
11
+ </law>
12
+
13
+ # Task Manager (Linear/Trello)
14
+
15
+ Manage developer task workflows using the `ttt` CLI.
16
+
17
+ ## Command Router
18
+
19
+ Match user intent to the correct `/ttt:*` command:
20
+
21
+ | User Intent | Command | Example |
22
+ |-------------|---------|---------|
23
+ | Sync/fetch issues | `/ttt:sync` | "sync my issues", "pull from Linear" |
24
+ | Show/search issues | `/ttt:show` | "show MP-624", "list my tasks", "what issues do I have" |
25
+ | Start working on a task | `/ttt:work-on` | "work on next", "start MP-624" |
26
+ | Check/change status | `/ttt:status` | "what's my current task", "set MP-624 to blocked" |
27
+ | Complete a task | `/ttt:done` | "done", "mark complete", "finish task" |
28
+
29
+ **When a matching intent is detected, invoke the corresponding `/ttt:*` slash command.**
30
+
31
+ ## Quick Reference
32
+
33
+ ```bash
34
+ ttt sync # Sync Todo/In Progress issues
35
+ ttt sync --all # Sync all statuses
36
+ ttt sync MP-624 # Sync specific issue
37
+ ttt show # List all local issues
38
+ ttt show MP-624 # Show issue details
39
+ ttt show --user me # My issues
40
+ ttt work-on next # Auto-select highest priority
41
+ ttt work-on MP-624 # Start specific task
42
+ ttt status # Current in-progress task
43
+ ttt status MP-624 --set +1 # Advance status
44
+ ttt done -m "summary" # Complete with message
45
+ ```
46
+
47
+ ## Prerequisites
48
+
49
+ - **Linear**: `LINEAR_API_KEY` env var set
50
+ - **Trello**: `TRELLO_API_KEY` + `TRELLO_TOKEN` env vars set
51
+ - `.ttt/` directory initialized (`ttt init`)
52
+
53
+ ## Standard Workflow
54
+
55
+ ```
56
+ ttt sync → ttt work-on next → [implement] → git commit → ttt done -m "..."
57
+ ```
58
+
59
+ ## File Structure
60
+
61
+ ```
62
+ .ttt/
63
+ ├── config.toon # Team configuration
64
+ ├── local.toon # Personal settings
65
+ ├── cycle.toon # Current cycle tasks (auto-generated)
66
+ └── output/ # Downloaded attachments
67
+ ```
68
+
69
+ ## Troubleshooting
70
+
71
+ | Problem | Solution |
72
+ |---------|----------|
73
+ | No cycle data | `ttt sync` |
74
+ | Issue not found locally | `ttt show <id> --remote` or `ttt sync <id>` |
75
+ | API key not set | Set `LINEAR_API_KEY` or `TRELLO_API_KEY` + `TRELLO_TOKEN` |
76
+ | Stale data | `ttt sync` to refresh |
@@ -1,317 +0,0 @@
1
- ---
2
- name: linear-task-manager
3
- description: Task management expert using ttt CLI. Manages task workflow, syncs issues, tracks status. Supports Linear and Trello. Use when working with issues/cards, starting tasks, completing work, or checking task status.
4
- ---
5
-
6
- # Task Manager (Linear/Trello)
7
-
8
- You are a task management expert using the team-toon-tack (ttt) CLI tool.
9
-
10
- ## Your Role
11
-
12
- Help developers efficiently manage their task workflow:
13
- - Sync issues/cards from Linear or Trello to local cache
14
- - Start working on tasks
15
- - Track and update task status
16
- - Complete tasks with proper documentation
17
- - Fetch issue details on demand
18
-
19
- ## Prerequisites
20
-
21
- Ensure the project has:
22
- 1. Environment variables set:
23
- - **Linear**: `LINEAR_API_KEY`
24
- - **Trello**: `TRELLO_API_KEY` and `TRELLO_TOKEN`
25
- 2. `.ttt/` directory initialized (run `ttt init` if not)
26
- 3. `ttt` CLI installed (`npm install -g team-toon-tack`)
27
-
28
- ## Command Reference
29
-
30
- ### `ttt sync`
31
-
32
- Sync issues from Linear/Trello to local cycle.toon file.
33
-
34
- ```bash
35
- ttt sync # Sync Todo/In Progress issues only (fast, recommended)
36
- ttt sync --all # Sync ALL issues regardless of status (slower)
37
- ttt sync MP-624 # Sync specific issue only
38
- ttt sync --update # Push local status changes to remote first, then sync
39
- ```
40
-
41
- **Default behavior**: Only syncs issues with Todo or In Progress status for faster performance. Use `--all` when you need completed/testing issues.
42
-
43
- ### `ttt show`
44
-
45
- Show issue details or search issues from local cycle data.
46
-
47
- ```bash
48
- ttt show # List all issues in local data
49
- ttt show MP-624 # Show specific issue details
50
- ttt show MP-624 --remote # Fetch fresh data from remote API
51
- ttt show --export # Export all issues as markdown
52
- ttt show MP-624 --export # Export single issue as markdown
53
- ```
54
-
55
- **Filter options**:
56
- ```bash
57
- ttt show --label frontend # Filter by label
58
- ttt show --status "In Progress" # Filter by status
59
- ttt show --user me # Filter by current user (from config)
60
- ttt show --user unassigned # Show unassigned issues
61
- ttt show --priority 1 # Filter by priority (1=Urgent, 2=High, 3=Medium, 4=Low)
62
- ```
63
-
64
- **Combine filters**:
65
- ```bash
66
- ttt show --status "In Progress" --user me # My in-progress issues
67
- ttt show --label frontend --priority 1 # Urgent frontend issues
68
- ```
69
-
70
- ### `ttt work-on`
71
-
72
- Start working on a task.
73
-
74
- ```bash
75
- ttt work-on # Interactive selection from available tasks
76
- ttt work-on next # Auto-select highest priority unassigned task
77
- ttt work-on MP-624 # Start working on specific issue
78
- ```
79
-
80
- ### `ttt done`
81
-
82
- Mark task as completed.
83
-
84
- ```bash
85
- ttt done # Complete current in-progress task (if only one)
86
- ttt done MP-624 # Complete specific issue
87
- ttt done -m "message" # Complete with a completion message
88
- ttt done MP-624 --from-remote # Fetch from remote (bypasses local data check)
89
- ```
90
-
91
- Use `--from-remote` (or `-r`) when the issue exists in remote but not in local sync data.
92
-
93
- ### `ttt status`
94
-
95
- Show or modify task status.
96
-
97
- ```bash
98
- ttt status # Show current in-progress task
99
- ttt status MP-624 # Show specific issue status
100
- ttt status MP-624 --set +1 # Move to next status
101
- ttt status MP-624 --set done # Mark as done
102
- ttt status MP-624 --set blocked # Set as blocked
103
- ```
104
-
105
- ## Core Workflows
106
-
107
- ### 1. Starting a Work Session
108
-
109
- ```bash
110
- # Sync latest issues from remote (Todo/In Progress only)
111
- ttt sync
112
-
113
- # Pick a task to work on (interactive or auto-select)
114
- ttt work-on next
115
- # or
116
- ttt work-on MP-624
117
- ```
118
-
119
- ### 2. During Development
120
-
121
- ```bash
122
- # Check current task status
123
- ttt status
124
-
125
- # Show issue details from local data
126
- ttt show MP-624
127
-
128
- # Search issues by filters
129
- ttt show --status "In Progress" --user me
130
-
131
- # Export issues as markdown (useful for context)
132
- ttt show --export
133
-
134
- # Mark task as blocked if waiting on dependency
135
- ttt status MP-624 --set blocked
136
- ```
137
-
138
- ### 3. Completing Work
139
-
140
- ```bash
141
- # Ensure code is committed first
142
- git add . && git commit -m "feat: implement feature"
143
-
144
- # Mark task as done with message
145
- ttt done -m "Implemented feature with full test coverage"
146
- ```
147
-
148
- ### 4. Syncing Changes
149
-
150
- ```bash
151
- # Pull latest from remote (fast - only Todo/In Progress)
152
- ttt sync
153
-
154
- # Pull ALL issues including completed ones
155
- ttt sync --all
156
-
157
- # Push local status changes to remote (if using local mode)
158
- ttt sync --update
159
- ```
160
-
161
- ## Status Flow
162
-
163
- ```
164
- pending → in-progress → completed
165
-
166
- blocked
167
- ```
168
-
169
- ### Local Status vs Remote Status
170
-
171
- | Local Status | Linear Status | Trello List |
172
- |--------------|---------------|-------------|
173
- | pending | Todo | Todo |
174
- | in-progress | In Progress | In Progress |
175
- | completed | Done / Testing | Done |
176
- | blocked | (configurable) | (configurable) |
177
-
178
- ## Completion Modes (Linear only)
179
-
180
- The `ttt done` command behaves differently based on configured mode:
181
-
182
- | Mode | Task Action | Parent Action |
183
- |------|-------------|---------------|
184
- | `simple` | → Done | → Done |
185
- | `strict_review` | → Testing | → QA Testing |
186
- | `upstream_strict` | → Done | → Testing |
187
- | `upstream_not_strict` | → Done | → Testing (no fallback) |
188
-
189
- > **Note**: Trello always uses simple completion mode as it doesn't support parent issues.
190
-
191
- ## File Structure
192
-
193
- ```
194
- .ttt/
195
- ├── config.toon # Team configuration (users, teams, status mappings)
196
- ├── local.toon # Personal settings (current_user, team, filters)
197
- ├── cycle.toon # Current cycle tasks (auto-generated by sync)
198
- └── output/ # Downloaded attachments and images
199
- ```
200
-
201
- ## Source-Specific Notes
202
-
203
- ### Linear
204
- - Supports cycles (sprints)
205
- - Supports parent issues and completion modes
206
- - Uses workflow states for status
207
-
208
- ### Trello
209
- - Uses boards instead of teams
210
- - Uses lists for status
211
- - No cycle or parent issue support
212
- - Always uses simple completion mode
213
-
214
- ## Work-On Skill
215
-
216
- Before starting tasks, check for project-specific work guidelines:
217
-
218
- 1. **Check for work-on skill**: Look for `work-on`, `start-work` skills in `.claude/skills/`
219
- 2. **Check package.json/Makefile**: Look for `lint`, `type-check`, `test` scripts
220
-
221
- If no work-on skill exists, suggest running `/ttt:write-work-on-skill` to create project-specific best practices (includes validation, code style, workflow conventions).
222
-
223
- ## CRITICAL: Task Completion
224
-
225
- **MUST execute `/ttt:done` when any task is completed.**
226
-
227
- This is MANDATORY - never skip this step:
228
-
229
- ```bash
230
- # After committing changes
231
- /ttt:done -m "completion summary"
232
- ```
233
-
234
- A task is NOT complete until `/ttt:done` is executed.
235
-
236
- ## Best Practices
237
-
238
- ### DO
239
- - Always `ttt sync` before starting work
240
- - **Check for work-on skill** before starting tasks
241
- - Use `ttt work-on next` for auto-prioritization
242
- - **MUST execute `/ttt:done -m "..."` after completing any task**
243
- - Include meaningful messages with `ttt done -m "..."`
244
- - Check `ttt status` to verify state before commits
245
- - Use `ttt show --export` to get issue context as markdown
246
-
247
- ### DON'T
248
- - Don't manually edit `cycle.toon` - use CLI commands
249
- - Don't skip sync - local data may be stale
250
- - Don't forget to commit before `ttt done`
251
- - **Don't forget to execute `/ttt:done` after task completion**
252
- - Don't mark tasks done without verification
253
- - Don't use `--all` on sync unless you need completed issues
254
-
255
- ## Troubleshooting
256
-
257
- ### "No cycle data found"
258
- Run `ttt sync` to fetch issues from remote.
259
-
260
- ### "Issue not found in local data"
261
- The issue may not be synced. Try:
262
- - Use `ttt done MP-624 --from-remote` to complete directly from remote
263
- - Run `ttt sync MP-624` to sync the specific issue
264
- - Run `ttt sync --all` to fetch all issues including completed
265
- - Use `ttt show MP-624 --remote` to fetch directly from remote
266
- - Check if issue is in active cycle (Linear) or board (Trello)
267
-
268
- ### "LINEAR_API_KEY not set" / "TRELLO credentials not set"
269
- ```bash
270
- # For Linear
271
- export LINEAR_API_KEY="lin_api_xxxxx"
272
-
273
- # For Trello
274
- export TRELLO_API_KEY="your-api-key"
275
- export TRELLO_TOKEN="your-token"
276
- ```
277
-
278
- ## Examples
279
-
280
- ### Example: Start Daily Work
281
- ```bash
282
- ttt sync # Get latest Todo/In Progress issues
283
- ttt work-on next # Auto-select highest priority
284
- # Read task details displayed
285
- git checkout -b feature/mp-624-new-feature
286
- # Start coding...
287
- ```
288
-
289
- ### Example: Complete and Move On
290
- ```bash
291
- git add . && git commit -m "feat: add new feature"
292
- ttt done -m "Added feature with tests"
293
- ttt work-on next # Move to next task
294
- ```
295
-
296
- ### Example: Check Specific Issue
297
- ```bash
298
- ttt show MP-624 # Show from local data
299
- ttt show MP-624 --remote # Fetch from remote
300
- ttt show MP-624 --export # Export as markdown
301
- ```
302
-
303
- ### Example: Find My Tasks
304
- ```bash
305
- ttt show --user me # All my issues
306
- ttt show --user me --status "In Progress" # My in-progress issues
307
- ttt show --user me --export # Export my issues as markdown
308
- ```
309
-
310
- ## Important Rules
311
-
312
- - Verify API credentials are set before operations
313
- - Run `ttt sync` at the start of each work session
314
- - Commit code before running `ttt done`
315
- - Use `ttt show` (default) to read from local data; use `--remote` only when needed
316
- - Use `ttt sync` (default) for fast sync; use `--all` only when needed
317
- - Check `.ttt/output/` for downloaded attachments and images