@thiagodiogo/pscode 2.0.0 → 2.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 +22 -22
- package/README.md +142 -142
- package/bin/pscode.js +4 -4
- package/dist/commands/feedback.js +4 -4
- package/dist/commands/schema.js +60 -60
- package/dist/core/collections/initiatives/templates.js +57 -57
- package/dist/core/command-generation/adapters/claude.js +8 -8
- package/dist/core/command-generation/adapters/codex.js +6 -6
- package/dist/core/command-generation/adapters/cursor.js +8 -8
- package/dist/core/command-generation/adapters/gemini.js +5 -5
- package/dist/core/command-generation/adapters/github-copilot.js +5 -5
- package/dist/core/completions/generators/bash-generator.js +41 -41
- package/dist/core/completions/generators/fish-generator.js +7 -7
- package/dist/core/completions/generators/powershell-generator.js +29 -29
- package/dist/core/completions/generators/zsh-generator.js +33 -33
- package/dist/core/completions/templates/bash-templates.js +24 -24
- package/dist/core/completions/templates/fish-templates.js +38 -38
- package/dist/core/completions/templates/powershell-templates.js +28 -28
- package/dist/core/completions/templates/zsh-templates.js +39 -39
- package/dist/core/profiles.d.ts +1 -1
- package/dist/core/profiles.js +1 -1
- package/dist/core/templates/workflows/apply-change.js +264 -264
- package/dist/core/templates/workflows/archive-change.js +204 -204
- package/dist/core/templates/workflows/bulk-archive-change.js +472 -472
- package/dist/core/templates/workflows/continue-change.js +214 -214
- package/dist/core/templates/workflows/explore.js +735 -735
- package/dist/core/templates/workflows/feedback.js +97 -97
- package/dist/core/templates/workflows/ff-change.js +180 -180
- package/dist/core/templates/workflows/new-change.js +123 -123
- package/dist/core/templates/workflows/onboard.js +584 -584
- package/dist/core/templates/workflows/propose.js +324 -324
- package/dist/core/templates/workflows/trello-draft.js +194 -194
- package/dist/core/templates/workflows/trello-next-step-comment.d.ts +26 -0
- package/dist/core/templates/workflows/trello-next-step-comment.js +58 -0
- package/dist/core/templates/workflows/trello-setup.js +292 -292
- package/dist/core/templates/workflows/verify-change.js +318 -318
- package/dist/core/workspace/open-surface.js +30 -30
- package/package.json +1 -1
- package/schemas/spec-driven/schema.yaml +153 -153
- package/schemas/spec-driven/templates/design.md +19 -19
- package/schemas/spec-driven/templates/proposal.md +23 -23
- package/schemas/spec-driven/templates/spec.md +8 -8
- package/schemas/spec-driven/templates/tasks.md +9 -9
- package/schemas/workspace-planning/schema.yaml +72 -72
- package/schemas/workspace-planning/templates/design.md +33 -33
- package/schemas/workspace-planning/templates/proposal.md +28 -28
- package/schemas/workspace-planning/templates/spec.md +9 -9
- package/schemas/workspace-planning/templates/tasks.md +15 -15
- package/scripts/postinstall.js +83 -83
|
@@ -5,16 +5,16 @@ import { getWorkspaceContextInitiativeId, getWorkspaceCodeWorkspacePath, getWork
|
|
|
5
5
|
const fs = nodeFs.promises;
|
|
6
6
|
export const WORKSPACE_GUIDANCE_START_MARKER = '<!-- PSCODE:WORKSPACE-GUIDANCE:START -->';
|
|
7
7
|
export const WORKSPACE_GUIDANCE_END_MARKER = '<!-- PSCODE:WORKSPACE-GUIDANCE:END -->';
|
|
8
|
-
export const WORKSPACE_GUIDANCE_BODY = `# Pscode Workspace Guidance
|
|
9
|
-
|
|
10
|
-
This directory is an Pscode workspace: a local working view over context stores, initiatives, repos, and folders.
|
|
11
|
-
|
|
12
|
-
- Use this workspace to open the local view of coordinated work.
|
|
13
|
-
- Use initiatives for durable cross-team or cross-repo intent, decisions, requirements, and coordination context.
|
|
14
|
-
- Use repo-local Pscode changes for implementation plans owned by a repo or team.
|
|
15
|
-
- Use linked repos and folders to inspect context, understand ownership, and make edits in the place that owns the work.
|
|
16
|
-
- Keep workspace-local files focused on local paths, opener state, agent setup, and other machine-specific view state.
|
|
17
|
-
- Use Pscode workspace commands instead of hand-editing \`workspace.yaml\`.
|
|
8
|
+
export const WORKSPACE_GUIDANCE_BODY = `# Pscode Workspace Guidance
|
|
9
|
+
|
|
10
|
+
This directory is an Pscode workspace: a local working view over context stores, initiatives, repos, and folders.
|
|
11
|
+
|
|
12
|
+
- Use this workspace to open the local view of coordinated work.
|
|
13
|
+
- Use initiatives for durable cross-team or cross-repo intent, decisions, requirements, and coordination context.
|
|
14
|
+
- Use repo-local Pscode changes for implementation plans owned by a repo or team.
|
|
15
|
+
- Use linked repos and folders to inspect context, understand ownership, and make edits in the place that owns the work.
|
|
16
|
+
- Keep workspace-local files focused on local paths, opener state, agent setup, and other machine-specific view state.
|
|
17
|
+
- Use Pscode workspace commands instead of hand-editing \`workspace.yaml\`.
|
|
18
18
|
- If this workspace contains legacy or beta workspace-level planning files, treat them as compatibility context unless the user explicitly asks to use that beta flow.`;
|
|
19
19
|
async function fileExists(filePath) {
|
|
20
20
|
try {
|
|
@@ -44,12 +44,12 @@ function buildWorkspaceContextGuidance(viewState, resolvedContext) {
|
|
|
44
44
|
.sort(([left], [right]) => left.localeCompare(right))
|
|
45
45
|
.map(([name, linkPath]) => ({ label: name, path: linkPath }));
|
|
46
46
|
if (!viewState.context) {
|
|
47
|
-
return `## Local View
|
|
48
|
-
|
|
49
|
-
This workspace is not bound to an initiative. It is still a first-class local view over selected repos or folders.
|
|
50
|
-
|
|
51
|
-
## Linked Implementation Context
|
|
52
|
-
|
|
47
|
+
return `## Local View
|
|
48
|
+
|
|
49
|
+
This workspace is not bound to an initiative. It is still a first-class local view over selected repos or folders.
|
|
50
|
+
|
|
51
|
+
## Linked Implementation Context
|
|
52
|
+
|
|
53
53
|
${formatGuidancePathList(linkedRoots)}`;
|
|
54
54
|
}
|
|
55
55
|
const storedContextSelector = viewState.context.store.selector;
|
|
@@ -74,26 +74,26 @@ ${formatGuidancePathList(linkedRoots)}`;
|
|
|
74
74
|
`- Initiative: ${storedInitiativeId}`,
|
|
75
75
|
'- Run `pscode workspace open --json` to refresh resolved local paths for this view.',
|
|
76
76
|
].join('\n');
|
|
77
|
-
return `## Selected Initiative Context
|
|
78
|
-
|
|
79
|
-
${contextLines}
|
|
80
|
-
|
|
81
|
-
## Advisory Edit Boundaries
|
|
82
|
-
|
|
83
|
-
- Treat initiative and context-store files as shared coordination context.
|
|
84
|
-
- Treat linked repos and folders as local implementation context when the user has selected them.
|
|
85
|
-
- These boundaries are advisory in this Pscode version; use judgment and repo ownership when editing.
|
|
86
|
-
|
|
87
|
-
## Linked Implementation Context
|
|
88
|
-
|
|
77
|
+
return `## Selected Initiative Context
|
|
78
|
+
|
|
79
|
+
${contextLines}
|
|
80
|
+
|
|
81
|
+
## Advisory Edit Boundaries
|
|
82
|
+
|
|
83
|
+
- Treat initiative and context-store files as shared coordination context.
|
|
84
|
+
- Treat linked repos and folders as local implementation context when the user has selected them.
|
|
85
|
+
- These boundaries are advisory in this Pscode version; use judgment and repo ownership when editing.
|
|
86
|
+
|
|
87
|
+
## Linked Implementation Context
|
|
88
|
+
|
|
89
89
|
${formatGuidancePathList(linkedRoots)}`;
|
|
90
90
|
}
|
|
91
91
|
export function buildWorkspaceGuidanceBlock(viewState, resolvedContext) {
|
|
92
92
|
const contextGuidance = viewState
|
|
93
93
|
? `\n\n${buildWorkspaceContextGuidance(viewState, resolvedContext)}`
|
|
94
94
|
: '';
|
|
95
|
-
return `${WORKSPACE_GUIDANCE_START_MARKER}
|
|
96
|
-
${WORKSPACE_GUIDANCE_BODY}${contextGuidance}
|
|
95
|
+
return `${WORKSPACE_GUIDANCE_START_MARKER}
|
|
96
|
+
${WORKSPACE_GUIDANCE_BODY}${contextGuidance}
|
|
97
97
|
${WORKSPACE_GUIDANCE_END_MARKER}`;
|
|
98
98
|
}
|
|
99
99
|
export function applyWorkspaceGuidanceBlock(existingContent, viewState, resolvedContext) {
|
package/package.json
CHANGED
|
@@ -1,153 +1,153 @@
|
|
|
1
|
-
name: spec-driven
|
|
2
|
-
version: 1
|
|
3
|
-
description: Default Pscode workflow - proposal → specs → design → tasks
|
|
4
|
-
artifacts:
|
|
5
|
-
- id: proposal
|
|
6
|
-
generates: proposal.md
|
|
7
|
-
description: Initial proposal document outlining the change
|
|
8
|
-
template: proposal.md
|
|
9
|
-
instruction: |
|
|
10
|
-
Create the proposal document that establishes WHY this change is needed.
|
|
11
|
-
|
|
12
|
-
Sections:
|
|
13
|
-
- **Why**: 1-2 sentences on the problem or opportunity. What problem does this solve? Why now?
|
|
14
|
-
- **What Changes**: Bullet list of changes. Be specific about new capabilities, modifications, or removals. Mark breaking changes with **BREAKING**.
|
|
15
|
-
- **Capabilities**: Identify which specs will be created or modified:
|
|
16
|
-
- **New Capabilities**: List capabilities being introduced. Each becomes a new `specs/<name>/spec.md`. Use kebab-case names (e.g., `user-auth`, `data-export`).
|
|
17
|
-
- **Modified Capabilities**: List existing capabilities whose REQUIREMENTS are changing. Only include if spec-level behavior changes (not just implementation details). Each needs a delta spec file. Check `pscode/specs/` for existing spec names. Leave empty if no requirement changes.
|
|
18
|
-
- **Impact**: Affected code, APIs, dependencies, or systems.
|
|
19
|
-
|
|
20
|
-
IMPORTANT: The Capabilities section is critical. It creates the contract between
|
|
21
|
-
proposal and specs phases. Research existing specs before filling this in.
|
|
22
|
-
Each capability listed here will need a corresponding spec file.
|
|
23
|
-
|
|
24
|
-
Keep it concise (1-2 pages). Focus on the "why" not the "how" -
|
|
25
|
-
implementation details belong in design.md.
|
|
26
|
-
|
|
27
|
-
This is the foundation - specs, design, and tasks all build on this.
|
|
28
|
-
requires: []
|
|
29
|
-
|
|
30
|
-
- id: specs
|
|
31
|
-
generates: "specs/**/*.md"
|
|
32
|
-
description: Detailed specifications for the change
|
|
33
|
-
template: spec.md
|
|
34
|
-
instruction: |
|
|
35
|
-
Create specification files that define WHAT the system should do.
|
|
36
|
-
|
|
37
|
-
Create one spec file per capability listed in the proposal's Capabilities section.
|
|
38
|
-
- New capabilities: use the exact kebab-case name from the proposal (specs/<capability>/spec.md).
|
|
39
|
-
- Modified capabilities: use the existing spec folder name from pscode/specs/<capability>/ when creating the delta spec at specs/<capability>/spec.md.
|
|
40
|
-
|
|
41
|
-
Delta operations (use ## headers):
|
|
42
|
-
- **ADDED Requirements**: New capabilities
|
|
43
|
-
- **MODIFIED Requirements**: Changed behavior - MUST include full updated content
|
|
44
|
-
- **REMOVED Requirements**: Deprecated features - MUST include **Reason** and **Migration**
|
|
45
|
-
- **RENAMED Requirements**: Name changes only - use FROM:/TO: format
|
|
46
|
-
|
|
47
|
-
Format requirements:
|
|
48
|
-
- Each requirement: `### Requirement: <name>` followed by description
|
|
49
|
-
- Use SHALL/MUST for normative requirements (avoid should/may)
|
|
50
|
-
- Each scenario: `#### Scenario: <name>` with WHEN/THEN format
|
|
51
|
-
- **CRITICAL**: Scenarios MUST use exactly 4 hashtags (`####`). Using 3 hashtags or bullets will fail silently.
|
|
52
|
-
- Every requirement MUST have at least one scenario.
|
|
53
|
-
|
|
54
|
-
MODIFIED requirements workflow:
|
|
55
|
-
1. Locate the existing requirement in pscode/specs/<capability>/spec.md
|
|
56
|
-
2. Copy the ENTIRE requirement block (from `### Requirement:` through all scenarios)
|
|
57
|
-
3. Paste under `## MODIFIED Requirements` and edit to reflect new behavior
|
|
58
|
-
4. Ensure header text matches exactly (whitespace-insensitive)
|
|
59
|
-
|
|
60
|
-
Common pitfall: Using MODIFIED with partial content loses detail at archive time.
|
|
61
|
-
If adding new concerns without changing existing behavior, use ADDED instead.
|
|
62
|
-
|
|
63
|
-
Example:
|
|
64
|
-
```
|
|
65
|
-
## ADDED Requirements
|
|
66
|
-
|
|
67
|
-
### Requirement: User can export data
|
|
68
|
-
The system SHALL allow users to export their data in CSV format.
|
|
69
|
-
|
|
70
|
-
#### Scenario: Successful export
|
|
71
|
-
- **WHEN** user clicks "Export" button
|
|
72
|
-
- **THEN** system downloads a CSV file with all user data
|
|
73
|
-
|
|
74
|
-
## REMOVED Requirements
|
|
75
|
-
|
|
76
|
-
### Requirement: Legacy export
|
|
77
|
-
**Reason**: Replaced by new export system
|
|
78
|
-
**Migration**: Use new export endpoint at /api/v2/export
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
Specs should be testable - each scenario is a potential test case.
|
|
82
|
-
requires:
|
|
83
|
-
- proposal
|
|
84
|
-
|
|
85
|
-
- id: design
|
|
86
|
-
generates: design.md
|
|
87
|
-
description: Technical design document with implementation details
|
|
88
|
-
template: design.md
|
|
89
|
-
instruction: |
|
|
90
|
-
Create the design document that explains HOW to implement the change.
|
|
91
|
-
|
|
92
|
-
When to include design.md (create only if any apply):
|
|
93
|
-
- Cross-cutting change (multiple services/modules) or new architectural pattern
|
|
94
|
-
- New external dependency or significant data model changes
|
|
95
|
-
- Security, performance, or migration complexity
|
|
96
|
-
- Ambiguity that benefits from technical decisions before coding
|
|
97
|
-
|
|
98
|
-
Sections:
|
|
99
|
-
- **Context**: Background, current state, constraints, stakeholders
|
|
100
|
-
- **Goals / Non-Goals**: What this design achieves and explicitly excludes
|
|
101
|
-
- **Decisions**: Key technical choices with rationale (why X over Y?). Include alternatives considered for each decision.
|
|
102
|
-
- **Risks / Trade-offs**: Known limitations, things that could go wrong. Format: [Risk] → Mitigation
|
|
103
|
-
- **Migration Plan**: Steps to deploy, rollback strategy (if applicable)
|
|
104
|
-
- **Open Questions**: Outstanding decisions or unknowns to resolve
|
|
105
|
-
|
|
106
|
-
Focus on architecture and approach, not line-by-line implementation.
|
|
107
|
-
Reference the proposal for motivation and specs for requirements.
|
|
108
|
-
|
|
109
|
-
Good design docs explain the "why" behind technical decisions.
|
|
110
|
-
requires:
|
|
111
|
-
- proposal
|
|
112
|
-
|
|
113
|
-
- id: tasks
|
|
114
|
-
generates: tasks.md
|
|
115
|
-
description: Implementation checklist with trackable tasks
|
|
116
|
-
template: tasks.md
|
|
117
|
-
instruction: |
|
|
118
|
-
Create the task list that breaks down the implementation work.
|
|
119
|
-
|
|
120
|
-
**IMPORTANT: Follow the template below exactly.** The apply phase parses
|
|
121
|
-
checkbox format to track progress. Tasks not using `- [ ]` won't be tracked.
|
|
122
|
-
|
|
123
|
-
Guidelines:
|
|
124
|
-
- Group related tasks under ## numbered headings
|
|
125
|
-
- Each task MUST be a checkbox: `- [ ] X.Y Task description`
|
|
126
|
-
- Tasks should be small enough to complete in one session
|
|
127
|
-
- Order tasks by dependency (what must be done first?)
|
|
128
|
-
|
|
129
|
-
Example:
|
|
130
|
-
```
|
|
131
|
-
## 1. Setup
|
|
132
|
-
|
|
133
|
-
- [ ] 1.1 Create new module structure
|
|
134
|
-
- [ ] 1.2 Add dependencies to package.json
|
|
135
|
-
|
|
136
|
-
## 2. Core Implementation
|
|
137
|
-
|
|
138
|
-
- [ ] 2.1 Implement data export function
|
|
139
|
-
- [ ] 2.2 Add CSV formatting utilities
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
Reference specs for what needs to be built, design for how to build it.
|
|
143
|
-
Each task should be verifiable - you know when it's done.
|
|
144
|
-
requires:
|
|
145
|
-
- specs
|
|
146
|
-
- design
|
|
147
|
-
|
|
148
|
-
apply:
|
|
149
|
-
requires: [tasks]
|
|
150
|
-
tracks: tasks.md
|
|
151
|
-
instruction: |
|
|
152
|
-
Read context files, work through pending tasks, mark complete as you go.
|
|
153
|
-
Pause if you hit blockers or need clarification.
|
|
1
|
+
name: spec-driven
|
|
2
|
+
version: 1
|
|
3
|
+
description: Default Pscode workflow - proposal → specs → design → tasks
|
|
4
|
+
artifacts:
|
|
5
|
+
- id: proposal
|
|
6
|
+
generates: proposal.md
|
|
7
|
+
description: Initial proposal document outlining the change
|
|
8
|
+
template: proposal.md
|
|
9
|
+
instruction: |
|
|
10
|
+
Create the proposal document that establishes WHY this change is needed.
|
|
11
|
+
|
|
12
|
+
Sections:
|
|
13
|
+
- **Why**: 1-2 sentences on the problem or opportunity. What problem does this solve? Why now?
|
|
14
|
+
- **What Changes**: Bullet list of changes. Be specific about new capabilities, modifications, or removals. Mark breaking changes with **BREAKING**.
|
|
15
|
+
- **Capabilities**: Identify which specs will be created or modified:
|
|
16
|
+
- **New Capabilities**: List capabilities being introduced. Each becomes a new `specs/<name>/spec.md`. Use kebab-case names (e.g., `user-auth`, `data-export`).
|
|
17
|
+
- **Modified Capabilities**: List existing capabilities whose REQUIREMENTS are changing. Only include if spec-level behavior changes (not just implementation details). Each needs a delta spec file. Check `pscode/specs/` for existing spec names. Leave empty if no requirement changes.
|
|
18
|
+
- **Impact**: Affected code, APIs, dependencies, or systems.
|
|
19
|
+
|
|
20
|
+
IMPORTANT: The Capabilities section is critical. It creates the contract between
|
|
21
|
+
proposal and specs phases. Research existing specs before filling this in.
|
|
22
|
+
Each capability listed here will need a corresponding spec file.
|
|
23
|
+
|
|
24
|
+
Keep it concise (1-2 pages). Focus on the "why" not the "how" -
|
|
25
|
+
implementation details belong in design.md.
|
|
26
|
+
|
|
27
|
+
This is the foundation - specs, design, and tasks all build on this.
|
|
28
|
+
requires: []
|
|
29
|
+
|
|
30
|
+
- id: specs
|
|
31
|
+
generates: "specs/**/*.md"
|
|
32
|
+
description: Detailed specifications for the change
|
|
33
|
+
template: spec.md
|
|
34
|
+
instruction: |
|
|
35
|
+
Create specification files that define WHAT the system should do.
|
|
36
|
+
|
|
37
|
+
Create one spec file per capability listed in the proposal's Capabilities section.
|
|
38
|
+
- New capabilities: use the exact kebab-case name from the proposal (specs/<capability>/spec.md).
|
|
39
|
+
- Modified capabilities: use the existing spec folder name from pscode/specs/<capability>/ when creating the delta spec at specs/<capability>/spec.md.
|
|
40
|
+
|
|
41
|
+
Delta operations (use ## headers):
|
|
42
|
+
- **ADDED Requirements**: New capabilities
|
|
43
|
+
- **MODIFIED Requirements**: Changed behavior - MUST include full updated content
|
|
44
|
+
- **REMOVED Requirements**: Deprecated features - MUST include **Reason** and **Migration**
|
|
45
|
+
- **RENAMED Requirements**: Name changes only - use FROM:/TO: format
|
|
46
|
+
|
|
47
|
+
Format requirements:
|
|
48
|
+
- Each requirement: `### Requirement: <name>` followed by description
|
|
49
|
+
- Use SHALL/MUST for normative requirements (avoid should/may)
|
|
50
|
+
- Each scenario: `#### Scenario: <name>` with WHEN/THEN format
|
|
51
|
+
- **CRITICAL**: Scenarios MUST use exactly 4 hashtags (`####`). Using 3 hashtags or bullets will fail silently.
|
|
52
|
+
- Every requirement MUST have at least one scenario.
|
|
53
|
+
|
|
54
|
+
MODIFIED requirements workflow:
|
|
55
|
+
1. Locate the existing requirement in pscode/specs/<capability>/spec.md
|
|
56
|
+
2. Copy the ENTIRE requirement block (from `### Requirement:` through all scenarios)
|
|
57
|
+
3. Paste under `## MODIFIED Requirements` and edit to reflect new behavior
|
|
58
|
+
4. Ensure header text matches exactly (whitespace-insensitive)
|
|
59
|
+
|
|
60
|
+
Common pitfall: Using MODIFIED with partial content loses detail at archive time.
|
|
61
|
+
If adding new concerns without changing existing behavior, use ADDED instead.
|
|
62
|
+
|
|
63
|
+
Example:
|
|
64
|
+
```
|
|
65
|
+
## ADDED Requirements
|
|
66
|
+
|
|
67
|
+
### Requirement: User can export data
|
|
68
|
+
The system SHALL allow users to export their data in CSV format.
|
|
69
|
+
|
|
70
|
+
#### Scenario: Successful export
|
|
71
|
+
- **WHEN** user clicks "Export" button
|
|
72
|
+
- **THEN** system downloads a CSV file with all user data
|
|
73
|
+
|
|
74
|
+
## REMOVED Requirements
|
|
75
|
+
|
|
76
|
+
### Requirement: Legacy export
|
|
77
|
+
**Reason**: Replaced by new export system
|
|
78
|
+
**Migration**: Use new export endpoint at /api/v2/export
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Specs should be testable - each scenario is a potential test case.
|
|
82
|
+
requires:
|
|
83
|
+
- proposal
|
|
84
|
+
|
|
85
|
+
- id: design
|
|
86
|
+
generates: design.md
|
|
87
|
+
description: Technical design document with implementation details
|
|
88
|
+
template: design.md
|
|
89
|
+
instruction: |
|
|
90
|
+
Create the design document that explains HOW to implement the change.
|
|
91
|
+
|
|
92
|
+
When to include design.md (create only if any apply):
|
|
93
|
+
- Cross-cutting change (multiple services/modules) or new architectural pattern
|
|
94
|
+
- New external dependency or significant data model changes
|
|
95
|
+
- Security, performance, or migration complexity
|
|
96
|
+
- Ambiguity that benefits from technical decisions before coding
|
|
97
|
+
|
|
98
|
+
Sections:
|
|
99
|
+
- **Context**: Background, current state, constraints, stakeholders
|
|
100
|
+
- **Goals / Non-Goals**: What this design achieves and explicitly excludes
|
|
101
|
+
- **Decisions**: Key technical choices with rationale (why X over Y?). Include alternatives considered for each decision.
|
|
102
|
+
- **Risks / Trade-offs**: Known limitations, things that could go wrong. Format: [Risk] → Mitigation
|
|
103
|
+
- **Migration Plan**: Steps to deploy, rollback strategy (if applicable)
|
|
104
|
+
- **Open Questions**: Outstanding decisions or unknowns to resolve
|
|
105
|
+
|
|
106
|
+
Focus on architecture and approach, not line-by-line implementation.
|
|
107
|
+
Reference the proposal for motivation and specs for requirements.
|
|
108
|
+
|
|
109
|
+
Good design docs explain the "why" behind technical decisions.
|
|
110
|
+
requires:
|
|
111
|
+
- proposal
|
|
112
|
+
|
|
113
|
+
- id: tasks
|
|
114
|
+
generates: tasks.md
|
|
115
|
+
description: Implementation checklist with trackable tasks
|
|
116
|
+
template: tasks.md
|
|
117
|
+
instruction: |
|
|
118
|
+
Create the task list that breaks down the implementation work.
|
|
119
|
+
|
|
120
|
+
**IMPORTANT: Follow the template below exactly.** The apply phase parses
|
|
121
|
+
checkbox format to track progress. Tasks not using `- [ ]` won't be tracked.
|
|
122
|
+
|
|
123
|
+
Guidelines:
|
|
124
|
+
- Group related tasks under ## numbered headings
|
|
125
|
+
- Each task MUST be a checkbox: `- [ ] X.Y Task description`
|
|
126
|
+
- Tasks should be small enough to complete in one session
|
|
127
|
+
- Order tasks by dependency (what must be done first?)
|
|
128
|
+
|
|
129
|
+
Example:
|
|
130
|
+
```
|
|
131
|
+
## 1. Setup
|
|
132
|
+
|
|
133
|
+
- [ ] 1.1 Create new module structure
|
|
134
|
+
- [ ] 1.2 Add dependencies to package.json
|
|
135
|
+
|
|
136
|
+
## 2. Core Implementation
|
|
137
|
+
|
|
138
|
+
- [ ] 2.1 Implement data export function
|
|
139
|
+
- [ ] 2.2 Add CSV formatting utilities
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Reference specs for what needs to be built, design for how to build it.
|
|
143
|
+
Each task should be verifiable - you know when it's done.
|
|
144
|
+
requires:
|
|
145
|
+
- specs
|
|
146
|
+
- design
|
|
147
|
+
|
|
148
|
+
apply:
|
|
149
|
+
requires: [tasks]
|
|
150
|
+
tracks: tasks.md
|
|
151
|
+
instruction: |
|
|
152
|
+
Read context files, work through pending tasks, mark complete as you go.
|
|
153
|
+
Pause if you hit blockers or need clarification.
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
## Context
|
|
2
|
-
|
|
3
|
-
<!-- Background and current state -->
|
|
4
|
-
|
|
5
|
-
## Goals / Non-Goals
|
|
6
|
-
|
|
7
|
-
**Goals:**
|
|
8
|
-
<!-- What this design aims to achieve -->
|
|
9
|
-
|
|
10
|
-
**Non-Goals:**
|
|
11
|
-
<!-- What is explicitly out of scope -->
|
|
12
|
-
|
|
13
|
-
## Decisions
|
|
14
|
-
|
|
15
|
-
<!-- Key design decisions and rationale -->
|
|
16
|
-
|
|
17
|
-
## Risks / Trade-offs
|
|
18
|
-
|
|
19
|
-
<!-- Known risks and trade-offs -->
|
|
1
|
+
## Context
|
|
2
|
+
|
|
3
|
+
<!-- Background and current state -->
|
|
4
|
+
|
|
5
|
+
## Goals / Non-Goals
|
|
6
|
+
|
|
7
|
+
**Goals:**
|
|
8
|
+
<!-- What this design aims to achieve -->
|
|
9
|
+
|
|
10
|
+
**Non-Goals:**
|
|
11
|
+
<!-- What is explicitly out of scope -->
|
|
12
|
+
|
|
13
|
+
## Decisions
|
|
14
|
+
|
|
15
|
+
<!-- Key design decisions and rationale -->
|
|
16
|
+
|
|
17
|
+
## Risks / Trade-offs
|
|
18
|
+
|
|
19
|
+
<!-- Known risks and trade-offs -->
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
## Why
|
|
2
|
-
|
|
3
|
-
<!-- Explain the motivation for this change. What problem does this solve? Why now? -->
|
|
4
|
-
|
|
5
|
-
## What Changes
|
|
6
|
-
|
|
7
|
-
<!-- Describe what will change. Be specific about new capabilities, modifications, or removals. -->
|
|
8
|
-
|
|
9
|
-
## Capabilities
|
|
10
|
-
|
|
11
|
-
### New Capabilities
|
|
12
|
-
<!-- Capabilities being introduced. Replace <name> with kebab-case identifier (e.g., user-auth, data-export, api-rate-limiting). Each creates specs/<name>/spec.md -->
|
|
13
|
-
- `<name>`: <brief description of what this capability covers>
|
|
14
|
-
|
|
15
|
-
### Modified Capabilities
|
|
16
|
-
<!-- Existing capabilities whose REQUIREMENTS are changing (not just implementation).
|
|
17
|
-
Only list here if spec-level behavior changes. Each needs a delta spec file.
|
|
18
|
-
Use existing spec names from pscode/specs/. Leave empty if no requirement changes. -->
|
|
19
|
-
- `<existing-name>`: <what requirement is changing>
|
|
20
|
-
|
|
21
|
-
## Impact
|
|
22
|
-
|
|
23
|
-
<!-- Affected code, APIs, dependencies, systems -->
|
|
1
|
+
## Why
|
|
2
|
+
|
|
3
|
+
<!-- Explain the motivation for this change. What problem does this solve? Why now? -->
|
|
4
|
+
|
|
5
|
+
## What Changes
|
|
6
|
+
|
|
7
|
+
<!-- Describe what will change. Be specific about new capabilities, modifications, or removals. -->
|
|
8
|
+
|
|
9
|
+
## Capabilities
|
|
10
|
+
|
|
11
|
+
### New Capabilities
|
|
12
|
+
<!-- Capabilities being introduced. Replace <name> with kebab-case identifier (e.g., user-auth, data-export, api-rate-limiting). Each creates specs/<name>/spec.md -->
|
|
13
|
+
- `<name>`: <brief description of what this capability covers>
|
|
14
|
+
|
|
15
|
+
### Modified Capabilities
|
|
16
|
+
<!-- Existing capabilities whose REQUIREMENTS are changing (not just implementation).
|
|
17
|
+
Only list here if spec-level behavior changes. Each needs a delta spec file.
|
|
18
|
+
Use existing spec names from pscode/specs/. Leave empty if no requirement changes. -->
|
|
19
|
+
- `<existing-name>`: <what requirement is changing>
|
|
20
|
+
|
|
21
|
+
## Impact
|
|
22
|
+
|
|
23
|
+
<!-- Affected code, APIs, dependencies, systems -->
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
## ADDED Requirements
|
|
2
|
-
|
|
3
|
-
### Requirement: <!-- requirement name -->
|
|
4
|
-
<!-- requirement text -->
|
|
5
|
-
|
|
6
|
-
#### Scenario: <!-- scenario name -->
|
|
7
|
-
- **WHEN** <!-- condition -->
|
|
8
|
-
- **THEN** <!-- expected outcome -->
|
|
1
|
+
## ADDED Requirements
|
|
2
|
+
|
|
3
|
+
### Requirement: <!-- requirement name -->
|
|
4
|
+
<!-- requirement text -->
|
|
5
|
+
|
|
6
|
+
#### Scenario: <!-- scenario name -->
|
|
7
|
+
- **WHEN** <!-- condition -->
|
|
8
|
+
- **THEN** <!-- expected outcome -->
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
## 1. <!-- Task Group Name -->
|
|
2
|
-
|
|
3
|
-
- [ ] 1.1 <!-- Task description -->
|
|
4
|
-
- [ ] 1.2 <!-- Task description -->
|
|
5
|
-
|
|
6
|
-
## 2. <!-- Task Group Name -->
|
|
7
|
-
|
|
8
|
-
- [ ] 2.1 <!-- Task description -->
|
|
9
|
-
- [ ] 2.2 <!-- Task description -->
|
|
1
|
+
## 1. <!-- Task Group Name -->
|
|
2
|
+
|
|
3
|
+
- [ ] 1.1 <!-- Task description -->
|
|
4
|
+
- [ ] 1.2 <!-- Task description -->
|
|
5
|
+
|
|
6
|
+
## 2. <!-- Task Group Name -->
|
|
7
|
+
|
|
8
|
+
- [ ] 2.1 <!-- Task description -->
|
|
9
|
+
- [ ] 2.2 <!-- Task description -->
|