@se-studio/skills 1.7.4 → 1.7.6
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/cms-edit-prod-merge.md +3 -2
- package/references/agent-session/customer-agents-block.md +5 -3
- package/references/agent-session/customer-production-agents-block.md +17 -0
- package/references/agent-session/local-env.md +82 -0
- package/references/agent-session/production-merge.md +61 -0
- package/references/agent-session/projects.registry.json +22 -0
- package/references/deps-update/projects.registry.json +10 -0
- package/skills/contentful-cms-regenerate-editor-pack/SKILL.md +2 -2
- package/skills/site-workflows-agent-session/SKILL.md +15 -8
- package/skills/site-workflows-deps-update/SKILL.md +2 -2
- 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.7.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Customer production merges require an explicit human ask and a second confirmation (`production-merge.md`). se-core-product `main` stays never-agent.
|
|
8
|
+
|
|
9
|
+
## 1.7.5
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 6b53e51: Document worktree `.env.local` handling: canonical store at `~/source/local-env`, no-clobber seed after `git worktree add`, 1Password as backup only (never overwrite). Seed catalogs the store, never writes through dest symlinks, and is invoked with `pnpm --dir ~/source/se/se-core-product`.
|
|
14
|
+
|
|
3
15
|
## 1.7.4
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
# cms-edit-only production merge
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Extra path allowlist for hosted cms-edit rollouts. **Still requires** the human-ask + confirm gate in [`production-merge.md`](./production-merge.md). Marketing source, core `main`, and Vercel CLI deploys are not exempt from that confirm.
|
|
4
4
|
|
|
5
5
|
## When it applies
|
|
6
6
|
|
|
7
7
|
All of the following must be true:
|
|
8
8
|
|
|
9
|
+
0. [`production-merge.md`](./production-merge.md) passed (explicit ask **and** a second confirmation after restating the production merge).
|
|
9
10
|
1. The user asked to ship **hosted cms-edit** (host package bump, editor-pack-only, or continue a cms-edit host rollout).
|
|
10
11
|
2. Any required `@se-studio/contentful-cms` version is **already on npm**.
|
|
11
12
|
3. The merge is **customer** `develop` → that site’s production branch (`main`, HSD **`production`**). Never `se-core-product` `main`.
|
|
@@ -32,4 +33,4 @@ Do **not** use HSD `production-hsd-website` (or any `productionPath`) as the wor
|
|
|
32
33
|
|
|
33
34
|
Reconnect Grok `/mcps` → `i` is an editor step if OAuth tokens were dead — not a substitute for the health check.
|
|
34
35
|
|
|
35
|
-
If the diff is not cms-edit-only, **
|
|
36
|
+
If the diff is not cms-edit-only, still merge **only** if [`production-merge.md`](./production-merge.md) passed (human ask + confirm). Do not skip confirmation because the diff is small.
|
|
@@ -10,8 +10,9 @@ Default mode for this repo: **site-first**.
|
|
|
10
10
|
|
|
11
11
|
### Branch policy
|
|
12
12
|
|
|
13
|
-
- Agents may commit and push **`develop`** and **`feature/*`**.
|
|
14
|
-
-
|
|
13
|
+
- Agents may commit and push **`develop`** and **`feature/*`**.
|
|
14
|
+
- Customer production (`main`, HSD `production`) **only** after the human-ask + confirm gate (`production-merge.md` in `@se-studio/skills`). The human must ask to merge integration → production in this conversation; the agent must restate site, branches, and that it publishes production; then wait for a second **yes**.
|
|
15
|
+
- **Never** treat “deploy”, “ship it”, or “rollout” as permission. **Never** ship from a production checkout (e.g. HSD `production-hsd-website`). Use the develop checkout only. **Never** merge se-core-product `main`.
|
|
15
16
|
- Prefer **draft PRs** to `develop` over direct pushes when `gh` is available.
|
|
16
17
|
|
|
17
18
|
### Core vs customer placement
|
|
@@ -53,10 +54,11 @@ Never hand-edit `package.json` dependency versions.
|
|
|
53
54
|
- **Git worktree required** for all feature work — do not implement on the primary `develop` checkout
|
|
54
55
|
- Path: registry `worktreesRoot` / `<feature-slug>` (see se-core-product `packages/skills/references/agent-session/projects.registry.json`)
|
|
55
56
|
- Create: `git worktree add <worktreesRoot>/<feature-slug> -b feature/<scope>/<slug> origin/develop`
|
|
57
|
+
- Then seed env: `pnpm --dir ~/source/se/se-core-product local-env seed --project <key>` (no-clobber copy of `.env.local`; never invent a stub or symlink at develop)
|
|
56
58
|
- Manifest must set `worktree:`; opt out only if the user says “work in place” / “no worktree” (`worktree_opt_out: true`)
|
|
57
59
|
- CMS edits: `--session <feature-slug>` (isolate cms-edit sessions)
|
|
58
60
|
- 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)
|
|
59
61
|
|
|
60
62
|
### Production handoff
|
|
61
63
|
|
|
62
|
-
When **marketing** work is ready, agents **stop** and hand off.
|
|
64
|
+
When **marketing** work is ready, agents **stop** and hand off. Merge `develop` → production only after ask + confirm (`production-merge.md`). One site at a time. No `vercel deploy`. cms-edit host extra gate: `cms-edit-prod-merge.md`.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# No push to `main` or production
|
|
2
|
+
|
|
3
|
+
Do **not** merge or push production unless a human **asked** in this conversation to merge the integration branch to production **and** you **confirmed** that intent before merging. Canonical gate: skill `site-workflows-agent-session` → `production-merge.md` (in `@se-studio/skills`).
|
|
4
|
+
|
|
5
|
+
Agents must **not**:
|
|
6
|
+
|
|
7
|
+
- Run `git push origin main`, `git push origin master`, or push to any production remote branch **without** that ask + confirm
|
|
8
|
+
- Merge because a workflow “must live on default branch”, CI “needs” `main`, or a production PR already exists
|
|
9
|
+
- Treat “deploy”, “roll out”, or “ship it” as permission
|
|
10
|
+
- Treat the first “merge develop to main” as enough — restate **site**, **branches**, and that it **publishes production**, then wait for a second **yes**
|
|
11
|
+
- Use a production checkout or `vercel deploy` / `pnpm cms-edit:deploy`
|
|
12
|
+
|
|
13
|
+
Agents must:
|
|
14
|
+
|
|
15
|
+
- Commit and push only to **`develop`** (or another named integration branch) and `feature/*`
|
|
16
|
+
- Stop when work is ready for production unless the confirm gate passed
|
|
17
|
+
- Merge **one repo at a time** via `gh` from the develop checkout after confirmation
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Local env files and git worktrees
|
|
2
|
+
|
|
3
|
+
Gitignored `.env.local` files do **not** copy into a new worktree. Agents then invent a stub file (two keys, missing Contentful, etc.) or symlink at develop and overwrite the canonical secrets.
|
|
4
|
+
|
|
5
|
+
**Canonical doc** for this workflow. Also indexed from `docs/WORKFLOW.md`, `docs/DEVELOPMENT.md`, `AGENTS.md`, and skill `site-workflows-agent-session`.
|
|
6
|
+
|
|
7
|
+
## Layout
|
|
8
|
+
|
|
9
|
+
| Layer | Path | Role |
|
|
10
|
+
|-------|------|------|
|
|
11
|
+
| Canonical | `~/source/local-env/<project-key>/<relative-path>` | Source of truth on disk. Not a git repo. |
|
|
12
|
+
| Develop checkout | registry `path` | Always-on integration branch. `init` copies from here into the store. |
|
|
13
|
+
| Feature worktrees | `worktreesRoot/<slug>` | Independent **copies**. Never a symlink at develop or the store. |
|
|
14
|
+
| 1Password | documents titled `local-env/<project-key>/<relative-path>` | Backup only. Create if missing. Never overwrite an existing item or checkout file. |
|
|
15
|
+
|
|
16
|
+
`localEnvRoot` is set on `projects.registry.json` (`~/source/local-env`).
|
|
17
|
+
|
|
18
|
+
Tracked files are whatever `.env.local` / `.env.*.local` exist on the **develop** checkout (`apps/*/.env.local` and `cms-edit/host/.env.local` included). Nested `experiments/` trees are ignored.
|
|
19
|
+
|
|
20
|
+
The live Highlander repo (`highlander-health-website`, not the 2026 port) is `localEnvExtras` key `highlander-live` in the registry (not the `highlander` 2026 project). `pnpm local-env` catalogs it with the other sites.
|
|
21
|
+
|
|
22
|
+
## Commands
|
|
23
|
+
|
|
24
|
+
The script lives in **se-core-product**. From that repo, `pnpm local-env …` is enough. From a customer worktree, always pass `--dir`:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
pnpm --dir ~/source/se/se-core-product local-env audit
|
|
28
|
+
pnpm --dir ~/source/se/se-core-product local-env init
|
|
29
|
+
pnpm --dir ~/source/se/se-core-product local-env seed
|
|
30
|
+
pnpm --dir ~/source/se/se-core-product local-env seed --repair-subset --replace-symlinks
|
|
31
|
+
pnpm --dir ~/source/se/se-core-product local-env bootstrap
|
|
32
|
+
pnpm --dir ~/source/se/se-core-product local-env backup
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
`--project pointme` limits to one registry key. `--dry-run` prints actions.
|
|
36
|
+
|
|
37
|
+
### After `git worktree add`
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
pnpm --dir ~/source/se/se-core-product local-env seed --project <key>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
If the worktree file is a **subset** of canonical keys (typical stub), repair:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
pnpm --dir ~/source/se/se-core-product local-env seed --project <key> --repair-subset --replace-symlinks
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Subset repair copies the old file to `~/source/local-env/.bak/<project>/<relative-path>` (not next to the checkout file), then writes canonical. It does **not** touch a file that has extra keys (diverged). Production checkouts (`productionPath`) are audited only — never seeded. Default `seed` prints leftover `symlink` / `stub` / `subset` skips so a develop-symlink is not silent.
|
|
50
|
+
|
|
51
|
+
### First-time machine (or after cloning develop)
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
pnpm --dir ~/source/se/se-core-product local-env bootstrap
|
|
55
|
+
pnpm --dir ~/source/se/se-core-product local-env backup
|
|
56
|
+
pnpm --dir ~/source/se/se-core-product local-env audit
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Rotate a token
|
|
60
|
+
|
|
61
|
+
1. Edit the file in `~/source/local-env/<project>/…` (or edit develop, then `pnpm local-env init` — init will not overwrite an existing store file, so delete or rename the store file first if you mean to refresh it).
|
|
62
|
+
2. `pnpm --dir ~/source/se/se-core-product local-env seed --project <key> --repair-subset` for worktrees that are a subset of the new key set.
|
|
63
|
+
3. `pnpm --dir ~/source/se/se-core-product local-env backup` only creates a **new** 1Password title if missing. To refresh the backup, create a new document or edit the existing one in 1Password by hand — the command will not overwrite.
|
|
64
|
+
|
|
65
|
+
## Agent rules
|
|
66
|
+
|
|
67
|
+
1. After creating a worktree, seed env. Do not hand-write `.env.local`.
|
|
68
|
+
2. If `.env.local` is missing, copy from `~/source/local-env/...` (or run `seed`). Never generate a two-key stub.
|
|
69
|
+
3. If a file exists, leave it. Report `audit` status (`stub` / `subset` / `diverged` / `symlink`) instead of overwriting unless the user asks for `--repair-subset`.
|
|
70
|
+
4. Do not symlink worktree env at develop or `~/source/local-env`.
|
|
71
|
+
5. Do not `op inject` or `op document get` onto an existing checkout file. Restore to a temp path, `diff`, then copy only if the user confirms.
|
|
72
|
+
6. `git worktree remove` deletes that tree’s copy. Canonical + 1Password remain.
|
|
73
|
+
|
|
74
|
+
## Restore from 1Password (manual)
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
op document get --vault Private "local-env/pointme/.env.local" --out-file /tmp/pointme.env.local
|
|
78
|
+
diff -u ~/source/local-env/pointme/.env.local /tmp/pointme.env.local
|
|
79
|
+
# copy only if you intend to replace canonical, then seed
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Older documents titled `Point.me env.local` (and similar, ~2026-03) are **stale** (fewer keys than develop). Do not restore those onto disk.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Customer production merge (human ask + confirm)
|
|
2
|
+
|
|
3
|
+
Agents may merge a **customer** integration branch to that site’s production branch **only** when this gate passes. The point is **no automatic or accidental publishing**.
|
|
4
|
+
|
|
5
|
+
This is **not** a silent exception. Two human messages in **this conversation** are required: an explicit merge request, then a separate confirmation after the agent restates what will publish.
|
|
6
|
+
|
|
7
|
+
**se-core-product `main` stays never-agent.** Package releases go `dev` → CI. Do not merge core `main`.
|
|
8
|
+
|
|
9
|
+
Canonical skill: `site-workflows-agent-session`. Customer `AGENTS.md` copies the short form from `customer-agents-block.md`.
|
|
10
|
+
|
|
11
|
+
## Production branches
|
|
12
|
+
|
|
13
|
+
| Repo | Integration | Production (Git-connected Vercel) |
|
|
14
|
+
|------|-------------|-----------------------------------|
|
|
15
|
+
| Customer marketing sites | `develop` (or registry override, e.g. Highlander `port-2026`) | usually `main` |
|
|
16
|
+
| HopSkipDrive | `develop` | **`production`** |
|
|
17
|
+
|
|
18
|
+
Never ship from a registry `productionPath` checkout. Merge with `gh` from the **develop** checkout.
|
|
19
|
+
|
|
20
|
+
## Gate (all must hold)
|
|
21
|
+
|
|
22
|
+
1. **Ask.** In this conversation the human named the **site or repo** and asked to merge **integration → production** (e.g. “merge develop to main”, “merge develop into production for OM1”).
|
|
23
|
+
2. **Confirm.** The agent **stops**, restates the exact merge, and waits for a **second** affirmative reply (`yes` / `confirm` / `do it`) to **that** restatement. The original ask is not confirmation.
|
|
24
|
+
3. **One repo.** Merge one customer repo at a time. Do not fan out “all sites to production”.
|
|
25
|
+
4. **Git only.** `gh pr merge` or equivalent to `origin/<productionBranch>`. **Never** `vercel deploy`, `pnpm cms-edit:deploy`, or Netlify promote.
|
|
26
|
+
|
|
27
|
+
### Restatement (required before merge)
|
|
28
|
+
|
|
29
|
+
Send this shape, filled in, then wait:
|
|
30
|
+
|
|
31
|
+
> You asked to merge **\<display name\>** (`\<repo\>`)
|
|
32
|
+
> `origin/<integration>` → `origin/<productionBranch>`.
|
|
33
|
+
> That publishes **production** (Git-connected Vercel).
|
|
34
|
+
> I will not merge until you reply **yes** to this message.
|
|
35
|
+
|
|
36
|
+
If they say no, stop. If they name a different repo, restate again.
|
|
37
|
+
|
|
38
|
+
## Not permission (do not merge)
|
|
39
|
+
|
|
40
|
+
These are **not** an ask, and never count as confirmation:
|
|
41
|
+
|
|
42
|
+
- “ship it”, “deploy”, “rollout”, “publish”, “go live”, “it’s ready”
|
|
43
|
+
- Opening or merging a PR to `develop`
|
|
44
|
+
- A production PR already existing
|
|
45
|
+
- “when Vercel is green, merge it” (pre-authorisation)
|
|
46
|
+
- Scheduler / previous-session leftovers
|
|
47
|
+
- CI needing `main`, default-branch workflows
|
|
48
|
+
- cms-edit host “must be on production” without an explicit merge request
|
|
49
|
+
|
|
50
|
+
## After a confirmed merge
|
|
51
|
+
|
|
52
|
+
- Wait for that site’s marketing (and cms-edit host, if Git-connected) Vercel **production** Ready.
|
|
53
|
+
- Do not merge a second site until the first is Ready or the human asks again and confirms again.
|
|
54
|
+
|
|
55
|
+
## cms-edit-only extra gate
|
|
56
|
+
|
|
57
|
+
Hosted cms-edit rollouts still use [`cms-edit-prod-merge.md`](./cms-edit-prod-merge.md) **in addition** to this confirm gate (path allowlist, npm version, health check). Confirmation is required there too.
|
|
58
|
+
|
|
59
|
+
## If the gate fails
|
|
60
|
+
|
|
61
|
+
Do **not** merge. Open a PR targeting production if useful, hand off, and wait.
|
|
@@ -10,6 +10,16 @@
|
|
|
10
10
|
"pathPattern": "<worktreesRoot>/<feature-slug>",
|
|
11
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
12
|
},
|
|
13
|
+
"localEnvRoot": "~/source/local-env",
|
|
14
|
+
"localEnvExtras": [
|
|
15
|
+
{
|
|
16
|
+
"key": "highlander-live",
|
|
17
|
+
"displayName": "Highlander Health (live Bond/Netlify)",
|
|
18
|
+
"path": "~/source/customers/highlander/highlander-health-website",
|
|
19
|
+
"worktreesRoot": "~/source/customers/highlander/worktrees",
|
|
20
|
+
"notes": "Live highlander-health-website, not the 2026 port. local-env only; agents still use registry key highlander for 2026 feature work."
|
|
21
|
+
}
|
|
22
|
+
],
|
|
13
23
|
"projects": [
|
|
14
24
|
{
|
|
15
25
|
"key": "se-core-product",
|
|
@@ -91,6 +101,18 @@
|
|
|
91
101
|
"hostedMcp": "cms-edit-hsd",
|
|
92
102
|
"validate": "pnpm validate",
|
|
93
103
|
"notes": "Agents work only in path (develop) + feature worktrees under worktreesRoot. productionPath is human-only — never push production from agents."
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"key": "highlander",
|
|
107
|
+
"displayName": "Highlander Health",
|
|
108
|
+
"path": "~/source/customers/highlander/highlander-health-website-2026",
|
|
109
|
+
"worktreesRoot": "~/source/customers/highlander/worktrees",
|
|
110
|
+
"branch": "port-2026",
|
|
111
|
+
"type": "customer",
|
|
112
|
+
"contentfulSpaceId": "bkkox68g99rn",
|
|
113
|
+
"hostedMcp": "cms-edit-highlander",
|
|
114
|
+
"validate": "pnpm check && pnpm type-check && pnpm validate:routes",
|
|
115
|
+
"notes": "New 2026 stack. Integration branch is port-2026 until go-live, then develop/main. Live Bond/Netlify site remains highlander-health-website. cms-edit DNS/OAuth for highlander.content.se.studio is a human gate."
|
|
94
116
|
}
|
|
95
117
|
]
|
|
96
118
|
}
|
|
@@ -78,6 +78,16 @@
|
|
|
78
78
|
"workspace": false,
|
|
79
79
|
"hasPinOverrides": false,
|
|
80
80
|
"notes": "Deps updates run on develop checkout only. Never push production branch; human promotes production-hsd-website."
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"key": "highlander",
|
|
84
|
+
"displayName": "Highlander Health",
|
|
85
|
+
"path": "~/source/customers/highlander/highlander-health-website-2026",
|
|
86
|
+
"branch": "port-2026",
|
|
87
|
+
"validate": "pnpm check && pnpm type-check && pnpm validate:routes",
|
|
88
|
+
"workspace": true,
|
|
89
|
+
"hasPinOverrides": false,
|
|
90
|
+
"notes": "2026 port. Integration branch port-2026 until live; then develop/main."
|
|
81
91
|
}
|
|
82
92
|
]
|
|
83
93
|
}
|
|
@@ -89,11 +89,11 @@ git commit -m "chore(cms-edit): regenerate editor pack"
|
|
|
89
89
|
|
|
90
90
|
### Customer repo with `cms-edit/host/` (SE Studio, Pedestal, Headwater, Brightline, …)
|
|
91
91
|
|
|
92
|
-
Commit `editor-pack/` (and any other `cms-edit/**` changes) and push **`develop`**. Hosted MCP Production is the marketing production branch (`main`, HSD `production`)
|
|
92
|
+
Commit `editor-pack/` (and any other `cms-edit/**` changes) and push **`develop`**. Hosted MCP Production is the marketing production branch (`main`, HSD `production`). Merge there only after ask + confirm (`production-merge.md`). `ignoreCommand` skips `develop` and feature refs.
|
|
93
93
|
|
|
94
94
|
```bash
|
|
95
95
|
git push origin develop
|
|
96
|
-
# then
|
|
96
|
+
# then production-merge.md: human asks, agent confirms, then merge to main (HSD: production)
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
Do **not** run `pnpm cms-edit:deploy` or `vercel deploy` after this step.
|
|
@@ -5,9 +5,11 @@ 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**. Customer production merges need a **human ask plus a second confirmation** ([`production-merge.md`](../../references/agent-session/production-merge.md)). **se-core-product `main` is never agent.**
|
|
9
9
|
|
|
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
|
|
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, `localEnvRoot`.
|
|
11
|
+
|
|
12
|
+
**Local env / worktrees:** [`local-env.md`](../../references/agent-session/local-env.md) — canonical `~/source/local-env`, no-clobber seed, 1Password backup only.
|
|
11
13
|
|
|
12
14
|
**Manifest template:** [`packages/skills/references/agent-session/manifest.template.yaml`](../../references/agent-session/manifest.template.yaml)
|
|
13
15
|
|
|
@@ -60,7 +62,7 @@ Integration branches (agents push feature branches here via PR or merge — **ne
|
|
|
60
62
|
| Repo type | Integration branch | Production |
|
|
61
63
|
|-----------|-------------------|------------|
|
|
62
64
|
| `se-core-product` | `dev` | `main` — **never** agent |
|
|
63
|
-
| Customer sites | `develop` (or registry override) | Usually `main`; HSD **`production`**.
|
|
65
|
+
| Customer sites | `develop` (or registry override) | Usually `main`; HSD **`production`**. Merge only after [`production-merge.md`](../../references/agent-session/production-merge.md) (ask + confirm) |
|
|
64
66
|
|
|
65
67
|
**Never** work in `productionPath`. Agent work uses `path` (develop checkout) only.
|
|
66
68
|
|
|
@@ -151,9 +153,13 @@ cd <primary_repo> # registry path — develop/dev checkout
|
|
|
151
153
|
git fetch origin
|
|
152
154
|
mkdir -p <worktreesRoot> # from registry, e.g. ~/source/customers/hopskipdrive/worktrees
|
|
153
155
|
git worktree add <worktreesRoot>/<feature-slug> -b <branch> origin/<integration-branch>
|
|
156
|
+
# Script lives in se-core-product — do not run this from a customer worktree
|
|
157
|
+
pnpm --dir ~/source/se/se-core-product local-env seed --project <project_key>
|
|
154
158
|
cd <worktreesRoot>/<feature-slug>
|
|
155
159
|
```
|
|
156
160
|
|
|
161
|
+
`.env.local` is gitignored and does **not** appear in a new worktree. Seed with `pnpm --dir ~/source/se/se-core-product local-env` — do not hand-write a stub and do not symlink at develop. Full rules: [`local-env.md`](../../references/agent-session/local-env.md).
|
|
162
|
+
|
|
157
163
|
| Project key | worktreesRoot |
|
|
158
164
|
|-------------|---------------|
|
|
159
165
|
| `se-core-product` | `~/source/se/worktrees` |
|
|
@@ -163,6 +169,7 @@ cd <worktreesRoot>/<feature-slug>
|
|
|
163
169
|
| `pointme` | `~/source/customers/pointme/worktrees` |
|
|
164
170
|
| `pedestal` | `~/source/customers/pedestal/worktrees` |
|
|
165
171
|
| `hsd` | `~/source/customers/hopskipdrive/worktrees` |
|
|
172
|
+
| `highlander` | `~/source/customers/highlander/worktrees` |
|
|
166
173
|
|
|
167
174
|
**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
175
|
|
|
@@ -261,9 +268,9 @@ Agents may push to:
|
|
|
261
268
|
|
|
262
269
|
- `dev` / `develop` (via feature branch merge or direct if user prefers)
|
|
263
270
|
- `feature/*` branches
|
|
264
|
-
- Customer production (`main`, HSD `production`) **only**
|
|
271
|
+
- Customer production (`main`, HSD `production`) **only** after [`production-merge.md`](../../references/agent-session/production-merge.md): human **asked** in this conversation, agent **restated** the exact merge (site, branches, publishes production), human **confirmed** with a second yes. cms-edit host diffs also need [`cms-edit-prod-merge.md`](../../references/agent-session/cms-edit-prod-merge.md).
|
|
265
272
|
|
|
266
|
-
Agents must **never** push **se-core-product** `main
|
|
273
|
+
Agents must **never** push **se-core-product** `main`. Agents must **never** ship from a registry `productionPath` (e.g. HSD `~/source/customers/hopskipdrive/production-hsd-website`). Opening a production PR is not a merge.
|
|
267
274
|
|
|
268
275
|
**Preferred:** open a **draft PR** targeting the integration branch:
|
|
269
276
|
|
|
@@ -277,7 +284,7 @@ If `gh` is unavailable or user prefers direct push, push `feature/*` and note in
|
|
|
277
284
|
|
|
278
285
|
## Step 8 — Handoff (production-ready)
|
|
279
286
|
|
|
280
|
-
When **marketing** work is ready for production, **stop**
|
|
287
|
+
When **marketing** work is ready for production, **stop** and hand off. Do **not** merge `develop` → production unless [`production-merge.md`](../../references/agent-session/production-merge.md) passed in this conversation (ask + restatement + second yes). One customer repo at a time. cms-edit host extra gate: [`cms-edit-prod-merge.md`](../../references/agent-session/cms-edit-prod-merge.md).
|
|
281
288
|
|
|
282
289
|
1. Set manifest `status: ready_for_review`
|
|
283
290
|
2. Deliver handoff using template below
|
|
@@ -310,8 +317,7 @@ When **marketing** work is ready for production, **stop** — do not merge to `m
|
|
|
310
317
|
3. <customer PR>
|
|
311
318
|
|
|
312
319
|
### Production
|
|
313
|
-
|
|
314
|
-
cms-edit-only: agent may merge per `cms-edit-prod-merge.md` (not `productionPath`, not `vercel deploy`).
|
|
320
|
+
Do not merge until the human asks **and** confirms (`production-merge.md`). Not `productionPath`, not `vercel deploy`. se-core-product `main`: never agent.
|
|
315
321
|
```
|
|
316
322
|
|
|
317
323
|
---
|
|
@@ -359,5 +365,6 @@ Agent must load this skill, write manifest (with `worktree` path), run placement
|
|
|
359
365
|
| `pointme` | `develop` | `main` | customer |
|
|
360
366
|
| `pedestal` | `develop` | `main` | customer monorepo |
|
|
361
367
|
| `hsd` | `develop` (`develop-hsd-website`) | `production` (`production-hsd-website`) | customer |
|
|
368
|
+
| `highlander` | `port-2026` until live, then `develop` | `main` after cutover | customer |
|
|
362
369
|
|
|
363
370
|
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`/`production`
|
|
14
|
+
**Never:** push to `main`/`master`/`production` unless `production-merge.md` passed (ask + confirm); promote from production checkouts (e.g. HSD `production-hsd-website`); bump Next to 17; bump Node to 25+; use `pnpm patch` / `patchedDependencies` / `patches/`; bypass or remove `minimumReleaseAge`; **hand-edit `package.json` dependency versions** (use `pnpm update` instead). This skill pushes `dev`/`develop` only. All marketing sites pin `overrides.next` to `^16.3.x`.
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -235,7 +235,7 @@ git push origin <branch>
|
|
|
235
235
|
|
|
236
236
|
- se-core-product → `dev`
|
|
237
237
|
- All consumer repos → `develop`
|
|
238
|
-
- **Never** push to `main`/`master`/`production`
|
|
238
|
+
- **Never** push to `main`/`master`/`production` from this skill (deps stay on `dev`/`develop`)
|
|
239
239
|
|
|
240
240
|
---
|
|
241
241
|
|
|
@@ -140,8 +140,8 @@ Default mode for this repo: **site-first**.
|
|
|
140
140
|
|
|
141
141
|
### Branch policy
|
|
142
142
|
|
|
143
|
-
- Agents may commit and push **`develop`** and **`feature
|
|
144
|
-
-
|
|
143
|
+
- Agents may commit and push **`develop`** and **`feature/*`**.
|
|
144
|
+
- Customer production only after human **ask + confirm** (`production-merge.md`). Never se-core-product `main`.
|
|
145
145
|
- Prefer **draft PRs** to `develop` over direct pushes when `gh` is available.
|
|
146
146
|
|
|
147
147
|
### Core vs customer placement
|
|
@@ -158,7 +158,7 @@ One feature = one `feature/<scope>/<slug>` branch. **Git worktree required** for
|
|
|
158
158
|
|
|
159
159
|
### Production handoff
|
|
160
160
|
|
|
161
|
-
Agents stop at handoff
|
|
161
|
+
Agents stop at handoff unless the human asks to merge to production **and** confirms (`production-merge.md`).
|
|
162
162
|
|
|
163
163
|
## CMS editing (cms-edit)
|
|
164
164
|
|
|
@@ -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:**
|
|
22
|
+
**Never:** merge production without `production-merge.md` (ask + confirm); use production checkouts; 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
|
|
156
|
+
Hand off marketing production unless `production-merge.md` passed. Do not use production checkouts.
|
|
157
157
|
|
|
158
158
|
---
|
|
159
159
|
|