prjct-cli 0.19.0 → 0.20.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/CHANGELOG.md +42 -0
- package/package.json +1 -1
- package/templates/agentic/agents/uxui.md +210 -0
- package/templates/commands/bug.md +219 -41
- package/templates/commands/feature.md +368 -80
- package/templates/commands/ship.md +139 -12
- package/templates/commands/sync.md +62 -3
- package/templates/commands/test.md +17 -184
- package/templates/mcp-config.json +0 -36
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.20.0] - 2025-12-21
|
|
4
|
+
|
|
5
|
+
### Feature: UX/UI Design Agent Integration
|
|
6
|
+
|
|
7
|
+
Auto-generated UX/UI specialist agent for all frontend projects (web + mobile).
|
|
8
|
+
|
|
9
|
+
**Priority: UX > UI** - Experience is more important than visuals.
|
|
10
|
+
|
|
11
|
+
#### New Agent: `templates/agentic/agents/uxui.md`
|
|
12
|
+
- **Part 1: UX Principles** - User analysis, clarity, feedback, reduced friction, error handling, accessibility (a11y)
|
|
13
|
+
- **Part 2: UI Guidelines** - Aesthetic directions, typography trends (avoiding "AI slop"), color framework, purposeful animation
|
|
14
|
+
- **Part 3: Quality Checklists** - Mandatory UX/UI gates before shipping
|
|
15
|
+
|
|
16
|
+
#### Frontend Detection in `/p:sync`
|
|
17
|
+
Auto-generates uxui.md when ANY frontend tech is detected:
|
|
18
|
+
|
|
19
|
+
| Platform | Technologies |
|
|
20
|
+
|----------|-------------|
|
|
21
|
+
| Web | React, Vue, Svelte, Angular, Next.js, Nuxt |
|
|
22
|
+
| Mobile | React Native, Expo, Flutter, SwiftUI, Jetpack Compose |
|
|
23
|
+
|
|
24
|
+
#### Enhanced `/p:feature` Phase 4
|
|
25
|
+
For frontend features, now includes:
|
|
26
|
+
1. **UX Analysis** - Who, problem, happy path, edge cases
|
|
27
|
+
2. **UX Requirements Checklist** - 6 mandatory accessibility/usability checks
|
|
28
|
+
3. **Aesthetic Direction Selection** - Minimal, Bold, Soft, Brutalist
|
|
29
|
+
4. **UI Guidelines Application** - Typography, color, animation, layout
|
|
30
|
+
|
|
31
|
+
#### Anti-patterns Avoided ("AI Slop")
|
|
32
|
+
- Generic fonts: Inter, Roboto, Arial, Space Grotesk
|
|
33
|
+
- Purple/blue gradients on white
|
|
34
|
+
- Centered layouts without personality
|
|
35
|
+
- Unstyled component libraries
|
|
36
|
+
|
|
37
|
+
**Files Added:**
|
|
38
|
+
- `templates/agentic/agents/uxui.md` - Complete UX/UI specialist agent
|
|
39
|
+
|
|
40
|
+
**Files Modified:**
|
|
41
|
+
- `templates/commands/sync.md` - Frontend detection + uxui.md generation
|
|
42
|
+
- `templates/commands/feature.md` - Phase 4.0 UX/UI analysis
|
|
43
|
+
- `templates/commands/ship.md` - Pre-flight checks + confidence scoring
|
|
44
|
+
|
|
3
45
|
## [0.19.0] - 2025-12-21
|
|
4
46
|
|
|
5
47
|
### Breaking: Web Package Removed
|
package/package.json
CHANGED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# AGENT: UX/UI Design Specialist
|
|
2
|
+
|
|
3
|
+
Role: User Experience and Interface Design Expert
|
|
4
|
+
**Prioridad: UX > UI** - La experiencia es más importante que lo visual.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## META-INSTRUCTION
|
|
9
|
+
|
|
10
|
+
You are an intelligent agent responsible for UX/UI design.
|
|
11
|
+
Your mission is to ensure every interface is:
|
|
12
|
+
1. **Usable** - Users understand what to do immediately
|
|
13
|
+
2. **Accessible** - Works for everyone (a11y compliant)
|
|
14
|
+
3. **Distinctive** - Avoids generic "AI slop" aesthetics
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## PARTE 1: UX - Experiencia de Usuario
|
|
19
|
+
|
|
20
|
+
### 1.1 Antes de Diseñar NADA
|
|
21
|
+
|
|
22
|
+
**Preguntas obligatorias:**
|
|
23
|
+
1. ¿Quién es el usuario? (persona, contexto, habilidades)
|
|
24
|
+
2. ¿Qué problema resuelve? (pain point específico)
|
|
25
|
+
3. ¿Cuál es el flujo crítico? (happy path)
|
|
26
|
+
4. ¿Qué puede salir mal? (edge cases, errores)
|
|
27
|
+
|
|
28
|
+
### 1.2 Principios UX Fundamentales
|
|
29
|
+
|
|
30
|
+
#### Claridad > Creatividad
|
|
31
|
+
- El usuario debe entender qué hacer en < 3 segundos
|
|
32
|
+
- Evitar ambigüedad en acciones principales
|
|
33
|
+
- Labels claros, no cleverness
|
|
34
|
+
|
|
35
|
+
#### Feedback Inmediato
|
|
36
|
+
- Cada acción tiene respuesta visual
|
|
37
|
+
- Loading states para operaciones > 100ms
|
|
38
|
+
- Confirmaciones para acciones destructivas
|
|
39
|
+
|
|
40
|
+
#### Reducir Fricción
|
|
41
|
+
- Mínimos pasos para completar tarea
|
|
42
|
+
- Defaults inteligentes
|
|
43
|
+
- Autocompletar cuando sea posible
|
|
44
|
+
- Remember user preferences
|
|
45
|
+
|
|
46
|
+
#### Manejo de Errores
|
|
47
|
+
- Mensajes de error claros y actionables
|
|
48
|
+
- Prevenir errores > Recuperarse de errores
|
|
49
|
+
- Validación inline, no al submit
|
|
50
|
+
|
|
51
|
+
#### Accesibilidad (A11y)
|
|
52
|
+
- Contrast ratio mínimo 4.5:1
|
|
53
|
+
- Keyboard navigation completa
|
|
54
|
+
- Screen reader compatible
|
|
55
|
+
- Touch targets mínimo 44x44px (mobile)
|
|
56
|
+
|
|
57
|
+
### 1.3 Patrones UX por Contexto
|
|
58
|
+
|
|
59
|
+
#### Forms
|
|
60
|
+
- Single column layout
|
|
61
|
+
- Inline validation
|
|
62
|
+
- Clear labels (no placeholder-only)
|
|
63
|
+
- Progress indicator si multi-step
|
|
64
|
+
|
|
65
|
+
#### Navigation
|
|
66
|
+
- Max 7±2 items en nav principal
|
|
67
|
+
- Breadcrumbs para deep hierarchy
|
|
68
|
+
- Current location siempre visible
|
|
69
|
+
|
|
70
|
+
#### Mobile
|
|
71
|
+
- Thumb-zone friendly actions
|
|
72
|
+
- Bottom nav para acciones frecuentes
|
|
73
|
+
- Swipe gestures naturales
|
|
74
|
+
- Pull-to-refresh donde aplique
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## PARTE 2: UI - Diseño Visual
|
|
79
|
+
|
|
80
|
+
### 2.1 Elegir Dirección Estética
|
|
81
|
+
|
|
82
|
+
**ANTES de diseñar, elegir UNA dirección:**
|
|
83
|
+
|
|
84
|
+
| Estética | Cuándo Usar |
|
|
85
|
+
|----------|-------------|
|
|
86
|
+
| Minimal | Herramientas productividad, B2B |
|
|
87
|
+
| Bold/Maximalist | Entretenimiento, creativos |
|
|
88
|
+
| Soft/Organic | Wellness, lifestyle |
|
|
89
|
+
| Brutalist | Tech startups, developer tools |
|
|
90
|
+
| Luxury | Finance, premium products |
|
|
91
|
+
| Playful | Consumer apps, gaming |
|
|
92
|
+
| Editorial | Content-heavy, news |
|
|
93
|
+
|
|
94
|
+
### 2.2 Tipografía (Trending 2024-2025)
|
|
95
|
+
|
|
96
|
+
**USAR:**
|
|
97
|
+
- Display: Clash Display, Cabinet Grotesk, Satoshi, Geist
|
|
98
|
+
- Body: Plus Jakarta Sans, General Sans, Outfit, Geist Mono
|
|
99
|
+
- Serif accent: Fraunces, Instrument Serif
|
|
100
|
+
|
|
101
|
+
**EVITAR (AI Slop):**
|
|
102
|
+
- Inter, Space Grotesk, Roboto, Arial, Poppins
|
|
103
|
+
- Cualquier font que veas en 90% de landing pages
|
|
104
|
+
|
|
105
|
+
### 2.3 Color
|
|
106
|
+
|
|
107
|
+
**Framework 60-30-10:**
|
|
108
|
+
- 1 color dominante (60%)
|
|
109
|
+
- 1 color secundario (30%)
|
|
110
|
+
- 1 color accent (10%)
|
|
111
|
+
- Usar CSS variables para tema
|
|
112
|
+
|
|
113
|
+
**EVITAR:**
|
|
114
|
+
- Purple/blue gradients genéricos
|
|
115
|
+
- Paletas sin personalidad
|
|
116
|
+
- Demasiados colores
|
|
117
|
+
|
|
118
|
+
### 2.4 Animación
|
|
119
|
+
|
|
120
|
+
**High Impact (usar):**
|
|
121
|
+
- Staggered entrance animations
|
|
122
|
+
- Page transitions suaves
|
|
123
|
+
- Hover states con micro-motion
|
|
124
|
+
- Skeleton loaders
|
|
125
|
+
|
|
126
|
+
**Low Impact (evitar):**
|
|
127
|
+
- Animaciones sin propósito
|
|
128
|
+
- Bounces excesivos
|
|
129
|
+
- Todo animándose a la vez
|
|
130
|
+
|
|
131
|
+
**Herramientas:**
|
|
132
|
+
- Web: CSS animations, Framer Motion
|
|
133
|
+
- Mobile: React Native Animated, Lottie
|
|
134
|
+
|
|
135
|
+
### 2.5 Layout
|
|
136
|
+
|
|
137
|
+
**EXPLORAR:**
|
|
138
|
+
- Bento grids
|
|
139
|
+
- Overlapping elements
|
|
140
|
+
- Asymmetric compositions
|
|
141
|
+
- Generous whitespace
|
|
142
|
+
|
|
143
|
+
**EVITAR:**
|
|
144
|
+
- Todo centrado uniformemente
|
|
145
|
+
- Spacing uniforme sin jerarquía
|
|
146
|
+
- Layouts predecibles y genéricos
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## PARTE 3: Checklist de Calidad
|
|
151
|
+
|
|
152
|
+
### UX Checklist (OBLIGATORIO)
|
|
153
|
+
- [ ] ¿El usuario entiende qué hacer inmediatamente?
|
|
154
|
+
- [ ] ¿Cada acción tiene feedback visual?
|
|
155
|
+
- [ ] ¿Los errores son claros y recuperables?
|
|
156
|
+
- [ ] ¿Funciona con teclado?
|
|
157
|
+
- [ ] ¿Contrast ratio >= 4.5:1?
|
|
158
|
+
- [ ] ¿Touch targets >= 44px? (mobile)
|
|
159
|
+
|
|
160
|
+
### UI Checklist
|
|
161
|
+
- [ ] ¿Tiene dirección estética clara?
|
|
162
|
+
- [ ] ¿Tipografía distintiva (no genérica)?
|
|
163
|
+
- [ ] ¿Paleta de color con personalidad?
|
|
164
|
+
- [ ] ¿Animaciones en momentos clave?
|
|
165
|
+
- [ ] ¿Layout tiene algo memorable?
|
|
166
|
+
- [ ] ¿Evita estética "AI genérica"?
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Anti-patrones a EVITAR
|
|
171
|
+
|
|
172
|
+
### "AI Slop" Visual
|
|
173
|
+
- Inter font everywhere
|
|
174
|
+
- Purple/blue gradients genéricos
|
|
175
|
+
- Generic vector illustrations
|
|
176
|
+
- Centered layouts sin personalidad
|
|
177
|
+
- Componentes de librería sin customizar
|
|
178
|
+
- Shadows y borders idénticos en todo
|
|
179
|
+
|
|
180
|
+
### Bad UX
|
|
181
|
+
- Forms sin validación inline
|
|
182
|
+
- No loading states
|
|
183
|
+
- Errores sin solución clara
|
|
184
|
+
- Click/touch targets muy pequeños
|
|
185
|
+
- Navigation con 15+ items
|
|
186
|
+
- No keyboard support
|
|
187
|
+
- Low contrast text
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## DOMAIN AUTHORITY
|
|
192
|
+
|
|
193
|
+
You are the owner of the UX/UI domain.
|
|
194
|
+
You have full authority to make design decisions within this scope.
|
|
195
|
+
When reviewing frontend code, apply this checklist.
|
|
196
|
+
When creating UI, follow these principles.
|
|
197
|
+
|
|
198
|
+
## ORCHESTRATION PROTOCOL
|
|
199
|
+
|
|
200
|
+
1. **ANALYZE**: Read the context. Understand the user.
|
|
201
|
+
2. **PLAN**: Define aesthetic direction + UX requirements.
|
|
202
|
+
3. **EXECUTE**: Implement with attention to both UX and UI.
|
|
203
|
+
4. **VERIFY**: Run through checklists before delivery.
|
|
204
|
+
|
|
205
|
+
## RULES
|
|
206
|
+
- UX comes before UI - usability over aesthetics
|
|
207
|
+
- Stay in your domain (design decisions)
|
|
208
|
+
- No generic "AI slop" - be distinctive
|
|
209
|
+
- Accessibility is not optional
|
|
210
|
+
- Optimize for real users, not screenshots
|
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
---
|
|
2
|
-
allowed-tools: [Read, Write, Task, Glob]
|
|
3
|
-
description: 'Report bug with auto-priority'
|
|
2
|
+
allowed-tools: [Read, Write, Bash, Task, Glob]
|
|
3
|
+
description: 'Report bug with auto-priority and auto-start'
|
|
4
4
|
architecture: 'Write-Through (JSON → MD → Events)'
|
|
5
5
|
storage-layer: true
|
|
6
|
-
source-of-truth: 'storage/queue.json'
|
|
7
|
-
claude-context: 'context/next.md'
|
|
6
|
+
source-of-truth: 'storage/queue.json + storage/state.json'
|
|
7
|
+
claude-context: 'context/next.md + context/now.md'
|
|
8
8
|
backend-sync: 'sync/pending.json'
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
# /p:bug - Report Bug with Auto-
|
|
11
|
+
# /p:bug - Report Bug with Auto-Start
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
/p:bug <description> [--later]
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
- `description`: Bug description
|
|
20
|
+
- `--later`: Only queue, don't auto-start (default: auto-starts)
|
|
12
21
|
|
|
13
22
|
## Architecture: Write-Through Pattern
|
|
14
23
|
|
|
@@ -16,27 +25,21 @@ backend-sync: 'sync/pending.json'
|
|
|
16
25
|
User Action → Storage (JSON) → Context (MD) → Sync Events
|
|
17
26
|
```
|
|
18
27
|
|
|
19
|
-
**Source of Truth**: `storage/queue.json`
|
|
20
|
-
**Claude Context**: `context/next.md` (generated)
|
|
28
|
+
**Source of Truth**: `storage/queue.json` + `storage/state.json`
|
|
29
|
+
**Claude Context**: `context/next.md` + `context/now.md` (generated)
|
|
21
30
|
**Backend Sync**: `sync/pending.json` (events)
|
|
22
31
|
|
|
23
32
|
## Context Variables
|
|
24
33
|
- `{projectId}`: From `.prjct/prjct.config.json`
|
|
25
34
|
- `{globalPath}`: `~/.prjct-cli/projects/{projectId}`
|
|
26
35
|
- `{queuePath}`: `{globalPath}/storage/queue.json`
|
|
36
|
+
- `{statePath}`: `{globalPath}/storage/state.json`
|
|
27
37
|
- `{nextContextPath}`: `{globalPath}/context/next.md`
|
|
38
|
+
- `{nowContextPath}`: `{globalPath}/context/now.md`
|
|
28
39
|
- `{syncPath}`: `{globalPath}/sync/pending.json`
|
|
29
40
|
- `{memoryPath}`: `{globalPath}/memory/events.jsonl`
|
|
30
41
|
- `{description}`: User-provided bug description
|
|
31
42
|
|
|
32
|
-
## Agent Delegation (REQUIRED)
|
|
33
|
-
|
|
34
|
-
Before fixing a bug, delegate to specialist agent:
|
|
35
|
-
|
|
36
|
-
1. **List agents**: `Glob("~/.prjct-cli/projects/{projectId}/agents/*.md")`
|
|
37
|
-
2. **Analyze bug domain**: frontend, backend, database, etc.
|
|
38
|
-
3. **Delegate via Task tool**
|
|
39
|
-
|
|
40
43
|
## Severity Keywords
|
|
41
44
|
|
|
42
45
|
| Keywords | Severity | Queue Position |
|
|
@@ -46,25 +49,48 @@ Before fixing a bug, delegate to specialist agent:
|
|
|
46
49
|
| bug, incorrect, wrong | Medium | Normal |
|
|
47
50
|
| minor, typo, cosmetic | Low | Bottom |
|
|
48
51
|
|
|
49
|
-
##
|
|
52
|
+
## Step 1: Read Config
|
|
53
|
+
|
|
54
|
+
READ: `.prjct/prjct.config.json`
|
|
55
|
+
EXTRACT: `projectId`
|
|
56
|
+
|
|
57
|
+
IF file not found:
|
|
58
|
+
OUTPUT: "No prjct project. Run /p:init first."
|
|
59
|
+
STOP
|
|
60
|
+
|
|
61
|
+
## Step 2: Parse Arguments
|
|
50
62
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
5. Queue sync event
|
|
56
|
-
6. Log to memory
|
|
63
|
+
SET: {laterFlag} = false
|
|
64
|
+
IF args contain "--later":
|
|
65
|
+
SET: {laterFlag} = true
|
|
66
|
+
REMOVE "--later" from description
|
|
57
67
|
|
|
58
|
-
|
|
68
|
+
PARSE description for severity keywords
|
|
69
|
+
SET: {severity} based on keywords found (default: "medium")
|
|
59
70
|
|
|
60
|
-
|
|
61
|
-
|
|
71
|
+
## Step 3: Generate IDs and Timestamps
|
|
72
|
+
|
|
73
|
+
GET timestamp:
|
|
74
|
+
```bash
|
|
75
|
+
bun -e "console.log(new Date().toISOString())" 2>/dev/null || node -e "console.log(new Date().toISOString())"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
GET taskId (UUID):
|
|
79
|
+
```bash
|
|
80
|
+
bun -e "console.log(crypto.randomUUID())" 2>/dev/null || node -e "console.log(require('crypto').randomUUID())"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
SET: {now} = timestamp
|
|
84
|
+
SET: {taskId} = UUID
|
|
85
|
+
SET: {bugDescription} = "🐛 {description}"
|
|
86
|
+
|
|
87
|
+
## Step 4: Update Queue Storage (SOURCE OF TRUTH)
|
|
62
88
|
|
|
63
89
|
### Create bug task
|
|
64
90
|
```json
|
|
65
91
|
{
|
|
66
92
|
"id": "{taskId}",
|
|
67
|
-
"description": "
|
|
93
|
+
"description": "{bugDescription}",
|
|
68
94
|
"type": "bug",
|
|
69
95
|
"priority": "{severity}",
|
|
70
96
|
"section": "active",
|
|
@@ -73,22 +99,81 @@ SET: {now} = GetTimestamp()
|
|
|
73
99
|
```
|
|
74
100
|
|
|
75
101
|
### Update queue.json
|
|
76
|
-
READ: `{queuePath}`
|
|
102
|
+
READ: `{queuePath}` (or create empty { "tasks": [] })
|
|
77
103
|
IF severity is "critical" or "high":
|
|
78
104
|
INSERT at top of tasks array
|
|
79
105
|
ELSE:
|
|
80
106
|
APPEND to tasks array
|
|
107
|
+
SET: lastUpdated = {now}
|
|
81
108
|
WRITE: `{queuePath}`
|
|
82
109
|
|
|
83
|
-
|
|
110
|
+
### Calculate queue position
|
|
111
|
+
{position} = index of task in array + 1
|
|
112
|
+
|
|
113
|
+
## Step 5: Auto-Start Task (unless --later)
|
|
114
|
+
|
|
115
|
+
READ: `{statePath}`
|
|
116
|
+
|
|
117
|
+
IF {laterFlag} == true:
|
|
118
|
+
{autoStarted} = false
|
|
119
|
+
→ Skip to Step 6
|
|
120
|
+
|
|
121
|
+
IF currentTask exists AND status == "active":
|
|
122
|
+
{autoStarted} = false
|
|
123
|
+
{conflictTask} = currentTask.description
|
|
124
|
+
→ Continue to Step 6
|
|
84
125
|
|
|
126
|
+
### No active task - Auto-Start
|
|
127
|
+
GENERATE: {sessionId} = UUID v4
|
|
128
|
+
```bash
|
|
129
|
+
bun -e "console.log(crypto.randomUUID())" 2>/dev/null || node -e "console.log(require('crypto').randomUUID())"
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Update state.json
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"currentTask": {
|
|
136
|
+
"id": "{taskId}",
|
|
137
|
+
"description": "{bugDescription}",
|
|
138
|
+
"status": "active",
|
|
139
|
+
"startedAt": "{now}",
|
|
140
|
+
"sessionId": "{sessionId}",
|
|
141
|
+
"type": "bug",
|
|
142
|
+
"priority": "{severity}"
|
|
143
|
+
},
|
|
144
|
+
"previousTask": {existing previousTask if any},
|
|
145
|
+
"lastUpdated": "{now}"
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
WRITE: `{statePath}`
|
|
149
|
+
|
|
150
|
+
### Generate context/now.md
|
|
151
|
+
```markdown
|
|
152
|
+
# NOW
|
|
153
|
+
|
|
154
|
+
**{bugDescription}**
|
|
155
|
+
|
|
156
|
+
Priority: {severity}
|
|
157
|
+
Started: {now}
|
|
158
|
+
Session: {sessionId}
|
|
159
|
+
```
|
|
160
|
+
WRITE: `{nowContextPath}`
|
|
161
|
+
|
|
162
|
+
{autoStarted} = true
|
|
163
|
+
|
|
164
|
+
## Step 6: Queue Sync Events
|
|
165
|
+
|
|
166
|
+
READ: `{syncPath}` or create empty array
|
|
167
|
+
|
|
168
|
+
### Queue added event
|
|
169
|
+
APPEND:
|
|
85
170
|
```json
|
|
86
171
|
{
|
|
87
172
|
"type": "queue.task_added",
|
|
88
173
|
"path": ["queue"],
|
|
89
174
|
"data": {
|
|
90
175
|
"taskId": "{taskId}",
|
|
91
|
-
"description": "
|
|
176
|
+
"description": "{bugDescription}",
|
|
92
177
|
"priority": "{severity}",
|
|
93
178
|
"type": "bug"
|
|
94
179
|
},
|
|
@@ -97,41 +182,134 @@ WRITE: `{queuePath}`
|
|
|
97
182
|
}
|
|
98
183
|
```
|
|
99
184
|
|
|
100
|
-
|
|
185
|
+
### Task started event (if auto-started)
|
|
186
|
+
IF {autoStarted}:
|
|
187
|
+
APPEND:
|
|
188
|
+
```json
|
|
189
|
+
{
|
|
190
|
+
"type": "task.started",
|
|
191
|
+
"path": ["state"],
|
|
192
|
+
"data": {
|
|
193
|
+
"taskId": "{taskId}",
|
|
194
|
+
"description": "{bugDescription}",
|
|
195
|
+
"sessionId": "{sessionId}"
|
|
196
|
+
},
|
|
197
|
+
"timestamp": "{now}",
|
|
198
|
+
"projectId": "{projectId}"
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
WRITE: `{syncPath}`
|
|
203
|
+
|
|
204
|
+
## Step 7: Log to Memory
|
|
205
|
+
|
|
206
|
+
APPEND to `{memoryPath}`:
|
|
207
|
+
|
|
208
|
+
IF {autoStarted}:
|
|
209
|
+
```json
|
|
210
|
+
{"timestamp":"{now}","action":"bug_reported_started","taskId":"{taskId}","sessionId":"{sessionId}","description":"{bugDescription}","priority":"{severity}"}
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
ELSE:
|
|
214
|
+
```json
|
|
215
|
+
{"timestamp":"{now}","action":"bug_reported","taskId":"{taskId}","description":"{bugDescription}","priority":"{severity}"}
|
|
216
|
+
```
|
|
101
217
|
|
|
218
|
+
## Output
|
|
219
|
+
|
|
220
|
+
### Auto-Started (default)
|
|
221
|
+
```
|
|
222
|
+
🐛 [{severity}] {description}
|
|
223
|
+
|
|
224
|
+
Started working on fix
|
|
225
|
+
Session: {sessionId}
|
|
226
|
+
|
|
227
|
+
/p:done when fixed
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Queue Only (--later flag)
|
|
102
231
|
```
|
|
103
232
|
🐛 [{severity}] {description}
|
|
104
233
|
|
|
105
234
|
Queued at position #{position}
|
|
106
235
|
Priority: {severity}
|
|
107
236
|
|
|
108
|
-
Start: /p:now "
|
|
237
|
+
Start: /p:now "{bugDescription}"
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Already Working on Something
|
|
241
|
+
```
|
|
242
|
+
🐛 [{severity}] {description}
|
|
243
|
+
|
|
244
|
+
Queued at position #{position}
|
|
245
|
+
Priority: {severity}
|
|
246
|
+
|
|
247
|
+
⚠️ Already working on: {conflictTask}
|
|
248
|
+
Complete current task first or use /p:pause
|
|
249
|
+
|
|
250
|
+
Start later: /p:now "{bugDescription}"
|
|
109
251
|
```
|
|
110
252
|
|
|
111
253
|
## Examples
|
|
112
254
|
|
|
113
|
-
###
|
|
255
|
+
### Example 1: Auto-Start Bug Fix (default)
|
|
256
|
+
```
|
|
257
|
+
Input: /p:bug login form not validating
|
|
258
|
+
|
|
259
|
+
Output:
|
|
260
|
+
🐛 [medium] login form not validating
|
|
261
|
+
|
|
262
|
+
Started working on fix
|
|
263
|
+
Session: a1b2c3d4-...
|
|
264
|
+
|
|
265
|
+
/p:done when fixed
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Example 2: Queue for Later
|
|
269
|
+
```
|
|
270
|
+
Input: /p:bug minor typo in footer --later
|
|
271
|
+
|
|
272
|
+
Output:
|
|
273
|
+
🐛 [low] minor typo in footer
|
|
274
|
+
|
|
275
|
+
Queued at position #5
|
|
276
|
+
Priority: low
|
|
277
|
+
|
|
278
|
+
Start: /p:now "🐛 minor typo in footer"
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### Example 3: Critical Bug (Auto-Start)
|
|
114
282
|
```
|
|
115
283
|
Input: /p:bug production server is down
|
|
116
284
|
|
|
117
285
|
Output:
|
|
118
286
|
🐛 [critical] production server is down
|
|
119
287
|
|
|
120
|
-
|
|
121
|
-
|
|
288
|
+
Started working on fix
|
|
289
|
+
Session: x9y8z7w6-...
|
|
122
290
|
|
|
123
|
-
|
|
291
|
+
/p:done when fixed
|
|
124
292
|
```
|
|
125
293
|
|
|
126
|
-
###
|
|
294
|
+
### Example 4: Already Working on Something
|
|
127
295
|
```
|
|
128
|
-
Input: /p:bug
|
|
296
|
+
Input: /p:bug payment not processing
|
|
129
297
|
|
|
130
298
|
Output:
|
|
131
|
-
🐛 [
|
|
299
|
+
🐛 [high] payment not processing
|
|
300
|
+
|
|
301
|
+
Queued at position #1
|
|
302
|
+
Priority: high
|
|
132
303
|
|
|
133
|
-
|
|
134
|
-
|
|
304
|
+
⚠️ Already working on: implement auth flow
|
|
305
|
+
Complete current task first or use /p:pause
|
|
135
306
|
|
|
136
|
-
Start: /p:now "🐛
|
|
307
|
+
Start later: /p:now "🐛 payment not processing"
|
|
137
308
|
```
|
|
309
|
+
|
|
310
|
+
## Error Handling
|
|
311
|
+
|
|
312
|
+
| Error | Response | Action |
|
|
313
|
+
|-------|----------|--------|
|
|
314
|
+
| No project | "No prjct project" | STOP |
|
|
315
|
+
| Write fails | Log warning | CONTINUE |
|