@se-studio/skills 1.7.1 → 1.7.3

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.3
4
+
5
+ ### Patch Changes
6
+
7
+ - Document `supportedArchitectures` so macOS lockfiles include linux-x64/glibc optional natives for hoisted frozen cms-edit installs.
8
+
9
+ ## 1.7.2
10
+
11
+ ### Patch Changes
12
+
13
+ - 2b1e79c: Portless local URLs: require `portless service install` for HTTPS 443; document unique last-segment worktree hosts. Refuse local `cms-edit` content commands (hosted MCP only). Smoke/revalidation use `start:dev` so `PORT` is not swallowed by portless.
14
+
3
15
  ## 1.7.1
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.1",
3
+ "version": "1.7.3",
4
4
  "description": "SE Studio agent skills for marketing site development with Contentful CMS",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,6 +30,17 @@ See [`validate-workflow-snippet.yml`](validate-workflow-snippet.yml). Customer m
30
30
  | Marketing app (monorepo root install) | `cd ../.. && pnpm install --frozen-lockfile` |
31
31
  | cms-edit host | `cd ../.. && pnpm install --frozen-lockfile --config.node-linker=hoisted` |
32
32
 
33
+ ## Linux optional natives (`supportedArchitectures`)
34
+
35
+ cms-edit Vercel and `check-lockfile-sync.sh` (full) run `pnpm install --frozen-lockfile --config.node-linker=hoisted`. That path requires lockfile snapshots for **linux-x64/glibc** optional binaries even when you generate the lockfile on macOS.
36
+
37
+ Every consumer `pnpm-workspace.yaml` must include `supportedArchitectures` (current + linux, current + x64, current + glibc). Canonical copy: skill `site-workflows-deps-update` Step 3. After adding it, run `pnpm install` (not frozen) so the lockfile gains those snapshots, then verify:
38
+
39
+ ```bash
40
+ pnpm install --frozen-lockfile --config.node-linker=hoisted
41
+ pnpm install # restore isolated linker for local workspace packages
42
+ ```
43
+
33
44
  ## After dependency changes
34
45
 
35
46
  ```bash
@@ -1,11 +1,13 @@
1
1
  ---
2
2
  name: contentful-cms-core
3
- description: "Use cms-edit CLI to read/edit Contentful content (open → snapshot → read → set/rtf → diff → save)."
3
+ description: "Edit Contentful drafts via hosted cms-edit MCP (open → snapshot → read → set/rtf → diff → save). Local CLI content commands are disabled."
4
4
  ---
5
5
 
6
- # Skill: contentful-cms CLI
6
+ # Skill: contentful-cms (hosted MCP)
7
7
 
8
- Use this skill when you need to read or edit content in Contentful CMS using the `cms-edit` CLI tool.
8
+ Use this skill when you need to read or edit content in Contentful using **hosted cms-edit MCP** (`cms_edit` with an `args` array). Command names match the old CLI (`open` → `snapshot` → `read` → `set`/`rtf` → `diff` → `save`).
9
+
10
+ **Do not** run the local `cms-edit` binary for content. It refuses `open`, `save`, `set`, and other content commands. Local CLI is only for `host`, `editor-pack`, `project`, `schema`, and `guide`.
9
11
 
10
12
  **Before editing:** use skill **`contentful-cms-editor-tasks`** to read `tasks-index` and the matching capability playbook for this site (hosted MCP or local `cms-edit/<site>/editor-pack/`).
11
13
 
@@ -31,7 +33,6 @@ All `save` operations create **draft** versions. A human must review and publish
31
33
 
32
34
  **Assets:** Upload **is** supported (`asset upload`). Default workflow: **search and reuse** existing assets first (`index sync` → `asset search`). When uploading:
33
35
  - **Hosted MCP:** always `cms_edit_request_staged_upload` → curl → `asset upload --staged` (never `--base64`)
34
- - **Local CLI:** `--base64` or `--url` when user approves local CLI
35
36
  - Use a **sensible fileName** and **descriptive title** (and alt text where the site uses it)
36
37
  - Avoid oversized images — width over **2000px** is usually wasteful for web (exact limits vary by project; check `asset audit` / media review guidance)
37
38
  - Prefer `--if-exists-by-filename` to avoid duplicates
@@ -26,10 +26,10 @@ Preview / `DRAFT_ONLY` Contentful access in local dev is expected and not a smok
26
26
  | `pnpm smoke-test:run` | Smoke only (server already up) |
27
27
  | `pnpm smoke-test:preview` | Smoke against Vercel preview (`runPreviewStaticSmokeTest`; no local server) |
28
28
  | `pnpm smoke-test:audit` | Functional smoke + server log cache audit |
29
- | `pnpm smoke-test:cache` | `build` + `start` + double-pass `x-nextjs-cache` verify |
30
- | `pnpm smoke-test:deploy-check` | Post-build gate: `start` (no rebuild) + functional smoke — use in Vercel `buildCommand` |
29
+ | `pnpm smoke-test:cache` | `build` + `start:dev` + double-pass `x-nextjs-cache` verify |
30
+ | `pnpm smoke-test:deploy-check` | Post-build gate: `start:dev` (no rebuild) + functional smoke — use in Vercel `buildCommand` |
31
31
  | `pnpm smoke-test:live` | Live deployment URL smoke — GitHub Action + Vercel Deployment Checks |
32
- | `pnpm revalidation-test` | `build` + `start` + revalidation matrix (warm → invalidate → cold → warm); see `revalidation.cases.json` and [CONTENTFUL_WEBHOOK_REVALIDATION.md](../../../../docs/CONTENTFUL_WEBHOOK_REVALIDATION.md) |
32
+ | `pnpm revalidation-test` | `build` + `start:dev` + revalidation matrix (warm → invalidate → cold → warm); see `revalidation.cases.json` and [CONTENTFUL_WEBHOOK_REVALIDATION.md](../../../../docs/CONTENTFUL_WEBHOOK_REVALIDATION.md) |
33
33
 
34
34
  Example `package.json` entries:
35
35
 
@@ -38,7 +38,7 @@ Example `package.json` entries:
38
38
  "smoke-test:run": "tsx scripts/smoke-test-run.ts",
39
39
  "smoke-test:preview": "bash -c 'set -a && [ -f .env.local ] && . ./.env.local; set +a && exec tsx scripts/smoke-test-preview.ts'",
40
40
  "smoke-test:audit": "SMOKE_TEST_AUDIT_CACHE_LOGS=true smoke-test-one 3012",
41
- "smoke-test:cache": "SMOKE_TEST_SERVER_SCRIPT=start SMOKE_TEST_VERIFY_CACHE=true smoke-test-one 3012",
41
+ "smoke-test:cache": "SMOKE_TEST_SERVER_SCRIPT=start:dev SMOKE_TEST_VERIFY_CACHE=true smoke-test-one 3012",
42
42
  "smoke-test:deploy-check": "smoke-test-deploy-check",
43
43
  "smoke-test:live": "smoke-test-live",
44
44
  "revalidation-test": "node ../../scripts/revalidation-matrix-test.mjs 3012"
@@ -182,7 +182,7 @@ vercel env add VERCEL_FORCE_NO_BUILD_CACHE production --value 1 --yes
182
182
 
183
183
  ### 1. Confirm port
184
184
 
185
- Read `package.json` — e.g. `next dev -p 3012` → port **3012**.
185
+ Read `package.json` — smoke still uses a localhost port (`smoke-test-one 3012`). `pnpm dev` is portless (`https://<name>.localhost`) and is **not** the smoke server. Confirm `dev:dev` has no `-p` flag so `PORT` from `smoke-test-one` is honoured.
186
186
 
187
187
  ### 2. Fetch sitemap (production first)
188
188
 
@@ -166,6 +166,14 @@ cd <worktreesRoot>/<feature-slug>
166
166
 
167
167
  **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
168
 
169
+ ### Portless URLs in worktrees
170
+
171
+ `pnpm dev` uses [portless](https://github.com/vercel-labs/portless). Install **`portless service install`** once so `https://<name>.localhost` works on 443.
172
+
173
+ Portless prefixes the hostname with the **last segment of the branch name**. `feature/om1/hero-redesign` → `https://hero-redesign.om1.localhost`. Two parallel features that share that last slug collide (both claim `hero.om1.localhost`). **Make the last path segment unique** (include the ticket id: `feature/om1/mktg-5117-hero`). The app `--name` (`om1`, `example`) does not disambiguate two worktrees of the same last slug.
174
+
175
+ Without the OS service, agents may get `https://<name>.localhost:1355` from an ad-hoc proxy — do not hardcode `:1355` in docs or cms-edit `devBaseUrl`.
176
+
169
177
  ### Gate — refuse primary-checkout feature work
170
178
 
171
179
  If you are about to implement a feature and `worktree` is null without `worktree_opt_out: true`:
@@ -105,6 +105,24 @@ overrides:
105
105
  '@types/node': ^24.13.2
106
106
  ```
107
107
 
108
+ Every repo that runs **hoisted frozen install** (cms-edit host on Vercel, `check-lockfile-sync.sh` hoisted job) **must** also record Linux optional natives in the lockfile. Generate the lockfile on macOS with:
109
+
110
+ ```yaml
111
+ # Record linux-x64/glibc optional natives (cms-edit Vercel + hoisted frozen install).
112
+ supportedArchitectures:
113
+ os:
114
+ - current
115
+ - linux
116
+ cpu:
117
+ - current
118
+ - x64
119
+ libc:
120
+ - current
121
+ - glibc
122
+ ```
123
+
124
+ Without this, isolated `pnpm install` on darwin can omit snapshots such as `@rollup/rollup-linux-x64-gnu`. Hoisted `--frozen-lockfile` then fails even though default-linker install succeeded. Vitest/Rollup sites (Brightline) hit this first; Sharp and other optional natives fail the same way on Vercel linux.
125
+
108
126
  - **`minimumReleaseAge: 1440`** — do not install packages published in the last 24 hours (supply-chain guard).
109
127
  - **`@se-studio/*` exclude** — our own packages may update immediately after npm publish.
110
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).