# 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. --- ## M5 — Final hardening, CI surface, and documentation closeout ### What changed in M5 **S-501 — CI workflow added** `.github/workflows/check.yml` runs on every push and pull request against a matrix of `ubuntu-latest` and `macos-latest`. Each job: 1. Installs `shellcheck` (apt on Ubuntu, brew on macOS). 2. Installs `ripgrep` (apt on Ubuntu; pre-installed on macOS runners). 3. Installs Node.js 22 and pnpm 10. 4. Runs `pnpm install --frozen-lockfile`. 5. Runs `pnpm run check` (full quality suite, offline link-checking). `.github/workflows/check-online.yml` runs `verify:docs:online` on a weekly schedule (Monday 09:00 UTC) and on manual `workflow_dispatch`. This keeps external link checking out of the push/PR critical path. **S-502 — Root README contributing section** `README.md` now includes a "Contributing / Development" section that names `pnpm run check` as the single quality gate, lists prerequisites, and links to `docs/DEVELOPMENT.md`. **S-503 — `docs/DEVELOPMENT.md` finalised** Added: - **"Adding a new agent variant"** recipe (6 steps from canonical source to CI). - **"Adding a new skill"** recipe (6 steps). - **"CI"** section describing both workflows and how to add new prerequisites. - **Permanent `check` contract** replacing the transitional M1 wording. - Cross-reference links to `.github/workflows/check.yml` and `.github/workflows/check-online.yml`. **S-504 — Baseline report closed** `docs/CLEANUP-BASELINE.md` updated with a "Final state" section showing every baseline failure resolved, a baseline status summary table, and the post-M5 `pnpm run check` output. The document is now closed. **S-505 — `package.json` file list synced** `docs/DEVELOPMENT.md` and `docs/REVIEWERS.md` added to the `files` array. All listed entries verified to exist in the post-M5 tree. **S-506 — Changelog extended (this entry)** **S-507 — Final green run confirmed** `pnpm run check` exits 0 on macOS 15 (arm64) with Node 22.14.0 and pnpm 10.18.1. CI workflow exercises the same gate on both `ubuntu-latest` and `macos-latest`. ### `pnpm run check` status after M5 ```text PASS lint PASS typecheck PASS test PASS verify:pi PASS verify:reviewers PASS verify:docs PASS verify:generated ``` All checks green. CI enforces this on every push and PR. --- ## M4 — Shared-abstraction extraction and dead-code removal *See `docs/CLEANUP-BASELINE.md` § "Post-M4 state" for the full M4 delta.* --- ## 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.*