@se-studio/skills 1.6.0 → 1.6.2
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 +12 -0
- package/package.json +1 -1
- package/references/agent-session/customer-agents-block.md +7 -3
- package/references/agent-session/manifest.template.yaml +5 -2
- package/references/agent-session/projects.registry.json +22 -7
- package/references/contentful-cms-editor-playbooks/examples/se-case-study-om1-shaped.md +2 -0
- package/references/contentful-cms-editor-playbooks/examples/se-om1-case-study-brief.docx +0 -0
- package/references/contentful-cms-editor-playbooks/examples/se-om1-case-study-brief.md +62 -0
- package/references/deployment-smoke-feature-branch-skip/README.md +3 -3
- package/references/deps-update/projects.registry.json +8 -6
- package/references/lockfile-sync/README.md +1 -1
- package/skills/se-marketing-sites-curate-showcase-mocks/SKILL.md +10 -3
- package/skills/se-marketing-sites-smoke-test-setup/SKILL.md +1 -2
- package/skills/site-workflows-agent-session/SKILL.md +62 -32
- package/skills/site-workflows-deps-update/SKILL.md +8 -7
- package/skills/site-workflows-new-project/SKILL.md +3 -3
- package/skills/site-workflows-stale-files-cleanup/SKILL.md +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @se-studio/skills
|
|
2
2
|
|
|
3
|
+
## 1.6.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 928562f: CMS showcase: controls closed by default (`?controls=true`), map control keys to usedFields, string mock body → rich text, placeholder visuals, iframe height shrink/caps, External video for Vimeo/YouTube mock URLs, `showcaseLayout` registration + fixed preview frames, and helpers `isCmsShowcase` / `articlesFromShowcaseContents` / `peopleFromShowcaseContents` for related-content collections. Skills: curate-showcase-mocks video URL and no-LLM notes.
|
|
8
|
+
|
|
9
|
+
## 1.6.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Add SE OM1 example case-study brief (markdown + Word) for package-intake training.
|
|
14
|
+
|
|
3
15
|
## 1.6.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
package/package.json
CHANGED
|
@@ -7,7 +7,8 @@ Default mode for this repo: **site-first**.
|
|
|
7
7
|
### Branch policy
|
|
8
8
|
|
|
9
9
|
- Agents may commit and push **`develop`** and **`feature/*`** only.
|
|
10
|
-
- **Never** push to `main`, `master`, or production — human-only.
|
|
10
|
+
- **Never** push to `main`, `master`, `production`, or any production branch — **human-only** for all customer sites.
|
|
11
|
+
- Do **not** ship from a production checkout (e.g. HSD `~/source/customers/hopskipdrive/production-hsd-website`). Use the develop checkout only.
|
|
11
12
|
- Prefer **draft PRs** to `develop` over direct pushes when `gh` is available.
|
|
12
13
|
|
|
13
14
|
### Core vs customer placement
|
|
@@ -46,10 +47,13 @@ Never hand-edit `package.json` dependency versions.
|
|
|
46
47
|
### Parallel features
|
|
47
48
|
|
|
48
49
|
- One feature = one `feature/<scope>/<slug>` branch
|
|
49
|
-
-
|
|
50
|
+
- **Git worktree required** for all feature work — do not implement on the primary `develop` checkout
|
|
51
|
+
- Path: registry `worktreesRoot` / `<feature-slug>` (see se-core-product `packages/skills/references/agent-session/projects.registry.json`)
|
|
52
|
+
- Create: `git worktree add <worktreesRoot>/<feature-slug> -b feature/<scope>/<slug> origin/develop`
|
|
53
|
+
- Manifest must set `worktree:`; opt out only if the user says “work in place” / “no worktree” (`worktree_opt_out: true`)
|
|
50
54
|
- CMS edits: `--session <feature-slug>` (isolate cms-edit sessions)
|
|
51
55
|
- Track in-flight work: manifest at `~/source/se/se-core-product/work/active/<feature>.yaml` (or `work/active/` in this repo if core checkout unavailable)
|
|
52
56
|
|
|
53
57
|
### Production handoff
|
|
54
58
|
|
|
55
|
-
When ready for production, agents **stop** and deliver a handoff note — they do not merge to `main
|
|
59
|
+
When ready for production, agents **stop** and deliver a handoff note — they do not merge to `main` / `production` or promote Vercel/Netlify. Production promotion is always **human-only**. See skill Step 8.
|
|
@@ -6,7 +6,10 @@ mode: site-first # core-first | site-first
|
|
|
6
6
|
project_key: om1
|
|
7
7
|
primary_repo: ~/source/customers/om1/om1-website
|
|
8
8
|
branch: feature/om1/my-feature-slug
|
|
9
|
-
|
|
9
|
+
# REQUIRED for feature/* work — path under registry worktreesRoot (e.g. ~/source/customers/om1/worktrees/my-feature-slug).
|
|
10
|
+
# null only when user explicitly opts out of worktrees in this conversation (record worktree_opt_out: true).
|
|
11
|
+
worktree: ~/source/customers/om1/worktrees/my-feature-slug
|
|
12
|
+
worktree_opt_out: false
|
|
10
13
|
integration_branch: develop
|
|
11
14
|
|
|
12
15
|
related_repos:
|
|
@@ -31,4 +34,4 @@ updated_at: 2026-07-05
|
|
|
31
34
|
|
|
32
35
|
validation: []
|
|
33
36
|
|
|
34
|
-
handoff: null
|
|
37
|
+
handoff: null
|
|
@@ -5,11 +5,17 @@
|
|
|
5
5
|
"customer": "develop"
|
|
6
6
|
},
|
|
7
7
|
"branchPattern": "feature/<scope>/<short-slug>",
|
|
8
|
+
"worktrees": {
|
|
9
|
+
"requiredForFeatureBranches": true,
|
|
10
|
+
"pathPattern": "<worktreesRoot>/<feature-slug>",
|
|
11
|
+
"notes": "Feature work (feature/*) must use a git worktree under the project's worktreesRoot. Primary checkouts stay on integration branches only. Opt out only if the user explicitly says work in place / no worktree in the current conversation."
|
|
12
|
+
},
|
|
8
13
|
"projects": [
|
|
9
14
|
{
|
|
10
15
|
"key": "se-core-product",
|
|
11
16
|
"displayName": "SE Core Product",
|
|
12
17
|
"path": "~/source/se/se-core-product",
|
|
18
|
+
"worktreesRoot": "~/source/se/worktrees",
|
|
13
19
|
"branch": "dev",
|
|
14
20
|
"type": "core",
|
|
15
21
|
"validate": "pnpm validate",
|
|
@@ -19,6 +25,7 @@
|
|
|
19
25
|
"key": "se2026",
|
|
20
26
|
"displayName": "SE Studio Site",
|
|
21
27
|
"path": "~/source/se/se-website-2026",
|
|
28
|
+
"worktreesRoot": "~/source/se/worktrees",
|
|
22
29
|
"branch": "develop",
|
|
23
30
|
"type": "customer",
|
|
24
31
|
"contentfulSpaceId": "g0pw3n92bre6",
|
|
@@ -29,6 +36,7 @@
|
|
|
29
36
|
"key": "brightline",
|
|
30
37
|
"displayName": "Brightline Sites",
|
|
31
38
|
"path": "~/source/customers/brightline/brightline-sites",
|
|
39
|
+
"worktreesRoot": "~/source/customers/brightline/worktrees",
|
|
32
40
|
"branch": "develop",
|
|
33
41
|
"type": "customer-monorepo",
|
|
34
42
|
"sharedPackage": "@brightline/shared",
|
|
@@ -40,6 +48,7 @@
|
|
|
40
48
|
"key": "om1",
|
|
41
49
|
"displayName": "OM1 Website",
|
|
42
50
|
"path": "~/source/customers/om1/om1-website",
|
|
51
|
+
"worktreesRoot": "~/source/customers/om1/worktrees",
|
|
43
52
|
"branch": "develop",
|
|
44
53
|
"type": "customer",
|
|
45
54
|
"contentfulSpaceId": "ddhe5ahaolzf",
|
|
@@ -50,6 +59,7 @@
|
|
|
50
59
|
"key": "pointme",
|
|
51
60
|
"displayName": "PointMe Marketing Site",
|
|
52
61
|
"path": "~/source/customers/pointme/develop-marketing-site",
|
|
62
|
+
"worktreesRoot": "~/source/customers/pointme/worktrees",
|
|
53
63
|
"branch": "develop",
|
|
54
64
|
"type": "customer",
|
|
55
65
|
"contentfulSpaceId": "alwdzgjlz5qv",
|
|
@@ -60,6 +70,7 @@
|
|
|
60
70
|
"key": "pedestal",
|
|
61
71
|
"displayName": "Pedestal Sites",
|
|
62
72
|
"path": "~/source/customers/pedestal/pedestal-sites",
|
|
73
|
+
"worktreesRoot": "~/source/customers/pedestal/worktrees",
|
|
63
74
|
"branch": "develop",
|
|
64
75
|
"type": "customer-monorepo",
|
|
65
76
|
"sharedPackage": "@pedestal/site-common",
|
|
@@ -68,14 +79,18 @@
|
|
|
68
79
|
"validate": "pnpm -r validate"
|
|
69
80
|
},
|
|
70
81
|
{
|
|
71
|
-
"key": "hsd
|
|
72
|
-
"displayName": "HopSkipDrive
|
|
73
|
-
"path": "~/source/customers/hopskipdrive/hsd-
|
|
74
|
-
"
|
|
82
|
+
"key": "hsd",
|
|
83
|
+
"displayName": "HopSkipDrive",
|
|
84
|
+
"path": "~/source/customers/hopskipdrive/develop-hsd-website",
|
|
85
|
+
"productionPath": "~/source/customers/hopskipdrive/production-hsd-website",
|
|
86
|
+
"worktreesRoot": "~/source/customers/hopskipdrive/worktrees",
|
|
87
|
+
"branch": "develop",
|
|
88
|
+
"productionBranch": "production",
|
|
75
89
|
"type": "customer",
|
|
76
|
-
"
|
|
77
|
-
"hostedMcp":
|
|
78
|
-
"validate": "pnpm validate"
|
|
90
|
+
"contentfulSpaceId": "gqa3p93n5wse",
|
|
91
|
+
"hostedMcp": "cms-edit-hsd",
|
|
92
|
+
"validate": "pnpm validate",
|
|
93
|
+
"notes": "Agents work only in path (develop) + feature worktrees under worktreesRoot. productionPath is human-only — never push production from agents."
|
|
79
94
|
}
|
|
80
95
|
]
|
|
81
96
|
}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
Synthetic package shaped like a real multi-block work port (Drive zip + Figma sequence + narrative). Names are illustrative.
|
|
6
6
|
|
|
7
|
+
**Full example copy brief:** [`se-om1-case-study-brief.md`](./se-om1-case-study-brief.md) / [`se-om1-case-study-brief.docx`](./se-om1-case-study-brief.docx) (also `~/Downloads/SE-OM1-case-study-brief-example.docx`).
|
|
8
|
+
|
|
7
9
|
## Scenario
|
|
8
10
|
|
|
9
11
|
> “Build a lab case study from this Drive folder and the Figma OM1 frame. Keep copy as written.”
|
|
Binary file
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# OM1 — Patient Finding & Outcomes Prediction
|
|
2
|
+
|
|
3
|
+
**Example brief** for agent training / source-readiness demos (not a live publish pack).
|
|
4
|
+
|
|
5
|
+
| Field | Value |
|
|
6
|
+
|-------|--------|
|
|
7
|
+
| Client | OM1 |
|
|
8
|
+
| Type | Case study (`work`) |
|
|
9
|
+
| Title | Patient Finding & Outcomes Prediction |
|
|
10
|
+
| Subtitle | OM1 |
|
|
11
|
+
| Slug | `om1/patient-finding-outcomes-prediction` (lab: `lab/om1/…`) |
|
|
12
|
+
| Description | Brand and website for OM1 — AI outcomes prediction on 350M+ patient records. Identity, digital system, and marketing platform built for life sciences. |
|
|
13
|
+
|
|
14
|
+
Word twin: `se-om1-case-study-brief.docx` (same folder). Also copied to `~/Downloads/SE-OM1-case-study-brief-example.docx` — upload to Drive → Open with Google Docs if you want a Doc.
|
|
15
|
+
|
|
16
|
+
## Summary (hero)
|
|
17
|
+
|
|
18
|
+
OM1 had been doing AI-driven healthcare outcomes long before the industry caught up. With a decade of innovation behind them, 10 patents and a foundation model trained on over a billion patient-years, they needed a brand and website that matched where they’d arrived. SE Studio delivered a complete rebrand and a new website: visual identity, logo system, colour palette, typography, photography direction and a fully redesigned digital presence.
|
|
19
|
+
|
|
20
|
+
## Origin
|
|
21
|
+
|
|
22
|
+
OM1 was built on a simple but consequential idea: that outcomes are what matter most in healthcare and the data to predict them already exists — it just hasn’t been properly unlocked yet. Since 2017, they’ve been quietly building an AI foundation model trained on the longitudinal records of over 350 million patients, and were the first to offer an API for individual and cohort outcomes prediction.
|
|
23
|
+
|
|
24
|
+
And so, their name encodes their mission: O for Outcomes. M for Measurement. 1 for the belief that better outcomes are the first step toward better healthcare.
|
|
25
|
+
|
|
26
|
+
## Challenge
|
|
27
|
+
|
|
28
|
+
The central challenge was capturing both OM1’s rigorous data system and its predictive intelligence without falling into generic AI design tropes.
|
|
29
|
+
|
|
30
|
+
## Solution — identity
|
|
31
|
+
|
|
32
|
+
The solution was a logomark featuring a tight, intentionally uneven cluster of dots that reads almost like a live plot, data field or patient population — paired with a deep navy wordmark that projects long-term institutional authority.
|
|
33
|
+
|
|
34
|
+
This dot language becomes a living texture across the digital experience; a subtle, shifting particle field running beneath every web page, symbolising structured intelligence emerging organically from data. As users scroll, the field shifts to simulate a live data environment, providing essential visual coherence across the site.
|
|
35
|
+
|
|
36
|
+
The colours and photography style further reinforce this positioning. Deep navy grounds the brand with seriousness and legitimacy, while the bright blues highlight the interactive elements and actions. Warmth is introduced through circular-cropped photography that humanises the science by focusing on specific clinicians, patients and treatments.
|
|
37
|
+
|
|
38
|
+
## Quote
|
|
39
|
+
|
|
40
|
+
> SE Studio delivered a brand and digital experience that truly reflects who OM1 is today. Through the redesign and launch of the new website, everything feels more cohesive for our brand.
|
|
41
|
+
|
|
42
|
+
— Rich, Founder at OM1
|
|
43
|
+
|
|
44
|
+
## Digital platform
|
|
45
|
+
|
|
46
|
+
To engage life sciences, providers and payers simultaneously, the website architecture bypasses generic brochure copy in favour of segmented user journeys — delivering distinct language and evidence relevant to specific goals — whether regulatory submission, screening or formulary design.
|
|
47
|
+
|
|
48
|
+
Since the launch, SE Studio expanded OM1’s website into a full-scale marketing platform that embeds this brand system directly into daily operations. The marketing team now manage campaigns independently via CMS-editable eBook engine, a custom PDF-to-HTML parser for long-form reports and native Hubspot forms with automated UTM attribution.
|
|
49
|
+
|
|
50
|
+
Beyond the human audience, the site was engineered to be equally legible to AI platforms. By embedding OM1’s Fin assistant, expanding markdown exports across listing hubs and deploying site-wide llms.txt surfaces, the site provided AI crawlers with a structured and transparent view of OM1’s knowledge base. Supported by comprehensive JSON-LD structured data and a 400+ page SEO metadata overhaul, this work evolves the site from a launch deliverable into an active platform — empowering OM1’s publishing workflow today while ensuring discoverability across the AI-driven web.
|
|
51
|
+
|
|
52
|
+
## Close
|
|
53
|
+
|
|
54
|
+
The brand system created by SE Studio brings a quiet authority to OM1’s digital presence, closing the gap between their market presence and its actual achievements. By grounding the brand in specific, real-world touchpoints — from the shifting dot patterns in digital to the precise, cropped photography — the new identity translates AI modelling into tangible medical outcomes. Their brand identity gives OM1 the communication tools they need for their next chapter of collaboration across the healthcare industry.
|
|
55
|
+
|
|
56
|
+
## Agent notes
|
|
57
|
+
|
|
58
|
+
1. `task-source-readiness-review` before create; soft-proof from Figma order.
|
|
59
|
+
2. Faithful copy only.
|
|
60
|
+
3. Separated only for true pairs; merge continuous prose when no art between.
|
|
61
|
+
4. Lab flags for experiments.
|
|
62
|
+
5. Case study rich text for multi-block work.
|
|
@@ -16,7 +16,7 @@ Vercel **Deployment Checks** wait for a GitHub status from the smoke workflow. O
|
|
|
16
16
|
| Repo type | Preview smoke ref | Production smoke ref |
|
|
17
17
|
|-----------|-------------------|----------------------|
|
|
18
18
|
| Most customer sites | `develop` | `main` |
|
|
19
|
-
| HopSkipDrive
|
|
19
|
+
| HopSkipDrive (`hsd`) | `develop` (`develop-hsd-website`) | `production` (`production-hsd-website`, human-only) |
|
|
20
20
|
| se-core-product apps | `dev` | `main` |
|
|
21
21
|
|
|
22
22
|
Use `client_payload.git.ref` (branch name, not `refs/heads/...` — verify per project in a test dispatch).
|
|
@@ -33,7 +33,7 @@ Feature-branch PRs also trigger cms-edit Vercel projects. Skip builds outside in
|
|
|
33
33
|
"ignoreCommand": "if [ \"$VERCEL_GIT_COMMIT_REF\" != \"develop\" ] && [ \"$VERCEL_GIT_COMMIT_REF\" != \"main\" ]; then exit 0; fi; git diff HEAD^ HEAD --quiet -- . ../ ../../pnpm-lock.yaml ../../pnpm-workspace.yaml ../../package.json || exit 1; exit 0"
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
Replace `develop` with your integration branch
|
|
36
|
+
Replace `develop` with your integration branch if the registry uses a different name.
|
|
37
37
|
|
|
38
38
|
## Rollout status
|
|
39
39
|
|
|
@@ -44,7 +44,7 @@ Replace `develop` with your integration branch (e.g. `extended-port`).
|
|
|
44
44
|
| om1-website | audit | audit |
|
|
45
45
|
| pedestal-sites | audit | audit |
|
|
46
46
|
| pointme | audit | audit |
|
|
47
|
-
| hsd
|
|
47
|
+
| hsd | audit | audit (align ignoreCommand with `develop`) |
|
|
48
48
|
|
|
49
49
|
Update this table when applying the pattern.
|
|
50
50
|
|
|
@@ -68,14 +68,16 @@
|
|
|
68
68
|
"hasPinOverrides": false
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
|
-
"key": "hsd
|
|
72
|
-
"displayName": "HopSkipDrive
|
|
73
|
-
"path": "~/source/customers/hopskipdrive/hsd-
|
|
74
|
-
"
|
|
75
|
-
"
|
|
71
|
+
"key": "hsd",
|
|
72
|
+
"displayName": "HopSkipDrive",
|
|
73
|
+
"path": "~/source/customers/hopskipdrive/develop-hsd-website",
|
|
74
|
+
"productionPath": "~/source/customers/hopskipdrive/production-hsd-website",
|
|
75
|
+
"branch": "develop",
|
|
76
|
+
"productionBranch": "production",
|
|
76
77
|
"validate": "pnpm validate",
|
|
77
78
|
"workspace": false,
|
|
78
|
-
"hasPinOverrides": false
|
|
79
|
+
"hasPinOverrides": false,
|
|
80
|
+
"notes": "Deps updates run on develop checkout only. Never push production branch; human promotes production-hsd-website."
|
|
79
81
|
}
|
|
80
82
|
]
|
|
81
83
|
}
|
|
@@ -50,6 +50,6 @@ Apply the full stack when touching deps or CI in each repo:
|
|
|
50
50
|
| om1-website | — | — | — | — |
|
|
51
51
|
| se-website-2026 | yes | yes | yes | yes |
|
|
52
52
|
| pointme | — | — | — | — |
|
|
53
|
-
| hsd-
|
|
53
|
+
| hsd (`develop-hsd-website`; prod human-only: `production-hsd-website`) | yes | yes (develop) | n/a | yes |
|
|
54
54
|
|
|
55
55
|
Update this table as repos adopt the pattern.
|
|
@@ -259,16 +259,22 @@ Use the LLM draft as the starting point and apply your corrections from Step 4.
|
|
|
259
259
|
|
|
260
260
|
**Rules for the output:**
|
|
261
261
|
- Set `curatedAt` to the current ISO timestamp
|
|
262
|
-
- Only include types that have real CMS data
|
|
262
|
+
- Only include types that have real CMS data **for this brand** (do not leave SE Studio leftovers in a customer `showcase-mocks.json`)
|
|
263
263
|
- For component mocks: include only fields present in the source data
|
|
264
|
-
- For collection mocks: always include `mock` and `cards`
|
|
264
|
+
- For collection mocks: always include `mock` and `cards` when the collection needs list content
|
|
265
265
|
- Rich Text body fields must be `{ "json": <Document> }` — copy as-is
|
|
266
266
|
- Visual fields must include `width`, `height`, AND `url` — never strip `url`
|
|
267
|
+
- **`visual.url` must be an image CDN URL** (e.g. `images.ctfassets.net`). **Do not** put `vimeo.com` / `youtube.com` page URLs in image visuals — either omit the type’s curated visual (let a site video mock handle embeds) or store video only for true video modules (core factory can map video hosts to External video)
|
|
267
268
|
- Include `widthPercent` when present on media/externalVideo entries
|
|
268
269
|
- Include `otherMedia` when present — copy the full array including `url` and `widthPercent`
|
|
269
270
|
- Do NOT invent or modify content — use the real data from the examples file
|
|
270
271
|
- Include `backgroundColour` and `textColour` where the source has them
|
|
271
272
|
- For cards: include ALL fields present in source, including `backgroundColour`, `textColour`, `links`
|
|
273
|
+
- For news/author collections that use `getRelatedArticles` / `getRelatedPeople`: ensure `cards` have real titles/headings (and visuals when available). Sites should use `articlesFromShowcaseContents` / `peopleFromShowcaseContents` from `@se-studio/core-ui` when fetch returns empty in showcase
|
|
274
|
+
|
|
275
|
+
### Step 2b — No LLM key (optional)
|
|
276
|
+
|
|
277
|
+
If `OPENAI_API_KEY` / `ANTHROPIC_API_KEY` is missing, skip Step 2 and pick the highest-`fieldCompleteness` example per type from `showcase-examples.json` (prefer examples with `visual.url` when the type uses media). Write `showcase-mocks.json` directly.
|
|
272
278
|
|
|
273
279
|
### Step 6 — Verify
|
|
274
280
|
|
|
@@ -276,7 +282,8 @@ After writing, briefly confirm:
|
|
|
276
282
|
- The file is valid JSON
|
|
277
283
|
- Component and collection counts look reasonable (non-zero)
|
|
278
284
|
- Key types (Hero, main collections) have entries
|
|
279
|
-
- Visual fields include `url` properties
|
|
285
|
+
- Visual fields include `url` properties that are **image** hosts (not player pages)
|
|
286
|
+
- Spot-check related collections in the browser (News Carousel, Authors Grid) — not only Feature Split
|
|
280
287
|
|
|
281
288
|
---
|
|
282
289
|
|
|
@@ -56,8 +56,7 @@ Example `package.json` entries:
|
|
|
56
56
|
|
|
57
57
|
**Vercel Deployment Check (live URL)** — GitHub Action on `vercel.deployment.ready` tests `client_payload.url` before production domains alias. Workflow must live on the repo **default branch**. Register the status `name` in Vercel → Settings → Build and Deployment → Deployment Checks.
|
|
58
58
|
|
|
59
|
-
**Feature branches must not run smoke** — limit the `smoke` job to integration preview (`develop` + `preview`) and production (`main` + `production`). Feature-branch previews still fire `repository_dispatch`; without a matching job, Vercel waits forever on "Waiting for checks". Add a `skip-smoke-outside-integration-branches` job that posts **success** for non-integration refs. Full rollout guide: [`references/deployment-smoke-feature-branch-skip/`](../../references/deployment-smoke-feature-branch-skip/README.md). Monorepos: one skip job per Vercel project workflow.
|
|
60
|
-
|
|
59
|
+
**Feature branches must not run smoke** — limit the `smoke` job to integration preview (`develop` + `preview`) and production (`main` / `production` + `production`). Feature-branch previews still fire `repository_dispatch`; without a matching job, Vercel waits forever on "Waiting for checks". Add a `skip-smoke-outside-integration-branches` job that posts **success** for non-integration refs. Full rollout guide: [`references/deployment-smoke-feature-branch-skip/`](../../references/deployment-smoke-feature-branch-skip/README.md). Monorepos: one skip job per Vercel project workflow. Sites whose production branch is not `main` (e.g. HSD `production`): adjust ref checks in both jobs.
|
|
61
60
|
Filter on `client_payload.environment == 'production'` when Deployment Checks target production only. Vercel also dispatches for preview and custom environments (`preview`, `develop`, etc.); skip those to avoid duplicate CI runs. Use `workflow_dispatch` without an environment filter for manual smoke against any URL.
|
|
62
61
|
|
|
63
62
|
```yaml
|
|
@@ -5,9 +5,9 @@ description: "Start and manage agent work sessions across se-core-product and cu
|
|
|
5
5
|
|
|
6
6
|
# Agent session workflow
|
|
7
7
|
|
|
8
|
-
Orchestrates **where** to work, **where code belongs**, and **how to isolate parallel features**.
|
|
8
|
+
Orchestrates **where** to work, **where code belongs**, and **how to isolate parallel features**. **Humans only** merge/promote to `main` / production (all customer sites + core) — agents stop at handoff.
|
|
9
9
|
|
|
10
|
-
**Registry:** [`packages/skills/references/agent-session/projects.registry.json`](../../references/agent-session/projects.registry.json) — repo paths, integration branches, hosted MCP keys.
|
|
10
|
+
**Registry:** [`packages/skills/references/agent-session/projects.registry.json`](../../references/agent-session/projects.registry.json) — repo paths, `worktreesRoot`, `productionPath` / `productionBranch`, integration branches, hosted MCP keys.
|
|
11
11
|
|
|
12
12
|
**Manifest template:** [`packages/skills/references/agent-session/manifest.template.yaml`](../../references/agent-session/manifest.template.yaml)
|
|
13
13
|
|
|
@@ -39,7 +39,7 @@ Collect or infer:
|
|
|
39
39
|
| `project_key` | Yes | From registry (`om1`, `se-core-product`, `pedestal`, …) |
|
|
40
40
|
| `primary_repo` | Yes | Absolute path from registry |
|
|
41
41
|
| `branch` | Yes | `feature/<scope>/<slug>` — see naming below |
|
|
42
|
-
| `worktree` |
|
|
42
|
+
| `worktree` | **Yes** (feature work) | Path under registry `worktreesRoot`/`<feature-slug>`. Required for `feature/*`. Null only with explicit user opt-out + `worktree_opt_out: true` |
|
|
43
43
|
|
|
44
44
|
**Default mode if unclear:** ask once. Site-specific UI/content → `site-first`. Package/framework/multi-site → `core-first`.
|
|
45
45
|
|
|
@@ -55,12 +55,14 @@ feature/<scope>/<short-slug>
|
|
|
55
55
|
| Customer site | `feature/om1/hero-redesign` |
|
|
56
56
|
| Customer monorepo shared | `feature/brightline/consent-v2` |
|
|
57
57
|
|
|
58
|
-
Integration branches (agents push feature branches here via PR or merge — **never
|
|
58
|
+
Integration branches (agents push feature branches here via PR or merge — **never production**):
|
|
59
59
|
|
|
60
|
-
| Repo type | Integration branch |
|
|
61
|
-
|
|
62
|
-
| `se-core-product` | `dev` |
|
|
63
|
-
| Customer sites | `develop` (or registry override
|
|
60
|
+
| Repo type | Integration branch | Production (human-only) |
|
|
61
|
+
|-----------|-------------------|-------------------------|
|
|
62
|
+
| `se-core-product` | `dev` | `main` |
|
|
63
|
+
| Customer sites | `develop` (or registry override) | Usually `main`; HSD uses branch **`production`** and checkout `productionPath` |
|
|
64
|
+
|
|
65
|
+
**Never** push, merge, or promote registry `productionBranch` / work in `productionPath`. Agent work uses `path` (develop checkout) only.
|
|
64
66
|
|
|
65
67
|
---
|
|
66
68
|
|
|
@@ -136,25 +138,52 @@ After the placement checklist, run the **refusal table** when the task involves
|
|
|
136
138
|
|
|
137
139
|
---
|
|
138
140
|
|
|
139
|
-
## Step 4 — Git isolation
|
|
141
|
+
## Step 4 — Git isolation (worktrees required)
|
|
142
|
+
|
|
143
|
+
**Required for all projects:** any work on a `feature/*` branch must run in a **git worktree**, not the primary `dev` / `develop` checkout. This applies to se-core-product and every customer site in the registry.
|
|
140
144
|
|
|
141
|
-
|
|
145
|
+
Primary checkouts (`path` / develop / dev) stay on the integration branch for fetch, deps, and short integration-only maintenance. Feature implementation always uses `worktreesRoot`.
|
|
146
|
+
|
|
147
|
+
### Create worktree (mandatory for feature/*)
|
|
142
148
|
|
|
143
149
|
```bash
|
|
144
|
-
cd <primary_repo>
|
|
150
|
+
cd <primary_repo> # registry path — develop/dev checkout
|
|
145
151
|
git fetch origin
|
|
146
|
-
|
|
152
|
+
mkdir -p <worktreesRoot> # from registry, e.g. ~/source/customers/hopskipdrive/worktrees
|
|
153
|
+
git worktree add <worktreesRoot>/<feature-slug> -b <branch> origin/<integration-branch>
|
|
154
|
+
cd <worktreesRoot>/<feature-slug>
|
|
147
155
|
```
|
|
148
156
|
|
|
149
|
-
|
|
157
|
+
| Project key | worktreesRoot |
|
|
158
|
+
|-------------|---------------|
|
|
159
|
+
| `se-core-product` | `~/source/se/worktrees` |
|
|
160
|
+
| `se2026` | `~/source/se/worktrees` |
|
|
161
|
+
| `brightline` | `~/source/customers/brightline/worktrees` |
|
|
162
|
+
| `om1` | `~/source/customers/om1/worktrees` |
|
|
163
|
+
| `pointme` | `~/source/customers/pointme/worktrees` |
|
|
164
|
+
| `pedestal` | `~/source/customers/pedestal/worktrees` |
|
|
165
|
+
| `hsd` | `~/source/customers/hopskipdrive/worktrees` |
|
|
166
|
+
|
|
167
|
+
**Manifest gate:** set `worktree:` to the worktree path before coding. Do all edits, installs, tests, and commits from that path. Do not leave the primary checkout on a feature branch.
|
|
168
|
+
|
|
169
|
+
### Gate — refuse primary-checkout feature work
|
|
150
170
|
|
|
151
|
-
|
|
171
|
+
If you are about to implement a feature and `worktree` is null without `worktree_opt_out: true`:
|
|
172
|
+
|
|
173
|
+
1. **Stop** — create the worktree (or ask the user to confirm opt-out)
|
|
174
|
+
2. Do not edit product code on the primary develop/dev checkout for a feature branch
|
|
175
|
+
|
|
176
|
+
### Opt-out (narrow)
|
|
177
|
+
|
|
178
|
+
Only when the user **explicitly** says work in place / no worktree **in the current conversation**:
|
|
152
179
|
|
|
153
180
|
```bash
|
|
154
|
-
|
|
181
|
+
cd <primary_repo>
|
|
182
|
+
git fetch origin
|
|
183
|
+
git checkout -b <branch> origin/<integration-branch>
|
|
155
184
|
```
|
|
156
185
|
|
|
157
|
-
|
|
186
|
+
Set `worktree: null` and `worktree_opt_out: true` in the manifest. Do not invent an opt-out.
|
|
158
187
|
|
|
159
188
|
### CMS parallel sessions
|
|
160
189
|
|
|
@@ -209,7 +238,7 @@ Agents may push to:
|
|
|
209
238
|
- `dev` / `develop` (via feature branch merge or direct if user prefers)
|
|
210
239
|
- `feature/*` branches
|
|
211
240
|
|
|
212
|
-
Agents must **never** push to `main`, `master`, or
|
|
241
|
+
Agents must **never** push to `main`, `master`, `production`, or any registry `productionBranch`. Agents must **never** ship from a registry `productionPath` (e.g. HSD `~/source/customers/hopskipdrive/production-hsd-website`).
|
|
213
242
|
|
|
214
243
|
**Preferred:** open a **draft PR** targeting the integration branch:
|
|
215
244
|
|
|
@@ -223,7 +252,7 @@ If `gh` is unavailable or user prefers direct push, push `feature/*` and note in
|
|
|
223
252
|
|
|
224
253
|
## Step 8 — Handoff (production-ready)
|
|
225
254
|
|
|
226
|
-
When work is ready for human review / production promotion, **stop** — do not merge to `main
|
|
255
|
+
When work is ready for human review / production promotion, **stop** — do not merge to `main`, `production`, or any production branch. **Production promotion is human-only** for core and every customer site.
|
|
227
256
|
|
|
228
257
|
1. Set manifest `status: ready_for_review`
|
|
229
258
|
2. Deliver handoff using template below
|
|
@@ -255,8 +284,9 @@ When work is ready for human review / production promotion, **stop** — do not
|
|
|
255
284
|
2. <customer pnpm update @se-studio/...>
|
|
256
285
|
3. <customer PR>
|
|
257
286
|
|
|
258
|
-
### Production
|
|
259
|
-
Ready for you to merge to `main` / promote Vercel.
|
|
287
|
+
### Production (human-only)
|
|
288
|
+
Ready for you to merge to production (`main` or site `productionBranch`) / promote Vercel.
|
|
289
|
+
Agent will not push production or use productionPath checkouts.
|
|
260
290
|
```
|
|
261
291
|
|
|
262
292
|
---
|
|
@@ -289,20 +319,20 @@ Feature: hero-redesign
|
|
|
289
319
|
Branch: feature/om1/hero-redesign
|
|
290
320
|
```
|
|
291
321
|
|
|
292
|
-
Agent must load this skill, write manifest, run placement checklist,
|
|
322
|
+
Agent must load this skill, write manifest (with `worktree` path), run placement checklist, create the worktree, then proceed.
|
|
293
323
|
|
|
294
324
|
---
|
|
295
325
|
|
|
296
326
|
## Quick reference — project keys
|
|
297
327
|
|
|
298
|
-
| key | Integration
|
|
299
|
-
|
|
300
|
-
| `se-core-product` | `dev` | core monorepo |
|
|
301
|
-
| `se2026` | `develop` | customer |
|
|
302
|
-
| `brightline` | `develop` | customer monorepo |
|
|
303
|
-
| `om1` | `develop` | customer |
|
|
304
|
-
| `pointme` | `develop` | customer |
|
|
305
|
-
| `pedestal` | `develop` | customer monorepo |
|
|
306
|
-
| `hsd-
|
|
307
|
-
|
|
308
|
-
Full paths
|
|
328
|
+
| key | Integration | Production (human-only) | Type |
|
|
329
|
+
|-----|-------------|-------------------------|------|
|
|
330
|
+
| `se-core-product` | `dev` | `main` | core monorepo |
|
|
331
|
+
| `se2026` | `develop` | `main` | customer |
|
|
332
|
+
| `brightline` | `develop` | `main` | customer monorepo |
|
|
333
|
+
| `om1` | `develop` | `main` | customer |
|
|
334
|
+
| `pointme` | `develop` | `main` | customer |
|
|
335
|
+
| `pedestal` | `develop` | `main` | customer monorepo |
|
|
336
|
+
| `hsd` | `develop` (`develop-hsd-website`) | `production` (`production-hsd-website`) | customer |
|
|
337
|
+
|
|
338
|
+
Full paths (`path`, `worktreesRoot`, `productionPath`), MCP keys: `projects.registry.json`.
|
|
@@ -11,7 +11,7 @@ Update npm dependencies to **latest** in se-core-product and consumer repos that
|
|
|
11
11
|
|
|
12
12
|
**Default:** Process **one repo per invocation**. At the end, summarize changes and offer the next project.
|
|
13
13
|
|
|
14
|
-
**Never:** push to `main`/`master
|
|
14
|
+
**Never:** push to `main`/`master`/`production` or any production branch; promote from production checkouts (e.g. HSD `production-hsd-website`); bump Next to 16; bump Node to 25+; use `pnpm patch` / `patchedDependencies` / `patches/`; bypass or remove `minimumReleaseAge`; **hand-edit `package.json` dependency versions** (use `pnpm update` instead). Production promotion is **human-only** for all customer sites.
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -51,11 +51,11 @@ Run that locally **before push** whenever `package.json`, lockfile, or overrides
|
|
|
51
51
|
| `om1` | OM1 Website | `develop` |
|
|
52
52
|
| `pointme` | PointMe Marketing Site | `develop` |
|
|
53
53
|
| `pedestal` | Pedestal Sites | `develop` |
|
|
54
|
-
| `hsd
|
|
54
|
+
| `hsd` | HopSkipDrive | `develop` |
|
|
55
55
|
|
|
56
56
|
User may name a key (`update deps in om1`) or ask to run through all projects sequentially.
|
|
57
57
|
|
|
58
|
-
**HSD
|
|
58
|
+
**HSD:** Agents update **only** `~/source/customers/hopskipdrive/develop-hsd-website` on `develop`. Production is human-only: branch `production`, checkout `~/source/customers/hopskipdrive/production-hsd-website` — never push or promote from there. Prefer targeted `@se-studio/*` bumps per `work/tracker.yaml` rollout before full `pnpm update -r --latest`.
|
|
59
59
|
|
|
60
60
|
---
|
|
61
61
|
|
|
@@ -69,9 +69,10 @@ pnpm -v # must be v11.x
|
|
|
69
69
|
In the target repo:
|
|
70
70
|
|
|
71
71
|
1. Confirm the path from the registry exists; abort if missing.
|
|
72
|
-
2. `
|
|
73
|
-
3.
|
|
74
|
-
4.
|
|
72
|
+
2. Use the **primary integration checkout** (`path` + `branch` from deps-update registry) — deps rollouts are integration-branch maintenance, not feature work. Do not create a feature worktree unless the user asked for a feature-branch deps experiment.
|
|
73
|
+
3. `git fetch origin && git checkout <branch> && git pull`
|
|
74
|
+
4. Working tree must be clean (or user explicitly approves stash).
|
|
75
|
+
5. Record `pnpm outdated -r` output for the commit summary.
|
|
75
76
|
|
|
76
77
|
---
|
|
77
78
|
|
|
@@ -206,7 +207,7 @@ git push origin <branch>
|
|
|
206
207
|
|
|
207
208
|
- se-core-product → `dev`
|
|
208
209
|
- All consumer repos → `develop`
|
|
209
|
-
- **Never** push to `main`/`master`
|
|
210
|
+
- **Never** push to `main`/`master`/`production` (or any production branch / production checkout)
|
|
210
211
|
|
|
211
212
|
---
|
|
212
213
|
|
|
@@ -99,7 +99,7 @@ Default mode for this repo: **site-first**.
|
|
|
99
99
|
### Branch policy
|
|
100
100
|
|
|
101
101
|
- Agents may commit and push **`develop`** and **`feature/*`** only.
|
|
102
|
-
- **Never** push to `main`, `master`, or production — human-only.
|
|
102
|
+
- **Never** push to `main`, `master`, `production`, or any production branch — human-only for all customer sites.
|
|
103
103
|
- Prefer **draft PRs** to `develop` over direct pushes when `gh` is available.
|
|
104
104
|
|
|
105
105
|
### Core vs customer placement
|
|
@@ -112,11 +112,11 @@ When work depends on a new `@se-studio/*` npm release: release from `se-core-pro
|
|
|
112
112
|
|
|
113
113
|
### Parallel features
|
|
114
114
|
|
|
115
|
-
One feature = one `feature/<scope>/<slug>` branch.
|
|
115
|
+
One feature = one `feature/<scope>/<slug>` branch. **Git worktree required** for feature work (registry `worktreesRoot`/`<feature-slug>`). CMS: `--session <feature-slug>`. Manifest: `~/source/se/se-core-product/work/active/<feature>.yaml` with `worktree:` set.
|
|
116
116
|
|
|
117
117
|
### Production handoff
|
|
118
118
|
|
|
119
|
-
Agents stop at handoff — they do not merge to `main
|
|
119
|
+
Agents stop at handoff — they do not merge to `main` / production or promote production deploys. Human-only. See skill `site-workflows-agent-session` Step 8.
|
|
120
120
|
|
|
121
121
|
## CMS editing (cms-edit)
|
|
122
122
|
|
|
@@ -19,7 +19,7 @@ Remove **dead weight** from an SE Studio site repo without changing product beha
|
|
|
19
19
|
|
|
20
20
|
**Default:** Plan mode first — present a classified audit table before deleting anything.
|
|
21
21
|
|
|
22
|
-
**Never:** push to `main`/`master
|
|
22
|
+
**Never:** push to `main`/`master`/`production` or promote production (human-only for all customer sites); delete `docs/cms-editor/` or committed `cms-edit/*/editor-pack/` without explicit user request; fix Dependabot alerts unless the user asks.
|
|
23
23
|
|
|
24
24
|
---
|
|
25
25
|
|
|
@@ -153,7 +153,7 @@ pnpm validate # or repo-specific validate from AGENTS.md
|
|
|
153
153
|
|
|
154
154
|
Commit on integration branch only. Suggested message: `chore: remove stale scripts, docs, and tooling`.
|
|
155
155
|
|
|
156
|
-
Hand off production promotion to the human — never push `main
|
|
156
|
+
Hand off production promotion to the human — never push `main` / `production` or use production checkouts to ship.
|
|
157
157
|
|
|
158
158
|
---
|
|
159
159
|
|