Skip to content

savvy-web/silk

v4.4.1MIT

Companion plugin for @savvy-web/silk — changeset, commit, lint, and Turborepo conventions, skills, and agents for the Silk Suite

build

Configure and run @savvy-web/bundler builds (and its rspress-builder sibling): the build() front door, the BuildConfig option surface, the build:dev/build:prod/types:check/prepare package.json script contract, the Turborepo build task graph, SEA executables, and the API Extractor meta pass. Use on savvy.build.ts, and on package.json or turbo.json of a bundler-built package. Triggered by "set up savvy.build.ts", "configure the bundler", "build:dev vs build:prod", "why does this package need prepare", "wire turbo build tasks", "dual-format esm cjs", "externals vs bundledPackages", "build a single executable", "suppress api extractor warning", "rspress plugin build".

changeset

The one changeset command. /silk:changeset --create|--squash|--list| --preview|--check. Create/reconcile or squash changesets (via the changeset-manager agent), validate them, preview the CHANGELOG, or list what's pending. A bare or vague invocation defaults to create/reconcile. Also use when: "I need a changeset", "draft/add a changeset", "reconcile changesets", "do I need a changeset for this branch", "squash/combine/merge changesets", "validate/check/lint changesets", "are my changesets valid", "preview the changelog", "what will the release notes look like", "list changesets", "what's pending for release", "version bump"

changeset-config

The .changeset/config.json for Silk repos — the changelog tuple, the standard changesets fields, and the Silk-custom versionFiles and additionalScopes per-package options. Auto-loads when editing .changeset/config.json; user-invokable as /silk:changeset-config. Also use when: "what goes in .changeset/config.json", "versionFiles", "additionalScopes", "bump plugin.json with the package", "sync a manifest version", "which files belong to a package's release", "changelog config", "the changelog tuple", "updateInternalDependencies", "privatePackages", "is this a standard changesets field or a Silk one" Applies to files matching: **/.changeset/config.json

changeset-style

The complete @savvy-web/changesets style and format specification — YAML frontmatter, the 13 valid section headings, structural rules CSH001–CSH005, content depth tiers, and worked examples. Auto-loads when reading any .changeset/*.md file and is user-invokable on demand via /silk:changeset-style. Also use when: "what's the changeset format", "how do I write a changeset", "valid section headings", "changeset rules", "what categories can I use", "CSH001", "CSH002", "CSH003", "CSH004", "CSH005", "show me the changeset style guide", "what does a good changeset look like" Applies to files matching: .changeset/*.md, **/.changeset/*.md

commit-create

Use when you are about to create, amend or squash a git commit, finalize or ship a branch, write a pull-request TITLE, or compose a conventional commit message in any form, including the contents of a proposed-squash-commit block. Defines the commit-message contract enforced by @savvy-web/commitlint: type enum, tdd scope grammar, subject rules, the brevity doctrine for bodies, DCO signoff, comma-separated Closes trailers, signing posture, and a pre-commit checklist. Triggered by "commit this", "write a commit message", "amend", "squash", "wrap up this branch", "ship it", "land this", "write the PR title". Does NOT apply to the prose of a PR description; that is the pr-body skill.

config

Surface the project's .changeset/config.json and the branch's diff-with-classification via the changeset_inspect MCP tool (savvy-mcp). The agent uses these to get reliable package attribution without re-implementing the logic.

delete

Mechanics for removing one or more changeset files from .changeset/. Invoked by the changeset-manager agent when a stale changeset describes packages no longer in the diff, or as part of squash cleanup. Not user-invokable; users initiate this work via /silk:changeset --create or /silk:changeset --squash.

dependencies

Manage pure dependency changesets via the changeset_deps_regen (delete- and-recreate) and changeset_deps_detect (read-only) MCP tools. The regen flow enforces our convention of one-package-per-changeset and one- dependency-changeset-per-package.

dogfood

The dogfood mailbox protocol: a repeatable loop for two agent sessions in sibling repo checkouts to request, deliver, adopt, and iterate on cross-repo changes (e.g. a pnpm overrides: link against a sibling checkout's local prod artifacts) before anything is released. Mail files plus a per-loop JSONL state journal under .claude/dogfood/, a phase/ball machine and an enforced no-push-while-linked rule. /silk:dogfood --init|--send|--status|--watch|--adopt|--exit. Use whenever files under .claude/dogfood/** are read or written, and for "start a dogfood loop", "whose ball is it", "adopt the handoff", "exit the dogfood loop", "unlink the file: override".

merge

Mechanics for consolidating two or more changesets that share an identical package-to-bump-type mapping. Invoked by the changeset-manager agent during /silk:changeset --squash. Not user-invokable; users initiate this work via /silk:changeset --squash.

pr-body

Use when you are about to open a pull request, edit a pull request description, write a PR summary, or update the proposed squash-commit message on an existing PR. Defines the silk-release marker contract that lets humans, local agents and cloud agents share one PR description without overwriting each other: which regions you own, which are regenerated, and the two incompatible spellings of a closing reference. Triggered by "open a PR", "gh pr create", "gh pr edit", "write the PR description", "update the PR body", "link the issues on this PR". Covers the DESCRIPTION only; the PR title and a proposed-squash-commit fence belong to the commit-create skill.

repos

Vendored reference repos under .repos/ — when to vendor an upstream source as an agent authority, sparse-checkout discipline, the re-pin-on-dependency-bump rule, the orientation/notes editorial policy, and the repos_inspect/repos_manage MCP tools. Also covers plain git-submodule vocabulary directed at .repos/ — "manage git submodules", "add a submodule", "remove a submodule", ".gitmodules" — since this skill, not raw git submodule, is the sanctioned path for that vocabulary in this repo. User-invokable as /silk:repos. Also use when: "vendor a repo", "add a reference repo", ".repos directory", "re-pin the vendored source", "pin tracks the installed version", "leave a note for the next agent", "promote a note to orientation", "what is vendored here", "submodule is dirty", "repos_inspect", "repos_manage", "savvy repos", "rename a submodule", "restore a dirty submodule", "drift report" Applies to files matching: **/.repos/config.json

status

Provides awareness of existing changeset files when working in .changeset/. Loads context about pending changesets to prevent duplicates and inform decisions about new changesets. Activates when reading or listing files in the .changeset/ directory, reviewing pending changes, or discussing release readiness. Applies to files matching: .changeset/*.md, **/.changeset/*.md

tsdoc

Toolchain-accurate TSDoc authoring for the Silk Suite. How to document exported symbols so the @savvy-web/bundler API Extractor pass passes: release tags, fixing ae-forgotten-export / ae-missing-release-tag / tsdoc-* warnings, the supported-tag allow-list, and registering custom tags. Agents reach for JSDoc habits; this corrects them. Auto-loads when editing savvy.build.ts and is user-invokable on demand via /silk:tsdoc. Also use when: "write a TSDoc comment", "document this function", "JSDoc vs TSDoc", "ae-forgotten-export", "ae-missing-release-tag", "tsdoc-undefined-tag", "tsdoc syntax error", "what release tag", "@public or @internal", "add a custom TSDoc tag", "suppress an api-extractor warning", "fix the api extractor warnings in my build", "forgotten export", "build fails on exports", "api extractor error in CI" Applies to files matching: **/savvy.build.ts, **/dist/*/issues.json

turbo

Use when configuring Turborepo tasks, debugging cache misses, controlling which packages a command runs against (--affected / --filter), reasoning about turbo.json dependsOn / outputs / inputs, or understanding the Silk monorepo build chain. Covers decision trees, anti-patterns with rationale, and the turbo_inspect MCP tool for cache diagnosis. Also use when: "why is my turbo cache missing?", "configure a turbo task", "set up dependsOn", "run only changed packages", "turbo.json", "what's the task graph?", "speed up the monorepo build", "turbo cache isn't working"

update

Mechanics for modifying an existing changeset file. Invoked by the changeset-manager agent when the diff has grown since the changeset was authored, when a bump-type mismatch is detected, or when a squash needs to rewrite an entry's content. Not user-invokable; users initiate this work via /silk:changeset --create.