From 5c1e69791af60417e35f8587a82789b83f86647d Mon Sep 17 00:00:00 2001 From: Christie Williams Date: Thu, 8 Oct 2026 14:46:52 -0400 Subject: [PATCH] chore: list Agent Skills changes under an Experimental changelog heading MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat, fix and perf commits scoped `skills` go under "Experimental" in each package's changelog, as TESTING.md §0.1 promises for experimental features. The rest of the list reproduces release-please's Node defaults, so other commits render exactly as before. AGENTS.md documents the scope convention. Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 12 ++++++++++++ release-please-config.json | 19 ++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index 4f8d273e..12f21497 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -94,6 +94,18 @@ Review these conversions in test assertions — `handler.stream?.(args)` returns Biome organises imports alphabetically within each group. Vitest's `vi.mock` calls are **hoisted to the top of the file** regardless of source order. If mock setup depends on import order, rely on `vi.hoisted()` rather than declaration order. +## PR Titles and the Changelog + +PRs are squash-merged with the PR title as the commit message, and release-please builds each package's changelog from those messages. + +- **A change to an experimental feature uses that feature's scope:** `skills` (Agent Skills). `feat`, `fix` and `perf` commits with one of these scopes are listed under **Experimental** (`changelog-sections` in `release-please-config.json`), for example `feat(skills): watch skills for revocations`. Any other scope, such as `client`, lists the change as a core feature or fix. +- **Use exactly one scope.** `feat(skills,client):` matches no Experimental row, so it lands under Features. +- **A PR that changes both core and experimental behaviour** should be split. If it can't be, add a `BEGIN_COMMIT_OVERRIDE` block to its description with one conventional-commit line per change. An override also corrects a merged PR's title, as long as the release PR hasn't merged yet. +- **A breaking experimental change** uses `!` while the package is 0.x: `feat(skills)!:` bumps the minor version, which is what an experimental break is allowed. After 1.0, `!` would force a major release. Use `feat(skills):` without `!` instead, and say the change is breaking in the title. +- **When a feature is promoted to core,** remove its rows from `changelog-sections`. + +The rule is specified in `TESTING.md` §0.3 in `launchdarkly/ai-sdks-monorepo`. + ## Package Hierarchy The monorepo is organized into three tiers plus a convenience wrapper. Dependencies only flow **downward** — never sideways between packages in the same tier, and never upward. diff --git a/release-please-config.json b/release-please-config.json index aff192ad..d55bda5a 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -100,5 +100,22 @@ "extra-files": ["src/version.ts"], "component": "@launchdarkly/ai-vercel-messages" } - } + }, + "changelog-sections": [ + { "type": "feat", "scope": "skills", "section": "Experimental" }, + { "type": "fix", "scope": "skills", "section": "Experimental" }, + { "type": "perf", "scope": "skills", "section": "Experimental" }, + { "type": "feat", "section": "Features" }, + { "type": "feature", "section": "Features" }, + { "type": "fix", "section": "Bug Fixes" }, + { "type": "perf", "section": "Performance Improvements" }, + { "type": "revert", "section": "Reverts" }, + { "type": "docs", "section": "Documentation", "hidden": true }, + { "type": "style", "section": "Styles", "hidden": true }, + { "type": "chore", "section": "Miscellaneous Chores", "hidden": true }, + { "type": "refactor", "section": "Code Refactoring", "hidden": true }, + { "type": "test", "section": "Tests", "hidden": true }, + { "type": "build", "section": "Build System", "hidden": true }, + { "type": "ci", "section": "Continuous Integration", "hidden": true } + ] }