@se-studio/skills 1.1.3 → 1.2.0

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,11 @@
1
1
  # @se-studio/skills
2
2
 
3
+ ## 1.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Add contentful-cms-regenerate-editor-pack skill for hosted MCP editor-pack workflow.
8
+
3
9
  ## 1.1.3
4
10
 
5
11
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@se-studio/skills",
3
- "version": "1.1.3",
3
+ "version": "1.2.0",
4
4
  "description": "SE Studio agent skills for marketing site development with Contentful CMS",
5
5
  "repository": {
6
6
  "type": "git",
@@ -0,0 +1,136 @@
1
+ ---
2
+ name: contentful-cms-regenerate-editor-pack
3
+ description: "Regenerate cms-edit editor-pack for hosted MCP after registrations, guidelines, routing, or cms-editor docs change; validate, commit, and deploy."
4
+ ---
5
+
6
+ # Regenerate cms-edit editor pack
7
+
8
+ Use this skill when **site knowledge served to hosted cms-edit editors** must be refreshed. The editor pack becomes `cms-edit://customer/*` MCP resources on the hosted server.
9
+
10
+ **Audience:** SE developers — not content editors.
11
+
12
+ ## When to regenerate
13
+
14
+ Run after any of these change:
15
+
16
+ | Change | Examples |
17
+ |--------|----------|
18
+ | CMS registrations | New component/collection in `src/lib/registrations.ts` |
19
+ | Guidelines | `docs/cms-guidelines/**`, merged `COMPONENT_GUIDELINES_FOR_LLM.md` |
20
+ | Routing / constants | `src/lib/constants.ts` (slugs, feature flags, `HOMEPAGE_SLUG`) |
21
+ | Editor playbooks | `docs/cms-editor/**/*.md` |
22
+ | Project config | `cms-edit/project.json` (`homepageSlug`, `devBaseUrl`, etc.) |
23
+
24
+ **Also run** at the end of **`contentful-cms-update-cms-guidelines`** (`fresh` or `sync`) when guidelines changed.
25
+
26
+ ## What deploy does vs does not do
27
+
28
+ | Action | Automatic on git push? |
29
+ |--------|------------------------|
30
+ | Copy **committed** `editor-pack/` into cms-edit-host | Yes (when `cms-edit/**` changes and Vercel builds) |
31
+ | Run `editor-pack generate` | **No** — always manual (this skill) |
32
+ | Rebuild `.mcpb` on Vercel | Yes (part of customer `vercel-build.sh`) |
33
+ | Update hosted guide/prompts from `@se-studio/contentful-cms` | Redeploy host after bumping package version |
34
+
35
+ Editors do **not** reinstall `.mcpb` when only the editor pack changes.
36
+
37
+ ## Step 1 — Locate config
38
+
39
+ | Repo layout | Config path |
40
+ |-------------|-------------|
41
+ | Single-site (SE Studio) | `cms-edit/project.json` |
42
+ | Multi-site monorepo | `cms-edit/<site>/project.json` |
43
+
44
+ See `docs/CMS_EDIT_SETUP.md` for customer-specific paths.
45
+
46
+ ## Step 2 — Validate
47
+
48
+ From repo root (requires `cms-edit` on PATH — `pnpm build` in se-core-product or `npx @se-studio/contentful-cms`):
49
+
50
+ ```bash
51
+ cms-edit project validate --project-config <path-to-project.json>
52
+ ```
53
+
54
+ ## Step 3 — Generate
55
+
56
+ **SE Studio (`se-website-2026`):**
57
+
58
+ ```bash
59
+ pnpm cms-edit:editor-pack
60
+ ```
61
+
62
+ **Generic / multi-site:**
63
+
64
+ ```bash
65
+ cms-edit editor-pack generate --project-config cms-edit/<site>/project.json
66
+ ```
67
+
68
+ Output: `cms-edit/editor-pack/` or `cms-edit/<site>/editor-pack/` (manifest, indexes, `routing.md`, `overview.md`, per-type guideline snippets).
69
+
70
+ ## Step 4 — Review diff
71
+
72
+ Check at minimum:
73
+
74
+ - `routing.md` — homepage CMS slug, article/tag paths
75
+ - `components-index.json` / `collections-index.json` — new types present
76
+ - `manifest.json` — resource list updated
77
+
78
+ ## Step 5 — Commit
79
+
80
+ ```bash
81
+ git add cms-edit/editor-pack # or cms-edit/<site>/editor-pack
82
+ git commit -m "chore(cms-edit): regenerate editor pack"
83
+ ```
84
+
85
+ ## Step 6 — Deploy
86
+
87
+ ### SE Studio (git-connected Vercel)
88
+
89
+ Push to the branch Vercel watches (usually `develop`). Changes under `cms-edit/**` trigger `cms-edit/scripts/vercel-build.sh`, which copies the committed pack and rebuilds the host.
90
+
91
+ ```bash
92
+ git push
93
+ ```
94
+
95
+ No `pnpm cms-edit:deploy` needed unless you want a manual Vercel deploy without pushing.
96
+
97
+ ### Other customers (e.g. Pedestal)
98
+
99
+ From `se-core-product`:
100
+
101
+ ```bash
102
+ ./scripts/deploy-cms-edit-host.sh \
103
+ --config <customer-repo>/cms-edit/<site>/project.json \
104
+ --editor-pack <customer-repo>/cms-edit/<site>/editor-pack \
105
+ --prod
106
+ ```
107
+
108
+ Or commit + push if that customer repo has its own cms-edit-host Vercel project.
109
+
110
+ ## Homepage slug reminder
111
+
112
+ SE Studio sites store the marketing homepage as Contentful slug **`index`** (public URL `/`). Regenerated `routing.md` documents this. Set `website.homepageSlug` in `project.json` only for exceptions (e.g. Pedestal `home`).
113
+
114
+ ## Verify after deploy
115
+
116
+ ```bash
117
+ curl -s -H "Authorization: Bearer <PAT>" "https://<host>/api/health" | jq .gettingStarted
118
+ ```
119
+
120
+ In Claude Desktop (hosted extension): ask to read `cms-edit://customer/routing` and confirm new component types appear in `cms-edit://customer/components-index`.
121
+
122
+ ## Related docs
123
+
124
+ | Doc | Purpose |
125
+ |-----|---------|
126
+ | `docs/CMS_EDIT_SETUP.md` | Full customer runbooks |
127
+ | `packages/contentful-cms/docs/cms-edit-project-template/README.md` | `project.json` schema |
128
+ | Customer `cms-edit/README.md` | Repo-specific scripts |
129
+
130
+ ## Sub-skill links
131
+
132
+ | Prior work | Skill |
133
+ |------------|-------|
134
+ | Guidelines changed | `contentful-cms-update-cms-guidelines` |
135
+ | New registration | `se-marketing-sites-register-cms-features` |
136
+ | Editor `.mcpb` install | `contentful-cms-setup` (hosted path) |
@@ -0,0 +1,122 @@
1
+ ---
2
+ name: contentful-cms-schema-audit
3
+ description: "Run a comprehensive cross-site Contentful schema audit: field order, descriptions, validations, rich text embeds, field usage, webhooks, live preview, and Page Status. Use when comparing schemas across customer sites or recommending field reordering."
4
+ ---
5
+
6
+ # Cross-site Contentful schema audit
7
+
8
+ Use when you need a **comprehensive comparison** of Contentful schemas across all SE Studio marketing sites — not just drift vs golden.
9
+
10
+ ## Credentials
11
+
12
+ Only **`CONTENTFUL_MANAGEMENT_TOKEN`** is required (global env var).
13
+
14
+ - **Schema export** uses the Management API (CMA).
15
+ - **Field usage** uses the Preview API; preview tokens are **resolved automatically** from each space's delivery API keys via CMA (same as `cms-edit index sync`). No per-site `.env.local` needed.
16
+
17
+ The management token must have permission to read API keys for each target space.
18
+
19
+ ## Site registry
20
+
21
+ Canonical site list: [`docs/schema-audit/sites.registry.json`](../../../docs/schema-audit/sites.registry.json)
22
+
23
+ Customer-specific types/fields (excluded from core gap noise): [`docs/schema-audit/customer-overrides.registry.json`](../../../docs/schema-audit/customer-overrides.registry.json)
24
+
25
+ ## Two-phase workflow
26
+
27
+ ### Phase 1 — Scripts (factual)
28
+
29
+ ```bash
30
+ export CONTENTFUL_MANAGEMENT_TOKEN=...
31
+
32
+ # Full pipeline
33
+ pnpm schema-audit
34
+
35
+ # Subset of sites
36
+ pnpm schema-audit -- --sites brightline,om1
37
+
38
+ # Schema only (skip Preview API usage scan)
39
+ pnpm schema-audit -- --skip-usage
40
+
41
+ # Individual steps
42
+ pnpm schema-audit:export
43
+ pnpm schema-audit:space-config
44
+ pnpm schema-audit:matrix
45
+ pnpm schema-audit:rtf
46
+ pnpm schema-audit:help-text
47
+ pnpm schema-audit:usage
48
+ pnpm schema-audit:insights
49
+ pnpm schema-audit:sidebar
50
+ pnpm schema-audit:report
51
+ ```
52
+
53
+ Produces **`docs/schema-audit/REPORT.md`** — factual findings only.
54
+
55
+ ### Phase 2 — Analysis (interpretive)
56
+
57
+ After Phase 1, read `REPORT.md` and matrix/usage JSON, then complete **`docs/schema-audit/ANALYSIS.md`**:
58
+
59
+ 1. Rank P0/P1/P2 actions (migrations vs editorial vs config)
60
+ 2. Decide which core gaps are intentional per-site
61
+ 3. Prioritize RTF violations that block editors or break renderers
62
+ 4. Batch help-text updates by content type
63
+ 5. Recommend deprecating or documenting never-used fields
64
+ 6. Confirm webhook URLs and live preview per deployment
65
+ 7. Plan Page Status sidebar installs (Ninetailed is PointMe-only)
66
+ 8. Extend `customer-overrides.registry.json` if new customer fields appear
67
+
68
+ If `ANALYSIS.md` already exists, the report step writes a fresh template to `ANALYSIS.template.md` instead of overwriting.
69
+
70
+ ## Output artifacts
71
+
72
+ | Path | Purpose |
73
+ |------|---------|
74
+ | `docs/schema-audit/exports/<site>.json` | Full CMA schema (content types + editor interfaces) |
75
+ | `docs/schema-audit/exports/<site>-space-config.json` | Webhooks, live preview, Page Status install params |
76
+ | `docs/schema-audit/matrix/*.json` | Cross-site matrices + classified gaps |
77
+ | `docs/schema-audit/matrix/rtf-canonical-diff.json` | RTF violations vs `docs/schema-export.json` |
78
+ | `docs/schema-audit/matrix/help-text-review.json` | Full core help-text review queue |
79
+ | `docs/schema-audit/matrix/sidebar.json` | Sidebar widgets and Page Status gaps |
80
+ | `docs/schema-audit/matrix/space-config.json` | Webhook summary per site |
81
+ | `docs/schema-audit/usage/<site>.json` | Per-field population rates |
82
+ | `docs/schema-audit/usage/never-used.json` | Never-used core fields |
83
+ | `docs/schema-audit/usage/recommended-core-order.json` | Usage-ranked core editor order |
84
+ | `docs/schema-audit/usage/site-additional-fields.json` | Per-site non-core fields (appendix) |
85
+ | `docs/schema-audit/canonical/*.json` | Golden RTF rules and core field sets |
86
+ | `docs/schema-audit/REPORT.md` | Phase 1 factual report |
87
+ | `docs/schema-audit/ANALYSIS.md` | Phase 2 priorities (human/agent completed) |
88
+ | `docs/schema-audit/report.json` | Machine-readable summary |
89
+
90
+ ## What the report covers
91
+
92
+ 1. **Core** content type and field gaps (customer-specific excluded via registry)
93
+ 2. Core validation/structural differences
94
+ 3. Rich text: violations vs codebase canonical (`docs/schema-export.json`) plus cross-site diffs
95
+ 4. Full help-text review queue for core fields
96
+ 5. Never-used core fields (0% population)
97
+ 6. Recommended core editor field order (usage-ranked; site extras in appendix)
98
+ 7. Webhooks, live preview, Page Status app (vs `docs/CONTENTFUL_WEBHOOK_REVALIDATION.md`)
99
+ 8. Sidebar placement gaps for Page Status on `component`/`collection`
100
+ 9. Cross-site usage medians and per-site profiles
101
+
102
+ ## Customer-specific scope
103
+
104
+ PointMe (`nt_*`, `featureFlags`, pricing), Brightline phone/tracking fields, etc. are registered in **`customer-overrides.registry.json`**. They appear in the appendix, not core gap counts.
105
+
106
+ Add new customer fields there before re-running so core gap noise stays low.
107
+
108
+ ## Enum fields
109
+
110
+ `componentType`, `collectionType`, and `externalComponentType` enum lists are **informational** — each site keeps its own component names. See `matrix/enum-diffs.json`.
111
+
112
+ ## Migrations
113
+
114
+ This skill is **read-only**. To align a space structurally, use **`contentful-cms-sync-schema`** after reviewing audit gaps in `ANALYSIS.md`.
115
+
116
+ ## Re-run after schema changes
117
+
118
+ ```bash
119
+ pnpm schema-audit
120
+ ```
121
+
122
+ Compare new `REPORT.md` / `matrix/*.json` to prior commit or regenerate descriptive site notes in `docs/schema-audit/<site>.md` if needed.
@@ -86,6 +86,7 @@ Standard order when diff shows these gaps:
86
86
  | 4 | `16-add-navigation-item-long-text.js` | `navigationItem.longText` |
87
87
  | 5 | `15-add-slug-regexp-validation.js` | Slug format validation |
88
88
  | 6 | `17-add-article-authors.js` | `article.authors` array + backfill from `author` |
89
+ | 7 | `21-add-article-bottom-content.js` | `article.bottomContent` array (idempotent; clones `content` link types) |
89
90
 
90
91
  Site-specific (run only when diff shows missing field **and** app uses it):
91
92
 
@@ -324,6 +324,12 @@ All under `<appDir>`:
324
324
 
325
325
  ---
326
326
 
327
+ ## Hosted editor pack (after guidelines change)
328
+
329
+ If the site uses **hosted cms-edit** (`cms-edit/` in the customer repo), regenerate and commit the editor pack so MCP resources pick up new guideline prose and component indexes. Vercel deploy copies the **committed** pack — it does not run `editor-pack generate` for you.
330
+
331
+ Follow [`../contentful-cms-regenerate-editor-pack/SKILL.md`](../contentful-cms-regenerate-editor-pack/SKILL.md).
332
+
327
333
  ## Sub-skills reference
328
334
 
329
335
  | Purpose | Skill |
@@ -331,4 +337,5 @@ All under `<appDir>`:
331
337
  | Curate showcase mocks (Step 2 of `fresh`) | [`../se-marketing-sites-curate-showcase-mocks/SKILL.md`](../se-marketing-sites-curate-showcase-mocks/SKILL.md) |
332
338
  | Full-site bulk generation (Step 4 of `fresh`: Phases 0–5) | [`../contentful-cms-generate-all-guidelines/SKILL.md`](../contentful-cms-generate-all-guidelines/SKILL.md) |
333
339
  | Single-type regeneration (after code change) | [`../contentful-cms-generate-cms-guidelines/SKILL.md`](../contentful-cms-generate-cms-guidelines/SKILL.md) (mode: single) |
340
+ | Regenerate hosted editor pack | [`../contentful-cms-regenerate-editor-pack/SKILL.md`](../contentful-cms-regenerate-editor-pack/SKILL.md) |
334
341
  | Per-component pipeline detail | [`generate-component-guidelines.md`](../contentful-cms-cms-guidelines/generate-component-guidelines.md) |
@@ -89,3 +89,7 @@ Registering a component automatically adds it to the CMS Showcase (usually avail
89
89
 
90
90
  * Ensure your `mock` object in the registration is complete and realistic.
91
91
  * The showcase helps verify that `usedFields` and `UnusedChecker` are working correctly.
92
+
93
+ ## Hosted cms-edit
94
+
95
+ If the site has `cms-edit/` (hosted MCP for editors), regenerate the editor pack after adding registrations so `cms-edit://customer/components-index` includes the new type. See [`../contentful-cms-regenerate-editor-pack/SKILL.md`](../contentful-cms-regenerate-editor-pack/SKILL.md).