@appsforgood/next-supabase-kit 0.4.4 → 0.4.6
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/CHANGELOG.md +8 -0
- package/USER_GUIDE.html +12 -1
- package/USER_GUIDE.md +11 -1
- package/agents/app-engineer/agent.md +1 -1
- package/agents/optional/deploy/agent.md +1 -1
- package/agents/qa/agent.md +3 -2
- package/agents/security/agent.md +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/examples/next-supabase-installed/.agent-kit/manifest.json +20 -20
- package/examples/next-supabase-installed/.antigravity/agent-kit/commands/ship.toml +1 -1
- package/examples/next-supabase-installed/.antigravity/runtime-skills/planning/SKILL.md +2 -2
- package/examples/next-supabase-installed/.antigravity/runtime-skills/ship/SKILL.md +53 -8
- package/examples/next-supabase-installed/.claude/agents/app-engineer.md +1 -1
- package/examples/next-supabase-installed/.claude/agents/qa.md +3 -2
- package/examples/next-supabase-installed/.claude/agents/security.md +1 -1
- package/examples/next-supabase-installed/.codex/agents/app-engineer.toml +1 -1
- package/examples/next-supabase-installed/.codex/agents/qa.toml +3 -2
- package/examples/next-supabase-installed/.codex/agents/security.toml +1 -1
- package/examples/next-supabase-installed/.cursor/agents/app-engineer.md +1 -1
- package/examples/next-supabase-installed/.cursor/agents/qa.md +3 -2
- package/examples/next-supabase-installed/.cursor/agents/security.md +1 -1
- package/examples/next-supabase-installed/.cursor/skills/planning/SKILL.md +2 -2
- package/examples/next-supabase-installed/.cursor/skills/ship/SKILL.md +53 -8
- package/examples/next-supabase-installed/USER_GUIDE.html +12 -1
- package/examples/next-supabase-installed/USER_GUIDE.md +11 -1
- package/examples/next-supabase-installed/skills/planning/SKILL.md +2 -2
- package/examples/next-supabase-installed/skills/ship/SKILL.md +53 -8
- package/package.json +1 -1
- package/skills/planning/SKILL.md +2 -2
- package/skills/ship/SKILL.md +53 -8
|
@@ -18,22 +18,22 @@
|
|
|
18
18
|
],
|
|
19
19
|
"templateHashes": {
|
|
20
20
|
"AGENTS.md": "10a63cd533136555b5cd3b0a189fcd4091339918e62236f20b6dcd7628885369",
|
|
21
|
-
"USER_GUIDE.md": "
|
|
22
|
-
"USER_GUIDE.html": "
|
|
21
|
+
"USER_GUIDE.md": "84895d123f7c83cff0d8b16c79a7346bed45aa884aac8c1e512871b5461ed041",
|
|
22
|
+
"USER_GUIDE.html": "5b818d83fabf31beaeb66e97f78a46e7f675e0a0afba8f9a98bcf57713265bac"
|
|
23
23
|
},
|
|
24
24
|
"assetHashes": {
|
|
25
25
|
"AGENTS.md": "10a63cd533136555b5cd3b0a189fcd4091339918e62236f20b6dcd7628885369",
|
|
26
|
-
"USER_GUIDE.md": "
|
|
27
|
-
"USER_GUIDE.html": "
|
|
26
|
+
"USER_GUIDE.md": "84895d123f7c83cff0d8b16c79a7346bed45aa884aac8c1e512871b5461ed041",
|
|
27
|
+
"USER_GUIDE.html": "5b818d83fabf31beaeb66e97f78a46e7f675e0a0afba8f9a98bcf57713265bac",
|
|
28
28
|
".cursor/rules/cursor-agent-kit.mdc": "850026beea86067d95925eea15eb447365d6a956e0f7f475ebd7fef89043d44b",
|
|
29
29
|
"CLAUDE.md": "d5095edff182babe5c13717bb16cadcd95569d9e4abd37ceb307bb1448b65557",
|
|
30
30
|
".cursor/agents/planner.md": "90676313078391848072fd3a4dc24d8479a7911aa8e7f68a38f46b73074aa6d4",
|
|
31
|
-
".cursor/agents/app-engineer.md": "
|
|
32
|
-
".cursor/agents/security.md": "
|
|
31
|
+
".cursor/agents/app-engineer.md": "42cf21d73f19c5a2e81336ccdf9a226bd7c16717097b2293e8e8406399ffe98c",
|
|
32
|
+
".cursor/agents/security.md": "9953931cc36edbd783f99291544347e4e9e7470aaea0174b5ae8acf0c476e85a",
|
|
33
33
|
".cursor/agents/design.md": "0e9568eec2312c8eae94bf0ab74c4e60f99f546d72609910e86194fc0d1f9df3",
|
|
34
|
-
".cursor/agents/qa.md": "
|
|
34
|
+
".cursor/agents/qa.md": "bbedbcdb1a0630f97305c69064ebdb14366feaf4d0470df023b6ec35389f93a9",
|
|
35
35
|
".cursor/agents/copy.md": "11e7df36d16221d71e3290dc5ba07711df7320895ad2215eeebec5afcf43bf21",
|
|
36
|
-
".cursor/skills/planning/SKILL.md": "
|
|
36
|
+
".cursor/skills/planning/SKILL.md": "85f5363f667218d66cf06152fd8abf6664937ef4e42cbc411caca26291b3aae4",
|
|
37
37
|
".cursor/skills/nextjs-app-router/SKILL.md": "79f5ef6cccf5d675cc8ee6a95dc2e98d86b92b2b60edbc759b7017506d7c9c44",
|
|
38
38
|
".cursor/skills/supabase-auth-rls/SKILL.md": "dc449f156b74a59110f5fc49a684ecf061b757a4805b3849b10771a92972f914",
|
|
39
39
|
".cursor/skills/postgres-migrations/SKILL.md": "453245cd5b4e3d652fe7e5e84fcfb24e64f26ff5da4fd2309c1692c7e6de763e",
|
|
@@ -44,18 +44,18 @@
|
|
|
44
44
|
".cursor/skills/testing-qa/SKILL.md": "a9840dd5dba27cd2990e9c58aee7238ac7e4666bf57d11700f4d4d8b1f9d3427",
|
|
45
45
|
".cursor/skills/product-copy/SKILL.md": "2f1982ac949ed32690046f516dfefa1ca85bfb51318b403822696bd12bb982c4",
|
|
46
46
|
".cursor/skills/deslop/SKILL.md": "cd8ef7f6bdcff86f78ef9d4a94b944a585077629144184d854d6e29ff1569823",
|
|
47
|
-
".cursor/skills/ship/SKILL.md": "
|
|
47
|
+
".cursor/skills/ship/SKILL.md": "3df7002b2117f9ea9b859a156cfe0d87bc9dacec416a38959302c98818eb6ee4",
|
|
48
48
|
".claude/agents/planner.md": "90676313078391848072fd3a4dc24d8479a7911aa8e7f68a38f46b73074aa6d4",
|
|
49
|
-
".claude/agents/app-engineer.md": "
|
|
50
|
-
".claude/agents/security.md": "
|
|
49
|
+
".claude/agents/app-engineer.md": "42cf21d73f19c5a2e81336ccdf9a226bd7c16717097b2293e8e8406399ffe98c",
|
|
50
|
+
".claude/agents/security.md": "9953931cc36edbd783f99291544347e4e9e7470aaea0174b5ae8acf0c476e85a",
|
|
51
51
|
".claude/agents/design.md": "0e9568eec2312c8eae94bf0ab74c4e60f99f546d72609910e86194fc0d1f9df3",
|
|
52
|
-
".claude/agents/qa.md": "
|
|
52
|
+
".claude/agents/qa.md": "bbedbcdb1a0630f97305c69064ebdb14366feaf4d0470df023b6ec35389f93a9",
|
|
53
53
|
".claude/agents/copy.md": "11e7df36d16221d71e3290dc5ba07711df7320895ad2215eeebec5afcf43bf21",
|
|
54
54
|
".codex/agents/planner.toml": "f55f218778ae76942e6c7ea9a159e89dc5c13466b0effa0c43935b29d8182d11",
|
|
55
|
-
".codex/agents/app-engineer.toml": "
|
|
56
|
-
".codex/agents/security.toml": "
|
|
55
|
+
".codex/agents/app-engineer.toml": "f85fd4ae4ca3387082853ad328260077f0043e5f756b19b938210b65d17f45b5",
|
|
56
|
+
".codex/agents/security.toml": "a74e129582bbffb872af33c94bb5ded9e404461740708c5155f7f335740cda87",
|
|
57
57
|
".codex/agents/design.toml": "30b24febb56e398007e1b0daaf4b499f60e5d74efc6d0a5888960d007c7829ab",
|
|
58
|
-
".codex/agents/qa.toml": "
|
|
58
|
+
".codex/agents/qa.toml": "b08c28b7c74c1c71cbd19453089cbff48833c42892b8b1df75c064896730e96c",
|
|
59
59
|
".codex/agents/copy.toml": "76e0b1e54139a6d4dc5140f7214aceaa72f186e45f561c6708e1263747ac07fd",
|
|
60
60
|
".github/copilot-instructions.md": "f5d26cc16aebd5b82f5fb75b85a59e17b802ddb444e50cc25e61a37c616e738f",
|
|
61
61
|
".antigravity/agent-kit/plugin.json": "e2f156fdd68ca706dd289152722bfd07ebb0c29a16afadcfdf178a723ecb6a90",
|
|
@@ -65,8 +65,8 @@
|
|
|
65
65
|
".antigravity/agent-kit/commands/frontend.toml": "4e31d698779d6fd6383a349b3483413e862d98eb79f7e812789dc26091b5b421",
|
|
66
66
|
".antigravity/agent-kit/commands/copy.toml": "40ad093163915a9f000bf8344e49c37dc2d735ab404e84430323502af0bf031e",
|
|
67
67
|
".antigravity/agent-kit/commands/test.toml": "5b230c0e4343bec71e9da36c02bb1f533479f1a87700ea8ceeabbfcc72a2f5c0",
|
|
68
|
-
".antigravity/agent-kit/commands/ship.toml": "
|
|
69
|
-
".antigravity/runtime-skills/planning/SKILL.md": "
|
|
68
|
+
".antigravity/agent-kit/commands/ship.toml": "a6229045cbe1aaf0a4f449a21fe82158137d3f2cb6c29a336ce4110d3de1e549",
|
|
69
|
+
".antigravity/runtime-skills/planning/SKILL.md": "85f5363f667218d66cf06152fd8abf6664937ef4e42cbc411caca26291b3aae4",
|
|
70
70
|
".antigravity/runtime-skills/nextjs-app-router/SKILL.md": "79f5ef6cccf5d675cc8ee6a95dc2e98d86b92b2b60edbc759b7017506d7c9c44",
|
|
71
71
|
".antigravity/runtime-skills/supabase-auth-rls/SKILL.md": "dc449f156b74a59110f5fc49a684ecf061b757a4805b3849b10771a92972f914",
|
|
72
72
|
".antigravity/runtime-skills/postgres-migrations/SKILL.md": "453245cd5b4e3d652fe7e5e84fcfb24e64f26ff5da4fd2309c1692c7e6de763e",
|
|
@@ -77,8 +77,8 @@
|
|
|
77
77
|
".antigravity/runtime-skills/testing-qa/SKILL.md": "a9840dd5dba27cd2990e9c58aee7238ac7e4666bf57d11700f4d4d8b1f9d3427",
|
|
78
78
|
".antigravity/runtime-skills/product-copy/SKILL.md": "2f1982ac949ed32690046f516dfefa1ca85bfb51318b403822696bd12bb982c4",
|
|
79
79
|
".antigravity/runtime-skills/deslop/SKILL.md": "cd8ef7f6bdcff86f78ef9d4a94b944a585077629144184d854d6e29ff1569823",
|
|
80
|
-
".antigravity/runtime-skills/ship/SKILL.md": "
|
|
81
|
-
"skills/planning/SKILL.md": "
|
|
80
|
+
".antigravity/runtime-skills/ship/SKILL.md": "3df7002b2117f9ea9b859a156cfe0d87bc9dacec416a38959302c98818eb6ee4",
|
|
81
|
+
"skills/planning/SKILL.md": "85f5363f667218d66cf06152fd8abf6664937ef4e42cbc411caca26291b3aae4",
|
|
82
82
|
"skills/nextjs-app-router/SKILL.md": "79f5ef6cccf5d675cc8ee6a95dc2e98d86b92b2b60edbc759b7017506d7c9c44",
|
|
83
83
|
"skills/supabase-auth-rls/SKILL.md": "dc449f156b74a59110f5fc49a684ecf061b757a4805b3849b10771a92972f914",
|
|
84
84
|
"skills/postgres-migrations/SKILL.md": "453245cd5b4e3d652fe7e5e84fcfb24e64f26ff5da4fd2309c1692c7e6de763e",
|
|
@@ -89,6 +89,6 @@
|
|
|
89
89
|
"skills/testing-qa/SKILL.md": "a9840dd5dba27cd2990e9c58aee7238ac7e4666bf57d11700f4d4d8b1f9d3427",
|
|
90
90
|
"skills/product-copy/SKILL.md": "2f1982ac949ed32690046f516dfefa1ca85bfb51318b403822696bd12bb982c4",
|
|
91
91
|
"skills/deslop/SKILL.md": "cd8ef7f6bdcff86f78ef9d4a94b944a585077629144184d854d6e29ff1569823",
|
|
92
|
-
"skills/ship/SKILL.md": "
|
|
92
|
+
"skills/ship/SKILL.md": "3df7002b2117f9ea9b859a156cfe0d87bc9dacec416a38959302c98818eb6ee4"
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -2,5 +2,5 @@ name = "ship"
|
|
|
2
2
|
description = "Release go / no-go."
|
|
3
3
|
|
|
4
4
|
prompt = """
|
|
5
|
-
Use the ship skill.
|
|
5
|
+
Use the ship skill. Go or no-go. Name env, migration order, rollback, and commands run (testing-qa). User-visible changes need browser-qa screenshot paths. Reject LGTM, ship it.
|
|
6
6
|
"""
|
|
@@ -17,7 +17,7 @@ Planning, roadmaps, “what should we do,” or any request that needs an owner.
|
|
|
17
17
|
- App engineer: `nextjs-app-router` and, if data/auth, `supabase-auth-rls` / `postgres-migrations`
|
|
18
18
|
- Security: `owasp-security-review` + `supabase-auth-rls`
|
|
19
19
|
- Design: `frontend-design` (name setup, build, review, or detect) and, for screens, `accessibility-wcag`
|
|
20
|
-
- QA: `browser-qa` (screens), `testing-qa` (commands),
|
|
20
|
+
- QA: `browser-qa` (screens), `testing-qa` (commands), `accessibility-wcag` for user-facing screens, and `ship` for a release go/no-go
|
|
21
21
|
- Copy: `product-copy` then `deslop` last
|
|
22
22
|
4. If the work is user-visible and `DESIGN.md` is missing, TBD, or the user asked for a style guide / principles: owner is Design in `setup` first. Design must ask what they need before inventing tokens. Do not let App engineer invent tokens.
|
|
23
23
|
5. Add extra reviewers: Security for auth/data/secrets, Design for UI, QA for behavior/UI, Copy for public words.
|
|
@@ -29,4 +29,4 @@ Owner, extra reviewers, required skills, preserved behavior, and required screen
|
|
|
29
29
|
|
|
30
30
|
## Reject
|
|
31
31
|
|
|
32
|
-
Implementing in the planning pass. Asking one chat to play every role. Skipping `supabase-auth-rls` because “it’s just a table.” Skipping `nextjs-app-router` because the route is small. Skipping Design `setup` on a new product UI because “we’ll pick colors in CSS.” Skipping `accessibility-wcag` because “contrast looks fine in the screenshot.” Skipping `testing-qa` because “we’ll add tests later” on auth/RLS.
|
|
32
|
+
Implementing in the planning pass. Asking one chat to play every role. Skipping `supabase-auth-rls` because “it’s just a table.” Skipping `nextjs-app-router` because the route is small. Skipping Design `setup` on a new product UI because “we’ll pick colors in CSS.” Skipping `accessibility-wcag` because “contrast looks fine in the screenshot.” Skipping `testing-qa` because “we’ll add tests later” on auth/RLS. Skipping `ship` because “LGTM, ship it.”
|
|
@@ -1,22 +1,67 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ship
|
|
3
|
-
description: Use before
|
|
3
|
+
description: Use before deploy, promote, rollback, or when someone says LGTM, ship it. Go or no-go. Name env, migration order, rollback, commands run. User-visible still needs browser-qa screenshot paths.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Ship
|
|
7
7
|
|
|
8
|
+
This skill is **go / no-go**. Commands live in `testing-qa`. Screenshots live in `browser-qa`. Keyboard pass lives in `accessibility-wcag`. Policies live in `supabase-auth-rls`. Schema order lives in `postgres-migrations`. Secrets and OWASP live in `owasp-security-review`. This skill does not replace those.
|
|
9
|
+
|
|
8
10
|
## Use when
|
|
9
11
|
|
|
10
|
-
Preparing to deploy, promote, or
|
|
12
|
+
Preparing to deploy, promote, roll back, or cut a production release. Also when someone says “ship it”, “LGTM”, “is this ready?”, “promote preview”, or “rollback”.
|
|
13
|
+
|
|
14
|
+
Not a substitute for writing the feature. Run this **after** the owning specialists finish. QA names the verdict; App engineer names env and the app rollback; Security names secrets and RLS.
|
|
15
|
+
|
|
16
|
+
## Do
|
|
17
|
+
|
|
18
|
+
1. Name the target (`preview` / `production` / named env) and what commit or deployment is going out.
|
|
19
|
+
2. List production-critical **env var names** (not values). Confirm they exist on that target. Flag any `NEXT_PUBLIC_` secret or service role on the client.
|
|
20
|
+
3. Name migration order. If schema changed, say whether the migration already ran and how to reverse it (`postgres-migrations`). Do not drop a column the live app still reads.
|
|
21
|
+
4. Run `testing-qa`: list commands actually run. Smoke of the primary path is required for a go.
|
|
22
|
+
5. If anything user-visible changed: attach `browser-qa` desktop + mobile paths. For screens, `accessibility-wcag` already ran. Missing paths are a no-go.
|
|
23
|
+
6. Return **go** or **no-go** with gaps. Do not imply go by omitting the word.
|
|
11
24
|
|
|
12
25
|
## Checks
|
|
13
26
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
27
|
+
| Area | Pass |
|
|
28
|
+
| --- | --- |
|
|
29
|
+
| Target | Preview vs production (or named env) is explicit. |
|
|
30
|
+
| Env | Critical names listed. Values are not pasted into the verdict. |
|
|
31
|
+
| Secrets | No secrets in git, `NEXT_PUBLIC_*`, client bundle, or logs. Service role stays server-only. |
|
|
32
|
+
| Migrations | Order named. Rollback named, or expand/contract reverse named. Empty “N/A” only if schema did not change. |
|
|
33
|
+
| Commands | `testing-qa` list with results. Smoke of the primary path (login or the workflow being released). |
|
|
34
|
+
| UI | User-visible changes have `qa-evidence/<date>-<slug>/desktop.png` and `mobile.png`. |
|
|
35
|
+
| Host | If this app is on Vercel (or similar), name preview vs production and how to restore the previous deployment. Do not require a Vercel CLI install from this kit. |
|
|
36
|
+
|
|
37
|
+
## Evidence
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
verdict: go | no-go
|
|
41
|
+
target: preview | production
|
|
42
|
+
commands:
|
|
43
|
+
- npx vitest run # pass
|
|
44
|
+
- npm run smoke # pass
|
|
45
|
+
env: NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY set; SERVICE_ROLE not in client
|
|
46
|
+
migrations: 0012_widgets applied; rollback = reverse 0012 / expand-contract reverse
|
|
47
|
+
rollback:
|
|
48
|
+
app: previous production deployment / git revert <sha>
|
|
49
|
+
db: do not drop 0012 in this release if the app still reads it
|
|
50
|
+
browser-qa: qa-evidence/2026-09-13-settings/desktop.png, mobile.png
|
|
51
|
+
gaps: none | named
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Reject
|
|
55
|
+
|
|
56
|
+
- “LGTM, ship it” (or “looks good, deploy”) with no env list, no rollback, and no commands.
|
|
57
|
+
- User-visible release without `browser-qa` screenshot **paths**.
|
|
58
|
+
- “We’ll set env in the dashboard later” or shipping with placeholder secrets.
|
|
59
|
+
- `SUPABASE_SERVICE_ROLE_KEY` (or any secret) in `NEXT_PUBLIC_*`, the repo, or a client bundle.
|
|
60
|
+
- Skipping rollback because “it’s a small change” or “we can just migrate forward.”
|
|
61
|
+
- Treating `toBeVisible` or “tests pass” as the ship gate. Use `testing-qa` and, for UI, `browser-qa`.
|
|
62
|
+
- Replacing `testing-qa`, `browser-qa`, `postgres-migrations`, `supabase-auth-rls`, or `owasp-security-review` with this skill.
|
|
63
|
+
- Pasting secret **values** into the go/no-go note.
|
|
19
64
|
|
|
20
65
|
## Done when
|
|
21
66
|
|
|
22
|
-
Go
|
|
67
|
+
Go or no-go is explicit. Commands run, env names, migration order, and rollback are named. User-visible work has `browser-qa` screenshot paths. Secrets were not written into the verdict.
|
|
@@ -29,7 +29,7 @@ Available skills: `catalog.json` and the skill table in `USER_GUIDE.md`. Start w
|
|
|
29
29
|
|
|
30
30
|
## Handoff
|
|
31
31
|
|
|
32
|
-
Security reviews auth/data/secret changes. Design reviews user-facing screens. QA always reviews behavior or UI changes with `browser-qa`.
|
|
32
|
+
Security reviews auth/data/secret changes. Design reviews user-facing screens. QA always reviews behavior or UI changes with `browser-qa`. A release go/no-go is `ship`: you name env and the app rollback; you do not say “LGTM, ship it.”
|
|
33
33
|
|
|
34
34
|
## Done when
|
|
35
35
|
|
|
@@ -21,7 +21,7 @@ Hard fail if the only evidence is a file diff.
|
|
|
21
21
|
|
|
22
22
|
## Skills
|
|
23
23
|
|
|
24
|
-
`browser-qa`, `testing-qa`, `accessibility-wcag`.
|
|
24
|
+
`browser-qa`, `testing-qa`, `accessibility-wcag`. For a release, also `ship`.
|
|
25
25
|
|
|
26
26
|
Available skills: `catalog.json` and the skill table in `USER_GUIDE.md`. Start with the skills named above. Use another listed skill when this job needs it.
|
|
27
27
|
|
|
@@ -33,7 +33,8 @@ Available skills: `catalog.json` and the skill table in `USER_GUIDE.md`. Start w
|
|
|
33
33
|
- Skipping mobile, or skipping auth/empty/error when those states exist.
|
|
34
34
|
- “Contrast looks fine in the screenshot” without a keyboard-only pass on the changed flow (`accessibility-wcag`).
|
|
35
35
|
- “Tests pass” with no command list (`testing-qa`).
|
|
36
|
+
- “LGTM, ship it” without env names, rollback, commands, and `browser-qa` paths for UI (`ship`).
|
|
36
37
|
|
|
37
38
|
## Done when
|
|
38
39
|
|
|
39
|
-
You opened the running app, captured desktop and mobile screenshots, **read the images**, ran applicable tests **and listed the commands**, and wrote accept / accept-with-nits / reject with image paths under `qa-evidence/`. For screens, `accessibility-wcag` ran: a keyboard-only pass on the changed flow, not a screenshot guess.
|
|
40
|
+
You opened the running app, captured desktop and mobile screenshots, **read the images**, ran applicable tests **and listed the commands**, and wrote accept / accept-with-nits / reject with image paths under `qa-evidence/`. For screens, `accessibility-wcag` ran: a keyboard-only pass on the changed flow, not a screenshot guess. A release also has a `ship` go or no-go.
|
|
@@ -27,4 +27,4 @@ Available skills: `catalog.json` and the skill table in `USER_GUIDE.md`. Start w
|
|
|
27
27
|
|
|
28
28
|
## Done when
|
|
29
29
|
|
|
30
|
-
Access control is enforced in Postgres or the server, not only in the UI. Login, redirect, and denied states were checked in the browser when they exist. Secrets stay server-only.
|
|
30
|
+
Access control is enforced in Postgres or the server, not only in the UI. Login, redirect, and denied states were checked in the browser when they exist. Secrets stay server-only. For a release, contribute env and RLS checks to `ship`; do not treat “LGTM, ship it” as a go.
|
|
@@ -34,7 +34,7 @@ Available skills: `catalog.json` and the skill table in `USER_GUIDE.md`. Start w
|
|
|
34
34
|
|
|
35
35
|
## Handoff
|
|
36
36
|
|
|
37
|
-
Security reviews auth/data/secret changes. Design reviews user-facing screens. QA always reviews behavior or UI changes with `browser-qa`.
|
|
37
|
+
Security reviews auth/data/secret changes. Design reviews user-facing screens. QA always reviews behavior or UI changes with `browser-qa`. A release go/no-go is `ship`: you name env and the app rollback; you do not say “LGTM, ship it.”
|
|
38
38
|
|
|
39
39
|
## Done when
|
|
40
40
|
|
|
@@ -26,7 +26,7 @@ Hard fail if the only evidence is a file diff.
|
|
|
26
26
|
|
|
27
27
|
## Skills
|
|
28
28
|
|
|
29
|
-
`browser-qa`, `testing-qa`, `accessibility-wcag`.
|
|
29
|
+
`browser-qa`, `testing-qa`, `accessibility-wcag`. For a release, also `ship`.
|
|
30
30
|
|
|
31
31
|
Available skills: `catalog.json` and the skill table in `USER_GUIDE.md`. Start with the skills named above. Use another listed skill when this job needs it.
|
|
32
32
|
|
|
@@ -38,9 +38,10 @@ Available skills: `catalog.json` and the skill table in `USER_GUIDE.md`. Start w
|
|
|
38
38
|
- Skipping mobile, or skipping auth/empty/error when those states exist.
|
|
39
39
|
- “Contrast looks fine in the screenshot” without a keyboard-only pass on the changed flow (`accessibility-wcag`).
|
|
40
40
|
- “Tests pass” with no command list (`testing-qa`).
|
|
41
|
+
- “LGTM, ship it” without env names, rollback, commands, and `browser-qa` paths for UI (`ship`).
|
|
41
42
|
|
|
42
43
|
## Done when
|
|
43
44
|
|
|
44
|
-
You opened the running app, captured desktop and mobile screenshots, **read the images**, ran applicable tests **and listed the commands**, and wrote accept / accept-with-nits / reject with image paths under `qa-evidence/`. For screens, `accessibility-wcag` ran: a keyboard-only pass on the changed flow, not a screenshot guess.
|
|
45
|
+
You opened the running app, captured desktop and mobile screenshots, **read the images**, ran applicable tests **and listed the commands**, and wrote accept / accept-with-nits / reject with image paths under `qa-evidence/`. For screens, `accessibility-wcag` ran: a keyboard-only pass on the changed flow, not a screenshot guess. A release also has a `ship` go or no-go.
|
|
45
46
|
|
|
46
47
|
"""
|
|
@@ -32,6 +32,6 @@ Available skills: `catalog.json` and the skill table in `USER_GUIDE.md`. Start w
|
|
|
32
32
|
|
|
33
33
|
## Done when
|
|
34
34
|
|
|
35
|
-
Access control is enforced in Postgres or the server, not only in the UI. Login, redirect, and denied states were checked in the browser when they exist. Secrets stay server-only.
|
|
35
|
+
Access control is enforced in Postgres or the server, not only in the UI. Login, redirect, and denied states were checked in the browser when they exist. Secrets stay server-only. For a release, contribute env and RLS checks to `ship`; do not treat “LGTM, ship it” as a go.
|
|
36
36
|
|
|
37
37
|
"""
|
|
@@ -29,7 +29,7 @@ Available skills: `catalog.json` and the skill table in `USER_GUIDE.md`. Start w
|
|
|
29
29
|
|
|
30
30
|
## Handoff
|
|
31
31
|
|
|
32
|
-
Security reviews auth/data/secret changes. Design reviews user-facing screens. QA always reviews behavior or UI changes with `browser-qa`.
|
|
32
|
+
Security reviews auth/data/secret changes. Design reviews user-facing screens. QA always reviews behavior or UI changes with `browser-qa`. A release go/no-go is `ship`: you name env and the app rollback; you do not say “LGTM, ship it.”
|
|
33
33
|
|
|
34
34
|
## Done when
|
|
35
35
|
|
|
@@ -21,7 +21,7 @@ Hard fail if the only evidence is a file diff.
|
|
|
21
21
|
|
|
22
22
|
## Skills
|
|
23
23
|
|
|
24
|
-
`browser-qa`, `testing-qa`, `accessibility-wcag`.
|
|
24
|
+
`browser-qa`, `testing-qa`, `accessibility-wcag`. For a release, also `ship`.
|
|
25
25
|
|
|
26
26
|
Available skills: `catalog.json` and the skill table in `USER_GUIDE.md`. Start with the skills named above. Use another listed skill when this job needs it.
|
|
27
27
|
|
|
@@ -33,7 +33,8 @@ Available skills: `catalog.json` and the skill table in `USER_GUIDE.md`. Start w
|
|
|
33
33
|
- Skipping mobile, or skipping auth/empty/error when those states exist.
|
|
34
34
|
- “Contrast looks fine in the screenshot” without a keyboard-only pass on the changed flow (`accessibility-wcag`).
|
|
35
35
|
- “Tests pass” with no command list (`testing-qa`).
|
|
36
|
+
- “LGTM, ship it” without env names, rollback, commands, and `browser-qa` paths for UI (`ship`).
|
|
36
37
|
|
|
37
38
|
## Done when
|
|
38
39
|
|
|
39
|
-
You opened the running app, captured desktop and mobile screenshots, **read the images**, ran applicable tests **and listed the commands**, and wrote accept / accept-with-nits / reject with image paths under `qa-evidence/`. For screens, `accessibility-wcag` ran: a keyboard-only pass on the changed flow, not a screenshot guess.
|
|
40
|
+
You opened the running app, captured desktop and mobile screenshots, **read the images**, ran applicable tests **and listed the commands**, and wrote accept / accept-with-nits / reject with image paths under `qa-evidence/`. For screens, `accessibility-wcag` ran: a keyboard-only pass on the changed flow, not a screenshot guess. A release also has a `ship` go or no-go.
|
|
@@ -27,4 +27,4 @@ Available skills: `catalog.json` and the skill table in `USER_GUIDE.md`. Start w
|
|
|
27
27
|
|
|
28
28
|
## Done when
|
|
29
29
|
|
|
30
|
-
Access control is enforced in Postgres or the server, not only in the UI. Login, redirect, and denied states were checked in the browser when they exist. Secrets stay server-only.
|
|
30
|
+
Access control is enforced in Postgres or the server, not only in the UI. Login, redirect, and denied states were checked in the browser when they exist. Secrets stay server-only. For a release, contribute env and RLS checks to `ship`; do not treat “LGTM, ship it” as a go.
|
|
@@ -17,7 +17,7 @@ Planning, roadmaps, “what should we do,” or any request that needs an owner.
|
|
|
17
17
|
- App engineer: `nextjs-app-router` and, if data/auth, `supabase-auth-rls` / `postgres-migrations`
|
|
18
18
|
- Security: `owasp-security-review` + `supabase-auth-rls`
|
|
19
19
|
- Design: `frontend-design` (name setup, build, review, or detect) and, for screens, `accessibility-wcag`
|
|
20
|
-
- QA: `browser-qa` (screens), `testing-qa` (commands),
|
|
20
|
+
- QA: `browser-qa` (screens), `testing-qa` (commands), `accessibility-wcag` for user-facing screens, and `ship` for a release go/no-go
|
|
21
21
|
- Copy: `product-copy` then `deslop` last
|
|
22
22
|
4. If the work is user-visible and `DESIGN.md` is missing, TBD, or the user asked for a style guide / principles: owner is Design in `setup` first. Design must ask what they need before inventing tokens. Do not let App engineer invent tokens.
|
|
23
23
|
5. Add extra reviewers: Security for auth/data/secrets, Design for UI, QA for behavior/UI, Copy for public words.
|
|
@@ -29,4 +29,4 @@ Owner, extra reviewers, required skills, preserved behavior, and required screen
|
|
|
29
29
|
|
|
30
30
|
## Reject
|
|
31
31
|
|
|
32
|
-
Implementing in the planning pass. Asking one chat to play every role. Skipping `supabase-auth-rls` because “it’s just a table.” Skipping `nextjs-app-router` because the route is small. Skipping Design `setup` on a new product UI because “we’ll pick colors in CSS.” Skipping `accessibility-wcag` because “contrast looks fine in the screenshot.” Skipping `testing-qa` because “we’ll add tests later” on auth/RLS.
|
|
32
|
+
Implementing in the planning pass. Asking one chat to play every role. Skipping `supabase-auth-rls` because “it’s just a table.” Skipping `nextjs-app-router` because the route is small. Skipping Design `setup` on a new product UI because “we’ll pick colors in CSS.” Skipping `accessibility-wcag` because “contrast looks fine in the screenshot.” Skipping `testing-qa` because “we’ll add tests later” on auth/RLS. Skipping `ship` because “LGTM, ship it.”
|
|
@@ -1,22 +1,67 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ship
|
|
3
|
-
description: Use before
|
|
3
|
+
description: Use before deploy, promote, rollback, or when someone says LGTM, ship it. Go or no-go. Name env, migration order, rollback, commands run. User-visible still needs browser-qa screenshot paths.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Ship
|
|
7
7
|
|
|
8
|
+
This skill is **go / no-go**. Commands live in `testing-qa`. Screenshots live in `browser-qa`. Keyboard pass lives in `accessibility-wcag`. Policies live in `supabase-auth-rls`. Schema order lives in `postgres-migrations`. Secrets and OWASP live in `owasp-security-review`. This skill does not replace those.
|
|
9
|
+
|
|
8
10
|
## Use when
|
|
9
11
|
|
|
10
|
-
Preparing to deploy, promote, or
|
|
12
|
+
Preparing to deploy, promote, roll back, or cut a production release. Also when someone says “ship it”, “LGTM”, “is this ready?”, “promote preview”, or “rollback”.
|
|
13
|
+
|
|
14
|
+
Not a substitute for writing the feature. Run this **after** the owning specialists finish. QA names the verdict; App engineer names env and the app rollback; Security names secrets and RLS.
|
|
15
|
+
|
|
16
|
+
## Do
|
|
17
|
+
|
|
18
|
+
1. Name the target (`preview` / `production` / named env) and what commit or deployment is going out.
|
|
19
|
+
2. List production-critical **env var names** (not values). Confirm they exist on that target. Flag any `NEXT_PUBLIC_` secret or service role on the client.
|
|
20
|
+
3. Name migration order. If schema changed, say whether the migration already ran and how to reverse it (`postgres-migrations`). Do not drop a column the live app still reads.
|
|
21
|
+
4. Run `testing-qa`: list commands actually run. Smoke of the primary path is required for a go.
|
|
22
|
+
5. If anything user-visible changed: attach `browser-qa` desktop + mobile paths. For screens, `accessibility-wcag` already ran. Missing paths are a no-go.
|
|
23
|
+
6. Return **go** or **no-go** with gaps. Do not imply go by omitting the word.
|
|
11
24
|
|
|
12
25
|
## Checks
|
|
13
26
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
27
|
+
| Area | Pass |
|
|
28
|
+
| --- | --- |
|
|
29
|
+
| Target | Preview vs production (or named env) is explicit. |
|
|
30
|
+
| Env | Critical names listed. Values are not pasted into the verdict. |
|
|
31
|
+
| Secrets | No secrets in git, `NEXT_PUBLIC_*`, client bundle, or logs. Service role stays server-only. |
|
|
32
|
+
| Migrations | Order named. Rollback named, or expand/contract reverse named. Empty “N/A” only if schema did not change. |
|
|
33
|
+
| Commands | `testing-qa` list with results. Smoke of the primary path (login or the workflow being released). |
|
|
34
|
+
| UI | User-visible changes have `qa-evidence/<date>-<slug>/desktop.png` and `mobile.png`. |
|
|
35
|
+
| Host | If this app is on Vercel (or similar), name preview vs production and how to restore the previous deployment. Do not require a Vercel CLI install from this kit. |
|
|
36
|
+
|
|
37
|
+
## Evidence
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
verdict: go | no-go
|
|
41
|
+
target: preview | production
|
|
42
|
+
commands:
|
|
43
|
+
- npx vitest run # pass
|
|
44
|
+
- npm run smoke # pass
|
|
45
|
+
env: NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY set; SERVICE_ROLE not in client
|
|
46
|
+
migrations: 0012_widgets applied; rollback = reverse 0012 / expand-contract reverse
|
|
47
|
+
rollback:
|
|
48
|
+
app: previous production deployment / git revert <sha>
|
|
49
|
+
db: do not drop 0012 in this release if the app still reads it
|
|
50
|
+
browser-qa: qa-evidence/2026-09-13-settings/desktop.png, mobile.png
|
|
51
|
+
gaps: none | named
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Reject
|
|
55
|
+
|
|
56
|
+
- “LGTM, ship it” (or “looks good, deploy”) with no env list, no rollback, and no commands.
|
|
57
|
+
- User-visible release without `browser-qa` screenshot **paths**.
|
|
58
|
+
- “We’ll set env in the dashboard later” or shipping with placeholder secrets.
|
|
59
|
+
- `SUPABASE_SERVICE_ROLE_KEY` (or any secret) in `NEXT_PUBLIC_*`, the repo, or a client bundle.
|
|
60
|
+
- Skipping rollback because “it’s a small change” or “we can just migrate forward.”
|
|
61
|
+
- Treating `toBeVisible` or “tests pass” as the ship gate. Use `testing-qa` and, for UI, `browser-qa`.
|
|
62
|
+
- Replacing `testing-qa`, `browser-qa`, `postgres-migrations`, `supabase-auth-rls`, or `owasp-security-review` with this skill.
|
|
63
|
+
- Pasting secret **values** into the go/no-go note.
|
|
19
64
|
|
|
20
65
|
## Done when
|
|
21
66
|
|
|
22
|
-
Go
|
|
67
|
+
Go or no-go is explicit. Commands run, env names, migration order, and rollback are named. User-visible work has `browser-qa` screenshot paths. Secrets were not written into the verdict.
|
|
@@ -622,7 +622,7 @@ Act as design. This is a new repo. Scan what is already here, then ask me what w
|
|
|
622
622
|
</tr>
|
|
623
623
|
<tr>
|
|
624
624
|
<td><code>ship</code></td>
|
|
625
|
-
<td>
|
|
625
|
+
<td>Go / no-go. Env, rollback, commands. UI needs screenshot paths</td>
|
|
626
626
|
</tr>
|
|
627
627
|
</tbody>
|
|
628
628
|
</table>
|
|
@@ -734,6 +734,17 @@ Act as design. This is a new repo. Scan what is already here, then ask me what w
|
|
|
734
734
|
</div>
|
|
735
735
|
<h3>Copy pass</h3>
|
|
736
736
|
<p>Copy reviews the <em>rendered</em> words in screenshots, not strings in TSX. Run <code>product-copy</code>, then <code>deslop</code> last.</p>
|
|
737
|
+
<h3>Release / ship</h3>
|
|
738
|
+
<p>Before you promote or deploy, paste to QA:</p>
|
|
739
|
+
<pre id="ship-prompt">
|
|
740
|
+
Run ship. Go or no-go. Name env, migration order, rollback, commands run. User-visible needs browser-qa screenshot paths. Reject LGTM, ship it.</pre>
|
|
741
|
+
<div class="copy-row">
|
|
742
|
+
<button class="copy" type="button" data-copy-from="ship-prompt">Copy ship prompt</button>
|
|
743
|
+
</div>
|
|
744
|
+
<p>
|
|
745
|
+
QA names the verdict. App engineer names env and the app rollback. Security names secrets and RLS. Missing screenshot paths on a user-visible release
|
|
746
|
+
is a no-go.
|
|
747
|
+
</p>
|
|
737
748
|
</section>
|
|
738
749
|
|
|
739
750
|
<section id="qa">
|
|
@@ -100,7 +100,7 @@ Do not ask one chat to be all six. Planner names the next specialist. It does no
|
|
|
100
100
|
| `testing-qa` | Unit / regression / smoke. List commands run. Not screenshots |
|
|
101
101
|
| `product-copy` | Headlines and CTAs |
|
|
102
102
|
| `deslop` | Last copy pass. Copy always runs this |
|
|
103
|
-
| `ship` |
|
|
103
|
+
| `ship` | Go / no-go. Env, rollback, commands. UI needs screenshot paths |
|
|
104
104
|
|
|
105
105
|
QA of a screen always uses `browser-qa`, not `testing-qa` alone. User-facing screens also run `accessibility-wcag` (keyboard in the browser, not a contrast guess from the screenshot). Each agent file names the skills it must run, then points at `catalog.json` for the rest.
|
|
106
106
|
|
|
@@ -146,6 +146,16 @@ Run accessibility-wcag. Open the changed flow. Keyboard-only pass. Do not accept
|
|
|
146
146
|
|
|
147
147
|
Copy reviews **rendered** screenshots, not just strings in TSX. Run `product-copy`, then **`deslop` last**. Do not hand off after the first draft.
|
|
148
148
|
|
|
149
|
+
### Release / ship
|
|
150
|
+
|
|
151
|
+
Before you promote or deploy, paste to QA:
|
|
152
|
+
|
|
153
|
+
```text
|
|
154
|
+
Run ship. Go or no-go. Name env, migration order, rollback, commands run. User-visible needs browser-qa screenshot paths. Reject LGTM, ship it.
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
QA names the verdict. App engineer names env and the app rollback. Security names secrets and RLS. Missing screenshot paths on a user-visible release is a no-go.
|
|
158
|
+
|
|
149
159
|
## QA screenshot loop
|
|
150
160
|
|
|
151
161
|
Bad request (reject this):
|
|
@@ -17,7 +17,7 @@ Planning, roadmaps, “what should we do,” or any request that needs an owner.
|
|
|
17
17
|
- App engineer: `nextjs-app-router` and, if data/auth, `supabase-auth-rls` / `postgres-migrations`
|
|
18
18
|
- Security: `owasp-security-review` + `supabase-auth-rls`
|
|
19
19
|
- Design: `frontend-design` (name setup, build, review, or detect) and, for screens, `accessibility-wcag`
|
|
20
|
-
- QA: `browser-qa` (screens), `testing-qa` (commands),
|
|
20
|
+
- QA: `browser-qa` (screens), `testing-qa` (commands), `accessibility-wcag` for user-facing screens, and `ship` for a release go/no-go
|
|
21
21
|
- Copy: `product-copy` then `deslop` last
|
|
22
22
|
4. If the work is user-visible and `DESIGN.md` is missing, TBD, or the user asked for a style guide / principles: owner is Design in `setup` first. Design must ask what they need before inventing tokens. Do not let App engineer invent tokens.
|
|
23
23
|
5. Add extra reviewers: Security for auth/data/secrets, Design for UI, QA for behavior/UI, Copy for public words.
|
|
@@ -29,4 +29,4 @@ Owner, extra reviewers, required skills, preserved behavior, and required screen
|
|
|
29
29
|
|
|
30
30
|
## Reject
|
|
31
31
|
|
|
32
|
-
Implementing in the planning pass. Asking one chat to play every role. Skipping `supabase-auth-rls` because “it’s just a table.” Skipping `nextjs-app-router` because the route is small. Skipping Design `setup` on a new product UI because “we’ll pick colors in CSS.” Skipping `accessibility-wcag` because “contrast looks fine in the screenshot.” Skipping `testing-qa` because “we’ll add tests later” on auth/RLS.
|
|
32
|
+
Implementing in the planning pass. Asking one chat to play every role. Skipping `supabase-auth-rls` because “it’s just a table.” Skipping `nextjs-app-router` because the route is small. Skipping Design `setup` on a new product UI because “we’ll pick colors in CSS.” Skipping `accessibility-wcag` because “contrast looks fine in the screenshot.” Skipping `testing-qa` because “we’ll add tests later” on auth/RLS. Skipping `ship` because “LGTM, ship it.”
|
|
@@ -1,22 +1,67 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ship
|
|
3
|
-
description: Use before
|
|
3
|
+
description: Use before deploy, promote, rollback, or when someone says LGTM, ship it. Go or no-go. Name env, migration order, rollback, commands run. User-visible still needs browser-qa screenshot paths.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Ship
|
|
7
7
|
|
|
8
|
+
This skill is **go / no-go**. Commands live in `testing-qa`. Screenshots live in `browser-qa`. Keyboard pass lives in `accessibility-wcag`. Policies live in `supabase-auth-rls`. Schema order lives in `postgres-migrations`. Secrets and OWASP live in `owasp-security-review`. This skill does not replace those.
|
|
9
|
+
|
|
8
10
|
## Use when
|
|
9
11
|
|
|
10
|
-
Preparing to deploy, promote, or
|
|
12
|
+
Preparing to deploy, promote, roll back, or cut a production release. Also when someone says “ship it”, “LGTM”, “is this ready?”, “promote preview”, or “rollback”.
|
|
13
|
+
|
|
14
|
+
Not a substitute for writing the feature. Run this **after** the owning specialists finish. QA names the verdict; App engineer names env and the app rollback; Security names secrets and RLS.
|
|
15
|
+
|
|
16
|
+
## Do
|
|
17
|
+
|
|
18
|
+
1. Name the target (`preview` / `production` / named env) and what commit or deployment is going out.
|
|
19
|
+
2. List production-critical **env var names** (not values). Confirm they exist on that target. Flag any `NEXT_PUBLIC_` secret or service role on the client.
|
|
20
|
+
3. Name migration order. If schema changed, say whether the migration already ran and how to reverse it (`postgres-migrations`). Do not drop a column the live app still reads.
|
|
21
|
+
4. Run `testing-qa`: list commands actually run. Smoke of the primary path is required for a go.
|
|
22
|
+
5. If anything user-visible changed: attach `browser-qa` desktop + mobile paths. For screens, `accessibility-wcag` already ran. Missing paths are a no-go.
|
|
23
|
+
6. Return **go** or **no-go** with gaps. Do not imply go by omitting the word.
|
|
11
24
|
|
|
12
25
|
## Checks
|
|
13
26
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
27
|
+
| Area | Pass |
|
|
28
|
+
| --- | --- |
|
|
29
|
+
| Target | Preview vs production (or named env) is explicit. |
|
|
30
|
+
| Env | Critical names listed. Values are not pasted into the verdict. |
|
|
31
|
+
| Secrets | No secrets in git, `NEXT_PUBLIC_*`, client bundle, or logs. Service role stays server-only. |
|
|
32
|
+
| Migrations | Order named. Rollback named, or expand/contract reverse named. Empty “N/A” only if schema did not change. |
|
|
33
|
+
| Commands | `testing-qa` list with results. Smoke of the primary path (login or the workflow being released). |
|
|
34
|
+
| UI | User-visible changes have `qa-evidence/<date>-<slug>/desktop.png` and `mobile.png`. |
|
|
35
|
+
| Host | If this app is on Vercel (or similar), name preview vs production and how to restore the previous deployment. Do not require a Vercel CLI install from this kit. |
|
|
36
|
+
|
|
37
|
+
## Evidence
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
verdict: go | no-go
|
|
41
|
+
target: preview | production
|
|
42
|
+
commands:
|
|
43
|
+
- npx vitest run # pass
|
|
44
|
+
- npm run smoke # pass
|
|
45
|
+
env: NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY set; SERVICE_ROLE not in client
|
|
46
|
+
migrations: 0012_widgets applied; rollback = reverse 0012 / expand-contract reverse
|
|
47
|
+
rollback:
|
|
48
|
+
app: previous production deployment / git revert <sha>
|
|
49
|
+
db: do not drop 0012 in this release if the app still reads it
|
|
50
|
+
browser-qa: qa-evidence/2026-09-13-settings/desktop.png, mobile.png
|
|
51
|
+
gaps: none | named
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Reject
|
|
55
|
+
|
|
56
|
+
- “LGTM, ship it” (or “looks good, deploy”) with no env list, no rollback, and no commands.
|
|
57
|
+
- User-visible release without `browser-qa` screenshot **paths**.
|
|
58
|
+
- “We’ll set env in the dashboard later” or shipping with placeholder secrets.
|
|
59
|
+
- `SUPABASE_SERVICE_ROLE_KEY` (or any secret) in `NEXT_PUBLIC_*`, the repo, or a client bundle.
|
|
60
|
+
- Skipping rollback because “it’s a small change” or “we can just migrate forward.”
|
|
61
|
+
- Treating `toBeVisible` or “tests pass” as the ship gate. Use `testing-qa` and, for UI, `browser-qa`.
|
|
62
|
+
- Replacing `testing-qa`, `browser-qa`, `postgres-migrations`, `supabase-auth-rls`, or `owasp-security-review` with this skill.
|
|
63
|
+
- Pasting secret **values** into the go/no-go note.
|
|
19
64
|
|
|
20
65
|
## Done when
|
|
21
66
|
|
|
22
|
-
Go
|
|
67
|
+
Go or no-go is explicit. Commands run, env names, migration order, and rollback are named. User-visible work has `browser-qa` screenshot paths. Secrets were not written into the verdict.
|
package/package.json
CHANGED
package/skills/planning/SKILL.md
CHANGED
|
@@ -17,7 +17,7 @@ Planning, roadmaps, “what should we do,” or any request that needs an owner.
|
|
|
17
17
|
- App engineer: `nextjs-app-router` and, if data/auth, `supabase-auth-rls` / `postgres-migrations`
|
|
18
18
|
- Security: `owasp-security-review` + `supabase-auth-rls`
|
|
19
19
|
- Design: `frontend-design` (name setup, build, review, or detect) and, for screens, `accessibility-wcag`
|
|
20
|
-
- QA: `browser-qa` (screens), `testing-qa` (commands),
|
|
20
|
+
- QA: `browser-qa` (screens), `testing-qa` (commands), `accessibility-wcag` for user-facing screens, and `ship` for a release go/no-go
|
|
21
21
|
- Copy: `product-copy` then `deslop` last
|
|
22
22
|
4. If the work is user-visible and `DESIGN.md` is missing, TBD, or the user asked for a style guide / principles: owner is Design in `setup` first. Design must ask what they need before inventing tokens. Do not let App engineer invent tokens.
|
|
23
23
|
5. Add extra reviewers: Security for auth/data/secrets, Design for UI, QA for behavior/UI, Copy for public words.
|
|
@@ -29,4 +29,4 @@ Owner, extra reviewers, required skills, preserved behavior, and required screen
|
|
|
29
29
|
|
|
30
30
|
## Reject
|
|
31
31
|
|
|
32
|
-
Implementing in the planning pass. Asking one chat to play every role. Skipping `supabase-auth-rls` because “it’s just a table.” Skipping `nextjs-app-router` because the route is small. Skipping Design `setup` on a new product UI because “we’ll pick colors in CSS.” Skipping `accessibility-wcag` because “contrast looks fine in the screenshot.” Skipping `testing-qa` because “we’ll add tests later” on auth/RLS.
|
|
32
|
+
Implementing in the planning pass. Asking one chat to play every role. Skipping `supabase-auth-rls` because “it’s just a table.” Skipping `nextjs-app-router` because the route is small. Skipping Design `setup` on a new product UI because “we’ll pick colors in CSS.” Skipping `accessibility-wcag` because “contrast looks fine in the screenshot.” Skipping `testing-qa` because “we’ll add tests later” on auth/RLS. Skipping `ship` because “LGTM, ship it.”
|