---
summary: "maintenance skill Phase C enumerates package scripts/ instead of a hardcoded list (closes #69); skill git references made tool-agnostic; templates ship runner-friendly start script + bun engine"
breaking: false
---

# 0.7.6 — 2026-04-27

Patch release closing the symmetric drift fix from [#69](https://github.com/cyanheads/mcp-ts-core/issues/69) and tightening agent-facing skill prose. The `maintenance` skill's Phase C now enumerates the package's installed `scripts/` directory directly, mirroring how Phase A handles skills. Skill prose around git operations is reworded so agents pick whichever git tooling they have available rather than being pointed at literal `git <cmd>` invocations. Consumer templates pick up a runner-friendly `start` script and declare `bun` in `engines` alongside `node`.

## Fixed

- **`skills/maintenance/` Phase C enumerates the installed `scripts/` directory ([#69](https://github.com/cyanheads/mcp-ts-core/issues/69))** — replaced the hardcoded 8-name script list (`build-changelog.ts build.ts check-docs-sync.ts check-skills-sync.ts clean.ts devcheck.ts lint-mcp.ts tree.ts`) with a `for src in node_modules/@cyanheads/mcp-ts-core/scripts/*.ts` loop. The package's `files:` field gates what lands in `node_modules/.../scripts/`, so enumerating that directory IS the canonical "shipped scripts" set — newly-added scripts (like `check-framework-antipatterns.ts`, added in 0.7.2) are now picked up automatically. Loop also reports `added:` vs `updated:` for clearer signal during sync. Same drift class as [#73](https://github.com/cyanheads/mcp-ts-core/issues/73) — paired symmetric fix on the maintenance side. Deletion case (loop is one-way) was assessed and intentionally not pursued: framework script removals are rare, the `Removed` section of `CHANGELOG.md` is the existing human-in-the-loop signal, and the proposed mitigations (manifest file or `@framework-managed` marker) add permanent surface area for a problem that hasn't occurred.
- **YAML frontmatter quoting in `changelog/0.7.x/0.7.5.md`** — `summary:` value contained an unquoted `:` (colon-space) inside the string, which GitHub's strict YAML parser rejected with `mapping values are not allowed in this context`. Wrapped value in double quotes. Both `changelog/template.md` and `templates/changelog/template.md` gained a comment line warning future authors to keep the quotes.

## Changed

- **`skills/release-and-publish/`, `skills/setup/`, `skills/maintenance/` reworded git references to be tool-agnostic** — replaced literal `git <cmd>` invocations and `bash` fences with action-verb prose ("Use your git tools to push commits and tags to origin", "diff `bun.lock` to surface version deltas", "revert that file using your git tools"). Lets agents pick whichever git tooling they have — `mcp__git-mcp-server__*`, raw `git` via Bash, or other wrappers — instead of being pointed at a single CLI invocation. `release-and-publish` v2.1 → v2.2; `setup` v1.5 → v1.6; `maintenance` v1.6 → v1.7. Also covers `OWNER/REPO` derivation, working-tree verification, and post-sync diff/restore guidance.
- **Dependency updates** — patch and minor bumps with no API impact: `jose` 6.2.2 → 6.2.3, `@modelcontextprotocol/ext-apps` 1.7.0 → 1.7.1, `@supabase/supabase-js` 2.104.1 → 2.105.0 (peer + dev), `@cloudflare/workers-types` 4.20260424.1 → 4.20260426.1 (dev), `repomix` 1.13.1 → 1.14.0 (dev). Devcheck and full test suite (2558 passing) clean across all updates.

## Added

- **`templates/package.json` `start` script** — bare `"start": "node dist/index.js"` alongside the existing explicit `start:stdio` / `start:http` variants. External MCP runners and hosted environments that assume the npm-canonical `start` script now work out of the box. The new script is `.env`-respecting (no inline `MCP_TRANSPORT_TYPE` override) so user-configured transport selection still takes effect.
- **`templates/package.json` declares `bun` in `engines`** — `bun: >=1.2.0` added alongside the existing `node: >=22.0.0`. Documents that the scaffold works on Bun (it already did — Bun runs the template's `tsx` and `node` invocations transparently). Matches the framework's own `package.json` engines field.
