{
  "updated": "2026-10-17",
  "window": {
    "from": "2026-08-15",
    "to": "2026-10-17"
  },
  "method": "Read by hand from about 1,000 public posts on X by developers sharing real configs, repos and failure reports (engagement bait excluded), then checked against official changelogs and docs. Only behaviour confirmed in vendor documentation is stated as fact.",
  "url": "https://setupbay.com/trends/",
  "items": [
    {
      "id": "review-gets-configured",
      "title": "Review is the bottleneck, so review gets configured",
      "date": "2026-10-16",
      "summary": "Claude Code Review reads REVIEW.md from the default branch, never from the pull request; Cursor Bugbot reads .cursor/BUGBOT.md and ignores .cursor/rules. Developers also have one agent ask another model (codex exec, claude -p) for a read-only review before saying done, and attach screenshots to PRs with gh --attach (gh 2.99).",
      "practice": "Put review-only rules in review files, cap nits, get a read-only second opinion on risky diffs, and keep PRs small.",
      "sources": [
        {
          "title": "Claude Code docs, customise Code Review",
          "url": "https://code.claude.com/docs/en/code-review-customize",
          "date": "2026-10-16"
        },
        {
          "title": "Cursor docs, Bugbot",
          "url": "https://cursor.com/docs/bugbot",
          "date": "2026-10-16"
        },
        {
          "title": "GitHub CLI 2.99.0",
          "url": "https://github.com/cli/cli/releases/tag/v2.99.0",
          "date": "2026-09-01"
        },
        {
          "title": "@Damir_Akaza: Claude Code asks codex exec to review",
          "url": "https://x.com/Damir_Akaza/status/2106333764548702392",
          "date": "2026-10-03"
        }
      ],
      "loadouts": [
        {
          "id": "ai-code-review-rules",
          "title": "AI code review rules",
          "url": "https://setupbay.com/loadouts/ai-code-review-rules/"
        },
        {
          "id": "second-opinion-review",
          "title": "Second-opinion review from another model",
          "url": "https://setupbay.com/loadouts/second-opinion-review/"
        },
        {
          "id": "pr-hygiene-for-agents",
          "title": "PR hygiene for agents",
          "url": "https://setupbay.com/loadouts/pr-hygiene-for-agents/"
        }
      ],
      "url": "https://setupbay.com/trends/#review-gets-configured"
    },
    {
      "id": "spend-caps-outside-the-chat",
      "title": "Spend caps move from goodwill to flags and ledgers",
      "date": "2026-10-16",
      "summary": "Accenture now centrally funds $29 a month of Claude per employee from 1 October, with anything above charged to a project code (404 Media, 15 October; Accenture says it is a funding rule, not a hard limit). Practitioners cap unattended runs instead of trusting the session: Claude Code's --max-budget-usd works in print mode only, counts subagent spend, and since 2.1.296 prices Sonnet 5.5 cache reads at $0.10 per million tokens. Codex and Antigravity report token usage in their JSON output but have no budget flag.",
      "practice": "Cap every headless run with the agent's own flag where one exists, and keep a shared daily ledger across agents for the ones that only report tokens.",
      "sources": [
        {
          "title": "404 Media: Accenture funds $29 a month of Claude per employee",
          "url": "https://www.404media.co/accenture-tells-employees-they-can-now-spend-only-29-on-claude-per-month/",
          "date": "2026-10-15"
        },
        {
          "title": "Claude Code changelog (2.1.296 cache-read pricing; 2.1.217 budget stops subagents)",
          "url": "https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md",
          "date": "2026-10-17"
        },
        {
          "title": "@dhillonpost: --max-budget-usd counts subagent spend, print mode only",
          "url": "https://x.com/dhillonpost/status/2106644976494854234",
          "date": "2026-10-04"
        },
        {
          "title": "@ekcheungAI: cap a headless run with --max-turns and --max-budget-usd",
          "url": "https://x.com/ekcheungAI/status/2111524159755010507",
          "date": "2026-10-17"
        }
      ],
      "loadouts": [
        {
          "id": "agent-spend-cap",
          "title": "One spend cap across Claude Code, Codex and Antigravity",
          "url": "https://setupbay.com/loadouts/agent-spend-cap/"
        },
        {
          "id": "headless-agents-ci",
          "title": "Headless agents in CI",
          "url": "https://setupbay.com/loadouts/headless-agents-ci/"
        }
      ],
      "url": "https://setupbay.com/trends/#spend-caps-outside-the-chat"
    },
    {
      "id": "expo-agent-cli",
      "title": "Expo SDK 58 ships a CLI built for coding agents",
      "date": "2026-10-15",
      "summary": "Expo SDK 58 (React Native 0.88, built for iOS 27) adds the experimental @expo/agent-cli. It sits on top of Expo CLI, EAS CLI and expo-doctor, answers Expo Go compatibility without starting the app, prints next steps after each command, and syncs agent skills shipped inside node_modules. Expo's reason: agents kept finding out about native modules by hitting runtime errors.",
      "practice": "Make the native boundary explicit to the agent, with a development build for new native modules and a fingerprint check before any EAS Update.",
      "sources": [
        {
          "title": "Expo changelog: SDK 58",
          "url": "https://expo.dev/changelog/sdk-58",
          "date": "2026-10-15"
        },
        {
          "title": "@kadikraman: Expo SDK 58 is out, with expo/agent-cli",
          "url": "https://x.com/kadikraman/status/2111140629640048700",
          "date": "2026-10-16"
        }
      ],
      "loadouts": [
        {
          "id": "expo-eas-update",
          "title": "Expo EAS Update without shipping native changes over the air",
          "url": "https://setupbay.com/loadouts/expo-eas-update/"
        },
        {
          "id": "expo-react-native",
          "title": "Expo and React Native with Expo MCP",
          "url": "https://setupbay.com/loadouts/expo-react-native/"
        }
      ],
      "url": "https://setupbay.com/trends/#expo-agent-cli"
    },
    {
      "id": "parallel-worktrees",
      "title": "Parallel agents in worktrees are the default",
      "date": "2026-10-15",
      "summary": "Running several agents at once, each in its own git worktree, is built into the tools: claude --worktree and worktree-isolated subagents, managed worktrees in Codex 0.162, and gh issue develop --worktree.",
      "practice": "One task per worktree and branch, separate ports and dependencies, and clean up only after merge.",
      "sources": [
        {
          "title": "Claude Code docs, worktrees",
          "url": "https://code.claude.com/docs/en/worktrees",
          "date": "2026-10-16"
        },
        {
          "title": "GitHub CLI 2.99.0",
          "url": "https://github.com/cli/cli/releases/tag/v2.99.0",
          "date": "2026-09-01"
        }
      ],
      "loadouts": [
        {
          "id": "parallel-agents-worktrees",
          "title": "Parallel agents in git worktrees",
          "url": "https://setupbay.com/loadouts/parallel-agents-worktrees/"
        }
      ],
      "url": "https://setupbay.com/trends/#parallel-worktrees"
    },
    {
      "id": "antigravity-plugins-auto-mode",
      "title": "Antigravity CLI ships weekly: a plugin marketplace, then Auto mode",
      "date": "2026-10-14",
      "summary": "Antigravity CLI 1.3.2 (8 October) added /plugin and the official marketplace for plugins that bundle skills, MCP servers, subagents, rules and hooks; 1.3.5 (14 October) added Auto mode (--mode auto), which approves edits and safe commands and has a separate agent review commands that would leave the terminal sandbox. 1.4.0 (16 October) fixed ${VAR} expansion in plugin MCP headers.",
      "practice": "Pin what a plugin installs and read its skills and MCP config before enabling it; use Auto mode with the terminal sandbox on, not instead of it.",
      "sources": [
        {
          "title": "Antigravity CLI 1.3.2 release notes (plugin marketplace)",
          "url": "https://github.com/google-antigravity/antigravity-cli/releases/tag/1.3.2",
          "date": "2026-10-08"
        },
        {
          "title": "Antigravity CLI 1.3.5 release notes (Auto mode)",
          "url": "https://github.com/google-antigravity/antigravity-cli/releases/tag/1.3.5",
          "date": "2026-10-14"
        },
        {
          "title": "Antigravity CLI 1.4.0 release notes",
          "url": "https://github.com/google-antigravity/antigravity-cli/releases/tag/1.4.0",
          "date": "2026-10-16"
        }
      ],
      "loadouts": [
        {
          "id": "one-agents-md-every-agent",
          "title": "One AGENTS.md for every agent",
          "url": "https://setupbay.com/loadouts/one-agents-md-every-agent/"
        },
        {
          "id": "headless-agents-ci",
          "title": "Headless agents in CI",
          "url": "https://setupbay.com/loadouts/headless-agents-ci/"
        }
      ],
      "url": "https://setupbay.com/trends/#antigravity-plugins-auto-mode"
    },
    {
      "id": "anti-slop-writing-rules",
      "title": "Teams write rules against AI-sounding prose",
      "date": "2026-10-14",
      "summary": "Readers now name the tells on sight: delve, seamless, pivotal, \"it's not just X, it's Y\", em-dash runs, emoji bullets and proof nobody can check such as \"10,000+ users\". Wikipedia's WikiProject AI Cleanup keeps a dated list of overused words by model generation, and practitioners are adding plain-writing rules to their agent files so READMEs, PR descriptions and release notes stop reading as generated.",
      "practice": "Put plain-writing rules in AGENTS.md for every file the agent writes, and lint prose for the known patterns while skipping code and quotations.",
      "sources": [
        {
          "title": "@CDGalpha: the tells, from 'delve' to em-dash spam and fake proof",
          "url": "https://x.com/CDGalpha/status/2110292549210620174",
          "date": "2026-10-14"
        },
        {
          "title": "Wikipedia: Signs of AI writing",
          "url": "https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing",
          "date": "2026-10-17"
        }
      ],
      "loadouts": [
        {
          "id": "no-ai-voice-writing",
          "title": "Writing rules that avoid AI-sounding prose",
          "url": "https://setupbay.com/loadouts/no-ai-voice-writing/"
        }
      ],
      "url": "https://setupbay.com/trends/#anti-slop-writing-rules"
    },
    {
      "id": "evals-from-traces",
      "title": "Evals start from real traces, not metric lists",
      "date": "2026-10-13",
      "summary": "Practitioners building agents keep repeating one order of work: read 30 to 50 real traces, note what failed, group the notes into failure modes, and only then write evals, replaying real failures after every prompt, tool or model change. Generic scores (helpfulness, coherence) are out; binary checks tied to observed failures are in.",
      "practice": "Do error analysis on real traces first; turn each recurring failure into a regression case that links to its trace and is shown to fail on the old output.",
      "sources": [
        {
          "title": "Hamel Husain: LLM evals FAQ",
          "url": "https://hamel.dev/blog/posts/evals-faq/",
          "date": "2026-10-16"
        },
        {
          "title": "@Benogju: look at the data, start with around 30 traces",
          "url": "https://x.com/Benogju/status/2104930651573240043",
          "date": "2026-09-29"
        },
        {
          "title": "@pauliusztin_: replay your agent's real failures after every change",
          "url": "https://x.com/pauliusztin_/status/2109986591959626178",
          "date": "2026-10-13"
        }
      ],
      "loadouts": [
        {
          "id": "evals-from-real-failures",
          "title": "Evals from real failures",
          "url": "https://setupbay.com/loadouts/evals-from-real-failures/"
        }
      ],
      "url": "https://setupbay.com/trends/#evals-from-traces"
    },
    {
      "id": "mcp-stateless-migration",
      "title": "MCP servers start moving to the stateless 2026-07-28 spec",
      "date": "2026-10-12",
      "summary": "The 2026-07-28 revision removes the initialize handshake and Mcp-Session-Id: clients discover a server with server/discover, every request carries its protocol version, and multi-round-trip results replace server-initiated requests. Builders point out that stateless servers run behind a normal load balancer. Adoption is early: one survey of 26,000 public remote servers found about 3% on the new revision, and developers report clients differing on which revision they ask for, so servers answer both for now.",
      "practice": "Serve both revisions during the migration, and probe the server with an opening server/discover, an unknown version and a multi-round-trip tool call before shipping.",
      "sources": [
        {
          "title": "MCP specification 2026-07-28: changelog",
          "url": "https://modelcontextprotocol.io/specification/2026-07-28/changelog",
          "date": "2026-10-17"
        },
        {
          "title": "@mohabbuilds: stateless MCP runs behind a normal load balancer",
          "url": "https://x.com/mohabbuilds/status/2107485248351064089",
          "date": "2026-10-06"
        },
        {
          "title": "@McpMetrics: about 3% of 26k remote servers on 2026-07-28",
          "url": "https://x.com/McpMetrics/status/2108302356836200562",
          "date": "2026-10-08"
        },
        {
          "title": "@duggalgg: one server, two revisions, for a while",
          "url": "https://x.com/duggalgg/status/2109359944931885099",
          "date": "2026-10-11"
        }
      ],
      "loadouts": [
        {
          "id": "mcp-2026-07-28-migration",
          "title": "Migrate an MCP server to protocol 2026-07-28",
          "url": "https://setupbay.com/loadouts/mcp-2026-07-28-migration/"
        },
        {
          "id": "mcp-server-python",
          "title": "MCP server in Python (official SDK v2)",
          "url": "https://setupbay.com/loadouts/mcp-server-python/"
        },
        {
          "id": "mcp-server-typescript",
          "title": "MCP server (TypeScript)",
          "url": "https://setupbay.com/loadouts/mcp-server-typescript/"
        },
        {
          "id": "mcp-server-go",
          "title": "MCP server in Go (official go-sdk)",
          "url": "https://setupbay.com/loadouts/mcp-server-go/"
        }
      ],
      "url": "https://setupbay.com/trends/#mcp-stateless-migration"
    },
    {
      "id": "skills-vetted-like-dependencies",
      "title": "Skills and plugins get vetted like dependencies",
      "date": "2026-10-11",
      "summary": "After Plugin4Shell, practitioners describe skill bundles with shell access as a supply chain: pin the version, read what each skill can run and reach, and scan before install. NVIDIA's SkillSpector scans skill folders for risky patterns (v2.13.0 on 16 October), and Claude Code marketplaces accept a full commit SHA per plugin, with background auto-update off by default for third-party marketplaces.",
      "practice": "Install skills, plugins and MCP servers only after a pinned, reviewed scan; prove the checkout matches the pinned SHA and keep auto-update off for third-party sources.",
      "sources": [
        {
          "title": "@SarahLakzit: a skill bundle with shell reach is a supply chain",
          "url": "https://x.com/SarahLakzit/status/2109274745585742114",
          "date": "2026-10-11"
        },
        {
          "title": "@TheDailyViber: skills look like documentation, behave like supply chain",
          "url": "https://x.com/TheDailyViber/status/2102389962897248684",
          "date": "2026-09-22"
        },
        {
          "title": "NVIDIA SkillSpector v2.13.0",
          "url": "https://github.com/NVIDIA/SkillSpector/releases/tag/v2.13.0",
          "date": "2026-10-16"
        },
        {
          "title": "Claude Code docs: plugin marketplace reference",
          "url": "https://code.claude.com/docs/en/plugins/marketplace-reference",
          "date": "2026-10-17"
        }
      ],
      "loadouts": [
        {
          "id": "agent-extension-vetting",
          "title": "Vet skills, plugins and MCP servers before install",
          "url": "https://setupbay.com/loadouts/agent-extension-vetting/"
        },
        {
          "id": "github-actions-hardening",
          "title": "GitHub Actions hardening for agent workflows",
          "url": "https://setupbay.com/loadouts/github-actions-hardening/"
        }
      ],
      "url": "https://setupbay.com/trends/#skills-vetted-like-dependencies"
    },
    {
      "id": "agents-md-shared-contract",
      "title": "AGENTS.md is the shared contract; per-agent files stay thin",
      "date": "2026-10-10",
      "summary": "Claude Code reads AGENTS.md natively from v2.1.277, but only when no CLAUDE.md is on the path, so a stray CLAUDE.md now shadows it. Codex, Copilot and Cursor read AGENTS.md; Antigravity CLI reads GEMINI.md and AGENTS.md.",
      "practice": "Keep rules in AGENTS.md. Any CLAUDE.md or GEMINI.md should only import it (@AGENTS.md) plus genuine agent quirks.",
      "sources": [
        {
          "title": "Claude Code docs, memory and AGENTS.md",
          "url": "https://code.claude.com/docs/en/memory",
          "date": "2026-10-16"
        },
        {
          "title": "@torfinpd: CLAUDE.md shadows AGENTS.md in 161 of 283 top repos",
          "url": "https://x.com/torfinpd/status/2108876607431553167",
          "date": "2026-10-10"
        },
        {
          "title": "@mitsuhiko: AGENTS.md only",
          "url": "https://x.com/mitsuhiko/status/2088900774466105797",
          "date": "2026-08-16"
        }
      ],
      "loadouts": [
        {
          "id": "one-agents-md-every-agent",
          "title": "One AGENTS.md for every agent",
          "url": "https://setupbay.com/loadouts/one-agents-md-every-agent/"
        },
        {
          "id": "cursor-rules-that-load",
          "title": "Cursor rules that load",
          "url": "https://setupbay.com/loadouts/cursor-rules-that-load/"
        }
      ],
      "url": "https://setupbay.com/trends/#agents-md-shared-contract"
    },
    {
      "id": "skills-over-long-files",
      "title": "Short always-on rules plus on-demand skills",
      "date": "2026-10-10",
      "summary": "Long instruction files are being split into Agent Skills that load only when needed. Cursor loads skills from .agents/skills and other agents' folders and offers /migrate-to-skills; pnpm 12.11 links skills shipped inside packages; vendors ship skills as plugins (Unity).",
      "practice": "Keep AGENTS.md short; move procedures longer than about 15 lines into .agents/skills/<name>/SKILL.md.",
      "sources": [
        {
          "title": "Cursor docs, skills",
          "url": "https://cursor.com/docs/skills",
          "date": "2026-10-16"
        },
        {
          "title": "pnpm docs, agent skills",
          "url": "https://pnpm.io/agent-skills",
          "date": "2026-10-10"
        },
        {
          "title": "Unity agent plugin",
          "url": "https://github.com/Unity-Technologies/unity-agent-plugin",
          "date": "2026-10-16"
        }
      ],
      "loadouts": [
        {
          "id": "cursor-rules-that-load",
          "title": "Cursor rules that load",
          "url": "https://setupbay.com/loadouts/cursor-rules-that-load/"
        },
        {
          "id": "unity-agent-plugin",
          "title": "Unity 6 with the official agent plugin",
          "url": "https://setupbay.com/loadouts/unity-agent-plugin/"
        }
      ],
      "url": "https://setupbay.com/trends/#skills-over-long-files"
    },
    {
      "id": "loops-with-outside-limits",
      "title": "Agent loops go mainstream; the limits move outside the agent",
      "date": "2026-10-09",
      "summary": "Ralph-style loops are now built in: Claude Code's /goal re-runs turns until a separate small model judges a condition met, and Codex's /goal (0.128.0 and later) keeps a persistent objective across turns. Practitioners note that in-session loops and plugins keep one growing context, so for long jobs they still run a fresh process per pass with the check, iteration cap and stop file enforced by a script.",
      "practice": "Give every loop a check it cannot edit, an iteration and no-progress cap, its own branch and a human who merges; use /goal for shorter jobs.",
      "sources": [
        {
          "title": "Claude Code docs: keep Claude working toward a goal",
          "url": "https://code.claude.com/docs/en/goal",
          "date": "2026-10-16"
        },
        {
          "title": "Codex 0.128.0 release notes: persisted /goal workflows",
          "url": "https://github.com/openai/codex/releases/tag/rust-v0.128.0",
          "date": "2026-04-30"
        },
        {
          "title": "@DRMacIver: the Claude Ralph plugin didn't clear context between iterations",
          "url": "https://x.com/DRMacIver/status/2102456718915469473",
          "date": "2026-09-22"
        },
        {
          "title": "@mitchalderson: /goal fires off a Ralph loop",
          "url": "https://x.com/mitchalderson/status/2108622371829518390",
          "date": "2026-10-09"
        }
      ],
      "loadouts": [
        {
          "id": "ralph-loop-guarded",
          "title": "Guarded Ralph loop",
          "url": "https://setupbay.com/loadouts/ralph-loop-guarded/"
        }
      ],
      "url": "https://setupbay.com/trends/#loops-with-outside-limits"
    },
    {
      "id": "enforcement-in-hooks",
      "title": "Hard rules move from prose into hooks and permissions",
      "date": "2026-10-08",
      "summary": "\"Never do X\" lines go into PreToolUse hooks that deny with a reason, and policy hooks fail closed with onFailure \"block\" (Claude Code v2.1.295). Only exit code 2 blocks; other non-zero exits do not. Deny rules are one layer, not a sandbox: Read denies do not stop shell reads.",
      "practice": "Enforce must-never rules with hooks or deny rules, test each by attempting the forbidden action, and keep a sandbox for real isolation.",
      "sources": [
        {
          "title": "Claude Code docs, hooks reference",
          "url": "https://code.claude.com/docs/en/hooks",
          "date": "2026-10-16"
        },
        {
          "title": "@paulhq: only exit 2 blocks",
          "url": "https://x.com/paulhq/status/2100933039945912672",
          "date": "2026-09-18"
        },
        {
          "title": "@coldboothq: deny rules are not a sandbox",
          "url": "https://x.com/coldboothq/status/2106519666885619942",
          "date": "2026-10-03"
        }
      ],
      "loadouts": [
        {
          "id": "claude-code-hooks-guardrails",
          "title": "Claude Code hooks guard rails",
          "url": "https://setupbay.com/loadouts/claude-code-hooks-guardrails/"
        }
      ],
      "url": "https://setupbay.com/trends/#enforcement-in-hooks"
    },
    {
      "id": "untrusted-by-default",
      "title": "Supply chain and injection are first-class concerns",
      "date": "2026-10-08",
      "summary": "Plugin4Shell (September 2026) bypassed marketplace pinning in several agents (fixed in Claude Code 2.1.179 and Codex 0.146.0). Codex ignores project AGENTS.md in untrusted folders. claude -p runs a repository's hooks without a trust prompt unless --bare is used, which Anthropic recommends for scripts.",
      "practice": "Pin CLIs, plugins and MCP packages, run CI agents with --bare and least privilege, and treat PR, issue and page text as data.",
      "sources": [
        {
          "title": "Claude Code docs, headless mode",
          "url": "https://code.claude.com/docs/en/headless",
          "date": "2026-10-16"
        },
        {
          "title": "Codex docs, non-interactive mode",
          "url": "https://developers.openai.com/codex/noninteractive",
          "date": "2026-10-16"
        },
        {
          "title": "The Hacker News: Plugin4Shell",
          "url": "https://thehackernews.com/2026/09/plugin4shell-lets-repository-owners.html",
          "date": "2026-09-18"
        }
      ],
      "loadouts": [
        {
          "id": "headless-agents-ci",
          "title": "Headless agents in CI",
          "url": "https://setupbay.com/loadouts/headless-agents-ci/"
        },
        {
          "id": "supabase-agent-safety",
          "title": "Supabase with a safe agent",
          "url": "https://setupbay.com/loadouts/supabase-agent-safety/"
        },
        {
          "id": "agent-extension-vetting",
          "title": "Vet skills, plugins and MCP servers before install",
          "url": "https://setupbay.com/loadouts/agent-extension-vetting/"
        },
        {
          "id": "github-actions-hardening",
          "title": "GitHub Actions hardening for agent workflows",
          "url": "https://setupbay.com/loadouts/github-actions-hardening/"
        }
      ],
      "url": "https://setupbay.com/trends/#untrusted-by-default"
    },
    {
      "id": "swift-logic-in-packages",
      "title": "SwiftUI logic moves into Swift packages tested on Linux",
      "date": "2026-10-07",
      "summary": "iOS developers working with agents keep the Xcode project out of reach and the logic in a local Swift package: the agent edits Packages/, Xcode imports it, and the package's tests run in seconds on Linux in the official swift Docker image, with only the SwiftUI views built on a macOS runner. Swift Testing ships with the toolchain on Linux, so the same tests run in both places.",
      "practice": "Put view models and logic in a Swift package with Swift Testing, run swift test on Linux CI, and build the views on macOS.",
      "sources": [
        {
          "title": "@GameManiaSPX: move the logic into a local Swift package",
          "url": "https://x.com/GameManiaSPX/status/2107449164473029109",
          "date": "2026-10-06"
        },
        {
          "title": "@muratnakmuay: package tests on Linux in swift:6.4, views on a macOS runner",
          "url": "https://x.com/muratnakmuay/status/2107796854264025581",
          "date": "2026-10-07"
        },
        {
          "title": "Apple: Swift Testing documentation",
          "url": "https://developer.apple.com/documentation/testing",
          "date": "2026-10-17"
        }
      ],
      "loadouts": [
        {
          "id": "swiftui-swift-test-ci",
          "title": "SwiftUI with a Swift package core tested by swift test in CI",
          "url": "https://setupbay.com/loadouts/swiftui-swift-test-ci/"
        },
        {
          "id": "ios-mobilebuildmcp",
          "title": "iOS builds with MobileBuildMCP (XcodeBuildMCP)",
          "url": "https://setupbay.com/loadouts/ios-mobilebuildmcp/"
        }
      ],
      "url": "https://setupbay.com/trends/#swift-logic-in-packages"
    },
    {
      "id": "handoff-files-over-compaction",
      "title": "Handoff files replace compaction between sessions",
      "date": "2026-10-06",
      "summary": "Instead of letting long sessions compact, practitioners write a short handoff before clearing context or switching agents: the goal, files touched, decisions and why, the exact failing test and error, and one next step. Several commit it to the repository so a different agent, or a person, can resume, and note which MCP servers the work needs because the next agent may not have them.",
      "practice": "Write HANDOFF.md before /clear, compaction or a switch of agent, record the commit it describes, and re-run its checks before trusting it.",
      "sources": [
        {
          "title": "@automater_ai: goal, files touched, done, next step",
          "url": "https://x.com/automater_ai/status/2107481727073395054",
          "date": "2026-10-06"
        },
        {
          "title": "@calloway_dev: one owner per task; read the handoff before starting",
          "url": "https://x.com/calloway_dev/status/2107099970562085278",
          "date": "2026-10-05"
        },
        {
          "title": "@agentjeanclaude: commit a handoff file when switching agents",
          "url": "https://x.com/agentjeanclaude/status/2104989005813260667",
          "date": "2026-09-29"
        },
        {
          "title": "@PublicAI_: failing test and last error in every handoff",
          "url": "https://x.com/PublicAI_/status/2104179567510556875",
          "date": "2026-09-27"
        }
      ],
      "loadouts": [
        {
          "id": "agent-handoff",
          "title": "Handoff without compaction",
          "url": "https://setupbay.com/loadouts/agent-handoff/"
        }
      ],
      "url": "https://setupbay.com/trends/#handoff-files-over-compaction"
    },
    {
      "id": "mcp-sdks-settle",
      "title": "Official MCP SDKs settle: Python v2 and Go v1.8",
      "date": "2026-10-02",
      "summary": "The official Python SDK's v2 line renamed FastMCP to MCPServer, removed the old import path and added an in-memory Client for tests (2.3.0 on 2 October). The official Go SDK reached v1.8.0 on 14 September, generating tool schemas from Go structs. Agents trained on older examples still write the removed v1 imports.",
      "practice": "Pin the SDK version, name the current API in the agent's rules, and test every tool through the SDK's own client.",
      "sources": [
        {
          "title": "MCP Python SDK docs: what's new in v2",
          "url": "https://py.sdk.modelcontextprotocol.io/whats-new/",
          "date": "2026-10-17"
        },
        {
          "title": "mcp 2.3.0 on PyPI",
          "url": "https://pypi.org/project/mcp/2.3.0/",
          "date": "2026-10-02"
        },
        {
          "title": "modelcontextprotocol/go-sdk v1.8.0",
          "url": "https://github.com/modelcontextprotocol/go-sdk/releases/tag/v1.8.0",
          "date": "2026-09-14"
        }
      ],
      "loadouts": [
        {
          "id": "mcp-server-python",
          "title": "MCP server in Python (official SDK v2)",
          "url": "https://setupbay.com/loadouts/mcp-server-python/"
        },
        {
          "id": "mcp-server-go",
          "title": "MCP server in Go (official go-sdk)",
          "url": "https://setupbay.com/loadouts/mcp-server-go/"
        }
      ],
      "url": "https://setupbay.com/trends/#mcp-sdks-settle"
    },
    {
      "id": "model-routing-written-down",
      "title": "Subagent model and effort are chosen per task, in writing",
      "date": "2026-10-01",
      "summary": "Instruction files now tell the lead agent which model and effort each subagent gets by task class. Claude Code subagents take model and effort in front matter; Codex custom agents take model and model_reasoning_effort in TOML.",
      "practice": "Route mechanical work to small models at low effort, keep judgement work on the strongest model, and brief every subagent fully.",
      "sources": [
        {
          "title": "Claude Code docs, subagents",
          "url": "https://code.claude.com/docs/en/sub-agents",
          "date": "2026-10-16"
        },
        {
          "title": "Codex docs, subagents",
          "url": "https://developers.openai.com/codex/subagents",
          "date": "2026-10-16"
        },
        {
          "title": "@chrisbanes: subagent model and reasoning selection (gist)",
          "url": "https://gist.github.com/chrisbanes/dc1407ddd22d6e8d6c4d374b564eac9a",
          "date": "2026-10-01"
        }
      ],
      "loadouts": [
        {
          "id": "subagent-model-routing",
          "title": "Subagent model routing",
          "url": "https://setupbay.com/loadouts/subagent-model-routing/"
        }
      ],
      "url": "https://setupbay.com/trends/#model-routing-written-down"
    },
    {
      "id": "frameworks-ship-agent-tooling",
      "title": "Frameworks ship their own agent skills and MCP servers",
      "date": "2026-09-23",
      "summary": "Framework and tool makers now publish version-matched agent context themselves: Phaser 4 ships agent skills inside its npm package, Expo has an official plugin for Claude Code and Codex and opened its hosted MCP server to the Free plan, and Sentry's XcodeBuildMCP was renamed MobileBuildMCP (npm mobilebuildmcp, 23 September).",
      "practice": "Point the agent at the framework's own skills or MCP server for the installed version instead of relying on model memory and old tutorials.",
      "sources": [
        {
          "title": "phaserjs/phaser: skills folder",
          "url": "https://github.com/phaserjs/phaser/tree/master/skills",
          "date": "2026-10-16"
        },
        {
          "title": "Expo changelog: Expo MCP server on the Free plan",
          "url": "https://expo.dev/changelog/the-expo-mcp-server-is-now-available-on-the-free-plan",
          "date": "2026-05-26"
        },
        {
          "title": "getsentry/MobileBuildMCP (formerly XcodeBuildMCP)",
          "url": "https://github.com/getsentry/XcodeBuildMCP",
          "date": "2026-09-23"
        },
        {
          "title": "@KhalidDevLog: daily mobile MCPs",
          "url": "https://x.com/KhalidDevLog/status/2096183096697586039",
          "date": "2026-09-05"
        }
      ],
      "loadouts": [
        {
          "id": "phaser-web-game",
          "title": "Phaser 4 web game",
          "url": "https://setupbay.com/loadouts/phaser-web-game/"
        },
        {
          "id": "expo-react-native",
          "title": "Expo and React Native with Expo MCP",
          "url": "https://setupbay.com/loadouts/expo-react-native/"
        },
        {
          "id": "ios-mobilebuildmcp",
          "title": "iOS builds with MobileBuildMCP (XcodeBuildMCP)",
          "url": "https://setupbay.com/loadouts/ios-mobilebuildmcp/"
        }
      ],
      "url": "https://setupbay.com/trends/#frameworks-ship-agent-tooling"
    },
    {
      "id": "gemini-to-antigravity",
      "title": "Gemini CLI gives way to Antigravity CLI",
      "date": "2026-06-18",
      "summary": "Google announced the move on 19 May 2026; Gemini CLI stopped serving individual Google accounts on 18 June 2026 (enterprise and API-key use continue). Antigravity CLI keeps GEMINI.md, reads workspace skills from .agents/skills/ and MCP servers from .agents/mcp_config.json, where remote servers use serverUrl.",
      "practice": "Move workspace skills from .gemini/skills/ to .agents/skills/ and MCP servers into .agents/mcp_config.json.",
      "sources": [
        {
          "title": "Antigravity CLI: migrating from Gemini CLI",
          "url": "https://antigravity.google/docs/cli/gcli-migration/",
          "date": "2026-10-16"
        },
        {
          "title": "Google Developers Blog: transitioning Gemini CLI to Antigravity CLI",
          "url": "https://developers.googleblog.com/an-important-update-transitioning-gemini-cli-to-antigravity-cli/",
          "date": "2026-05-19"
        }
      ],
      "loadouts": [
        {
          "id": "one-agents-md-every-agent",
          "title": "One AGENTS.md for every agent",
          "url": "https://setupbay.com/loadouts/one-agents-md-every-agent/"
        }
      ],
      "url": "https://setupbay.com/trends/#gemini-to-antigravity"
    }
  ]
}