@se-studio/skills 0.0.0-next16-20260822103555

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.
Files changed (83) hide show
  1. package/CHANGELOG.md +641 -0
  2. package/README.md +95 -0
  3. package/package.json +29 -0
  4. package/references/agent-session/cms-edit-prod-merge.md +35 -0
  5. package/references/agent-session/customer-agents-block.md +58 -0
  6. package/references/agent-session/manifest.template.yaml +37 -0
  7. package/references/agent-session/projects.registry.json +96 -0
  8. package/references/agent-session/refuse-customer-patches.md +58 -0
  9. package/references/agent-session/smoke-deploy-failure-playbook.md +80 -0
  10. package/references/contentful-cms-cms-guidelines/README.md +170 -0
  11. package/references/contentful-cms-cms-guidelines/colour-hint-prompt.md +77 -0
  12. package/references/contentful-cms-cms-guidelines/evaluation-prompt.md +84 -0
  13. package/references/contentful-cms-cms-guidelines/generate-component-guidelines.md +126 -0
  14. package/references/contentful-cms-cms-guidelines/generation-prompt.md +231 -0
  15. package/references/contentful-cms-cms-guidelines/html-component-authoring.md +402 -0
  16. package/references/contentful-cms-cms-guidelines/validation-prompt.md +170 -0
  17. package/references/contentful-cms-cms-guidelines/variant-loop.md +189 -0
  18. package/references/contentful-cms-cms-guidelines/variant-proposal-prompt.md +131 -0
  19. package/references/contentful-cms-editor-playbooks/PATTERNS.md +181 -0
  20. package/references/contentful-cms-editor-playbooks/PROJECT-ROLLOUT.md +232 -0
  21. package/references/contentful-cms-editor-playbooks/SOURCE-READINESS.md +96 -0
  22. package/references/contentful-cms-editor-playbooks/examples/brightline-learning-hub-article-shaped.md +48 -0
  23. package/references/contentful-cms-editor-playbooks/examples/headwater-news-shaped.md +48 -0
  24. package/references/contentful-cms-editor-playbooks/examples/om1-resource-case-study-shaped.md +52 -0
  25. package/references/contentful-cms-editor-playbooks/examples/pedestal-publication-shaped.md +50 -0
  26. package/references/contentful-cms-editor-playbooks/examples/se-case-study-meet-makers-shaped.md +51 -0
  27. package/references/contentful-cms-editor-playbooks/examples/se-case-study-om1-shaped.md +72 -0
  28. package/references/contentful-cms-editor-playbooks/examples/se-om1-case-study-brief.docx +0 -0
  29. package/references/contentful-cms-editor-playbooks/examples/se-om1-case-study-brief.md +62 -0
  30. package/references/deployment-smoke-feature-branch-skip/README.md +66 -0
  31. package/references/deployment-smoke-feature-branch-skip/workflow-snippet.yml +38 -0
  32. package/references/deps-update/projects.registry.json +83 -0
  33. package/references/lockfile-sync/README.md +55 -0
  34. package/references/lockfile-sync/validate-workflow-snippet.yml +32 -0
  35. package/references/stale-files-cleanup/BRIGHTLINE_RUNBOOK.md +90 -0
  36. package/references/stale-files-cleanup/CHECKLIST.md +145 -0
  37. package/references/stale-files-cleanup/FALSE_POSITIVES.md +88 -0
  38. package/references/stale-files-cleanup/MONOREPO.md +85 -0
  39. package/references/stale-files-cleanup/SINGLE_APP.md +66 -0
  40. package/skills/cms-seo-audit/SKILL.md +178 -0
  41. package/skills/contentful-cms-alt-text-audit/SKILL.md +60 -0
  42. package/skills/contentful-cms-core/SKILL.md +860 -0
  43. package/skills/contentful-cms-create-editor-playbooks/SKILL.md +280 -0
  44. package/skills/contentful-cms-editor-tasks/SKILL.md +86 -0
  45. package/skills/contentful-cms-generate-all-guidelines/SKILL.md +309 -0
  46. package/skills/contentful-cms-generate-cms-guidelines/SKILL.md +310 -0
  47. package/skills/contentful-cms-media-review/SKILL.md +98 -0
  48. package/skills/contentful-cms-navigation/SKILL.md +84 -0
  49. package/skills/contentful-cms-regenerate-editor-pack/SKILL.md +132 -0
  50. package/skills/contentful-cms-rich-text/SKILL.md +93 -0
  51. package/skills/contentful-cms-schema-audit/SKILL.md +122 -0
  52. package/skills/contentful-cms-schema-org/SKILL.md +101 -0
  53. package/skills/contentful-cms-seo-descriptions/SKILL.md +54 -0
  54. package/skills/contentful-cms-setup/SKILL.md +102 -0
  55. package/skills/contentful-cms-sync-schema/SKILL.md +134 -0
  56. package/skills/contentful-cms-templates/SKILL.md +21 -0
  57. package/skills/contentful-cms-update-cms-guidelines/SKILL.md +341 -0
  58. package/skills/performance-audit/SKILL.md +312 -0
  59. package/skills/screaming-frog-audit/SKILL.md +110 -0
  60. package/skills/screaming-frog-audit/references/profiles.md +62 -0
  61. package/skills/se-marketing-sites-cms-routes-and-appshared/SKILL.md +95 -0
  62. package/skills/se-marketing-sites-create-collection/SKILL.md +291 -0
  63. package/skills/se-marketing-sites-create-component/SKILL.md +246 -0
  64. package/skills/se-marketing-sites-create-page/SKILL.md +188 -0
  65. package/skills/se-marketing-sites-curate-showcase-mocks/SKILL.md +352 -0
  66. package/skills/se-marketing-sites-handling-media/SKILL.md +196 -0
  67. package/skills/se-marketing-sites-lib-cms-structure/SKILL.md +104 -0
  68. package/skills/se-marketing-sites-markdown-accuracy-review/SKILL.md +69 -0
  69. package/skills/se-marketing-sites-redirects/SKILL.md +276 -0
  70. package/skills/se-marketing-sites-register-cms-features/SKILL.md +95 -0
  71. package/skills/se-marketing-sites-smoke-test-setup/SKILL.md +438 -0
  72. package/skills/se-marketing-sites-styling-system/SKILL.md +118 -0
  73. package/skills/site-workflows-agent-session/SKILL.md +355 -0
  74. package/skills/site-workflows-apply-design-snapshot/SKILL.md +281 -0
  75. package/skills/site-workflows-brand-context-builder/SKILL.md +98 -0
  76. package/skills/site-workflows-contentful-vercel-setup/SKILL.md +406 -0
  77. package/skills/site-workflows-copy-doc-snapshot/SKILL.md +218 -0
  78. package/skills/site-workflows-deps-update/SKILL.md +264 -0
  79. package/skills/site-workflows-figma-design-snapshot/SKILL.md +387 -0
  80. package/skills/site-workflows-new-project/SKILL.md +328 -0
  81. package/skills/site-workflows-project-cleanup/SKILL.md +470 -0
  82. package/skills/site-workflows-stale-files-cleanup/SKILL.md +165 -0
  83. package/skills/vercel-logs-audit/SKILL.md +134 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,641 @@
1
+ # @se-studio/skills
2
+
3
+ ## 0.0.0-next16-20260822103555
4
+
5
+ ### Minor Changes
6
+
7
+ - eeed547: 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.
8
+
9
+ ### Patch Changes
10
+
11
+ - 41cfadb: Allow agents to merge customer production only for cms-edit-only diffs (host package / editor-pack), one site at a time with a live health check.
12
+
13
+ ## 1.6.9
14
+
15
+ ### Patch Changes
16
+
17
+ - 34a8a7f: Stop rotating hosted MCP refresh tokens on `/oauth/token`. Grok retries and parallel sessions were hitting `invalid_refresh_token` after the 1-hour access JWT expired. Include `refresh_token_expires_in` (30 days) on token responses.
18
+
19
+ ## 1.6.8
20
+
21
+ ### Patch Changes
22
+
23
+ - d74ec5c: Document Figma-as-absolute-gospel for new UI work in site-workflows-agent-session (until the user overrides).
24
+
25
+ ## 1.6.7
26
+
27
+ ### Patch Changes
28
+
29
+ - 325ef89: cms-edit hosted MCP Production is the marketing production branch (`main` / HSD `production`), not `develop`.
30
+
31
+ ## 1.6.6
32
+
33
+ ### Patch Changes
34
+
35
+ - Treat a present-but-invalid Contentful CMA cache like a missing cache on hosted MCP: delete the Redis token, refuse refresh and authorization-code grants, and return `WWW-Authenticate: error="invalid_token"` so Grok re-runs Contentful sign-in instead of looping on `auth required`.
36
+
37
+ ## 1.6.5
38
+
39
+ ### Patch Changes
40
+
41
+ - 35c02f0: Keep hosted MCP auth alive across Grok refresh and host deploys: slide the Contentful token TTL to 30 days, refuse MCP token grants when the CMA cache is gone, and return `invalid_token` so clients re-run Contentful sign-in instead of looping on “Failed to get tools after auth”.
42
+
43
+ ## 1.6.4
44
+
45
+ ### Patch Changes
46
+
47
+ - 2c479e7: Wrap HtmlComponent customJs in an IIFE so `hcRoot` is per-instance. Two HtmlComponents with scripts on the same page no longer throw `Identifier 'hcRoot' has already been declared`.
48
+
49
+ ## 1.6.3
50
+
51
+ ### Patch Changes
52
+
53
+ - DotLottie player for CMS animations (JSON and `.lottie`), with classic lottie-player fallback if DotLottie is not installed. Lazy load by default; honour loading/fetchPriority for eager (heroes). Server enrich reads dimensions and poster for CLS. WASM self-host helper (`/dotlottie/dotlottie-player.wasm`). Extension-first animation detection; hosted staged upload allows JSON/zip for animation packages. INavigation surfaces optional backgroundColour/textColour for footer chrome.
54
+
55
+ ## 1.6.2
56
+
57
+ ### Patch Changes
58
+
59
+ - 928562f: CMS showcase: controls closed by default (`?controls=true`), map control keys to usedFields, string mock body → rich text, placeholder visuals, iframe height shrink/caps, External video for Vimeo/YouTube mock URLs, `showcaseLayout` registration + fixed preview frames, and helpers `isCmsShowcase` / `articlesFromShowcaseContents` / `peopleFromShowcaseContents` for related-content collections. Skills: curate-showcase-mocks video URL and no-LLM notes.
60
+
61
+ ## 1.6.1
62
+
63
+ ### Patch Changes
64
+
65
+ - Add SE OM1 example case-study brief (markdown + Word) for package-intake training.
66
+
67
+ ## 1.6.0
68
+
69
+ ### Minor Changes
70
+
71
+ - Add source readiness review as a core editor task, wire create-from-document / create-article / preview-verify to faithful package intake (no copy rewrite), and ship SOURCE-READINESS plus multi-site input examples for playbook authors.
72
+
73
+ ## 1.5.11
74
+
75
+ ### Patch Changes
76
+
77
+ - Document smoke/deploy failure playbook and refuse-customer-patches guardrails (agent-session Step 3b).
78
+
79
+ ## 1.5.10
80
+
81
+ ### Patch Changes
82
+
83
+ - Document lockfile sync enforcement (scripts, CI snippet, deps-update and smoke-test skill updates).
84
+
85
+ ## 1.5.8
86
+
87
+ ### Patch Changes
88
+
89
+ - Add `site-workflows-stale-files-cleanup` skill and `references/stale-files-cleanup/` (checklist, false positives, monorepo/single-app layouts, Brightline case study) for repository hygiene audits on SE Studio marketing sites.
90
+
91
+ ## 1.5.7
92
+
93
+ ### Patch Changes
94
+
95
+ - c29c4c8: Add `site-workflows-agent-session` skill and agent-session reference files for cross-repo work sessions, placement checklist, and parallel feature isolation.
96
+
97
+ ## 1.5.6
98
+
99
+ ### Patch Changes
100
+
101
+ - Media wrapper entries now default their `name` (Contentful list label) to the linked asset's title when created via `create media` or `visualAssetFilename` shorthands. Document the convention in editor playbooks and skills; avoid migration-style `Wrapper for {assetId}` labels.
102
+
103
+ ## 1.5.5
104
+
105
+ ### Patch Changes
106
+
107
+ - d1a119c: Add `contentful-cms-create-editor-playbooks` skill and reference docs for customer editor playbook rollouts (Pedestal, OM1, PointMe, SE website).
108
+
109
+ ## 1.5.4
110
+
111
+ ### Patch Changes
112
+
113
+ - Bulk version bump: patch for all packages
114
+
115
+ ## 1.5.3
116
+
117
+ ### Patch Changes
118
+
119
+ - Add `task-media-review` editor playbook with production URL support, registry entry, and updated media-review skills for multi-customer Claude workflows.
120
+
121
+ ## 1.5.2
122
+
123
+ ### Patch Changes
124
+
125
+ - Cap `asset review --include-usage` with `--usage-limit` (default 50) to avoid hosted MCP timeouts on large spaces. Document usage-limit in asset-review help and media-review skill.
126
+
127
+ ## 1.5.1
128
+
129
+ ### Patch Changes
130
+
131
+ - aa6f11b: Breaking cms-edit CLI prune (2.6.0):
132
+
133
+ **Removed**
134
+
135
+ - `ensure` — use `create … --if-not-exists`
136
+ - `skill` command (including `skill install`) — use `npx skills add @se-studio/skills`
137
+ - `contentful-cms` bin alias — use `cms-edit` only
138
+ - top-level `audit` (`images`, `tree`) — use `asset review --include-usage` and `list`/`open`/`peek`
139
+ - `backup`, `restore`, `revert` — use `diff` + `discard` + Contentful UI
140
+ - top-level `run` — use `batch run --file`
141
+ - top-level `colours`, `types` — use `schema colours`, `schema types <content-type>`
142
+ - `contentful-cms-image-guide` skill — merged into `contentful-cms-media-review`
143
+
144
+ **Added**
145
+
146
+ - `create from-json --if-not-exists`
147
+ - `asset review --include-usage` (slug-bearing usage ancestry)
148
+ - `batch run` subcommand
149
+
150
+ **Migration**
151
+
152
+ | Old | New |
153
+ | ---------------------------------------- | ---------------------------------------------- |
154
+ | `cms-edit ensure tag-type …` | `cms-edit create tag-type … --if-not-exists` |
155
+ | `cms-edit run --file x.json` | `cms-edit batch run --file x.json` |
156
+ | `cms-edit colours` | `cms-edit schema colours` |
157
+ | `cms-edit types component` | `cms-edit schema types component` |
158
+ | `cms-edit audit images` | `cms-edit --json asset review --include-usage` |
159
+ | `cms-edit backup` / `restore` / `revert` | `diff` + `discard`; Contentful UI |
160
+ | `cms-edit skill install` | `npx skills add @se-studio/skills` |
161
+
162
+ - db737d9: Add `site-workflows-deps-update` skill for updating dependencies across se-core-product and consumer repos with Next 15 / Node 24 pins, unified no-pnpm-patches enforcement, and pnpm 11.x updates.
163
+ - 1262175: Remove `cms-edit sitemap` command. Use `list --type <type>` for content discovery. Update skills, MCP prompts, and editor task playbooks.
164
+
165
+ ## 1.5.0
166
+
167
+ ### Minor Changes
168
+
169
+ - bc538fd: Editor-pack capabilities router (`capabilities.json`, `tasks-index`, task playbooks), batch commands (`article-tags-from-json`, `bulk-rtf-replace`, `create person` / `person-from-json`, `ensure person`), and `cms-edit project doctor`.
170
+
171
+ Hosted-first MCP: setup wizard, `cms-edit setup`, `cms-edit-setup` and `cms-edit-mcp` bins, and local install scripts removed. Editors connect via `/cms-edit` OAuth; developers use `cms-edit` CLI (`npx @se-studio/contentful-cms` aliases the CLI).
172
+
173
+ **Breaking:** Do not use local `mcpServers.cms-edit` or `cms-edit setup` — those entry points are removed.
174
+
175
+ ## 1.4.4
176
+
177
+ ### Patch Changes
178
+
179
+ - Add `cms-edit asset review` to audit visual assets (filename, alt text, dimensions, file size, GIF) from the Preview API index, plus the `contentful-cms-media-review` skill for spreadsheet workflows.
180
+
181
+ ## 1.4.3
182
+
183
+ ### Patch Changes
184
+
185
+ - Document SSG guardrails (Biome, route-build-policy, validate-build-routes) in se-marketing-sites-smoke-test-setup skill.
186
+
187
+ ## 1.4.2
188
+
189
+ ### Patch Changes
190
+
191
+ - Add flat navigation assembly via `getNavigation` in `createAppHelpers` — menus resolve without Contentful include depth. Registry and link-index fetchers stay package-internal so apps cannot call them directly.
192
+
193
+ Flat-nav caches use collection tags (`FLAT_NAV_CACHE_TAGS`, including `tagType` and `link`) for webhook invalidation, with `FLAT_NAV_TIME_REVALIDATE_SECONDS` (3600) as an ISR fallback when webhooks miss.
194
+
195
+ Fix flat-nav Contentful fetches for spaces with differing content models (e.g. OM1): registry and link-wrapper fetches omit `select`; tagType bulk link fetches request golden `fields.slug` and fall back to minimal fields when absent. Unresolved nav targets log under `LOG_CMS`.
196
+
197
+ ## 1.4.1
198
+
199
+ ### Patch Changes
200
+
201
+ - f2de9ba: Document CMS smoke integrity (`cmsIntegrity`, `runStaticSmokeTestWithIntegrity`), Vercel `VERCEL_FORCE_NO_BUILD_CACHE`, and update `se-marketing-sites-smoke-test-setup` skill plus `example-empty` reference.
202
+
203
+ ## 1.4.0
204
+
205
+ ### Minor Changes
206
+
207
+ - Bulk version bump: minor for all packages
208
+
209
+ ## 1.3.4
210
+
211
+ ### Patch Changes
212
+
213
+ - **cms-seo-audit:** Document sitemap+unindexed crawl, all-page `.md` requirement, and expected listing-hub noise.
214
+
215
+ ## 1.3.3
216
+
217
+ ### Patch Changes
218
+
219
+ - Upstream CMS SEO tooling from pedestal-sites: JSON-LD `@context` fix, new `@se-studio/cms-seo` package, production HTML audit in site-check, and `cms-seo-audit` agent skill.
220
+
221
+ ## 1.3.2
222
+
223
+ ### Patch Changes
224
+
225
+ - Add `cms-seo-audit` skill documenting the full CMS SEO workflow (audit CSV, apply, bulk publish, production HTML audit). Cross-link from `screaming-frog-audit` and `contentful-cms-schema-org`.
226
+
227
+ ## 1.3.1
228
+
229
+ ### Patch Changes
230
+
231
+ - Move CMS guidelines prompt pack from `skills/` to `references/` so skills-npm no longer reports `file_error` for `contentful-cms-cms-guidelines`. Update pipeline doc links in CMS guideline skills.
232
+
233
+ ## 1.3.0
234
+
235
+ ### Minor Changes
236
+
237
+ - Add `screaming-frog-audit` agent skill for Screaming Frog crawl, native compare, and prioritized audit workflows.
238
+
239
+ ## 1.2.3
240
+
241
+ ### Patch Changes
242
+
243
+ - Bulk version bump: patch for all packages
244
+
245
+ ## 1.2.2
246
+
247
+ ### Patch Changes
248
+
249
+ - Bulk version bump: patch for all packages
250
+
251
+ ## 1.2.1
252
+
253
+ ### Patch Changes
254
+
255
+ - Bulk version bump: patch for all packages
256
+
257
+ ## 1.2.0
258
+
259
+ ### Minor Changes
260
+
261
+ - Add contentful-cms-regenerate-editor-pack skill for hosted MCP editor-pack workflow.
262
+
263
+ ## 1.1.3
264
+
265
+ ### Patch Changes
266
+
267
+ - Bulk version bump: patch for all packages
268
+
269
+ ## 1.1.2
270
+
271
+ ### Patch Changes
272
+
273
+ - Exclude redirect sources from sitemaps + robust protection against self and circular redirects.
274
+
275
+ - `buildRedirectMap` now normalizes internal paths (leading + trailing `/` to match urlCalculators + sitemap conventions) and reliably drops self-redirects (A → A). It also detects longer redirect cycles (A → B → A, etc.), drops the participating `from` rules from the baked map, and emits a `console.warn` during construction (visible in build/generate scripts).
276
+ - New exported utility: `filterSitemapEntriesExcludingRedirects(entries, redirectMap)`. Works on any `{ url: string }[]` (SitemapEntry, ISitemapEntry, etc.).
277
+ - The standard marketing site sitemap helper now accepts an optional `redirectMap` in `getSitemapEntries({ includeUnindexed, redirectMap })`. When provided, any URL that is the source of an active redirect is excluded from the generated sitemap entries. This is the recommended way to keep sitemaps clean when using editor-managed redirects.
278
+ - Widened the public `getSitemapEntries` option type in app helpers (additive; existing callers unaffected).
279
+ - Updated example app sitemaps (main + unindexed) to demonstrate fetching the map and passing it.
280
+ - Skill docs (`se-marketing-sites-redirects`) now include a "Redirects and sitemaps" section with usage patterns + notes on the improved cycle/self protection. Also updated routing docs.
281
+ - `buildRedirectMap` / `RedirectMap` / `getRedirectMap` behaviour for the middleware baked map is now safer (no self-loops or cycles will be baked).
282
+
283
+ Consumers using the `marketingSiteSitemap` helper + `getRedirectMap` at build time can now easily exclude redirect sources from both their static redirect map (for middleware) and their sitemaps in one consistent way.
284
+
285
+ See the redirect skill for the full recommended build-time pattern and the new filter helper.
286
+
287
+ ## 1.1.1
288
+
289
+ ### Patch Changes
290
+
291
+ - Simplify Redirect content model + add tagType as a first-class internal link target.
292
+
293
+ The original redirect content type (added in the previous minor) used a verbose Contentful model with separate `fromPage`/`fromArticle`/etc. reference fields (and same for "to"). This has been replaced with the clean model:
294
+
295
+ - `fromPath` (raw/custom) + `fromInternal` (single Link→Entry)
296
+ - `toPath` (raw/external) + `toInternal` (single Link→Entry)
297
+
298
+ Both internal fields are restricted via `linkContentType` validation to: page, article, articleType, person, tag, customType, tagType.
299
+
300
+ Updated:
301
+
302
+ - Migration `scripts/migrations/18-create-redirect-content-type.js` (now a clean create for the good model; delete any previous "Redirect" CT first if you ran the old multi-field version).
303
+ - `BaseRedirectSkeleton`, `baseRedirectConverter`, and `IRedirect` (provenance is now `fromInternal`/`toInternal` as `IInternalLink`).
304
+ - `UrlCalculators` now requires a `tagType(slug)` function (to support selecting tag type indexes as redirect targets).
305
+ - Added `baseTagTypeLinkConverter`, registered the resolver, extended `BaseLink` / `InternalType` / exported `ITagTypeLink` + guard.
306
+
307
+ Docs and the `se-marketing-sites-redirects` skill have been updated with the new CT shape, help text guidance, and testing steps.
308
+
309
+ Consumers will need to implement `tagType` in their urlCalculators (and pass it through `createBaseConverterContext`) to select Tag Type entries in redirects and to satisfy the updated type.
310
+
311
+ The runtime redirect map, middleware, and `buildRedirectMap` behaviour are unchanged.
312
+
313
+ ## 1.1.0
314
+
315
+ ### Minor Changes
316
+
317
+ - 31b2200: Add first-class support for managing redirects from Contentful.
318
+
319
+ Editors can now create `redirect` entries (via new content type) using reference pickers for existing Pages/Articles/etc. (for "from" and "to") or raw paths/URLs, plus a status code dropdown (301/302/etc.), active flag, and notes. This makes redirects easy for non-technical users without requiring them to know or type exact slugs.
320
+
321
+ Redirects use the simple rebuild pattern (already proven by A/B tests):
322
+
323
+ - Publish in Contentful → webhook triggers a Vercel Deploy Hook.
324
+ - Build fetches current published redirects (via `getRedirectsWithErrors` / `getRedirectMap` on the helpers from `createAppHelpers`) and bakes a static map (using the new pure `buildRedirectMap`).
325
+ - Middleware performs exact (or lightly normalized) lookups against the baked data with zero runtime cost or external calls.
326
+
327
+ Key additions:
328
+
329
+ - `IRedirect` type + `isRedirect` guard.
330
+ - `BaseRedirectSkeleton`, `baseRedirectConverter` (resolves reference links to concrete `fromPath`/`to` using existing `resolveLink` + project `urlCalculators`).
331
+ - `contentfulRedirectsRest`, revalidation `RedirectTag`, and `buildRedirectMap` / `RedirectMap` types (exported from `@se-studio/contentful-rest-api`).
332
+ - `getRedirectsWithErrors` and `getRedirectMap` (convenience) exposed additively via `createAppHelpers` (like banners).
333
+ - Two Contentful migration scripts: `18-create-redirect-content-type.js` (full CT with rich help text for the picker UX) and `19-remove-redirectTo-fields.js` (cleans up legacy per-page `redirectTo` fields on page/pageVariant).
334
+ - New `@se-studio/skills` entry `se-marketing-sites-redirects` (the canonical guide, including CT spec, migration instructions, generate script example, static middleware example + A/B composition, deploy hook webhook setup, testing, and preview notes).
335
+ - Minimal demo in `example-empty` (middleware + `/api/redirects` route exercising the new helpers at runtime for easy local verification; production apps follow the baked recipe in the skill).
336
+ - Light updates to CLAUDE.md, vercel-setup skill, CONTENT_MODEL.md, and related docs.
337
+
338
+ The model and helpers are forward-compatible if a faster (e.g. Edge Config) path is added later. Legacy `redirectTo` fields are left untouched for now (removal is optional via the migration).
339
+
340
+ This is a new feature (minor bumps).
341
+
342
+ ### Patch Changes
343
+
344
+ - Complete support and documentation for filtered full article lists (#51) + fix client boundary regression (#52).
345
+
346
+ - Re-export `filterRelatedArticles` and `RelatedArticlesOptions` **only** from `@se-studio/core-ui/server` (removed from the main barrel). This keeps the primary `@se-studio/core-ui` entry fully client-safe for common imports (`cn`, `TrackedLink`, `AnalyticsProvider`, `Visual`, etc.). The main barrel no longer transitively pulls `'server-only'`.
347
+
348
+ - `getAllArticleLinks(options)` now fully supports the article listing filter fields (`articleTypeSlugs`/`Ids`, `tagSlugs`/`Ids`, `tagType*`, `authorSlugs`/`Ids` + `strictAuthorMatch`, `before`/`after`, `excludeArticleIds`, `count`, `allowUnindexed`) for News Grids, Publications Lists, person-scoped lists, tag filters, etc. The wrapper delegates to the enhanced `filterRelatedArticles` (OR semantics, slug support, strict author mode, distinct tag scoring, etc.).
349
+
350
+ - Added / expanded docs and examples in core-ui and contentful-rest-api READMEs + llms.md, CMS_INFRASTRUCTURE.md, SERVER_CLIENT_BOUNDARIES.md, the `se-marketing-sites-lib-cms-structure` skill (showing the `getAllArticleLinks({ articleTypeSlugs, strictAuthorMatch, ... })` pattern), and this repo's GitHub issues status tracker (new #51 entry + updated upgrade table).
351
+
352
+ - No changes to runtime behavior for existing bare `getAll*Links()` or `getRelated*` callers (sitemaps, search indexing, llms routes, etc. unaffected). Consumers should import filter symbols from the `/server` subpath when using them directly.
353
+
354
+ This finishes the implementation + docs for the DX improvement requested in #51 (reusable core filtering for full article collections instead of per-site `.filter()` shims). The boundary fix prevents the server-only error that appeared in any app importing from core-ui after the initial #51 changes.
355
+
356
+ ## 1.0.42
357
+
358
+ ### Patch Changes
359
+
360
+ - Resolve person **`bio`** rich text on **`IPersonLink`** so team cards, related-people collections, and search/markdown pipelines can use CMS bios without fetching full person pages.
361
+
362
+ **@se-studio/core-data-types** — Add **`IResolvedRichText`** (`{ json, customStyles? }`) as the shared resolved RTF shape. **`IPersonLink.bio`** and **`ILinkProps.longText`** use it. **`contentfulAllPersonLinks`** consumers get typed **`IPersonLink[]`**.
363
+
364
+ **@se-studio/contentful-rest-api** — Include `fields.bio` in **`PERSON_LINK_FIELDS`**. **`basePersonLinkConverter`** returns **`IPersonLink`** with resolved bio. **`contentfulAllPersonLinks`** return type is **`CmsResponse<IPersonLink[]>`**.
365
+
366
+ **@se-studio/markdown-renderer** — **`MarkdownConverter`** exports person-link **`bio`** to Markdown (search/index pipelines). Uses **`isPersonLink`** type guard.
367
+
368
+ **@se-studio/core-ui** — **`FetchHelpers.getAllPersonLinks`** for collection use via **`rendererConfig.fetchHelpers`** (no cms-server import). **`getAllPersonLinks`** and sitemap deps typed as **`IPersonLink[]`**.
369
+
370
+ **@se-studio/contentful-cms** / **@se-studio/skills** — Document Person **`bio`** RTF authoring in cms-edit skills and functional spec.
371
+
372
+ ## 1.0.41
373
+
374
+ ### Patch Changes
375
+
376
+ - Bulk version bump: patch for all packages
377
+
378
+ ## 1.0.40
379
+
380
+ ### Patch Changes
381
+
382
+ - Add ordered `article.authors` CMS field support (first author = primary) with shared helpers in `@se-studio/core-data-types`: `getArticleAuthors`, `getPrimaryArticleAuthor`, `formatArticleAuthorNames`, and `normalizeResolvedArticleAuthors`. Legacy single `author` remains populated as `authors[0]` during migration.
383
+
384
+ **@se-studio/contentful-rest-api** — Resolve and normalize `authors` on full articles and article links; include `fields.authors` in link-only fetches. Related-articles scoring matches any listed co-author.
385
+
386
+ **@se-studio/core-ui** — Structured data context exposes multi-author JSON-LD (`article.authors`); related-articles fallback uses all article authors. Omits authors without a display name.
387
+
388
+ **@se-studio/search** / **@se-studio/markdown-renderer** — Index and export comma-separated multi-author bylines via `formatArticleAuthorNames`.
389
+
390
+ **@se-studio/contentful-cms** — Fetch and audit entry trees traverse `authors` links; shared `linkedEntryFields` module deduplicates traversal logic.
391
+
392
+ **@se-studio/skills** — Add `contentful-cms-sync-schema` skill; document multi-author Schema.org variables.
393
+
394
+ Run migration `scripts/migrations/17-add-article-authors.js` on live spaces after deploying packages.
395
+
396
+ ## 1.0.39
397
+
398
+ ### Patch Changes
399
+
400
+ - Bulk version bump: patch for all packages
401
+
402
+ ## 1.0.38
403
+
404
+ ### Patch Changes
405
+
406
+ - Extend the local content index with a reference catalog, automatic sync, and bundled skills for cms-edit.
407
+
408
+ - **Content index (schema v2)** — index `template`, `articleType`, `tagType`, and `tag` in SQLite alongside assets and media
409
+ - **Automatic index sync** — index-backed commands call `ensureContentIndex`; full rebuild when missing or schema-outdated, incremental upsert when stale (>24h). Manual `index sync` always full rebuilds
410
+ - **`list --type template|articleType|tagType|tag`** — index-preferred listing with `--force-cma` escape hatch; template `--slug` filters by cmsLabel
411
+ - **`resolve --type template --label`** — resolve templates by cmsLabel; reference types use index with CMA fallback
412
+ - **`index dump --reference-only` / `--reference-type`** — browse the reference catalog
413
+ - **Duplicate detection** — ambiguous slug/label matches throw `ReferenceCatalogAmbiguityError`
414
+ - **File lock** — single writer per index database during sync
415
+ - **`requireMediaIndex` removed** — replaced by async `ensureContentIndex`
416
+ - **Bundled skills** — `sync:skills` copies cms-edit skills from `@se-studio/skills`; setup wizard can install into `.agents/skills`
417
+
418
+ ## 1.0.37
419
+
420
+ ### Patch Changes
421
+
422
+ - Bulk version bump: patch for all packages
423
+
424
+ ## 1.0.36
425
+
426
+ ### Patch Changes
427
+
428
+ - Version bump: patch for changed packages
429
+ - 17d37e2: Fix skill descriptions not appearing in Claude Code selector (#30): standardize SKILL.md frontmatter (name matches directory, single-line quoted description, no extra YAML fields). Add `pnpm skills:validate`. Skill slash names now match directory names (e.g. `contentful-cms-core` instead of `contentful-cms:core`).
430
+
431
+ ## 1.0.35
432
+
433
+ ### Patch Changes
434
+
435
+ - Version bump: patch for changed packages
436
+
437
+ ## 1.0.34
438
+
439
+ ### Patch Changes
440
+
441
+ - Version bump: patch for changed packages
442
+
443
+ ## 1.0.33
444
+
445
+ ### Patch Changes
446
+
447
+ - Version bump: patch for changed packages
448
+
449
+ ## 1.0.32
450
+
451
+ ### Patch Changes
452
+
453
+ - Version bump: patch for changed packages
454
+
455
+ ## 1.0.31
456
+
457
+ ### Patch Changes
458
+
459
+ - Version bump: patch for changed packages
460
+
461
+ ## 1.0.30
462
+
463
+ ### Patch Changes
464
+
465
+ - Version bump: patch for changed packages
466
+
467
+ ## 1.0.29
468
+
469
+ ### Patch Changes
470
+
471
+ - Version bump: patch for changed packages
472
+
473
+ ## 1.0.28
474
+
475
+ ### Patch Changes
476
+
477
+ - Version bump: patch for changed packages
478
+
479
+ ## 1.0.27
480
+
481
+ ### Patch Changes
482
+
483
+ - Version bump: patch for changed packages
484
+
485
+ ## 1.0.26
486
+
487
+ ### Patch Changes
488
+
489
+ - Version bump: patch for changed packages
490
+
491
+ ## 1.0.25
492
+
493
+ ### Patch Changes
494
+
495
+ - Version bump: patch for changed packages
496
+
497
+ ## 1.0.24
498
+
499
+ ### Patch Changes
500
+
501
+ - Version bump: patch for changed packages
502
+
503
+ ## 1.0.23
504
+
505
+ ### Patch Changes
506
+
507
+ - Version bump: patch for changed packages
508
+
509
+ ## 1.0.22
510
+
511
+ ### Patch Changes
512
+
513
+ - Version bump: patch for changed packages
514
+
515
+ ## 1.0.21
516
+
517
+ ### Patch Changes
518
+
519
+ - Version bump: patch for changed packages
520
+
521
+ ## 1.0.20
522
+
523
+ ### Patch Changes
524
+
525
+ - Version bump: patch for changed packages
526
+
527
+ ## 1.0.19
528
+
529
+ ### Patch Changes
530
+
531
+ - Version bump: patch for changed packages
532
+
533
+ ## 1.0.18
534
+
535
+ ### Patch Changes
536
+
537
+ - Version bump: patch for changed packages
538
+
539
+ ## 1.0.17
540
+
541
+ ### Patch Changes
542
+
543
+ - Version bump: patch for changed packages
544
+
545
+ ## 1.0.16
546
+
547
+ ### Patch Changes
548
+
549
+ - Version bump: patch for changed packages
550
+
551
+ ## 1.0.15
552
+
553
+ ### Patch Changes
554
+
555
+ - Version bump: patch for changed packages
556
+
557
+ ## 1.0.14
558
+
559
+ ### Patch Changes
560
+
561
+ - Version bump: patch for changed packages
562
+
563
+ ## 1.0.13
564
+
565
+ ### Patch Changes
566
+
567
+ - Version bump: patch for changed packages
568
+
569
+ ## 1.0.12
570
+
571
+ ### Patch Changes
572
+
573
+ - Version bump: patch for changed packages
574
+
575
+ ## 1.0.11
576
+
577
+ ### Patch Changes
578
+
579
+ - Version bump: patch for changed packages
580
+
581
+ ## 1.0.10
582
+
583
+ ### Patch Changes
584
+
585
+ - Add site-workflows-contentful-vercel-setup skill
586
+
587
+ ## 1.0.9
588
+
589
+ ### Patch Changes
590
+
591
+ - Add site-workflows-copy-doc-snapshot skill
592
+ - Add site-workflows-new-project skill
593
+ - Add site-workflows-project-cleanup skill
594
+
595
+ ## 1.0.8
596
+
597
+ ### Patch Changes
598
+
599
+ - Add site-workflows-apply-design-snapshot skill
600
+
601
+ ## 1.0.7
602
+
603
+ ### Patch Changes
604
+
605
+ - Add site-workflows-figma-design-snapshot skill
606
+
607
+ ## 1.0.6
608
+
609
+ ### Patch Changes
610
+
611
+ - Version bump: patch for changed packages
612
+
613
+ ## 1.0.5
614
+
615
+ ### Patch Changes
616
+
617
+ - Version bump: patch for changed packages
618
+
619
+ ## 1.0.4
620
+
621
+ ### Patch Changes
622
+
623
+ - Version bump: patch for changed packages
624
+
625
+ ## 1.0.3
626
+
627
+ ### Patch Changes
628
+
629
+ - Version bump: patch for changed packages
630
+
631
+ ## 1.0.2
632
+
633
+ ### Patch Changes
634
+
635
+ - Version bump: patch for changed packages
636
+
637
+ ## 1.0.1
638
+
639
+ ### Patch Changes
640
+
641
+ - Version bump: patch for changed packages