@se-studio/skills 1.2.3 → 1.3.1

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.3.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 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.
8
+
9
+ ## 1.3.0
10
+
11
+ ### Minor Changes
12
+
13
+ - Add `screaming-frog-audit` agent skill for Screaming Frog crawl, native compare, and prioritized audit workflows.
14
+
3
15
  ## 1.2.3
4
16
 
5
17
  ### Patch Changes
package/README.md CHANGED
@@ -21,6 +21,15 @@ npx skills add @se-studio/skills
21
21
 
22
22
  Auto-sync on `pnpm install` (see [`packages/project-build/README.md`](../project-build/README.md) for the full `package.json` snippet). Use `pnpm skills:sync` manually to add or refresh third-party skill packs.
23
23
 
24
+ ## Package layout
25
+
26
+ | Path | Purpose |
27
+ |------|---------|
28
+ | `skills/<name>/SKILL.md` | Agent skills — the only directories scanned by `skills-npm` and the skills CLI |
29
+ | `references/<name>/` | Support docs, prompt packs, and pipeline references (no `SKILL.md`) |
30
+
31
+ Do **not** place non-skill material under `skills/` — directories there without `SKILL.md` cause `file_error` warnings in consumer repos on `pnpm install`.
32
+
24
33
  ## Authoring skills
25
34
 
26
35
  Canonical sources live in `packages/skills/skills/<skill-dir>/SKILL.md`. Do **not** edit `.agents/skills/` by hand.
@@ -56,7 +65,7 @@ Claude Code uses a naive frontmatter parser; violations cause descriptions to si
56
65
 
57
66
  1. Edit `packages/skills/skills/<skill-dir>/SKILL.md`
58
67
  2. Validate: `pnpm skills:validate`
59
- 3. Sync: `pnpm skills:sync`
68
+ 3. Sync: `pnpm skills:sync` (copies `skills/` → `.agents/skills/` and `references/` → `.agents/references/`)
60
69
  4. Add a changeset if publishing `@se-studio/skills`
61
70
 
62
71
  ### cms-edit bundled skills (`@se-studio/contentful-cms`)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@se-studio/skills",
3
- "version": "1.2.3",
3
+ "version": "1.3.1",
4
4
  "description": "SE Studio agent skills for marketing site development with Contentful CMS",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,6 +10,7 @@
10
10
  "license": "MIT",
11
11
  "files": [
12
12
  "skills",
13
+ "references",
13
14
  "*.md"
14
15
  ],
15
16
  "keywords": [
@@ -18,7 +18,7 @@ Guidelines are short markdown fragments — one per CMS type — that describe h
18
18
  pnpm --filter <appName> generate-showcase
19
19
  ```
20
20
  This writes `src/generated/showcase-examples.json`.
21
- 3. **Curate showcase mocks** — run the [curate-showcase-mocks skill](../se-marketing-sites-curate-showcase-mocks/SKILL.md) to select the best examples into `showcase-mocks.json`. This makes the showcase (and screenshots) show realistic content.
21
+ 3. **Curate showcase mocks** — run the [curate-showcase-mocks skill](../../skills/se-marketing-sites-curate-showcase-mocks/SKILL.md) to select the best examples into `showcase-mocks.json`. This makes the showcase (and screenshots) show realistic content.
22
22
  4. **Generate field list** — parse TypeScript types to produce structured field metadata:
23
23
  ```bash
24
24
  # From the app directory:
@@ -27,7 +27,7 @@ Guidelines are short markdown fragments — one per CMS type — that describe h
27
27
  # Or from repo root:
28
28
  pnpm --filter <appName> exec cms-generate-field-list --app-dir .
29
29
  ```
30
- 5. **Generate guidelines** — run the [Generate CMS guidelines skill](../contentful-cms-generate-cms-guidelines/SKILL.md).
30
+ 5. **Generate guidelines** — run the [Generate CMS guidelines skill](../../skills/contentful-cms-generate-cms-guidelines/SKILL.md).
31
31
 
32
32
  Steps 1–3 only need to be repeated when content or component code changes significantly. Step 4 only needs to be repeated when TypeScript types change. Step 5 can be re-run at any time.
33
33
 
@@ -35,7 +35,7 @@ Steps 1–3 only need to be repeated when content or component code changes sign
35
35
 
36
36
  ## How to run guideline generation
37
37
 
38
- Use the Cursor skill at [`../contentful-cms-generate-cms-guidelines/SKILL.md`](../contentful-cms-generate-cms-guidelines/SKILL.md). It supports three modes:
38
+ Use the Cursor skill at [`../../skills/contentful-cms-generate-cms-guidelines/SKILL.md`](../../skills/contentful-cms-generate-cms-guidelines/SKILL.md). It supports three modes:
39
39
 
40
40
  | Mode | When to use |
41
41
  |---|---|
@@ -479,10 +479,16 @@ cms-edit types component
479
479
  cms-edit types collection
480
480
 
481
481
  # List entries with filters
482
+ cms-edit list --type article --sort date -n 10 # recent articles by publication date
482
483
  cms-edit list --type article --has-download # articles with a download asset
483
484
  cms-edit list --type article --slug my-article # article with a specific slug
484
485
  cms-edit list --type article --has-field tags # articles where tags field is non-empty
485
486
 
487
+ # Find draft articles, then peek/open (both support drafts via CMA)
488
+ cms-edit sitemap --include article --status draft
489
+ cms-edit peek --article-slug resources/blog/my-post
490
+ # Only list --published / resolve --published are published-only
491
+
486
492
  # Resolve any entry or asset by ID (no open session required)
487
493
  cms-edit resolve --id 4xKj2abcDefGhijK # entry: shows type, title, slug, status
488
494
  cms-edit resolve --id 7pQrStuvWxyzAbc # asset: shows title, fileName, URL
@@ -702,6 +708,7 @@ cms-edit sitemap # All pages, sorted by slug
702
708
  cms-edit sitemap --prefix /blog # Filter by slug prefix
703
709
  cms-edit sitemap --status draft # Draft pages only
704
710
  cms-edit sitemap --sort updated # Most recently updated first
711
+ cms-edit sitemap --include article --sort date # Articles by publication date
705
712
  cms-edit sitemap --tree # Tree rendering
706
713
  cms-edit sitemap --include page,article # Include articles too
707
714
  ```
@@ -197,9 +197,9 @@ IMPORTANT: Screenshots have already been captured. Skip Phase A entirely.
197
197
  Go straight to Phase B.
198
198
 
199
199
  Files to read before starting:
200
- - ../contentful-cms-cms-guidelines/generation-prompt.md (Phase B instructions)
201
- - ../contentful-cms-cms-guidelines/colour-hint-prompt.md (Phase C instructions)
202
- - ../contentful-cms-cms-guidelines/validation-prompt.md (Phase D instructions)
200
+ - ../../references/contentful-cms-cms-guidelines/generation-prompt.md (Phase B instructions)
201
+ - ../../references/contentful-cms-cms-guidelines/colour-hint-prompt.md (Phase C instructions)
202
+ - ../../references/contentful-cms-cms-guidelines/validation-prompt.md (Phase D instructions)
203
203
  - <APP_DIR>/src/project/components/<TypeName>.tsx (component source)
204
204
  - <APP_DIR>/generated/cms-discovery/field-list.json
205
205
  - <APP_DIR>/src/generated/cms-discovery/accepted-variants/{components|collections|externals}/<type-slug>.json
@@ -112,7 +112,7 @@ Example of a completed `## Fields & Schema` section:
112
112
  ### Step 3 — Generate component guidelines
113
113
 
114
114
  For each component in discovery order, run the full per-component pipeline defined in
115
- [`generate-component-guidelines.md`](../contentful-cms-cms-guidelines/generate-component-guidelines.md).
115
+ [`generate-component-guidelines.md`](../../references/contentful-cms-cms-guidelines/generate-component-guidelines.md).
116
116
 
117
117
  To find unfinished components:
118
118
  1. Fetch `<discoveryUrl>` and collect all `components[].name` values.
@@ -128,12 +128,12 @@ Run a Cursor subagent with this prompt, substituting `<COMPONENT_TYPE>` and `<AP
128
128
  Run the full guideline generation pipeline for <COMPONENT_TYPE>.
129
129
  Target app: <APP_DIR> (all paths relative to repo root / that directory).
130
130
 
131
- Read these pipeline docs first (sibling directory contentful-cms-cms-guidelines/):
132
- - ../contentful-cms-cms-guidelines/generate-component-guidelines.md (overall pipeline)
133
- - ../contentful-cms-cms-guidelines/variant-loop.md (Phase A: variant loop)
134
- - ../contentful-cms-cms-guidelines/generation-prompt.md (Phase B: generation)
135
- - ../contentful-cms-cms-guidelines/colour-hint-prompt.md (Phase C: colour hint)
136
- - ../contentful-cms-cms-guidelines/validation-prompt.md (Phase D: validation)
131
+ Read these pipeline docs first (references/contentful-cms-cms-guidelines/):
132
+ - ../../references/contentful-cms-cms-guidelines/generate-component-guidelines.md (overall pipeline)
133
+ - ../../references/contentful-cms-cms-guidelines/variant-loop.md (Phase A: variant loop)
134
+ - ../../references/contentful-cms-cms-guidelines/generation-prompt.md (Phase B: generation)
135
+ - ../../references/contentful-cms-cms-guidelines/colour-hint-prompt.md (Phase C: colour hint)
136
+ - ../../references/contentful-cms-cms-guidelines/validation-prompt.md (Phase D: validation)
137
137
 
138
138
  === Phase A: Variant loop ===
139
139
  Follow variant-loop.md.
@@ -282,7 +282,7 @@ These links:
282
282
 
283
283
  ## Pipeline reference
284
284
 
285
- All per-component pipeline docs live in the sibling directory [`contentful-cms-cms-guidelines/`](../contentful-cms-cms-guidelines/):
285
+ All per-component pipeline docs live in [`references/contentful-cms-cms-guidelines/`](../../references/contentful-cms-cms-guidelines/):
286
286
 
287
287
  | File | Purpose |
288
288
  |---|---|
@@ -338,4 +338,4 @@ Follow [`../contentful-cms-regenerate-editor-pack/SKILL.md`](../contentful-cms-r
338
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) |
339
339
  | Single-type regeneration (after code change) | [`../contentful-cms-generate-cms-guidelines/SKILL.md`](../contentful-cms-generate-cms-guidelines/SKILL.md) (mode: single) |
340
340
  | Regenerate hosted editor pack | [`../contentful-cms-regenerate-editor-pack/SKILL.md`](../contentful-cms-regenerate-editor-pack/SKILL.md) |
341
- | Per-component pipeline detail | [`generate-component-guidelines.md`](../contentful-cms-cms-guidelines/generate-component-guidelines.md) |
341
+ | Per-component pipeline detail | [`generate-component-guidelines.md`](../../references/contentful-cms-cms-guidelines/generate-component-guidelines.md) |
@@ -0,0 +1,104 @@
1
+ ---
2
+ name: screaming-frog-audit
3
+ description: "Crawl a marketing site with Screaming Frog, run native compare mode between crawls, and generate prioritized audit/compare reports via @se-studio/site-check and seo/screaming-frog.json."
4
+ ---
5
+
6
+ # Screaming Frog crawl, compare, and audit
7
+
8
+ Use when the user wants a Screaming Frog crawl, before/after deployment comparison, or SEO issue audit (404s, canonicals, structured data, content/metadata regressions).
9
+
10
+ **Requires:** Screaming Frog SEO Spider (licensed), **database storage mode** (default with `--save-crawl`).
11
+
12
+ **Config:** each app's `seo/screaming-frog.json` — no site-specific presets in core product.
13
+
14
+ ---
15
+
16
+ ## Deployment workflow (content push → code release)
17
+
18
+ Typical process: crawl after CMS/content is on preview, then crawl again after code ships, and confirm no significant content/metadata regressions.
19
+
20
+ ### 1. Baseline after content push
21
+
22
+ From the app directory:
23
+
24
+ ```bash
25
+ pnpm seo:screaming-frog:baseline
26
+ # equivalent:
27
+ site-check-screaming-frog crawl --tag content
28
+ ```
29
+
30
+ This crawls with the manifest profile, saves to SF's database, and records the database ID as baseline `content` in `docs/seo/sf-crawl-state.json`.
31
+
32
+ ### 2. Crawl after code release
33
+
34
+ ```bash
35
+ pnpm seo:screaming-frog:crawl
36
+ ```
37
+
38
+ Records the new crawl as `lastCrawl` in `sf-crawl-state.json`.
39
+
40
+ ### 3. Native compare (before vs after)
41
+
42
+ ```bash
43
+ pnpm seo:screaming-frog:compare
44
+ # equivalent:
45
+ site-check-screaming-frog compare --baseline content
46
+ ```
47
+
48
+ Uses Screaming Frog **`--crawl-comparison <current-db-id> <previous-db-id>`** (native Compare mode), exports Change Detection CSVs, and writes `docs/seo/<site>-screaming-frog-compare.md`.
49
+
50
+ Exit code 1 when title/meta/H1/word-count regressions are detected.
51
+
52
+ ### 4. Optional full issue audit
53
+
54
+ ```bash
55
+ pnpm seo:screaming-frog ~/spider/exports/<timestamp>
56
+ ```
57
+
58
+ Prioritized P0–P3 report from a single crawl export.
59
+
60
+ ---
61
+
62
+ ## Other commands
63
+
64
+ ```bash
65
+ site-check-screaming-frog profiles # show crawl profiles from manifest
66
+ site-check-screaming-frog list-crawls # SF database IDs for this siteHost
67
+ site-check-screaming-frog compare --latest # two most recent crawls (same host)
68
+ site-check-screaming-frog compare <current-id> <previous-id> # explicit IDs
69
+ ```
70
+
71
+ ---
72
+
73
+ ## What native compare checks
74
+
75
+ SF Change Detection exports (current vs previous on **matched URLs**):
76
+
77
+ - Page titles, meta descriptions, H1
78
+ - Word count (flags ≥50 words or ≥10% change)
79
+ - Indexability status
80
+ - Structured data type changes (via dedicated export tab)
81
+
82
+ Does **not** replace a full audit for new 404s — run `audit` on the post-release export for issue triage.
83
+
84
+ ---
85
+
86
+ ## Prerequisites
87
+
88
+ | Item | Notes |
89
+ |------|-------|
90
+ | SF GUI | Quit before CLI crawl/compare (shared DB lock) |
91
+ | Vercel preview | Bypass header in `.seospiderconfig`; `PREVIEW_SITE_URL` in `.env.local` |
92
+ | Same profile | Compare only meaningful when both crawls use the same URL/profile |
93
+ | Database storage | `--save-crawl` stores crawls; compare needs two DB IDs |
94
+
95
+ ---
96
+
97
+ ## Troubleshooting
98
+
99
+ | Problem | Fix |
100
+ |---------|-----|
101
+ | 0 matched URLs in compare | Different URLs/host between crawls — use same profile |
102
+ | No baseline | Run `crawl --tag content` first |
103
+ | GUI lock / FATAL | Quit Screaming Frog app |
104
+ | Wrong crawls picked | `list-crawls` then pass explicit database IDs |
@@ -0,0 +1,62 @@
1
+ # Screaming Frog site config
2
+
3
+ Each project owns **`seo/screaming-frog.json`** at the app root (or pass `--config` explicitly). The core product package has no built-in site presets.
4
+
5
+ ## Required fields
6
+
7
+ | Field | Purpose |
8
+ |-------|---------|
9
+ | `site` | Short site key (for logging) |
10
+ | `siteLabel` | Display name in audit report |
11
+ | `siteHost` | Host substring for filtering redirect samples |
12
+ | `defaultSiteUrl` | Fallback URL when crawl overview is missing |
13
+ | `outputMdName` | Audit markdown filename (written under `docs/seo/`) |
14
+ | `profiles` | Named crawl targets with `configFile` paths |
15
+
16
+ ## Optional fields
17
+
18
+ | Field | Purpose |
19
+ |-------|---------|
20
+ | `defaultProfile` | Profile used when `--profile` is omitted |
21
+ | `productionAuditDoc` | Cross-link in report to live HTML audit doc |
22
+ | `issueRuleOverrides` | Per-site P0–P3 rule tweaks (merged over base rules in `@se-studio/site-check`) |
23
+
24
+ ## Example manifest
25
+
26
+ ```json
27
+ {
28
+ "site": "brightline",
29
+ "siteLabel": "Brightline",
30
+ "siteHost": "hellobrightline.com",
31
+ "defaultSiteUrl": "https://www.hellobrightline.com/",
32
+ "outputMdName": "brightline-screaming-frog-audit.md",
33
+ "defaultProfile": "preview",
34
+ "issueRuleOverrides": [
35
+ {
36
+ "match": "directives_noindex",
37
+ "tier": "p2",
38
+ "category": "indexing",
39
+ "note": "Expected on Vercel preview."
40
+ }
41
+ ],
42
+ "profiles": {
43
+ "production": {
44
+ "label": "Production",
45
+ "url": "https://www.hellobrightline.com/",
46
+ "configFile": "~/spider/bl production.seospiderconfig"
47
+ },
48
+ "preview": {
49
+ "label": "Vercel preview",
50
+ "urlEnv": "PREVIEW_SITE_URL",
51
+ "configFile": "~/spider/bl dev.seospiderconfig"
52
+ },
53
+ "localhost": {
54
+ "label": "Local dev",
55
+ "url": "http://localhost:3010/",
56
+ "configFile": "~/spider/bl localhost.seospiderconfig"
57
+ }
58
+ }
59
+ }
60
+ ```
61
+
62
+ `.seospiderconfig` files live outside the repo (typically `~/spider/`). Preview configs should embed the Vercel bypass header.