popilot 0.4.0 → 0.5.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/package.json
CHANGED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# /poc — Idea to Working PoC
|
|
2
|
+
|
|
3
|
+
Build a working proof-of-concept from a one-line idea.
|
|
4
|
+
No PO knowledge needed. No complex setup. Just describe what you want.
|
|
5
|
+
|
|
6
|
+
## How it works
|
|
7
|
+
|
|
8
|
+
This skill chains 4 phases automatically:
|
|
9
|
+
1. **Scope** — Narrow the idea to 3 buildable features
|
|
10
|
+
2. **Spec** — Write implementation-ready stories with ACs
|
|
11
|
+
3. **Build** — Generate working Vue 3 code in spec-site
|
|
12
|
+
4. **Verify** — Type-check, build, and launch preview
|
|
13
|
+
|
|
14
|
+
## Execution
|
|
15
|
+
|
|
16
|
+
### If `.context/poc/pipeline.yaml` does NOT exist:
|
|
17
|
+
|
|
18
|
+
Create it:
|
|
19
|
+
|
|
20
|
+
```yaml
|
|
21
|
+
idea: "$ARGUMENTS"
|
|
22
|
+
created_at: "[today's date]"
|
|
23
|
+
status: scoping
|
|
24
|
+
tech_stack: vue
|
|
25
|
+
|
|
26
|
+
phases:
|
|
27
|
+
scope:
|
|
28
|
+
status: in-progress
|
|
29
|
+
output: scope.md
|
|
30
|
+
spec:
|
|
31
|
+
status: pending
|
|
32
|
+
output: stories/
|
|
33
|
+
build:
|
|
34
|
+
status: pending
|
|
35
|
+
total_stories: 0
|
|
36
|
+
current_story: 0
|
|
37
|
+
output: spec-site/src/pages/poc/
|
|
38
|
+
verify:
|
|
39
|
+
status: pending
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Then read `.context/poc/_skills/scope.md` and execute Phase 1.
|
|
43
|
+
|
|
44
|
+
### If `.context/poc/pipeline.yaml` EXISTS:
|
|
45
|
+
|
|
46
|
+
Read it and resume from the current status:
|
|
47
|
+
|
|
48
|
+
| `status` value | Action |
|
|
49
|
+
|----------------|--------|
|
|
50
|
+
| `scoping` | Read and execute `_skills/scope.md` |
|
|
51
|
+
| `speccing` | Read and execute `_skills/spec.md` |
|
|
52
|
+
| `building` | Read and execute `_skills/build.md` (resume from `current_story`) |
|
|
53
|
+
| `verifying` | Read and execute `_skills/verify.md` |
|
|
54
|
+
| `done` | Report: "PoC already complete. Delete `.context/poc/pipeline.yaml` to start fresh." |
|
|
55
|
+
|
|
56
|
+
### Resume behavior
|
|
57
|
+
|
|
58
|
+
If the user runs `/poc` with no arguments and pipeline.yaml exists,
|
|
59
|
+
resume from where it left off. This makes the pipeline crash-safe.
|
|
60
|
+
|
|
61
|
+
If the user runs `/poc [new idea]` and pipeline.yaml exists for a
|
|
62
|
+
different idea, ask: "A PoC for '[old idea]' is in progress. Replace it?"
|
|
63
|
+
|
|
64
|
+
## Important
|
|
65
|
+
|
|
66
|
+
- Do NOT stop between phases. Run all 4 phases in one session.
|
|
67
|
+
- Do NOT ask the user for confirmation between phases. Be proactive.
|
|
68
|
+
- If a phase fails, attempt to fix it. Only stop if unrecoverable.
|
|
69
|
+
- All generated code must compile (`vue-tsc --noEmit` pass).
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Phase 3: Build
|
|
2
|
+
|
|
3
|
+
You are implementing PoC stories as working Vue 3 code inside the spec-site scaffold.
|
|
4
|
+
|
|
5
|
+
## Input
|
|
6
|
+
|
|
7
|
+
- Read `.context/poc/pipeline.yaml` to find `current_story`
|
|
8
|
+
- Read the corresponding `.context/poc/stories/S-{NN}.md`
|
|
9
|
+
- Read `.context/poc/scope.md` for context (mock data strategy)
|
|
10
|
+
|
|
11
|
+
## Target
|
|
12
|
+
|
|
13
|
+
All generated code goes into `spec-site/src/pages/poc/`.
|
|
14
|
+
Shared composables go into `spec-site/src/composables/poc/`.
|
|
15
|
+
|
|
16
|
+
## Rules
|
|
17
|
+
|
|
18
|
+
### Code Style
|
|
19
|
+
1. **Vue 3 `<script setup lang="ts">`** — no Options API.
|
|
20
|
+
2. **Composition API** with `ref`, `computed`, `watch`.
|
|
21
|
+
3. **Scoped CSS** in every component. Use CSS variables from `spec-site/src/styles/variables.css`.
|
|
22
|
+
4. **No external dependencies**. Only use what's already in spec-site's package.json (vue, vue-router, marked).
|
|
23
|
+
5. **TypeScript strict**. No `any`. Define interfaces from the story's Data Model.
|
|
24
|
+
|
|
25
|
+
### Data
|
|
26
|
+
6. **Mock data only**. Use `ref()` with hardcoded initial data or localStorage.
|
|
27
|
+
7. If the story says localStorage, use a consistent key prefix: `poc-{feature}-`.
|
|
28
|
+
|
|
29
|
+
### Structure
|
|
30
|
+
8. **One page component** per story that composes smaller components.
|
|
31
|
+
9. **One composable** per story for state management.
|
|
32
|
+
10. **Register route** in `spec-site/src/router.ts` under `/poc/` prefix.
|
|
33
|
+
|
|
34
|
+
### Quality
|
|
35
|
+
11. Every AC must be verifiable by viewing the page and interacting with it.
|
|
36
|
+
12. Transitions/animations: use simple CSS transitions only. No animation libraries.
|
|
37
|
+
13. Responsive: must look acceptable at 375px and 1280px widths.
|
|
38
|
+
|
|
39
|
+
## Implementation Steps (per story)
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
1. Create composable: src/composables/poc/use{Feature}Store.ts
|
|
43
|
+
- Define interfaces from Data Model
|
|
44
|
+
- Implement reactive state + actions
|
|
45
|
+
- Add localStorage persistence if specified
|
|
46
|
+
|
|
47
|
+
2. Create components: src/pages/poc/{Component}.vue
|
|
48
|
+
- Follow UI Components table from story
|
|
49
|
+
- Import and use the composable
|
|
50
|
+
- Implement all AC interactions
|
|
51
|
+
|
|
52
|
+
3. Create page: src/pages/poc/{Feature}Page.vue
|
|
53
|
+
- Compose all components
|
|
54
|
+
- Handle layout
|
|
55
|
+
|
|
56
|
+
4. Register route in src/router.ts
|
|
57
|
+
- Lazy import: () => import('@/pages/poc/{Feature}Page.vue')
|
|
58
|
+
- Path: /poc/{path} as specified in story
|
|
59
|
+
|
|
60
|
+
5. Update pipeline.yaml
|
|
61
|
+
- Increment current_story
|
|
62
|
+
- If all stories done: set phases.build.status = done
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## After ALL stories are built
|
|
66
|
+
|
|
67
|
+
Update `.context/poc/pipeline.yaml`:
|
|
68
|
+
- Set `phases.build.status: done`
|
|
69
|
+
- Set `status: verifying`
|
|
70
|
+
|
|
71
|
+
Then immediately proceed to Phase 4 (read `.context/poc/_skills/verify.md`).
|
|
72
|
+
|
|
73
|
+
## On build error
|
|
74
|
+
|
|
75
|
+
If `vue-tsc` or `vite build` fails:
|
|
76
|
+
1. Read the error
|
|
77
|
+
2. Fix it
|
|
78
|
+
3. Retry (max 3 attempts per story)
|
|
79
|
+
4. If still failing, add `error: "[message]"` to pipeline.yaml under that story and move on
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Phase 1: Scope
|
|
2
|
+
|
|
3
|
+
You are scoping a PoC (Proof of Concept) from a one-line idea.
|
|
4
|
+
Your job is to produce a tight, buildable scope — NOT a full PRD.
|
|
5
|
+
|
|
6
|
+
## Input
|
|
7
|
+
|
|
8
|
+
Read the `idea` field from `.context/poc/pipeline.yaml`.
|
|
9
|
+
|
|
10
|
+
## Rules
|
|
11
|
+
|
|
12
|
+
1. **Max 3 features**. A PoC proves a concept, not ships a product.
|
|
13
|
+
2. **No real backends**. All data is mock/local. No API keys, no databases.
|
|
14
|
+
3. **Name concrete UI elements**. "Dashboard" is vague. "3-column kanban board with drag-and-drop cards" is buildable.
|
|
15
|
+
4. **Explicitly list Out of Scope** to prevent creep.
|
|
16
|
+
|
|
17
|
+
## Output
|
|
18
|
+
|
|
19
|
+
Write `.context/poc/scope.md` in this exact format:
|
|
20
|
+
|
|
21
|
+
```markdown
|
|
22
|
+
# PoC Scope
|
|
23
|
+
|
|
24
|
+
## Problem
|
|
25
|
+
[1-2 sentences: what pain point does this solve?]
|
|
26
|
+
|
|
27
|
+
## Target User
|
|
28
|
+
[1 sentence: who is this for?]
|
|
29
|
+
|
|
30
|
+
## Core Features
|
|
31
|
+
1. **[Feature Name]** — [One sentence description with specific UI element]
|
|
32
|
+
2. **[Feature Name]** — [One sentence description with specific UI element]
|
|
33
|
+
3. **[Feature Name]** — [One sentence description with specific UI element]
|
|
34
|
+
|
|
35
|
+
## Mock Data Strategy
|
|
36
|
+
[What fake data will be used? localStorage? Hardcoded JSON? In-memory state?]
|
|
37
|
+
|
|
38
|
+
## Out of Scope
|
|
39
|
+
- [Thing that might seem needed but isn't for PoC]
|
|
40
|
+
- [Another thing]
|
|
41
|
+
- [Another thing]
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## After completion
|
|
45
|
+
|
|
46
|
+
Update `.context/poc/pipeline.yaml`:
|
|
47
|
+
- Set `phases.scope.status: done`
|
|
48
|
+
- Set `status: speccing`
|
|
49
|
+
|
|
50
|
+
Then immediately proceed to Phase 2 (read `.context/poc/_skills/spec.md`).
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Phase 2: Spec
|
|
2
|
+
|
|
3
|
+
You are writing implementation-ready story specs from a PoC scope.
|
|
4
|
+
Each story maps 1:1 to a Core Feature in scope.md.
|
|
5
|
+
|
|
6
|
+
## Input
|
|
7
|
+
|
|
8
|
+
Read `.context/poc/scope.md` (Phase 1 output).
|
|
9
|
+
|
|
10
|
+
## Rules
|
|
11
|
+
|
|
12
|
+
1. **One story per feature**. No splitting. PoC stories are small by design.
|
|
13
|
+
2. **AC must be testable by eyeball**. "Given X, When Y, Then Z is visible on screen."
|
|
14
|
+
3. **UI Components section is mandatory**. List every .vue file that will be created.
|
|
15
|
+
4. **Data Model section is mandatory**. Define TypeScript interfaces for all state.
|
|
16
|
+
5. **Route section is mandatory**. Exact path for vue-router.
|
|
17
|
+
6. Each story must be self-contained — implementable without other stories being done first.
|
|
18
|
+
|
|
19
|
+
## Output
|
|
20
|
+
|
|
21
|
+
For each Core Feature, write `.context/poc/stories/S-{NN}.md`:
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
# S-{NN}: [Feature Name]
|
|
25
|
+
|
|
26
|
+
## AC (Acceptance Criteria)
|
|
27
|
+
|
|
28
|
+
1. Given [precondition]
|
|
29
|
+
When [user action]
|
|
30
|
+
Then [visible result]
|
|
31
|
+
|
|
32
|
+
2. Given [precondition]
|
|
33
|
+
When [user action]
|
|
34
|
+
Then [visible result]
|
|
35
|
+
|
|
36
|
+
3. Given [precondition]
|
|
37
|
+
When [user action]
|
|
38
|
+
Then [visible result]
|
|
39
|
+
|
|
40
|
+
## UI Components
|
|
41
|
+
|
|
42
|
+
| Component | File | Description |
|
|
43
|
+
|-----------|------|-------------|
|
|
44
|
+
| [Name] | `src/pages/poc/[Name].vue` | [What it renders] |
|
|
45
|
+
| [Name] | `src/pages/poc/[Name].vue` | [What it renders] |
|
|
46
|
+
|
|
47
|
+
## Data Model
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
interface [ModelName] {
|
|
51
|
+
id: string
|
|
52
|
+
// ...fields
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## State Management
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
// Describe the composable: useXxxStore
|
|
60
|
+
// - What reactive state it holds
|
|
61
|
+
// - What actions it exposes
|
|
62
|
+
// - Where data persists (localStorage key, in-memory, etc.)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Route
|
|
66
|
+
|
|
67
|
+
| Path | Component | Description |
|
|
68
|
+
|------|-----------|-------------|
|
|
69
|
+
| `/poc/[path]` | `[Component].vue` | [What this page shows] |
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## After completion
|
|
73
|
+
|
|
74
|
+
Update `.context/poc/pipeline.yaml`:
|
|
75
|
+
- Set `phases.spec.status: done`
|
|
76
|
+
- Set `status: building`
|
|
77
|
+
- Set `phases.build.total_stories: [count]`
|
|
78
|
+
- Set `phases.build.current_story: 1`
|
|
79
|
+
|
|
80
|
+
Then immediately proceed to Phase 3 (read `.context/poc/_skills/build.md`).
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Phase 4: Verify
|
|
2
|
+
|
|
3
|
+
You are verifying the PoC builds and runs correctly.
|
|
4
|
+
|
|
5
|
+
## Steps
|
|
6
|
+
|
|
7
|
+
### 1. Type Check
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
cd spec-site && npx vue-tsc --noEmit
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
If errors exist, fix them. Max 3 retry cycles.
|
|
14
|
+
|
|
15
|
+
### 2. Build
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
cd spec-site && npx vite build
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
If build fails, fix and retry. Max 3 cycles.
|
|
22
|
+
|
|
23
|
+
### 3. Add PoC Entry Point
|
|
24
|
+
|
|
25
|
+
If not already present, add a link to the PoC pages from the spec-site index.
|
|
26
|
+
Add a simple navigation component at `src/pages/poc/PocIndex.vue` that lists
|
|
27
|
+
all PoC routes with links.
|
|
28
|
+
|
|
29
|
+
Register `/poc` route in router.ts pointing to PocIndex.vue.
|
|
30
|
+
|
|
31
|
+
### 4. Launch Preview
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
cd spec-site && npx vite preview &
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 5. Report
|
|
38
|
+
|
|
39
|
+
Output to the user:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
PoC complete!
|
|
43
|
+
|
|
44
|
+
Routes:
|
|
45
|
+
- /poc — PoC Index
|
|
46
|
+
- /poc/[route1] — [Feature 1 name]
|
|
47
|
+
- /poc/[route2] — [Feature 2 name]
|
|
48
|
+
- /poc/[route3] — [Feature 3 name]
|
|
49
|
+
|
|
50
|
+
Preview: http://localhost:4173/poc
|
|
51
|
+
|
|
52
|
+
Stories built: N/N
|
|
53
|
+
Build status: success | partial (list failures)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## After completion
|
|
57
|
+
|
|
58
|
+
Update `.context/poc/pipeline.yaml`:
|
|
59
|
+
- Set `phases.verify.status: done`
|
|
60
|
+
- Set `status: done`
|