sdd-jc-methodology 0.2.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/.claude/commands/sdd-archive.md +122 -0
- package/.claude/commands/sdd-constitution.md +240 -0
- package/.claude/commands/sdd-execute.md +132 -0
- package/.claude/commands/sdd-propose.md +149 -0
- package/.claude/commands/sdd-seo.md +251 -0
- package/.claude/commands/sdd-specify.md +264 -0
- package/.claude/commands/sdd-test.md +128 -0
- package/.claude/commands/sdd-validate.md +165 -0
- package/.claude/skills/api-design-principles/SKILL.md +528 -0
- package/.claude/skills/api-design-principles/assets/api-design-checklist.md +155 -0
- package/.claude/skills/api-design-principles/assets/rest-api-template.py +182 -0
- package/.claude/skills/api-design-principles/references/graphql-schema-design.md +583 -0
- package/.claude/skills/api-design-principles/references/rest-best-practices.md +408 -0
- package/.claude/skills/aws-serverless/SKILL.md +323 -0
- package/.claude/skills/brainstorming/SKILL.md +96 -0
- package/.claude/skills/error-handling-patterns/SKILL.md +641 -0
- package/.claude/skills/frontend-design/LICENSE.txt +177 -0
- package/.claude/skills/frontend-design/SKILL.md +272 -0
- package/.claude/skills/nestjs-expert/SKILL.md +552 -0
- package/.claude/skills/product-manager-toolkit/SKILL.md +351 -0
- package/.claude/skills/product-manager-toolkit/references/prd_templates.md +317 -0
- package/.claude/skills/product-manager-toolkit/scripts/customer_interview_analyzer.py +441 -0
- package/.claude/skills/product-manager-toolkit/scripts/rice_prioritizer.py +296 -0
- package/.claude/skills/react-doctor/AGENTS.md +15 -0
- package/.claude/skills/react-doctor/SKILL.md +19 -0
- package/.claude/skills/shadcn-ui/SKILL.md +1677 -0
- package/.claude/skills/shadcn-ui/references/learn.md +145 -0
- package/.claude/skills/shadcn-ui/references/official-ui-reference.md +1725 -0
- package/.claude/skills/shadcn-ui/references/reference.md +586 -0
- package/.claude/skills/shadcn-ui/references/ui-reference.md +1578 -0
- package/.claude/skills/stitch-design/README.md +50 -0
- package/.claude/skills/stitch-design/SKILL.md +84 -0
- package/.claude/skills/stitch-design/examples/DESIGN.md +22 -0
- package/.claude/skills/stitch-design/examples/enhanced-prompt.md +28 -0
- package/.claude/skills/stitch-design/references/design-mappings.md +45 -0
- package/.claude/skills/stitch-design/references/prompt-keywords.md +114 -0
- package/.claude/skills/stitch-design/references/tool-schemas.md +76 -0
- package/.claude/skills/stitch-design/workflows/edit-design.md +44 -0
- package/.claude/skills/stitch-design/workflows/generate-design-md.md +63 -0
- package/.claude/skills/stitch-design/workflows/text-to-design.md +47 -0
- package/.claude/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/.claude/skills/systematic-debugging/SKILL.md +296 -0
- package/.claude/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/.claude/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/.claude/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/.claude/skills/systematic-debugging/find-polluter.sh +63 -0
- package/.claude/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/.claude/skills/systematic-debugging/test-academic.md +14 -0
- package/.claude/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/.claude/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/.claude/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/.claude/skills/tailwind-design-system/SKILL.md +874 -0
- package/.claude/skills/ui-ux-pro-max/SKILL.md +377 -0
- package/.claude/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/.claude/skills/ui-ux-pro-max/data/colors.csv +97 -0
- package/.claude/skills/ui-ux-pro-max/data/icons.csv +101 -0
- package/.claude/skills/ui-ux-pro-max/data/landing.csv +31 -0
- package/.claude/skills/ui-ux-pro-max/data/products.csv +97 -0
- package/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.claude/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.claude/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.claude/skills/ui-ux-pro-max/data/styles.csv +68 -0
- package/.claude/skills/ui-ux-pro-max/data/typography.csv +58 -0
- package/.claude/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.claude/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.claude/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.claude/skills/ui-ux-pro-max/scripts/core.py +253 -0
- package/.claude/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/.claude/skills/ui-ux-pro-max/scripts/search.py +114 -0
- package/.claude/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/.claude/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/.claude/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/.claude/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/.claude/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/.claude/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/.claude/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/.claude/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/.claude/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/.claude/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/.claude/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/.claude/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/.claude/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/.claude/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/.claude/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/.claude/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/.claude/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/.claude/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/.claude/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/.claude/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/.claude/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/.claude/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/.claude/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/.claude/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/.claude/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/.claude/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/.claude/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/.claude/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/.claude/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/.claude/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/.claude/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/.claude/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/.claude/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/.claude/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/.claude/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/.claude/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/.claude/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/.claude/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/.claude/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/.claude/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/.claude/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/.claude/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/.claude/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/.claude/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/.claude/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/.claude/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/.claude/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/.claude/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/.claude/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/.claude/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/.claude/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/.claude/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/.claude/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/.claude/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/.claude/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/.mcp.json.example +12 -0
- package/CHANGELOG.md +61 -0
- package/LICENSE +21 -0
- package/README.md +571 -0
- package/assets/jc-fox-mark.svg +10 -0
- package/assets/jc-methodology-badge.png +0 -0
- package/bin/sdd-jc.js +379 -0
- package/package.json +43 -0
- package/scripts/gsc_verify.py +162 -0
package/README.md
ADDED
|
@@ -0,0 +1,571 @@
|
|
|
1
|
+
# sdd-jc-methodology
|
|
2
|
+
|
|
3
|
+
<img src="assets/jc-methodology-badge.png" alt="JC Methodology Badge" width="420">
|
|
4
|
+
|
|
5
|
+
Portable Claude configuration for the SDD JC methodology.
|
|
6
|
+
|
|
7
|
+
SDD JC is a constitution-first, spec-driven methodology for AI-assisted development. It keeps product intent, UX direction, technical design, implementation tasks, tests, and validation evidence in repository documentation so humans and agents can work from the same durable context.
|
|
8
|
+
|
|
9
|
+
## Repository Structure
|
|
10
|
+
|
|
11
|
+
- `.claude/commands/` — custom SDD command prompts
|
|
12
|
+
- `.claude/skills/` — required and preferred skills used by the methodology
|
|
13
|
+
- `scripts/` — helper scripts referenced by commands (e.g. `gsc_verify.py`)
|
|
14
|
+
- `.mcp.json.example` — reference MCP server configuration (e.g. `gsc`)
|
|
15
|
+
- `dotfiles/` — environment snapshots for Neovim and tmux
|
|
16
|
+
|
|
17
|
+
## Contents
|
|
18
|
+
|
|
19
|
+
- `.claude/commands/`
|
|
20
|
+
- `sdd-constitution.md`
|
|
21
|
+
- `sdd-propose.md`
|
|
22
|
+
- `sdd-specify.md`
|
|
23
|
+
- `sdd-execute.md`
|
|
24
|
+
- `sdd-test.md`
|
|
25
|
+
- `sdd-validate.md`
|
|
26
|
+
- `sdd-archive.md`
|
|
27
|
+
- `sdd-seo.md`
|
|
28
|
+
- `.claude/skills/`
|
|
29
|
+
- `api-design-principles`
|
|
30
|
+
- `aws-serverless`
|
|
31
|
+
- `brainstorming`
|
|
32
|
+
- `error-handling-patterns`
|
|
33
|
+
- `frontend-design`
|
|
34
|
+
- `nestjs-expert`
|
|
35
|
+
- `product-manager-toolkit`
|
|
36
|
+
- `react-doctor`
|
|
37
|
+
- `shadcn-ui`
|
|
38
|
+
- `stitch-design`
|
|
39
|
+
- `systematic-debugging`
|
|
40
|
+
- `tailwind-design-system`
|
|
41
|
+
- `ui-ux-pro-max`
|
|
42
|
+
- `vercel-react-best-practices`
|
|
43
|
+
|
|
44
|
+
## Install
|
|
45
|
+
|
|
46
|
+
Install the methodology with the bundled CLI. The installer can target Claude, OpenCode, or both.
|
|
47
|
+
|
|
48
|
+
### Prerequisites
|
|
49
|
+
|
|
50
|
+
- Node.js 18 or newer
|
|
51
|
+
- `pnpm`, `npm`, or another Node package runner
|
|
52
|
+
- Claude Code and/or OpenCode installed, depending on where you want to use the methodology
|
|
53
|
+
|
|
54
|
+
### Step 1: Choose The Target Tool
|
|
55
|
+
|
|
56
|
+
| Target | Use When | Default Install Path |
|
|
57
|
+
|---|---|---|
|
|
58
|
+
| Claude | You use Claude Code slash commands and Claude skills | `~/.claude` |
|
|
59
|
+
| OpenCode | You use OpenCode commands and skills | `~/.config/opencode` |
|
|
60
|
+
| Both | You switch between Claude Code and OpenCode | both paths |
|
|
61
|
+
|
|
62
|
+
### Step 2: Install With `pnpm dlx`
|
|
63
|
+
|
|
64
|
+
Install for Claude:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pnpm dlx sdd-jc-methodology install --tool claude
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Install for OpenCode:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
pnpm dlx sdd-jc-methodology install --tool opencode
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Install for both tools:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
pnpm dlx sdd-jc-methodology install --tool both
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Claude is the default, so this is equivalent to `--tool claude`:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
pnpm dlx sdd-jc-methodology install
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Step 3: Verify The Installation
|
|
89
|
+
|
|
90
|
+
Check Claude installation:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
pnpm dlx sdd-jc-methodology doctor --tool claude
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Check OpenCode installation:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
pnpm dlx sdd-jc-methodology doctor --tool opencode
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Check both:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
pnpm dlx sdd-jc-methodology doctor --tool both
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Expected result: every command, skill, and helper resource shows `OK`.
|
|
109
|
+
|
|
110
|
+
### Step 4: Restart Your Tool
|
|
111
|
+
|
|
112
|
+
Restart Claude Code or OpenCode after installation. Running sessions may not pick up new commands or skills until the tool restarts.
|
|
113
|
+
|
|
114
|
+
### Step 5: Confirm Commands Are Available
|
|
115
|
+
|
|
116
|
+
In Claude Code or OpenCode, type `/` and confirm these commands are available:
|
|
117
|
+
|
|
118
|
+
```text
|
|
119
|
+
/sdd-constitution
|
|
120
|
+
/sdd-propose
|
|
121
|
+
/sdd-specify
|
|
122
|
+
/sdd-execute
|
|
123
|
+
/sdd-test
|
|
124
|
+
/sdd-validate
|
|
125
|
+
/sdd-archive
|
|
126
|
+
/sdd-seo
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Then start a project with:
|
|
130
|
+
|
|
131
|
+
```text
|
|
132
|
+
/sdd-constitution
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Or, if the project already has a strong baseline:
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
/sdd-propose add-my-feature
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Local Checkout Install
|
|
142
|
+
|
|
143
|
+
If you are installing from this repository before publishing to npm, run:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
node bin/sdd-jc.js install
|
|
147
|
+
node bin/sdd-jc.js install --tool opencode
|
|
148
|
+
node bin/sdd-jc.js install --tool both
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Verify local checkout install:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
node bin/sdd-jc.js doctor --tool both
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Global Install
|
|
158
|
+
|
|
159
|
+
If you prefer a persistent global CLI:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
pnpm add -g sdd-jc-methodology
|
|
163
|
+
sdd-jc install
|
|
164
|
+
sdd-jc install --tool opencode
|
|
165
|
+
sdd-jc doctor --tool opencode
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Install Paths
|
|
169
|
+
|
|
170
|
+
Default targets:
|
|
171
|
+
|
|
172
|
+
```text
|
|
173
|
+
Claude: ~/.claude
|
|
174
|
+
OpenCode: ~/.config/opencode
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
For Claude, the installer writes:
|
|
178
|
+
|
|
179
|
+
```text
|
|
180
|
+
~/.claude/commands/
|
|
181
|
+
~/.claude/skills/
|
|
182
|
+
~/.claude/sdd-jc/scripts/
|
|
183
|
+
~/.claude/sdd-jc/.mcp.json.example
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
For OpenCode, the installer writes:
|
|
187
|
+
|
|
188
|
+
```text
|
|
189
|
+
~/.config/opencode/commands/
|
|
190
|
+
~/.config/opencode/skills/
|
|
191
|
+
~/.config/opencode/sdd-jc/scripts/
|
|
192
|
+
~/.config/opencode/sdd-jc/.mcp.json.example
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
OpenCode loads global command markdown files from `~/.config/opencode/commands/` and skills from `~/.config/opencode/skills/`. Restart OpenCode after install or update so it loads the new files.
|
|
196
|
+
|
|
197
|
+
### Updating
|
|
198
|
+
|
|
199
|
+
Update Claude:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
pnpm dlx sdd-jc-methodology update --tool claude --force
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Update OpenCode:
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
pnpm dlx sdd-jc-methodology update --tool opencode --force
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Update both:
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
pnpm dlx sdd-jc-methodology update --tool both --force
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Use `--force` when you want packaged files to replace older installed files. Without `--force`, existing files are skipped.
|
|
218
|
+
|
|
219
|
+
### CLI Commands
|
|
220
|
+
|
|
221
|
+
| Command | Purpose |
|
|
222
|
+
|---|---|
|
|
223
|
+
| `sdd-jc install` | Install commands, skills, and helper resources |
|
|
224
|
+
| `sdd-jc update` | Reinstall packaged commands, skills, and helper resources |
|
|
225
|
+
| `sdd-jc list` | Show packaged commands, skills, and helper resources |
|
|
226
|
+
| `sdd-jc doctor` | Check whether expected files are installed |
|
|
227
|
+
|
|
228
|
+
Useful options:
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
sdd-jc install --dry-run
|
|
232
|
+
sdd-jc install --tool claude --target ./.claude
|
|
233
|
+
sdd-jc install --tool opencode --target ./.config/opencode
|
|
234
|
+
sdd-jc install --tool both --claude-target ./.claude --opencode-target ./.config/opencode
|
|
235
|
+
sdd-jc update --force
|
|
236
|
+
sdd-jc update --tool both --force
|
|
237
|
+
sdd-jc doctor --commands-only
|
|
238
|
+
sdd-jc doctor --tool opencode --skills-only
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Installer safety rules:
|
|
242
|
+
|
|
243
|
+
- existing files are skipped by default
|
|
244
|
+
- use `--force` to overwrite existing files
|
|
245
|
+
- use `--dry-run` to preview changes
|
|
246
|
+
- use `--tool claude`, `--tool opencode`, or `--tool both` to choose the destination
|
|
247
|
+
- use `--target <path>` to install a single selected tool somewhere custom
|
|
248
|
+
- use `--claude-target <path>` and `--opencode-target <path>` with `--tool both`
|
|
249
|
+
|
|
250
|
+
The helper resources under the target `sdd-jc/` folder support commands such as `/sdd-seo`, including the bundled Google Search Console verification helper.
|
|
251
|
+
|
|
252
|
+
### Troubleshooting
|
|
253
|
+
|
|
254
|
+
If commands do not appear:
|
|
255
|
+
|
|
256
|
+
- run `sdd-jc doctor --tool <claude|opencode|both>`
|
|
257
|
+
- restart Claude Code or OpenCode
|
|
258
|
+
- confirm you installed into the expected target path
|
|
259
|
+
- rerun install with `--force` if old files should be replaced
|
|
260
|
+
|
|
261
|
+
If you want to preview installation without writing files:
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
sdd-jc install --tool both --dry-run
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Manual Install
|
|
268
|
+
|
|
269
|
+
If you do not want to use the CLI, copy the repository `.claude/commands` and `.claude/skills` folders into your tool configuration location.
|
|
270
|
+
|
|
271
|
+
Typical global install target:
|
|
272
|
+
|
|
273
|
+
- `~/.claude/commands/`
|
|
274
|
+
- `~/.claude/skills/`
|
|
275
|
+
|
|
276
|
+
Typical OpenCode global install target:
|
|
277
|
+
|
|
278
|
+
- `~/.config/opencode/commands/`
|
|
279
|
+
- `~/.config/opencode/skills/`
|
|
280
|
+
|
|
281
|
+
Example:
|
|
282
|
+
|
|
283
|
+
```bash
|
|
284
|
+
cp -R .claude/commands/* ~/.claude/commands/
|
|
285
|
+
cp -R .claude/skills/* ~/.claude/skills/
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
Manual OpenCode example:
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
mkdir -p ~/.config/opencode/commands ~/.config/opencode/skills
|
|
292
|
+
cp -R .claude/commands/* ~/.config/opencode/commands/
|
|
293
|
+
cp -R .claude/skills/* ~/.config/opencode/skills/
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
## Dotfiles
|
|
297
|
+
|
|
298
|
+
The repository also includes editor and terminal configuration snapshots under `dotfiles/`:
|
|
299
|
+
|
|
300
|
+
- `dotfiles/.config/nvim/`
|
|
301
|
+
- `dotfiles/.tmux/`
|
|
302
|
+
- `dotfiles/.tmux.conf`
|
|
303
|
+
|
|
304
|
+
These are stored as portable references or backup material for the environment used with this methodology.
|
|
305
|
+
|
|
306
|
+
### Restore Neovim
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
mkdir -p ~/.config
|
|
310
|
+
cp -R dotfiles/.config/nvim ~/.config/
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### Restore tmux
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
cp dotfiles/.tmux.conf ~/.tmux.conf
|
|
317
|
+
cp -R dotfiles/.tmux ~/.tmux
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
If you prefer a lighter restore, keep `~/.tmux.conf` and reinstall plugins separately instead of copying the full plugin snapshot.
|
|
321
|
+
|
|
322
|
+
## Start Here
|
|
323
|
+
|
|
324
|
+
Use this flow for normal feature work:
|
|
325
|
+
|
|
326
|
+
1. `/sdd-constitution` - create or strengthen the project baseline.
|
|
327
|
+
2. `/sdd-propose <change-name-or-spec-path>` - capture intent, scope, and reviewable direction.
|
|
328
|
+
3. `/sdd-specify <spec-path>` - define one feature, module, bugfix, or enhancement.
|
|
329
|
+
4. `/sdd-execute <spec-path>` - implement the next approved task.
|
|
330
|
+
5. `/sdd-test <spec-path>` - prove the behavior with tests and traceability.
|
|
331
|
+
6. `/sdd-validate <spec-path>` - audit conformance before calling the work done.
|
|
332
|
+
7. `/sdd-archive <spec-path>` - preserve completed work and remove it from active specs.
|
|
333
|
+
|
|
334
|
+
Run `/sdd-constitution` first in a new repository, after a major product pivot, or when the baseline docs are missing. For an established repository with a good baseline, start at `/sdd-propose <change-name>` or `/sdd-specify <spec-path>`.
|
|
335
|
+
|
|
336
|
+
Use `/sdd-propose` when the change needs review before full specification. For very small, obvious work, you may start directly with `/sdd-specify <spec-path>`.
|
|
337
|
+
|
|
338
|
+
## Command Map
|
|
339
|
+
|
|
340
|
+
| Command | Use When | Main Output |
|
|
341
|
+
|---|---|---|
|
|
342
|
+
| `/sdd-constitution` | Starting a repo or repairing weak project context | `docs/prd.md`, system design, detailed design, general spec templates, `CLAUDE.md` guidance |
|
|
343
|
+
| `/sdd-propose <change-name-or-spec-path>` | Aligning on intent before full specification | `proposal.md` under `docs/specs/<spec-path>/` |
|
|
344
|
+
| `/sdd-specify <spec-path>` | Planning one bounded change before code | `requirements.md`, `design.md`, `tasks.md` under `docs/specs/<spec-path>/` |
|
|
345
|
+
| `/sdd-execute <spec-path>` | Implementing approved tasks | Code changes, updated `tasks.md`, `execution.md` |
|
|
346
|
+
| `/sdd-test <spec-path>` | Adding or running test evidence | `test-report.md` with requirement-to-test traceability |
|
|
347
|
+
| `/sdd-validate <spec-path>` | Checking implementation against the spec | `validation-report.md` with pass, warning, failure, and remediation items |
|
|
348
|
+
| `/sdd-archive <spec-path>` | Closing completed work after validation | Archived spec folder under `docs/specs/archive/` with `archive-summary.md` |
|
|
349
|
+
| `/sdd-seo <site-domain>` | Auditing deployed SEO and Search Console state | `seo-setup-report.md`, `seo-audit-report.md` |
|
|
350
|
+
|
|
351
|
+
## How To Choose The Right Depth
|
|
352
|
+
|
|
353
|
+
Use the lightest documentation that still makes the work clear and verifiable.
|
|
354
|
+
|
|
355
|
+
| Work Type | Recommended Depth | What To Capture |
|
|
356
|
+
|---|---|---|
|
|
357
|
+
| Small bugfix or UI tweak | Lite | Problem, affected requirement, scenario, focused task, verification command |
|
|
358
|
+
| Normal feature | Standard | Requirements, scenarios, design decisions, task breakdown, tests |
|
|
359
|
+
| High-risk change | Full | Business context, alternatives, data/API contracts, rollout, risks, observability, rollback |
|
|
360
|
+
| Cross-cutting architecture | Full plus constitution review | Updates to project baseline docs and affected specs |
|
|
361
|
+
|
|
362
|
+
Lite mode does not skip rigor. It keeps the documents short, but every requirement still needs a testable scenario and every task still needs a done criterion.
|
|
363
|
+
|
|
364
|
+
## Core Concepts
|
|
365
|
+
|
|
366
|
+
| Concept | Meaning |
|
|
367
|
+
|---|---|
|
|
368
|
+
| Constitution | Project-wide context that should not be rediscovered every session |
|
|
369
|
+
| Proposal | A lightweight review document for intent, scope, options, and risks |
|
|
370
|
+
| Spec path | A folder under `docs/specs/` for one bounded piece of work |
|
|
371
|
+
| Requirement | A testable statement of expected behavior |
|
|
372
|
+
| Scenario | A concrete Given/When/Then example that proves a requirement |
|
|
373
|
+
| Design | The technical and UX approach for satisfying requirements |
|
|
374
|
+
| Task | A small executable unit linked to requirements and design sections |
|
|
375
|
+
| Report | Evidence that the implementation was tested and validated |
|
|
376
|
+
| Archive | Completed SDD history moved under `docs/specs/archive/` |
|
|
377
|
+
|
|
378
|
+
## Spec Folder Shape
|
|
379
|
+
|
|
380
|
+
Each feature or change should live in one folder:
|
|
381
|
+
|
|
382
|
+
```text
|
|
383
|
+
docs/specs/<spec-path>/
|
|
384
|
+
├── proposal.md # created by /sdd-propose, optional but recommended
|
|
385
|
+
├── requirements.md
|
|
386
|
+
├── design.md
|
|
387
|
+
├── tasks.md
|
|
388
|
+
├── execution.md # created by /sdd-execute
|
|
389
|
+
├── test-report.md # created by /sdd-test
|
|
390
|
+
├── validation-report.md # created by /sdd-validate
|
|
391
|
+
└── archive-summary.md # created by /sdd-archive before moving
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
Choose paths that describe the domain and intent:
|
|
395
|
+
|
|
396
|
+
```text
|
|
397
|
+
docs/specs/loan/
|
|
398
|
+
docs/specs/enhancements/renewals/
|
|
399
|
+
docs/specs/admin/user-management/
|
|
400
|
+
docs/specs/bugfix/login-redirect/
|
|
401
|
+
docs/specs/changes/add-remember-me/
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
When `/sdd-propose add-remember-me` receives a bare change name, it defaults to `docs/specs/changes/add-remember-me/`. When it receives a nested path such as `bugfix/login-redirect`, it uses that path directly.
|
|
405
|
+
|
|
406
|
+
## Requirement Delta Preview
|
|
407
|
+
|
|
408
|
+
Proposals can include a lightweight delta preview. This makes reviews faster for brownfield work:
|
|
409
|
+
|
|
410
|
+
```markdown
|
|
411
|
+
## Requirement Delta Preview
|
|
412
|
+
|
|
413
|
+
### ADDED Requirements
|
|
414
|
+
|
|
415
|
+
- The system SHALL allow users to opt into extended sessions.
|
|
416
|
+
|
|
417
|
+
### MODIFIED Requirements
|
|
418
|
+
|
|
419
|
+
- Session expiration changes from a fixed timeout to configurable timeout policies.
|
|
420
|
+
|
|
421
|
+
### REMOVED Requirements
|
|
422
|
+
|
|
423
|
+
- Legacy session persistence behavior is removed after migration.
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
During `/sdd-specify`, these previews become full requirements, scenarios, design decisions, and tasks.
|
|
427
|
+
|
|
428
|
+
## Writing Good Requirements
|
|
429
|
+
|
|
430
|
+
Write requirements as behavior contracts, not implementation plans.
|
|
431
|
+
|
|
432
|
+
Use this shape when possible:
|
|
433
|
+
|
|
434
|
+
```markdown
|
|
435
|
+
### Requirement: Session Expiration
|
|
436
|
+
|
|
437
|
+
The system SHALL expire inactive user sessions after the configured timeout.
|
|
438
|
+
|
|
439
|
+
#### Scenario: Idle timeout
|
|
440
|
+
|
|
441
|
+
- GIVEN an authenticated user has an active session
|
|
442
|
+
- WHEN the session remains inactive past the configured timeout
|
|
443
|
+
- THEN the system invalidates the session
|
|
444
|
+
- AND the user must authenticate again before accessing protected pages
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
Good requirements are:
|
|
448
|
+
|
|
449
|
+
- observable by a user, system, API client, or operator
|
|
450
|
+
- measurable enough to test
|
|
451
|
+
- independent from internal class names or library choices
|
|
452
|
+
- linked to at least one implementation task
|
|
453
|
+
- covered by test evidence or an explicit accepted gap
|
|
454
|
+
|
|
455
|
+
## Review Points
|
|
456
|
+
|
|
457
|
+
Before implementation, review:
|
|
458
|
+
|
|
459
|
+
- whether the problem and scope are clear
|
|
460
|
+
- whether every requirement has at least one scenario
|
|
461
|
+
- whether design decisions explain trade-offs instead of only listing files
|
|
462
|
+
- whether tasks are small enough to execute independently
|
|
463
|
+
- whether every task has verification criteria
|
|
464
|
+
|
|
465
|
+
Before completion, review:
|
|
466
|
+
|
|
467
|
+
- whether all intended tasks are complete
|
|
468
|
+
- whether tests cover the key scenarios
|
|
469
|
+
- whether validation found unresolved failures
|
|
470
|
+
- whether the spec should be updated based on implementation discoveries
|
|
471
|
+
|
|
472
|
+
## Practical Example
|
|
473
|
+
|
|
474
|
+
For a new admin user-management feature:
|
|
475
|
+
|
|
476
|
+
```text
|
|
477
|
+
/sdd-constitution
|
|
478
|
+
/sdd-propose admin/user-management
|
|
479
|
+
/sdd-specify admin/user-management
|
|
480
|
+
/sdd-execute admin/user-management
|
|
481
|
+
/sdd-test admin/user-management
|
|
482
|
+
/sdd-validate admin/user-management
|
|
483
|
+
/sdd-archive admin/user-management
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
For a small login redirect bugfix in an established repo:
|
|
487
|
+
|
|
488
|
+
```text
|
|
489
|
+
/sdd-specify bugfix/login-redirect
|
|
490
|
+
/sdd-execute bugfix/login-redirect
|
|
491
|
+
/sdd-test bugfix/login-redirect
|
|
492
|
+
/sdd-validate bugfix/login-redirect
|
|
493
|
+
/sdd-archive bugfix/login-redirect
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
For a reviewable named change using the default `changes/` path:
|
|
497
|
+
|
|
498
|
+
```text
|
|
499
|
+
/sdd-propose add-remember-me
|
|
500
|
+
/sdd-specify changes/add-remember-me
|
|
501
|
+
/sdd-execute changes/add-remember-me
|
|
502
|
+
/sdd-test changes/add-remember-me
|
|
503
|
+
/sdd-validate changes/add-remember-me
|
|
504
|
+
/sdd-archive changes/add-remember-me
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
## Planned Improvements Inspired By OpenSpec
|
|
508
|
+
|
|
509
|
+
OpenSpec has useful ideas that fit this methodology well. Some are now supported through `/sdd-propose` and `/sdd-archive`. Remaining planned improvements:
|
|
510
|
+
|
|
511
|
+
- automated sync lifecycle for completed specs
|
|
512
|
+
- schema-style workflow templates for feature, bugfix, migration, SEO, and research-first work
|
|
513
|
+
- broader command portability beyond Claude-specific command files
|
|
514
|
+
|
|
515
|
+
### Auxiliary commands
|
|
516
|
+
|
|
517
|
+
- `/sdd-seo <site-domain>` — SEO setup & audit via Google Search Console. Verifies a domain through DNS TXT using a service account, adds the property to GSC, then audits index coverage, sitemaps, structured data, search analytics, server-side render, and internal linking. Produces `seo-setup-report.md` and `seo-audit-report.md` under `docs/specs/seo/<domain>/`, including a copy-paste implementation prompt for fixing every High-severity finding.
|
|
518
|
+
|
|
519
|
+
Dependencies bundled with this repo:
|
|
520
|
+
|
|
521
|
+
- `scripts/gsc_verify.py` — Site Verification API helper (token + verify), because the `gsc` MCP only wraps Search Console, not Site Verification.
|
|
522
|
+
- `.mcp.json.example` — reference MCP server entry for `@mikusnuz/gsc-mcp`.
|
|
523
|
+
|
|
524
|
+
Setup once per environment:
|
|
525
|
+
|
|
526
|
+
1. Enable **Site Verification API** and **Search Console API** in your Google Cloud project.
|
|
527
|
+
2. Create a service account, download its JSON key, store outside the repo.
|
|
528
|
+
3. Install Python deps: `pip install google-auth google-api-python-client`.
|
|
529
|
+
4. Copy the `gsc` block from `.mcp.json.example` into your global `~/.claude.json` (or a project `.mcp.json`) and set `GSC_SERVICE_ACCOUNT_KEY_PATH` to the absolute path of the key.
|
|
530
|
+
|
|
531
|
+
## Spec Paths
|
|
532
|
+
|
|
533
|
+
Commands accept a relative path under `docs/specs/`, not only a flat module name.
|
|
534
|
+
|
|
535
|
+
Examples:
|
|
536
|
+
|
|
537
|
+
- `loan`
|
|
538
|
+
- `enhancements/renewals`
|
|
539
|
+
- `admin/user-management`
|
|
540
|
+
|
|
541
|
+
## Dependencies
|
|
542
|
+
|
|
543
|
+
Included skills cover the default methodology path, including `ui-ux-pro-max`.
|
|
544
|
+
|
|
545
|
+
Fallback rule:
|
|
546
|
+
|
|
547
|
+
- when `ui-ux-pro-max` is unavailable, use `frontend-design` + `stitch-design` for system-design work and `frontend-design` for UI validation/testing support.
|
|
548
|
+
|
|
549
|
+
## Methodology Contract
|
|
550
|
+
|
|
551
|
+
- `/sdd-constitution` establishes the project baseline docs and `docs/specs/general-setup/` templates.
|
|
552
|
+
- `/sdd-propose` creates a lightweight proposal before full specification.
|
|
553
|
+
- `/sdd-specify` must follow those templates when generating module specs.
|
|
554
|
+
- `/sdd-execute` implements tasks from an approved spec path.
|
|
555
|
+
- `/sdd-test` validates requirement-to-test traceability.
|
|
556
|
+
- `/sdd-validate` audits implementation conformance against the spec and constitutional baseline.
|
|
557
|
+
- `/sdd-archive` preserves completed specs under `docs/specs/archive/` after validation.
|
|
558
|
+
- `/sdd-seo` operates outside the main spec lifecycle: it provisions Google Search Console ownership for a domain and produces a standalone SEO audit under `docs/specs/seo/<domain>/`. Run it any time after deployment; rerun after major content or schema changes.
|
|
559
|
+
|
|
560
|
+
## Host Assumptions
|
|
561
|
+
|
|
562
|
+
- The host Claude environment can ask follow-up questions to the user during command execution.
|
|
563
|
+
- The host environment can load local skills referenced by the commands.
|
|
564
|
+
- Repository-specific build, lint, and test commands should be preferred over hardcoded stack assumptions.
|
|
565
|
+
|
|
566
|
+
## Notes
|
|
567
|
+
|
|
568
|
+
- Commands were sourced from the current global Claude command setup.
|
|
569
|
+
- Skills were copied with their bundled references and helper assets.
|
|
570
|
+
- This repository stores the current methodology baseline so it can be reused or versioned independently.
|
|
571
|
+
- Dotfiles are snapshots of the working environment and may include plugin source copies for portability.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<svg width="640" height="180" viewBox="0 0 640 180" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="640" height="180" rx="24" fill="#0F172A"/>
|
|
3
|
+
<path d="M88 118L118 58L144 88L172 54L206 118H88Z" fill="#F59E0B"/>
|
|
4
|
+
<path d="M132 88L152 108L172 88" stroke="#0F172A" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
|
+
<circle cx="138" cy="92" r="4" fill="#0F172A"/>
|
|
6
|
+
<circle cx="166" cy="92" r="4" fill="#0F172A"/>
|
|
7
|
+
<text x="220" y="121" fill="#E5E7EB" font-family="Inter, Arial, sans-serif" font-size="104" font-weight="700" letter-spacing="2">SD</text>
|
|
8
|
+
<text x="387" y="121" fill="#38BDF8" font-family="Inter, Arial, sans-serif" font-size="104" font-weight="700" letter-spacing="2">D</text>
|
|
9
|
+
<text x="219" y="42" fill="#94A3B8" font-family="Inter, Arial, sans-serif" font-size="16" letter-spacing="3.2">JC METHODOLOGY</text>
|
|
10
|
+
</svg>
|
|
Binary file
|