@se-studio/skills 1.9.16 → 1.9.18

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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # @se-studio/skills
2
2
 
3
+ ## 1.9.18
4
+
5
+ ### Patch Changes
6
+
7
+ - 023c171: Shorten the customer code-review prompt to the diff under review. Agent rules live in `AGENTS.md` and `.cursor/rules`. Do not add a `.cursorrules` file.
8
+
9
+ ## 1.9.17
10
+
11
+ ### Patch Changes
12
+
13
+ - d645ee4: Document both person URL shapes. The legacy generator uses `/peopleType/[peopleType]/[person]`. The section generator uses a static `/{peopleSlug}/{type}/[person]`.
14
+
3
15
  ## 1.9.16
4
16
 
5
17
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@se-studio/skills",
3
- "version": "1.9.16",
3
+ "version": "1.9.18",
4
4
  "description": "SE Studio agent skills for marketing site development with Contentful CMS",
5
5
  "repository": {
6
6
  "type": "git",
@@ -60,14 +60,14 @@ Never hand-edit `package.json` dependency versions.
60
60
  For visual/UI changes:
61
61
 
62
62
  1. **Early:** draft PR → Vercel preview → mobile (~390) + laptop (~1280) screenshots → **stop** for Nick’s visual review (iterate on feedback).
63
- 2. **Full (after Nick is happy):** re-check tablet (~768), laptop (~1280), **oversize (~1920+)**, and mobile. Then multi-lens **code review** (`CODE_REVIEW.md`).
63
+ 2. **Full (after Nick is happy):** re-check tablet (~768), laptop (~1280), **oversize (~1920+)**, and mobile. Then follow `CODE_REVIEW.md` and stop.
64
64
  3. Do not chase pixel-perfect polish before the early gate.
65
65
 
66
66
  Non-UI changes skip visual gates and go to code review.
67
67
 
68
68
  ### Code review
69
69
 
70
- Before asking to merge to `develop`, run the multi-lens review in `CODE_REVIEW.md` (architecture, Next/React/Vercel, performance/size, docs consistency, general quality). Findings: **BLOCKER** / **NIT**.
70
+ Before asking to merge to `develop`, run the review in `CODE_REVIEW.md` and stop. Findings: **BLOCKER** / **NIT**. Do not keep a second checklist in `AGENTS.md`. That file only points at `CODE_REVIEW.md`.
71
71
 
72
72
  ### Parallel features
73
73
 
@@ -54,5 +54,5 @@ Source of truth: `se-core-product` `docs/PHILOSOPHY.md`. Code review: `CODE_REVI
54
54
 
55
55
  - Keep smoke cases and discovery intact; fix `@se-studio/site-check` in core if smoke is wrong.
56
56
  - New behaviour needs a test. Failing typecheck/lint/tests blocks merge.
57
- - Agent multi-lens code review (`CODE_REVIEW.md`) before asking to merge to `develop`.
57
+ - Follow `CODE_REVIEW.md` and stop. Do not run a second checklist from this file.
58
58
  - Production merges need human ask + confirm. Agents do not push production.
@@ -2,15 +2,22 @@
2
2
 
3
3
  Use this prompt when reviewing a **customer marketing site** PR (or when the user asks for a code review). Label every finding **BLOCKER** or **NIT**. Blockers first. Unclear judgement calls → flag to Nick in chat.
4
4
 
5
- Do **not** use Bugbot or a `nick-go` GitHub label. Merge to `develop` only when Nick says so in chat. Production still needs ask + confirm (`production-merge.md`).
5
+ Do **not** use Bugbot or a `nick-go` GitHub label. Merge to `develop` only when Nick says so in chat, a review covers the current head SHA, and the PR has a `## Merge approval` comment. Production still needs ask + confirm (`production-merge.md`).
6
6
 
7
7
  Canonical architecture: `se-core-product` `docs/PHILOSOPHY.md`. Placement and handoffs: skill `site-workflows-agent-session`.
8
8
 
9
+ ## Scope
10
+
11
+ - Review added and modified lines, plus call sites broken by a deleted or renamed symbol. Do not audit the rest of the repo.
12
+ - A lens the diff cannot touch is one line: N/A.
13
+ - Do not re-check Biome style or TypeScript strictness. The repo validate script already does.
14
+ - A later review of the same PR reads only the diff since the SHA already reviewed.
15
+
9
16
  ---
10
17
 
11
18
  ## Multi-lens checklist
12
19
 
13
- Run all five lenses. Skip a lens only when the diff clearly cannot touch it (say so).
20
+ Run a lens only when the diff can touch it.
14
21
 
15
22
  ### 1. Architecture / placement
16
23
 
@@ -38,7 +45,7 @@ Run all five lenses. Skip a lens only when the diff clearly cannot touch it (say
38
45
 
39
46
  ### 4. Docs consistency
40
47
 
41
- - [ ] AGENTS.md, `.cursorrules`, `src/project/*` docs, cms-edit packs, and READMEs match the behaviour change.
48
+ - [ ] AGENTS.md, `src/project/*` docs, cms-edit packs, and READMEs match the behaviour change.
42
49
  - [ ] No leftover Bugbot / `nick-go` instructions contradicting chat-gated merge.
43
50
  - [ ] Site `docs/AGENT_PROCESS_NOTES.md` updated only for site-local process learnings (promote to core via “promote process note”).
44
51
 
@@ -96,3 +103,7 @@ Do not treat “pixel-perfect vs Figma” as a merge blocker before the early vi
96
103
  4. Open questions for Nick
97
104
 
98
105
  Out of scope: inventing product/design/copy changes; Netlify/Storybook check noise.
106
+
107
+ ## Design review
108
+
109
+ When the diff is a new mechanism, analytics, a Contentful fetch or cache change, schema, or placement: post `## Design review` on the PR (PASS / BLOCKERS / N/A), separate from type-check and tests. Otherwise write N/A. The procedure is `docs/design-review.md` in se-core-product.
@@ -224,7 +224,7 @@ For **app-level** components that render CMS content (Hero, CTA, etc.):
224
224
 
225
225
  ### Heading hierarchy
226
226
 
227
- Use `Element` from `getSizingInformation(index)` for the main heading of each component/collection; use `ChildElement` for headings of items inside a collection. Render **preHeading** and **postHeading** as `<p>` with a typography class, never as heading tags. See `.cursorrules` (Heading and pre/post rules) and the create-component skill.
227
+ Use `Element` from `getSizingInformation(index)` for the main heading of each component/collection; use `ChildElement` for headings of items inside a collection. Render **preHeading** and **postHeading** as `<p>` with a typography class, never as heading tags. See the create-component skill.
228
228
 
229
229
  ### Fetching Contentful Data
230
230
 
@@ -375,7 +375,7 @@ When making changes, update the relevant documentation:
375
375
  - `specs/` - Content model and component specifications
376
376
  - `packages/*/README.md` - Package-specific docs (human-facing)
377
377
  - `packages/*/docs/llms.md` - LLM-optimised quick-reference per package (also published to npm)
378
- - `.cursorrules` - AI conventions (update if patterns change)
378
+ - `AGENTS.md` - Agent operating rules (update if the workflow changes)
379
379
 
380
380
  ## Links
381
381
 
@@ -31,10 +31,14 @@ export default function CmsRoutesLayout({ children }: { children: React.ReactNod
31
31
  | `/{slug1}/{slug2}/...` | `[level1]/[...slugs]/page.ts` | Multi-level pages |
32
32
  | `/articles/` | `articles/page.ts` | Articles index (uses ARTICLES_BASE) |
33
33
  | `/articles/{type}/` | `articles/[articleType]/page.ts` | Article type index |
34
- | `/articles/{type}/{tag}/` | `articles/[articleType]/[tag]/page.ts` | Article type + tag index. Only when that base sets `tagInPath: true`. Hand-written `generateArticleTypeTag*` page. |
34
+ | `/articles/{type}/{tag}/` | `articles/[articleType]/[tag]/page.ts` | Article type + tag index. Generated when that base sets `tagInPath: true`. |
35
35
  | `/articles/{type}/{tag}/{article}/` | `articles/[articleType]/[tag]/[...slugs]/page.ts` | Individual article with a tag segment. Same `tagInPath` rule. |
36
36
  | `/tags/`, `/tags/{tag}/` | `tags/` | Tag index when `tags: true` |
37
- | `/people/`, `/people/{person}/` | `people/` | People (if enabled) |
37
+ | `/people/` | `people/page.ts` | People index when `personBases[].index` is on |
38
+ | `/people/{person}/` | `people/[person]/page.ts` | Legacy person with no person type. No redirect to the typed URL |
39
+ | `/peopleType/{peopleType}/{person}/` | `peopleType/[peopleType]/[person]/page.ts` | Legacy person with a person type. The type segment is dynamic so it does not sit beside `people/[person]` |
40
+ | `/{peopleSlug}/{type}/`, `/{peopleSlug}/{type}/{person}/` | `{peopleSlug}/{type}/page.ts`, `{peopleSlug}/{type}/[person]/page.ts` | Section generator. The type segment is the person type slug, not `[peopleType]`. With no person prefix the folders are `/{type}/` and `/{type}/[person]/` |
41
+ | `/people/{type}/`, `/people/{type}/{person}/` | `people/{type}/` | Extra folders for each name in `personBases[].types` |
38
42
 
39
43
  Base paths come from `@/lib/constants` (e.g. ARTICLES_BASE = `/learning-hub` or `/articles`).
40
44
 
@@ -99,7 +103,7 @@ export default async function (props: PageProps<'/[level1]'>) {
99
103
  }
100
104
  ```
101
105
 
102
- A dynamic `articles` route uses `converterContext.urlCalculators` (`article`, `articleType`, `articleTypeTag`). Import `converterContext` from `@/lib/converter-context` when that module exists (so route files don't pull in cms-server); otherwise from `@/lib/cms-server`. A fixed article folder, and a dynamic base whose path is not `articles`, passes the path of that file (`/work/`, `/work/${articleSlug}/`). `article()` prefixes `ARTICLES_BASE` and, when primary tags are on, inserts `other`. That is a different URL from the file that was written. The generator does this. Hand-written `[tag]` pages still use `articleTypeTag`.
106
+ A dynamic `articles` route uses `converterContext.urlCalculators` (`article`, `articleType`, `articleTypeTag`). Import `converterContext` from `@/lib/converter-context` when that module exists (so route files don't pull in cms-server); otherwise from `@/lib/cms-server`. A fixed article folder, and a dynamic base whose path is not `articles`, passes the path of the file that was written (`/work/`, `/work/${articleSlug}/`). `article()` prefixes `ARTICLES_BASE` and, when primary tags are on, inserts `other`. That is a different URL from the file that was written. The generator writes `[tag]` pages with `articleTypeTag` when `tagInPath` is true. Feature flags live in `marketing-routes.json` and `src/generated/marketing-flags.ts`. The legacy generator writes a typed person at `/peopleType/${peopleType}/${slug}/`. The section generator writes a static `/${peopleSlug}/${type}/${slug}/`, or `/${type}/${slug}/` when there is no person prefix. A person with no type is `/${peopleSlug}/${slug}/`. Neither route redirects to the other. `[level1]` stays a generic page.
103
107
 
104
108
  ## See Also
105
109
 
@@ -41,12 +41,10 @@ export const customerName = '...';
41
41
  export const applicationName = '...';
42
42
  export const siteTitle = '...';
43
43
  export const siteDescription = '...';
44
- export const enablePerson = false;
45
- export const enablePeopleIndex = false;
46
- export const enableTag = false;
47
- export const enableTagsIndex = false;
48
44
  ```
49
45
 
46
+ `enablePerson`, `enablePeopleIndex`, `enableTag`, `enableTagsIndex`, `enableArticleTypeIndex`, `enableArticleTypeTagIndex`, and `enablePrimaryTagPartOfSlug` live in `src/lib/marketing-routes.json`. `scripts/generate-marketing-routes.mjs` writes `src/generated/marketing-flags.ts`.
47
+
50
48
  ## Data Flow
51
49
 
52
50
  ```
@@ -272,7 +272,7 @@ Re-check the same Vercel preview at least at:
272
272
  | Laptop | ~1280 |
273
273
  | **Oversize / wide desktop** | **~1920+** |
274
274
 
275
- Flag layout blowouts, overflow, sparse/stretched heroes, broken grids, and type that does not scale. Attach screenshots to chat/PR, then proceed to **multi-lens code review**.
275
+ Flag layout blowouts, overflow, sparse/stretched heroes, broken grids, and type that does not scale. Attach screenshots to chat/PR, then follow the review file and stop (`CODE_REVIEW_PROMPT.md` on core, `CODE_REVIEW.md` on a customer site).
276
276
 
277
277
  Non-UI changes skip visual phases and go to code review.
278
278
 
@@ -284,12 +284,12 @@ When placement says **core** (or the site is blocked on package behaviour): emit
284
284
 
285
285
  ### Code review (replaces Bugbot)
286
286
 
287
- Before asking to merge to `dev` / `develop`:
287
+ Before asking to merge to `dev` / `develop`, follow the review file and stop. Do not restate its checklist here.
288
288
 
289
- - **Core:** follow root [`CODE_REVIEW_PROMPT.md`](../../../../CODE_REVIEW_PROMPT.md)
290
- - **Customer:** follow [`customer-code-review.md`](../../references/agent-session/customer-code-review.md) (copied into the site as `CODE_REVIEW.md`)
289
+ - **Core:** [`CODE_REVIEW_PROMPT.md`](../../../../CODE_REVIEW_PROMPT.md)
290
+ - **Customer:** [`customer-code-review.md`](../../references/agent-session/customer-code-review.md) (copied into the site as `CODE_REVIEW.md`)
291
291
 
292
- Lenses: architecture/placement, Next/React/Vercel, performance/size, docs consistency, general quality. Findings: **BLOCKER** / **NIT**. No Bugbot; no `nick-go` label — Nick approves merges to integration branches **in chat**.
292
+ Findings: **BLOCKER** / **NIT**. No Bugbot; no `nick-go` label — Nick approves merges to integration branches **in chat**.
293
293
 
294
294
  ### Process feedback
295
295
 
@@ -331,7 +331,7 @@ Agents must **never** ship from a registry `productionPath` (e.g. HSD `~/source/
331
331
  gh pr create --base <integration-branch> --head <branch> --draft --title "<feature>: <summary>"
332
332
  ```
333
333
 
334
- Before asking to merge the draft: complete visual gates (if UI) and multi-lens code review.
334
+ Before asking to merge the draft: complete visual gates (if UI) and the review in that file.
335
335
 
336
336
  If `gh` is unavailable or user prefers direct push, push `feature/*` and note the remote URL in handoff.
337
337
 
@@ -390,7 +390,7 @@ Expected: `200 OK`. A `401` means the secret in the header doesn't match the dep
390
390
 
391
391
  ## What to do next
392
392
 
393
- - **If inspector mode doesn't highlight fields**: check that `getPreviewFieldProps` is applied to field containers in the components. See `.cursorrules` for the pattern.
393
+ - **If inspector mode doesn't highlight fields**: check that `getPreviewFieldProps` is applied to field containers in the components. See the create-component skill.
394
394
  - **For draft content visibility**: set `DRAFT_ONLY=true` in Vercel on a preview/staging environment (not production) so editors can see unpublished content without affecting live users.
395
395
 
396
396
  ## (Optional) Redirects via the rebuild pattern
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: site-workflows-new-project
3
- description: "Bootstrap a new SE Studio customer project from the SE Studio template. Runs full project cleanup (black/white colors, system font, minimal registrations), then sets up CLAUDE.md, AGENTS.md, README files, STYLING.md, ANIMATION.md, and updates project identity (site title, description, .cursorrules). Use this immediately after cloning the template for a new client."
3
+ description: "Bootstrap a new SE Studio customer project from the SE Studio template. Runs full project cleanup (black/white colors, system font, minimal registrations), then sets up CLAUDE.md, AGENTS.md, README files, STYLING.md, ANIMATION.md, and updates project identity (site title, description). Use this immediately after cloning the template for a new client."
4
4
  ---
5
5
 
6
6
  # SE New Project Bootstrap
@@ -92,8 +92,6 @@ In `src/project/components/Footer/index.tsx`, replace `"Site Name"` with the cus
92
92
  Write `CLAUDE.md` at the project root:
93
93
 
94
94
  ```markdown
95
- @.cursorrules
96
-
97
95
  @AGENTS.md
98
96
  ```
99
97
 
@@ -113,9 +111,7 @@ Also copy:
113
111
  | [`customer-code-review.md`](../../references/agent-session/customer-code-review.md) | `CODE_REVIEW.md` (repo root) |
114
112
  | Starter notes | `docs/AGENT_PROCESS_NOTES.md` (see [`process-feedback.md`](../../references/agent-session/process-feedback.md)) |
115
113
 
116
- Do **not** create `.cursor/BUGBOT.md`. Do **not** require a `nick-go` label.
117
-
118
- Wire `.cursorrules` so “when the user asks for a code review” points at `CODE_REVIEW.md`.
114
+ Do **not** create `.cursor/BUGBOT.md`. Do **not** create `.cursorrules`. Do **not** require a `nick-go` label.
119
115
 
120
116
  Skeleton:
121
117
 
@@ -161,15 +157,9 @@ Before any Contentful content edit:
161
157
 
162
158
  ---
163
159
 
164
- ## Step 7 — Update `.cursorrules`
165
-
166
- Read `.cursorrules` and update the **Project Overview** section at the top:
167
- - Replace the previous project name with the new customer/project name
168
- - Update the "Key technologies" list if anything changed
169
- - Remove any project-specific notes about the previous customer
170
- - Ensure code-review instructions point to `CODE_REVIEW.md` (not Bugbot)
160
+ ## Step 7 — Do not add `.cursorrules`
171
161
 
172
- Do not change the Code Style, Component Architecture, or other generic sections — those apply to all SE Studio projects.
162
+ Operating rules are `AGENTS.md`. Architecture gates are `.cursor/rules/architecture.mdc`. Code review is `CODE_REVIEW.md`. If the template still has a `.cursorrules` file, delete it.
173
163
 
174
164
  ---
175
165