@aslomon/effectum 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/README.md +633 -0
- package/bin/install.js +652 -0
- package/package.json +29 -0
- package/system/README.md +118 -0
- package/system/commands/build-fix.md +89 -0
- package/system/commands/cancel-ralph.md +90 -0
- package/system/commands/checkpoint.md +63 -0
- package/system/commands/code-review.md +120 -0
- package/system/commands/e2e.md +92 -0
- package/system/commands/plan.md +111 -0
- package/system/commands/ralph-loop.md +163 -0
- package/system/commands/refactor-clean.md +104 -0
- package/system/commands/tdd.md +84 -0
- package/system/commands/verify.md +71 -0
- package/system/stacks/generic.md +96 -0
- package/system/stacks/nextjs-supabase.md +114 -0
- package/system/stacks/python-fastapi.md +140 -0
- package/system/stacks/swift-ios.md +136 -0
- package/system/templates/AUTONOMOUS-WORKFLOW.md +1368 -0
- package/system/templates/CLAUDE.md.tmpl +141 -0
- package/system/templates/guardrails.md.tmpl +39 -0
- package/system/templates/settings.json.tmpl +201 -0
- package/workshop/knowledge/01-prd-template.md +275 -0
- package/workshop/knowledge/02-questioning-framework.md +209 -0
- package/workshop/knowledge/03-decomposition-guide.md +234 -0
- package/workshop/knowledge/04-examples.md +435 -0
- package/workshop/knowledge/05-quality-checklist.md +166 -0
- package/workshop/knowledge/06-network-map-guide.md +413 -0
- package/workshop/knowledge/07-prompt-templates.md +315 -0
- package/workshop/knowledge/08-workflow-modes.md +198 -0
- package/workshop/projects/_example-project/PROJECT.md +33 -0
- package/workshop/projects/_example-project/notes/decisions.md +15 -0
- package/workshop/projects/_example-project/notes/discovery-log.md +9 -0
- package/workshop/templates/PROJECT.md +25 -0
- package/workshop/templates/network-map.mmd +13 -0
- package/workshop/templates/prd.md +133 -0
- package/workshop/templates/requirements-map.md +48 -0
- package/workshop/templates/shared-contracts.md +89 -0
- package/workshop/templates/vision.md +66 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# PRD: [Feature Name]
|
|
2
|
+
|
|
3
|
+
## Problem
|
|
4
|
+
|
|
5
|
+
[2-4 sentences. What is the problem? Why does it need to be solved? Who is affected? Include business context.]
|
|
6
|
+
|
|
7
|
+
## Goal
|
|
8
|
+
|
|
9
|
+
[1-3 sentences. What should work when this is done? Include measurable success criteria.]
|
|
10
|
+
|
|
11
|
+
## User Stories
|
|
12
|
+
|
|
13
|
+
- As a [role], I want to [action], so that [benefit]
|
|
14
|
+
- As a [role], I want to [action], so that [benefit]
|
|
15
|
+
- As a [role], I want to [action], so that [benefit]
|
|
16
|
+
|
|
17
|
+
## Acceptance Criteria
|
|
18
|
+
|
|
19
|
+
- [ ] AC1: [Concrete, testable criterion]
|
|
20
|
+
- [ ] AC2: [Concrete, testable criterion]
|
|
21
|
+
- [ ] AC3: Given [precondition], When [action], Then [expected result]
|
|
22
|
+
- [ ] AC4: Given [precondition], When [action], Then [expected result]
|
|
23
|
+
|
|
24
|
+
## Scope
|
|
25
|
+
|
|
26
|
+
### In Scope
|
|
27
|
+
|
|
28
|
+
- [Feature/component being built]
|
|
29
|
+
- [Feature/component being built]
|
|
30
|
+
|
|
31
|
+
### Out of Scope
|
|
32
|
+
|
|
33
|
+
- [Explicit exclusion]
|
|
34
|
+
- [Explicit exclusion]
|
|
35
|
+
|
|
36
|
+
### Non-Goals
|
|
37
|
+
|
|
38
|
+
- [Something someone might expect, but is intentionally excluded]
|
|
39
|
+
|
|
40
|
+
## Data Model
|
|
41
|
+
|
|
42
|
+
### [table_name]
|
|
43
|
+
|
|
44
|
+
| Column | Type | Constraints | Description |
|
|
45
|
+
| ---------- | ----------- | ------------------------------- | --------------------- |
|
|
46
|
+
| id | uuid | PK, default gen_random_uuid() | Primary key |
|
|
47
|
+
| org_id | uuid | FK → organizations.id, NOT NULL | Tenant isolation |
|
|
48
|
+
| [field] | [type] | [constraints] | [description] |
|
|
49
|
+
| created_at | timestamptz | NOT NULL, default now() | Creation timestamp |
|
|
50
|
+
| updated_at | timestamptz | NOT NULL, default now() | Last update timestamp |
|
|
51
|
+
|
|
52
|
+
### Relations
|
|
53
|
+
|
|
54
|
+
- [table_a] belongs to [table_b] via [foreign_key]
|
|
55
|
+
|
|
56
|
+
### RLS Policies
|
|
57
|
+
|
|
58
|
+
- [table_name]: [policy description]
|
|
59
|
+
|
|
60
|
+
### Indexes
|
|
61
|
+
|
|
62
|
+
- [table_name]: [index description]
|
|
63
|
+
|
|
64
|
+
## API Design
|
|
65
|
+
|
|
66
|
+
### [HTTP_METHOD] /api/[resource]
|
|
67
|
+
|
|
68
|
+
**Purpose:** [What this endpoint does]
|
|
69
|
+
|
|
70
|
+
**Authentication:** Required / Public
|
|
71
|
+
|
|
72
|
+
**Request:**
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"field": "type — description"
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Response (200):**
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"data": {}
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Error Responses:**
|
|
89
|
+
|
|
90
|
+
- 400: [When and why]
|
|
91
|
+
- 401: [When and why]
|
|
92
|
+
- 403: [When and why]
|
|
93
|
+
- 404: [When and why]
|
|
94
|
+
|
|
95
|
+
## UI/UX
|
|
96
|
+
|
|
97
|
+
- [Layout description or Figma link]
|
|
98
|
+
- [Responsive requirements]
|
|
99
|
+
- [Key interaction patterns]
|
|
100
|
+
- [Empty states, loading states, error states]
|
|
101
|
+
|
|
102
|
+
## Constraints
|
|
103
|
+
|
|
104
|
+
- Performance: [requirements]
|
|
105
|
+
- Dependencies: [external services, existing features]
|
|
106
|
+
- Security: [specific requirements]
|
|
107
|
+
|
|
108
|
+
## Quality Gates
|
|
109
|
+
|
|
110
|
+
Automated checks that MUST pass before the feature is considered done:
|
|
111
|
+
|
|
112
|
+
- Build: `pnpm build` — 0 errors
|
|
113
|
+
- Types: `tsc --noEmit` — 0 errors
|
|
114
|
+
- Tests: `pnpm vitest run` — all pass, 80%+ coverage on new code
|
|
115
|
+
- Lint: `pnpm lint` — 0 errors, 0 warnings
|
|
116
|
+
- E2E: `npx playwright test` — all pass (if applicable)
|
|
117
|
+
- Security: `/code-review` — no OWASP vulnerabilities
|
|
118
|
+
- RLS: Supabase security advisor — no warnings (if DB changes)
|
|
119
|
+
- No Debug Logs: 0 `console.log` in production code
|
|
120
|
+
- Type Safety: no `any`, no `as` casts in new code
|
|
121
|
+
- File Size: no file exceeds 300 lines
|
|
122
|
+
- Custom: [project-specific checks]
|
|
123
|
+
|
|
124
|
+
## Autonomy Rules
|
|
125
|
+
|
|
126
|
+
- Design: [Follow DESIGN.md / use best judgment / ask]
|
|
127
|
+
- Libraries: [use existing dependencies only / free to add]
|
|
128
|
+
- Architecture: [follow existing patterns in src/lib/ / free to decide]
|
|
129
|
+
- On ambiguity: [decide autonomously and document / stop and ask]
|
|
130
|
+
|
|
131
|
+
## Completion Promise
|
|
132
|
+
|
|
133
|
+
"[All acceptance criteria met, build passes, all tests pass, 0 lint errors, no console.log in production code]"
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Requirements Map: [Project Name]
|
|
2
|
+
|
|
3
|
+
## v1 (Must-Have)
|
|
4
|
+
|
|
5
|
+
| ID | Requirement | PRD | Priority | Status |
|
|
6
|
+
| ----- | ------------------------- | --------- | -------- | ------- |
|
|
7
|
+
| R-001 | [Requirement description] | [PRD-NNN] | P0 | planned |
|
|
8
|
+
| R-002 | [Requirement description] | [PRD-NNN] | P0 | planned |
|
|
9
|
+
| R-003 | [Requirement description] | [PRD-NNN] | P1 | planned |
|
|
10
|
+
| R-004 | [Requirement description] | [PRD-NNN] | P1 | planned |
|
|
11
|
+
|
|
12
|
+
## v2 (Nice-to-Have)
|
|
13
|
+
|
|
14
|
+
| ID | Requirement | PRD | Priority | Status |
|
|
15
|
+
| ----- | ------------------------- | --------- | -------- | ------- |
|
|
16
|
+
| R-010 | [Requirement description] | [PRD-NNN] | P2 | planned |
|
|
17
|
+
| R-011 | [Requirement description] | [PRD-NNN] | P2 | planned |
|
|
18
|
+
|
|
19
|
+
## v3 (Future)
|
|
20
|
+
|
|
21
|
+
| ID | Requirement | PRD | Priority | Status |
|
|
22
|
+
| ----- | ------------------------- | --------- | -------- | ------- |
|
|
23
|
+
| R-020 | [Requirement description] | [PRD-NNN] | P3 | planned |
|
|
24
|
+
|
|
25
|
+
## Out of Scope
|
|
26
|
+
|
|
27
|
+
- [Explicit exclusion 1]
|
|
28
|
+
- [Explicit exclusion 2]
|
|
29
|
+
- [Explicit exclusion 3]
|
|
30
|
+
|
|
31
|
+
## Priority Legend
|
|
32
|
+
|
|
33
|
+
| Priority | Meaning |
|
|
34
|
+
| -------- | ------------------------------------------- |
|
|
35
|
+
| P0 | Must-have for launch. Blocks release. |
|
|
36
|
+
| P1 | Should-have. Important but not blocking. |
|
|
37
|
+
| P2 | Nice-to-have. Defer if time-constrained. |
|
|
38
|
+
| P3 | Future consideration. Not in current scope. |
|
|
39
|
+
|
|
40
|
+
## Status Legend
|
|
41
|
+
|
|
42
|
+
| Status | Meaning |
|
|
43
|
+
| ----------- | --------------------------- |
|
|
44
|
+
| planned | Not yet started |
|
|
45
|
+
| in-progress | Currently being implemented |
|
|
46
|
+
| done | Implemented and verified |
|
|
47
|
+
| deferred | Moved to a later version |
|
|
48
|
+
| cut | Removed from scope |
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Shared Contracts: [Project Name]
|
|
2
|
+
|
|
3
|
+
Defines shared data models and API contracts between PRDs. Each model/endpoint has a single owner PRD. Other PRDs consume but do not modify.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Shared Data Models
|
|
8
|
+
|
|
9
|
+
### [Model Name] (owned by PRD-[NNN], consumed by [list])
|
|
10
|
+
|
|
11
|
+
| Field | Type | Used By | Description |
|
|
12
|
+
| ---------- | ----------- | ---------- | --------------------- |
|
|
13
|
+
| id | uuid | all | Primary key |
|
|
14
|
+
| org_id | uuid | all | Tenant isolation |
|
|
15
|
+
| [field] | [type] | [PRD list] | [description] |
|
|
16
|
+
| created_at | timestamptz | all | Creation timestamp |
|
|
17
|
+
| updated_at | timestamptz | all | Last update timestamp |
|
|
18
|
+
|
|
19
|
+
**Rules:**
|
|
20
|
+
|
|
21
|
+
- Only PRD-[NNN] may add columns or modify the table schema
|
|
22
|
+
- Consumers may read via RLS-protected queries
|
|
23
|
+
- Schema changes require updating this contract and notifying consumers
|
|
24
|
+
|
|
25
|
+
### [Model Name] (owned by PRD-[NNN], consumed by [list])
|
|
26
|
+
|
|
27
|
+
| Field | Type | Used By | Description |
|
|
28
|
+
| ------- | ------ | ---------- | ------------- |
|
|
29
|
+
| id | uuid | all | Primary key |
|
|
30
|
+
| [field] | [type] | [PRD list] | [description] |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Shared API Contracts
|
|
35
|
+
|
|
36
|
+
### [HTTP_METHOD] /api/[resource]
|
|
37
|
+
|
|
38
|
+
- **Owner:** PRD-[NNN]
|
|
39
|
+
- **Consumers:** PRD-[NNN], PRD-[NNN]
|
|
40
|
+
- **Authentication:** Required
|
|
41
|
+
- **Purpose:** [What this endpoint provides]
|
|
42
|
+
|
|
43
|
+
**Response shape:**
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"data": {
|
|
48
|
+
"id": "uuid",
|
|
49
|
+
"[field]": "[type]"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Contract rules:**
|
|
55
|
+
|
|
56
|
+
- Response shape must not change without updating this document
|
|
57
|
+
- New optional fields may be added (backward compatible)
|
|
58
|
+
- Required fields must not be removed or renamed
|
|
59
|
+
|
|
60
|
+
### [HTTP_METHOD] /api/[resource]
|
|
61
|
+
|
|
62
|
+
- **Owner:** PRD-[NNN]
|
|
63
|
+
- **Consumers:** PRD-[NNN]
|
|
64
|
+
- **Purpose:** [What this endpoint provides]
|
|
65
|
+
|
|
66
|
+
**Response shape:**
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"data": {}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Shared Events (if using Realtime/Webhooks)
|
|
77
|
+
|
|
78
|
+
| Event Name | Producer | Consumers | Payload |
|
|
79
|
+
| ------------ | --------- | -------------------- | ------------------ |
|
|
80
|
+
| [event.name] | PRD-[NNN] | PRD-[NNN], PRD-[NNN] | `{ id, [fields] }` |
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Contract Change Process
|
|
85
|
+
|
|
86
|
+
1. Owner PRD proposes change in this document
|
|
87
|
+
2. All consumer PRDs are listed and reviewed
|
|
88
|
+
3. Breaking changes require version bump or migration plan
|
|
89
|
+
4. Non-breaking additions (new optional fields) can be made directly
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Project Vision: [Project Name]
|
|
2
|
+
|
|
3
|
+
## Problem
|
|
4
|
+
|
|
5
|
+
[2-3 sentences: What problem are we solving? Who is affected?]
|
|
6
|
+
|
|
7
|
+
## Goal
|
|
8
|
+
|
|
9
|
+
[1-2 sentences: What does success look like? How will we measure it?]
|
|
10
|
+
|
|
11
|
+
## Target Users
|
|
12
|
+
|
|
13
|
+
- **[Persona 1]:** [role, goal, context]
|
|
14
|
+
- **[Persona 2]:** [role, goal, context]
|
|
15
|
+
- **[Persona 3]:** [role, goal, context]
|
|
16
|
+
|
|
17
|
+
## Tech Stack
|
|
18
|
+
|
|
19
|
+
- Frontend: [framework, UI library]
|
|
20
|
+
- Backend: [framework/platform]
|
|
21
|
+
- Database: [database]
|
|
22
|
+
- Auth: [provider]
|
|
23
|
+
- Hosting: [platform]
|
|
24
|
+
- Other: [additional services]
|
|
25
|
+
|
|
26
|
+
## Constraints
|
|
27
|
+
|
|
28
|
+
- [Timeline constraints]
|
|
29
|
+
- [Budget constraints]
|
|
30
|
+
- [Regulatory/compliance requirements]
|
|
31
|
+
- [Technical constraints]
|
|
32
|
+
|
|
33
|
+
## PRD Overview
|
|
34
|
+
|
|
35
|
+
| PRD | Name | Description | Dependencies |
|
|
36
|
+
| --- | ------ | ------------------- | ------------ |
|
|
37
|
+
| 001 | [Name] | [Brief description] | None |
|
|
38
|
+
| 002 | [Name] | [Brief description] | 001 |
|
|
39
|
+
| 003 | [Name] | [Brief description] | 001, 002 |
|
|
40
|
+
| 004 | [Name] | [Brief description] | 001 |
|
|
41
|
+
|
|
42
|
+
## Dependency Graph
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
001-[Name] ──► 002-[Name] ──► 003-[Name]
|
|
46
|
+
│
|
|
47
|
+
└──────────────────────► 004-[Name]
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Roadmap
|
|
51
|
+
|
|
52
|
+
| Phase | PRDs | Milestone | Estimated Effort |
|
|
53
|
+
| ----- | -------- | --------------------------------- | ---------------- |
|
|
54
|
+
| 1 | 001 | [What is usable after this phase] | [size] |
|
|
55
|
+
| 2 | 002, 003 | [What is usable after this phase] | [size] |
|
|
56
|
+
| 3 | 004 | [What is usable after this phase] | [size] |
|
|
57
|
+
|
|
58
|
+
## Non-Goals
|
|
59
|
+
|
|
60
|
+
- [What we are explicitly NOT building]
|
|
61
|
+
- [What someone might expect but is excluded]
|
|
62
|
+
|
|
63
|
+
## Open Questions
|
|
64
|
+
|
|
65
|
+
- [Question 1]
|
|
66
|
+
- [Question 2]
|