@appsforgood/next-supabase-kit 0.1.1 → 0.1.4

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 (74) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +20 -3
  3. package/REPOSITORY_SETTINGS.md +1 -0
  4. package/UPGRADE.md +9 -5
  5. package/antigravity/commands/audit.toml +16 -0
  6. package/antigravity/commands/copy.toml +16 -0
  7. package/antigravity/commands/frontend.toml +17 -0
  8. package/antigravity/commands/handoff.toml +16 -0
  9. package/antigravity/commands/plan.toml +18 -0
  10. package/antigravity/commands/security.toml +16 -0
  11. package/antigravity/commands/setup.toml +16 -0
  12. package/antigravity/commands/ship.toml +17 -0
  13. package/antigravity/commands/upgrade.toml +17 -0
  14. package/antigravity/plugin.json +58 -0
  15. package/assistant-adapters/README.md +1 -0
  16. package/assistant-adapters/antigravity.md +56 -0
  17. package/assistant-adapters/claude-code-subagents.md +1 -1
  18. package/assistant-adapters/codex-agents.md +17 -1
  19. package/assistant-adapters/cursor-agent-kit.mdc +3 -2
  20. package/assistant-adapters/cursor-frontend.mdc +16 -0
  21. package/assistant-adapters/cursor-planner.mdc +14 -0
  22. package/assistant-adapters/cursor-security.mdc +18 -0
  23. package/assistant-adapters/github-copilot-instructions.md +1 -1
  24. package/assistant-adapters/github-next-supabase.instructions.md +1 -1
  25. package/assistant-adapters/model-selection/codex-config.example.toml +3 -0
  26. package/dist/index.js +5036 -1838
  27. package/dist/index.js.map +1 -1
  28. package/dist/studio/office/assets/office.css +551 -0
  29. package/dist/studio/office/assets/office.js +1105 -0
  30. package/dist/studio/wizard/assets/wizard.css +525 -0
  31. package/dist/studio/wizard/assets/wizard.js +692 -0
  32. package/examples/next-supabase-installed/.agent-kit/manifest.json +59 -58
  33. package/examples/next-supabase-installed/.agent-kit/model-routing.json +7 -0
  34. package/examples/next-supabase-installed/.agent-kit/overrides.json +1 -7
  35. package/examples/next-supabase-installed/audit-output.json +360 -1
  36. package/examples/next-supabase-installed/tree.txt +6 -0
  37. package/model-routing/default-model-routing.json +7 -0
  38. package/package.json +13 -5
  39. package/runtime-skills/README.md +7 -0
  40. package/runtime-skills/accessibility-wcag/SKILL.md +8 -0
  41. package/runtime-skills/agent-handoff-tracing/SKILL.md +8 -0
  42. package/runtime-skills/best-practice-maturity-review/SKILL.md +8 -0
  43. package/runtime-skills/content-first-design/SKILL.md +8 -0
  44. package/runtime-skills/conversion-copywriting/SKILL.md +8 -0
  45. package/runtime-skills/deployment-observability/SKILL.md +8 -0
  46. package/runtime-skills/docs-maintainer/SKILL.md +8 -0
  47. package/runtime-skills/frontend-design-system/SKILL.md +8 -0
  48. package/runtime-skills/frontend-distinctiveness-benchmark/SKILL.md +8 -0
  49. package/runtime-skills/frontend-product-quality-rubric/SKILL.md +8 -0
  50. package/runtime-skills/landing-page-copy/SKILL.md +8 -0
  51. package/runtime-skills/nextjs-app-router/SKILL.md +8 -0
  52. package/runtime-skills/onboarding-empty-state-copy/SKILL.md +8 -0
  53. package/runtime-skills/owasp-security-review/SKILL.md +8 -0
  54. package/runtime-skills/planning-council/SKILL.md +8 -0
  55. package/runtime-skills/positioning-messaging/SKILL.md +8 -0
  56. package/runtime-skills/postgres-migrations/SKILL.md +8 -0
  57. package/runtime-skills/product-voice-tone/SKILL.md +8 -0
  58. package/runtime-skills/reference-led-design-critique/SKILL.md +8 -0
  59. package/runtime-skills/supabase-auth-rls/SKILL.md +8 -0
  60. package/runtime-skills/testing-qa/SKILL.md +8 -0
  61. package/runtime-skills/upgrade-maintenance/SKILL.md +8 -0
  62. package/runtime-skills/visual-regression-qa/SKILL.md +8 -0
  63. package/schemas/onboarding-state.schema.json +33 -0
  64. package/templates/next-supabase/.github/workflows/agent-kit-audit.yml +35 -0
  65. package/templates/next-supabase/AGENTS.md +1 -1
  66. package/templates/next-supabase/ASSISTANT_ADAPTERS.md +46 -4
  67. package/templates/next-supabase/CLAUDE.md +39 -0
  68. package/templates/next-supabase/DECISIONS.md +14 -0
  69. package/templates/next-supabase/DOCS.md +4 -0
  70. package/templates/next-supabase/MODEL_ROUTING.md +12 -0
  71. package/templates/next-supabase/QUALITY_GATES.md +4 -0
  72. package/templates/next-supabase/SPEC.md +2 -0
  73. package/templates/next-supabase/TESTING.md +3 -0
  74. package/templates/next-supabase/UPGRADE.md +4 -0
@@ -0,0 +1,525 @@
1
+ :root {
2
+ color-scheme: light;
3
+ --ink: #1f2933;
4
+ --muted: #52606d;
5
+ --line: #d9e2ec;
6
+ --panel: #ffffff;
7
+ --bg: #f0f4f8;
8
+ --accent: #0f766e;
9
+ --accent-soft: #ccfbf1;
10
+ --accent-dark: #115e59;
11
+ --warn: #b45309;
12
+ --ok: #166534;
13
+ --header: #0b1f24;
14
+ --shadow: 0 8px 30px rgba(15, 23, 42, 0.08);
15
+ }
16
+
17
+ @media (prefers-reduced-motion: reduce) {
18
+ *, *::before, *::after {
19
+ animation-duration: 0.01ms !important;
20
+ transition-duration: 0.01ms !important;
21
+ }
22
+ }
23
+
24
+ * { box-sizing: border-box; }
25
+
26
+ body {
27
+ margin: 0;
28
+ font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
29
+ color: var(--ink);
30
+ background: var(--bg);
31
+ line-height: 1.55;
32
+ min-height: 100vh;
33
+ }
34
+
35
+ .office-banner {
36
+ background: linear-gradient(90deg, #0f766e, #115e59);
37
+ border-bottom: 1px solid #0d9488;
38
+ padding: 0;
39
+ text-align: center;
40
+ }
41
+
42
+ .office-banner-link {
43
+ display: block;
44
+ padding: 14px 20px;
45
+ color: #fff;
46
+ text-decoration: none;
47
+ }
48
+
49
+ .office-banner-link:hover {
50
+ background: rgba(255, 255, 255, 0.08);
51
+ }
52
+
53
+ .office-banner-title {
54
+ display: block;
55
+ font-weight: 700;
56
+ font-size: 16px;
57
+ }
58
+
59
+ .office-banner-sub {
60
+ display: block;
61
+ font-size: 13px;
62
+ opacity: 0.9;
63
+ margin-top: 2px;
64
+ }
65
+
66
+ .office-cta-card {
67
+ display: block;
68
+ margin: 0 0 16px;
69
+ padding: 12px 14px;
70
+ border-radius: 10px;
71
+ background: rgba(153, 246, 228, 0.12);
72
+ border: 2px solid #99f6e4;
73
+ color: #f8fafc;
74
+ text-decoration: none;
75
+ transition: background 0.15s;
76
+ }
77
+
78
+ .office-cta-card:hover {
79
+ background: rgba(153, 246, 228, 0.22);
80
+ }
81
+
82
+ .office-cta-label {
83
+ display: block;
84
+ font-weight: 700;
85
+ font-size: 15px;
86
+ color: #99f6e4;
87
+ }
88
+
89
+ .office-cta-desc {
90
+ display: block;
91
+ font-size: 12px;
92
+ color: #cbd5e1;
93
+ margin: 4px 0 8px;
94
+ }
95
+
96
+ .office-cta-action {
97
+ display: block;
98
+ font-size: 13px;
99
+ font-weight: 600;
100
+ color: #5eead4;
101
+ }
102
+
103
+ .office-footer-btn {
104
+ background: #115e59 !important;
105
+ color: #fff !important;
106
+ text-decoration: none;
107
+ border: 2px solid #99f6e4;
108
+ }
109
+
110
+ .office-footer-btn:hover {
111
+ background: #0f766e !important;
112
+ }
113
+
114
+ .office-promo {
115
+ margin: 0 0 20px;
116
+ padding: 16px;
117
+ border-radius: 12px;
118
+ background: linear-gradient(135deg, #ecfdf5, #ccfbf1);
119
+ border: 2px solid #99f6e4;
120
+ }
121
+
122
+ .office-promo h3 {
123
+ margin: 0 0 6px;
124
+ font-size: 17px;
125
+ color: var(--accent-dark);
126
+ }
127
+
128
+ .office-promo p {
129
+ margin: 0 0 12px;
130
+ font-size: 14px;
131
+ color: var(--muted);
132
+ }
133
+
134
+ .office-promo .btn {
135
+ display: inline-block;
136
+ background: var(--accent);
137
+ color: #fff;
138
+ padding: 10px 16px;
139
+ border-radius: 10px;
140
+ font-weight: 600;
141
+ text-decoration: none;
142
+ }
143
+
144
+ .office-promo .btn:hover {
145
+ background: var(--accent-dark);
146
+ }
147
+
148
+ .shell {
149
+ display: grid;
150
+ grid-template-columns: 260px minmax(0, 1fr);
151
+ min-height: calc(100vh - 72px);
152
+ }
153
+
154
+ @media (max-width: 860px) {
155
+ .shell { grid-template-columns: 1fr; }
156
+ .rail { border-right: 0; border-bottom: 1px solid var(--line); }
157
+ }
158
+
159
+ .rail {
160
+ background: var(--header);
161
+ color: #e2e8f0;
162
+ padding: 24px 18px;
163
+ border-right: 1px solid rgba(255, 255, 255, 0.08);
164
+ }
165
+
166
+ .rail h1 {
167
+ margin: 0 0 4px;
168
+ font-size: 20px;
169
+ color: #f8fafc;
170
+ }
171
+
172
+ .rail .project {
173
+ color: #99f6e4;
174
+ font-weight: 600;
175
+ font-size: 14px;
176
+ margin-bottom: 18px;
177
+ word-break: break-word;
178
+ }
179
+
180
+ .ring-wrap {
181
+ display: flex;
182
+ align-items: center;
183
+ gap: 14px;
184
+ margin-bottom: 20px;
185
+ }
186
+
187
+ .ring {
188
+ width: 56px;
189
+ height: 56px;
190
+ border-radius: 50%;
191
+ background: conic-gradient(var(--accent) calc(var(--pct) * 1%), rgba(255,255,255,0.12) 0);
192
+ display: grid;
193
+ place-items: center;
194
+ position: relative;
195
+ }
196
+
197
+ .ring::after {
198
+ content: "";
199
+ width: 42px;
200
+ height: 42px;
201
+ border-radius: 50%;
202
+ background: var(--header);
203
+ position: absolute;
204
+ }
205
+
206
+ .ring span {
207
+ position: relative;
208
+ z-index: 1;
209
+ font-size: 12px;
210
+ font-weight: 700;
211
+ }
212
+
213
+ .section-nav {
214
+ list-style: none;
215
+ margin: 0;
216
+ padding: 0;
217
+ display: grid;
218
+ gap: 6px;
219
+ }
220
+
221
+ .section-nav button {
222
+ width: 100%;
223
+ text-align: left;
224
+ border: 1px solid transparent;
225
+ background: transparent;
226
+ color: #cbd5e1;
227
+ border-radius: 8px;
228
+ padding: 10px 12px;
229
+ font: inherit;
230
+ font-size: 14px;
231
+ cursor: pointer;
232
+ display: flex;
233
+ justify-content: space-between;
234
+ align-items: center;
235
+ gap: 8px;
236
+ }
237
+
238
+ .section-nav button[aria-current="step"] {
239
+ background: rgba(15, 118, 110, 0.25);
240
+ border-color: rgba(94, 234, 212, 0.35);
241
+ color: #f0fdfa;
242
+ }
243
+
244
+ .section-nav button:disabled {
245
+ opacity: 0.45;
246
+ cursor: default;
247
+ }
248
+
249
+ .chip {
250
+ font-size: 10px;
251
+ font-weight: 700;
252
+ text-transform: uppercase;
253
+ letter-spacing: 0.04em;
254
+ padding: 2px 7px;
255
+ border-radius: 999px;
256
+ border: 1px solid rgba(255,255,255,0.15);
257
+ }
258
+
259
+ .chip.done { background: rgba(22, 101, 52, 0.35); color: #bbf7d0; }
260
+ .chip.progress { background: rgba(180, 83, 9, 0.35); color: #fde68a; }
261
+ .chip.optional { background: rgba(100, 116, 139, 0.35); color: #e2e8f0; }
262
+
263
+ .main {
264
+ padding: clamp(20px, 4vw, 40px);
265
+ display: flex;
266
+ flex-direction: column;
267
+ }
268
+
269
+ .status {
270
+ display: none;
271
+ border-radius: 10px;
272
+ padding: 12px 14px;
273
+ margin-bottom: 16px;
274
+ font-size: 14px;
275
+ }
276
+
277
+ .status.ok { display: block; background: #ecfdf5; border: 1px solid #86efac; color: var(--ok); }
278
+ .status.error { display: block; background: #fef2f2; border: 1px solid #fca5a5; color: #991b1b; }
279
+
280
+ .card {
281
+ background: var(--panel);
282
+ border: 1px solid var(--line);
283
+ border-radius: 16px;
284
+ box-shadow: var(--shadow);
285
+ padding: clamp(22px, 4vw, 36px);
286
+ flex: 1;
287
+ max-width: 720px;
288
+ }
289
+
290
+ .eyebrow {
291
+ font-size: 12px;
292
+ font-weight: 700;
293
+ letter-spacing: 0.08em;
294
+ text-transform: uppercase;
295
+ color: var(--accent);
296
+ margin-bottom: 8px;
297
+ }
298
+
299
+ .card h2 {
300
+ margin: 0 0 10px;
301
+ font-size: clamp(24px, 4vw, 32px);
302
+ line-height: 1.2;
303
+ }
304
+
305
+ .why {
306
+ color: var(--muted);
307
+ margin: 0 0 22px;
308
+ font-size: 15px;
309
+ }
310
+
311
+ label {
312
+ display: block;
313
+ font-weight: 600;
314
+ margin: 16px 0 8px;
315
+ }
316
+
317
+ label span {
318
+ display: block;
319
+ font-weight: 400;
320
+ color: var(--muted);
321
+ font-size: 13px;
322
+ margin-top: 3px;
323
+ }
324
+
325
+ input, select, textarea {
326
+ width: 100%;
327
+ border: 1px solid var(--line);
328
+ border-radius: 10px;
329
+ padding: 12px 14px;
330
+ font: inherit;
331
+ color: var(--ink);
332
+ background: #fff;
333
+ }
334
+
335
+ input:focus, select:focus, textarea:focus {
336
+ outline: 2px solid var(--accent-soft);
337
+ border-color: var(--accent);
338
+ }
339
+
340
+ textarea { min-height: 120px; resize: vertical; }
341
+
342
+ .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; }
343
+
344
+ .hint {
345
+ background: #f0fdfa;
346
+ border: 1px solid #99f6e4;
347
+ border-radius: 10px;
348
+ padding: 12px 14px;
349
+ font-size: 14px;
350
+ color: var(--accent-dark);
351
+ margin: 14px 0;
352
+ }
353
+
354
+ .hint button {
355
+ margin-top: 8px;
356
+ border: 0;
357
+ border-radius: 8px;
358
+ padding: 8px 12px;
359
+ background: var(--accent-dark);
360
+ color: #fff;
361
+ font: inherit;
362
+ font-weight: 600;
363
+ cursor: pointer;
364
+ }
365
+
366
+ .field-error {
367
+ color: #b91c1c;
368
+ font-size: 13px;
369
+ margin-top: 6px;
370
+ display: none;
371
+ }
372
+
373
+ .field-error.show { display: block; }
374
+
375
+ .depth-grid {
376
+ display: grid;
377
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
378
+ gap: 12px;
379
+ margin-top: 12px;
380
+ }
381
+
382
+ .depth-card {
383
+ border: 2px solid var(--line);
384
+ border-radius: 12px;
385
+ padding: 16px;
386
+ background: #fff;
387
+ cursor: pointer;
388
+ text-align: left;
389
+ font: inherit;
390
+ color: inherit;
391
+ }
392
+
393
+ .depth-card.selected {
394
+ border-color: var(--accent);
395
+ background: #f0fdfa;
396
+ }
397
+
398
+ .depth-card strong { display: block; margin-bottom: 6px; }
399
+ .depth-card p { margin: 0; font-size: 13px; color: var(--muted); }
400
+
401
+ .stack-pills {
402
+ display: flex;
403
+ flex-wrap: wrap;
404
+ gap: 6px;
405
+ margin: 12px 0 0;
406
+ }
407
+
408
+ .pill {
409
+ font-size: 12px;
410
+ padding: 4px 10px;
411
+ border-radius: 999px;
412
+ background: #edf2f7;
413
+ color: var(--muted);
414
+ border: 1px solid var(--line);
415
+ }
416
+
417
+ .review dl { margin: 0; display: grid; gap: 14px; }
418
+ .review dt { font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted); font-weight: 700; }
419
+ .review dd { margin: 4px 0 0; white-space: pre-wrap; }
420
+
421
+ .preview {
422
+ background: #f8fafc;
423
+ border: 1px solid var(--line);
424
+ border-radius: 10px;
425
+ padding: 14px;
426
+ font-size: 13px;
427
+ white-space: pre-wrap;
428
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
429
+ max-height: 200px;
430
+ overflow: auto;
431
+ }
432
+
433
+ .footer {
434
+ display: flex;
435
+ justify-content: space-between;
436
+ align-items: center;
437
+ gap: 10px;
438
+ flex-wrap: wrap;
439
+ margin-top: 24px;
440
+ max-width: 720px;
441
+ }
442
+
443
+ .footer-actions {
444
+ display: flex;
445
+ gap: 10px;
446
+ margin-left: auto;
447
+ }
448
+
449
+ button.btn {
450
+ border: 0;
451
+ border-radius: 10px;
452
+ padding: 12px 18px;
453
+ font: inherit;
454
+ font-weight: 600;
455
+ cursor: pointer;
456
+ }
457
+
458
+ button.btn.primary { background: var(--accent); color: #fff; }
459
+ button.btn.secondary { background: #edf2f7; color: var(--ink); }
460
+ button.btn:disabled { opacity: 0.5; cursor: not-allowed; }
461
+
462
+ .complete-icon {
463
+ font-size: 48px;
464
+ color: var(--ok);
465
+ line-height: 1;
466
+ margin-bottom: 8px;
467
+ }
468
+
469
+ .next-steps {
470
+ margin: 16px 0 0;
471
+ padding-left: 20px;
472
+ color: var(--muted);
473
+ }
474
+
475
+ code {
476
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
477
+ font-size: 13px;
478
+ background: #edf2f7;
479
+ padding: 2px 5px;
480
+ border-radius: 4px;
481
+ }
482
+
483
+ .hidden { display: none !important; }
484
+
485
+ .agent-roster {
486
+ list-style: none;
487
+ margin: 20px 0 0;
488
+ padding: 0;
489
+ display: grid;
490
+ gap: 10px;
491
+ }
492
+
493
+ .agent-card {
494
+ background: #f8fafc;
495
+ border: 1px solid var(--line);
496
+ border-radius: 10px;
497
+ padding: 12px 14px;
498
+ }
499
+
500
+ .agent-card strong {
501
+ display: block;
502
+ color: var(--accent-dark);
503
+ margin-bottom: 4px;
504
+ }
505
+
506
+ .agent-card p,
507
+ .agent-role {
508
+ margin: 0;
509
+ font-size: 14px;
510
+ color: var(--muted);
511
+ }
512
+
513
+ .agent-brief textarea {
514
+ min-height: 140px;
515
+ }
516
+
517
+ button.link-btn {
518
+ background: none;
519
+ border: 0;
520
+ padding: 0;
521
+ font: inherit;
522
+ color: var(--accent-dark);
523
+ text-decoration: underline;
524
+ cursor: pointer;
525
+ }