@se-studio/skills 1.7.3 → 1.7.5

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.7.5
4
+
5
+ ### Patch Changes
6
+
7
+ - 6b53e51: Document worktree `.env.local` handling: canonical store at `~/source/local-env`, no-clobber seed after `git worktree add`, 1Password as backup only (never overwrite). Seed catalogs the store, never writes through dest symlinks, and is invoked with `pnpm --dir ~/source/se/se-core-product`.
8
+
9
+ ## 1.7.4
10
+
11
+ ### Patch Changes
12
+
13
+ - All marketing sites are on Next 16.3: drop the PointMe 15.5 deps exception, require `supportedArchitectures` in new-project bootstrap, and point agents at version-matched `nextjs-agent-rules` instead of the Next 15 `agents-md` docs dump.
14
+
3
15
  ## 1.7.3
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.7.3",
3
+ "version": "1.7.5",
4
4
  "description": "SE Studio agent skills for marketing site development with Contentful CMS",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,3 +1,7 @@
1
+ ## Next.js docs (version-matched)
2
+
3
+ This site runs **Next.js 16.3**. Before writing Next.js code, read the relevant guide in `node_modules/next/dist/docs/` (in monorepos, resolve from the app that depends on `next`). Keep the managed `<!-- BEGIN:nextjs-agent-rules -->` block in `AGENTS.md`. Do **not** use `npx @next/codemod agents-md`, `.next-docs`, or `NEXT-AGENTS-MD-START` (Next 15 index: Pages Router, `middleware.ts`). Ignore `vercel-react-native-skills` if the vercel-labs pack installed it.
4
+
1
5
  ## Agent session workflow
2
6
 
3
7
  **Load skill `site-workflows-agent-session` at the start of every coding session.**
@@ -49,6 +53,7 @@ Never hand-edit `package.json` dependency versions.
49
53
  - **Git worktree required** for all feature work — do not implement on the primary `develop` checkout
50
54
  - Path: registry `worktreesRoot` / `<feature-slug>` (see se-core-product `packages/skills/references/agent-session/projects.registry.json`)
51
55
  - Create: `git worktree add <worktreesRoot>/<feature-slug> -b feature/<scope>/<slug> origin/develop`
56
+ - Then seed env: `pnpm --dir ~/source/se/se-core-product local-env seed --project <key>` (no-clobber copy of `.env.local`; never invent a stub or symlink at develop)
52
57
  - Manifest must set `worktree:`; opt out only if the user says “work in place” / “no worktree” (`worktree_opt_out: true`)
53
58
  - CMS edits: `--session <feature-slug>` (isolate cms-edit sessions)
54
59
  - Track in-flight work: manifest at `~/source/se/se-core-product/work/active/<feature>.yaml` (or `work/active/` in this repo if core checkout unavailable)
@@ -0,0 +1,82 @@
1
+ # Local env files and git worktrees
2
+
3
+ Gitignored `.env.local` files do **not** copy into a new worktree. Agents then invent a stub file (two keys, missing Contentful, etc.) or symlink at develop and overwrite the canonical secrets.
4
+
5
+ **Canonical doc** for this workflow. Also indexed from `docs/WORKFLOW.md`, `docs/DEVELOPMENT.md`, `AGENTS.md`, and skill `site-workflows-agent-session`.
6
+
7
+ ## Layout
8
+
9
+ | Layer | Path | Role |
10
+ |-------|------|------|
11
+ | Canonical | `~/source/local-env/<project-key>/<relative-path>` | Source of truth on disk. Not a git repo. |
12
+ | Develop checkout | registry `path` | Always-on integration branch. `init` copies from here into the store. |
13
+ | Feature worktrees | `worktreesRoot/<slug>` | Independent **copies**. Never a symlink at develop or the store. |
14
+ | 1Password | documents titled `local-env/<project-key>/<relative-path>` | Backup only. Create if missing. Never overwrite an existing item or checkout file. |
15
+
16
+ `localEnvRoot` is set on `projects.registry.json` (`~/source/local-env`).
17
+
18
+ Tracked files are whatever `.env.local` / `.env.*.local` exist on the **develop** checkout (`apps/*/.env.local` and `cms-edit/host/.env.local` included). Nested `experiments/` trees are ignored.
19
+
20
+ The live Highlander repo (`highlander-health-website`, not the 2026 port) is `localEnvExtras` key `highlander-live` in the registry (not the `highlander` 2026 project). `pnpm local-env` catalogs it with the other sites.
21
+
22
+ ## Commands
23
+
24
+ The script lives in **se-core-product**. From that repo, `pnpm local-env …` is enough. From a customer worktree, always pass `--dir`:
25
+
26
+ ```bash
27
+ pnpm --dir ~/source/se/se-core-product local-env audit
28
+ pnpm --dir ~/source/se/se-core-product local-env init
29
+ pnpm --dir ~/source/se/se-core-product local-env seed
30
+ pnpm --dir ~/source/se/se-core-product local-env seed --repair-subset --replace-symlinks
31
+ pnpm --dir ~/source/se/se-core-product local-env bootstrap
32
+ pnpm --dir ~/source/se/se-core-product local-env backup
33
+ ```
34
+
35
+ `--project pointme` limits to one registry key. `--dry-run` prints actions.
36
+
37
+ ### After `git worktree add`
38
+
39
+ ```bash
40
+ pnpm --dir ~/source/se/se-core-product local-env seed --project <key>
41
+ ```
42
+
43
+ If the worktree file is a **subset** of canonical keys (typical stub), repair:
44
+
45
+ ```bash
46
+ pnpm --dir ~/source/se/se-core-product local-env seed --project <key> --repair-subset --replace-symlinks
47
+ ```
48
+
49
+ Subset repair copies the old file to `~/source/local-env/.bak/<project>/<relative-path>` (not next to the checkout file), then writes canonical. It does **not** touch a file that has extra keys (diverged). Production checkouts (`productionPath`) are audited only — never seeded. Default `seed` prints leftover `symlink` / `stub` / `subset` skips so a develop-symlink is not silent.
50
+
51
+ ### First-time machine (or after cloning develop)
52
+
53
+ ```bash
54
+ pnpm --dir ~/source/se/se-core-product local-env bootstrap
55
+ pnpm --dir ~/source/se/se-core-product local-env backup
56
+ pnpm --dir ~/source/se/se-core-product local-env audit
57
+ ```
58
+
59
+ ### Rotate a token
60
+
61
+ 1. Edit the file in `~/source/local-env/<project>/…` (or edit develop, then `pnpm local-env init` — init will not overwrite an existing store file, so delete or rename the store file first if you mean to refresh it).
62
+ 2. `pnpm --dir ~/source/se/se-core-product local-env seed --project <key> --repair-subset` for worktrees that are a subset of the new key set.
63
+ 3. `pnpm --dir ~/source/se/se-core-product local-env backup` only creates a **new** 1Password title if missing. To refresh the backup, create a new document or edit the existing one in 1Password by hand — the command will not overwrite.
64
+
65
+ ## Agent rules
66
+
67
+ 1. After creating a worktree, seed env. Do not hand-write `.env.local`.
68
+ 2. If `.env.local` is missing, copy from `~/source/local-env/...` (or run `seed`). Never generate a two-key stub.
69
+ 3. If a file exists, leave it. Report `audit` status (`stub` / `subset` / `diverged` / `symlink`) instead of overwriting unless the user asks for `--repair-subset`.
70
+ 4. Do not symlink worktree env at develop or `~/source/local-env`.
71
+ 5. Do not `op inject` or `op document get` onto an existing checkout file. Restore to a temp path, `diff`, then copy only if the user confirms.
72
+ 6. `git worktree remove` deletes that tree’s copy. Canonical + 1Password remain.
73
+
74
+ ## Restore from 1Password (manual)
75
+
76
+ ```bash
77
+ op document get --vault Private "local-env/pointme/.env.local" --out-file /tmp/pointme.env.local
78
+ diff -u ~/source/local-env/pointme/.env.local /tmp/pointme.env.local
79
+ # copy only if you intend to replace canonical, then seed
80
+ ```
81
+
82
+ Older documents titled `Point.me env.local` (and similar, ~2026-03) are **stale** (fewer keys than develop). Do not restore those onto disk.
@@ -10,6 +10,16 @@
10
10
  "pathPattern": "<worktreesRoot>/<feature-slug>",
11
11
  "notes": "Feature work (feature/*) must use a git worktree under the project's worktreesRoot. Primary checkouts stay on integration branches only. Opt out only if the user explicitly says work in place / no worktree in the current conversation."
12
12
  },
13
+ "localEnvRoot": "~/source/local-env",
14
+ "localEnvExtras": [
15
+ {
16
+ "key": "highlander-live",
17
+ "displayName": "Highlander Health (live Bond/Netlify)",
18
+ "path": "~/source/customers/highlander/highlander-health-website",
19
+ "worktreesRoot": "~/source/customers/highlander/worktrees",
20
+ "notes": "Live highlander-health-website, not the 2026 port. local-env only; agents still use registry key highlander for 2026 feature work."
21
+ }
22
+ ],
13
23
  "projects": [
14
24
  {
15
25
  "key": "se-core-product",
@@ -91,6 +101,18 @@
91
101
  "hostedMcp": "cms-edit-hsd",
92
102
  "validate": "pnpm validate",
93
103
  "notes": "Agents work only in path (develop) + feature worktrees under worktreesRoot. productionPath is human-only — never push production from agents."
104
+ },
105
+ {
106
+ "key": "highlander",
107
+ "displayName": "Highlander Health",
108
+ "path": "~/source/customers/highlander/highlander-health-website-2026",
109
+ "worktreesRoot": "~/source/customers/highlander/worktrees",
110
+ "branch": "port-2026",
111
+ "type": "customer",
112
+ "contentfulSpaceId": "bkkox68g99rn",
113
+ "hostedMcp": "cms-edit-highlander",
114
+ "validate": "pnpm check && pnpm type-check && pnpm validate:routes",
115
+ "notes": "New 2026 stack. Integration branch is port-2026 until go-live, then develop/main. Live Bond/Netlify site remains highlander-health-website. cms-edit DNS/OAuth for highlander.content.se.studio is a human gate."
94
116
  }
95
117
  ]
96
118
  }
@@ -78,6 +78,16 @@
78
78
  "workspace": false,
79
79
  "hasPinOverrides": false,
80
80
  "notes": "Deps updates run on develop checkout only. Never push production branch; human promotes production-hsd-website."
81
+ },
82
+ {
83
+ "key": "highlander",
84
+ "displayName": "Highlander Health",
85
+ "path": "~/source/customers/highlander/highlander-health-website-2026",
86
+ "branch": "port-2026",
87
+ "validate": "pnpm check && pnpm type-check && pnpm validate:routes",
88
+ "workspace": true,
89
+ "hasPinOverrides": false,
90
+ "notes": "2026 port. Integration branch port-2026 until live; then develop/main."
81
91
  }
82
92
  ]
83
93
  }
@@ -54,13 +54,13 @@ Use `pnpm install --no-frozen-lockfile` only when intentionally repairing the lo
54
54
 
55
55
  Apply the full stack when touching deps or CI in each repo:
56
56
 
57
- | Repo | Pre-commit | CI develop/dev | CI hoisted | Vercel frozen (marketing) |
58
- |------|------------|----------------|------------|---------------------------|
59
- | brightline-sites | yes | yes | yes | yes |
60
- | pedestal-sites | — | partial | — | no |
61
- | om1-website | — | — | — | — |
62
- | se-website-2026 | yes | yes | yes | yes |
63
- | pointme | — | — | — | — |
64
- | hsd (`develop-hsd-website`; prod human-only: `production-hsd-website`) | yes | yes (develop) | n/a | yes |
65
-
66
- Update this table as repos adopt the pattern.
57
+ | Repo | Pre-commit | CI integration branch | CI hoisted | Vercel frozen (marketing) | Vercel cms-edit hoisted |
58
+ |------|------------|----------------------|------------|---------------------------|-------------------------|
59
+ | brightline-sites | yes | develop | yes | yes | yes |
60
+ | pedestal-sites | yes | develop | yes | yes | yes |
61
+ | om1-website | yes | develop | yes | yes | yes |
62
+ | se-website-2026 | yes | develop | yes | yes | yes |
63
+ | pointme | yes | develop | yes | yes | yes |
64
+ | hsd (`develop-hsd-website`; prod human-only: `production-hsd-website`) | yes | develop (+ `extended-port`) | yes | yes | yes |
65
+
66
+ Update this table as repos adopt the pattern. Every cms-edit host `pnpm-workspace.yaml` must include `supportedArchitectures` (current + linux, x64, glibc).
@@ -7,7 +7,9 @@ description: "Start and manage agent work sessions across se-core-product and cu
7
7
 
8
8
  Orchestrates **where** to work, **where code belongs**, and **how to isolate parallel features**. **Humans only** merge marketing production and core `main` — except **cms-edit-only** customer merges (reference `cms-edit-prod-merge.md`).
9
9
 
10
- **Registry:** [`packages/skills/references/agent-session/projects.registry.json`](../../references/agent-session/projects.registry.json) — repo paths, `worktreesRoot`, `productionPath` / `productionBranch`, integration branches, hosted MCP keys.
10
+ **Registry:** [`packages/skills/references/agent-session/projects.registry.json`](../../references/agent-session/projects.registry.json) — repo paths, `worktreesRoot`, `productionPath` / `productionBranch`, integration branches, hosted MCP keys, `localEnvRoot`.
11
+
12
+ **Local env / worktrees:** [`local-env.md`](../../references/agent-session/local-env.md) — canonical `~/source/local-env`, no-clobber seed, 1Password backup only.
11
13
 
12
14
  **Manifest template:** [`packages/skills/references/agent-session/manifest.template.yaml`](../../references/agent-session/manifest.template.yaml)
13
15
 
@@ -151,9 +153,13 @@ cd <primary_repo> # registry path — develop/dev checkout
151
153
  git fetch origin
152
154
  mkdir -p <worktreesRoot> # from registry, e.g. ~/source/customers/hopskipdrive/worktrees
153
155
  git worktree add <worktreesRoot>/<feature-slug> -b <branch> origin/<integration-branch>
156
+ # Script lives in se-core-product — do not run this from a customer worktree
157
+ pnpm --dir ~/source/se/se-core-product local-env seed --project <project_key>
154
158
  cd <worktreesRoot>/<feature-slug>
155
159
  ```
156
160
 
161
+ `.env.local` is gitignored and does **not** appear in a new worktree. Seed with `pnpm --dir ~/source/se/se-core-product local-env` — do not hand-write a stub and do not symlink at develop. Full rules: [`local-env.md`](../../references/agent-session/local-env.md).
162
+
157
163
  | Project key | worktreesRoot |
158
164
  |-------------|---------------|
159
165
  | `se-core-product` | `~/source/se/worktrees` |
@@ -163,6 +169,7 @@ cd <worktreesRoot>/<feature-slug>
163
169
  | `pointme` | `~/source/customers/pointme/worktrees` |
164
170
  | `pedestal` | `~/source/customers/pedestal/worktrees` |
165
171
  | `hsd` | `~/source/customers/hopskipdrive/worktrees` |
172
+ | `highlander` | `~/source/customers/highlander/worktrees` |
166
173
 
167
174
  **Manifest gate:** set `worktree:` to the worktree path before coding. Do all edits, installs, tests, and commits from that path. Do not leave the primary checkout on a feature branch.
168
175
 
@@ -359,5 +366,6 @@ Agent must load this skill, write manifest (with `worktree` path), run placement
359
366
  | `pointme` | `develop` | `main` | customer |
360
367
  | `pedestal` | `develop` | `main` | customer monorepo |
361
368
  | `hsd` | `develop` (`develop-hsd-website`) | `production` (`production-hsd-website`) | customer |
369
+ | `highlander` | `port-2026` until live, then `develop` | `main` after cutover | customer |
362
370
 
363
371
  Full paths (`path`, `worktreesRoot`, `productionPath`), MCP keys: `projects.registry.json`.
@@ -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 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."
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. 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 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.
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. All marketing sites pin `overrides.next` to `^16.3.x`.
15
15
 
16
16
  ---
17
17
 
@@ -126,12 +126,21 @@ Without this, isolated `pnpm install` on darwin can omit snapshots such as `@rol
126
126
  - **`minimumReleaseAge: 1440`** — do not install packages published in the last 24 hours (supply-chain guard).
127
127
  - **`@se-studio/*` exclude** — our own packages may update immediately after npm publish.
128
128
  - **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).
129
- - **PointMe exception:** leave `next: ^15.5.x` until that site’s Next 16 wave.
129
+ - **PointMe:** keep extra overrides (`mapbox-gl`, `react-day-picker`, `caniuse-lite`) — still pin `next: ^16.3.x` like every other site.
130
130
 
131
131
  `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.
132
132
 
133
133
  **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.
134
134
 
135
+ ### Next.js 16 agent docs (do not use the Next 15 dump)
136
+
137
+ Marketing sites run **Next.js 16.3**. Version-matched docs live in each app’s `node_modules/next/dist/docs/` (the `next` package may not be visible from a monorepo root).
138
+
139
+ - **Keep** the managed `<!-- BEGIN:nextjs-agent-rules -->` block that `next dev` writes in `AGENTS.md`.
140
+ - **Do not** run `npx @next/codemod agents-md` or restore `NEXT-AGENTS-MD-START` / `.next-docs` — that index is Next 15 (Pages Router, `middleware.ts`, upgrade guides only through v15).
141
+ - Cursor’s Vercel plugin **`nextjs`** skill is fine for App Router patterns; it is not a substitute for `node_modules/next/dist/docs/`.
142
+ - After `npx skills add vercel-labs/agent-skills`, **delete `vercel-react-native-skills`** — these are web sites. Do not treat React Native skills as Next guidance.
143
+
135
144
  ---
136
145
 
137
146
  ## Step 4 — Update pnpm (all repos)
@@ -236,7 +245,7 @@ Include in the summary:
236
245
 
237
246
  - Major dependency bumps (from the Step 1 audit diff)
238
247
  - pnpm version: before → after
239
- - Confirmed pins: Next 16.3.x (PointMe: Next 15.5.x until its upgrade), Node 24, `@types/node` ^24
248
+ - Confirmed pins: Next 16.3.x, Node 24, `@types/node` ^24
240
249
  - Confirmed `minimumReleaseAge: 1440` and `@se-studio/*` exclude present
241
250
  - Packages still outdated because they are inside the 24-hour release window (if any)
242
251
  - Patches check bootstrapped (yes/no)
@@ -274,6 +283,7 @@ See [`references/lockfile-sync/README.md`](../../references/lockfile-sync/README
274
283
  | Issue | Action |
275
284
  |-------|--------|
276
285
  | `ERR_PNPM_OUTDATED_LOCKFILE` on frozen/hoisted install | `package.json` and `pnpm-workspace.yaml` overrides out of sync with lockfile — re-run `pnpm update` for the package and align `overrides` |
286
+ | `ERR_PNPM_LOCKFILE_MISSING_DEPENDENCY` (`rollup-linux-*`, Sharp, etc.) on hoisted frozen install | Missing `supportedArchitectures` (current + linux, x64, glibc) — add the Step 3 block, run `pnpm install`, then re-verify hoisted |
277
287
  | `next` or `@types/node` still outdated to wrong major | Re-run overrides + safety re-pin; check `pnpm-workspace.yaml` overrides |
278
288
  | Non-`@se-studio` package still outdated after update | Likely within 24h of npm publish — wait and re-run; **do not** bypass `minimumReleaseAge` |
279
289
  | `corepack use` fails | Run `corepack enable` once, retry |
@@ -40,6 +40,36 @@ After cleanup, `pnpm validate` must pass before continuing.
40
40
 
41
41
  ---
42
42
 
43
+ ## Step 2b — Workspace install policy (`pnpm-workspace.yaml`)
44
+
45
+ Merge these into the existing file (do not wipe `packages`, `allowBuilds`, or other keys). Canonical copy: skill `site-workflows-deps-update` Step 3.
46
+
47
+ ```yaml
48
+ # Record linux-x64/glibc optional natives (cms-edit Vercel + hoisted frozen install).
49
+ supportedArchitectures:
50
+ os:
51
+ - current
52
+ - linux
53
+ cpu:
54
+ - current
55
+ - x64
56
+ libc:
57
+ - current
58
+ - glibc
59
+
60
+ minimumReleaseAge: 1440
61
+ minimumReleaseAgeExclude:
62
+ - '@se-studio/*'
63
+
64
+ overrides:
65
+ next: ^16.3.1
66
+ '@types/node': ^24.13.2
67
+ ```
68
+
69
+ Then `pnpm install` (not frozen) so the lockfile records linux optional snapshots. Confirm `AGENTS.md` uses `nextjs-agent-rules` (Next 16 `node_modules/next/dist/docs/`), not `NEXT-AGENTS-MD-START` / `.next-docs`.
70
+
71
+ ---
72
+
43
73
  ## Step 3 — Update project identity in `src/lib/constants.ts`
44
74
 
45
75
  Read `src/lib/constants.ts` and update:
@@ -84,6 +114,8 @@ This version has breaking changes — APIs, conventions, and file structure may
84
114
 
85
115
  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
116
 
117
+ Do **not** replace this with `npx @next/codemod agents-md` (Next 15 `.next-docs` index).
118
+
87
119
  <!-- END:nextjs-agent-rules -->
88
120
 
89
121
  <!-- BEGIN:se-studio-package-rules -->