# Changelog — ai-coding-skills All notable changes to the ai-coding-skills repository are recorded here. Entries are milestone-scoped; stories within each milestone are listed for traceability. --- ## M3 — Shared-source generator for agent variants ### Package metadata change ⚠️ **All generated agent-variant `package.json` files have been renamed to unique private scoped names.** This is an intentional breaking rename in the artifact structure, but all packages carry `"private": true` and are **never published** to any registry. End-user manual-install workflows are unaffected: copying a `skills///` directory continues to work unchanged. | Old `name` | New `name` | Path | |-----------|-----------|------| | `atlassian-skill-scripts` | `@ai-coding-skills/atlassian-claude-code` | `skills/atlassian/claude-code/scripts/package.json` | | `atlassian-skill-scripts` | `@ai-coding-skills/atlassian-codex` | `skills/atlassian/codex/scripts/package.json` | | `atlassian-skill-scripts` | `@ai-coding-skills/atlassian-cursor` | `skills/atlassian/cursor/scripts/package.json` | | `atlassian-skill-scripts` | `@ai-coding-skills/atlassian-opencode` | `skills/atlassian/opencode/scripts/package.json` | | `atlassian-skill-scripts` | `@ai-coding-skills/atlassian-pi` | `skills/atlassian/pi/scripts/package.json` | | `atlassian-skill-scripts` | `@ai-coding-skills/atlassian-pi-mirror` | `pi-package/skills/atlassian/scripts/package.json` | | `web-automation-scripts` | `@ai-coding-skills/web-automation-claude-code` | `skills/web-automation/claude-code/scripts/package.json` | | `web-automation-scripts` | `@ai-coding-skills/web-automation-codex` | `skills/web-automation/codex/scripts/package.json` | | `web-automation-scripts` | `@ai-coding-skills/web-automation-cursor` | `skills/web-automation/cursor/scripts/package.json` | | `web-automation-scripts` | `@ai-coding-skills/web-automation-opencode` | `skills/web-automation/opencode/scripts/package.json` | | `web-automation-scripts` | `@ai-coding-skills/web-automation-pi` | `skills/web-automation/pi/scripts/package.json` | | `web-automation-scripts` | `@ai-coding-skills/web-automation-pi-mirror` | `pi-package/skills/web-automation/scripts/package.json` | All renamed packages also gained `"private": true`. ### What else changed in M3 **S-301 — Canonical sources documented** Canonical source directories introduced (all outside every generated root): - `skills/atlassian/_source//SKILL.md` — per-agent Atlassian skill descriptions - `skills/web-automation/_source//SKILL.md` — per-agent Web Automation skill descriptions - `skills/web-automation/shared/` — shared web-automation TypeScript runtime scripts - `skills/create-plan/_source//` — per-agent create-plan SKILL.md + templates - `skills/do-task/_source//` — per-agent do-task SKILL.md + templates - `skills/implement-plan/_source//` — per-agent implement-plan SKILL.md - `skills/reviewer-runtime/` (base) — canonical `run-review.sh` and `notify-telegram.sh` **S-302 — Generator built** `scripts/generate-skills.mjs` regenerates all 31 generated roots from canonical sources in one pass. Exports `detectFileType`, `applyHeader`, `makePackageJsonContent`, `getGeneratedRoots`, `buildManifest`, and `generateSkills`. 35 unit tests. **S-303 — Manual-workflow skills migrated** `create-plan`, `do-task`, `implement-plan` agent variants now generated from `_source/` canonical sources. Only diffs vs pre-migration: file-type-aware headers and new `.generated-manifest.json` files. **S-304 — Web-automation runtime scripts migrated** `skills/web-automation/shared/` created from the former codex canonical source. All five web-automation agent variants and the pi-package mirror now generated from this shared location. **S-305 — Reviewer-runtime Pi variants migrated** `skills/reviewer-runtime/pi/run-review.sh` and `notify-telegram.sh` are now generated from the canonical base scripts. The "keep this file in sync" comments are replaced by generated-file headers. **S-306 — `sync:pi` and `verify:generated` implemented** - `pnpm run sync:pi` now calls `node scripts/generate-skills.mjs`. - `scripts/verify-generated.mjs` implements the full comparison contract: walks declared roots only, uses `.generated-manifest.json` as oracle, reports structured diffs, exits non-zero on any mismatch. 5 unit tests including the required `_source/` stray-file boundary test. - `pnpm run verify:generated` wired to the real implementation. **S-307 — Workspace updated** `pnpm-workspace.yaml` updated to **include** all generated agent-variant packages (now uniquely named) alongside the canonical sources. The M1 negative-glob exclusions are replaced by positive includes. **S-308 — Documentation updated** - `docs/DEVELOPMENT.md`: new "How variants are generated" section with canonical source table, generated-root list, contributor workflow, header policy table, and manifest contract. - `CHANGELOG.md` (this file): full rename table and story summaries. ### Byte-equivalence diff allow-list (M3 vs pre-M3 generated roots) The only permitted diffs between the M3-generated output and the pre-M3 manually-maintained variants are: 1. **File-type-aware generated-file headers** — added per the policy table in `docs/DEVELOPMENT.md`. 2. **New `.generated-manifest.json` files** — one per generated root. 3. **`package.json` `name` field** — renamed to `@ai-coding-skills/-`. 4. **`"private": true` added** — to each generated `package.json`. No other content diffs are permitted; `verify:generated` and the generator itself reject any other change. ### `pnpm run check` status after M3 ```text PASS lint (was FAIL; all pre-existing violations fixed) PASS typecheck PASS test PASS verify:pi PASS verify:reviewers PASS verify:docs PASS verify:generated (was stub; now real implementation) ``` All checks green for the first time. --- *Previous milestones (M1, M2) did not have a CHANGELOG.md entry. See `docs/CLEANUP-BASELINE.md` for the M1 baseline and M2 delta.*