opencodekit 0.15.1 → 0.15.2

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.
Files changed (51) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/template/.opencode/README.md +1 -1
  3. package/dist/template/.opencode/agent/vision.md +4 -4
  4. package/dist/template/.opencode/command/agent-browser.md +21 -0
  5. package/dist/template/.opencode/command/complete-next-task.md +77 -0
  6. package/dist/template/.opencode/command/create.md +38 -3
  7. package/dist/template/.opencode/command/design-audit.md +1 -1
  8. package/dist/template/.opencode/command/design.md +1 -1
  9. package/dist/template/.opencode/command/finish.md +8 -0
  10. package/dist/template/.opencode/command/frontend-design.md +21 -0
  11. package/dist/template/.opencode/command/index-knowledge.md +25 -0
  12. package/dist/template/.opencode/command/init.md +6 -0
  13. package/dist/template/.opencode/command/opensrc.md +58 -0
  14. package/dist/template/.opencode/command/skill-create.md +3 -3
  15. package/dist/template/.opencode/command/skill-optimize.md +2 -2
  16. package/dist/template/.opencode/command/start.md +15 -6
  17. package/dist/template/.opencode/command/ui-review.md +1 -1
  18. package/dist/template/.opencode/memory/_templates/prd.md +50 -14
  19. package/dist/template/.opencode/package.json +1 -1
  20. package/dist/template/.opencode/skill/accessibility-audit/SKILL.md +1 -1
  21. package/dist/template/.opencode/skill/agent-browser/SKILL.md +376 -0
  22. package/dist/template/.opencode/skill/design-system-audit/SKILL.md +1 -1
  23. package/dist/template/.opencode/skill/frontend-design/SKILL.md +155 -0
  24. package/dist/template/.opencode/skill/frontend-design/references/animation/motion-advanced.md +224 -0
  25. package/dist/template/.opencode/skill/frontend-design/references/animation/motion-core.md +171 -0
  26. package/dist/template/.opencode/skill/frontend-design/references/canvas/execution.md +90 -0
  27. package/dist/template/.opencode/skill/frontend-design/references/canvas/philosophy.md +94 -0
  28. package/dist/template/.opencode/skill/frontend-design/references/shadcn/accessibility.md +132 -0
  29. package/dist/template/.opencode/skill/frontend-design/references/shadcn/core-components.md +153 -0
  30. package/dist/template/.opencode/skill/frontend-design/references/shadcn/form-components.md +158 -0
  31. package/dist/template/.opencode/skill/frontend-design/references/shadcn/setup.md +69 -0
  32. package/dist/template/.opencode/skill/frontend-design/references/shadcn/theming.md +152 -0
  33. package/dist/template/.opencode/skill/frontend-design/references/tailwind/responsive.md +112 -0
  34. package/dist/template/.opencode/skill/frontend-design/references/tailwind/utilities-layout.md +134 -0
  35. package/dist/template/.opencode/skill/frontend-design/references/tailwind/utilities-styling.md +165 -0
  36. package/dist/template/.opencode/skill/frontend-design/references/tailwind/v4-config.md +147 -0
  37. package/dist/template/.opencode/skill/frontend-design/references/tailwind/v4-features.md +128 -0
  38. package/dist/template/.opencode/skill/index-knowledge/SKILL.md +358 -0
  39. package/dist/template/.opencode/skill/mockup-to-code/SKILL.md +1 -1
  40. package/dist/template/.opencode/skill/opensrc/SKILL.md +115 -0
  41. package/dist/template/.opencode/skill/opensrc/references/architecture.md +176 -0
  42. package/dist/template/.opencode/skill/opensrc/references/cli-usage.md +176 -0
  43. package/dist/template/.opencode/skill/opensrc/references/registry-support.md +137 -0
  44. package/dist/template/.opencode/skill/prd/SKILL.md +212 -0
  45. package/dist/template/.opencode/skill/prd-task/SKILL.md +128 -0
  46. package/dist/template/.opencode/skill/prd-task/references/prd-schema.json +28 -0
  47. package/dist/template/.opencode/skill/skill-creator/SKILL.md +155 -0
  48. package/dist/template/.opencode/skill/ui-ux-research/SKILL.md +1 -1
  49. package/dist/template/.opencode/skill/visual-analysis/SKILL.md +1 -1
  50. package/package.json +1 -1
  51. package/dist/template/.opencode/skill/frontend-aesthetics/SKILL.md +0 -117
@@ -0,0 +1,176 @@
1
+ # opensrc CLI Reference
2
+
3
+ ## Contents
4
+ - Fetch command (default)
5
+ - List command
6
+ - Remove command
7
+ - Clean command
8
+ - Global options
9
+
10
+ ## Fetch Command (Default)
11
+
12
+ Fetch source for packages/repos.
13
+
14
+ ```bash
15
+ opensrc [packages...] [options]
16
+ ```
17
+
18
+ ### Package Formats
19
+
20
+ | Format | Example | Description |
21
+ |--------|---------|-------------|
22
+ | `<name>` | `zod` | npm package (latest or installed version) |
23
+ | `<name>@<version>` | `zod@3.22.0` | npm package at specific version |
24
+ | `npm:<name>` | `npm:react` | Explicit npm prefix |
25
+ | `pypi:<name>` | `pypi:requests` | Python package from PyPI |
26
+ | `pip:<name>` | `pip:flask` | Alias for pypi: |
27
+ | `crates:<name>` | `crates:serde` | Rust crate from crates.io |
28
+ | `cargo:<name>` | `cargo:tokio` | Alias for crates: |
29
+
30
+ ### Repository Formats
31
+
32
+ | Format | Example |
33
+ |--------|---------|
34
+ | `owner/repo` | `vercel/ai` |
35
+ | `owner/repo@ref` | `vercel/ai@v1.0.0` |
36
+ | `owner/repo#ref` | `vercel/ai#main` |
37
+ | `github:owner/repo` | `github:facebook/react` |
38
+ | `gitlab:owner/repo` | `gitlab:inkscape/inkscape` |
39
+ | `https://github.com/...` | Full URL |
40
+
41
+ ### Options
42
+
43
+ | Option | Description |
44
+ |--------|-------------|
45
+ | `--cwd <path>` | Working directory (default: cwd) |
46
+ | `--modify` | Allow file modifications (skip prompt) |
47
+ | `--modify=false` | Deny file modifications (skip prompt) |
48
+
49
+ ### Examples
50
+
51
+ ```bash
52
+ # Single package
53
+ opensrc zod
54
+
55
+ # Multiple packages
56
+ opensrc react react-dom next
57
+
58
+ # Mixed registries
59
+ opensrc zod pypi:requests crates:serde
60
+
61
+ # Specific versions
62
+ opensrc zod@3.22.0
63
+ opensrc pypi:requests==2.31.0
64
+
65
+ # GitHub repos
66
+ opensrc vercel/ai
67
+ opensrc facebook/react@v18.2.0
68
+ ```
69
+
70
+ ## List Command
71
+
72
+ List all fetched sources.
73
+
74
+ ```bash
75
+ opensrc list [options]
76
+ ```
77
+
78
+ ### Options
79
+
80
+ | Option | Description |
81
+ |--------|-------------|
82
+ | `--json` | Output as JSON |
83
+ | `--cwd <path>` | Working directory |
84
+
85
+ ### Output
86
+
87
+ Groups by registry (npm, PyPI, crates.io) and repos:
88
+
89
+ ```
90
+ npm Packages:
91
+
92
+ zod@3.22.0
93
+ Path: opensrc/repos/github.com/colinhacks/zod
94
+ Fetched: Jan 10, 2025
95
+
96
+ Repositories:
97
+
98
+ github.com/vercel/ai@main
99
+ Path: opensrc/repos/github.com/vercel/ai
100
+ Fetched: Jan 10, 2025
101
+
102
+ Total: 1 package(s) (1 npm), 1 repo(s)
103
+ ```
104
+
105
+ ## Remove Command
106
+
107
+ Remove specific sources.
108
+
109
+ ```bash
110
+ opensrc remove <packages...> [options]
111
+ opensrc rm <packages...> # alias
112
+ ```
113
+
114
+ ### Options
115
+
116
+ | Option | Description |
117
+ |--------|-------------|
118
+ | `--cwd <path>` | Working directory |
119
+
120
+ ### Examples
121
+
122
+ ```bash
123
+ opensrc remove zod
124
+ opensrc rm pypi:requests
125
+ opensrc remove vercel/ai
126
+ ```
127
+
128
+ ## Clean Command
129
+
130
+ Remove all sources by category.
131
+
132
+ ```bash
133
+ opensrc clean [options]
134
+ ```
135
+
136
+ ### Options
137
+
138
+ | Option | Description |
139
+ |--------|-------------|
140
+ | `--packages` | Only remove packages (all registries) |
141
+ | `--repos` | Only remove repos |
142
+ | `--npm` | Only remove npm packages |
143
+ | `--pypi` | Only remove PyPI packages |
144
+ | `--crates` | Only remove crates.io packages |
145
+ | `--cwd <path>` | Working directory |
146
+
147
+ ### Examples
148
+
149
+ ```bash
150
+ opensrc clean # Remove everything
151
+ opensrc clean --packages # Remove all packages, keep repos
152
+ opensrc clean --npm # Remove only npm packages
153
+ opensrc clean --repos # Remove only repos
154
+ ```
155
+
156
+ ## File Modifications
157
+
158
+ On first run, prompts to modify:
159
+
160
+ 1. **`.gitignore`** - Adds `opensrc/` entry
161
+ 2. **`tsconfig.json`** - Adds `opensrc/` to exclude array
162
+ 3. **`AGENTS.md`** - Adds source code reference section
163
+
164
+ Choice saved to `opensrc/settings.json`.
165
+
166
+ ### AGENTS.md Section
167
+
168
+ Adds guidance for AI agents:
169
+
170
+ ```markdown
171
+ <!-- opensrc:start -->
172
+ ## Source Code Reference
173
+ Source code for dependencies is available in `opensrc/`...
174
+ See `opensrc/sources.json` for the list of available packages.
175
+ <!-- opensrc:end -->
176
+ ```
@@ -0,0 +1,137 @@
1
+ # Registry Support
2
+
3
+ ## Contents
4
+ - npm (Node.js)
5
+ - PyPI (Python)
6
+ - crates.io (Rust)
7
+ - Repository hosts
8
+
9
+ ## npm (Node.js)
10
+
11
+ **Prefixes:** `npm:` (or none - default)
12
+
13
+ **API:** `https://registry.npmjs.org/{package}`
14
+
15
+ ### Version Detection
16
+
17
+ Auto-detects installed version from (in order):
18
+ 1. `node_modules/{pkg}/package.json`
19
+ 2. `package-lock.json` (npm v6 and v7+ formats)
20
+ 3. `pnpm-lock.yaml`
21
+ 4. `yarn.lock`
22
+ 5. `package.json` dependencies (strips `^`, `~`, etc.)
23
+
24
+ ### Spec Parsing
25
+
26
+ ```
27
+ zod → name: zod, version: (detected or latest)
28
+ zod@3.22.0 → name: zod, version: 3.22.0
29
+ @babel/core → name: @babel/core (scoped)
30
+ @babel/core@7.0.0 → name: @babel/core, version: 7.0.0
31
+ ```
32
+
33
+ ### Repo URL Extraction
34
+
35
+ From `repository` field, normalizes:
36
+ - `git+https://...` → `https://...`
37
+ - `git://...` → `https://...`
38
+ - `git+ssh://git@...` → `https://...`
39
+ - Removes `.git` suffix
40
+ - Handles `github:owner/repo` shorthand
41
+
42
+ ### Monorepo Support
43
+
44
+ Uses `repository.directory` field for packages in monorepos.
45
+ Path becomes: `repos/{host}/{owner}/{repo}/{directory}`
46
+
47
+ ## PyPI (Python)
48
+
49
+ **Prefixes:** `pypi:`, `pip:`, `python:`
50
+
51
+ **API:** `https://pypi.org/pypi/{package}/json`
52
+
53
+ ### Spec Parsing
54
+
55
+ ```
56
+ requests → name: requests
57
+ requests==2.31.0 → name: requests, version: 2.31.0
58
+ requests@2.31.0 → name: requests, version: 2.31.0
59
+ ```
60
+
61
+ ### Repo URL Extraction
62
+
63
+ Checks `project_urls` in order:
64
+ 1. `Source`, `Source Code`
65
+ 2. `Repository`, `GitHub`
66
+ 3. `Code`, `Homepage`
67
+
68
+ Falls back to `home_page` if it's a git URL.
69
+
70
+ ## crates.io (Rust)
71
+
72
+ **Prefixes:** `crates:`, `cargo:`, `rust:`
73
+
74
+ **API:** `https://crates.io/api/v1/crates/{crate}`
75
+
76
+ ### Spec Parsing
77
+
78
+ ```
79
+ serde → name: serde
80
+ serde@1.0.0 → name: serde, version: 1.0.0
81
+ ```
82
+
83
+ ### Repo URL Extraction
84
+
85
+ Uses `repository` field, falls back to `homepage` if it's a git URL.
86
+
87
+ ## Repository Hosts
88
+
89
+ ### GitHub
90
+
91
+ **API:** `https://api.github.com/repos/{owner}/{repo}`
92
+
93
+ Resolves default branch, constructs clone URL.
94
+
95
+ **Rate limiting:** 60 req/hour unauthenticated. Error on 403.
96
+
97
+ ### GitLab
98
+
99
+ **API:** `https://gitlab.com/api/v4/projects/{owner}%2F{repo}`
100
+
101
+ Resolves default branch, constructs clone URL.
102
+
103
+ ### Bitbucket
104
+
105
+ Supported for parsing (`bitbucket:owner/repo`), but no API resolution.
106
+ Assumes `main` as default branch.
107
+
108
+ ## Repo Spec Formats
109
+
110
+ | Format | Example | Host |
111
+ |--------|---------|------|
112
+ | `owner/repo` | `vercel/ai` | github.com |
113
+ | `github:owner/repo` | `github:facebook/react` | github.com |
114
+ | `gitlab:owner/repo` | `gitlab:inkscape/inkscape` | gitlab.com |
115
+ | `bitbucket:owner/repo` | `bitbucket:atlassian/python-bitbucket` | bitbucket.org |
116
+ | `host/owner/repo` | `gitlab.com/owner/repo` | (from URL) |
117
+ | Full URL | `https://github.com/...` | (from URL) |
118
+
119
+ ## Ref Specifications
120
+
121
+ Append to repo spec:
122
+
123
+ | Suffix | Example | Meaning |
124
+ |--------|---------|---------|
125
+ | `@ref` | `owner/repo@v1.0.0` | Tag, branch, or commit |
126
+ | `#ref` | `owner/repo#main` | Branch (alternative syntax) |
127
+
128
+ URL paths also supported: `https://github.com/owner/repo/tree/branch`
129
+
130
+ ## Git Tag Patterns
131
+
132
+ When cloning packages, tries tags in order:
133
+ 1. `v{version}` - Most common (e.g., `v3.22.0`)
134
+ 2. `{version}` - No prefix (e.g., `3.22.0`)
135
+ 3. Default branch - Fallback with warning
136
+
137
+ Uses `--depth 1 --single-branch` for efficient cloning.
@@ -0,0 +1,212 @@
1
+ ---
2
+ name: prd
3
+ description: Create Product Requirements Documents (PRDs) that define the end state of a feature. Use when planning new features, migrations, or refactors. Generates structured PRDs with acceptance criteria.
4
+ ---
5
+
6
+ # PRD Creation Skill
7
+
8
+ Create Product Requirements Documents suitable for RFC review by Principal Engineers, Designers, and Product Owners.
9
+
10
+ The PRD describes WHAT to build and WHY, not HOW or in WHAT ORDER.
11
+
12
+ ## Beads-Native Output (Recommended)
13
+
14
+ When you are working on a Beads task (you have a bead id like `bd-...`), the PRD should live with the task artifacts:
15
+
16
+ - Write PRD to: `.beads/artifacts/<bead-id>/prd.md`
17
+
18
+ This keeps requirements + execution tasks colocated with the bead.
19
+
20
+ If no bead id exists, fall back to writing `prd-<feature-name>.md` in the project root.
21
+
22
+ ## Workflow
23
+
24
+ 1. Confirm if the user has an existing bead id.
25
+ - If yes: use `.beads/artifacts/<bead-id>/prd.md`
26
+ - If no: write `prd-<feature-name>.md` in project root
27
+ 2. Ask clarifying questions (5–7 max).
28
+ 3. Explore codebase patterns and constraints.
29
+ 4. Write a PRD that includes a machine-convertible `## Tasks` section (see below).
30
+
31
+ ## Clarifying Questions
32
+
33
+ ### Problem & Motivation
34
+
35
+ - What problem does this solve? Who experiences it?
36
+ - What's the cost of NOT solving this? (user pain, revenue, tech debt)
37
+ - Why now? What triggered this work?
38
+
39
+ ### Users & Stakeholders
40
+
41
+ - Who are the primary users? Secondary users?
42
+
43
+ ### End State & Success
44
+
45
+ - What does "done" look like? How will users interact with it?
46
+
47
+ ### Scope & Boundaries
48
+
49
+ - What's explicitly OUT of scope?
50
+ - What's deferred to future iterations?
51
+ - Are there adjacent features that must NOT be affected?
52
+
53
+ ### Constraints & Requirements
54
+
55
+ - Performance requirements?
56
+ - Security requirements? (auth, data sensitivity, compliance)
57
+ - Compatibility requirements? (browsers, versions, APIs)
58
+ - Accessibility requirements? (WCAG level, screen readers)
59
+
60
+ ### Risks & Dependencies
61
+
62
+ - What could go wrong? Technical risks?
63
+ - External service dependencies?
64
+ - What decisions are still open/contentious?
65
+
66
+ ## Output Format
67
+
68
+ Write a PRD in markdown using this structure.
69
+
70
+ IMPORTANT: include a `## Tasks` section that `prd-task` can convert.
71
+
72
+ ```markdown
73
+ # PRD: <Feature Name>
74
+
75
+ **Bead:** <bd-...>
76
+ **Date:** <YYYY-MM-DD>
77
+
78
+ ---
79
+
80
+ ## Problem Statement
81
+
82
+ ### What problem are we solving?
83
+
84
+ Clear description of the problem. Include user impact and business impact.
85
+
86
+ ### Why now?
87
+
88
+ What triggered this work? Cost of inaction?
89
+
90
+ ### Who is affected?
91
+
92
+ - **Primary users:** Description
93
+ - **Secondary users:** Description
94
+
95
+ ---
96
+
97
+ ## Proposed Solution
98
+
99
+ ### Overview
100
+
101
+ One paragraph describing what this feature does when complete.
102
+
103
+ ### User Experience (if applicable)
104
+
105
+ How will users interact with this feature? Include user flows for primary scenarios.
106
+
107
+ ---
108
+
109
+ ## End State
110
+
111
+ When this PRD is complete, the following will be true:
112
+
113
+ - [ ] Capability 1 exists and works
114
+ - [ ] Capability 2 exists and works
115
+ - [ ] All acceptance criteria pass
116
+ - [ ] Tests cover the new functionality
117
+ - [ ] Documentation is updated
118
+
119
+ ---
120
+
121
+ ## Success Metrics
122
+
123
+ ### Quantitative
124
+
125
+ | Metric | Current | Target | Measurement Method |
126
+ | -------- | ------- | ------ | ------------------ |
127
+ | Metric 1 | X | Y | How measured |
128
+
129
+ ### Qualitative
130
+
131
+ - User feedback criteria
132
+ - Team/process improvements expected
133
+
134
+ ---
135
+
136
+ ## Acceptance Criteria
137
+
138
+ ### Feature: <Name>
139
+
140
+ - [ ] Criterion 1
141
+ - [ ] Criterion 2
142
+
143
+ ---
144
+
145
+ ## Technical Context
146
+
147
+ ### Existing Patterns
148
+
149
+ - Pattern 1: `src/path/to/example.ts` - Why relevant
150
+
151
+ ### Key Files
152
+
153
+ - `src/relevant/file.ts` - Description of relevance
154
+
155
+ ---
156
+
157
+ ## Risks & Mitigations
158
+
159
+ | Risk | Likelihood | Impact | Mitigation |
160
+ | ------ | ------------ | ------------ | --------------- |
161
+ | Risk 1 | High/Med/Low | High/Med/Low | How to mitigate |
162
+
163
+ ---
164
+
165
+ ## Non-Goals (v1)
166
+
167
+ Explicitly out of scope:
168
+
169
+ - Thing we're not building - why deferred
170
+
171
+ ---
172
+
173
+ ## Tasks
174
+
175
+ Each task must be written like:
176
+
177
+ ### <Task Title> [category]
178
+
179
+ One sentence describing the end state.
180
+
181
+ **Verification:**
182
+
183
+ - A command or manual check that proves it works
184
+ - Another check
185
+
186
+ Example:
187
+
188
+ ### Registration API [api]
189
+
190
+ Users can register with email/password.
191
+
192
+ **Verification:**
193
+
194
+ - `curl -X POST /api/auth/register ...` returns 201
195
+ - Duplicate email returns 409
196
+
197
+ ---
198
+
199
+ ## Open Questions
200
+
201
+ | Question | Owner | Due Date | Status |
202
+ | ---------- | ----- | -------- | ------------- |
203
+ | Question 1 | Name | Date | Open/Resolved |
204
+ ```
205
+
206
+ ## Key Principles
207
+
208
+ - Problem Before Solution
209
+ - Define End State, Not Process
210
+ - Technical Context Enables Autonomy
211
+ - Non-Goals Prevent Scope Creep
212
+ - Risks & Alternatives Show Rigor
@@ -0,0 +1,128 @@
1
+ ---
2
+ name: prd-task
3
+ description: Convert a Beads PRD markdown file to executable JSON tasks for autonomous execution. Use after writing `.beads/artifacts/<bead-id>/prd.md`.
4
+ references:
5
+ - references/prd-schema.json
6
+ ---
7
+
8
+ # PRD Task Skill (Beads-Native)
9
+
10
+ Convert a markdown PRD into executable JSON format for autonomous task completion.
11
+
12
+ The PRD defines the **end state** via tasks with verification steps. The agent decides HOW to get there.
13
+
14
+ ## Beads-Native File Locations (Recommended)
15
+
16
+ This template uses Beads artifacts (no `.opencode/state`).
17
+
18
+ ```
19
+ .beads/artifacts/<bead-id>/
20
+ ├── prd.md # PRD created by `prd` skill
21
+ ├── prd.json # Generated task list with passes field
22
+ └── progress.txt # Cross-iteration memory (append-only)
23
+ ```
24
+
25
+ ## Workflow
26
+
27
+ 1. Input: bead id (`bd-...`).
28
+ 2. Read `.beads/artifacts/<bead-id>/prd.md`.
29
+ 3. Extract tasks from `## Tasks`.
30
+ 4. Write `.beads/artifacts/<bead-id>/prd.json`.
31
+ 5. Ensure `.beads/artifacts/<bead-id>/progress.txt` exists (create if missing).
32
+
33
+ ## Input Format
34
+
35
+ `prd-task` expects a `## Tasks` section with tasks of the form:
36
+
37
+ ```markdown
38
+ ## Tasks
39
+
40
+ ### User Registration [functional]
41
+
42
+ User can register with email and password.
43
+
44
+ **Verification:**
45
+
46
+ - POST /api/auth/register with valid email/password
47
+ - Verify 201 response with user object
48
+ - Attempt duplicate email, verify 409
49
+ ```
50
+
51
+ ## Output Format
52
+
53
+ Write JSON to `.beads/artifacts/<bead-id>/prd.json`.
54
+
55
+ ```json
56
+ {
57
+ "beadId": "bd-...",
58
+ "prdName": "<optional-slug>",
59
+ "tasks": [
60
+ {
61
+ "id": "functional-1",
62
+ "category": "functional",
63
+ "description": "User can register with email and password",
64
+ "steps": [
65
+ "POST /api/auth/register with valid email/password",
66
+ "Verify 201 response with user object",
67
+ "Attempt duplicate email, verify 409"
68
+ ],
69
+ "passes": false
70
+ }
71
+ ]
72
+ }
73
+ ```
74
+
75
+ ## Task Schema
76
+
77
+ See `references/prd-schema.json`.
78
+
79
+ ## Conversion Rules
80
+
81
+ ### Tasks from Markdown
82
+
83
+ - Each `### Title [category]` becomes a task
84
+ - Generate `id` as `<category>-<number>` (e.g., `api-1`, `db-2`) or a descriptive slug
85
+ - Text after title becomes `description`
86
+ - Items under `**Verification:**` become `steps`
87
+ - `passes` always starts `false`
88
+
89
+ ### Steps Are Verification
90
+
91
+ Steps must be written as **verification steps**, not implementation instructions.
92
+
93
+ Bad: "Add a controller and write a service"
94
+ Good: "POST /api/foo returns 201" / "bun test passes"
95
+
96
+ ## Progress File
97
+
98
+ If `.beads/artifacts/<bead-id>/progress.txt` does not exist, create it with:
99
+
100
+ ```markdown
101
+ # Progress Log
102
+
103
+ Bead: <bead-id>
104
+ Started: <YYYY-MM-DD>
105
+
106
+ ## Codebase Patterns
107
+
108
+ <!-- Consolidate reusable patterns here -->
109
+
110
+ ---
111
+
112
+ <!-- Task logs below - APPEND ONLY -->
113
+ ```
114
+
115
+ ## After Conversion
116
+
117
+ Tell the user:
118
+
119
+ ```
120
+ PRD converted:
121
+ - .beads/artifacts/<bead-id>/prd.md
122
+ - .beads/artifacts/<bead-id>/prd.json
123
+ - .beads/artifacts/<bead-id>/progress.txt
124
+
125
+ Next:
126
+ /start <bead-id>
127
+ /complete-next-task <bead-id>
128
+ ```
@@ -0,0 +1,28 @@
1
+ {
2
+ "beadId": "bd-abc123",
3
+ "prdName": "user-authentication",
4
+ "tasks": [
5
+ {
6
+ "id": "functional-1",
7
+ "category": "functional",
8
+ "description": "User can register with email and password",
9
+ "steps": [
10
+ "POST /api/auth/register with valid email/password",
11
+ "Verify 201 response with user object",
12
+ "Verify password is not in response",
13
+ "Attempt duplicate email, verify 409 response",
14
+ "Attempt invalid email, verify 400 response"
15
+ ],
16
+ "passes": false
17
+ }
18
+ ],
19
+ "context": {
20
+ "patterns": [
21
+ "API routes: src/routes/items.ts",
22
+ "Validation: src/lib/validate.ts",
23
+ "DB queries: src/db/queries/"
24
+ ],
25
+ "keyFiles": ["src/db/schema.ts", "src/routes/index.ts"],
26
+ "nonGoals": ["OAuth/social login", "Password reset", "Email verification"]
27
+ }
28
+ }