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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/commands/ttt:done.md +53 -33
- package/commands/ttt:show.md +53 -89
- package/commands/ttt:status.md +48 -34
- package/commands/ttt:sync.md +42 -26
- package/commands/ttt:work-on.md +49 -71
- package/dist/scripts/lib/display.js +0 -2
- package/dist/scripts/lib/sync.js +0 -1
- package/dist/scripts/show.js +0 -4
- package/dist/scripts/sync.js +0 -2
- package/dist/scripts/work-on.js +10 -2
- package/package.json +1 -1
- package/skills/managing-linear-tasks/SKILL.md +76 -0
- package/skills/linear-task-manager/SKILL.md +0 -317
package/commands/ttt:done.md
CHANGED
|
@@ -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:
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
22
|
+
# /ttt:done — Complete a Task
|
|
16
23
|
|
|
17
|
-
##
|
|
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
|
-
###
|
|
25
|
-
|
|
30
|
+
### Common Examples
|
|
31
|
+
|
|
26
32
|
```bash
|
|
27
|
-
ttt done
|
|
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
|
-
|
|
31
|
-
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
-
##
|
|
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 |
|
|
46
|
-
|
|
47
|
-
| `simple` |
|
|
48
|
-
| `strict_review` |
|
|
49
|
-
| `upstream_strict` |
|
|
50
|
-
| `upstream_not_strict` |
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
##
|
|
75
|
+
## Error Handling
|
|
58
76
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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 |
|
package/commands/ttt:show.md
CHANGED
|
@@ -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
|
|
9
|
+
description: Filter by label
|
|
10
10
|
required: false
|
|
11
11
|
- name: status
|
|
12
|
-
description: Filter by status (
|
|
12
|
+
description: "Filter by status (e.g., 'In Progress', 'Todo')"
|
|
13
13
|
required: false
|
|
14
14
|
- name: user
|
|
15
|
-
description: Filter by assignee (
|
|
15
|
+
description: "Filter by assignee (email, 'me', or 'unassigned')"
|
|
16
16
|
required: false
|
|
17
17
|
- name: priority
|
|
18
|
-
description: Filter by priority (
|
|
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
|
|
21
|
+
description: Fetch from Linear API instead of local data
|
|
22
22
|
required: false
|
|
23
23
|
- name: export
|
|
24
|
-
description: Output as markdown format
|
|
24
|
+
description: Output as markdown format
|
|
25
25
|
required: false
|
|
26
26
|
---
|
|
27
27
|
|
|
28
|
-
|
|
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
|
-
|
|
34
|
+
# /ttt:show — Show Issues
|
|
31
35
|
|
|
32
|
-
##
|
|
36
|
+
## Execution
|
|
33
37
|
|
|
34
|
-
|
|
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
|
-
###
|
|
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
|
|
55
|
-
ttt show
|
|
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
|
-
##
|
|
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
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
|
|
115
|
-
ttt show --priority 1
|
|
80
|
+
## After Execution
|
|
116
81
|
|
|
117
|
-
|
|
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
|
-
|
|
121
|
-
ttt show MP-624 --remote
|
|
84
|
+
## Error Handling
|
|
122
85
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
ttt
|
|
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 |
|
package/commands/ttt:status.md
CHANGED
|
@@ -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
|
|
9
|
+
description: "New status: +1, -1, +2, -2, pending, in-progress, completed, blocked, todo, done"
|
|
10
10
|
required: false
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
|
|
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
|
-
|
|
19
|
+
# /ttt:status — Show or Modify Task Status
|
|
16
20
|
|
|
17
|
-
##
|
|
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
|
-
###
|
|
25
|
-
|
|
27
|
+
### Common Examples
|
|
28
|
+
|
|
26
29
|
```bash
|
|
27
|
-
ttt status
|
|
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
|
-
|
|
31
|
-
|
|
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
|
-
|
|
42
|
+
Arguments:
|
|
43
|
+
issue-id Optional. Issue ID (omit for current in-progress task)
|
|
37
44
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
##
|
|
59
|
+
## Status Flow
|
|
52
60
|
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
61
|
+
```
|
|
62
|
+
pending → in-progress → completed
|
|
63
|
+
↓
|
|
64
|
+
blocked
|
|
57
65
|
```
|
|
58
66
|
|
|
59
|
-
##
|
|
67
|
+
## After Execution
|
|
60
68
|
|
|
61
|
-
|
|
69
|
+
Report:
|
|
62
70
|
- Task ID and title
|
|
63
71
|
- Local status vs Linear status
|
|
64
72
|
- Priority and labels
|
|
65
|
-
|
|
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 |
|
package/commands/ttt:sync.md
CHANGED
|
@@ -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:
|
|
9
|
-
description:
|
|
8
|
+
- name: flags
|
|
9
|
+
description: "Additional flags: --all (all statuses), --update (push local changes)"
|
|
10
10
|
required: false
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
|
|
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
|
-
|
|
20
|
+
# /ttt:sync — Sync Issues
|
|
16
21
|
|
|
17
|
-
##
|
|
22
|
+
## Execution
|
|
18
23
|
|
|
19
|
-
|
|
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
|
-
###
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
45
|
+
Arguments:
|
|
46
|
+
issue-id Optional. Sync only this specific issue (e.g., MP-624)
|
|
39
47
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
##
|
|
53
|
+
## After Execution
|
|
47
54
|
|
|
48
|
-
|
|
55
|
+
Report to the user:
|
|
49
56
|
- Number of tasks synced
|
|
50
57
|
- Current cycle name
|
|
51
|
-
- Any
|
|
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 |
|
package/commands/ttt:work-on.md
CHANGED
|
@@ -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)
|
|
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
|
-
|
|
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
|
-
|
|
20
|
+
# /ttt:work-on — Start Working on a Task
|
|
14
21
|
|
|
15
|
-
##
|
|
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
|
-
###
|
|
23
|
-
```bash
|
|
24
|
-
ttt work-on {{ issue-id }}
|
|
25
|
-
```
|
|
28
|
+
### Argument Resolution
|
|
26
29
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
ttt work-on
|
|
30
|
-
ttt work-on next
|
|
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
|
-
|
|
38
|
+
## Full CLI Reference
|
|
34
39
|
|
|
35
|
-
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
|
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.
|
|
55
|
+
3. Check for project-specific **work-on skill** in `.claude/skills/`
|
|
50
56
|
4. Begin implementation
|
|
51
57
|
|
|
52
|
-
## CRITICAL:
|
|
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
|
-
|
|
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
|
-
|
|
63
|
+
/ttt:done -m "completion summary"
|
|
64
|
+
```
|
|
78
65
|
|
|
79
|
-
A
|
|
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
|
-
|
|
86
|
-
```
|
|
68
|
+
## Work-On Skill Integration
|
|
87
69
|
|
|
88
|
-
|
|
89
|
-
```
|
|
90
|
-
/ttt:write-work-on-skill
|
|
91
|
-
```
|
|
70
|
+
After starting a task, check for project-specific work guidelines:
|
|
92
71
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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
|
-
|
|
76
|
+
## Error Handling
|
|
100
77
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
-
|
|
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);
|
package/dist/scripts/lib/sync.js
CHANGED
|
@@ -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,
|
package/dist/scripts/show.js
CHANGED
|
@@ -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,
|
package/dist/scripts/sync.js
CHANGED
|
@@ -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,
|
package/dist/scripts/work-on.js
CHANGED
|
@@ -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) =>
|
|
39
|
-
(
|
|
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
|
@@ -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
|