@se-studio/skills 1.5.1 → 1.5.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.5.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Add `task-media-review` editor playbook with production URL support, registry entry, and updated media-review skills for multi-customer Claude workflows.
|
|
8
|
+
|
|
9
|
+
## 1.5.2
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 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.
|
|
14
|
+
|
|
3
15
|
## 1.5.1
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/package.json
CHANGED
|
@@ -64,6 +64,8 @@ Capability playbooks require:
|
|
|
64
64
|
|
|
65
65
|
**Search and reuse assets first** (`index sync` → `asset search`). Upload only when no match; use `--if-exists-by-filename` when uploading.
|
|
66
66
|
|
|
67
|
+
**Space-wide media audit** (filename, alt, size, dimensions, usage) → read **`task-media-review`**, then skill **`contentful-cms-media-review`** for the spreadsheet.
|
|
68
|
+
|
|
67
69
|
## When the pack is stale
|
|
68
70
|
|
|
69
71
|
Run `contentful-cms-regenerate-editor-pack` after:
|
|
@@ -80,4 +82,5 @@ Then `cms-edit project doctor --project-config cms-edit/<site>/project.json`.
|
|
|
80
82
|
|-------|------|
|
|
81
83
|
| `contentful-cms-core` | CLI command reference |
|
|
82
84
|
| `contentful-cms-setup` | First-time hosted MCP connect |
|
|
83
|
-
| `contentful-cms-regenerate-editor-pack` | Refresh editor-pack in git |
|
|
85
|
+
| `contentful-cms-regenerate-editor-pack` | Refresh editor-pack in git |
|
|
86
|
+
| `contentful-cms-media-review` | Space-wide asset audit + Excel report |
|
|
@@ -1,170 +1,96 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: contentful-cms-media-review
|
|
3
|
-
description: "Audit CMS images, videos, and Lottie animations
|
|
3
|
+
description: "Audit CMS images, videos, and Lottie animations using the task-media-review editor playbook and cms-edit asset review, then produce an Excel report."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Skill: contentful-cms — Media Review
|
|
7
7
|
|
|
8
|
-
Use this skill
|
|
8
|
+
Use this skill for a **space-wide visual asset audit** and spreadsheet deliverable.
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Start here (every site)
|
|
11
11
|
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
-
|
|
12
|
+
1. **`contentful-cms-editor-tasks`** — route to the site playbook
|
|
13
|
+
2. Read **`task-media-review`** before running commands:
|
|
14
|
+
- **Hosted MCP:** `cms_edit ["customer", "task-media-review"]`
|
|
15
|
+
- **Local:** `cms-edit/<site>/editor-pack/task-media-review.md`
|
|
16
|
+
3. Read **`overview`** for `productionSiteUrl` (prod link columns)
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
- `cms-edit` configured for the target space (`cms-edit health`)
|
|
19
|
-
- `CONTENTFUL_PREVIEW_ACCESS_TOKEN` set (default index uses Preview API / drafts)
|
|
20
|
-
- Run `cms-edit index sync` before the review if the index is stale
|
|
21
|
-
|
|
22
|
-
## Workflow
|
|
23
|
-
|
|
24
|
-
### Step 1 — Sync the index
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
cms-edit index sync --space <space-key>
|
|
28
|
-
```
|
|
18
|
+
The playbook defines phases, hosted vs local limits, and confirmation gates. This skill covers **spreadsheet schema** and **optional image guide**.
|
|
29
19
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
### Step 2 — Run the review
|
|
20
|
+
## Prerequisites
|
|
33
21
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
22
|
+
- `cms-edit health` (or hosted connector healthy)
|
|
23
|
+
- `CONTENTFUL_PREVIEW_ACCESS_TOKEN` (default Preview index)
|
|
24
|
+
- `CMS_EDIT_TOKEN` when using `--include-usage`
|
|
25
|
+
- `cms-edit index sync` if index is stale
|
|
37
26
|
|
|
38
|
-
|
|
27
|
+
## Quick command reference
|
|
39
28
|
|
|
40
|
-
|
|
|
29
|
+
| Goal | Command |
|
|
41
30
|
|------|---------|
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
| `--max-video-mb 8` | Max video file size |
|
|
46
|
-
| `--max-lottie-kb 400` | Max Lottie JSON size |
|
|
47
|
-
| `--published` | Use Delivery API index |
|
|
31
|
+
| Failures JSON | `cms-edit --json asset review` |
|
|
32
|
+
| Full + usage (local) | `cms-edit --json asset review --include-passing --include-usage --usage-limit 0` |
|
|
33
|
+
| Usage sample (hosted) | `cms-edit --json asset review --include-usage --usage-limit 50` |
|
|
48
34
|
|
|
49
|
-
|
|
35
|
+
Hosted MCP: **no `--space`**. Do not use `--usage-limit 0` with `--include-passing` on hosted MCP.
|
|
50
36
|
|
|
51
|
-
|
|
37
|
+
## Excel workbook (failures)
|
|
52
38
|
|
|
53
|
-
|
|
39
|
+
Use the **xlsx** skill. Default path: `docs/media-review-<projectKey>-<date>.xlsx`.
|
|
54
40
|
|
|
55
41
|
**Sheet: Issues** — one row per failing asset
|
|
56
42
|
|
|
57
|
-
| Column | Source
|
|
58
|
-
|
|
43
|
+
| Column | Source |
|
|
44
|
+
|--------|--------|
|
|
59
45
|
| Asset ID | `assets[].id` |
|
|
60
46
|
| Contentful URL | `assets[].contentfulUrl` |
|
|
61
47
|
| CDN URL | `assets[].url` |
|
|
62
|
-
| Title | `
|
|
63
|
-
|
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
| Updated | `assets[].updatedAt` |
|
|
73
|
-
|
|
74
|
-
**Sheet: Summary**
|
|
75
|
-
|
|
76
|
-
- `space`, `spaceId`, `environment`, `generated`, `preview`
|
|
77
|
-
- `total`, `failingCount`, `warningCount`
|
|
78
|
-
- `issueCounts` breakdown
|
|
79
|
-
- Thresholds from `thresholds` object
|
|
80
|
-
|
|
81
|
-
Default output path: `docs/media-review-<space>-<date>.xlsx` in the app directory.
|
|
82
|
-
|
|
83
|
-
### Step 4 — Present findings
|
|
84
|
-
|
|
85
|
-
Summarize for the user:
|
|
86
|
-
|
|
87
|
-
- Total assets scanned vs failures
|
|
88
|
-
- Top issue types (from `issueCounts`)
|
|
89
|
-
- Quick wins (missing alt, animated GIFs, obvious stock filenames)
|
|
90
|
-
- Note: `no_media_wrapper` is a **warning** — asset may still be used via rich text or be genuinely unused
|
|
91
|
-
|
|
92
|
-
## What is checked
|
|
93
|
-
|
|
94
|
-
| Check | Issue code | Severity |
|
|
95
|
-
|-------|------------|----------|
|
|
96
|
-
| Descriptive filename | `bad_filename` | fail |
|
|
97
|
-
| Alt text present | `missing_alt` | fail |
|
|
98
|
-
| Alt text quality | `weak_alt` | fail |
|
|
99
|
-
| Width ≤ max (not SVG/Lottie) | `oversized_width` | fail |
|
|
100
|
-
| File size limits | `oversized_file` | fail / warn |
|
|
101
|
-
| Animated GIF | `animated_gif` | fail |
|
|
102
|
-
| No media wrapper in index | `no_media_wrapper` | warn |
|
|
103
|
-
|
|
104
|
-
## Brightline example
|
|
48
|
+
| Title / Filename / Alt | `title`, `fileName`, `description` |
|
|
49
|
+
| Content type | `contentType` |
|
|
50
|
+
| Width / Height / Size (KB) | `width`, `height`, `sizeKb` |
|
|
51
|
+
| Media wrappers | `mediaEntryCount` |
|
|
52
|
+
| CMS usages | `usages[].slug` + `label` (when `--include-usage`) |
|
|
53
|
+
| Prod URLs | `{productionSiteUrl}{slug}` from overview/capabilities |
|
|
54
|
+
| Issue codes | fail-severity `issues[].code` |
|
|
55
|
+
| Issue details | `issues[].message` |
|
|
56
|
+
| Likely unused | empty `usages` + `no_media_wrapper` warn |
|
|
57
|
+
| Updated | `updatedAt` |
|
|
105
58
|
|
|
106
|
-
|
|
107
|
-
cd apps/brightline-website
|
|
108
|
-
cms-edit index sync --space brightline
|
|
109
|
-
cms-edit --json asset review --space brightline > /tmp/brightline-media-review.json
|
|
110
|
-
```
|
|
59
|
+
**Sheet: Summary** — `total`, `failingCount`, `issueCounts`, `thresholds`, `usageTruncated` if applicable
|
|
111
60
|
|
|
112
|
-
|
|
61
|
+
## Issue codes
|
|
113
62
|
|
|
114
|
-
|
|
63
|
+
| Code | Severity |
|
|
64
|
+
|------|----------|
|
|
65
|
+
| `bad_filename` | fail |
|
|
66
|
+
| `missing_alt` / `weak_alt` | fail |
|
|
67
|
+
| `oversized_width` | fail |
|
|
68
|
+
| `oversized_file` | fail / warn |
|
|
69
|
+
| `animated_gif` | fail |
|
|
70
|
+
| `no_media_wrapper` | warn |
|
|
115
71
|
|
|
116
|
-
|
|
72
|
+
## After the spreadsheet
|
|
117
73
|
|
|
118
|
-
|
|
74
|
+
Summarize: totals, top `issueCounts`, quick wins (alt, GIFs, stock filenames).
|
|
119
75
|
|
|
120
|
-
|
|
76
|
+
**Fixes (user-approved only):** `cms-edit asset set-description <id> "…"` — drafts only, no publish.
|
|
121
77
|
|
|
122
|
-
|
|
78
|
+
For per-page alt work: **`contentful-cms-alt-text-audit`**.
|
|
123
79
|
|
|
124
|
-
|
|
125
|
-
cms-edit index sync --space <space-key>
|
|
126
|
-
cms-edit --json asset review --include-usage --include-passing --space <space-key> > /tmp/image-inventory.json
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
Each asset in JSON includes `usages[]`: slug-bearing ancestors (page, article, tag, person, etc.) that ultimately use the asset.
|
|
130
|
-
|
|
131
|
-
To inspect how images relate to a specific page, use `cms-edit open --page-slug /<slug>` + `snapshot`, or `cms-edit peek --page-slug /<slug>` without affecting your session.
|
|
132
|
-
|
|
133
|
-
### Description cache
|
|
134
|
-
|
|
135
|
-
Store AI-generated visual descriptions per asset (avoids re-inspecting on reruns):
|
|
80
|
+
## Image guide (optional extension)
|
|
136
81
|
|
|
137
|
-
|
|
138
|
-
docs/descriptions/{assetId}.json
|
|
139
|
-
```
|
|
82
|
+
When the client wants a **reference guide** (not just remediation):
|
|
140
83
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
```json
|
|
144
|
-
{
|
|
145
|
-
"subjects": "...",
|
|
146
|
-
"setting": "...",
|
|
147
|
-
"composition": "...",
|
|
148
|
-
"colours": "...",
|
|
149
|
-
"mood": "...",
|
|
150
|
-
"style": "...",
|
|
151
|
-
"constraints": "...",
|
|
152
|
-
"whenToUse": "...",
|
|
153
|
-
"inspectedAt": "2026-04-15T10:00:00Z"
|
|
154
|
-
}
|
|
84
|
+
```bash
|
|
85
|
+
cms-edit --json asset review --include-passing --include-usage --usage-limit 0 > docs/image-inventory.json
|
|
155
86
|
```
|
|
156
87
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
- `docs/image-guide.md` — AI-consumable Markdown (chunk writes: ~35 images per append)
|
|
162
|
-
- `docs/image-guide.html` — self-contained human reference (chunk writes: ~15–20 cards per append)
|
|
163
|
-
|
|
164
|
-
Use CDN URLs with `?w=800&q=85` for previews. Group entries by page using `usages[]` from the review JSON.
|
|
88
|
+
- Cache AI descriptions: `docs/descriptions/{assetId}.json` (write-through per image)
|
|
89
|
+
- Outputs: `docs/image-guide.md`, `docs/image-guide.html`
|
|
90
|
+
- CDN previews: `?w=800&q=85`
|
|
165
91
|
|
|
166
92
|
## Related
|
|
167
93
|
|
|
168
|
-
- `
|
|
169
|
-
- `
|
|
170
|
-
- `cms-edit asset
|
|
94
|
+
- `cms-edit help asset-review` — CLI flags
|
|
95
|
+
- `task-media-reuse-and-upload` — upload/search workflow
|
|
96
|
+
- `cms-edit asset audit` — missing alt only (narrower)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
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."
|
|
3
|
+
description: "Regenerate cms-edit editor-pack for hosted MCP after registrations, guidelines, routing, or cms-editor docs change; validate, commit, and push (never manual vercel deploy)."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Regenerate cms-edit editor pack
|
|
@@ -83,28 +83,23 @@ git add cms-edit/editor-pack # or cms-edit/<site>/editor-pack
|
|
|
83
83
|
git commit -m "chore(cms-edit): regenerate editor pack"
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
-
## Step 6 —
|
|
86
|
+
## Step 6 — Publish (commit + push only)
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
**Absolute rule for agents:** hosted MCP is **never** published via `vercel deploy`, `pnpm cms-edit:deploy*`, or `deploy-cms-edit-host.sh`. Commit and push is the only deploy path for customer repos with `cms-edit/host/`.
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
### Customer repo with `cms-edit/host/` (SE Studio, Pedestal, Headwater, Brightline, …)
|
|
91
|
+
|
|
92
|
+
Commit `editor-pack/` (and any other `cms-edit/**` changes), then push to the branch Vercel watches (usually `develop`). Changes under `cms-edit/**` trigger a host rebuild (`stage-site.mjs` copies committed artifacts on the Vercel build).
|
|
91
93
|
|
|
92
94
|
```bash
|
|
93
|
-
git push
|
|
95
|
+
git push origin develop # or the site's configured deploy branch
|
|
94
96
|
```
|
|
95
97
|
|
|
96
|
-
|
|
98
|
+
Do **not** run `pnpm cms-edit:deploy` or `vercel deploy` after this step.
|
|
97
99
|
|
|
98
100
|
### Customers without `cms-edit/host/` in their repo
|
|
99
101
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
./scripts/deploy-cms-edit-host.sh \
|
|
104
|
-
--config <customer-repo>/cms-edit/<site>/project.json \
|
|
105
|
-
--editor-pack <customer-repo>/cms-edit/<site>/editor-pack \
|
|
106
|
-
--prod
|
|
107
|
-
```
|
|
102
|
+
Rare layout — coordinate with the repo owner. Agents still must not run deploy scripts unless explicitly asked.
|
|
108
103
|
|
|
109
104
|
## Homepage slug reminder
|
|
110
105
|
|