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.
Files changed (148) hide show
  1. package/.claude/commands/sdd-archive.md +122 -0
  2. package/.claude/commands/sdd-constitution.md +240 -0
  3. package/.claude/commands/sdd-execute.md +132 -0
  4. package/.claude/commands/sdd-propose.md +149 -0
  5. package/.claude/commands/sdd-seo.md +251 -0
  6. package/.claude/commands/sdd-specify.md +264 -0
  7. package/.claude/commands/sdd-test.md +128 -0
  8. package/.claude/commands/sdd-validate.md +165 -0
  9. package/.claude/skills/api-design-principles/SKILL.md +528 -0
  10. package/.claude/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  11. package/.claude/skills/api-design-principles/assets/rest-api-template.py +182 -0
  12. package/.claude/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  13. package/.claude/skills/api-design-principles/references/rest-best-practices.md +408 -0
  14. package/.claude/skills/aws-serverless/SKILL.md +323 -0
  15. package/.claude/skills/brainstorming/SKILL.md +96 -0
  16. package/.claude/skills/error-handling-patterns/SKILL.md +641 -0
  17. package/.claude/skills/frontend-design/LICENSE.txt +177 -0
  18. package/.claude/skills/frontend-design/SKILL.md +272 -0
  19. package/.claude/skills/nestjs-expert/SKILL.md +552 -0
  20. package/.claude/skills/product-manager-toolkit/SKILL.md +351 -0
  21. package/.claude/skills/product-manager-toolkit/references/prd_templates.md +317 -0
  22. package/.claude/skills/product-manager-toolkit/scripts/customer_interview_analyzer.py +441 -0
  23. package/.claude/skills/product-manager-toolkit/scripts/rice_prioritizer.py +296 -0
  24. package/.claude/skills/react-doctor/AGENTS.md +15 -0
  25. package/.claude/skills/react-doctor/SKILL.md +19 -0
  26. package/.claude/skills/shadcn-ui/SKILL.md +1677 -0
  27. package/.claude/skills/shadcn-ui/references/learn.md +145 -0
  28. package/.claude/skills/shadcn-ui/references/official-ui-reference.md +1725 -0
  29. package/.claude/skills/shadcn-ui/references/reference.md +586 -0
  30. package/.claude/skills/shadcn-ui/references/ui-reference.md +1578 -0
  31. package/.claude/skills/stitch-design/README.md +50 -0
  32. package/.claude/skills/stitch-design/SKILL.md +84 -0
  33. package/.claude/skills/stitch-design/examples/DESIGN.md +22 -0
  34. package/.claude/skills/stitch-design/examples/enhanced-prompt.md +28 -0
  35. package/.claude/skills/stitch-design/references/design-mappings.md +45 -0
  36. package/.claude/skills/stitch-design/references/prompt-keywords.md +114 -0
  37. package/.claude/skills/stitch-design/references/tool-schemas.md +76 -0
  38. package/.claude/skills/stitch-design/workflows/edit-design.md +44 -0
  39. package/.claude/skills/stitch-design/workflows/generate-design-md.md +63 -0
  40. package/.claude/skills/stitch-design/workflows/text-to-design.md +47 -0
  41. package/.claude/skills/systematic-debugging/CREATION-LOG.md +119 -0
  42. package/.claude/skills/systematic-debugging/SKILL.md +296 -0
  43. package/.claude/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  44. package/.claude/skills/systematic-debugging/condition-based-waiting.md +115 -0
  45. package/.claude/skills/systematic-debugging/defense-in-depth.md +122 -0
  46. package/.claude/skills/systematic-debugging/find-polluter.sh +63 -0
  47. package/.claude/skills/systematic-debugging/root-cause-tracing.md +169 -0
  48. package/.claude/skills/systematic-debugging/test-academic.md +14 -0
  49. package/.claude/skills/systematic-debugging/test-pressure-1.md +58 -0
  50. package/.claude/skills/systematic-debugging/test-pressure-2.md +68 -0
  51. package/.claude/skills/systematic-debugging/test-pressure-3.md +69 -0
  52. package/.claude/skills/tailwind-design-system/SKILL.md +874 -0
  53. package/.claude/skills/ui-ux-pro-max/SKILL.md +377 -0
  54. package/.claude/skills/ui-ux-pro-max/data/charts.csv +26 -0
  55. package/.claude/skills/ui-ux-pro-max/data/colors.csv +97 -0
  56. package/.claude/skills/ui-ux-pro-max/data/icons.csv +101 -0
  57. package/.claude/skills/ui-ux-pro-max/data/landing.csv +31 -0
  58. package/.claude/skills/ui-ux-pro-max/data/products.csv +97 -0
  59. package/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  60. package/.claude/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  61. package/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  62. package/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  63. package/.claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  64. package/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  65. package/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  66. package/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  67. package/.claude/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  68. package/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  69. package/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  70. package/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  71. package/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  72. package/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  73. package/.claude/skills/ui-ux-pro-max/data/styles.csv +68 -0
  74. package/.claude/skills/ui-ux-pro-max/data/typography.csv +58 -0
  75. package/.claude/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  76. package/.claude/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  77. package/.claude/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  78. package/.claude/skills/ui-ux-pro-max/scripts/core.py +253 -0
  79. package/.claude/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
  80. package/.claude/skills/ui-ux-pro-max/scripts/search.py +114 -0
  81. package/.claude/skills/vercel-react-best-practices/AGENTS.md +2934 -0
  82. package/.claude/skills/vercel-react-best-practices/SKILL.md +136 -0
  83. package/.claude/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  84. package/.claude/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  85. package/.claude/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  86. package/.claude/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  87. package/.claude/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
  88. package/.claude/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  89. package/.claude/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  90. package/.claude/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  91. package/.claude/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
  92. package/.claude/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  93. package/.claude/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  94. package/.claude/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  95. package/.claude/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  96. package/.claude/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  97. package/.claude/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  98. package/.claude/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  99. package/.claude/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  100. package/.claude/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  101. package/.claude/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  102. package/.claude/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  103. package/.claude/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  104. package/.claude/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  105. package/.claude/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  106. package/.claude/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  107. package/.claude/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  108. package/.claude/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  109. package/.claude/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  110. package/.claude/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  111. package/.claude/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  112. package/.claude/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  113. package/.claude/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  114. package/.claude/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  115. package/.claude/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  116. package/.claude/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  117. package/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  118. package/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  119. package/.claude/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  120. package/.claude/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  121. package/.claude/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  122. package/.claude/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  123. package/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  124. package/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  125. package/.claude/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  126. package/.claude/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  127. package/.claude/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  128. package/.claude/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  129. package/.claude/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  130. package/.claude/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  131. package/.claude/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  132. package/.claude/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  133. package/.claude/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  134. package/.claude/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  135. package/.claude/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  136. package/.claude/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  137. package/.claude/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  138. package/.claude/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  139. package/.claude/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  140. package/.mcp.json.example +12 -0
  141. package/CHANGELOG.md +61 -0
  142. package/LICENSE +21 -0
  143. package/README.md +571 -0
  144. package/assets/jc-fox-mark.svg +10 -0
  145. package/assets/jc-methodology-badge.png +0 -0
  146. package/bin/sdd-jc.js +379 -0
  147. package/package.json +43 -0
  148. package/scripts/gsc_verify.py +162 -0
@@ -0,0 +1,251 @@
1
+ # SEO Setup & Audit via Google Search Console
2
+
3
+ Provision Google Search Console access for a domain via a Google Cloud service account, then run a full SEO audit (index coverage, sitemaps, structured data, search analytics) and generate an audit report under the spec path. Produces `seo-setup-report.md` and `seo-audit-report.md`.
4
+
5
+ ## Usage
6
+
7
+ ```
8
+ /sdd-seo <site-domain>
9
+ ```
10
+
11
+ **Examples:**
12
+
13
+ - `/sdd-seo calismiledesign.com`
14
+ - `/sdd-seo seo/calismiledesign.com`
15
+ - `/sdd-seo agrosmartco.com`
16
+
17
+ ## Arguments
18
+
19
+ - `$ARGUMENTS` — Either a bare apex domain (e.g. `example.com`) or a relative path under `docs/specs/` (e.g. `seo/example.com`). When a bare domain is given, the spec path defaults to `docs/specs/seo/<domain>/`.
20
+
21
+ ## Prerequisites
22
+
23
+ The user must provide (or confirm) once per Google Cloud project:
24
+
25
+ 1. A Google Cloud service account JSON key file, absolute path.
26
+ 2. Three APIs enabled in that GCP project:
27
+ - **Site Verification API** (`siteverification.googleapis.com`)
28
+ - **Search Console API** (`searchconsole.googleapis.com`)
29
+ - **Web Search Indexing API** is **NOT required** — Google only honors it for `JobPosting` and `BroadcastEvent` schemas; do not push users to enable it for generic content sites.
30
+ 3. DNS provider access for the target domain (to add a TXT record).
31
+ 4. The GSC MCP server configured in `~/.claude.json` or project `.mcp.json` with:
32
+ ```json
33
+ "gsc": {
34
+ "command": "npx",
35
+ "args": ["-y", "@mikusnuz/gsc-mcp"],
36
+ "env": {
37
+ "GSC_SERVICE_ACCOUNT_KEY_PATH": "<absolute path to JSON key>"
38
+ }
39
+ }
40
+ ```
41
+ If `GSC_SITE_URL` is set, prefer the `sc-domain:` form (e.g. `sc-domain:example.com`) over the URL-prefix form.
42
+ 5. A local helper for the Site Verification API. The `gsc` MCP does **not** expose Site Verification endpoints (no `getToken`, no `verify`) — it only wraps the Search Console API. Use the bundled `scripts/gsc_verify.py` from `sdd-jc-methodology` (depends on `google-auth` and `google-api-python-client`). Invoke it as:
43
+
44
+ ```bash
45
+ GSC_KEY_PATH=/abs/path/to/key.json python3 scripts/gsc_verify.py get <domain>
46
+ GSC_KEY_PATH=/abs/path/to/key.json python3 scripts/gsc_verify.py verify <domain>
47
+ ```
48
+
49
+ If any prerequisite is missing, stop and report exactly what is missing and how to obtain it.
50
+
51
+ ## Tool Inventory
52
+
53
+ | Phase | Endpoint | Source |
54
+ |---|---|---|
55
+ | 1.1 Get TXT token | `siteVerification.webResource.getToken` | Site Verification API (helper script) |
56
+ | 1.3 Verify ownership | `siteVerification.webResource.insert` | Site Verification API (helper script) |
57
+ | 1.4 Add property | `sites_add` | `gsc` MCP |
58
+ | 1.5 Confirm | `sites_list` | `gsc` MCP |
59
+ | 2.1 Sitemaps | `sitemaps_list`, `sitemaps_submit` | `gsc` MCP |
60
+ | 2.2 Index coverage | `url_inspection_inspect` | `gsc` MCP |
61
+ | 2.4 Analytics | `search_analytics_query` | `gsc` MCP |
62
+ | 2.5 Render | raw `curl -A Googlebot/2.1` | shell |
63
+
64
+ ---
65
+
66
+ ## Behavior
67
+
68
+ ### Phase 0: Setup
69
+
70
+ 1. Resolve the spec path. If `$ARGUMENTS` is a bare domain, set `SPEC_PATH = seo/<domain>`. Otherwise treat `$ARGUMENTS` as the literal spec path.
71
+ 2. Create directory `docs/specs/$SPEC_PATH/` if it does not exist.
72
+ 3. Read the constitutional templates and project context as defined in `sdd-specify`:
73
+ - `docs/specs/general-setup/`
74
+ - `docs/prd.md`
75
+ - `docs/system-design/design.md` or `docs/system-design.md`
76
+ - `docs/detailed-design/detailed-design.md` or `docs/detailed-design.md`
77
+ - Root `CLAUDE.md`
78
+ 4. Confirm the GSC MCP is reachable. If not, stop and report.
79
+
80
+ ---
81
+
82
+ ### Phase 1: Verify & Add Property
83
+
84
+ **Role:** SEO Engineer — register the service account as a verified owner of the domain in Google Search Console.
85
+
86
+ #### Step 1.1 — Generate the DNS TXT token
87
+
88
+ Call the Site Verification API to obtain the verification token for `sc-domain:<domain>`. Present the user with the exact TXT record to add:
89
+
90
+ ```
91
+ Type: TXT
92
+ Host: @ (root of <domain>)
93
+ Value: google-site-verification=<token>
94
+ ```
95
+
96
+ #### Step 1.2 — Wait for DNS propagation
97
+
98
+ Ask the user to confirm the TXT record is live, then verify with a DNS lookup before proceeding. Do not loop silently — fail clearly if propagation has not happened after a reasonable check.
99
+
100
+ #### Step 1.3 — Verify ownership
101
+
102
+ Call the Site Verification API `verify` endpoint. On success, the service account becomes an owner of the property.
103
+
104
+ #### Step 1.4 — Add the property to Search Console
105
+
106
+ Verification alone does not add the property to Search Console for the service account. Explicitly call `sites_add` with `sc-domain:<domain>` so the property appears in `sites_list` with `permissionLevel: siteOwner`.
107
+
108
+ #### Step 1.5 — Write `seo-setup-report.md`
109
+
110
+ Produce `docs/specs/$SPEC_PATH/seo-setup-report.md` documenting:
111
+
112
+ 1. Document Control (date, domain, service account email, GCP project)
113
+ 2. Prerequisites checked
114
+ 3. DNS TXT record value installed
115
+ 4. Verification result
116
+ 5. `sites_list` confirmation output
117
+ 6. Notes / caveats
118
+
119
+ ---
120
+
121
+ ### Phase 2: Audit
122
+
123
+ **Role:** Technical SEO Auditor — measure the state of the domain in Google's index.
124
+
125
+ Use `systematic-debugging` when results are inconsistent with site reality.
126
+
127
+ Skill preference for any UX/UI recommendations:
128
+
129
+ - `ui-ux-pro-max` if available
130
+ - otherwise `frontend-design`
131
+
132
+ #### Step 2.1 — Sitemap audit
133
+
134
+ 1. List submitted sitemaps via `sitemaps_list`.
135
+ 2. If none submitted but `https://<domain>/sitemap.xml` or `/sitemap-index.xml` exists, propose submission with `sitemaps_submit` and ask before submitting.
136
+ 3. Fetch each sitemap with `curl -sL` and enumerate URLs.
137
+
138
+ #### Step 2.2 — Index coverage
139
+
140
+ For every URL in the sitemap (cap at 25 for cost; sample evenly across locales and sections), call `url_inspection_inspect`. Bucket each URL into:
141
+
142
+ - `PASS` — Submitted and indexed
143
+ - `NEUTRAL` — Discovered – currently not indexed
144
+ - `NEUTRAL` — URL is unknown to Google
145
+ - `NEUTRAL` — Page with redirect
146
+ - `FAIL` — anything else (e.g. blocked, server error, soft 404)
147
+
148
+ Record `googleCanonical`, `userCanonical`, `pageFetchState`, `crawledAs`, `lastCrawlTime` for each.
149
+
150
+ #### Step 2.3 — Structured data audit
151
+
152
+ From `url_inspection_inspect.richResultsResult`, collect every rich-result item flagged with `WARNING` or `ERROR`. For each, fetch the page with a Googlebot user agent and extract the offending JSON-LD block so the report can show the exact bad value and the exact corrected value.
153
+
154
+ Common findings to surface:
155
+
156
+ - `VideoObject.uploadDate` missing time or timezone (use ISO 8601 `YYYY-MM-DDTHH:MM:SS±HH:MM`)
157
+ - `Product`, `Review`, `Organization` missing required fields
158
+
159
+ #### Step 2.4 — Search analytics
160
+
161
+ Call `search_analytics_query` for the last 28 days (or last 90 if available), grouped by:
162
+
163
+ - `query` (top 25)
164
+ - `page` (top 25)
165
+ - `country` (top 10)
166
+ - `device` (all)
167
+
168
+ If the property is newly verified and returns no rows, record that explicitly and note that data typically appears within 2–7 days.
169
+
170
+ #### Step 2.5 — Render audit
171
+
172
+ For 2–3 sampled pages, fetch them with `curl -sL -A "Googlebot/2.1"` and measure:
173
+
174
+ - HTML size in bytes
175
+ - Visible text length in characters and word count
176
+ - Whether the main content is present in server-rendered HTML (vs JS-only)
177
+
178
+ This separates "thin content" failures from "JS render" failures.
179
+
180
+ #### Step 2.6 — Internal linking quick check
181
+
182
+ Fetch the homepage and count anchor links to each sitemap URL. URLs with zero internal links from the homepage are flagged as orphan-like.
183
+
184
+ ---
185
+
186
+ ### Phase 3: Write `seo-audit-report.md`
187
+
188
+ Generate `docs/specs/$SPEC_PATH/seo-audit-report.md` using `docs/specs/general-setup/validation-report.md` as the format source where it fits.
189
+
190
+ Required sections:
191
+
192
+ 1. Document Control
193
+ 2. Executive Summary — one-paragraph verdict + 3–5 bullet headline findings.
194
+ 3. Index Coverage Table — every audited URL with its bucket and last crawl time.
195
+ 4. Sitemap Status
196
+ 5. Structured Data Findings — exact broken JSON-LD blocks with corrected versions.
197
+ 6. Search Analytics Summary — top queries / pages / devices / countries, or an explicit "no data yet" note.
198
+ 7. Render Audit
199
+ 8. Internal Linking Findings
200
+ 9. Remediation Plan — prioritized (High / Medium / Low) actionable items, each scoped enough that an implementer can execute it without further discovery.
201
+ 10. Re-audit Schedule — when to run `/sdd-seo <domain>` again.
202
+
203
+ The report title must be `# SEO Audit Report — <domain>`.
204
+
205
+ ---
206
+
207
+ ### Phase 4: Generate a Fix Prompt
208
+
209
+ Append to the audit report a section titled `## Implementation Prompt` containing a fenced, copy-paste prompt that can be handed to Claude Code (or any engineer) inside the site's codebase to fix every High-severity finding. The prompt must:
210
+
211
+ - Reference each finding by ID from the remediation plan.
212
+ - Include exact JSON-LD before/after snippets where structured data is broken.
213
+ - Include exact URL pairs for hreflang corrections.
214
+ - End with "Show me a diff of every change before applying. Do not deploy until I approve."
215
+
216
+ ---
217
+
218
+ ### Phase 5: Present & Approve
219
+
220
+ Present a short summary of:
221
+
222
+ - Setup status (Phase 1 outcome).
223
+ - Audit headline findings and counts per bucket.
224
+ - The number of High / Medium / Low remediation items.
225
+ - Paths to the two generated reports.
226
+
227
+ Ask the user whether to also run the same flow against any other properties under the same service account.
228
+
229
+ ---
230
+
231
+ ## Verification Checklist
232
+
233
+ After the command completes, verify:
234
+
235
+ - [ ] `docs/specs/$SPEC_PATH/seo-setup-report.md` exists and references the actual TXT token used.
236
+ - [ ] `docs/specs/$SPEC_PATH/seo-audit-report.md` exists with all required sections.
237
+ - [ ] `sites_list` shows the property with `permissionLevel: siteOwner`.
238
+ - [ ] Every URL in the sitemap is either audited or explicitly excluded with a reason.
239
+ - [ ] Every structured-data warning is reproduced with the exact bad value and the exact fix.
240
+ - [ ] The implementation prompt is self-contained and would not require this conversation to execute.
241
+
242
+ ---
243
+
244
+ ## Error Handling
245
+
246
+ - If the Site Verification API returns `failedVerification`, do not retry blindly — surface the underlying reason (TXT not visible, wrong record, DNSSEC lag) and stop.
247
+ - If `sites_add` fails with 403, the service account is not yet a verified owner — return to Phase 1.
248
+ - If `sites_list` returns empty after a successful `sites_add`, the MCP cached an old session — instruct the user to restart Claude Code or the `gsc` MCP and retry.
249
+ - If `search_analytics_query` returns no rows for a newly verified property, this is expected. Do not mark as failure.
250
+ - If the Indexing API is suggested as a fix, decline it for non-`JobPosting`/`BroadcastEvent` content and explain why.
251
+ - If a skill is unavailable, fall back to the next documented skill and note it in the report.
@@ -0,0 +1,264 @@
1
+ # Generate SDD for Module
2
+
3
+ Generate a clear Spec-Driven Development document set for one bounded module, feature, bugfix, or enhancement inside `docs/specs/`.
4
+
5
+ The goal is not to create long documents. The goal is to make the intended behavior, design choices, implementation tasks, and verification path easy to review before code is written.
6
+
7
+ If `proposal.md` already exists for the same spec path, treat it as the approved intent and convert it into full requirements, design, and tasks. If no proposal exists, create the spec directly from the user's request and repository context.
8
+
9
+ ## Usage
10
+
11
+ ```
12
+ /sdd-specify <spec-path>
13
+ ```
14
+
15
+ **Examples:**
16
+
17
+ - `/sdd-specify loan`
18
+ - `/sdd-specify enhancements/renewals`
19
+ - `/sdd-specify admin/user-management`
20
+
21
+ ## Arguments
22
+
23
+ - `$ARGUMENTS` — Relative path under `docs/specs/` where the spec should live. It may be a flat module name or a nested taxonomy path.
24
+
25
+ ## Output
26
+
27
+ Create or update these files under `docs/specs/$ARGUMENTS/`:
28
+
29
+ - `proposal.md` — optional prior intent document created by `/sdd-propose`
30
+ - `requirements.md` — what behavior must exist and why it matters
31
+ - `design.md` — how the behavior will be implemented within the current architecture
32
+ - `tasks.md` — small executable tasks linked to requirements and design sections
33
+
34
+ Use the lightest useful depth:
35
+
36
+ | Depth | Use For | Documentation Style |
37
+ |---|---|---|
38
+ | Lite | Small bugfixes, copy updates, narrow UI tweaks | Short sections, focused requirements, one or a few tasks |
39
+ | Standard | Normal features and enhancements | Full requirements, scenarios, design decisions, task breakdown |
40
+ | Full | Risky, cross-cutting, API, data, auth, or migration work | Include alternatives, rollout, risks, observability, rollback |
41
+
42
+ Lite mode still requires testable requirements, scenarios, and done criteria.
43
+
44
+ ## Behavior
45
+
46
+ ### Step 0: Setup
47
+
48
+ 1. Create directory `docs/specs/$ARGUMENTS/` if it does not exist.
49
+ 2. Read `docs/specs/$ARGUMENTS/proposal.md` if it exists.
50
+ 3. Read the constitutional templates in `docs/specs/general-setup/`:
51
+ - `requirements.md`
52
+ - `design.md`
53
+ - `task.md`
54
+ 4. Read project-level reference context:
55
+ - `docs/prd.md`
56
+ - `docs/system-design/design.md`
57
+ - `docs/detailed-design/detailed-design.md`
58
+ - Root `CLAUDE.md`
59
+ - Package-level `CLAUDE.md` files if they exist
60
+ 5. Read nearby or dependent specs under `docs/specs/` that overlap with the requested path.
61
+ 6. Respect the repository's current package layout and naming conventions instead of assuming a fixed stack.
62
+
63
+ ---
64
+
65
+ ### Phase 1: Requirements (`requirements.md`)
66
+
67
+ **Role:** Product Owner — define what is being built and why.
68
+
69
+ #### Step 1.1 — Explore
70
+
71
+ Use `brainstorming` and, when helpful, `product-manager-toolkit` to clarify:
72
+
73
+ - user problem and target actors
74
+ - scope boundaries and dependencies
75
+ - primary flows and feature areas
76
+ - success metrics and constraints
77
+
78
+ #### Step 1.2 — Write
79
+
80
+ Generate `requirements.md` using `docs/specs/general-setup/requirements.md` as the format source.
81
+
82
+ Minimum content:
83
+
84
+ 1. Document Control
85
+ 2. Executive Summary
86
+ 3. Glossary
87
+ 4. System Context & Scope
88
+ 5. Stakeholders / Personas
89
+ 6. Functional Requirements
90
+ 7. Non-Functional Requirements
91
+ 8. Requirement ID Index
92
+
93
+ Guidelines:
94
+
95
+ - follow the repo's established requirement ID pattern from `general-setup`
96
+ - align with `docs/prd.md`
97
+ - align with `proposal.md` when present
98
+ - reference existing specs when this work extends another feature
99
+ - use measurable, testable language
100
+ - separate goals from requirements
101
+ - write behavior contracts, not implementation plans
102
+ - include concrete scenarios for key requirements using `GIVEN`, `WHEN`, `THEN`, and optional `AND`
103
+ - make requirement strength explicit with `SHALL`, `MUST`, `SHOULD`, or `MAY` where useful
104
+
105
+ Recommended requirement shape:
106
+
107
+ ```markdown
108
+ ### Requirement: Short Behavior Name
109
+
110
+ The system SHALL provide the observable behavior.
111
+
112
+ #### Scenario: Main case
113
+
114
+ - GIVEN the relevant starting state
115
+ - WHEN the triggering action happens
116
+ - THEN the expected outcome occurs
117
+ - AND any required side effect is visible
118
+ ```
119
+
120
+ Avoid putting internal class names, library choices, or step-by-step implementation details in requirements. Those belong in `design.md` or `tasks.md`.
121
+
122
+ If `proposal.md` includes a Requirement Delta Preview, convert it into full requirements:
123
+
124
+ - `ADDED` items become new requirements and scenarios
125
+ - `MODIFIED` items become updated behavior descriptions with before/after context
126
+ - `REMOVED` items become explicit deprecation or removal requirements with migration notes when relevant
127
+
128
+ #### Step 1.3 — Present & Approve
129
+
130
+ Present a summary and ask the user to approve or request changes before moving on.
131
+
132
+ ---
133
+
134
+ ### Phase 2: Design (`design.md`)
135
+
136
+ **Role:** System Architect — define how the feature will be built.
137
+
138
+ #### Step 2.1 — Explore
139
+
140
+ Use `brainstorming` to explore trade-offs before writing.
141
+
142
+ If the work includes meaningful UI/UX impact, use this skill preference:
143
+
144
+ - `ui-ux-pro-max` if available
145
+ - otherwise `frontend-design` + `stitch-design`
146
+
147
+ Use additional technical skills as needed:
148
+
149
+ - `nestjs-expert`
150
+ - `api-design-principles`
151
+ - `shadcn-ui`
152
+ - `tailwind-design-system`
153
+ - `vercel-react-best-practices`
154
+ - `error-handling-patterns`
155
+ - `aws-serverless`
156
+
157
+ #### Step 2.2 — Write
158
+
159
+ Generate `design.md` using `docs/specs/general-setup/design.md` as the format source.
160
+
161
+ Minimum content:
162
+
163
+ 1. Document Control
164
+ 2. Executive Summary
165
+ 3. Architecture Overview
166
+ 4. Extended Directory Structure
167
+ 5. Data Model
168
+ 6. API Design
169
+ 7. Backend Module Design
170
+ 8. Frontend / UX Component Architecture
171
+ 9. Shared Contracts or Package Extensions
172
+ 10. Design Decisions
173
+
174
+ Guidelines:
175
+
176
+ - extend existing architecture rather than replacing it
177
+ - use current repo paths and package names
178
+ - include UI/UX decisions when the feature affects screens, flows, or components
179
+ - tie design sections back to requirements explicitly
180
+ - record meaningful trade-offs and rejected alternatives for non-trivial decisions
181
+ - call out data, API, security, error-handling, observability, and rollback concerns when relevant
182
+ - keep design decisions practical enough that an implementer can act without re-discovery
183
+
184
+ #### Step 2.3 — Present & Approve
185
+
186
+ Present a summary and ask the user to approve or request changes before moving on.
187
+
188
+ ---
189
+
190
+ ### Phase 3: Tasks (`tasks.md`)
191
+
192
+ **Role:** Tech Lead — define the implementation plan.
193
+
194
+ #### Step 3.1 — Explore
195
+
196
+ Use `brainstorming` to determine sequencing, dependencies, parallelization, and test strategy.
197
+
198
+ #### Step 3.2 — Write
199
+
200
+ Generate `tasks.md` using `docs/specs/general-setup/task.md` as the format source.
201
+
202
+ Each task should include:
203
+
204
+ - status
205
+ - size
206
+ - dependencies
207
+ - requirements covered
208
+ - design references
209
+ - scope
210
+ - tests
211
+ - done criteria
212
+ - relevant skills
213
+
214
+ Skill inventory should use real, available skills only.
215
+
216
+ Task quality rules:
217
+
218
+ - one task should be small enough to complete and verify in one focused session
219
+ - every task must reference the requirements it satisfies
220
+ - every task must include a concrete verification command or manual check
221
+ - tasks should avoid broad instructions like "implement feature" without scoped subtasks
222
+ - tasks may be grouped by phase, but dependencies must remain explicit
223
+
224
+ Preferred UI/UX skill rule:
225
+
226
+ - use `ui-ux-pro-max` when available for UI-heavy tasks
227
+ - otherwise use `frontend-design` and/or `stitch-design`
228
+
229
+ #### Step 3.3 — Present & Approve
230
+
231
+ Present a summary and ask the user to approve or request changes.
232
+
233
+ ---
234
+
235
+ ## Verification Checklist
236
+
237
+ After all three documents are approved, verify:
238
+
239
+ - [ ] All 3 files exist with non-empty content
240
+ - [ ] All documents follow `docs/specs/general-setup/` conventions
241
+ - [ ] The chosen depth is appropriate for the risk and size of the work
242
+ - [ ] Requirements describe observable behavior, not implementation details
243
+ - [ ] Key requirements include Given/When/Then scenarios
244
+ - [ ] Every requirement appears in at least one task
245
+ - [ ] Every task references requirements and design sections
246
+ - [ ] Every task has clear done criteria and verification guidance
247
+ - [ ] The task dependency graph has no circular dependencies
248
+ - [ ] The spec path matches the repo's chosen taxonomy under `docs/specs/`
249
+ - [ ] Only real, available skills are referenced in tasks
250
+
251
+ ---
252
+
253
+ ## Review Handoff
254
+
255
+ When the spec is ready, present a short handoff summary:
256
+
257
+ 1. Spec path and chosen depth: Lite, Standard, or Full
258
+ 2. Problem being solved
259
+ 3. Requirements and key scenarios
260
+ 4. Important design decisions and risks
261
+ 5. Task count and recommended first task
262
+ 6. Open questions or assumptions that still need user confirmation
263
+
264
+ If a proposal existed, mention whether the generated spec stayed aligned with it or changed based on implementation discovery.
@@ -0,0 +1,128 @@
1
+ # Test SDD Implementation
2
+
3
+ Run automated and, when needed, manual tests against a spec path's implementation. Produce `test-report.md` with results, requirement coverage, scenario traceability, and failures.
4
+
5
+ Testing should prove the behavior promised in `requirements.md`, not only increase test count.
6
+
7
+ ## Usage
8
+
9
+ ```
10
+ /sdd-test <spec-path>
11
+ ```
12
+
13
+ **Examples:**
14
+
15
+ - `/sdd-test loan`
16
+ - `/sdd-test enhancements/renewals`
17
+
18
+ ## Arguments
19
+
20
+ - `$ARGUMENTS` — Relative path under `docs/specs/` that contains `requirements.md`, `design.md`, and `tasks.md`.
21
+
22
+ ## Output
23
+
24
+ Create or update `docs/specs/$ARGUMENTS/test-report.md` with:
25
+
26
+ - commands run and their results
27
+ - requirement-to-test matrix
28
+ - scenario coverage status
29
+ - failures and remediation steps
30
+ - accepted gaps with reasons when full automation is not practical
31
+
32
+ ---
33
+
34
+ ## Behavior
35
+
36
+ ### Phase 0: Load Context
37
+
38
+ 1. Read:
39
+ - `docs/specs/$ARGUMENTS/requirements.md`
40
+ - `docs/specs/$ARGUMENTS/design.md`
41
+ - `docs/specs/$ARGUMENTS/tasks.md`
42
+ 2. Read project-level context:
43
+ - `docs/prd.md`
44
+ - `docs/system-design/design.md`
45
+ - `docs/detailed-design/detailed-design.md`
46
+ - root and package-level `CLAUDE.md` files
47
+ 3. Identify backend, frontend, and end-to-end scope from the design and tasks.
48
+ 4. Extract key requirements and Given/When/Then scenarios from `requirements.md`.
49
+
50
+ ### Phase 1: Unit Tests
51
+
52
+ - Create or improve backend unit tests where needed.
53
+ - Create or improve frontend unit tests where needed.
54
+ - Map tests back to requirements and scenarios.
55
+ - Prefer focused tests that prove one behavior clearly over broad tests with unclear intent.
56
+
57
+ Use skills as needed:
58
+
59
+ - `nestjs-expert`
60
+ - `systematic-debugging`
61
+ - `vercel-react-best-practices`
62
+ - `react-doctor`
63
+
64
+ ### Phase 2: Integration Tests
65
+
66
+ - Create or improve API integration tests where relevant.
67
+ - Validate auth, request/response shape, and major flows.
68
+ - Cover cross-module behavior that cannot be proven by unit tests alone.
69
+
70
+ ### Phase 3: End-to-End Tests
71
+
72
+ - Create or improve E2E tests for user-visible workflows.
73
+ - If the work is UI-heavy, prefer `ui-ux-pro-max` when available.
74
+ - Otherwise use `frontend-design` and the system design doc as the UX reference.
75
+ - Use E2E tests for critical user journeys, not every small component state.
76
+
77
+ ### Phase 4: Coverage & Traceability
78
+
79
+ Create a requirement-to-test matrix so every key requirement has test evidence or an explicit gap.
80
+
81
+ Recommended matrix columns:
82
+
83
+ | Requirement | Scenario | Test Type | Test File or Command | Result | Gap or Notes |
84
+ |---|---|---|---|---|---|
85
+
86
+ ### Phase 5: Generate Test Report
87
+
88
+ Create `docs/specs/$ARGUMENTS/test-report.md`.
89
+
90
+ The report must include:
91
+
92
+ 1. Document Control
93
+ 2. Summary
94
+ 3. Backend Unit Tests
95
+ 4. Frontend Unit Tests
96
+ 5. Integration Tests
97
+ 6. E2E Tests
98
+ 7. Coverage & Traceability
99
+ 8. Remediation
100
+ 9. Accepted Gaps, if any
101
+
102
+ ### Phase 6: Report to User
103
+
104
+ Present overall test status, test counts, requirement coverage, scenario gaps, and top failures. If failures exist, ask whether to fix failures, add missing tests, fix all, or keep only the report.
105
+
106
+ ---
107
+
108
+ ## UX Testing Guidance
109
+
110
+ When a spec includes meaningful UI/UX behavior, verify more than raw functionality:
111
+
112
+ - flow clarity
113
+ - responsive behavior
114
+ - state transitions
115
+ - accessibility basics
116
+ - visual consistency with `docs/system-design/design.md`
117
+
118
+ If `ui-ux-pro-max` is unavailable, use `frontend-design` plus the system design document as the fallback reference.
119
+
120
+ ---
121
+
122
+ ## Testing Rules
123
+
124
+ - Do not mark a requirement covered just because related code exists.
125
+ - Do not hide missing coverage; record it as an explicit gap with remediation.
126
+ - Prefer repository-specific test commands over hardcoded framework assumptions.
127
+ - If a test is flaky, record the flake and avoid treating it as passing evidence until stabilized.
128
+ - If no automated test is practical, document the manual verification steps and why automation was deferred.