@se-studio/project-build 1.0.123 → 1.0.124

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/project-build
2
2
 
3
+ ## 1.0.124
4
+
5
+ ### Patch Changes
6
+
7
+ - Bulk version bump: patch for all packages
8
+
3
9
  ## 1.0.123
4
10
 
5
11
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"sync-skills.d.ts","sourceRoot":"","sources":["../../src/management/sync-skills.ts"],"names":[],"mappings":"AAmCA,wBAAsB,UAAU,CAC9B,SAAS,GAAE,MAAsB;AACjC,uGAAuG;AACvG,WAAW,UAAQ,iBAsCpB"}
1
+ {"version":3,"file":"sync-skills.d.ts","sourceRoot":"","sources":["../../src/management/sync-skills.ts"],"names":[],"mappings":"AA+CA,wBAAsB,UAAU,CAC9B,SAAS,GAAE,MAAsB;AACjC,uGAAuG;AACvG,WAAW,UAAQ,iBAsEpB"}
@@ -17,6 +17,16 @@ async function copyDir(src, dest) {
17
17
  }
18
18
  }
19
19
  }
20
+ async function flattenGroup(srcGroupDir, prefix, targetDir) {
21
+ if (!fs.existsSync(srcGroupDir))
22
+ return;
23
+ const entries = await fs.promises.readdir(srcGroupDir, { withFileTypes: true });
24
+ for (const entry of entries) {
25
+ if (!entry.isDirectory())
26
+ continue;
27
+ await copyDir(path.join(srcGroupDir, entry.name), path.join(targetDir, `${prefix}-${entry.name}`));
28
+ }
29
+ }
20
30
  /**
21
31
  * Returns true when this script is running from inside a pnpm/npm workspace
22
32
  * (i.e. as a local package, not as an installed dependency from the registry).
@@ -56,7 +66,27 @@ ifInstalled = false) {
56
66
  console.error('This may be because the package was not built or installed correctly.');
57
67
  return;
58
68
  }
59
- await copyDir(skillsSourceDir, skillsTargetDir);
69
+ // Remove stale nested group dirs and flat aliases before rebuilding
70
+ const groups = ['contentful-cms', 'se-marketing-sites', 'site-workflows'];
71
+ try {
72
+ const existing = await fs.promises.readdir(skillsTargetDir, { withFileTypes: true });
73
+ for (const entry of existing) {
74
+ if (!entry.isDirectory())
75
+ continue;
76
+ const isNestedGroup = groups.includes(entry.name);
77
+ const isFlatAlias = groups.some((g) => entry.name.startsWith(`${g}-`));
78
+ if (isNestedGroup || isFlatAlias) {
79
+ await fs.promises.rm(path.join(skillsTargetDir, entry.name), { recursive: true });
80
+ }
81
+ }
82
+ }
83
+ catch {
84
+ // target dir may not exist yet — fine
85
+ }
86
+ // Flatten group dirs into <group>-<skill>/ at the top level
87
+ await flattenGroup(path.join(skillsSourceDir, 'contentful-cms'), 'contentful-cms', skillsTargetDir);
88
+ await flattenGroup(path.join(skillsSourceDir, 'se-marketing-sites'), 'se-marketing-sites', skillsTargetDir);
89
+ await flattenGroup(path.join(skillsSourceDir, 'site-workflows'), 'site-workflows', skillsTargetDir);
60
90
  console.log('Skills synced successfully.');
61
91
  }
62
92
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"sync-skills.js","sourceRoot":"","sources":["../../src/management/sync-skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-skills.js","sourceRoot":"","sources":["../../src/management/sync-skills.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@se-studio/project-build",
3
- "version": "1.0.123",
3
+ "version": "1.0.124",
4
4
  "description": "Build tools and management scripts for SE Studio projects",
5
5
  "repository": {
6
6
  "type": "git",
@@ -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](.agents/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.
21
+ 3. **Curate showcase mocks** — run the [curate-showcase-mocks skill](.agents/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](.agents/skills/contentful-cms/generate-cms-guidelines/SKILL.md).
30
+ 5. **Generate guidelines** — run the [Generate CMS guidelines skill](.agents/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 [`.agents/skills/contentful-cms/generate-cms-guidelines/SKILL.md`](.agents/skills/contentful-cms/generate-cms-guidelines/SKILL.md). It supports three modes:
38
+ Use the Cursor skill at [`.agents/skills/contentful-cms-generate-cms-guidelines/SKILL.md`](.agents/skills/contentful-cms-generate-cms-guidelines/SKILL.md). It supports three modes:
39
39
 
40
40
  | Mode | When to use |
41
41
  |---|---|
@@ -1,3 +1,8 @@
1
+ ---
2
+ name: "contentful-cms:core"
3
+ description: "Use cms-edit CLI to read/edit Contentful content (open → snapshot → read → set/rtf → diff → save)."
4
+ ---
5
+
1
6
  # Skill: contentful-cms CLI
2
7
 
3
8
  Use this skill when you need to read or edit content in Contentful CMS using the `cms-edit` CLI tool.
@@ -1,3 +1,8 @@
1
+ ---
2
+ name: "contentful-cms:generate-cms-guidelines"
3
+ description: "Generate, regenerate, or merge CMS guideline markdown fragments for any app in the monorepo."
4
+ ---
5
+
1
6
  # Skill: Generate CMS Guidelines
2
7
 
3
8
  Use this skill when you need to generate, regenerate, or merge CMS guideline markdown fragments for any app in the monorepo.
@@ -27,7 +32,7 @@ Guidelines are only meaningful when the showcase is populated with realistic dat
27
32
  pnpm --filter <appName> generate-showcase
28
33
  ```
29
34
  This writes `src/generated/showcase-examples.json` to the app.
30
- 3. **Curate showcase mocks:** Follow the [curate-showcase-mocks skill](.agents/skills/se-marketing-sites/curate-showcase-mocks/SKILL.md) to produce `showcase-mocks.json`.
35
+ 3. **Curate showcase mocks:** Follow the [curate-showcase-mocks skill](.agents/skills/se-marketing-sites-curate-showcase-mocks/SKILL.md) to produce `showcase-mocks.json`.
31
36
  4. **Generate field list:**
32
37
  ```bash
33
38
  # From the app directory:
@@ -1,3 +1,8 @@
1
+ ---
2
+ name: "contentful-cms:navigation"
3
+ description: "Create or edit navigation entries and nav items in Contentful via cms-edit."
4
+ ---
5
+
1
6
  # Skill: contentful-cms — Navigation
2
7
 
3
8
  Use this skill when creating or editing **navigation** entries and their items in Contentful via `cms-edit`.
@@ -1,3 +1,8 @@
1
+ ---
2
+ name: "contentful-cms:rich-text"
3
+ description: "Edit rich-text fields and insert embedded entries/assets via cms-edit."
4
+ ---
5
+
1
6
  # Skill: contentful-cms — Rich text and embeds
2
7
 
3
8
  Use this skill when editing **rich text** fields (body, additionalCopy) and inserting **embedded entries/assets** via `cms-edit`.
@@ -1,3 +1,8 @@
1
+ ---
2
+ name: "contentful-cms:screenshots"
3
+ description: "Capture screenshots of components, collections, pages or persons via cms-edit."
4
+ ---
5
+
1
6
  # Skill: contentful-cms — Screenshots
2
7
 
3
8
  Use this skill when capturing **screenshots** of components, collections, pages, or persons with `cms-edit`. **Requires agent-browser** to be installed.
@@ -1,3 +1,8 @@
1
+ ---
2
+ name: "contentful-cms:templates"
3
+ description: "Create or edit templates (preContent, postContent, menu, footer, colours) in Contentful via cms-edit."
4
+ ---
5
+
1
6
  # Skill: contentful-cms — Templates
2
7
 
3
8
  Use this skill when creating or editing **templates** (layout shells with preContent, postContent, menu, footer) in Contentful via `cms-edit`.
@@ -112,7 +112,7 @@ grep -E "CONTENTFUL_SPACE_ID|CONTENTFUL_ACCESS_TOKEN|OPENAI_API_KEY|ANTHROPIC_AP
112
112
  ### Step 2 — Curate showcase mocks
113
113
 
114
114
  Read and follow the **curate-showcase-mocks** skill:
115
- `.agents/skills/se-marketing-sites/curate-showcase-mocks/SKILL.md`
115
+ `.agents/skills/se-marketing-sites-curate-showcase-mocks/SKILL.md`
116
116
 
117
117
  This produces `src/generated/showcase-mocks.json` (committed) and
118
118
  `src/generated/cms-discovery/accepted-variants/{components|collections|externals}/<slug>.json` (often gitignored — **some apps commit them**; follow the app’s `.gitignore`).
@@ -150,7 +150,7 @@ Produces `generated/cms-discovery/field-list.json` (discovery API reads from thi
150
150
  ### Step 5 — Run generate-all-guidelines
151
151
 
152
152
  Read and follow the **generate-all-guidelines** skill:
153
- `.agents/skills/contentful-cms/generate-all-guidelines/SKILL.md`
153
+ `.agents/skills/contentful-cms-generate-all-guidelines/SKILL.md`
154
154
 
155
155
  Skip its prerequisite check (you already verified everything through Step 4).
156
156
  Run Phases 0–5 from that skill with **full regeneration rules**:
@@ -342,7 +342,7 @@ All under `<appDir>`:
342
342
 
343
343
  | Purpose | Skill |
344
344
  |---|---|
345
- | Curate showcase mocks (Step 2 of `fresh`) | `.agents/skills/se-marketing-sites/curate-showcase-mocks/SKILL.md` |
346
- | Full-site bulk generation (Step 4 of `fresh`: Phases 0–5) | `.agents/skills/contentful-cms/generate-all-guidelines/SKILL.md` |
347
- | Single-type regeneration (after code change) | `.agents/skills/contentful-cms/generate-cms-guidelines/SKILL.md` (mode: single) |
345
+ | Curate showcase mocks (Step 2 of `fresh`) | `.agents/skills/se-marketing-sites-curate-showcase-mocks/SKILL.md` |
346
+ | Full-site bulk generation (Step 4 of `fresh`: Phases 0–5) | `.agents/skills/contentful-cms-generate-all-guidelines/SKILL.md` |
347
+ | Single-type regeneration (after code change) | `.agents/skills/contentful-cms-generate-cms-guidelines/SKILL.md` (mode: single) |
348
348
  | Per-component pipeline detail | `packages/contentful-cms/skills/cms-guidelines/generate-component-guidelines.md` |