@se-studio/skills 1.5.2 → 1.5.4
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.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Bulk version bump: patch for all packages
|
|
8
|
+
|
|
9
|
+
## 1.5.3
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Add `task-media-review` editor playbook with production URL support, registry entry, and updated media-review skills for multi-customer Claude workflows.
|
|
14
|
+
|
|
3
15
|
## 1.5.2
|
|
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 --usage-limit 0 --space <space-key> > /tmp/image-inventory.json
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
Each asset in JSON includes `usages[]` when resolved: slug-bearing ancestors (page, article, tag, person, etc.) that ultimately use the asset. Default `--usage-limit` is **50** (set `0` for unlimited when running locally). JSON includes `usageLimit`, `usageResolvedCount`, and `usageTruncated` when `--include-usage` is set.
|
|
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)
|
|
@@ -57,4 +57,7 @@ Do **not** register a local `mcpServers.cms-edit` entry in Claude Desktop — us
|
|
|
57
57
|
→ Reconnect via `/cms-edit` or Claude Integrations. Remove any legacy local MCP or `.mcpb` extension entries.
|
|
58
58
|
|
|
59
59
|
**Connection works but wrong site**
|
|
60
|
-
→ Each connector URL is site-specific; use the URL from the project's `/cms-edit` page.
|
|
60
|
+
→ Each connector URL is site-specific; use the URL from the project's `/cms-edit` page.
|
|
61
|
+
|
|
62
|
+
**Multiple cms-edit connectors enabled (Cowork)**
|
|
63
|
+
→ Hosted MCP tools are labeled per site: server name `cms-edit-<projectKey>`, descriptions `[Site Name cms-edit] …`. Say “use **Brightline** cms-edit” and match that label. Verify with `cms_edit_version` → `projectKey`. Disable other cms-edit connectors for single-site work.
|
|
@@ -27,8 +27,8 @@ Each project owns **`seo/screaming-frog.json`** at the app root (or pass `--conf
|
|
|
27
27
|
{
|
|
28
28
|
"site": "brightline",
|
|
29
29
|
"siteLabel": "Brightline",
|
|
30
|
-
"siteHost": "
|
|
31
|
-
"defaultSiteUrl": "https://www.
|
|
30
|
+
"siteHost": "brightline.com",
|
|
31
|
+
"defaultSiteUrl": "https://www.brightline.com/",
|
|
32
32
|
"outputMdName": "brightline-screaming-frog-audit.md",
|
|
33
33
|
"defaultProfile": "preview",
|
|
34
34
|
"issueRuleOverrides": [
|
|
@@ -42,7 +42,7 @@ Each project owns **`seo/screaming-frog.json`** at the app root (or pass `--conf
|
|
|
42
42
|
"profiles": {
|
|
43
43
|
"production": {
|
|
44
44
|
"label": "Production",
|
|
45
|
-
"url": "https://www.
|
|
45
|
+
"url": "https://www.brightline.com/",
|
|
46
46
|
"configFile": "~/spider/bl production.seospiderconfig"
|
|
47
47
|
},
|
|
48
48
|
"preview": {
|