@mrciphersmith/keryx 0.2.72 → 0.2.73
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/dist/cli.js +352 -22
- package/package.json +2 -2
- package/src/gdskills/bundled/rules/core/gproject-contracts.mdc +1 -1
- package/src/gdskills/bundled/rules/core/jobs-documentation.mdc +1 -1
- package/src/gdskills/bundled/rules/core/subagent-context-construction.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.codex.md +326 -20
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.cursor.md +320 -22
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.opencode.md +326 -12
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.zed.md +333 -9
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.codex.md +92 -4
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.cursor.md +92 -4
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.opencode.md +92 -4
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.zed.md +92 -4
- package/src/gdskills/bundled/skills/orchestration/context-collector/orchestrator-prompt.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.codex.md +154 -1098
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.cursor.md +154 -1098
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.opencode.md +154 -1098
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.zed.md +154 -1098
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/orchestrator-prompt.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.codex.md +101 -41
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.cursor.md +101 -41
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.codex.md +115 -49
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.cursor.md +115 -49
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.opencode.md +115 -49
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.zed.md +115 -49
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/orchestrator-prompt.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.codex.md +15 -6
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.cursor.md +15 -6
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.opencode.md +15 -6
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.zed.md +15 -6
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.opencode.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.zed.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.codex.md +300 -55
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.cursor.md +300 -55
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +120 -37
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.opencode.md +300 -55
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.zed.md +300 -55
- package/src/gdskills/bundled/skills/orchestration/task-implementer/input-contract.schema.json +56 -14
- package/src/gdskills/bundled/skills/orchestration/task-implementer/orchestrator-prompt.md +50 -23
- package/src/gdskills/bundled/skills/orchestration/task-implementer/output-contract.schema.json +6 -2
- package/src/gdskills/bundled/skills/orchestration/task-implementer/task-request.template.md +18 -12
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.codex.md +168 -9
- package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.cursor.md +168 -9
- package/src/gdskills/bundled/skills/planning/interview/SKILL.codex.md +7 -1
- package/src/gdskills/bundled/skills/planning/interview/SKILL.cursor.md +7 -1
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.codex.md +7 -1
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.cursor.md +7 -1
- package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.codex.md +215 -9
- package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.cursor.md +215 -9
- package/src/gdskills/bundled/skills/planning/planner/SKILL.codex.md +168 -9
- package/src/gdskills/bundled/skills/planning/planner/SKILL.cursor.md +168 -9
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.codex.md +2 -2
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.cursor.md +2 -2
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.opencode.md +2 -2
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.zed.md +2 -2
- package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.codex.md +133 -9
- package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.cursor.md +133 -9
- package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.codex.md +145 -9
- package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.cursor.md +145 -9
- package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.codex.md +210 -9
- package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.cursor.md +210 -9
- package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.codex.md +161 -9
- package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.cursor.md +161 -9
- package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/commit/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/commit/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/pr/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/pr/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.codex.md +15 -1
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.cursor.md +248 -165
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.opencode.md +15 -1
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.zed.md +359 -19
- package/src/gdskills/bundled/skills/quality/push/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/push/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.codex.md +299 -24
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.cursor.md +296 -31
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.opencode.md +309 -18
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.zed.md +312 -17
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.codex.md +29 -30
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.cursor.md +29 -30
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.opencode.md +29 -30
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.zed.md +29 -30
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.codex.md +21 -30
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.cursor.md +21 -30
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.opencode.md +21 -30
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.zed.md +21 -30
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.codex.md +19 -23
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.cursor.md +19 -23
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.opencode.md +19 -23
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.zed.md +19 -23
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.codex.md +17 -24
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.cursor.md +17 -24
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.opencode.md +17 -24
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.zed.md +17 -24
- package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +16 -3
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.claude.md +0 -46
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.claude.md +0 -94
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.claude.md +0 -45
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.claude.md +0 -40
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.claude.md +0 -45
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.claude.md +0 -42
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.claude.md +0 -48
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.claude.md +0 -40
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.claude.md +0 -30
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gproject-discovery
|
|
3
|
-
description:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
description: >
|
|
4
|
+
Collects and structures initial project information from multiple sources.
|
|
5
|
+
Use when: dispatched by gproject-orchestrator Phase 0.
|
|
6
|
+
NOT for: direct user invocation — always called through orchestrator.
|
|
7
7
|
metadata:
|
|
8
|
-
|
|
9
|
-
version: "1.0.0"
|
|
10
|
-
category: "planning"
|
|
8
|
+
version: 1.0.0
|
|
11
9
|
compatible_harnesses: "cursor,codex,zed,opencode"
|
|
12
|
-
license: "MIT"
|
|
13
10
|
---
|
|
14
11
|
|
|
15
|
-
|
|
16
12
|
# gproject-discovery
|
|
17
13
|
|
|
18
14
|
## Purpose
|
|
@@ -30,3 +26,143 @@ depends on the quality of discovery.
|
|
|
30
26
|
| 3 | If a critical area has no data, return NEEDS_CONTEXT — don't fill gaps with guesses |
|
|
31
27
|
| 4 | Web research MUST cite sources |
|
|
32
28
|
| 5 | Codebase analysis MUST reference actual file paths |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Input Contract
|
|
33
|
+
|
|
34
|
+
```yaml
|
|
35
|
+
task: "Collect project discovery data"
|
|
36
|
+
mode: "new_project" | "task_in_project"
|
|
37
|
+
user_input: "<original user request text>"
|
|
38
|
+
uploaded_docs: [<file paths if any>]
|
|
39
|
+
repo_path: "<path if task_in_project>"
|
|
40
|
+
interview_results: "<from interview skill, if already run>"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Output Contract
|
|
44
|
+
|
|
45
|
+
```yaml
|
|
46
|
+
status: "DONE" | "NEEDS_CONTEXT"
|
|
47
|
+
summary: "<3-5 sentences: what was found, key gaps, confidence level>"
|
|
48
|
+
new_decisions:
|
|
49
|
+
D_mode: "new_project | task_in_project"
|
|
50
|
+
D_domain: "<business domain>"
|
|
51
|
+
D_audience: "<target users>"
|
|
52
|
+
D_scale_estimate: "<rough scale: personal/team/startup/enterprise>"
|
|
53
|
+
artifact_path: ".metaproject/jobs/<job>/artifacts/discovery-brief.md"
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
If NEEDS_CONTEXT:
|
|
57
|
+
```yaml
|
|
58
|
+
status: "NEEDS_CONTEXT"
|
|
59
|
+
questions:
|
|
60
|
+
- id: "Q1"
|
|
61
|
+
text: "<question>"
|
|
62
|
+
options:
|
|
63
|
+
A: "<option>"
|
|
64
|
+
B: "<option>"
|
|
65
|
+
C: "<option>"
|
|
66
|
+
D: "<option>"
|
|
67
|
+
why: "<why this matters for downstream phases>"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Workflow
|
|
73
|
+
|
|
74
|
+
### Step 1: Parse User Input
|
|
75
|
+
|
|
76
|
+
Extract from the user's original request:
|
|
77
|
+
- What they want to build/implement
|
|
78
|
+
- Any constraints mentioned (budget, timeline, team size)
|
|
79
|
+
- Any technical preferences mentioned
|
|
80
|
+
- Target audience / users mentioned
|
|
81
|
+
|
|
82
|
+
### Step 2: Source-Specific Collection
|
|
83
|
+
|
|
84
|
+
#### Mode: new_project
|
|
85
|
+
|
|
86
|
+
1. **User input analysis** — extract all explicit and implied requirements
|
|
87
|
+
2. **Uploaded documents** — parse any attached files (briefs, notes, mockups, transcripts)
|
|
88
|
+
3. **Web research** — search for:
|
|
89
|
+
- Similar products / competitors (max 5)
|
|
90
|
+
- Market context and trends
|
|
91
|
+
- Common technical approaches for this type of project
|
|
92
|
+
4. **Gap identification** — list what's missing for confident decision-making
|
|
93
|
+
|
|
94
|
+
#### Mode: task_in_project
|
|
95
|
+
|
|
96
|
+
1. **User input analysis** — extract the specific task/feature request
|
|
97
|
+
2. **Codebase scan** (via context-collector) — gather:
|
|
98
|
+
- Project structure (directories, key files)
|
|
99
|
+
- Technology stack (package.json, requirements.txt, Dockerfile, etc.)
|
|
100
|
+
- Architecture patterns in use
|
|
101
|
+
- Existing documentation (README, docs/, ADRs)
|
|
102
|
+
- Related code areas (files likely affected by this task)
|
|
103
|
+
3. **Existing docs** — parse project documentation for context
|
|
104
|
+
4. **Web research** — best practices for the specific task within the detected stack
|
|
105
|
+
5. **Gap identification** — what's unclear about the existing codebase or requirements
|
|
106
|
+
|
|
107
|
+
### Step 3: Structure Discovery Brief
|
|
108
|
+
|
|
109
|
+
Write `artifacts/discovery-brief.md` with this structure:
|
|
110
|
+
|
|
111
|
+
```markdown
|
|
112
|
+
# Discovery Brief: <Project/Task Name>
|
|
113
|
+
|
|
114
|
+
## Source Summary
|
|
115
|
+
- User input: <what was provided>
|
|
116
|
+
- Documents analyzed: <list>
|
|
117
|
+
- Codebase scanned: <yes/no, scope>
|
|
118
|
+
- Web research: <topics covered>
|
|
119
|
+
|
|
120
|
+
## Project/Task Description
|
|
121
|
+
<Clear 2-3 paragraph description of what needs to be built/done>
|
|
122
|
+
|
|
123
|
+
## Key Facts (confirmed)
|
|
124
|
+
- <fact 1> [source: user input / document / codebase]
|
|
125
|
+
- <fact 2> [source: ...]
|
|
126
|
+
|
|
127
|
+
## Assumptions (need validation)
|
|
128
|
+
- <assumption 1> — confidence: high/medium/low
|
|
129
|
+
- <assumption 2> — confidence: ...
|
|
130
|
+
|
|
131
|
+
## Stakeholders & Users
|
|
132
|
+
- Primary users: <who>
|
|
133
|
+
- Secondary users: <who>
|
|
134
|
+
- Stakeholders: <who decides>
|
|
135
|
+
|
|
136
|
+
## Existing Context (task_in_project only)
|
|
137
|
+
- Tech stack: <detected>
|
|
138
|
+
- Architecture: <detected patterns>
|
|
139
|
+
- Related components: <list with file paths>
|
|
140
|
+
- Existing patterns to follow: <list>
|
|
141
|
+
|
|
142
|
+
## Competitive / Market Context (new_project only)
|
|
143
|
+
- Similar products: <list with brief notes>
|
|
144
|
+
- Differentiators mentioned: <list>
|
|
145
|
+
- Market trends: <relevant>
|
|
146
|
+
|
|
147
|
+
## Constraints Identified
|
|
148
|
+
- Budget: <if mentioned>
|
|
149
|
+
- Timeline: <if mentioned>
|
|
150
|
+
- Team: <size, skills if mentioned>
|
|
151
|
+
- Technical: <any mentioned constraints>
|
|
152
|
+
|
|
153
|
+
## Open Questions
|
|
154
|
+
- <question 1> — impacts: <which downstream decisions>
|
|
155
|
+
- <question 2> — impacts: ...
|
|
156
|
+
|
|
157
|
+
## Confidence Assessment
|
|
158
|
+
- Overall completeness: <high/medium/low>
|
|
159
|
+
- Areas needing more data: <list>
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Step 4: Return Summary to Orchestrator
|
|
163
|
+
|
|
164
|
+
Compose compact summary (3-5 sentences) covering:
|
|
165
|
+
- What the project/task is about
|
|
166
|
+
- Key constraints discovered
|
|
167
|
+
- Confidence level
|
|
168
|
+
- Critical gaps that need resolution
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gproject-discovery
|
|
3
|
-
description:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
description: >
|
|
4
|
+
Collects and structures initial project information from multiple sources.
|
|
5
|
+
Use when: dispatched by gproject-orchestrator Phase 0.
|
|
6
|
+
NOT for: direct user invocation — always called through orchestrator.
|
|
7
7
|
metadata:
|
|
8
|
-
|
|
9
|
-
version: "1.0.0"
|
|
10
|
-
category: "planning"
|
|
8
|
+
version: 1.0.0
|
|
11
9
|
compatible_harnesses: "cursor,codex,zed,opencode"
|
|
12
|
-
license: "MIT"
|
|
13
10
|
---
|
|
14
11
|
|
|
15
|
-
|
|
16
12
|
# gproject-discovery
|
|
17
13
|
|
|
18
14
|
## Purpose
|
|
@@ -30,3 +26,143 @@ depends on the quality of discovery.
|
|
|
30
26
|
| 3 | If a critical area has no data, return NEEDS_CONTEXT — don't fill gaps with guesses |
|
|
31
27
|
| 4 | Web research MUST cite sources |
|
|
32
28
|
| 5 | Codebase analysis MUST reference actual file paths |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Input Contract
|
|
33
|
+
|
|
34
|
+
```yaml
|
|
35
|
+
task: "Collect project discovery data"
|
|
36
|
+
mode: "new_project" | "task_in_project"
|
|
37
|
+
user_input: "<original user request text>"
|
|
38
|
+
uploaded_docs: [<file paths if any>]
|
|
39
|
+
repo_path: "<path if task_in_project>"
|
|
40
|
+
interview_results: "<from interview skill, if already run>"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Output Contract
|
|
44
|
+
|
|
45
|
+
```yaml
|
|
46
|
+
status: "DONE" | "NEEDS_CONTEXT"
|
|
47
|
+
summary: "<3-5 sentences: what was found, key gaps, confidence level>"
|
|
48
|
+
new_decisions:
|
|
49
|
+
D_mode: "new_project | task_in_project"
|
|
50
|
+
D_domain: "<business domain>"
|
|
51
|
+
D_audience: "<target users>"
|
|
52
|
+
D_scale_estimate: "<rough scale: personal/team/startup/enterprise>"
|
|
53
|
+
artifact_path: ".metaproject/jobs/<job>/artifacts/discovery-brief.md"
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
If NEEDS_CONTEXT:
|
|
57
|
+
```yaml
|
|
58
|
+
status: "NEEDS_CONTEXT"
|
|
59
|
+
questions:
|
|
60
|
+
- id: "Q1"
|
|
61
|
+
text: "<question>"
|
|
62
|
+
options:
|
|
63
|
+
A: "<option>"
|
|
64
|
+
B: "<option>"
|
|
65
|
+
C: "<option>"
|
|
66
|
+
D: "<option>"
|
|
67
|
+
why: "<why this matters for downstream phases>"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Workflow
|
|
73
|
+
|
|
74
|
+
### Step 1: Parse User Input
|
|
75
|
+
|
|
76
|
+
Extract from the user's original request:
|
|
77
|
+
- What they want to build/implement
|
|
78
|
+
- Any constraints mentioned (budget, timeline, team size)
|
|
79
|
+
- Any technical preferences mentioned
|
|
80
|
+
- Target audience / users mentioned
|
|
81
|
+
|
|
82
|
+
### Step 2: Source-Specific Collection
|
|
83
|
+
|
|
84
|
+
#### Mode: new_project
|
|
85
|
+
|
|
86
|
+
1. **User input analysis** — extract all explicit and implied requirements
|
|
87
|
+
2. **Uploaded documents** — parse any attached files (briefs, notes, mockups, transcripts)
|
|
88
|
+
3. **Web research** — search for:
|
|
89
|
+
- Similar products / competitors (max 5)
|
|
90
|
+
- Market context and trends
|
|
91
|
+
- Common technical approaches for this type of project
|
|
92
|
+
4. **Gap identification** — list what's missing for confident decision-making
|
|
93
|
+
|
|
94
|
+
#### Mode: task_in_project
|
|
95
|
+
|
|
96
|
+
1. **User input analysis** — extract the specific task/feature request
|
|
97
|
+
2. **Codebase scan** (via context-collector) — gather:
|
|
98
|
+
- Project structure (directories, key files)
|
|
99
|
+
- Technology stack (package.json, requirements.txt, Dockerfile, etc.)
|
|
100
|
+
- Architecture patterns in use
|
|
101
|
+
- Existing documentation (README, docs/, ADRs)
|
|
102
|
+
- Related code areas (files likely affected by this task)
|
|
103
|
+
3. **Existing docs** — parse project documentation for context
|
|
104
|
+
4. **Web research** — best practices for the specific task within the detected stack
|
|
105
|
+
5. **Gap identification** — what's unclear about the existing codebase or requirements
|
|
106
|
+
|
|
107
|
+
### Step 3: Structure Discovery Brief
|
|
108
|
+
|
|
109
|
+
Write `artifacts/discovery-brief.md` with this structure:
|
|
110
|
+
|
|
111
|
+
```markdown
|
|
112
|
+
# Discovery Brief: <Project/Task Name>
|
|
113
|
+
|
|
114
|
+
## Source Summary
|
|
115
|
+
- User input: <what was provided>
|
|
116
|
+
- Documents analyzed: <list>
|
|
117
|
+
- Codebase scanned: <yes/no, scope>
|
|
118
|
+
- Web research: <topics covered>
|
|
119
|
+
|
|
120
|
+
## Project/Task Description
|
|
121
|
+
<Clear 2-3 paragraph description of what needs to be built/done>
|
|
122
|
+
|
|
123
|
+
## Key Facts (confirmed)
|
|
124
|
+
- <fact 1> [source: user input / document / codebase]
|
|
125
|
+
- <fact 2> [source: ...]
|
|
126
|
+
|
|
127
|
+
## Assumptions (need validation)
|
|
128
|
+
- <assumption 1> — confidence: high/medium/low
|
|
129
|
+
- <assumption 2> — confidence: ...
|
|
130
|
+
|
|
131
|
+
## Stakeholders & Users
|
|
132
|
+
- Primary users: <who>
|
|
133
|
+
- Secondary users: <who>
|
|
134
|
+
- Stakeholders: <who decides>
|
|
135
|
+
|
|
136
|
+
## Existing Context (task_in_project only)
|
|
137
|
+
- Tech stack: <detected>
|
|
138
|
+
- Architecture: <detected patterns>
|
|
139
|
+
- Related components: <list with file paths>
|
|
140
|
+
- Existing patterns to follow: <list>
|
|
141
|
+
|
|
142
|
+
## Competitive / Market Context (new_project only)
|
|
143
|
+
- Similar products: <list with brief notes>
|
|
144
|
+
- Differentiators mentioned: <list>
|
|
145
|
+
- Market trends: <relevant>
|
|
146
|
+
|
|
147
|
+
## Constraints Identified
|
|
148
|
+
- Budget: <if mentioned>
|
|
149
|
+
- Timeline: <if mentioned>
|
|
150
|
+
- Team: <size, skills if mentioned>
|
|
151
|
+
- Technical: <any mentioned constraints>
|
|
152
|
+
|
|
153
|
+
## Open Questions
|
|
154
|
+
- <question 1> — impacts: <which downstream decisions>
|
|
155
|
+
- <question 2> — impacts: ...
|
|
156
|
+
|
|
157
|
+
## Confidence Assessment
|
|
158
|
+
- Overall completeness: <high/medium/low>
|
|
159
|
+
- Areas needing more data: <list>
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Step 4: Return Summary to Orchestrator
|
|
163
|
+
|
|
164
|
+
Compose compact summary (3-5 sentences) covering:
|
|
165
|
+
- What the project/task is about
|
|
166
|
+
- Key constraints discovered
|
|
167
|
+
- Confidence level
|
|
168
|
+
- Critical gaps that need resolution
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gproject-spec-writer
|
|
3
|
-
description:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
description: >
|
|
4
|
+
Generates PRD or Implementation Plan constrained by decisions registry,
|
|
5
|
+
architecture doc, and best practices. Does NOT invent new architectural decisions.
|
|
6
|
+
Use when: dispatched by gproject-orchestrator Phase 4.
|
|
7
|
+
NOT for: direct user invocation.
|
|
7
8
|
metadata:
|
|
8
|
-
|
|
9
|
-
version: "1.0.0"
|
|
10
|
-
category: "planning"
|
|
9
|
+
version: 1.0.0
|
|
11
10
|
compatible_harnesses: "cursor,codex,zed,opencode"
|
|
12
|
-
license: "MIT"
|
|
13
11
|
---
|
|
14
12
|
|
|
15
|
-
|
|
16
13
|
# gproject-spec-writer
|
|
17
14
|
|
|
18
15
|
## Purpose
|
|
@@ -42,3 +39,207 @@ into actionable requirements and user stories.
|
|
|
42
39
|
| User story without acceptance criteria | Untestable requirement | STOP → add criteria or flag as incomplete |
|
|
43
40
|
| Feature that contradicts a non-goal | Scope creep | STOP → remove or flag as conflict |
|
|
44
41
|
| Technical spec section with no BP constraint reference | Unconstrained decision | STOP → find applicable constraint or flag gap |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Input Contract
|
|
46
|
+
|
|
47
|
+
```yaml
|
|
48
|
+
task: "Generate PRD / Implementation Plan"
|
|
49
|
+
mode: "new_project" | "task_in_project"
|
|
50
|
+
input_artifacts:
|
|
51
|
+
- .metaproject/jobs/<job>/artifacts/problem-statement.md
|
|
52
|
+
- .metaproject/jobs/<job>/artifacts/architecture.md
|
|
53
|
+
- .metaproject/jobs/<job>/artifacts/tech-bestpractices.md
|
|
54
|
+
- .metaproject/jobs/<job>/decisions.md
|
|
55
|
+
decisions_so_far: <all decisions from D1 through D_arch_pattern>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Output Contract
|
|
59
|
+
|
|
60
|
+
```yaml
|
|
61
|
+
status: "DONE" | "DONE_WITH_CONCERNS" | "BLOCKED"
|
|
62
|
+
summary: "<3-5 sentences: document type, user story count, key scope decisions>"
|
|
63
|
+
new_decisions: {} # PRD does NOT add architectural decisions
|
|
64
|
+
concerns: ["<if DONE_WITH_CONCERNS — gaps or ambiguities found>"]
|
|
65
|
+
artifact_path: ".metaproject/jobs/<job>/artifacts/prd.md"
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Workflow
|
|
71
|
+
|
|
72
|
+
### Step 1: Validate Inputs
|
|
73
|
+
|
|
74
|
+
Before writing anything, verify:
|
|
75
|
+
- [ ] All referenced decisions exist in decisions.md
|
|
76
|
+
- [ ] No contradictions between problem-statement and architecture
|
|
77
|
+
- [ ] Best practices constraints are internally consistent
|
|
78
|
+
- [ ] Scope (goals + non-goals) is clear
|
|
79
|
+
|
|
80
|
+
If validation fails → return `STATUS: BLOCKED` with specific issues.
|
|
81
|
+
|
|
82
|
+
### Step 2: Determine Document Type
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
IF mode == "new_project":
|
|
86
|
+
→ Write full PRD (template A below)
|
|
87
|
+
ELSE IF mode == "task_in_project":
|
|
88
|
+
→ Write Implementation Plan (template B below)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Step 3: Write User Stories
|
|
92
|
+
|
|
93
|
+
For each goal in problem-statement.md, generate user stories:
|
|
94
|
+
|
|
95
|
+
Format:
|
|
96
|
+
```
|
|
97
|
+
### US-<NNN>: <Title>
|
|
98
|
+
**As a** <user type from D_target_users>
|
|
99
|
+
**I want to** <action>
|
|
100
|
+
**So that** <benefit tied to goal G_N>
|
|
101
|
+
|
|
102
|
+
**Acceptance Criteria:**
|
|
103
|
+
- [ ] <specific, testable criterion>
|
|
104
|
+
- [ ] <specific, testable criterion>
|
|
105
|
+
- [ ] <specific, testable criterion>
|
|
106
|
+
|
|
107
|
+
**Technical Notes:**
|
|
108
|
+
- Constraint ref: <reference to tech-bestpractices.md constraint>
|
|
109
|
+
- Architecture ref: <reference to architecture.md section>
|
|
110
|
+
|
|
111
|
+
**Priority:** P0 (must-have) | P1 (should-have) | P2 (nice-to-have)
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Prioritization rules:
|
|
115
|
+
- **P0**: directly solves a core problem (P1/P2 in problem-statement)
|
|
116
|
+
- **P1**: supports a goal but not critical for launch
|
|
117
|
+
- **P2**: enhances experience, can be deferred
|
|
118
|
+
|
|
119
|
+
### Step 4: Write Document
|
|
120
|
+
|
|
121
|
+
#### Template A: Full PRD (new_project)
|
|
122
|
+
|
|
123
|
+
```markdown
|
|
124
|
+
# PRD: <Project Name>
|
|
125
|
+
|
|
126
|
+
## Document Metadata
|
|
127
|
+
- **Based on**: problem-statement.md, architecture.md, tech-bestpractices.md
|
|
128
|
+
- **Decisions referenced**: <list of D_* IDs>
|
|
129
|
+
- **Generated by**: gproject-spec-writer v1.0.0
|
|
130
|
+
|
|
131
|
+
## Executive Summary
|
|
132
|
+
<2-3 paragraphs: what, why, for whom, high-level how>
|
|
133
|
+
|
|
134
|
+
## Goals & Success Metrics
|
|
135
|
+
<from problem-statement.md — reference, don't duplicate>
|
|
136
|
+
| Goal ID | Goal | Success Metric | Target |
|
|
137
|
+
|---------|------|---------------|--------|
|
|
138
|
+
| G1 | <goal> | <metric> | <target> |
|
|
139
|
+
|
|
140
|
+
## Non-Goals
|
|
141
|
+
<from problem-statement.md — reference explicitly>
|
|
142
|
+
|
|
143
|
+
## Technical Foundation
|
|
144
|
+
**Stack**: <from stack-decision.md — summarize, don't duplicate>
|
|
145
|
+
**Architecture**: <from architecture.md — summarize>
|
|
146
|
+
**Key Constraints**: <from tech-bestpractices.md — list MUST constraints>
|
|
147
|
+
|
|
148
|
+
## User Stories
|
|
149
|
+
|
|
150
|
+
### Epic 1: <Epic Name>
|
|
151
|
+
<Group of related user stories>
|
|
152
|
+
|
|
153
|
+
#### US-001: <Title>
|
|
154
|
+
...
|
|
155
|
+
|
|
156
|
+
### Epic 2: <Epic Name>
|
|
157
|
+
...
|
|
158
|
+
|
|
159
|
+
## Data Model (High-Level)
|
|
160
|
+
<Key entities and relationships — aligned with DB constraints from BP>
|
|
161
|
+
|
|
162
|
+
## API Surface (High-Level)
|
|
163
|
+
<Key endpoints/operations — aligned with API constraints from BP>
|
|
164
|
+
|
|
165
|
+
## Security Requirements
|
|
166
|
+
<Aligned with security constraints from BP>
|
|
167
|
+
|
|
168
|
+
## Testing Requirements
|
|
169
|
+
<Aligned with testing constraints from BP — reference test pyramid targets>
|
|
170
|
+
|
|
171
|
+
## Out of Scope
|
|
172
|
+
<Explicit reference to non-goals + any additional scope exclusions>
|
|
173
|
+
|
|
174
|
+
## Open Questions
|
|
175
|
+
<Any remaining ambiguities — flagged for orchestrator>
|
|
176
|
+
|
|
177
|
+
## Traceability Matrix
|
|
178
|
+
| User Story | Goal | Problem | BP Constraint | Architecture Section |
|
|
179
|
+
|-----------|------|---------|---------------|---------------------|
|
|
180
|
+
| US-001 | G1 | P1 | Frontend.MUST.1 | Layer: API |
|
|
181
|
+
| US-002 | G1 | P1 | Backend.MUST.3 | Layer: Service |
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
#### Template B: Implementation Plan (task_in_project)
|
|
185
|
+
|
|
186
|
+
```markdown
|
|
187
|
+
# Implementation Plan: <Task Name>
|
|
188
|
+
|
|
189
|
+
## Document Metadata
|
|
190
|
+
- **Based on**: discovery-brief.md, architecture.md, tech-bestpractices.md
|
|
191
|
+
- **Existing project context**: ai/context.md
|
|
192
|
+
- **Decisions referenced**: <list of D_* IDs>
|
|
193
|
+
|
|
194
|
+
## Summary
|
|
195
|
+
<What needs to be done, why, and how it fits into existing architecture>
|
|
196
|
+
|
|
197
|
+
## Impact Analysis
|
|
198
|
+
### Files Affected
|
|
199
|
+
| File/Module | Change Type | Risk |
|
|
200
|
+
|------------|------------|------|
|
|
201
|
+
| <path> | modify / create / delete | low / medium / high |
|
|
202
|
+
|
|
203
|
+
### Dependencies
|
|
204
|
+
- <component X depends on this change>
|
|
205
|
+
- <this change requires Y to be done first>
|
|
206
|
+
|
|
207
|
+
## Implementation Steps
|
|
208
|
+
|
|
209
|
+
### Step 1: <Title>
|
|
210
|
+
**What**: <specific change>
|
|
211
|
+
**Where**: <file paths>
|
|
212
|
+
**Pattern to follow**: <reference existing project patterns>
|
|
213
|
+
**BP constraint**: <reference tech-bestpractices.md>
|
|
214
|
+
**Acceptance criteria**:
|
|
215
|
+
- [ ] <testable criterion>
|
|
216
|
+
|
|
217
|
+
### Step 2: ...
|
|
218
|
+
|
|
219
|
+
## Testing Plan
|
|
220
|
+
<Aligned with testing constraints — what tests to write, what coverage>
|
|
221
|
+
|
|
222
|
+
## Migration / Rollback Plan (if applicable)
|
|
223
|
+
<How to roll back if something goes wrong>
|
|
224
|
+
|
|
225
|
+
## Traceability Matrix
|
|
226
|
+
| Step | Goal | BP Constraint | Existing Pattern |
|
|
227
|
+
|------|------|---------------|-----------------|
|
|
228
|
+
| Step 1 | G1 | Backend.MUST.2 | existing-service.ts pattern |
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Step 5: Self-Validate
|
|
232
|
+
|
|
233
|
+
Before returning, check:
|
|
234
|
+
- [ ] Every user story traces to a goal
|
|
235
|
+
- [ ] No features from non-goals list
|
|
236
|
+
- [ ] Every technical note references a BP constraint
|
|
237
|
+
- [ ] All acceptance criteria are testable (no "should work well")
|
|
238
|
+
- [ ] Traceability matrix is complete
|
|
239
|
+
|
|
240
|
+
If self-validation finds issues → fix them. If unfixable → return `DONE_WITH_CONCERNS`.
|
|
241
|
+
|
|
242
|
+
### Step 6: Return Summary
|
|
243
|
+
|
|
244
|
+
Compact summary: document type, total user stories / steps,
|
|
245
|
+
P0 count, any concerns or gaps found during self-validation.
|