Skip to content

v3.9.0

Latest

Choose a tag to compare

@github-actions github-actions released this 26 Oct 23:44
Immutable release. Only release title and notes can be modified.
21bc210

Added

  • workspace-setup (1.6.0), workspace-sandbox (1.4.0): new shared rule
    unattended-execution.md — the arc-template plan artifact, phase shape, per-milestone
    discipline, quality gates, UI e2e verification, and context-economy constraints for
    long-running, hands-off agent sessions. Ported from dntywntme's #200,
    rebased on main with the rule text taken verbatim from the owner's current canonical copy.
  • workspace-setup (1.7.0), workspace-sandbox (1.5.0): new shared rule
    read-discipline.md — read/edit hygiene for agent sessions (blast-radius checks before
    renames, read-enough-not-more, precise <file>:<lines> citations in subagent briefs,
    verifying subagent findings before acting on them).
  • .claude/rules/external-input.md and .claude/rules/claim-verification.md: the owner's
    estate rules (external input is untrusted data; verify load-bearing claims at source before
    publishing) now live in the rules SoT. No plugin deploys them; they are consumed by
    symlinking them into ~/.claude/rules/.
  • readme-generator (1.2.4): added the plugin's own README.md (it had none, so it was
    silently absent from the docs site — make docs_stage only picks up plugins/*/README.md).

Changed

  • workspace-setup (1.7.1), workspace-sandbox (1.5.1): ci-status-checks.md no longer
    names the branch-protection override flag; it now says never merge past a failing or absent
    required check. LEARNINGS.md, plan 0001 and the 3.8.0 notes below drop the flag too.
  • website-audit (1.2.6): verifying-design-canvas covers design systems that live in Design System artifacts (read with the Artifact tool under project/); DesignSync stays the route for standalone claude.ai/design projects, which close on 14 December 2026.
  • website-audit (1.2.7): its own README said WCAG 2.1 AA and omitted auditing-website-seo-geo;
    both the skill and the root README already said WCAG 2.2 and listed the skill — aligned.
  • python-dev (2.1.6), rust-dev (1.0.4), go-dev (1.0.4), typescript-dev (1.1.2),
    embedded-dev (1.2.5), gha-dev (1.2.5), workspace-setup (1.7.2),
    workspace-sandbox (1.5.2): SessionStart setup hooks only ever deployed
    settings.local.json/settings.json when the file was missing, so template fixes never
    reached a workspace that already had one. When jq is available, the hook now merges the
    plugin's permissions.allow into an existing file (deduped, existing entries kept) instead of
    skipping it; copy-if-missing stays as the no-jq fallback. Only permissions.allow is merged —
    deny/ask and every other top-level key in an existing file are left untouched.

Fixed

  • workspace-setup (1.7.1), workspace-sandbox (1.5.1): the read-once hook keyed its
    cache directory by $$, but each hook invocation is a new process — so the cache was always
    empty, every Read left behind an unused /tmp dir, and no repeat read was ever flagged.
    compact.sh cleared a dir keyed the same (wrong) way. Diff mode also blocked a changed-file
    read without showing a diff (it diffed against /dev/null). Both scripts now key the cache by
    the hook's session_id, and diff mode compares against a snapshot taken at the prior read.
    Added a regression test (.claude/scripts/read-once/test.sh, 5/5 against the fix vs. 2/5
    against the prior version). Both README read-once hook sections dropped the unverified
    "~40% reduction" figure — no benchmark backs it, and the mechanism never actually fired before
    this fix.
  • python-dev (2.1.5): setup-python-dev.sh's scaffold deploy copied every
    scaffold/workflows/*.yaml into .github/workflows/, so dependabot.yaml — which is
    Dependabot config, not a workflow — landed there too (already correctly deployed to
    .github/dependabot.yaml by a separate step). Excluded it from the workflow-copy loop.
    README now documents the full .scaffold=python deploy set; plugin.json/marketplace.json
    descriptions aligned to match.