planflow-plugin 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +93 -0
- package/bin/cli.js +169 -0
- package/bin/postinstall.js +87 -0
- package/commands/pfActivity/SKILL.md +725 -0
- package/commands/pfAssign/SKILL.md +623 -0
- package/commands/pfCloudLink/SKILL.md +192 -0
- package/commands/pfCloudList/SKILL.md +222 -0
- package/commands/pfCloudNew/SKILL.md +187 -0
- package/commands/pfCloudUnlink/SKILL.md +152 -0
- package/commands/pfComment/SKILL.md +227 -0
- package/commands/pfComments/SKILL.md +159 -0
- package/commands/pfConnectionStatus/SKILL.md +433 -0
- package/commands/pfDiscord/SKILL.md +740 -0
- package/commands/pfGithubBranch/SKILL.md +672 -0
- package/commands/pfGithubIssue/SKILL.md +963 -0
- package/commands/pfGithubLink/SKILL.md +859 -0
- package/commands/pfGithubPr/SKILL.md +1335 -0
- package/commands/pfGithubUnlink/SKILL.md +401 -0
- package/commands/pfLive/SKILL.md +185 -0
- package/commands/pfLogin/SKILL.md +249 -0
- package/commands/pfLogout/SKILL.md +155 -0
- package/commands/pfMyTasks/SKILL.md +198 -0
- package/commands/pfNotificationSettings/SKILL.md +619 -0
- package/commands/pfNotifications/SKILL.md +420 -0
- package/commands/pfNotificationsClear/SKILL.md +421 -0
- package/commands/pfReact/SKILL.md +232 -0
- package/commands/pfSlack/SKILL.md +659 -0
- package/commands/pfSyncPull/SKILL.md +210 -0
- package/commands/pfSyncPush/SKILL.md +299 -0
- package/commands/pfSyncStatus/SKILL.md +212 -0
- package/commands/pfTeamInvite/SKILL.md +161 -0
- package/commands/pfTeamList/SKILL.md +253 -0
- package/commands/pfTeamRemove/SKILL.md +115 -0
- package/commands/pfTeamRole/SKILL.md +160 -0
- package/commands/pfTestWebhooks/SKILL.md +722 -0
- package/commands/pfUnassign/SKILL.md +134 -0
- package/commands/pfWhoami/SKILL.md +258 -0
- package/commands/pfWorkload/SKILL.md +219 -0
- package/commands/planExportCsv/SKILL.md +106 -0
- package/commands/planExportGithub/SKILL.md +222 -0
- package/commands/planExportJson/SKILL.md +159 -0
- package/commands/planExportSummary/SKILL.md +158 -0
- package/commands/planNew/SKILL.md +641 -0
- package/commands/planNext/SKILL.md +1200 -0
- package/commands/planSettingsAutoSync/SKILL.md +199 -0
- package/commands/planSettingsLanguage/SKILL.md +201 -0
- package/commands/planSettingsReset/SKILL.md +237 -0
- package/commands/planSettingsShow/SKILL.md +482 -0
- package/commands/planSpec/SKILL.md +929 -0
- package/commands/planUpdate/SKILL.md +2518 -0
- package/commands/team/SKILL.md +740 -0
- package/locales/en.json +1499 -0
- package/locales/ka.json +1499 -0
- package/package.json +48 -0
- package/templates/PROJECT_PLAN.template.md +157 -0
- package/templates/backend-api.template.md +562 -0
- package/templates/frontend-spa.template.md +610 -0
- package/templates/fullstack.template.md +397 -0
- package/templates/ka/backend-api.template.md +562 -0
- package/templates/ka/frontend-spa.template.md +610 -0
- package/templates/ka/fullstack.template.md +397 -0
- package/templates/sections/architecture.md +21 -0
- package/templates/sections/overview.md +15 -0
- package/templates/sections/tasks.md +22 -0
- package/templates/sections/tech-stack.md +19 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pfCloudUnlink
|
|
3
|
+
description: Disconnect from current PlanFlow cloud project
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# PlanFlow Cloud Unlink
|
|
7
|
+
|
|
8
|
+
Disconnect from current PlanFlow cloud project with confirmation card.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
/pfCloudUnlink
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Step 0: Load Configuration
|
|
17
|
+
|
|
18
|
+
```javascript
|
|
19
|
+
function getConfig() {
|
|
20
|
+
const localConfigPath = "./.plan-config.json"
|
|
21
|
+
let localConfig = {}
|
|
22
|
+
if (fileExists(localConfigPath)) {
|
|
23
|
+
try { localConfig = JSON.parse(readFile(localConfigPath)) } catch {}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const globalConfigPath = expandPath("~/.config/claude/plan-plugin-config.json")
|
|
27
|
+
let globalConfig = {}
|
|
28
|
+
if (fileExists(globalConfigPath)) {
|
|
29
|
+
try { globalConfig = JSON.parse(readFile(globalConfigPath)) } catch {}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return { ...globalConfig, ...localConfig, _localConfig: localConfig, _globalConfig: globalConfig }
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const config = getConfig()
|
|
36
|
+
const language = config.language || "en"
|
|
37
|
+
const cloudConfig = config.cloud || {}
|
|
38
|
+
const isAuthenticated = !!cloudConfig.apiToken
|
|
39
|
+
const currentProjectId = cloudConfig.projectId
|
|
40
|
+
const apiUrl = cloudConfig.apiUrl || "https://api.planflow.tools"
|
|
41
|
+
|
|
42
|
+
const t = JSON.parse(readFile(`locales/${language}.json`))
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Step 1: Check if Linked
|
|
46
|
+
|
|
47
|
+
**If not linked, display info card:**
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
51
|
+
│ ℹ️ INFO │
|
|
52
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
53
|
+
│ │
|
|
54
|
+
│ {t.commands.cloud.notLinked} │
|
|
55
|
+
│ │
|
|
56
|
+
│ Not currently linked to any cloud project. │
|
|
57
|
+
│ │
|
|
58
|
+
│ 💡 {t.ui.labels.nextSteps} │
|
|
59
|
+
│ • /pfCloudLink Link to a cloud project │
|
|
60
|
+
│ • /pfCloudList View available projects │
|
|
61
|
+
│ │
|
|
62
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Step 2: Remove Link
|
|
66
|
+
|
|
67
|
+
**Remove from local config:**
|
|
68
|
+
Remove `cloud.projectId` from `.plan-config.json`
|
|
69
|
+
|
|
70
|
+
## Step 3: Show Success Card
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
74
|
+
│ ✅ SUCCESS │
|
|
75
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
76
|
+
│ │
|
|
77
|
+
│ {t.commands.cloud.unlinkSuccess} │
|
|
78
|
+
│ │
|
|
79
|
+
│ {t.commands.cloud.unlinkDetails} │
|
|
80
|
+
│ │
|
|
81
|
+
│ ── What's Changed ────────────────────────────────────────────────────── │
|
|
82
|
+
│ │
|
|
83
|
+
│ • Project unlinked from cloud │
|
|
84
|
+
│ • LOCAL PROJECT_PLAN.md is now independent │
|
|
85
|
+
│ • Cloud project data NOT deleted │
|
|
86
|
+
│ • Auto-sync disabled for this project │
|
|
87
|
+
│ │
|
|
88
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
89
|
+
│ │
|
|
90
|
+
│ 💡 {t.ui.labels.nextSteps} │
|
|
91
|
+
│ • /pfCloudLink Link to a different project │
|
|
92
|
+
│ • /pfCloudList View your cloud projects │
|
|
93
|
+
│ │
|
|
94
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
95
|
+
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Example Output (English):**
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
102
|
+
│ ✅ SUCCESS │
|
|
103
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
104
|
+
│ │
|
|
105
|
+
│ Project unlinked. │
|
|
106
|
+
│ │
|
|
107
|
+
│ Local project is no longer linked to cloud. │
|
|
108
|
+
│ │
|
|
109
|
+
│ ── What's Changed ────────────────────────────────────────────────────── │
|
|
110
|
+
│ │
|
|
111
|
+
│ • Project unlinked from cloud │
|
|
112
|
+
│ • LOCAL PROJECT_PLAN.md is now independent │
|
|
113
|
+
│ • Cloud project data NOT deleted │
|
|
114
|
+
│ • Auto-sync disabled for this project │
|
|
115
|
+
│ │
|
|
116
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
117
|
+
│ │
|
|
118
|
+
│ 💡 Next Steps: │
|
|
119
|
+
│ • /pfCloudLink Link to a different project │
|
|
120
|
+
│ • /pfCloudList View your cloud projects │
|
|
121
|
+
│ │
|
|
122
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
123
|
+
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Example Output (Georgian):**
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
130
|
+
│ ✅ წარმატება │
|
|
131
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
132
|
+
│ │
|
|
133
|
+
│ პროექტი გაითიშა. │
|
|
134
|
+
│ │
|
|
135
|
+
│ ლოკალური პროექტი აღარ არის დაკავშირებული cloud-თან. │
|
|
136
|
+
│ │
|
|
137
|
+
│ ── რა შეიცვალა ───────────────────────────────────────────────────────── │
|
|
138
|
+
│ │
|
|
139
|
+
│ • პროექტი გათიშულია cloud-დან │
|
|
140
|
+
│ • ლოკალური PROJECT_PLAN.md დამოუკიდებელია │
|
|
141
|
+
│ • Cloud პროექტის მონაცემები არ წაშლილა │
|
|
142
|
+
│ • ავტო-სინქრონიზაცია გამორთულია │
|
|
143
|
+
│ │
|
|
144
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
145
|
+
│ │
|
|
146
|
+
│ 💡 შემდეგი ნაბიჯები: │
|
|
147
|
+
│ • /pfCloudLink სხვა პროექტთან დაკავშირება │
|
|
148
|
+
│ • /pfCloudList Cloud პროექტების ნახვა │
|
|
149
|
+
│ │
|
|
150
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
151
|
+
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
152
|
+
```
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pfComment
|
|
3
|
+
description: Add a comment to a task in the current PlanFlow project
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# PlanFlow Task Comment
|
|
7
|
+
|
|
8
|
+
Add a comment to a task in the linked cloud project with comment card. Supports @mentions to notify team members.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
/pfComment <task-id> <comment> # Add comment to task
|
|
14
|
+
/pfComment T2.1 "Ready for review" # Simple comment
|
|
15
|
+
/pfComment T2.1 "@jane Please check" # Comment with @mention
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Step 0: Load Configuration
|
|
19
|
+
|
|
20
|
+
```javascript
|
|
21
|
+
// ... standard config loading ...
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Step 1: Show Usage Card (if no arguments)
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
28
|
+
│ 💬 Task Comment │
|
|
29
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
30
|
+
│ │
|
|
31
|
+
│ ── Usage ─────────────────────────────────────────────────────────────── │
|
|
32
|
+
│ │
|
|
33
|
+
│ /pfComment <task-id> <comment> Add comment to task │
|
|
34
|
+
│ │
|
|
35
|
+
│ ── Examples ──────────────────────────────────────────────────────────── │
|
|
36
|
+
│ │
|
|
37
|
+
│ /pfComment T2.1 "Ready for review" │
|
|
38
|
+
│ /pfComment T2.1 "@jane Please check the validation" │
|
|
39
|
+
│ │
|
|
40
|
+
│ 💡 Use @email to mention and notify team members │
|
|
41
|
+
│ │
|
|
42
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Step 2: Display Success Card
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
49
|
+
│ ✅ SUCCESS │
|
|
50
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
51
|
+
│ │
|
|
52
|
+
│ Comment added! │
|
|
53
|
+
│ │
|
|
54
|
+
│ ── Comment Details ──────────────────────────────────────────────────── │
|
|
55
|
+
│ │
|
|
56
|
+
│ 📋 Task: T2.1: Implement login API │
|
|
57
|
+
│ 👤 Author: John Doe │
|
|
58
|
+
│ 🕐 Time: just now │
|
|
59
|
+
│ │
|
|
60
|
+
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
|
61
|
+
│ │ │ │
|
|
62
|
+
│ │ "Ready for review **@jane@company.com**" │ │
|
|
63
|
+
│ │ │ │
|
|
64
|
+
│ └────────────────────────────────────────────────────────────────────────┘ │
|
|
65
|
+
│ │
|
|
66
|
+
│ ── Notifications Sent ───────────────────────────────────────────────── │
|
|
67
|
+
│ │
|
|
68
|
+
│ ✉️ Jane Smith (jane@company.com) │
|
|
69
|
+
│ │
|
|
70
|
+
│ They will receive an email notification. │
|
|
71
|
+
│ │
|
|
72
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
73
|
+
│ │
|
|
74
|
+
│ 💡 View all comments: │
|
|
75
|
+
│ • /pfComments T2.1 │
|
|
76
|
+
│ │
|
|
77
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
78
|
+
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Success Card (without mentions):**
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
85
|
+
│ ✅ SUCCESS │
|
|
86
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
87
|
+
│ │
|
|
88
|
+
│ Comment added! │
|
|
89
|
+
│ │
|
|
90
|
+
│ ── Comment Details ──────────────────────────────────────────────────── │
|
|
91
|
+
│ │
|
|
92
|
+
│ 📋 Task: T2.1: Implement login API │
|
|
93
|
+
│ 👤 Author: John Doe │
|
|
94
|
+
│ 🕐 Time: just now │
|
|
95
|
+
│ │
|
|
96
|
+
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
|
97
|
+
│ │ │ │
|
|
98
|
+
│ │ "Started working on this task" │ │
|
|
99
|
+
│ │ │ │
|
|
100
|
+
│ └────────────────────────────────────────────────────────────────────────┘ │
|
|
101
|
+
│ │
|
|
102
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
103
|
+
│ │
|
|
104
|
+
│ 💡 View all comments: │
|
|
105
|
+
│ • /pfComments T2.1 │
|
|
106
|
+
│ │
|
|
107
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
108
|
+
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Step 3: Success Card with Unresolved Mentions
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
115
|
+
│ ✅ SUCCESS │
|
|
116
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
117
|
+
│ │
|
|
118
|
+
│ Comment added! │
|
|
119
|
+
│ │
|
|
120
|
+
│ ── Comment Details ──────────────────────────────────────────────────── │
|
|
121
|
+
│ │
|
|
122
|
+
│ 📋 Task: T2.1: Implement login API │
|
|
123
|
+
│ 👤 Author: John Doe │
|
|
124
|
+
│ 🕐 Time: just now │
|
|
125
|
+
│ │
|
|
126
|
+
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
|
127
|
+
│ │ │ │
|
|
128
|
+
│ │ "Hey **@bob** and **@unknown@test.com**, please review" │ │
|
|
129
|
+
│ │ │ │
|
|
130
|
+
│ └────────────────────────────────────────────────────────────────────────┘ │
|
|
131
|
+
│ │
|
|
132
|
+
│ ── Notifications Sent ───────────────────────────────────────────────── │
|
|
133
|
+
│ │
|
|
134
|
+
│ ✉️ Bob Wilson (bob@company.com) │
|
|
135
|
+
│ │
|
|
136
|
+
│ ── Undelivered Mentions ─────────────────────────────────────────────── │
|
|
137
|
+
│ │
|
|
138
|
+
│ ❌ @unknown@test.com - not a team member │
|
|
139
|
+
│ │
|
|
140
|
+
│ 💡 Invite them first: /pfTeamInvite <email> │
|
|
141
|
+
│ │
|
|
142
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
143
|
+
│ │
|
|
144
|
+
│ 💡 View all comments: │
|
|
145
|
+
│ • /pfComments T2.1 │
|
|
146
|
+
│ │
|
|
147
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
148
|
+
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Error Handling
|
|
152
|
+
|
|
153
|
+
**Invalid Task ID Card:**
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
157
|
+
│ ❌ ERROR │
|
|
158
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
159
|
+
│ │
|
|
160
|
+
│ Invalid task ID format. │
|
|
161
|
+
│ │
|
|
162
|
+
│ Task ID should be like: T1.1, T2.3, T10.5 │
|
|
163
|
+
│ │
|
|
164
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**Empty Comment Card:**
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
171
|
+
│ ❌ ERROR │
|
|
172
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
173
|
+
│ │
|
|
174
|
+
│ Comment cannot be empty. │
|
|
175
|
+
│ │
|
|
176
|
+
│ Please provide a comment message. │
|
|
177
|
+
│ │
|
|
178
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Task Not Found Card (404):**
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
185
|
+
│ ❌ ERROR │
|
|
186
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
187
|
+
│ │
|
|
188
|
+
│ Task not found: T2.1 │
|
|
189
|
+
│ │
|
|
190
|
+
│ Make sure the task exists in the cloud project. │
|
|
191
|
+
│ │
|
|
192
|
+
│ 💡 Run /pfSyncPush to sync your local tasks first. │
|
|
193
|
+
│ │
|
|
194
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Permission Denied Card (403):**
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
201
|
+
│ ❌ ERROR │
|
|
202
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
203
|
+
│ │
|
|
204
|
+
│ You don't have permission to comment. │
|
|
205
|
+
│ │
|
|
206
|
+
│ Only editors and above can add comments. │
|
|
207
|
+
│ │
|
|
208
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## @Mention Support
|
|
212
|
+
|
|
213
|
+
| Input | Resolution | Notes |
|
|
214
|
+
|-------|------------|-------|
|
|
215
|
+
| @jane@company.com | jane@company.com | Direct email match |
|
|
216
|
+
| @jane | jane@company.com | Match by first name |
|
|
217
|
+
| @jane.smith | jane.smith@company.com | Match by full name |
|
|
218
|
+
| @unknown | (invalid) | Show warning, skip |
|
|
219
|
+
|
|
220
|
+
## Notes
|
|
221
|
+
|
|
222
|
+
- Comments support @mentions using email (@jane@company.com) or username (@jane)
|
|
223
|
+
- Mentioned users receive email notifications (if enabled)
|
|
224
|
+
- Task IDs are case-insensitive (t2.1 becomes T2.1)
|
|
225
|
+
- Maximum comment length is 2000 characters
|
|
226
|
+
- View comments with /pfComments <task-id>
|
|
227
|
+
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pfComments
|
|
3
|
+
description: View comments on a task in the current PlanFlow project
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# PlanFlow View Task Comments
|
|
7
|
+
|
|
8
|
+
View all comments on a task in the linked cloud project with comment thread cards.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
/pfComments <task-id> # View comments on task
|
|
14
|
+
/pfComments T2.1 # View comments on T2.1
|
|
15
|
+
/pfComments T2.1 --all # Include resolved/old comments
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Step 0: Load Configuration
|
|
19
|
+
|
|
20
|
+
```javascript
|
|
21
|
+
// ... standard config loading ...
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Step 1: Show Usage Card (if no arguments)
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
28
|
+
│ 💬 View Task Comments │
|
|
29
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
30
|
+
│ │
|
|
31
|
+
│ ── Usage ─────────────────────────────────────────────────────────────── │
|
|
32
|
+
│ │
|
|
33
|
+
│ /pfComments <task-id> View comments on task │
|
|
34
|
+
│ /pfComments <task-id> --all Include all comments │
|
|
35
|
+
│ │
|
|
36
|
+
│ ── Example ──────────────────────────────────────────────────────────── │
|
|
37
|
+
│ │
|
|
38
|
+
│ /pfComments T2.1 │
|
|
39
|
+
│ │
|
|
40
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Step 2: Display Comments Card
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
47
|
+
│ 💬 Comments - T2.1 │
|
|
48
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
49
|
+
│ │
|
|
50
|
+
│ 📋 Task: Implement login API │
|
|
51
|
+
│ 📝 3 comments │
|
|
52
|
+
│ │
|
|
53
|
+
│ ── Comment Thread ───────────────────────────────────────────────────── │
|
|
54
|
+
│ │
|
|
55
|
+
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
|
56
|
+
│ │ 👤 John Doe 2 hours ago │ │
|
|
57
|
+
│ │ │ │
|
|
58
|
+
│ │ "Started working on this task" │ │
|
|
59
|
+
│ └────────────────────────────────────────────────────────────────────────┘ │
|
|
60
|
+
│ │
|
|
61
|
+
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
|
62
|
+
│ │ 👤 John Doe 30 min ago │ │
|
|
63
|
+
│ │ │ │
|
|
64
|
+
│ │ "Ready for review **@jane@company.com**" │ │
|
|
65
|
+
│ │ 📧 → Jane Smith │ │
|
|
66
|
+
│ │ │ │
|
|
67
|
+
│ │ └── 👤 Jane Smith 15 min ago │ │
|
|
68
|
+
│ │ "Looks good! Just one small fix needed." │ │
|
|
69
|
+
│ └────────────────────────────────────────────────────────────────────────┘ │
|
|
70
|
+
│ │
|
|
71
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
72
|
+
│ │
|
|
73
|
+
│ 💡 Add a comment: │
|
|
74
|
+
│ • /pfComment T2.1 "Your message" │
|
|
75
|
+
│ • /pfComment T2.1 "@teammate Check this" │
|
|
76
|
+
│ │
|
|
77
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
78
|
+
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Step 3: No Comments Card
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
85
|
+
│ 💬 Comments - T2.1 │
|
|
86
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
87
|
+
│ │
|
|
88
|
+
│ 📋 Task: Implement login API │
|
|
89
|
+
│ │
|
|
90
|
+
│ ╭─────────────────────────────────────────────────────────────────────╮ │
|
|
91
|
+
│ │ │ │
|
|
92
|
+
│ │ 📭 No comments yet. │ │
|
|
93
|
+
│ │ │ │
|
|
94
|
+
│ ╰─────────────────────────────────────────────────────────────────────╯ │
|
|
95
|
+
│ │
|
|
96
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
97
|
+
│ │
|
|
98
|
+
│ 💡 Be the first to comment: │
|
|
99
|
+
│ • /pfComment T2.1 "Your message" │
|
|
100
|
+
│ │
|
|
101
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Error Handling
|
|
105
|
+
|
|
106
|
+
**Invalid Task ID Card:**
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
110
|
+
│ ❌ ERROR │
|
|
111
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
112
|
+
│ │
|
|
113
|
+
│ Invalid task ID format. │
|
|
114
|
+
│ │
|
|
115
|
+
│ Task ID should be like: T1.1, T2.3, T10.5 │
|
|
116
|
+
│ │
|
|
117
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Task Not Found Card (404):**
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
124
|
+
│ ❌ ERROR │
|
|
125
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
126
|
+
│ │
|
|
127
|
+
│ Task not found: T2.1 │
|
|
128
|
+
│ │
|
|
129
|
+
│ Make sure the task exists in the cloud project. │
|
|
130
|
+
│ │
|
|
131
|
+
│ 💡 Run /pfSyncPush to sync your local tasks first. │
|
|
132
|
+
│ │
|
|
133
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Permission Denied Card (403):**
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
140
|
+
│ ❌ ERROR │
|
|
141
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
142
|
+
│ │
|
|
143
|
+
│ You don't have permission to view comments. │
|
|
144
|
+
│ │
|
|
145
|
+
│ Only project members can view comments. │
|
|
146
|
+
│ │
|
|
147
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Notes
|
|
151
|
+
|
|
152
|
+
- Comments are displayed in chronological order (oldest first)
|
|
153
|
+
- Replies are indented under their parent comment
|
|
154
|
+
- Time is shown relative to now (e.g., "2 hours ago")
|
|
155
|
+
- **@mentions are highlighted** in bold in the comment text
|
|
156
|
+
- Mentioned team members are shown with 📧 indicator
|
|
157
|
+
- Use --all flag to include older/resolved comments
|
|
158
|
+
- Maximum 50 comments returned by default
|
|
159
|
+
|