---
summary: "Adopt mcp-ts-core ^0.10.6, set explicit createApp name/title identity, MCPB bundle hygiene (clean-mcpb + packaging guards), Dockerfile healthcheck and version labels"
breaking: false
security: false
---

# 0.2.1 — 2026-06-12

## Added

- **`scripts/clean-mcpb.ts`** — post-pack bundle cleaner wired into the `bundle` script. Runs `mcpb clean` (dev-dependency prune) then strips dependency-shipped agent-doc entries (`skills/`, `.claude/`, `.agents/`, `SKILL.md`) nested under `node_modules/` that root-anchored `.mcpbignore` patterns cannot reach, and asserts zero remain.
- **`techniques` skill** — catalog of reusable response/data-shaping patterns (overflow handling, payload shaping) with the `outline-on-overflow` reference.
- **Dockerfile `HEALTHCHECK`** — bun-native `fetch` against `/healthz` (the slim runtime image ships no `curl`/`wget`).
- **Dockerfile OCI version metadata** — `APP_VERSION` build arg populates `org.opencontainers.image.version`; adds `org.opencontainers.image.source`.

## Changed

- **`createApp()` identity** — `src/index.ts` now sets `name` and `title` explicitly to `gdelt-mcp-server` rather than relying on the scoped-package name fallback.
- **`.codex-plugin/plugin.json` `interface.displayName`** — `@cyanheads/gdelt-mcp-server` → `gdelt-mcp-server` (unscoped display identity).
- **`scripts/lint-packaging.ts`** — adds bundle-content guards (root dev dirs excluded from the bundle, `.mcpbignore` patterns anchored so they can't strip nested `node_modules/.../skills/`, critical runtime paths preserved, built `.mcpb` carries zero `node_modules` agent-doc entries) and an identity check (`createApp`/`createWorkerHandler` `name`/`title` and manifest `display_name` must equal the unscoped package name).
- **`scripts/check-framework-antipatterns.ts`** — adds a `z.coerce.boolean()` env-flag rule (`Boolean("false")` is truthy; use `z.stringbool()`) and skips comment lines so a JSDoc mention of an antipattern isn't flagged as a usage.
- **`.mcpbignore`** — root dev-dir patterns anchored with a leading `/` so they target the bundle root only.
- **Vendored `skills/` synced** to `@cyanheads/mcp-ts-core` `0.10.6`.

### Dependencies

- **`@cyanheads/mcp-ts-core`** `^0.9.21 → ^0.10.6`
- **`@types/node`** `^25.9.2 → ^25.9.3`
