panopticon-cli 0.4.6 → 0.4.8

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 (114) hide show
  1. package/package.json +3 -2
  2. package/scripts/heartbeat-hook +149 -0
  3. package/scripts/install-git-hooks.sh +66 -0
  4. package/scripts/notify-complete +79 -0
  5. package/scripts/postinstall.mjs +49 -0
  6. package/scripts/pre-tool-hook +60 -0
  7. package/scripts/record-cost-event.js +94 -0
  8. package/scripts/record-cost-event.ts +113 -0
  9. package/scripts/restart-dashboard.sh +59 -0
  10. package/scripts/setup-certs.sh +66 -0
  11. package/scripts/specialist-stop-hook +106 -0
  12. package/scripts/stop-hook +58 -0
  13. package/scripts/validate-merge.sh +119 -0
  14. package/skills/beads/README.md +120 -0
  15. package/skills/beads/SKILL.md +214 -0
  16. package/skills/beads/adr/0001-bd-prime-as-source-of-truth.md +59 -0
  17. package/skills/beads/resources/AGENTS.md +62 -0
  18. package/skills/beads/resources/ASYNC_GATES.md +168 -0
  19. package/skills/beads/resources/BOUNDARIES.md +469 -0
  20. package/skills/beads/resources/CHEMISTRY_PATTERNS.md +197 -0
  21. package/skills/beads/resources/CLI_REFERENCE.md +558 -0
  22. package/skills/beads/resources/DEPENDENCIES.md +747 -0
  23. package/skills/beads/resources/INTEGRATION_PATTERNS.md +407 -0
  24. package/skills/beads/resources/ISSUE_CREATION.md +139 -0
  25. package/skills/beads/resources/MOLECULES.md +354 -0
  26. package/skills/beads/resources/PATTERNS.md +341 -0
  27. package/skills/beads/resources/RESUMABILITY.md +207 -0
  28. package/skills/beads/resources/STATIC_DATA.md +54 -0
  29. package/skills/beads/resources/TROUBLESHOOTING.md +489 -0
  30. package/skills/beads/resources/WORKFLOWS.md +623 -0
  31. package/skills/beads/resources/WORKTREES.md +94 -0
  32. package/skills/beads-completion-check/SKILL.md +90 -0
  33. package/skills/beads-panopticon-guide/SKILL.md +171 -0
  34. package/skills/bug-fix/SKILL.md +32 -0
  35. package/skills/clear-writing/SKILL.md +105 -0
  36. package/skills/clear-writing/references/elements-of-style/01-introductory.md +3 -0
  37. package/skills/clear-writing/references/elements-of-style/02-elementary-rules-of-usage.md +214 -0
  38. package/skills/clear-writing/references/elements-of-style/03-elementary-principles-of-composition.md +398 -0
  39. package/skills/clear-writing/references/elements-of-style/04-a-few-matters-of-form.md +89 -0
  40. package/skills/clear-writing/references/elements-of-style/05-words-and-expressions-commonly-misused.md +342 -0
  41. package/skills/clear-writing/references/signs-of-ai-writing.md +901 -0
  42. package/skills/code-review/SKILL.md +37 -0
  43. package/skills/code-review-performance/SKILL.md +53 -0
  44. package/skills/code-review-security/SKILL.md +35 -0
  45. package/skills/dependency-update/SKILL.md +30 -0
  46. package/skills/feature-work/SKILL.md +39 -0
  47. package/skills/incident-response/SKILL.md +32 -0
  48. package/skills/knowledge-capture/SKILL.md +463 -0
  49. package/skills/onboard-codebase/SKILL.md +34 -0
  50. package/skills/opus-plan/SKILL.md +400 -0
  51. package/skills/pan-approve/SKILL.md +136 -0
  52. package/skills/pan-code-review/SKILL.md +249 -0
  53. package/skills/pan-config/SKILL.md +164 -0
  54. package/skills/pan-convoy-synthesis/SKILL.md +249 -0
  55. package/skills/pan-diagnose/SKILL.md +360 -0
  56. package/skills/pan-docker/SKILL.md +279 -0
  57. package/skills/pan-docs/SKILL.md +113 -0
  58. package/skills/pan-down/SKILL.md +434 -0
  59. package/skills/pan-health/SKILL.md +240 -0
  60. package/skills/pan-help/SKILL.md +237 -0
  61. package/skills/pan-install/SKILL.md +339 -0
  62. package/skills/pan-issue/SKILL.md +596 -0
  63. package/skills/pan-kill/SKILL.md +172 -0
  64. package/skills/pan-logs/SKILL.md +255 -0
  65. package/skills/pan-network/SKILL.md +320 -0
  66. package/skills/pan-oversee/SKILL.md +290 -0
  67. package/skills/pan-plan/SKILL.md +521 -0
  68. package/skills/pan-projects/SKILL.md +239 -0
  69. package/skills/pan-quickstart/SKILL.md +440 -0
  70. package/skills/pan-reload/SKILL.md +44 -0
  71. package/skills/pan-rescue/SKILL.md +271 -0
  72. package/skills/pan-restart/SKILL.md +53 -0
  73. package/skills/pan-setup/SKILL.md +478 -0
  74. package/skills/pan-skill-creator/SKILL.md +168 -0
  75. package/skills/pan-skill-creator/references/output-patterns.md +141 -0
  76. package/skills/pan-skill-creator/references/workflows.md +90 -0
  77. package/skills/pan-skill-creator/scripts/init_skill.py +176 -0
  78. package/skills/pan-status/SKILL.md +493 -0
  79. package/skills/pan-subagent-creator/SKILL.md +295 -0
  80. package/skills/pan-subagent-creator/assets/validate-readonly-query.sh +35 -0
  81. package/skills/pan-subagent-creator/references/example-agents.md +308 -0
  82. package/skills/pan-subagent-creator/scripts/init_agent.py +126 -0
  83. package/skills/pan-sync/SKILL.md +272 -0
  84. package/skills/pan-tell/SKILL.md +157 -0
  85. package/skills/pan-test-config/SKILL.md +208 -0
  86. package/skills/pan-tracker/SKILL.md +288 -0
  87. package/skills/pan-up/SKILL.md +458 -0
  88. package/skills/pan-workspace-config/SKILL.md +303 -0
  89. package/skills/refactor/SKILL.md +30 -0
  90. package/skills/refactor-radar/SKILL.md +475 -0
  91. package/skills/release/SKILL.md +25 -0
  92. package/skills/send-feedback-to-agent/SKILL.md +98 -0
  93. package/skills/session-health/SKILL.md +76 -0
  94. package/skills/session-health/scripts/check_sessions.py +166 -0
  95. package/skills/skill-creator/SKILL.md +92 -0
  96. package/skills/skill-creator/scripts/init_skill.py +152 -0
  97. package/skills/skill-creator/scripts/package_skill.py +123 -0
  98. package/skills/stitch-design-md/README.md +34 -0
  99. package/skills/stitch-design-md/SKILL.md +172 -0
  100. package/skills/stitch-design-md/examples/DESIGN.md +154 -0
  101. package/skills/stitch-react-components/README.md +36 -0
  102. package/skills/stitch-react-components/SKILL.md +47 -0
  103. package/skills/stitch-react-components/examples/gold-standard-card.tsx +80 -0
  104. package/skills/stitch-react-components/package-lock.json +231 -0
  105. package/skills/stitch-react-components/package.json +16 -0
  106. package/skills/stitch-react-components/resources/architecture-checklist.md +15 -0
  107. package/skills/stitch-react-components/resources/component-template.tsx +37 -0
  108. package/skills/stitch-react-components/resources/stitch-api-reference.md +14 -0
  109. package/skills/stitch-react-components/resources/style-guide.json +27 -0
  110. package/skills/stitch-react-components/scripts/fetch-stitch.sh +30 -0
  111. package/skills/stitch-react-components/scripts/validate.js +68 -0
  112. package/skills/stitch-setup/SKILL.md +94 -0
  113. package/skills/web-design-guidelines/SKILL.md +39 -0
  114. package/skills/work-complete/SKILL.md +79 -0
@@ -0,0 +1,231 @@
1
+ {
2
+ "name": "stitch-to-react-pro",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "stitch-to-react-pro",
9
+ "version": "1.0.0",
10
+ "dependencies": {
11
+ "@swc/core": "^1.3.100"
12
+ },
13
+ "engines": {
14
+ "node": ">=18.0.0"
15
+ }
16
+ },
17
+ "node_modules/@swc/core": {
18
+ "version": "1.15.8",
19
+ "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.8.tgz",
20
+ "integrity": "sha512-T8keoJjXaSUoVBCIjgL6wAnhADIb09GOELzKg10CjNg+vLX48P93SME6jTfte9MZIm5m+Il57H3rTSk/0kzDUw==",
21
+ "hasInstallScript": true,
22
+ "license": "Apache-2.0",
23
+ "dependencies": {
24
+ "@swc/counter": "^0.1.3",
25
+ "@swc/types": "^0.1.25"
26
+ },
27
+ "engines": {
28
+ "node": ">=10"
29
+ },
30
+ "funding": {
31
+ "type": "opencollective",
32
+ "url": "https://opencollective.com/swc"
33
+ },
34
+ "optionalDependencies": {
35
+ "@swc/core-darwin-arm64": "1.15.8",
36
+ "@swc/core-darwin-x64": "1.15.8",
37
+ "@swc/core-linux-arm-gnueabihf": "1.15.8",
38
+ "@swc/core-linux-arm64-gnu": "1.15.8",
39
+ "@swc/core-linux-arm64-musl": "1.15.8",
40
+ "@swc/core-linux-x64-gnu": "1.15.8",
41
+ "@swc/core-linux-x64-musl": "1.15.8",
42
+ "@swc/core-win32-arm64-msvc": "1.15.8",
43
+ "@swc/core-win32-ia32-msvc": "1.15.8",
44
+ "@swc/core-win32-x64-msvc": "1.15.8"
45
+ },
46
+ "peerDependencies": {
47
+ "@swc/helpers": ">=0.5.17"
48
+ },
49
+ "peerDependenciesMeta": {
50
+ "@swc/helpers": {
51
+ "optional": true
52
+ }
53
+ }
54
+ },
55
+ "node_modules/@swc/core-darwin-arm64": {
56
+ "version": "1.15.8",
57
+ "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.8.tgz",
58
+ "integrity": "sha512-M9cK5GwyWWRkRGwwCbREuj6r8jKdES/haCZ3Xckgkl8MUQJZA3XB7IXXK1IXRNeLjg6m7cnoMICpXv1v1hlJOg==",
59
+ "cpu": [
60
+ "arm64"
61
+ ],
62
+ "license": "Apache-2.0 AND MIT",
63
+ "optional": true,
64
+ "os": [
65
+ "darwin"
66
+ ],
67
+ "engines": {
68
+ "node": ">=10"
69
+ }
70
+ },
71
+ "node_modules/@swc/core-darwin-x64": {
72
+ "version": "1.15.8",
73
+ "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.8.tgz",
74
+ "integrity": "sha512-j47DasuOvXl80sKJHSi2X25l44CMc3VDhlJwA7oewC1nV1VsSzwX+KOwE5tLnfORvVJJyeiXgJORNYg4jeIjYQ==",
75
+ "cpu": [
76
+ "x64"
77
+ ],
78
+ "license": "Apache-2.0 AND MIT",
79
+ "optional": true,
80
+ "os": [
81
+ "darwin"
82
+ ],
83
+ "engines": {
84
+ "node": ">=10"
85
+ }
86
+ },
87
+ "node_modules/@swc/core-linux-arm-gnueabihf": {
88
+ "version": "1.15.8",
89
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.8.tgz",
90
+ "integrity": "sha512-siAzDENu2rUbwr9+fayWa26r5A9fol1iORG53HWxQL1J8ym4k7xt9eME0dMPXlYZDytK5r9sW8zEA10F2U3Xwg==",
91
+ "cpu": [
92
+ "arm"
93
+ ],
94
+ "license": "Apache-2.0",
95
+ "optional": true,
96
+ "os": [
97
+ "linux"
98
+ ],
99
+ "engines": {
100
+ "node": ">=10"
101
+ }
102
+ },
103
+ "node_modules/@swc/core-linux-arm64-gnu": {
104
+ "version": "1.15.8",
105
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.8.tgz",
106
+ "integrity": "sha512-o+1y5u6k2FfPYbTRUPvurwzNt5qd0NTumCTFscCNuBksycloXY16J8L+SMW5QRX59n4Hp9EmFa3vpvNHRVv1+Q==",
107
+ "cpu": [
108
+ "arm64"
109
+ ],
110
+ "license": "Apache-2.0 AND MIT",
111
+ "optional": true,
112
+ "os": [
113
+ "linux"
114
+ ],
115
+ "engines": {
116
+ "node": ">=10"
117
+ }
118
+ },
119
+ "node_modules/@swc/core-linux-arm64-musl": {
120
+ "version": "1.15.8",
121
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.8.tgz",
122
+ "integrity": "sha512-koiCqL09EwOP1S2RShCI7NbsQuG6r2brTqUYE7pV7kZm9O17wZ0LSz22m6gVibpwEnw8jI3IE1yYsQTVpluALw==",
123
+ "cpu": [
124
+ "arm64"
125
+ ],
126
+ "license": "Apache-2.0 AND MIT",
127
+ "optional": true,
128
+ "os": [
129
+ "linux"
130
+ ],
131
+ "engines": {
132
+ "node": ">=10"
133
+ }
134
+ },
135
+ "node_modules/@swc/core-linux-x64-gnu": {
136
+ "version": "1.15.8",
137
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.8.tgz",
138
+ "integrity": "sha512-4p6lOMU3bC+Vd5ARtKJ/FxpIC5G8v3XLoPEZ5s7mLR8h7411HWC/LmTXDHcrSXRC55zvAVia1eldy6zDLz8iFQ==",
139
+ "cpu": [
140
+ "x64"
141
+ ],
142
+ "license": "Apache-2.0 AND MIT",
143
+ "optional": true,
144
+ "os": [
145
+ "linux"
146
+ ],
147
+ "engines": {
148
+ "node": ">=10"
149
+ }
150
+ },
151
+ "node_modules/@swc/core-linux-x64-musl": {
152
+ "version": "1.15.8",
153
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.8.tgz",
154
+ "integrity": "sha512-z3XBnbrZAL+6xDGAhJoN4lOueIxC/8rGrJ9tg+fEaeqLEuAtHSW2QHDHxDwkxZMjuF/pZ6MUTjHjbp8wLbuRLA==",
155
+ "cpu": [
156
+ "x64"
157
+ ],
158
+ "license": "Apache-2.0 AND MIT",
159
+ "optional": true,
160
+ "os": [
161
+ "linux"
162
+ ],
163
+ "engines": {
164
+ "node": ">=10"
165
+ }
166
+ },
167
+ "node_modules/@swc/core-win32-arm64-msvc": {
168
+ "version": "1.15.8",
169
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.8.tgz",
170
+ "integrity": "sha512-djQPJ9Rh9vP8GTS/Df3hcc6XP6xnG5c8qsngWId/BLA9oX6C7UzCPAn74BG/wGb9a6j4w3RINuoaieJB3t+7iQ==",
171
+ "cpu": [
172
+ "arm64"
173
+ ],
174
+ "license": "Apache-2.0 AND MIT",
175
+ "optional": true,
176
+ "os": [
177
+ "win32"
178
+ ],
179
+ "engines": {
180
+ "node": ">=10"
181
+ }
182
+ },
183
+ "node_modules/@swc/core-win32-ia32-msvc": {
184
+ "version": "1.15.8",
185
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.8.tgz",
186
+ "integrity": "sha512-/wfAgxORg2VBaUoFdytcVBVCgf1isWZIEXB9MZEUty4wwK93M/PxAkjifOho9RN3WrM3inPLabICRCEgdHpKKQ==",
187
+ "cpu": [
188
+ "ia32"
189
+ ],
190
+ "license": "Apache-2.0 AND MIT",
191
+ "optional": true,
192
+ "os": [
193
+ "win32"
194
+ ],
195
+ "engines": {
196
+ "node": ">=10"
197
+ }
198
+ },
199
+ "node_modules/@swc/core-win32-x64-msvc": {
200
+ "version": "1.15.8",
201
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.8.tgz",
202
+ "integrity": "sha512-GpMePrh9Sl4d61o4KAHOOv5is5+zt6BEXCOCgs/H0FLGeii7j9bWDE8ExvKFy2GRRZVNR1ugsnzaGWHKM6kuzA==",
203
+ "cpu": [
204
+ "x64"
205
+ ],
206
+ "license": "Apache-2.0 AND MIT",
207
+ "optional": true,
208
+ "os": [
209
+ "win32"
210
+ ],
211
+ "engines": {
212
+ "node": ">=10"
213
+ }
214
+ },
215
+ "node_modules/@swc/counter": {
216
+ "version": "0.1.3",
217
+ "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
218
+ "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==",
219
+ "license": "Apache-2.0"
220
+ },
221
+ "node_modules/@swc/types": {
222
+ "version": "0.1.25",
223
+ "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz",
224
+ "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==",
225
+ "license": "Apache-2.0",
226
+ "dependencies": {
227
+ "@swc/counter": "^0.1.3"
228
+ }
229
+ }
230
+ }
231
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "react-components",
3
+ "version": "1.0.0",
4
+ "description": "Design-to-code prompt to React components for Stitch MCP",
5
+ "type": "module",
6
+ "scripts": {
7
+ "validate": "node scripts/validate.js",
8
+ "fetch": "bash scripts/fetch-stitch.sh"
9
+ },
10
+ "dependencies": {
11
+ "@swc/core": "^1.3.100"
12
+ },
13
+ "engines": {
14
+ "node": ">=18.0.0"
15
+ }
16
+ }
@@ -0,0 +1,15 @@
1
+ # Architecture Quality Gate
2
+
3
+ ### Structural integrity
4
+ - [ ] Logic extracted to custom hooks in `src/hooks/`.
5
+ - [ ] No monolithic files; strictly Atomic/Composite modularity.
6
+ - [ ] All static text/URLs moved to `src/data/mockData.ts`.
7
+
8
+ ### Type safety and syntax
9
+ - [ ] Props use `Readonly<T>` interfaces.
10
+ - [ ] File is syntactically valid TypeScript (no red squiggles).
11
+ - [ ] Placeholders from templates (e.g., `StitchComponent`) have been replaced with actual names.
12
+
13
+ ### Styling and theming
14
+ - [ ] Dark mode (`dark:`) applied to all color classes.
15
+ - [ ] No hardcoded hex values; use theme-mapped Tailwind classes.
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Copyright 2026 Google LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import React from 'react';
18
+
19
+ // Use a valid identifier like 'StitchComponent' as the placeholder
20
+ interface StitchComponentProps {
21
+ readonly children?: React.ReactNode;
22
+ readonly className?: string;
23
+ }
24
+
25
+ export const StitchComponent: React.FC<StitchComponentProps> = ({
26
+ children,
27
+ className = '',
28
+ ...props
29
+ }) => {
30
+ return (
31
+ <div className={`relative ${className}`} {...props}>
32
+ {children}
33
+ </div>
34
+ );
35
+ };
36
+
37
+ export default StitchComponent;
@@ -0,0 +1,14 @@
1
+ # Stitch API reference
2
+
3
+ This document describes the data structures returned by the Stitch MCP server to ensure accurate component mapping.
4
+
5
+ ### Metadata schema
6
+ When calling `get_screen`, the server returns a JSON object with these key properties:
7
+ * **htmlCode**: Contains a `downloadUrl`. This is a signed URL that requires a system-level fetch (curl) to handle redirects and security handshakes.
8
+ * **screenshot**: Includes a `downloadUrl` for the visual design. Use this to verify layout intent that might not be obvious in the raw HTML.
9
+ * **deviceType**: Usually set to `DESKTOP`. All generated components should prioritize the corresponding viewport (2560px width) as the base layout.
10
+
11
+ ### Technical mapping rules
12
+ 1. **Element tracking**: Preserve `data-stitch-id` attributes as comments in the TSX to allow for future design synchronization.
13
+ 2. **Asset handling**: Treat background images in the HTML as dynamic data. Extract the URLs into `mockData.ts` rather than hardcoding them into the component styles.
14
+ 3. **Style extraction**: The HTML `<head>` contains a localized `tailwind.config`. This config must be merged with the local project theme to ensure colors like `primary` and `background-dark` render correctly.
@@ -0,0 +1,27 @@
1
+ {
2
+ "theme": {
3
+ "colors": {
4
+ "primary": "#19e66f",
5
+ "background": {
6
+ "light": "#f6f8f7",
7
+ "dark": "#112118",
8
+ "elevated": "#1A1A1A"
9
+ },
10
+ "accent": {
11
+ "purple": "#8A2BE2",
12
+ "lavender": "#D0A9F5"
13
+ }
14
+ },
15
+ "typography": {
16
+ "display": [
17
+ "Space Grotesk",
18
+ "sans-serif"
19
+ ],
20
+ "icons": "Material Symbols Outlined"
21
+ },
22
+ "spacing": {
23
+ "header-h": "72px",
24
+ "container-max": "960px"
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,30 @@
1
+ #!/bin/bash
2
+ # Copyright 2026 Google LLC
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ URL=$1
17
+ OUTPUT=$2
18
+ if [ -z "$URL" ] || [ -z "$OUTPUT" ]; then
19
+ echo "Usage: $0 <url> <output_path>"
20
+ exit 1
21
+ fi
22
+ echo "Initiating high-reliability fetch for Stitch HTML..."
23
+ curl -L -f -sS --connect-timeout 10 --compressed "$URL" -o "$OUTPUT"
24
+ if [ $? -eq 0 ]; then
25
+ echo "✅ Successfully retrieved HTML at: $OUTPUT"
26
+ exit 0
27
+ else
28
+ echo "❌ Error: Failed to retrieve content. Check TLS/SNI or URL expiration."
29
+ exit 1
30
+ fi
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Copyright 2026 Google LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import swc from '@swc/core';
18
+ import fs from 'node:fs';
19
+ import path from 'node:path';
20
+
21
+ async function validateComponent(filePath) {
22
+ const code = fs.readFileSync(filePath, 'utf-8');
23
+ const filename = path.basename(filePath);
24
+ try {
25
+ const ast = await swc.parse(code, { syntax: "typescript", tsx: true });
26
+ let hasInterface = false;
27
+ let tailwindIssues = [];
28
+
29
+ console.log("🔍 Scanning AST...");
30
+
31
+ const walk = (node) => {
32
+ if (!node) return;
33
+ if (node.type === 'TsInterfaceDeclaration' && node.id.value.endsWith('Props')) hasInterface = true;
34
+ if (node.type === 'JSXAttribute' && node.name.name === 'className') {
35
+ if (node.value?.value && /#[0-9A-Fa-f]{6}/.test(node.value.value)) tailwindIssues.push(node.value.value);
36
+ }
37
+ for (const key in node) { if (node[key] && typeof node[key] === 'object') walk(node[key]); }
38
+ };
39
+ walk(ast);
40
+
41
+ console.log(`--- Validation for: ${filename} ---`);
42
+ if (hasInterface) {
43
+ console.log("✅ Props declaration found.");
44
+ } else {
45
+ console.error("❌ MISSING: Props interface (must end in 'Props').");
46
+ }
47
+
48
+ if (tailwindIssues.length === 0) {
49
+ console.log("✅ No hardcoded hex values found.");
50
+ } else {
51
+ console.error(`❌ STYLE: Found ${tailwindIssues.length} hardcoded hex codes.`);
52
+ tailwindIssues.forEach(hex => console.error(` - ${hex}`));
53
+ }
54
+
55
+ if (hasInterface && tailwindIssues.length === 0) {
56
+ console.log("\n✨ COMPONENT VALID.");
57
+ process.exit(0);
58
+ } else {
59
+ console.error("\n🚫 VALIDATION FAILED.");
60
+ process.exit(1);
61
+ }
62
+ } catch (err) {
63
+ console.error("❌ PARSE ERROR:", err.message);
64
+ process.exit(1);
65
+ }
66
+ }
67
+
68
+ validateComponent(process.argv[2]);
@@ -0,0 +1,94 @@
1
+ ---
2
+ name: stitch-setup
3
+ description: Set up Google Stitch MCP server for AI-powered UI design generation
4
+ ---
5
+
6
+ # Stitch MCP Server Setup
7
+
8
+ This skill helps you set up the Google Stitch MCP server, which enables AI agents to generate UI designs.
9
+
10
+ ## What is Stitch?
11
+
12
+ Google Stitch is a free AI-powered UI design tool that generates production-ready HTML/CSS from natural language descriptions. The Stitch MCP server connects Claude Code and other AI agents to the Stitch API.
13
+
14
+ ## Prerequisites
15
+
16
+ - Google Cloud account
17
+ - Node.js 18+
18
+
19
+ ## Quick Setup
20
+
21
+ Run the initialization command:
22
+
23
+ ```bash
24
+ npx @_davideast/stitch-mcp init
25
+ ```
26
+
27
+ This automates the entire setup process:
28
+ 1. Installs Google Cloud CLI if needed
29
+ 2. Guides you through Google authentication
30
+ 3. Sets up application credentials
31
+ 4. Lets you select a GCP project
32
+ 5. Configures required IAM permissions
33
+ 6. Enables the Stitch API
34
+ 7. Generates MCP configuration
35
+
36
+ ## Manual Configuration
37
+
38
+ After running init, add the Stitch MCP server to your Claude Code settings:
39
+
40
+ **For Claude Code (`~/.claude/settings.json`):**
41
+
42
+ ```json
43
+ {
44
+ "mcpServers": {
45
+ "stitch": {
46
+ "command": "npx",
47
+ "args": ["@_davideast/stitch-mcp", "proxy"],
48
+ "env": {
49
+ "STITCH_PROJECT_ID": "your-project-id"
50
+ }
51
+ }
52
+ }
53
+ }
54
+ ```
55
+
56
+ ## Verify Setup
57
+
58
+ Run the doctor command to verify your setup:
59
+
60
+ ```bash
61
+ npx @_davideast/stitch-mcp doctor
62
+ ```
63
+
64
+ ## Using Stitch
65
+
66
+ Once configured, you can use Stitch in Claude Code with commands like:
67
+
68
+ - "Create a login page with email and password fields"
69
+ - "Design a dashboard with sidebar navigation"
70
+ - "Generate a product listing page with cards"
71
+
72
+ ## Related Skills
73
+
74
+ - `/stitch-design-md` - Create DESIGN.md files documenting design systems
75
+ - `/stitch-react-components` - Convert Stitch designs to React components
76
+
77
+ ## Troubleshooting
78
+
79
+ ### Authentication Issues
80
+
81
+ If you already have gcloud configured, set the environment variable:
82
+ ```bash
83
+ export STITCH_USE_SYSTEM_GCLOUD=1
84
+ ```
85
+
86
+ ### Environment Detection
87
+
88
+ The MCP server automatically detects WSL, SSH, Docker, and Cloud Shell environments.
89
+
90
+ ## Resources
91
+
92
+ - [Stitch Documentation](https://stitch.withgoogle.com/docs/)
93
+ - [Stitch MCP GitHub](https://github.com/davideast/stitch-mcp)
94
+ - [Google MCP Servers](https://github.com/google/mcp)
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: web-design-guidelines
3
+ description: Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".
4
+ argument-hint: <file-or-pattern>
5
+ metadata:
6
+ author: vercel
7
+ version: "1.0.0"
8
+ ---
9
+
10
+ # Web Interface Guidelines
11
+
12
+ Review files for compliance with Web Interface Guidelines.
13
+
14
+ ## How It Works
15
+
16
+ 1. Fetch the latest guidelines from the source URL below
17
+ 2. Read the specified files (or prompt user for files/pattern)
18
+ 3. Check against all rules in the fetched guidelines
19
+ 4. Output findings in the terse `file:line` format
20
+
21
+ ## Guidelines Source
22
+
23
+ Fetch fresh guidelines before each review:
24
+
25
+ ```
26
+ https://raw.githubusercontent.com/vercel-labs/web-interface-guidelines/main/command.md
27
+ ```
28
+
29
+ Use WebFetch to retrieve the latest rules. The fetched content contains all the rules and output format instructions.
30
+
31
+ ## Usage
32
+
33
+ When a user provides a file or pattern argument:
34
+ 1. Fetch guidelines from the source URL above
35
+ 2. Read the specified files
36
+ 3. Apply all rules from the fetched guidelines
37
+ 4. Output findings using the format specified in the guidelines
38
+
39
+ If no files specified, ask the user which files to review.
@@ -0,0 +1,79 @@
1
+ ---
2
+ name: work-complete
3
+ description: Checklist for agents to properly complete work and signal readiness for review
4
+ triggers:
5
+ - work complete
6
+ - ready for review
7
+ - finished implementing
8
+ - done with task
9
+ - implementation complete
10
+ ---
11
+
12
+ # Work Completion Checklist
13
+
14
+ **CRITICAL: You are NOT done until ALL changes are committed and pushed. Uncommitted changes = NOT COMPLETE.**
15
+
16
+ When you have finished implementing a feature or fixing a bug, follow this checklist:
17
+
18
+ ## 1. Verify Implementation
19
+ - [ ] All acceptance criteria from the issue are met
20
+ - [ ] Code compiles/builds without errors
21
+ - [ ] Tests pass (run the full test suite)
22
+ - [ ] No linting errors
23
+
24
+ ## 2. Self-Review Your Changes
25
+ ```bash
26
+ git diff origin/main...HEAD
27
+ ```
28
+ - Check for: bugs, security issues, hardcoded values, debug code
29
+ - Remove any TODO comments you added
30
+ - Ensure code follows project conventions
31
+
32
+ ## 3. Commit Your Work (BLOCKING - DO THIS FIRST)
33
+
34
+ **Run these commands and verify clean status BEFORE signaling completion:**
35
+
36
+ ```bash
37
+ # Check for uncommitted changes
38
+ git status
39
+
40
+ # If there are changes, commit them ALL:
41
+ git add -A
42
+ git commit -m "feat: description (ISSUE-XXX)"
43
+
44
+ # Push to remote
45
+ git push -u origin $(git branch --show-current)
46
+
47
+ # VERIFY: This must show "nothing to commit, working tree clean"
48
+ git status
49
+ ```
50
+
51
+ **If `git status` shows ANY uncommitted changes, you are NOT DONE. Commit them first.**
52
+
53
+ ## 4. Signal Completion
54
+ **IMPORTANT:** Tell the user your work is complete with this format:
55
+
56
+ ```
57
+ ✅ WORK COMPLETE - Ready for Review
58
+
59
+ ## Summary
60
+ [Brief description of what was implemented]
61
+
62
+ ## Changes Made
63
+ - [File 1]: [What changed]
64
+ - [File 2]: [What changed]
65
+
66
+ ## Testing Done
67
+ - [How you verified the implementation]
68
+
69
+ ## Next Steps
70
+ The user can now:
71
+ 1. Test the changes in the workspace
72
+ 2. Click "Approve & Merge" in Panopticon dashboard to merge and close
73
+ 3. Or request changes if needed
74
+ ```
75
+
76
+ ## 5. Wait for User Response
77
+ - Do NOT continue making changes unless asked
78
+ - The user will either approve, request changes, or provide feedback
79
+ - If changes are requested, address them and repeat this checklist