# Changelog All notable changes to the Claude Skills Library will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ### Added — engineering/spinning-up-deep-rl: the first book compiled by book-to-skill Knowledge-base plugin compiled end-to-end by `engineering/book-to-skill` from OpenAI's [Spinning Up in Deep RL](https://spinningup.openai.com/) (MIT, Copyright (c) 2018 OpenAI; primarily developed by Joshua Achiam). 20 chapters, a glossary, a patterns file and a decision cheatsheet, behind a 2,101-token resident core. - **The full pipeline, not a hand-write.** `openai/spinningup` cloned, its `docs/` reStructuredText tree (38 files, ~37k words, ~49K tokens) run through `extract_document.py --mode technical` → analysis → chapter files → supporting files → master `SKILL.md` → `book_skill_validator.py` → `skill_plugin_emitter.py`. The validator passes clean in `--strict` mode and every file is inside budget. - **Rights basis `open-license`, stated and honoured.** The emitter's Step-11 gate refuses a shareable package without one. MIT permits derivative distribution; upstream's notice is reproduced in full in the plugin's `LICENSE` beside this package's own, and `README.md` names the source, the author and the source's frozen version. - **Structure follows the source's own `toctree`.** User documentation (ch01-06), Introduction to RL Parts 1-3 (ch07-09), resources — the researcher essay, key papers, exercises, benchmarks (ch10-13), one chapter per algorithm in lineage order (ch14-19: VPG → TRPO → PPO, DDPG → TD3 → SAC), and the logger / MPI / ExperimentGrid utilities (ch20). - **The cheatsheet carries the judgment a glossary cannot** — the under-5-minute debug turnaround, the 3-seed minimum (10+ to be thorough), family-specific benchmark network defaults, and Spinning Up's own parity disclosure: DDPG/TD3/SAC are research-grade, VPG/TRPO/PPO are not, and the docs say to use OpenAI Baselines for those. - **Counters:** skills 387 → 388; agents 117 → 118; commands 149 → 150; plugins 98 → 99. Tools and references unchanged by this plugin — a compiled knowledge base ships notes, not scripts. (These sit on top of `deep-learning-book`, which merged into `dev` first; the derived totals are 388 skills / 727 tools / 842 references / 118 agents / 150 commands / 99 plugins.) ### Fixed — book-to-skill's plugin emitter produced manifests this repo's CI rejects `skill_plugin_emitter.py` wrote its whole `source` provenance block into `plugin.json`, with an inline comment asserting that `source` and `attribution` were approved extension fields. That had been true and no longer was: Claude Code rejects an entire manifest on any unrecognized key (issue #954), and `scripts/check_plugin_json.py` hard-fails such a manifest, pointing at `.claude-plugin/authoring-notes.json` instead. Every package the emitter produced therefore failed the blocking CI gate the moment it was committed — a defect at the very last step of the pipeline, which is why it had gone unnoticed. `_plugin_manifest()` now emits spec fields only and a new `_authoring_notes()` writes the sidecar. Recorded as deviation 26 in `engineering/book-to-skill/README.md`. The printed `marketplace.json` snippet is unchanged: `source` is a valid key there, which is how it leaked into the manifest originally. ### Added — engineering/deep-learning-book: a companion to the free Deep Learning textbook New `engineering/deep-learning-book/` plugin: a study companion for *Deep Learning* by Goodfellow, Bengio & Courville (MIT Press, 2016), free to read at deeplearningbook.org. One skill, 4 stdlib-only tools, 4 references, 3 assets, 1 agent, 3 commands. - **Companion, not compilation — and that was the design decision.** `book-to-skill`'s rights gate refuses a `shareable` package without `public-domain` / `open-license` / `internal-docs` / `author-permission`, none of which applies to an MIT Press title whose own site states the HTML-only format exists as a friction against copying under the authors' contract; its rights reference lists publishing a compiled skill of a copyrighted book to a public marketplace under **Do not**, and its hard rule 1 forbids scraping a book from the web. So nothing here reproduces the book: every chapter file is original synthesis linking to the official free chapter, and the organizing structure is the published table of contents. **The rule this sets:** convert a copyrighted work into a companion that indexes and updates the source, never a compilation that reproduces it. - **The compiled-skill shape, validated by the compiler's own gate.** Master `SKILL.md` (~2.0k tokens, chapter index + topic index), `chapters/ch01..ch20`, `glossary.md`, `patterns.md`, `cheatsheet.md` — passes `book_skill_validator.py` clean with every file inside `token_budget_estimator.py`'s caps. - **The 2016→2026 delta layer is the differentiator.** A compilation freezes a source at its publication date; this one dates it. Every chapter carries "What changed after 2016", and `references/book_to_2026_delta.md` gives five corrections with primary citations and per-claim confidence: double descent qualifying Ch 5's U-curve, AdamW splitting weight decay from L2, transformers displacing Ch 10's recurrence, diffusion growing out of Ch 18's score matching, and self-supervised learning vindicating Ch 15 while replacing its methods. Two contested claims are marked contested rather than propagated; two named as folklore. Stated rule: **the conflict is almost always in the recommendation, not the analysis.** - **Four tools, each with a real refusal.** `reading_path_planner.py` (prerequisite closure over the book's actual dependency graph, priced in weeks; exit 3 naming what covers an out-of-scope goal, exit 4 with forcing questions when unroutable; ties break on keyword specificity, not alphabetically); `training_diagnostics.py` (Ch 11's rules in priority order, so a NaN is never reported as overfitting; exit 4 rather than diagnosing with no instruments); `capacity_planner.py` (regularization ladder in cost order with "shrink the model" ranked **last** in the overparameterized regime; exit 4 on a val-below-train split); `model_arithmetic.py` (params/FLOPs/activation memory for conv, linear, position-wise linear, MHA and LSTM/GRU stacks; exit 5 naming the layer whose shapes do not connect). - `cs-deep-learning-tutor` agent; `/cs:deep-learning`, `/cs:dl-reading-path`, `/cs:dl-diagnose`. **Counters:** skills 386 → 387; tools 723 → 727; refs 838 → 842; agents 116 → 117; commands 146 → 149; plugins 97 → 98. ### Added — marketing/linkedin: organic LinkedIn presence with the platform rules in code New `marketing/linkedin/` plugin, answering [discussion #934](https://github.com/alirezarezvani/claude-skills/discussions/934), which asked for a strategic assistant for growing a LinkedIn presence organically rather than a post generator. Six skills, 17 stdlib-only tools, 15 references, 2 agents, 8 commands. - **The design constraint is the differentiator.** The plugin holds no LinkedIn credentials, makes no API calls, scrapes nothing, and sends nothing — automated posting, connecting, commenting, and liking are prohibited by LinkedIn's User Agreement §8.2, and a restricted account ends a compounding asset. `linkedin_policy_gate.py` runs before any drafting and refuses seven classes of request (automation, scraping, engagement pods, bulk messaging, fake identity, fabricated proof, named third-party automation platforms), each with the policy anchor and a **compliant substitute** — the gate never just says no. - **`linkedin-skills`** (orchestrator, `context: fork`) — policy gate + deterministic five-lane router (route 0 / ask 2 / no-signal 3) with cross-lane prerequisites. - **`linkedin-profile`** — headline scored on audience/outcome/proof/searchability/clarity against the 220-char cap and the ~60-char front-load window; whole-profile audit across 14 weighted checks with fixes ranked by **points per hour** and a first-hour plan; About builder that refuses a fold cutting mid-sentence or carrying no audience and no proof. - **`linkedin-strategy`** — positioning brief validator (six real objectives, an audience specific enough to exclude someone, 2-4 proof-backed pillars, a **mandatory exclusion list**); cadence planner that prices the week in minutes and returns a comment-only plan below a 90-minute floor; newsletter gate on LinkedIn's published 150-follower evaluation threshold plus six-month cadence cost, with a stop rule written before issue one. - **`linkedin-content`** — post linter across mechanics / hook / integrity / accessibility, blocking on the 3,000-char cap, engagement bait, and **Unicode pseudo-bold** (screen readers announce it as mathematical symbols; search does not index it as words); format picker over nine native formats; repurpose splitter with a **content-hash reuse ledger**. - **`linkedin-engagement`** — comment roster capped at two appearances per account per week; message builder that refuses a template without a person-specific line and refuses an ask in a first-touch connection note; volume guard that refuses above 40 invitations a day as an automation plan regardless of intent. - **`linkedin-analytics`** — median/MAD describer with Tukey bands (a mean describes a distribution none of your posts belong to); four-gate permutation pattern miner with **multiple-comparisons accounting** and mirrored-candidate de-duplication; experiment planner that reports infeasibility rather than quietly shrinking the effect. Refuses to conclude anything below 10 posts. - **Evidence discipline — two widely repeated claims corrected rather than propagated.** (1) "A personalised connection note triples acceptance (~45% vs ~15%)" is not supported by the largest samples, which show acceptance close to identical either way (~26.4%); what a note moves is the **post-accept reply rate** (~5.4% → ~9.4%), which is why the builder refuses an ask in a first-touch note. (2) The ~19% in-body link reach reduction has never been confirmed by LinkedIn as a penalty and has a plausible dwell-time explanation, so it is a warning rather than a blocking finding. Every reference carries per-claim confidence levels (🟢 LinkedIn-official / 🟡 third-party study / 🔴 folklore). - All six SKILL.md files are a full **6/6 PASS** on the write-a-skill checklist. Every tool supports `--help`, `--sample`, and `--output json` with typed exit codes. - **Counters:** skills 380 → 386; plugins 96 → 97; tools 706 → 723; references 823 → 838; agents 114 → 116; commands 138 → 146 (verified via `scripts/derive_counters.py --check`). ### Fixed - Synced three previously-merged skills (`engineering/agent-memory`, `engineering/hivemind`, `engineering/skill-doctor`) into the `.hermes/` and `.vibe/` mirror trees, which had drifted behind `.codex/` and `.gemini/`. ## [2.12.0] - 2026-08-24 — consolidated release: 20 domains, 380 skills, full issue-triage sweep **First tagged release since v2.9.0.** Versions 2.10.0–2.11.2 were documented in CLAUDE.md/README at the time but never entered here, so the Release workflow never tagged them; this entry consolidates everything since the v2.9.0 tag — the previously documented v2.10.x/v2.11.x work plus all post-2.11.2 merges. Headline counters at this release: **380 skills · 96 marketplace plugins · 20 domains · 706 Python tools · 823 reference docs · 114 agents · 138 slash commands** (derived and gated by `scripts/derive_counters.py --check`). ### Added — consolidated from the untagged v2.10.0–v2.11.2 releases - **markdown-html/** domain complete (v2.10.0–v2.10.3): orchestrator + design-system foundation, then `md-document` (long-form), `md-review` (2-col code review), `md-slides` (single-file deck with presenter mode). - **engineering/agent-harness** (v2.11.0): manifest builder + goal compiler + loop controller turning any domain into a bounded, self-verifying agent loop; agentic-readiness audit of both engineering folders. - **product-team + project-management as agent-harness domains** (v2.11.1): fork-orchestrators, deterministic goal routers, Jira snapshot bridge with Monte Carlo forecasting, delegation-governance loop gate, discovery cadence tracker + OST linter; audit record `audit/pm-product-agentic-2026-07/`. - **engineering/skillopt-sleep** (v2.11.2): vendored microsoft/SkillOpt nightly self-improvement engine with 23 documented hardening deviations. ### Added — post-v2.11.2 merges in this release - **agent-launcher/** — 20th top-level domain: Claude Managed Agent launcher (full detail in its section below). - **engineering/memory-engineering** — design/price/audit agent memory systems (cost profiler, architecture picker, density auditor, forgetting-policy linter). - **engineering/agent-memory** — four-tier (L0–L3) promotion-gated memory ladder over Claude Code hooks; nothing reaches a CLAUDE.md without a human adopt. - **engineering/human-gate**, **engineering/book-to-skill**, **engineering/hivemind** (PR #979), **productivity/fable-goal**, **productivity coverage expansion** (weekly-review, deep-work, meetings + public audit `audit/productivity-2026-07/`), **marketing local-seo-manager**, code-reviewer language expansion — detailed sections below. - **c-level-agents/** promoted to its own top-level domain directory (issue #949). ### Fixed — full reported-issue triage sweep (PRs #972, #973, #982) All 17 open issues driven to a final state; the 14 resolvable ones fixed and closed: - **#954** — 39 `plugin.json` manifests carried non-spec `source`/`attribution` keys that made Claude Code reject the whole manifest (40% of the marketplace uninstallable). Keys relocated to `.claude-plugin/authoring-notes.json` sidecars; `check_plugin_json.py` now hard-fails any recurrence in CI. - **#949** — `c-level-skills` never loaded because `c-level-agents` was nested inside its marketplace source; moved to a top-level directory. - **#885** — plugin skills shadowing built-in commands (`status`, `review`, `init`, `resume`) renamed across four plugins (`memory-status`, `pw-init`/`pw-review`, `hub-init`/`hub-status`, `ar-status`/`ar-resume`); new blocking CI gate `scripts/check_skill_names.py` + rule in SKILL-AUTHORING-STANDARD.md. - **#969** — `UnicodeEncodeError` on legacy Windows codepages: nine scripts now reconfigure stdout/stderr to UTF-8; `PYTHONUTF8=1` documented. - **#968** — Windows symlink-checkout caveat documented (INSTALLATION.md "Windows Notes" + README pointer). - **#933** — all dead links to the maintainer-local `megaprompts/` tree (~75 files incl. the docs site) replaced with annotated plain text. - **#931** — DynamoDB on-demand pricing corrected to post-Nov-2024 rates. - **#924** — plugin hook commands quote `"${CLAUDE_PLUGIN_ROOT}"` (space-safe). - **#978** — playwright-pro's TestRail/BrowserStack MCP servers (which could never start — dependencies never installed) are now a documented opt-in instead of a permanent `Failed to connect` pair for every user. - **#977** — two agents shipping without YAML frontmatter, repaired via the G10 frontmatter gate work (PR #936). - Spam/out-of-scope issues #925, #960, #923, #951 closed with rationale; proposals #910, #952, #962 triaged with approval/scoping replies; superseded PRs #932/#966 closed with credit. ### CI - New blocking gates since v2.9.0: built-in-shadowing skill names (#885), frontmatter YAML validation (G10), retired-model lint (G7), path linter G1 and script smoke G8 flipped blocking, plugin-manifest key rejection (#954), marketplace description 1024-char cap (Copilot CLI, PR #964). The sections below — formerly stacked as `[Unreleased]` — are part of this release. ### agent-launcher: session-goal domain plugin for Claude Managed Agents (PR #961, merged 2026-08-21) ### Added — `agent-launcher/` (new top-level domain, 19th) Plugin re-implementation of Anthropic's [`launch-your-agent`](https://github.com/anthropics/launch-your-agent) reference skill (Apache-2.0; **independent, not a fork**) for building **Claude Managed Agents (CMA)** in the user's own Anthropic account. Organizing idea: **every session starts with a goal** (`./my-agent/goal.json`, surfaced by an opt-in `AGENT_LAUNCHER_SESSION=1` SessionStart hook and driven by `/cs:goal`); `loop_compiler.py` compiles that goal into a **bounded grade→iterate loop** (CMA `user.define_outcome` self-grading, `max_iterations` clamped 1..20 — never unbounded), a **recurring POSIX-cron scheduled-deployment loop** ("run without you", optionally self-grading each firing via a nested outcome), or a **single-pass interview→stage→launch workflow**. - **6 skills:** `agent-launcher-orchestrator` (`context: fork` goal router with exit-code route/ask/refuse) + `interview` (six intake slots → build sheet with primitives table + v1/v2 deferrals + eval plan) + `stage-launch` (validated env/agent/session/kickoff payloads + resumable **BYOK curl** launch script that reads `$ANTHROPIC_API_KEY` at runtime and never embeds it) + `grade-iterate` (outcome/rubric + verdict reader + held-back eval scaffold capped at the 25-thread ceiling) + `run-without-you` (5-field POSIX cron + IANA tz + wall-clock-DST validation, deployment payload with test-run curl, NEXT-DIRECTIONS writer) + `wrap-up` (primitives inventory + regenerated single-file overview HTML + ranked next upgrades). - **18 stdlib-only deterministic scaffolder tools** (3 per skill; NO network/API calls; all pass `--help` + `--sample`), **4 agents** (orchestrator + interviewer + grader + deployer), **8 `/cs:*` commands** (launch, goal, interview, stage-launch, grade, run-without-you, wrap-up, grill-agent-launcher), **opt-in SessionStart/SessionEnd hooks** (exit 0 on any error — can never break a session), **5 shared references**, **4 assets** (build-sheet JSON schema + overview/NEXT-DIRECTIONS templates + example). - Validators enforce CMA limits (≤20 skills/session, ≤8 memory stores, depth-1 multiagent ≤20 roster / ≤25 threads, `max_iterations` ≤20, ≤20 creds/vault, ≤1,000 deployments/org); `payload_validator.py` FAILs on any embedded API key. - **Verification:** independent 10-agent workflow re-checked every SPEC.md part against disk — 9/9 PASS, zero differences from spec (delivery report kept in maintainer-local `documentation/`, per the sprint-artifact convention; the public build target is `agent-launcher/SPEC.md`). Full 4-phase pipeline verified end-to-end; generated `launch.sh` passes `bash -n`. - **Counters** (at merge): skills 362 → 368, domains 18 → 19, tools 644 → 664, refs 741 → 746, agents 102 → 106, commands 116 → 124, plugins 88 → 89 (derived via `scripts/derive_counters.py --check`). - Distinct from `engineering/agent-harness` (generic bounded loop over any repo domain) and `engineering/write-a-skill` (authors Claude Code skills, not CMAs). ### human-gate: batched human review as a verification artifact (this PR) ### Audited — `petergyang/human-review` Public audit record at `audit/human-review-2026-08/AUDIT.md`. Upstream (npm `human-review@0.6.0`, MIT © Peter Yang) is a ~5,200 LOC Node application that opens an HTML/Markdown file or localhost page in the browser for direct editing and anchored comments, then ships the batch back to the agent as JSON. **Verified: its own test suite passes 90/90.** Security posture is better than most local-server tools — loopback-only bind, DNS-rebinding `Host` check, constant-time token compare, realpath-checked traversal guard, a deliberately inert Markdown renderer, and a 45-minute idle self-shutdown. **Verdict: do not vendor, do adopt the pattern.** Node 20 + an npm runtime dependency fails the same stdlib-only test that kept the heavier `skillopt` package out in v2.11.2. Seven findings recorded, three material: **F1 (HIGH)** the skill instructs the agent to run unpinned `npx -y human-review`, so every invocation may fetch and execute a newly published version; **F2 (MED)** "do not end your turn" plus re-poll on timeout, with no headless guard and no retry cap — the AR5 loop-discipline gap `audit/engineering-agentic-2026-07/` already named as repo-wide; **F3 (MED)** only `/api/*` is token-gated, not `/artifact/` or `/s/`. Also worth stating plainly: despite the name, this is **not** a humanizer. It is human *approval*, not human *voice* — no overlap with `engineering/behuman` or `marketing-skill/content-humanizer`. ### Added — `engineering/human-gate` Conceptual derivation (no upstream code copied), built to this repo's conventions: three stdlib-only Python scripts, no server, no socket, no network fetch. - **`review_page_builder.py`** — Markdown/HTML → single-file review page with every block anchored (`data-hg="b7"`). **Zero network requests** — no CDN, no fonts, no Prism; ~11 KB, opens over `file://`. Markdown is rendered by a stdlib subset parser that escapes before applying inline markup and scheme-allowlists every href; HTML input is re-emitted through `html.parser` with `