@se-studio/skills 1.6.10 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/package.json +1 -1
- package/references/deps-update/projects.registry.json +1 -1
- package/skills/se-marketing-sites-create-page/SKILL.md +1 -1
- package/skills/se-marketing-sites-redirects/SKILL.md +7 -7
- package/skills/se-marketing-sites-smoke-test-setup/SKILL.md +1 -1
- package/skills/site-workflows-deps-update/SKILL.md +7 -6
- package/skills/site-workflows-new-project/SKILL.md +12 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @se-studio/skills
|
|
2
2
|
|
|
3
|
+
## 1.7.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 8e94be2: Support Next.js 16.3 while remaining compatible with Next.js 15.5 (peer `>=15.5.0 <17`). CMS webhooks call `revalidateTag(tag, { expire: 0 })` so published content is not served stale. Template apps use `proxy.ts` on Next 16. Not-found metadata uses `title.absolute` so layout `title.template` does not produce duplicated site names.
|
|
8
|
+
|
|
3
9
|
## 1.6.10
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
package/package.json
CHANGED
|
@@ -121,7 +121,7 @@ If a route needs a different layout (e.g. no header/footer), create `layout.tsx`
|
|
|
121
121
|
|
|
122
122
|
## A/B Test Variant Route (`page-test`)
|
|
123
123
|
|
|
124
|
-
When A/B testing is enabled, variant pages are served through a `/page-test/[...slugs]` route that the middleware rewrites to. This route **must** use:
|
|
124
|
+
When A/B testing is enabled, variant pages are served through a `/page-test/[...slugs]` route that the proxy (Next 16) or middleware (Next 15) rewrites to. This route **must** use:
|
|
125
125
|
|
|
126
126
|
- **`generatePageTestMetadata`** (not `generatePageMetadata`) so that `robots`/`indexed` comes from the **canonical/control** page — variant entries are intentionally `indexed: false` in Contentful.
|
|
127
127
|
- **`generatePageTest`** (not `generatePage`) so breadcrumbs, `model.href`, and JSON-LD use the **control/canonical** path while variant **content** still renders.
|
|
@@ -11,7 +11,7 @@ This skill adds the ability for **non-technical content editors** to manage redi
|
|
|
11
11
|
- Editors create `redirect` entries (they can **pick** existing Pages/Articles/etc. via the single From/To internal pickers or type raw paths).
|
|
12
12
|
- On publish, a Contentful webhook calls your Vercel **Deploy Hook**.
|
|
13
13
|
- The next build fetches the current redirects (via the normal CDA helpers), runs `buildRedirectMap`, and writes a tiny static file.
|
|
14
|
-
- Your `middleware.ts` imports that file and does the redirect **synchronously with zero runtime cost**.
|
|
14
|
+
- Your `proxy.ts` (Next 16) or `middleware.ts` (Next 15) imports that file and does the redirect **synchronously with zero runtime cost**.
|
|
15
15
|
- Propagation time = normal Vercel build (usually 1–3 minutes). Robust, no extra tokens or Edge Config required.
|
|
16
16
|
|
|
17
17
|
A faster "seconds" path (Edge Config) is explicitly **not** included in v1 per product direction — the model and helpers are forward-compatible if you add it later.
|
|
@@ -133,19 +133,19 @@ Wire it into the build:
|
|
|
133
133
|
|
|
134
134
|
(You can also call it from a `next.config.ts` `webpack` hook or a turbo pipeline step — whatever is consistent with how you generate the A/B static data.)
|
|
135
135
|
|
|
136
|
-
### 4.2 Static
|
|
136
|
+
### 4.2 Static proxy (zero runtime work)
|
|
137
137
|
|
|
138
|
-
|
|
138
|
+
On Next 16 create `src/proxy.ts` (Next 15: `src/middleware.ts` + `export function middleware`). Canonical template: `apps/example-empty/src/proxy.ts`.
|
|
139
139
|
|
|
140
140
|
```ts
|
|
141
141
|
import { NextResponse, type NextRequest } from 'next/server';
|
|
142
|
-
import { redirects } from '
|
|
142
|
+
import { redirects } from '@/generated/redirects';
|
|
143
143
|
|
|
144
144
|
// If you also use A/B testing static middleware, import and compose here.
|
|
145
145
|
import { createStaticAbTestMiddleware } from '@se-studio/ab-testing/middleware';
|
|
146
|
-
// import { testsByPath } from '
|
|
146
|
+
// import { testsByPath } from '@/generated/abTests';
|
|
147
147
|
|
|
148
|
-
export async function
|
|
148
|
+
export async function proxy(request: NextRequest) {
|
|
149
149
|
const { pathname } = request.nextUrl;
|
|
150
150
|
|
|
151
151
|
// 1. Redirects first (cheap object lookup)
|
|
@@ -177,7 +177,7 @@ export const config = {
|
|
|
177
177
|
};
|
|
178
178
|
```
|
|
179
179
|
|
|
180
|
-
If you already have a `middleware.ts` for A/B or other things, just add the redirect check at the very top (before any other logic).
|
|
180
|
+
If you already have a `proxy.ts` (or Next 15 `middleware.ts`) for A/B or other things, just add the redirect check at the very top (before any other logic).
|
|
181
181
|
|
|
182
182
|
### 4.2.1 Redirects and sitemaps
|
|
183
183
|
|
|
@@ -370,7 +370,7 @@ Restricts request-time Next.js APIs in:
|
|
|
370
370
|
|
|
371
371
|
Banned: `next/headers` (headers, cookies, draftMode), `connection` from `next/server`, `unstable_noStore` from `next/cache`. `unstable_cache` and other `next/cache` exports remain allowed.
|
|
372
372
|
|
|
373
|
-
Dynamic by design (no restriction): `(cms-dev)`, `preview`, `api`, `middleware.ts
|
|
373
|
+
Dynamic by design (no restriction): `(cms-dev)`, `preview`, `api`, `proxy.ts` (Next 16) / `middleware.ts` (Next 15).
|
|
374
374
|
|
|
375
375
|
Lint is necessary but not sufficient — route policy + production smoke still required.
|
|
376
376
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: site-workflows-deps-update
|
|
3
|
-
description: "Update npm dependencies to latest across se-core-product and consumer SE Studio sites, one repo at a time. Pins Next.js
|
|
3
|
+
description: "Update npm dependencies to latest across se-core-product and consumer SE Studio sites, one repo at a time. Pins Next.js 16.3 and Node 24, updates pnpm to latest 11.x, enforces no pnpm patches everywhere. Validates, commits, and pushes to dev/develop. PointMe stays on Next 15.5 until its dedicated upgrade. Use when asked to update outdated packages or bump dependencies."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# SE dependency update (one project at a time)
|
|
@@ -11,7 +11,7 @@ Update npm dependencies to **latest** in se-core-product and consumer repos that
|
|
|
11
11
|
|
|
12
12
|
**Default:** Process **one repo per invocation**. At the end, summarize changes and offer the next project.
|
|
13
13
|
|
|
14
|
-
**Never:** push to `main`/`master`/`production` or any production branch; promote from production checkouts (e.g. HSD `production-hsd-website`); bump Next to
|
|
14
|
+
**Never:** push to `main`/`master`/`production` or any production branch; promote from production checkouts (e.g. HSD `production-hsd-website`); bump Next to 17; bump Node to 25+; use `pnpm patch` / `patchedDependencies` / `patches/`; bypass or remove `minimumReleaseAge`; **hand-edit `package.json` dependency versions** (use `pnpm update` instead). Production promotion is **human-only** for all customer sites. **PointMe:** keep `overrides.next` on `^15.5.x` until the Next 16 site wave — do not pull it to 16 during a routine deps update.
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -101,15 +101,16 @@ minimumReleaseAgeExclude:
|
|
|
101
101
|
- '@se-studio/*'
|
|
102
102
|
|
|
103
103
|
overrides:
|
|
104
|
-
next: ^
|
|
104
|
+
next: ^16.3.1
|
|
105
105
|
'@types/node': ^24.13.2
|
|
106
106
|
```
|
|
107
107
|
|
|
108
108
|
- **`minimumReleaseAge: 1440`** — do not install packages published in the last 24 hours (supply-chain guard).
|
|
109
109
|
- **`@se-studio/*` exclude** — our own packages may update immediately after npm publish.
|
|
110
110
|
- **Keep repo-specific additional excludes** when present (e.g. vitest pins in se-core-product, `@emnapi/runtime` in se-website-2026, PointMe `mapbox-gl` / `react-day-picker` overrides).
|
|
111
|
+
- **PointMe exception:** leave `next: ^15.5.x` until that site’s Next 16 wave.
|
|
111
112
|
|
|
112
|
-
`pnpm update -r --latest` would bump `next`
|
|
113
|
+
`pnpm update -r --latest` would bump `next` past the supported 16.3 line and `@types/node` → 26 without the overrides block. The overrides prevent that.
|
|
113
114
|
|
|
114
115
|
**Never bypass `minimumReleaseAge`** during dependency updates. Do not remove the block, comment it out, or use undocumented pnpm flags. If a non-`@se-studio` package was published within 24 hours, it stays at the current version until it ages out — note that in the report and re-run later if needed.
|
|
115
116
|
|
|
@@ -162,7 +163,7 @@ pnpm update -r \
|
|
|
162
163
|
Safety re-pin after update:
|
|
163
164
|
|
|
164
165
|
```bash
|
|
165
|
-
pnpm update -r next@^
|
|
166
|
+
pnpm update -r next@^16.3.1 @types/node@^24
|
|
166
167
|
pnpm install
|
|
167
168
|
```
|
|
168
169
|
|
|
@@ -217,7 +218,7 @@ Include in the summary:
|
|
|
217
218
|
|
|
218
219
|
- Major dependency bumps (from the Step 1 audit diff)
|
|
219
220
|
- pnpm version: before → after
|
|
220
|
-
- Confirmed pins: Next 15.x, Node 24, `@types/node` ^24
|
|
221
|
+
- Confirmed pins: Next 16.3.x (PointMe: Next 15.5.x until its upgrade), Node 24, `@types/node` ^24
|
|
221
222
|
- Confirmed `minimumReleaseAge: 1440` and `@se-studio/*` exclude present
|
|
222
223
|
- Packages still outdated because they are inside the 24-hour release window (if any)
|
|
223
224
|
- Patches check bootstrapped (yes/no)
|
|
@@ -76,14 +76,24 @@ Write `AGENTS.md` at the project root. Fill in the user's email address (from me
|
|
|
76
76
|
Include the **agent session workflow block** from [`packages/skills/references/agent-session/customer-agents-block.md`](../../references/agent-session/customer-agents-block.md) (branch policy, placement, parallel features, handoff).
|
|
77
77
|
|
|
78
78
|
```markdown
|
|
79
|
-
|
|
79
|
+
<!-- BEGIN:nextjs-agent-rules -->
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
# This is NOT the Next.js you know
|
|
82
|
+
|
|
83
|
+
This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` (resolved from this file's directory; in monorepos the `next` package may not be visible from the repo root) before writing any code. Heed deprecation notices.
|
|
84
|
+
|
|
85
|
+
This block is written and re-added by `next dev` — verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean.
|
|
86
|
+
|
|
87
|
+
<!-- END:nextjs-agent-rules -->
|
|
88
|
+
|
|
89
|
+
<!-- BEGIN:se-studio-package-rules -->
|
|
82
90
|
|
|
83
91
|
# @se-studio packages: ALWAYS read docs before coding
|
|
84
92
|
|
|
85
93
|
Before using any `@se-studio/*` package, read the relevant `node_modules/@se-studio/<package>/docs/llms.md`.
|
|
86
94
|
|
|
95
|
+
<!-- END:se-studio-package-rules -->
|
|
96
|
+
|
|
87
97
|
# userEmail
|
|
88
98
|
The user's email address is [USER_EMAIL].
|
|
89
99
|
|