@se-studio/skills 1.5.8 → 1.5.10

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,12 @@
1
1
  # @se-studio/skills
2
2
 
3
+ ## 1.5.10
4
+
5
+ ### Patch Changes
6
+
7
+ - Document lockfile sync enforcement (scripts, CI snippet, deps-update and smoke-test skill updates).
8
+ - 2359f69: Add `site-workflows-stale-files-cleanup` skill and `references/stale-files-cleanup/` for repository hygiene audits on SE Studio marketing sites.
9
+
3
10
  ## 1.5.8
4
11
 
5
12
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@se-studio/skills",
3
- "version": "1.5.8",
3
+ "version": "1.5.10",
4
4
  "description": "SE Studio agent skills for marketing site development with Contentful CMS",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,13 +13,7 @@
13
13
  "branch": "dev",
14
14
  "type": "core",
15
15
  "validate": "pnpm validate",
16
- "exampleApps": [
17
- "example-om1",
18
- "example-se2026",
19
- "example-brightline",
20
- "example-brightlifekids",
21
- "example-empty"
22
- ]
16
+ "exampleApps": ["example-empty", "cms-edit-host"]
23
17
  },
24
18
  {
25
19
  "key": "se2026",
@@ -70,7 +70,7 @@ Invoke the skill with:
70
70
  **Example: merge only**
71
71
 
72
72
  ```bash
73
- cms-merge-guidelines --app-dir apps/example-om1
73
+ cms-merge-guidelines --app-dir apps/example-empty
74
74
  ```
75
75
 
76
76
  ---
@@ -51,7 +51,7 @@ or manually follow the steps below.
51
51
  ## Cursor agent task
52
52
 
53
53
  **Assign this task to a Cursor subagent.** Provide:
54
- - `apps/example-brightline/src/project/components/<TypeName>.tsx` (component source)
54
+ - `<app-dir>/src/project/components/<TypeName>.tsx` (e.g. `apps/example-empty` or a customer app path)
55
55
  - `generated/cms-discovery/field-list.json` (field metadata including enum values)
56
56
  - `generated/cms-discovery/theme-context.md` (palette + typography — authoritative colour names)
57
57
  - `scripts/guidelines/variant-proposal-prompt.md` (variant proposal instructions)
@@ -121,7 +121,7 @@ Example for Hero:
121
121
  ### 2 — Capture screenshots
122
122
 
123
123
  ```bash
124
- # From apps/example-brightline
124
+ # From the target app directory (e.g. apps/example-empty)
125
125
  node scripts/guidelines/capture-screenshots.mjs --variants /tmp/hero-variants.json
126
126
  ```
127
127
 
@@ -0,0 +1,54 @@
1
+ # Lockfile sync enforcement
2
+
3
+ Keep `pnpm-lock.yaml` aligned with every `package.json` and `pnpm-workspace.yaml` change.
4
+
5
+ ## Layers
6
+
7
+ | Layer | What it catches |
8
+ |-------|-----------------|
9
+ | **Pre-commit** | Manifest changed without staged lockfile; default frozen install drift |
10
+ | **CI validate** | Frozen install on integration branch (`develop` / `dev`) and PRs |
11
+ | **CI hoisted job** | cms-edit Vercel path (`--config.node-linker=hoisted`) — platform optional deps |
12
+ | **Vercel installCommand** | `--frozen-lockfile` on marketing sites; hoisted + frozen on cms-edit host |
13
+
14
+ ## Scripts (copy from se-core-product `scripts/`)
15
+
16
+ - `check-lockfile-sync.sh` — full (`default` + `hoisted`) or `--quick` (default only)
17
+ - `pre-commit-lockfile.sh` — wire into `.husky/pre-commit` before lint-staged
18
+
19
+ ## CI snippet
20
+
21
+ See [`validate-workflow-snippet.yml`](validate-workflow-snippet.yml). Customer monorepos should:
22
+
23
+ 1. Run validate on **`develop`** (or your integration branch), not only `main`.
24
+ 2. Add a parallel `lockfile-hoisted` job when `cms-edit/host/.npmrc` has `node-linker=hoisted`.
25
+
26
+ ## Vercel
27
+
28
+ | Project type | installCommand |
29
+ |--------------|----------------|
30
+ | Marketing app (monorepo root install) | `cd ../.. && pnpm install --frozen-lockfile` |
31
+ | cms-edit host | `cd ../.. && pnpm install --frozen-lockfile --config.node-linker=hoisted` |
32
+
33
+ ## After dependency changes
34
+
35
+ ```bash
36
+ pnpm install # repo root — never pnpm install -r for lockfile refresh
37
+ git add package.json pnpm-lock.yaml pnpm-workspace.yaml
38
+ ```
39
+
40
+ Use `pnpm install --no-frozen-lockfile` only when intentionally repairing the lockfile.
41
+
42
+ ## Rollout status (customer repos)
43
+
44
+ Apply the full stack when touching deps or CI in each repo:
45
+
46
+ | Repo | Pre-commit | CI develop/dev | CI hoisted | Vercel frozen (marketing) |
47
+ |------|------------|----------------|------------|---------------------------|
48
+ | brightline-sites | yes | yes | yes | yes |
49
+ | pedestal-sites | — | partial | — | no |
50
+ | om1-website | — | — | — | — |
51
+ | se-website-2026 | — | — | — | — |
52
+ | pointme | — | — | — | — |
53
+
54
+ Update this table as repos adopt the pattern.
@@ -0,0 +1,32 @@
1
+ # Append to .github/workflows/validate.yml (or equivalent CI workflow).
2
+ # Run on the integration branch (develop / dev), not only main.
3
+
4
+ on:
5
+ push:
6
+ branches: [main, develop] # or [main, dev] for se-core-product consumers
7
+ pull_request:
8
+
9
+ jobs:
10
+ validate:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ - uses: pnpm/action-setup@v4
15
+ - uses: actions/setup-node@v4
16
+ with:
17
+ node-version: '24'
18
+ cache: pnpm
19
+ - run: pnpm install --frozen-lockfile
20
+ - run: pnpm validate
21
+
22
+ # Required when cms-edit/host (or apps/cms-edit-host) uses node-linker=hoisted.
23
+ lockfile-hoisted:
24
+ runs-on: ubuntu-latest
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+ - uses: pnpm/action-setup@v4
28
+ - uses: actions/setup-node@v4
29
+ with:
30
+ node-version: '24'
31
+ cache: pnpm
32
+ - run: pnpm install --frozen-lockfile --config.node-linker=hoisted
@@ -48,7 +48,7 @@ Guidelines are only meaningful when the showcase is populated with realistic dat
48
48
 
49
49
  | Input | Description |
50
50
  |---|---|
51
- | **App directory** | Repo-relative path, e.g. `apps/example-om1` or `apps/example-se2026` |
51
+ | **App directory** | Repo-relative path, e.g. `apps/example-empty` in this monorepo, or an app path in a customer repo (see `docs/RELATED_PROJECTS.md`) |
52
52
  | **Mode** | `full` \| `single` \| `merge-only` |
53
53
  | **Type name** | Required for `single` mode — the exact type name from discovery, e.g. `"Hero"` or `"Cards Grid"` |
54
54
  | **Discovery URL** | `http://localhost:<PORT>/api/cms/discovery/` — `<PORT>` from the running dev server (`pnpm dev`) |
@@ -94,7 +94,7 @@ mkdir -p scripts
94
94
  cp node_modules/@se-studio/skills/skills/performance-audit/lighthouse.ts scripts/lighthouse.ts
95
95
  ```
96
96
 
97
- Or copy from `apps/example-se2026/scripts/lighthouse.ts` in the se-core-product monorepo if you have it available.
97
+ Or copy from a customer site repo if available (e.g. `se-website-2026/scripts/lighthouse.ts`). This monorepo only ships `apps/example-empty`.
98
98
 
99
99
  **Customise `PAGES` for the project** — edit the `PAGES` array near the top of the script. Choose representative pages: homepage, a list/index page, and a detail page. Use the sitemap to identify good candidates:
100
100
 
@@ -5,7 +5,7 @@ description: "Guide for the (cms-routes) route group and appShared pattern. Use
5
5
 
6
6
  # CMS Routes and appShared Pattern
7
7
 
8
- Reference apps: **example-se2026**, **example-brightline**, **example-om1**. (example-om1 uses `resources/`, `team/`, `topics/` instead of `articles/`, `people/`, `tags/`.)
8
+ Reference app: **example-empty** (this monorepo). Customer sites with fuller route sets: see `docs/RELATED_PROJECTS.md` (e.g. OM1 uses `resources/`, `team/`, `topics/` instead of `articles/`, `people/`, `tags/`).
9
9
 
10
10
  ## Route Group: (cms-routes)
11
11
 
@@ -7,7 +7,7 @@ description: "Guide for creating new Next.js App Router pages and dynamic routes
7
7
 
8
8
  This guide explains how to create new pages and handle routing in the SE Core Product Next.js framework. The system uses Next.js App Router with Contentful-driven dynamic routing.
9
9
 
10
- Reference apps: **example-se2026**, **example-brightline**, **example-om1**.
10
+ Reference app: **example-empty** (this monorepo). Customer implementations: see `docs/RELATED_PROJECTS.md`.
11
11
 
12
12
  ## Page Architecture
13
13
 
@@ -5,7 +5,7 @@ description: "Guide for the lib directory structure in SE Core Product CMS apps.
5
5
 
6
6
  # Lib Directory Structure
7
7
 
8
- Reference apps: **example-se2026**, **example-brightline**, **example-om1**.
8
+ Reference app: **example-empty** (this monorepo). Customer implementations: see `docs/RELATED_PROJECTS.md`.
9
9
 
10
10
  ## File Responsibilities
11
11
 
@@ -52,6 +52,8 @@ Example `package.json` entries:
52
52
  }
53
53
  ```
54
54
 
55
+ **Lockfile CI** — before deployment smoke, ensure `.github/workflows/validate.yml` runs `pnpm install --frozen-lockfile` on the integration branch (`develop` / `dev`) and PRs, plus a parallel `lockfile-hoisted` job when cms-edit uses `node-linker=hoisted`. Copy scripts and workflow snippet from [`references/lockfile-sync/`](../../references/lockfile-sync/README.md). Marketing `vercel.json` install commands must use `--frozen-lockfile`.
56
+
55
57
  **Vercel Deployment Check (live URL)** — GitHub Action on `vercel.deployment.ready` tests `client_payload.url` before production domains alias. Workflow must live on the repo **default branch**. Register the status `name` in Vercel → Settings → Build and Deployment → Deployment Checks.
56
58
 
57
59
  Filter on `client_payload.environment == 'production'` when Deployment Checks target production only. Vercel also dispatches for preview and custom environments (`preview`, `develop`, etc.); skip those to avoid duplicate CI runs. Use `workflow_dispatch` without an environment filter for manual smoke against any URL.
@@ -37,6 +37,8 @@ pnpm install --frozen-lockfile --config.node-linker=hoisted
37
37
 
38
38
  Run that locally **before push** whenever `package.json`, lockfile, or overrides change. A mismatch surfaces as `ERR_PNPM_OUTDATED_LOCKFILE` (manifest vs lockfile specifiers).
39
39
 
40
+ **Lockfile enforcement stack** — copy `scripts/check-lockfile-sync.sh` and `scripts/pre-commit-lockfile.sh` from se-core-product; wire pre-commit before lint-staged; add CI jobs from [`references/lockfile-sync/`](../../references/lockfile-sync/README.md). Marketing Vercel projects: `installCommand` must include `--frozen-lockfile`. Integration branch (`develop` / `dev`) must be in CI `push.branches`, not only `main`.
41
+
40
42
  ---
41
43
 
42
44
  ## Projects
@@ -234,6 +236,17 @@ After a successful update, you may add the patches check to the root `validate`
234
236
 
235
237
  This is optional follow-up — the skill workflow always runs the check regardless.
236
238
 
239
+ ## Optional: lockfile enforcement rollout
240
+
241
+ When updating deps in a customer repo, adopt the full lockfile stack if missing:
242
+
243
+ 1. Copy `scripts/check-lockfile-sync.sh` and `scripts/pre-commit-lockfile.sh` from se-core-product.
244
+ 2. Add `bash scripts/pre-commit-lockfile.sh` to `.husky/pre-commit` (before lint-staged).
245
+ 3. Extend `.github/workflows/validate.yml`: integration branch in `push.branches`, parallel `lockfile-hoisted` job when cms-edit uses hoisted linker.
246
+ 4. Set marketing `vercel.json` `installCommand` to `cd ../.. && pnpm install --frozen-lockfile`.
247
+
248
+ See [`references/lockfile-sync/README.md`](../../references/lockfile-sync/README.md) for the rollout table and workflow snippet.
249
+
237
250
  ---
238
251
 
239
252
  ## Troubleshooting