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,249 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pfLogin
|
|
3
|
+
description: PlanFlow Login
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# PlanFlow Login
|
|
7
|
+
|
|
8
|
+
Authenticate with PlanFlow project management service with login card UI and spinner.
|
|
9
|
+
|
|
10
|
+
**IMPORTANT:** This is ONLY for PlanFlow (planflow.tools) - NOT for Claude or Claude Code authentication.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
/pfLogin # Interactive - prompts for token
|
|
16
|
+
/pfLogin pf_abc123... # Direct token input
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Step 0: Load Configuration
|
|
20
|
+
|
|
21
|
+
```javascript
|
|
22
|
+
function getConfig() {
|
|
23
|
+
const localConfigPath = "./.plan-config.json"
|
|
24
|
+
if (fileExists(localConfigPath)) {
|
|
25
|
+
try {
|
|
26
|
+
return JSON.parse(readFile(localConfigPath))
|
|
27
|
+
} catch (error) {}
|
|
28
|
+
}
|
|
29
|
+
const globalConfigPath = expandPath("~/.config/claude/plan-plugin-config.json")
|
|
30
|
+
if (fileExists(globalConfigPath)) {
|
|
31
|
+
try {
|
|
32
|
+
return JSON.parse(readFile(globalConfigPath))
|
|
33
|
+
} catch (error) {}
|
|
34
|
+
}
|
|
35
|
+
return { "language": "en" }
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const config = getConfig()
|
|
39
|
+
const language = config.language || "en"
|
|
40
|
+
const cloudConfig = config.cloud || {}
|
|
41
|
+
const isAuthenticated = !!cloudConfig.apiToken
|
|
42
|
+
const apiUrl = cloudConfig.apiUrl || "https://api.planflow.tools"
|
|
43
|
+
|
|
44
|
+
const t = JSON.parse(readFile(`locales/${language}.json`))
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Step 1: Check Current Auth Status
|
|
48
|
+
|
|
49
|
+
If already authenticated, display warning card:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
53
|
+
│ ⚠️ WARNING │
|
|
54
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
55
|
+
│ │
|
|
56
|
+
│ Already logged in as {email} │
|
|
57
|
+
│ │
|
|
58
|
+
│ To switch accounts, run /pfLogout first. │
|
|
59
|
+
│ │
|
|
60
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
61
|
+
│ │
|
|
62
|
+
│ 💡 {t.ui.labels.options} │
|
|
63
|
+
│ • /pfLogout Sign out and switch accounts │
|
|
64
|
+
│ • /pfWhoami View current user info │
|
|
65
|
+
│ │
|
|
66
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Step 2: Get Token
|
|
70
|
+
|
|
71
|
+
If token provided as argument, use it. Otherwise, display prompt card:
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
75
|
+
│ 🔐 PlanFlow Login │
|
|
76
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
77
|
+
│ │
|
|
78
|
+
│ {t.commands.login.enterToken} │
|
|
79
|
+
│ │
|
|
80
|
+
│ ── Get Your Token ────────────────────────────────────────────────────── │
|
|
81
|
+
│ │
|
|
82
|
+
│ 1. Visit: https://planflow.tools/settings/api-tokens │
|
|
83
|
+
│ 2. Click "Generate New Token" │
|
|
84
|
+
│ 3. Copy the token (starts with pf_) │
|
|
85
|
+
│ 4. Paste below or run: /pfLogin pf_your_token │
|
|
86
|
+
│ │
|
|
87
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Step 3: Validate Token (with Spinner)
|
|
91
|
+
|
|
92
|
+
**Loading Card (during validation):**
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
96
|
+
│ 🔐 PlanFlow Login │
|
|
97
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
98
|
+
│ │
|
|
99
|
+
│ ⠹ {t.ui.labels.validating} │
|
|
100
|
+
│ │
|
|
101
|
+
│ Connecting to api.planflow.tools... │
|
|
102
|
+
│ │
|
|
103
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**API Call:**
|
|
107
|
+
```bash
|
|
108
|
+
curl -s -X POST \
|
|
109
|
+
-H "Content-Type: application/json" \
|
|
110
|
+
-d '{"token": "{TOKEN}"}' \
|
|
111
|
+
"https://api.planflow.tools/api-tokens/verify"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**IMPORTANT:** The token must be passed in the **request body** as JSON, NOT in the Authorization header!
|
|
115
|
+
|
|
116
|
+
**Success Response (HTTP 200):**
|
|
117
|
+
```json
|
|
118
|
+
{
|
|
119
|
+
"success": true,
|
|
120
|
+
"data": {
|
|
121
|
+
"user": {
|
|
122
|
+
"id": "uuid",
|
|
123
|
+
"email": "user@example.com",
|
|
124
|
+
"name": "John Doe"
|
|
125
|
+
},
|
|
126
|
+
"tokenName": "My CLI Token"
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Step 4: Save Credentials
|
|
132
|
+
|
|
133
|
+
Save to global config (`~/.config/claude/plan-plugin-config.json`):
|
|
134
|
+
|
|
135
|
+
**IMPORTANT:**
|
|
136
|
+
- Create the directory if it doesn't exist: `mkdir -p ~/.config/claude`
|
|
137
|
+
- Use the Write tool to save the config file
|
|
138
|
+
|
|
139
|
+
```json
|
|
140
|
+
{
|
|
141
|
+
"language": "en",
|
|
142
|
+
"cloud": {
|
|
143
|
+
"apiUrl": "https://api.planflow.tools",
|
|
144
|
+
"apiToken": "pf_xxx...",
|
|
145
|
+
"savedAt": "2026-02-02T12:00:00Z",
|
|
146
|
+
"verified": true,
|
|
147
|
+
"userId": "uuid-from-response",
|
|
148
|
+
"userEmail": "email-from-response",
|
|
149
|
+
"userName": "name-from-response"
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Step 5: Show Success Card
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
158
|
+
│ ✅ SUCCESS │
|
|
159
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
160
|
+
│ │
|
|
161
|
+
│ {t.commands.login.success} │
|
|
162
|
+
│ │
|
|
163
|
+
│ ── Account Info ──────────────────────────────────────────────────────── │
|
|
164
|
+
│ │
|
|
165
|
+
│ 👤 Name: {response.data.user.name} │
|
|
166
|
+
│ 📧 Email: {response.data.user.email} │
|
|
167
|
+
│ 🔑 Token: {response.data.tokenName} │
|
|
168
|
+
│ │
|
|
169
|
+
│ ╭────────────────╮ │
|
|
170
|
+
│ │ ✓ Connected │ │
|
|
171
|
+
│ ╰────────────────╯ │
|
|
172
|
+
│ │
|
|
173
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
174
|
+
│ │
|
|
175
|
+
│ 💡 {t.commands.login.nowYouCan} │
|
|
176
|
+
│ • /pfCloudList View your projects │
|
|
177
|
+
│ • /pfCloudLink Link to a project │
|
|
178
|
+
│ • /pfSyncPush Push local to cloud │
|
|
179
|
+
│ • /pfSyncPull Pull from cloud │
|
|
180
|
+
│ │
|
|
181
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
182
|
+
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**Example Output (English):**
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
189
|
+
│ ✅ SUCCESS │
|
|
190
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
191
|
+
│ │
|
|
192
|
+
│ Successfully logged in! │
|
|
193
|
+
│ │
|
|
194
|
+
│ ── Account Info ──────────────────────────────────────────────────────── │
|
|
195
|
+
│ │
|
|
196
|
+
│ 👤 Name: John Doe │
|
|
197
|
+
│ 📧 Email: john@example.com │
|
|
198
|
+
│ 🔑 Token: My CLI Token │
|
|
199
|
+
│ │
|
|
200
|
+
│ ╭────────────────╮ │
|
|
201
|
+
│ │ ✓ Connected │ │
|
|
202
|
+
│ ╰────────────────╯ │
|
|
203
|
+
│ │
|
|
204
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
205
|
+
│ │
|
|
206
|
+
│ 💡 Now you can: │
|
|
207
|
+
│ • /pfCloudList View your projects │
|
|
208
|
+
│ • /pfCloudLink Link to a project │
|
|
209
|
+
│ • /pfSyncPush Push local to cloud │
|
|
210
|
+
│ • /pfSyncPull Pull from cloud │
|
|
211
|
+
│ │
|
|
212
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
213
|
+
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Error Handling
|
|
217
|
+
|
|
218
|
+
**Invalid Token Card:**
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
222
|
+
│ ❌ ERROR │
|
|
223
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
224
|
+
│ │
|
|
225
|
+
│ {t.commands.login.invalidToken} │
|
|
226
|
+
│ │
|
|
227
|
+
│ The token you provided is invalid or expired. │
|
|
228
|
+
│ │
|
|
229
|
+
│ 💡 {t.ui.labels.nextSteps} │
|
|
230
|
+
│ 1. Visit: https://planflow.tools/settings/api-tokens │
|
|
231
|
+
│ 2. Generate a new token │
|
|
232
|
+
│ 3. Run: /pfLogin <new_token> │
|
|
233
|
+
│ │
|
|
234
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
**Network Error Card:**
|
|
238
|
+
|
|
239
|
+
```
|
|
240
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
241
|
+
│ ❌ ERROR │
|
|
242
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
243
|
+
│ │
|
|
244
|
+
│ Network error. Could not connect to PlanFlow API. │
|
|
245
|
+
│ │
|
|
246
|
+
│ Please check your internet connection and try again. │
|
|
247
|
+
│ │
|
|
248
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
249
|
+
```
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pfLogout
|
|
3
|
+
description: PlanFlow Logout
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# PlanFlow Logout
|
|
7
|
+
|
|
8
|
+
Clear PlanFlow credentials and disconnect from cloud with confirmation card.
|
|
9
|
+
|
|
10
|
+
**IMPORTANT:** This is ONLY for PlanFlow (planflow.tools) - NOT for Claude or Claude Code logout.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
/pfLogout # Clear credentials
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Step 0: Load Configuration
|
|
19
|
+
|
|
20
|
+
```javascript
|
|
21
|
+
function getConfig() {
|
|
22
|
+
const globalConfigPath = expandPath("~/.config/claude/plan-plugin-config.json")
|
|
23
|
+
if (fileExists(globalConfigPath)) {
|
|
24
|
+
try {
|
|
25
|
+
return JSON.parse(readFile(globalConfigPath))
|
|
26
|
+
} catch (error) {}
|
|
27
|
+
}
|
|
28
|
+
return { "language": "en" }
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const config = getConfig()
|
|
32
|
+
const language = config.language || "en"
|
|
33
|
+
const cloudConfig = config.cloud || {}
|
|
34
|
+
const isAuthenticated = !!cloudConfig.apiToken
|
|
35
|
+
|
|
36
|
+
const t = JSON.parse(readFile(`locales/${language}.json`))
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Step 1: Check Auth Status
|
|
40
|
+
|
|
41
|
+
If not authenticated, display info card:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
45
|
+
│ ℹ️ INFO │
|
|
46
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
47
|
+
│ │
|
|
48
|
+
│ {t.commands.logout.notLoggedIn} │
|
|
49
|
+
│ │
|
|
50
|
+
│ 💡 {t.ui.labels.nextSteps} │
|
|
51
|
+
│ • /pfLogin Sign in to PlanFlow │
|
|
52
|
+
│ │
|
|
53
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Example (English):**
|
|
57
|
+
```
|
|
58
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
59
|
+
│ ℹ️ INFO │
|
|
60
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
61
|
+
│ │
|
|
62
|
+
│ You are not currently logged in. │
|
|
63
|
+
│ │
|
|
64
|
+
│ 💡 Next Steps: │
|
|
65
|
+
│ • /pfLogin Sign in to PlanFlow │
|
|
66
|
+
│ │
|
|
67
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Step 2: Clear Credentials
|
|
71
|
+
|
|
72
|
+
Remove from global config (`~/.config/claude/plan-plugin-config.json`):
|
|
73
|
+
- `cloud.apiToken`
|
|
74
|
+
- `cloud.userId`
|
|
75
|
+
- `cloud.userEmail`
|
|
76
|
+
|
|
77
|
+
Keep other settings like `language` and `cloud.apiUrl`.
|
|
78
|
+
|
|
79
|
+
## Step 3: Show Success Card
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
83
|
+
│ ✅ SUCCESS │
|
|
84
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
85
|
+
│ │
|
|
86
|
+
│ {t.commands.logout.success} │
|
|
87
|
+
│ │
|
|
88
|
+
│ {t.commands.logout.cleared} │
|
|
89
|
+
│ │
|
|
90
|
+
│ ── What's Changed ────────────────────────────────────────────────────── │
|
|
91
|
+
│ │
|
|
92
|
+
│ • API token removed │
|
|
93
|
+
│ • Cloud sync disabled │
|
|
94
|
+
│ • Local settings preserved │
|
|
95
|
+
│ │
|
|
96
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
97
|
+
│ │
|
|
98
|
+
│ 💡 {t.ui.labels.nextSteps} │
|
|
99
|
+
│ • /pfLogin Sign in again │
|
|
100
|
+
│ │
|
|
101
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
102
|
+
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Example Output (English):**
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
109
|
+
│ ✅ SUCCESS │
|
|
110
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
111
|
+
│ │
|
|
112
|
+
│ Successfully logged out from PlanFlow. │
|
|
113
|
+
│ │
|
|
114
|
+
│ Credentials cleared from global config. │
|
|
115
|
+
│ │
|
|
116
|
+
│ ── What's Changed ────────────────────────────────────────────────────── │
|
|
117
|
+
│ │
|
|
118
|
+
│ • API token removed │
|
|
119
|
+
│ • Cloud sync disabled │
|
|
120
|
+
│ • Local settings preserved │
|
|
121
|
+
│ │
|
|
122
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
123
|
+
│ │
|
|
124
|
+
│ 💡 Next Steps: │
|
|
125
|
+
│ • /pfLogin Sign in again │
|
|
126
|
+
│ │
|
|
127
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
128
|
+
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Example Output (Georgian):**
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
135
|
+
│ ✅ წარმატება │
|
|
136
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
137
|
+
│ │
|
|
138
|
+
│ წარმატებით გამოხვედით PlanFlow-დან. │
|
|
139
|
+
│ │
|
|
140
|
+
│ კრედენციალები წაიშალა გლობალური კონფიგურაციიდან. │
|
|
141
|
+
│ │
|
|
142
|
+
│ ── რა შეიცვალა ───────────────────────────────────────────────────────── │
|
|
143
|
+
│ │
|
|
144
|
+
│ • API ტოკენი წაშლილია │
|
|
145
|
+
│ • Cloud სინქრონიზაცია გამორთულია │
|
|
146
|
+
│ • ლოკალური პარამეტრები შენარჩუნებულია │
|
|
147
|
+
│ │
|
|
148
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
149
|
+
│ │
|
|
150
|
+
│ 💡 შემდეგი ნაბიჯები: │
|
|
151
|
+
│ • /pfLogin ხელახლა შესვლა │
|
|
152
|
+
│ │
|
|
153
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
154
|
+
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
155
|
+
```
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pfMyTasks
|
|
3
|
+
description: View tasks assigned to you in the current PlanFlow project
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# PlanFlow My Tasks
|
|
7
|
+
|
|
8
|
+
View all tasks assigned to you in the linked cloud project with task list cards.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
/pfMyTasks # Show all your assigned tasks
|
|
14
|
+
/pfMyTasks --status todo # Filter by status (todo, in_progress, done, blocked)
|
|
15
|
+
/pfMyTasks --all # Include completed tasks (hidden by default)
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Step 0: Load Configuration
|
|
19
|
+
|
|
20
|
+
```javascript
|
|
21
|
+
// ... standard config loading ...
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Step 0.5: Show Notification Badge (v1.6.0+)
|
|
25
|
+
|
|
26
|
+
**Purpose:** Display unread notification count to keep users informed of team activity.
|
|
27
|
+
|
|
28
|
+
**When to Execute:** Only if authenticated AND linked to a project.
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Only proceed if authenticated and linked
|
|
32
|
+
if [ -n "$TOKEN" ] && [ -n "$PROJECT_ID" ]; then
|
|
33
|
+
RESPONSE=$(curl -s --connect-timeout 3 --max-time 5 \
|
|
34
|
+
-X GET \
|
|
35
|
+
-H "Accept: application/json" \
|
|
36
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
37
|
+
"${API_URL}/projects/${PROJECT_ID}/notifications?limit=1&unread=true" 2>/dev/null)
|
|
38
|
+
|
|
39
|
+
if [ $? -eq 0 ]; then
|
|
40
|
+
UNREAD_COUNT=$(echo "$RESPONSE" | grep -o '"unreadCount":[0-9]*' | grep -o '[0-9]*')
|
|
41
|
+
if [ -n "$UNREAD_COUNT" ] && [ "$UNREAD_COUNT" -gt 0 ]; then
|
|
42
|
+
echo "🔔 $UNREAD_COUNT unread notification(s) — /pfNotifications to view"
|
|
43
|
+
echo ""
|
|
44
|
+
fi
|
|
45
|
+
fi
|
|
46
|
+
fi
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
See: `skills/notification-badge/SKILL.md` for full implementation details.
|
|
50
|
+
|
|
51
|
+
## Step 1: Display My Tasks Card
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
55
|
+
│ 📋 My Assigned Tasks │
|
|
56
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
57
|
+
│ │
|
|
58
|
+
│ 📁 Project: Planflow Plugin │
|
|
59
|
+
│ │
|
|
60
|
+
│ ── In Progress (1) ──────────────────────────────────────────────────── │
|
|
61
|
+
│ │
|
|
62
|
+
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
|
63
|
+
│ │ 🔄 T2.1 - Implement login API │ │
|
|
64
|
+
│ │ 🔴 High complexity │ │
|
|
65
|
+
│ └────────────────────────────────────────────────────────────────────────┘ │
|
|
66
|
+
│ │
|
|
67
|
+
│ ── To Do (2) ────────────────────────────────────────────────────────── │
|
|
68
|
+
│ │
|
|
69
|
+
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
|
70
|
+
│ │ ○ T2.3 - Add validation │ │
|
|
71
|
+
│ │ 🟡 Medium complexity │ │
|
|
72
|
+
│ └────────────────────────────────────────────────────────────────────────┘ │
|
|
73
|
+
│ │
|
|
74
|
+
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
|
75
|
+
│ │ ○ T3.1 - Create dashboard │ │
|
|
76
|
+
│ │ 🟢 Low complexity │ │
|
|
77
|
+
│ └────────────────────────────────────────────────────────────────────────┘ │
|
|
78
|
+
│ │
|
|
79
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
80
|
+
│ │
|
|
81
|
+
│ 💡 Quick actions: │
|
|
82
|
+
│ • /planUpdate T2.1 done Mark current task as done │
|
|
83
|
+
│ • /pfMyTasks --all Include completed tasks │
|
|
84
|
+
│ │
|
|
85
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
86
|
+
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**With Blocked Tasks:**
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
93
|
+
│ 📋 My Assigned Tasks │
|
|
94
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
95
|
+
│ │
|
|
96
|
+
│ 📁 Project: Planflow Plugin │
|
|
97
|
+
│ │
|
|
98
|
+
│ ── In Progress (1) ──────────────────────────────────────────────────── │
|
|
99
|
+
│ │
|
|
100
|
+
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
|
101
|
+
│ │ 🔄 T2.1 - Implement login API │ │
|
|
102
|
+
│ │ 🔴 High complexity │ │
|
|
103
|
+
│ └────────────────────────────────────────────────────────────────────────┘ │
|
|
104
|
+
│ │
|
|
105
|
+
│ ── Blocked (1) ──────────────────────────────────────────────────────── │
|
|
106
|
+
│ │
|
|
107
|
+
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
|
108
|
+
│ │ 🚫 T2.5 - Setup database │ │
|
|
109
|
+
│ │ 🟡 Medium complexity │ │
|
|
110
|
+
│ └────────────────────────────────────────────────────────────────────────┘ │
|
|
111
|
+
│ │
|
|
112
|
+
│ ── To Do (1) ────────────────────────────────────────────────────────── │
|
|
113
|
+
│ │
|
|
114
|
+
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
|
115
|
+
│ │ ○ T2.3 - Add validation │ │
|
|
116
|
+
│ │ 🟡 Medium complexity │ │
|
|
117
|
+
│ └────────────────────────────────────────────────────────────────────────┘ │
|
|
118
|
+
│ │
|
|
119
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
120
|
+
│ │
|
|
121
|
+
│ 💡 Quick actions: │
|
|
122
|
+
│ • /planUpdate T2.1 done Mark current task as done │
|
|
123
|
+
│ • /planUpdate T2.5 unblock Unblock task │
|
|
124
|
+
│ │
|
|
125
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
126
|
+
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Step 2: No Tasks Card
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
133
|
+
│ 📋 My Assigned Tasks │
|
|
134
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
135
|
+
│ │
|
|
136
|
+
│ 📁 Project: Planflow Plugin │
|
|
137
|
+
│ │
|
|
138
|
+
│ ╭─────────────────────────────────────────────────────────────────────╮ │
|
|
139
|
+
│ │ │ │
|
|
140
|
+
│ │ 📭 You don't have any assigned tasks. │ │
|
|
141
|
+
│ │ │ │
|
|
142
|
+
│ ╰─────────────────────────────────────────────────────────────────────╯ │
|
|
143
|
+
│ │
|
|
144
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
145
|
+
│ │
|
|
146
|
+
│ 💡 Get started: │
|
|
147
|
+
│ • /planNext Find tasks to work on │
|
|
148
|
+
│ • /pfAssign T1.1 me Assign yourself a task │
|
|
149
|
+
│ │
|
|
150
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Error Handling
|
|
154
|
+
|
|
155
|
+
**Not Authenticated Card:**
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
159
|
+
│ ❌ ERROR │
|
|
160
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
161
|
+
│ │
|
|
162
|
+
│ {t.commands.sync.notAuthenticated} │
|
|
163
|
+
│ │
|
|
164
|
+
│ 💡 {t.ui.labels.nextSteps} │
|
|
165
|
+
│ • /pfLogin Sign in to PlanFlow │
|
|
166
|
+
│ │
|
|
167
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**Not Linked Card:**
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
174
|
+
│ ❌ ERROR │
|
|
175
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
176
|
+
│ │
|
|
177
|
+
│ {t.commands.sync.notLinked} │
|
|
178
|
+
│ │
|
|
179
|
+
│ 💡 {t.ui.labels.nextSteps} │
|
|
180
|
+
│ • /pfCloudLink Link to a cloud project │
|
|
181
|
+
│ │
|
|
182
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**Invalid Status Filter Card:**
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
189
|
+
│ ❌ ERROR │
|
|
190
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
191
|
+
│ │
|
|
192
|
+
│ Invalid status filter. │
|
|
193
|
+
│ │
|
|
194
|
+
│ Valid statuses: todo, in_progress, done, blocked │
|
|
195
|
+
│ │
|
|
196
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
197
|
+
```
|
|
198
|
+
|