diff --git a/blog/src/_data/media.json b/blog/src/_data/media.json index ebe12f3cd..94a181ce2 100644 --- a/blog/src/_data/media.json +++ b/blog/src/_data/media.json @@ -4757,5 +4757,28 @@ "status": "ready" }, "inline": {} + }, + "agent-tools-today-2026-10-12": { + "title": "Agent Tools Today, 12 Oct 2026: WordCraft 0.5.0, Genkit Dart 1.0, 500 Billion Tokens", + "category": "news", + "hero": { + "file": "assets/media/agent-tools-today/hero.png", + "alt": "Hand drawn sketch: a front page with five numbered lines, a clock, and a yellow character reading it out", + "prompt": "Series hero for the Agent Tools Today daily brief, drawn in code (media-src/topic-tiles.html?t=news). Reused by every brief.", + "status": "ready" + }, + "inline": {}, + "youtube": [] + }, + "claude-code-routines": { + "title": "Claude routines", + "category": "concepts", + "hero": { + "file": "assets/media/claude-code-routines/hero.png", + "alt": "Title card on white. Claude routines in large ink type beside a wall calendar with one column of days ticked, checked 12 Oct 2026.", + "prompt": "Still of the hero scene in assets/media/claude-code-routines/motion.js.", + "status": "ready" + }, + "inline": {} } } diff --git a/blog/src/assets/media/agent-tools-today-2026-10-12/motion.css b/blog/src/assets/media/agent-tools-today-2026-10-12/motion.css new file mode 100644 index 000000000..aa91f1dd0 --- /dev/null +++ b/blog/src/assets/media/agent-tools-today-2026-10-12/motion.css @@ -0,0 +1,13 @@ +/* Bright coded scenes for "Agent tools today, 12 Oct 2026". Pairs with motion.js. */ +.prose figure.mg { margin: 42px 0; } +.prose figure.mg img, .mg .mg-svg { display: block; width: 100%; height: auto; border: 1px solid #1A1320; border-radius: 18px; background: #fff; } +.mg figcaption { font: 500 13px/1.5 "Space Grotesk", system-ui, sans-serif; color: #6B5878; padding-top: 10px; text-align: center; } +.mg .mg-svg { touch-action: manipulation; -webkit-tap-highlight-color: transparent; } +.mg .mg-svg text { -webkit-user-select: none; user-select: none; pointer-events: none; } +.mg .mg-hit { cursor: pointer; outline: none; } +.mg [role="slider"] { cursor: grab; touch-action: none; } +.mg .mg-ring { stroke-opacity: 0; transition: stroke-opacity 0.15s; } +.mg .mg-hit:focus-visible .mg-ring { stroke-opacity: 1; } +.mg [role="slider"]:focus-visible circle:nth-child(2) { stroke-width: 5; } +@media (hover: hover) { .mg .mg-hit:hover .mg-ring { stroke-opacity: 0.5; } } +@media (prefers-reduced-motion: reduce) { .mg .mg-ring { transition: none; } } diff --git a/blog/src/assets/media/agent-tools-today-2026-10-12/motion.js b/blog/src/assets/media/agent-tools-today-2026-10-12/motion.js new file mode 100644 index 000000000..5c95a76fe --- /dev/null +++ b/blog/src/assets/media/agent-tools-today-2026-10-12/motion.js @@ -0,0 +1,127 @@ +/* Bright coded scenes for "Agent tools today, 12 Oct 2026". Vanilla JS, no library. +
holds a still image; this script swaps in a live SVG. + Plays only in view, honours reduced motion, "?mgstill" freezes each scene on its still frame. */ +(() => { + const NS = "http://www.w3.org/2000/svg"; + const INK = "#1A1320", YEL = "#FFCA54", BLUE = "#6C8EF5", LIL = "#B69CFF", MINT = "#7FD8AE", SKY = "#9AD8FF", SOFT = "#F1ECF9", MUTE = "#7A6A88"; + const SANS = '"Space Grotesk", system-ui, sans-serif', MONO = '"JetBrains Mono", ui-monospace, monospace'; + const el = (t, a = {}, p) => { const n = document.createElementNS(NS, t); for (const k in a) n.setAttribute(k, a[k]); if (p) p.appendChild(n); return n; }; + const txt = (p, x, y, s, a = {}) => { const n = el("text", Object.assign({ x, y, "font-family": SANS, "font-size": 24, "font-weight": 600, fill: INK }, a), p); n.textContent = s; return n; }; + const cl = (v, a = 0, b = 1) => Math.max(a, Math.min(b, v)); + const seg = (t, a, b) => cl((t - a) / (b - a)); + const oc = (x) => 1 - Math.pow(1 - x, 3); + const ob = (x) => { const c = 1.70158; return 1 + (c + 1) * Math.pow(x - 1, 3) + c * Math.pow(x - 1, 2); }; + const io = (x) => (x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2); + const tf = (n, x, y, s = 1, r = 0) => n.setAttribute("transform", `translate(${x} ${y}) rotate(${r}) scale(${s})`); + const button = (g, label, fn) => { + g.setAttribute("role", "button"); g.setAttribute("tabindex", "0"); g.setAttribute("aria-label", label); g.classList.add("mg-hit"); + g.addEventListener("click", fn); + g.addEventListener("keydown", (e) => { if (e.key === "Enter" || e.key === " ") { e.preventDefault(); fn(); } }); + }; + + const SC = {}; + + /* ---- one doorbell, three push buttons: every way in rings the same bell ---- */ + SC.today = { + dur: 12, still: 9.4, + build(svg, api) { + const BX = [150, 400, 650], BY = 404, COL = [BLUE, LIL, MINT], NAMES = ["ribbon", "command-line tool", "MCP server"], PRESS = [3.4, 5.9, 8.4]; + const chip = (s, x, y) => { + const g = el("g", {}, svg); + const ring = el("rect", { y: -32, height: 64, rx: 32, fill: "none", stroke: INK, "stroke-width": 2, "stroke-dasharray": "3 7", class: "mg-ring" }, g); + const r = el("rect", { y: -26, height: 52, rx: 26, fill: "#fff", stroke: INK, "stroke-width": 3 }, g); + const t = txt(g, 0, 8, s, { "text-anchor": "middle", "font-size": 23, "font-weight": 700 }); + const w = t.getComputedTextLength() + 44; + r.setAttribute("x", -w / 2); r.setAttribute("width", w); ring.setAttribute("x", -w / 2 - 6); ring.setAttribute("width", w + 12); + return { g, r, x, y }; + }; + /* faint guide from the top label to the bell */ + const guide = el("path", { d: "M400 94 V112", stroke: LIL, "stroke-width": 2, "stroke-linecap": "round", opacity: 0 }, svg); + /* wires */ + const WIRE = ["M150 356 V342 Q150 326 166 326 H384 Q400 326 400 310 V300", "M400 356 V300", "M650 356 V342 Q650 326 634 326 H416 Q400 326 400 310 V300"]; + const wires = WIRE.map((d) => { const n = el("path", { d, stroke: INK, "stroke-width": 3, fill: "none", "stroke-linecap": "round" }, svg); return { n, len: n.getTotalLength() }; }); + /* the bell on its plate */ + el("rect", { x: 300, y: 112, width: 200, height: 188, rx: 30, fill: SOFT, stroke: INK, "stroke-width": 3 }, svg); + const arcs = [-1, 1].map((s) => [0, 1].map((k) => el("path", { d: `M${400 + s * (122 + k * 24)} ${178 - k * 14} Q${400 + s * (140 + k * 28)} 206 ${400 + s * (122 + k * 24)} ${234 + k * 14}`, stroke: INK, "stroke-width": 3, fill: "none", "stroke-linecap": "round", opacity: 0 }, svg))); + const clap = el("g", {}, svg); + el("path", { d: "M0 96 V128", stroke: INK, "stroke-width": 3, "stroke-linecap": "round" }, clap); + el("circle", { cy: 130, r: 11, fill: INK }, clap); + const bell = el("g", {}, svg); + el("path", { d: "M0 6 C-16 6 -22 16 -24 30 C-30 56 -34 84 -60 104 H60 C34 84 30 56 24 30 C22 16 16 6 0 6 Z", fill: YEL, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, bell); + el("rect", { x: -68, y: 100, width: 136, height: 16, rx: 8, fill: YEL, stroke: INK, "stroke-width": 3 }, bell); + el("circle", { r: 9, fill: "#fff", stroke: INK, "stroke-width": 3 }, bell); + /* travelling pulses, one per wire */ + const dots = COL.map((c) => el("circle", { r: 9, fill: c, stroke: INK, "stroke-width": 3, opacity: 0 }, svg)); + /* buttons with their labels */ + let sel = -1, t0 = -99; + const btns = BX.map((x, i) => { + const g = el("g", {}, svg); + el("rect", { x: x - 48, y: BY - 48, width: 96, height: 96, rx: 24, fill: "#fff", stroke: INK, "stroke-width": 3 }, g); + el("circle", { cx: x, cy: BY + 7, r: 30, fill: INK }, g); + const cap = el("circle", { cx: x, cy: BY, r: 30, fill: COL[i], stroke: INK, "stroke-width": 3 }, g); + const c = chip(NAMES[i], x, 500); g.appendChild(c.g); + button(g, NAMES[i], () => { sel = i; t0 = api.now(); api.poke(); }); + return { cap, c }; + }); + const top = chip("422 commands", 400, 66); + return (t, now) => { + const out = 1 - seg(t, 11.4, 11.9); + /* seconds since each button was last pressed, by the loop or by a tap */ + const E = PRESS.map((p, i) => { const a = t - p, b = sel === i ? now - t0 : -1; return a >= 0 && a < 2.4 ? (b >= 0 && b < a ? b : a) : b >= 0 && b < 2.4 ? b : -1; }); + let ring = -1; + E.forEach((e, i) => { + const down = e < 0 ? 0 : seg(e, 0, 0.12) * (1 - seg(e, 1.1, 1.35)), hot = e >= 0; + btns[i].cap.setAttribute("cy", BY + 7 * down); + const k = seg(t, 0.5 + i * 0.6, 0.9 + i * 0.6); + tf(btns[i].c.g, btns[i].c.x, btns[i].c.y, (0.6 + 0.4 * ob(k)) * (hot ? 1.05 : 1)); + btns[i].c.g.setAttribute("opacity", k <= 0 ? 0 : out); + btns[i].c.r.setAttribute("fill", hot ? YEL : "#fff"); + const p = e < 0 ? 0 : seg(e, 0.2, 0.7), pt = wires[i].n.getPointAtLength(wires[i].len * io(p)); + dots[i].setAttribute("cx", pt.x); dots[i].setAttribute("cy", pt.y); + dots[i].setAttribute("opacity", p > 0 && p < 1 ? 1 : 0); + if (e >= 0.7 && (ring < 0 || e - 0.7 < ring)) ring = e - 0.7; + }); + const amp = ring < 0 ? 0 : Math.exp(-1.6 * ring) * (1 - seg(ring, 1.4, 1.7)), sw = Math.sin(ring * 16) * amp; + bell.setAttribute("transform", `translate(400 134) rotate(${11 * sw})`); + clap.setAttribute("transform", `translate(400 134) rotate(${-17 * sw})`); + arcs.forEach((pair) => pair.forEach((a, k) => a.setAttribute("opacity", ring < 0 ? 0 : seg(ring, k * 0.12, 0.1 + k * 0.12) * (1 - seg(ring, 1.1, 1.6))))); + const k = seg(t, 2.3, 2.7); + tf(top.g, top.x, top.y, 0.6 + 0.4 * ob(k)); + top.g.setAttribute("opacity", k <= 0 ? 0 : out); + top.r.setAttribute("fill", ring >= 0 && ring < 1.4 ? YEL : "#fff"); + guide.setAttribute("opacity", k * out); + }; + }, + }; + + /* ---- player ---- */ + const q = new URLSearchParams(location.search), frozen = q.has("mgstill"), fixed = parseFloat(q.get("mgstill")); + const calm = matchMedia("(prefers-reduced-motion: reduce)").matches; + const mount = (fig) => { + const sc = SC[fig.dataset.scene], img = fig.querySelector("img"); if (!sc || !img) return; + const W = sc.w || 800, H = sc.h || 600; + const svg = el("svg", { viewBox: `0 0 ${W} ${H}`, class: "mg-svg", role: "group", "aria-label": img.alt || "" }); + svg.style.aspectRatio = `${W} / ${H}`; + el("rect", { width: W, height: H, fill: "#fff" }, svg); + img.replaceWith(svg); + let off = 0, raf = 0, seen = false, held = calm; + const base = performance.now(), clock = () => (performance.now() - base) / 1000; + let draw = () => {}; + const frame = () => { const now = clock(); draw(held ? sc.still : (((now + off) % sc.dur) + sc.dur) % sc.dur, now); }; + const tick = () => { cancelAnimationFrame(raf); frame(); if (seen && !held) raf = requestAnimationFrame(tick); }; + const api = { now: clock, seek: (s) => { off = s - clock(); held = false; tick(); }, poke: () => { held = false; tick(); } }; + draw = sc.build(svg, api); + if (frozen) { draw(isNaN(fixed) ? sc.still : fixed, 0); return; } + new IntersectionObserver(([e]) => { + seen = e.isIntersecting; + if (seen) { tick(); if (!fig.dataset.sent && window.posthog) { fig.dataset.sent = 1; window.posthog.capture("blog_scene_view", { slug: location.pathname.split("/").filter(Boolean).pop(), scene: fig.dataset.scene }); } } + else cancelAnimationFrame(raf); + }, { threshold: 0.25 }).observe(fig); + svg.addEventListener("click", () => { if (!fig.dataset.hit && window.posthog) { fig.dataset.hit = 1; window.posthog.capture("blog_scene_interact", { slug: location.pathname.split("/").filter(Boolean).pop(), scene: fig.dataset.scene }); } }); + frame(); + }; + const go = () => document.querySelectorAll("figure.mg[data-scene]").forEach(mount); + const fonts = document.fonts && document.fonts.load ? Promise.all([document.fonts.load('700 32px "Space Grotesk"'), document.fonts.load('500 20px "Space Grotesk"'), document.fonts.load('700 20px "JetBrains Mono"')]).catch(() => {}) : Promise.resolve(); + const start = () => fonts.then(go, go); + if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", start); else start(); +})(); diff --git a/blog/src/assets/media/agent-tools-today-2026-10-12/today.png b/blog/src/assets/media/agent-tools-today-2026-10-12/today.png new file mode 100644 index 000000000..37581dbcd Binary files /dev/null and b/blog/src/assets/media/agent-tools-today-2026-10-12/today.png differ diff --git a/blog/src/assets/media/claude-code-routines/alarm.png b/blog/src/assets/media/claude-code-routines/alarm.png new file mode 100644 index 000000000..361d6c54c Binary files /dev/null and b/blog/src/assets/media/claude-code-routines/alarm.png differ diff --git a/blog/src/assets/media/claude-code-routines/hero.png b/blog/src/assets/media/claude-code-routines/hero.png new file mode 100644 index 000000000..cac7af1b6 Binary files /dev/null and b/blog/src/assets/media/claude-code-routines/hero.png differ diff --git a/blog/src/assets/media/claude-code-routines/letterbox.png b/blog/src/assets/media/claude-code-routines/letterbox.png new file mode 100644 index 000000000..66a54a284 Binary files /dev/null and b/blog/src/assets/media/claude-code-routines/letterbox.png differ diff --git a/blog/src/assets/media/claude-code-routines/motion.css b/blog/src/assets/media/claude-code-routines/motion.css new file mode 100644 index 000000000..ad66ec3dd --- /dev/null +++ b/blog/src/assets/media/claude-code-routines/motion.css @@ -0,0 +1,13 @@ +/* Bright coded scenes for "Claude routines". Pairs with motion.js. */ +.prose figure.mg { margin: 42px 0; } +.prose figure.mg img, .mg .mg-svg { display: block; width: 100%; height: auto; border: 1px solid #1A1320; border-radius: 18px; background: #fff; } +.mg figcaption { font: 500 13px/1.5 "Space Grotesk", system-ui, sans-serif; color: #6B5878; padding-top: 10px; text-align: center; } +.mg .mg-svg { touch-action: manipulation; -webkit-tap-highlight-color: transparent; } +.mg .mg-svg text { -webkit-user-select: none; user-select: none; pointer-events: none; } +.mg .mg-hit { cursor: pointer; outline: none; } +.mg [role="slider"] { cursor: grab; touch-action: none; } +.mg .mg-ring { stroke-opacity: 0; transition: stroke-opacity 0.15s; } +.mg .mg-hit:focus-visible .mg-ring { stroke-opacity: 1; } +.mg [role="slider"]:focus-visible circle:nth-child(2) { stroke-width: 5; } +@media (hover: hover) { .mg .mg-hit:hover .mg-ring { stroke-opacity: 0.5; } } +@media (prefers-reduced-motion: reduce) { .mg .mg-ring { transition: none; } } diff --git a/blog/src/assets/media/claude-code-routines/motion.js b/blog/src/assets/media/claude-code-routines/motion.js new file mode 100644 index 000000000..55d14147e --- /dev/null +++ b/blog/src/assets/media/claude-code-routines/motion.js @@ -0,0 +1,346 @@ +/* Bright coded scenes for "Claude routines". Vanilla JS, no library. +
holds a still image; this script swaps in a live SVG. + Plays only in view, honours reduced motion, "?mgstill" freezes each scene on its still frame. */ +(() => { + const NS = "http://www.w3.org/2000/svg"; + const INK = "#1A1320", YEL = "#FFCA54", BLUE = "#6C8EF5", LIL = "#B69CFF", MINT = "#7FD8AE", SKY = "#9AD8FF", SOFT = "#F1ECF9", MUTE = "#7A6A88"; + const SANS = '"Space Grotesk", system-ui, sans-serif', MONO = '"JetBrains Mono", ui-monospace, monospace'; + const el = (t, a = {}, p) => { const n = document.createElementNS(NS, t); for (const k in a) n.setAttribute(k, a[k]); if (p) p.appendChild(n); return n; }; + const txt = (p, x, y, s, a = {}) => { const n = el("text", Object.assign({ x, y, "font-family": SANS, "font-size": 24, "font-weight": 600, fill: INK }, a), p); n.textContent = s; return n; }; + const cl = (v, a = 0, b = 1) => Math.max(a, Math.min(b, v)); + const seg = (t, a, b) => cl((t - a) / (b - a)); + const oc = (x) => 1 - Math.pow(1 - x, 3); + const ob = (x) => { const c = 1.70158; return 1 + (c + 1) * Math.pow(x - 1, 3) + c * Math.pow(x - 1, 2); }; + const io = (x) => (x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2); + const tf = (n, x, y, s = 1, r = 0) => n.setAttribute("transform", `translate(${x} ${y}) rotate(${r}) scale(${s})`); + const button = (g, label, fn) => { + g.setAttribute("role", "button"); g.setAttribute("tabindex", "0"); g.setAttribute("aria-label", label); g.classList.add("mg-hit"); + g.addEventListener("click", fn); + g.addEventListener("keydown", (e) => { if (e.key === "Enter" || e.key === " ") { e.preventDefault(); fn(); } }); + }; + const strip = (svg, y, w = 680) => { + el("rect", { x: (800 - w) / 2, y, width: w, height: 48, rx: 24, fill: SOFT }, svg); + return txt(svg, 400, y + 31, "", { "text-anchor": "middle", "font-size": 20, "font-weight": 500 }); + }; + + const cloudD = "M-110 60 H110 a50 50 0 0 0 8 -99 a62 62 0 0 0 -112 -34 a48 48 0 0 0 -84 30 a52 52 0 0 0 -32 103 Z"; + const pillBox = (g, s, fill, size = 22) => { + const r = el("rect", { y: -22, height: 44, rx: 22, fill, stroke: INK, "stroke-width": 3 }, g), t = txt(g, 0, 8, s, { "text-anchor": "middle", "font-size": size, "font-weight": 700 }); + const w = t.getComputedTextLength() + 40; r.setAttribute("x", -w / 2); r.setAttribute("width", w); + }; + const dial = (svg, x, y, r) => { + el("circle", { cx: x, cy: y, r, fill: "#fff", stroke: INK, "stroke-width": 3 }, svg); + for (let i = 0; i < 12; i++) { const a = (i / 12) * 6.2832; el("path", { d: `M${x + Math.sin(a) * (r - 13)} ${y - Math.cos(a) * (r - 13)} L${x + Math.sin(a) * (r - 6)} ${y - Math.cos(a) * (r - 6)}`, stroke: INK, "stroke-width": 3, "stroke-linecap": "round" }, svg); } + el("path", { d: `M${x - 9} ${y - r - 16} H${x + 9} L${x} ${y - r - 3} Z`, fill: YEL, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, svg); + const h = el("path", { d: `M0 0 V${-(r - 20)}`, stroke: INK, "stroke-width": 5, "stroke-linecap": "round" }, svg); + el("circle", { cx: x, cy: y, r: 6, fill: YEL, stroke: INK, "stroke-width": 3 }, svg); + return (deg) => tf(h, x, y, 1, deg); + }; + + const SC = {}; + + /* ---- 1. the laptop shuts, the alarm clock rings, the prompt goes up to the cloud ---- */ + SC.alarm = { + dur: 11, still: 8.6, + build(svg, api) { + txt(svg, 44, 62, "Routines run in the cloud", { "font-size": 32, "font-weight": 700 }); + txt(svg, 756, 62, "tap the alarm clock", { "text-anchor": "end", "font-size": 20, fill: MUTE, "font-weight": 500 }); + const D = 470, CX = 328, CY = 212; + const rays = el("g", {}, svg); + [146, 166, 186, 34, 14, -6].forEach((dg) => { const r = (dg * Math.PI) / 180, c = Math.cos(r), q = -Math.sin(r); el("path", { d: `M${CX + 4 + c * 226} ${CY - 14 + q * 150} L${CX + 4 + c * 262} ${CY - 14 + q * 176}`, stroke: YEL, "stroke-width": 8, "stroke-linecap": "round" }, rays); }); + const cloud = el("g", {}, svg); + el("path", { d: cloudD, fill: "#fff", stroke: INK, "stroke-width": 2.2, "stroke-linejoin": "round" }, cloud); + const glow = el("path", { d: cloudD, fill: YEL, stroke: INK, "stroke-width": 2.2, "stroke-linejoin": "round" }, cloud); + el("rect", { x: 30, y: D, width: 740, height: 16, rx: 8, fill: SOFT, stroke: INK, "stroke-width": 3 }, svg); + /* laptop, front view */ + const LX = 190; + const lid = el("g", {}, svg); + el("rect", { x: -112, y: -150, width: 224, height: 150, rx: 12, fill: BLUE, stroke: INK, "stroke-width": 3, "vector-effect": "non-scaling-stroke" }, lid); + el("rect", { x: -96, y: -134, width: 192, height: 114, rx: 5, fill: SKY, stroke: INK, "stroke-width": 3, "vector-effect": "non-scaling-stroke" }, lid); + el("path", { d: `M${LX - 136} ${D} L${LX - 116} ${D - 20} H${LX + 116} L${LX + 136} ${D} Z`, fill: LIL, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, svg); + /* alarm clock */ + const KX = 632, KY = D - 96; + const clock = el("g", {}, svg); + el("circle", { r: 96, fill: "#fff", "fill-opacity": 0, stroke: INK, "stroke-width": 2, class: "mg-ring" }, clock); + el("path", { d: "M-44 60 L-62 92 M44 60 L62 92", stroke: INK, "stroke-width": 7, "stroke-linecap": "round" }, clock); + const bells = [-1, 1].map((s) => el("path", { d: "M-30 0 A30 30 0 0 1 30 0 Z", fill: YEL, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round", transform: `translate(${s * 52} -64) rotate(${s * 38})` }, clock)); + el("path", { d: "M0 -78 V-98", stroke: INK, "stroke-width": 5, "stroke-linecap": "round" }, clock); + el("circle", { cy: -100, r: 8, fill: INK }, clock); + el("circle", { r: 76, fill: MINT, stroke: INK, "stroke-width": 3 }, clock); + el("circle", { r: 58, fill: "#fff", stroke: INK, "stroke-width": 3 }, clock); + for (let i = 0; i < 12; i++) { const a = (i / 12) * 6.2832; el("path", { d: `M${Math.sin(a) * 44} ${-Math.cos(a) * 44} L${Math.sin(a) * 50} ${-Math.cos(a) * 50}`, stroke: INK, "stroke-width": 3, "stroke-linecap": "round" }, clock); } + el("path", { d: "M0 0 V-36 M0 0 L24 14", stroke: INK, "stroke-width": 5, "stroke-linecap": "round", fill: "none" }, clock); + el("circle", { r: 6, fill: YEL, stroke: INK, "stroke-width": 3 }, clock); + const waves = [-1, 1].map((s) => el("path", { d: `M${s * 92} -92 q${s * 18} 14 ${s * 18} 36 M${s * 108} -108 q${s * 26} 22 ${s * 26} 60`, stroke: INK, "stroke-width": 4, fill: "none", "stroke-linecap": "round", transform: `translate(${KX} ${KY})` }, svg)); + button(clock, "Ring the alarm clock again", () => api.seek(2.3)); + /* the prompt sheet */ + const paper = el("g", { "pointer-events": "none" }, svg); + el("rect", { x: -62, y: -76, width: 124, height: 152, rx: 10, fill: "#fff", stroke: INK, "stroke-width": 3 }, paper); + txt(paper, 0, -34, "prompt", { "text-anchor": "middle", "font-family": MONO, "font-size": 24, "font-weight": 700 }); + el("path", { d: "M-40 -8 H40 M-40 16 H40 M-40 40 H12", stroke: LIL, "stroke-width": 6, "stroke-linecap": "round" }, paper); + const cap = strip(svg, 514, 720); + return (t) => { + const out = seg(t, 9.8, 10.5); + const shut = io(seg(t, 0.6, 1.8)) - io(seg(t, 10, 10.8)); + lid.setAttribute("transform", `translate(${LX} ${D - 20}) scale(1 ${1 - 0.9 * shut})`); + const ring = seg(t, 2.4, 2.6) * (1 - seg(t, 3.9, 4.2)); + tf(clock, KX + Math.sin(t * 46) * 4 * ring, KY, 0.92, Math.sin(t * 38) * 5 * ring); + bells.forEach((b, i) => { const s = i ? 1 : -1; b.setAttribute("transform", `translate(${s * 52} ${-64 - Math.abs(Math.sin(t * 40 + i)) * 5 * ring}) rotate(${s * 38})`); }); + waves.forEach((w) => w.setAttribute("opacity", ring * (0.5 + 0.5 * Math.abs(Math.sin(t * 9))))); + const up = io(seg(t, 3.2, 5.4)); + tf(paper, 446 + (CX - 446) * up + Math.sin(up * 9) * 26 * (1 - up), D - 80 + (CY + 18 - D + 80) * up, 1 - 0.14 * up, Math.sin(up * 7) * 9 * (1 - up) - 4 * up); + paper.setAttribute("opacity", t < 9.8 ? 1 : t < 10.5 ? 1 - out : seg(t, 10.6, 10.95)); + const g = seg(t, 5.2, 5.8) * (1 - out); + glow.setAttribute("opacity", g); + tf(cloud, CX, CY, 1.2 + 0.025 * g * Math.sin(t * 4)); + rays.setAttribute("opacity", g * (0.82 + 0.18 * Math.sin(t * 5))); + cap.textContent = t < 2.3 || t >= 9.8 ? "A routine is a saved prompt" : t < 5.4 ? "It runs on a schedule, an API call or a GitHub event" : "“so they keep working when your laptop is closed”"; + }; + }, + }; + + /* ---- 2. three envelopes, one letterbox: each trigger lifts the flag ---- */ + SC.letterbox = { + dur: 11, still: 9, + build(svg, api) { + txt(svg, 44, 62, "What can start a routine?", { "font-size": 32, "font-weight": 700 }); + txt(svg, 756, 62, "tap an envelope", { "text-anchor": "end", "font-size": 20, fill: MUTE, "font-weight": 500 }); + const TR = [["Scheduled", YEL, "Scheduled: on a recurring cadence, or once at a future time"], ["API", SKY, "API: when you send an HTTP POST with a bearer token"], ["GitHub", MINT, "GitHub: on repository events such as pull requests or releases"]]; + const EX = 172, EY = [156, 284, 412], SX = 552, SY = 232, LAND = [2.3, 4.9, 7.5], FL = 1.1; + el("path", { d: "M390 494 H770", stroke: INK, "stroke-width": 3, "stroke-linecap": "round" }, svg); + el("rect", { x: SX - 22, y: 340, width: 44, height: 154, fill: SOFT, stroke: INK, "stroke-width": 3 }, svg); + const box = el("g", {}, svg); + el("path", { d: "M-150 110 V10 Q-150 -90 -50 -90 H50 Q150 -90 150 10 V110 Z", fill: LIL, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, box); + el("rect", { x: -96, y: -12, width: 192, height: 24, rx: 12, fill: INK }, box); + txt(box, 0, 76, "routine", { "text-anchor": "middle", "font-size": 36, "font-weight": 700 }); + const flag = el("g", {}, svg); + el("path", { d: "M0 0 V-62", stroke: INK, "stroke-width": 6, "stroke-linecap": "round" }, flag); + el("rect", { x: 0, y: -66, width: 44, height: 32, rx: 5, fill: YEL, stroke: INK, "stroke-width": 3 }, flag); + el("circle", { r: 8, fill: "#fff", stroke: INK, "stroke-width": 3 }, flag); + const env = (g, w, h, col) => { + el("rect", { x: -w / 2, y: -h / 2, width: w, height: h, rx: h * 0.12, fill: col, stroke: INK, "stroke-width": 3 }, g); + el("path", { d: `M${-w / 2 + 4} ${-h / 2 + 6} L0 ${-h * 0.04} L${w / 2 - 4} ${-h / 2 + 6}`, stroke: INK, "stroke-width": 3, fill: "none", "stroke-linecap": "round", "stroke-linejoin": "round" }, g); + }; + let pinned = -1, man = { i: 0, t0: -99 }; + const ticks = TR.map(([name, col, line], i) => { + const g = el("g", {}, svg); + el("rect", { x: -128, y: -60, width: 256, height: 120, rx: 20, fill: "#fff", "fill-opacity": 0, stroke: INK, "stroke-width": 2, class: "mg-ring" }, g); + env(g, 236, 104, col); + txt(g, 0, 36, name, { "text-anchor": "middle", "font-size": 28, "font-weight": 700 }); + tf(g, EX, EY[i]); + button(g, line, () => { pinned = i; man = { i, t0: api.now() }; api.poke(); }); + const k = el("g", { "pointer-events": "none" }, svg); + el("circle", { r: 17, fill: "#fff", stroke: INK, "stroke-width": 3 }, k); + el("path", { d: "M-8 0 L-2 6 L8 -6", stroke: INK, "stroke-width": 3.5, fill: "none", "stroke-linecap": "round", "stroke-linejoin": "round" }, k); + return k; + }); + const fly = [0, 1, 2, 3].map(() => el("g", { "pointer-events": "none" }, svg)); + fly.forEach((g, i) => env(g, 110, 66, i < 3 ? TR[i][1] : YEL)); + const place = (g, i, p) => { + if (p <= 0 || p >= 1) { g.setAttribute("opacity", 0); return; } + const e = io(p), x = EX + 130 + (SX - EX - 130) * e, y = EY[i] + (SY - EY[i]) * e - 70 * Math.sin(Math.PI * e), sink = seg(p, 0.82, 1); + g.setAttribute("transform", `translate(${x} ${y}) rotate(${-14 * Math.sin(Math.PI * e)}) scale(${1 - 0.25 * e} ${(1 - 0.25 * e) * (1 - 0.8 * sink)})`); + g.setAttribute("opacity", seg(p, 0, 0.08) * (1 - sink * sink)); + }; + const cap = strip(svg, 512, 720); + return (t, now) => { + const out = seg(t, 10.2, 10.6); + let u = 0, cur = -1, bump = 0; + LAND.forEach((L, i) => { + place(fly[i], i, (t - L + FL) / FL); + u = Math.max(u, ob(seg(t, L, L + 0.3)) - seg(t, i === 2 ? 9.9 : L + 1.3, i === 2 ? 10.3 : L + 1.7)); + bump = Math.max(bump, Math.sin(seg(t, L - 0.1, L + 0.3) * Math.PI)); + if (t >= L - FL) cur = i; + const k = ob(seg(t, L, L + 0.3)) * (1 - out), mk = man.i === i ? ob(seg(now - man.t0, FL, FL + 0.3)) * (1 - seg(now - man.t0, 4, 4.3)) : 0, s = Math.max(k, mk); + tf(ticks[i], EX + 112, EY[i] - 46, cl(s, 0, 1.3)); ticks[i].setAttribute("opacity", s <= 0.01 ? 0 : 1); + }); + const mt = now - man.t0; + fly[3].firstChild.setAttribute("fill", TR[man.i][1]); + place(fly[3], man.i, mt / FL); + u = Math.max(u, ob(seg(mt, FL, FL + 0.3)) - seg(mt, FL + 1.3, FL + 1.7)); + bump = Math.max(bump, Math.sin(seg(mt, FL - 0.1, FL + 0.3) * Math.PI)); + tf(flag, SX + 150, 306, 1, 90 * (1 - cl(u, 0, 1.15))); + box.setAttribute("transform", `translate(${SX} ${SY}) scale(${1 + 0.035 * bump} ${1 - 0.03 * bump})`); + cap.textContent = pinned >= 0 ? TR[pinned][2] : t > 8.7 && t < 10.4 ? "A single routine can combine triggers" : cur < 0 || t >= 10.4 ? "A schedule, an API call or a GitHub event can start a routine" : TR[cur][2]; + }; + }, + }; + + /* ---- 3. mugs under a tap: the meter fills, the tap shuts, the next mug waits for the clock ---- */ + SC.mugs = { + dur: 12, still: 8.5, + build(svg) { + txt(svg, 44, 62, "Scheduled runs: 100 per hour", { "font-size": 32, "font-weight": 700 }); + const S = 452, TX = 400, RESET = 9.6; + const hand = dial(svg, 142, 232, 92); + /* the tap */ + const stream = el("rect", { x: TX - 7, y: 300, width: 14, height: 0, fill: YEL, stroke: INK, "stroke-width": 2 }, svg); + el("rect", { x: TX - 16, y: 250, width: 32, height: 50, fill: "#fff", stroke: INK, "stroke-width": 3 }, svg); + el("rect", { x: TX - 56, y: 92, width: 112, height: 22, rx: 8, fill: "#fff", stroke: INK, "stroke-width": 3 }, svg); + el("rect", { x: TX - 86, y: 112, width: 172, height: 140, rx: 20, fill: SKY, stroke: INK, "stroke-width": 3 }, svg); + el("rect", { x: TX - 58, y: 138, width: 26, height: 88, rx: 13, fill: "#fff", stroke: INK, "stroke-width": 3 }, svg); + const lever = el("g", {}, svg); + el("path", { d: "M0 0 H44", stroke: INK, "stroke-width": 7, "stroke-linecap": "round" }, lever); + el("circle", { cx: 48, r: 11, fill: YEL, stroke: INK, "stroke-width": 3 }, lever); + const plug = el("rect", { x: TX - 24, y: 294, width: 48, height: 12, rx: 6, fill: INK }, svg); + /* the meter */ + const MX = 652; + txt(svg, MX, 180, "100", { "text-anchor": "middle", "font-family": MONO, "font-size": 76, "font-weight": 700 }); + txt(svg, MX, 220, "per hour", { "text-anchor": "middle", "font-size": 30, "font-weight": 700 }); + el("rect", { x: MX - 98, y: 244, width: 196, height: 44, rx: 22, fill: "#fff", stroke: INK, "stroke-width": 3 }, svg); + const cells = [0, 1, 2, 3].map((i) => el("rect", { x: MX - 88 + i * 45, y: 253, width: 41, height: 26, rx: 13, fill: BLUE, stroke: INK, "stroke-width": 2 }, svg)); + txt(svg, MX, 324, "for your account", { "text-anchor": "middle", "font-size": 22, "font-weight": 500, fill: MUTE }); + /* shelf and mugs */ + el("path", { d: `M110 ${S + 14} V${S + 44} L150 ${S + 14} M690 ${S + 14} V${S + 44} L650 ${S + 14}`, stroke: INK, "stroke-width": 3, fill: SOFT, "stroke-linejoin": "round" }, svg); + const MUG = [[1.2, 2.3, 1.3, 4.1, 5.9], [3.0, 4.1, 3.1, 5.9, 11.2], [4.8, 5.9, 4.9, 99, 11.2], [6.6, 10.9, 9.9, 99, 11.6]]; + const mugs = MUG.map(([a, d, f, d2, off], i) => { + const g = el("g", {}, svg); + el("path", { d: "M46 -72 h12 a22 22 0 0 1 0 44 h-12", stroke: INK, "stroke-width": 9, fill: "none", "stroke-linecap": "round" }, g); + el("path", { d: "M46 -72 h12 a22 22 0 0 1 0 44 h-12", stroke: "#fff", "stroke-width": 3.5, fill: "none", "stroke-linecap": "round" }, g); + const body = "M-50 -96 H50 V-14 Q50 0 36 0 H-36 Q-50 0 -50 -14 Z"; + el("path", { d: body, fill: "#fff" }, g); + const liq = el("rect", { x: -46, width: 92, rx: 8, fill: YEL }, g); + el("path", { d: body, fill: "none", stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, g); + el("path", { d: "M-30 -78 V-30", stroke: [LIL, MINT, SKY, LIL][i], "stroke-width": 8, "stroke-linecap": "round" }, g); + return { g, liq, a, d, f, d2, off }; + }); + el("rect", { x: 30, y: S, width: 740, height: 16, rx: 8, fill: SOFT, stroke: INK, "stroke-width": 3 }, svg); + const wait = el("g", {}, svg); pillBox(wait, "The run waits", YEL, 24); + const cap = strip(svg, 514, 720); + return (t) => { + hand((360 * (t - RESET)) / 12); + let pour = 0, level = 1, top = S; + mugs.forEach((m, i) => { + const x = 130 + 270 * io(seg(t, m.a - 0.9, m.a)) + 140 * io(seg(t, m.d, m.d + 0.8)) + 138 * io(seg(t, m.d2, m.d2 + 0.8)); + const fill = seg(t, m.f, m.f + 0.9), h = 84 * fill; + tf(m.g, x, S); + m.g.setAttribute("opacity", seg(t, m.a - 1.2, m.a - 0.9) * (1 - seg(t, m.off, m.off + 0.3))); + m.liq.setAttribute("y", -4 - h); m.liq.setAttribute("height", h); + if (fill > 0 && fill < 1) { pour = 1; top = S - 4 - h; } + level = i < 3 ? level + fill : level * (1 - seg(t, RESET, RESET + 0.3)) + fill; + }); + stream.setAttribute("height", pour ? top - 300 : 0); stream.setAttribute("opacity", pour); + const shut = seg(t, 5.9, 6.3) - seg(t, RESET, RESET + 0.3); + tf(lever, TX + 16, 274, 1, -62 * shut); + plug.setAttribute("opacity", shut); + cells.forEach((c, i) => c.setAttribute("opacity", cl(level - i))); + const w = ob(seg(t, 6.7, 7)) * (1 - seg(t, RESET, RESET + 0.3)); + tf(wait, 232, 392, cl(w, 0, 1.2)); wait.setAttribute("opacity", w <= 0.01 ? 0 : 1); + cap.textContent = t > 5.9 && t < RESET ? "Over the limit: the run waits" : "Scheduled runs: 100 per hour, for your account"; + }; + }, + }; + + /* ---- 4. two watering cans: one tips once an hour, one once a minute ---- */ + SC.watering = { + dur: 12, still: 9.3, + build(svg) { + txt(svg, 44, 62, "Minimum interval", { "font-size": 32, "font-weight": 700 }); + el("path", { d: "M400 96 V552", stroke: SOFT, "stroke-width": 4, "stroke-linecap": "round" }, svg); + const G = 470, TIP = [100, -36]; + const can = (col) => { + const g = el("g", {}, svg); + el("path", { d: "M-44 -14 Q-84 -12 -82 12 Q-80 34 -44 26", stroke: INK, "stroke-width": 6, fill: "none", "stroke-linecap": "round" }, g); + el("path", { d: "M-28 -34 Q0 -70 28 -34", stroke: INK, "stroke-width": 6, fill: "none", "stroke-linecap": "round" }, g); + el("path", { d: "M40 2 L88 -44 L104 -28 L40 34 Z", fill: col, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, g); + el("path", { d: "M82 -54 L112 -24", stroke: INK, "stroke-width": 8, "stroke-linecap": "round" }, g); + el("rect", { x: -48, y: -36, width: 96, height: 76, rx: 12, fill: col, stroke: INK, "stroke-width": 3 }, g); + return g; + }; + const pot = (x) => { + const g = el("g", {}, svg); + el("path", { d: "M0 -84 V-138", stroke: INK, "stroke-width": 5, "stroke-linecap": "round" }, g); + el("path", { d: "M0 -98 Q-34 -98 -38 -136 Q-6 -138 0 -98 Z M0 -112 Q40 -110 48 -156 Q6 -160 0 -112 Z", fill: MINT, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, g); + const b = el("g", {}, svg); + el("path", { d: "M-52 -66 L-40 0 H40 L52 -66 Z", fill: LIL, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, b); + el("rect", { x: -62, y: -88, width: 124, height: 24, rx: 8, fill: LIL, stroke: INK, "stroke-width": 3 }, b); + tf(b, x, G); + return (k) => g.setAttribute("transform", `translate(${x} ${G}) rotate(${k * 5}) scale(${1 + 0.06 * k})`); + }; + const side = (o) => { + txt(svg, o.cx, 116, o.head, { "text-anchor": "middle", "font-size": 26, "font-weight": 700 }); + txt(svg, o.cx, 142, o.sub, { "text-anchor": "middle", "font-size": 20, "font-weight": 500, fill: MUTE }); + const hand = dial(svg, o.dx, 238, o.dr); + const sway = pot(o.px); + const c = can(o.col); + const drops = [0, 1, 2].map(() => el("path", { d: "M0 -15 Q12 2 0 11 Q-12 2 0 -15 Z", fill: SKY, stroke: INK, "stroke-width": 2.5, "stroke-linejoin": "round" }, svg)); + txt(svg, o.cx, 536, o.big, { "text-anchor": "middle", "font-size": 40, "font-weight": 700 }); + return (t) => { + hand(o.hand(t)); + let k = 0, ph = -1; + o.pours.forEach(([a, b]) => { const q = io(seg(t, a, a + 0.35)) - io(seg(t, b - 0.35, b)); if (q > k) { k = q; ph = seg(t, a + 0.25, b - 0.1); } }); + const ang = o.ang * k, r = (ang * Math.PI) / 180, dx = TIP[0] - o.piv[0], dy = TIP[1] - o.piv[1]; + c.setAttribute("transform", `translate(${o.x} ${o.y}) rotate(${ang} ${o.piv[0]} ${o.piv[1]})`); + const tx = o.x + o.piv[0] + dx * Math.cos(r) - dy * Math.sin(r), ty = o.y + o.piv[1] + dx * Math.sin(r) + dy * Math.cos(r); + drops.forEach((d, j) => { const p = ph < 0 ? -1 : (ph * 2.4 + j / 3) % 1; tf(d, tx + 2, ty + 12 + (G - 100 - ty) * p * p); d.setAttribute("opacity", ph <= 0 || ph >= 1 || k < 0.9 ? 0 : Math.sin(p * Math.PI) > 0.15 ? 1 : 0); }); + sway(ph > 0.2 && ph < 1 ? Math.sin(t * 12) * 0.5 : 0); + }; + }; + /* left: the can hangs from a cloud */ + el("path", { d: "M150 262 V306", stroke: INK, "stroke-width": 3, "stroke-linecap": "round" }, svg); + el("path", { d: cloudD, fill: "#fff", stroke: INK, "stroke-width": 4, "stroke-linejoin": "round", transform: "translate(150 232) scale(0.62)" }, svg); + const L = side({ cx: 212, head: "Cloud", sub: "needs no machine on", big: "1 hour", dx: 322, dr: 48, px: 292, col: SKY, x: 150, y: 356, piv: [0, -50], ang: 30, pours: [[8.5, 10.1]], hand: (t) => (360 * (t - 8.5)) / 12 }); + /* right: the can sits on a desk */ + el("path", { d: `M452 ${G} V398 M548 ${G} V398`, stroke: INK, "stroke-width": 5, "stroke-linecap": "round" }, svg); + el("rect", { x: 432, y: 386, width: 136, height: 16, rx: 8, fill: SOFT, stroke: INK, "stroke-width": 3 }, svg); + const R = side({ cx: 590, head: "Desktop tasks and /loop", sub: "run on your machine", big: "1 minute", dx: 606, dr: 60, px: 676, col: YEL, x: 500, y: 346, piv: [48, 40], ang: 30, pours: [0, 1, 2, 3, 4, 5].map((i) => [i * 2 + 0.5, i * 2 + 1.9]), hand: (t) => (360 * (t - 0.5)) / 2 }); + el("path", { d: `M30 ${G} H380 M420 ${G} H770`, stroke: INK, "stroke-width": 3, "stroke-linecap": "round" }, svg); + return (t) => { L(t); R(t); }; + }, + }; + + /* ---- title card, 16 by 9 ---- */ + SC.hero = { + w: 960, h: 540, dur: 1, still: 0, + build(svg) { + txt(svg, 64, 112, "Triggers, cost and limits", { "font-family": MONO, "font-size": 24, "font-weight": 700, fill: MUTE }); + txt(svg, 60, 226, "Claude", { "font-size": 108, "font-weight": 700 }); + txt(svg, 60, 334, "routines", { "font-size": 108, "font-weight": 700 }); + el("path", { d: "M66 368 H470", stroke: YEL, "stroke-width": 14, "stroke-linecap": "round" }, svg); + txt(svg, 64, 438, "Checked 12 Oct 2026", { "font-size": 30, "font-weight": 500, fill: MUTE }); + /* a tear-off wall calendar with one column ticked, week after week */ + const g = el("g", { transform: "translate(732 276) rotate(4)" }, svg); + el("rect", { x: -150, y: -176, width: 324, height: 372, rx: 22, fill: LIL }, g); + el("rect", { x: -162, y: -188, width: 324, height: 372, rx: 22, fill: "#fff", stroke: INK, "stroke-width": 3 }, g); + el("path", { d: "M-162 -112 V-166 Q-162 -188 -140 -188 H140 Q162 -188 162 -166 V-112 Z", fill: BLUE, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, g); + [-84, 84].forEach((x) => el("circle", { cx: x, cy: -150, r: 11, fill: "#fff", stroke: INK, "stroke-width": 3 }, g)); + for (let r = 0; r < 5; r++) for (let c = 0; c < 6; c++) { + const x = -138 + c * 47, y = -92 + r * 52, on = c === 2; + el("rect", { x, y, width: 39, height: 42, rx: 10, fill: on ? YEL : SOFT, stroke: INK, "stroke-width": on ? 3 : 0 }, g); + if (on) el("path", { d: `M${x + 11} ${y + 22} L${x + 18} ${y + 29} L${x + 29} ${y + 14}`, stroke: INK, "stroke-width": 4, fill: "none", "stroke-linecap": "round", "stroke-linejoin": "round" }, g); + } + return () => {}; + }, + }; + + /* ---- player ---- */ + const q = new URLSearchParams(location.search), frozen = q.has("mgstill"), fixed = parseFloat(q.get("mgstill")); + const calm = matchMedia("(prefers-reduced-motion: reduce)").matches; + const mount = (fig) => { + const sc = SC[fig.dataset.scene], img = fig.querySelector("img"); if (!sc || !img) return; + const W = sc.w || 800, H = sc.h || 600; + const svg = el("svg", { viewBox: `0 0 ${W} ${H}`, class: "mg-svg", role: "group", "aria-label": img.alt || "" }); + svg.style.aspectRatio = `${W} / ${H}`; + el("rect", { width: W, height: H, fill: "#fff" }, svg); + img.replaceWith(svg); + let off = 0, raf = 0, seen = false, held = calm; + const base = performance.now(), clock = () => (performance.now() - base) / 1000; + let draw = () => {}; + const frame = () => { const now = clock(); draw(held ? sc.still : (((now + off) % sc.dur) + sc.dur) % sc.dur, now); }; + const tick = () => { cancelAnimationFrame(raf); frame(); if (seen && !held) raf = requestAnimationFrame(tick); }; + const api = { now: clock, seek: (s) => { off = s - clock(); held = false; tick(); }, poke: () => { held = false; tick(); } }; + draw = sc.build(svg, api); + if (frozen) { draw(isNaN(fixed) ? sc.still : fixed, 0); return; } + new IntersectionObserver(([e]) => { + seen = e.isIntersecting; + if (seen) { tick(); if (!fig.dataset.sent && window.posthog) { fig.dataset.sent = 1; window.posthog.capture("blog_scene_view", { slug: location.pathname.split("/").filter(Boolean).pop(), scene: fig.dataset.scene }); } } + else cancelAnimationFrame(raf); + }, { threshold: 0.25 }).observe(fig); + svg.addEventListener("click", () => { if (!fig.dataset.hit && window.posthog) { fig.dataset.hit = 1; window.posthog.capture("blog_scene_interact", { slug: location.pathname.split("/").filter(Boolean).pop(), scene: fig.dataset.scene }); } }); + frame(); + }; + const go = () => document.querySelectorAll("figure.mg[data-scene]").forEach(mount); + const fonts = document.fonts && document.fonts.load ? Promise.all([document.fonts.load('700 32px "Space Grotesk"'), document.fonts.load('500 20px "Space Grotesk"'), document.fonts.load('700 20px "JetBrains Mono"')]).catch(() => {}) : Promise.resolve(); + const start = () => fonts.then(go, go); + if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", start); else start(); +})(); diff --git a/blog/src/assets/media/claude-code-routines/mugs.png b/blog/src/assets/media/claude-code-routines/mugs.png new file mode 100644 index 000000000..4256eeb5d Binary files /dev/null and b/blog/src/assets/media/claude-code-routines/mugs.png differ diff --git a/blog/src/assets/media/claude-code-routines/watering.png b/blog/src/assets/media/claude-code-routines/watering.png new file mode 100644 index 000000000..f85a5dd6a Binary files /dev/null and b/blog/src/assets/media/claude-code-routines/watering.png differ diff --git a/blog/src/posts/agent-tools-today-2026-10-12.md b/blog/src/posts/agent-tools-today-2026-10-12.md new file mode 100644 index 000000000..f2d774c88 --- /dev/null +++ b/blog/src/posts/agent-tools-today-2026-10-12.md @@ -0,0 +1,59 @@ +--- +title: "Agent Tools Today, 12 Oct 2026: WordCraft 0.5.0, Genkit Dart 1.0, 500 Billion Tokens" +seoTitle: "Agent Tools Today (12 Oct 2026): Launches, Skills, MCP Servers" +description: "The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 12 Oct 2026, each with its source." +date: 2026-10-12 +category: news +categoryLabel: News +type: Non-technical +series: agent-tools-today +primaryKeyword: "agent tools today 12 oct 2026" +secondaryKeywords: ["wordcraft", "genkit dart 1.0", "anatomy skill", "qwen code 0.25.1", "missingno"] +tags: ["Daily Brief", "Claude Code", "Codex", "Skills", "Open Source"] +--- + +Agent tools today, 12 Oct 2026, in one line: WordCraft shipped a Word clone that agents can drive through an MCP server, Google's Genkit Dart reached 1.0, and a report on 500 billion tokens of decompilation started the day's argument. Every number was checked on 12 Oct, after [the 11 Oct edition](/blog/agent-tools-today-2026-10-11/). + +[Munder Difflin](https://harnessmd.com/download) is free and open source: a desktop app that runs a team of coding agents such as Claude Code, Codex and Gemini CLI on your own computer. It shipped no release in the last 24 hours, so it is not in the lists below. + +
Animation. A small yellow doorbell hangs on a white background. Three push buttons sit below it, each joined to the bell by a wire. The buttons are pressed one after another and the same bell rings each time. Four labels appear one after another: ribbon, command-line tool, MCP server, 422 commands.
The WordCraft README on 12 Oct 2026 says the same 422 commands drive the ribbon, a command-line tool and an MCP server. The drawing shows the commands as one doorbell with three buttons. Tap a label to press its button.
+ +## Top 3 launches + +1. **WordCraft v0.5.0.** Released 11 Oct. The repo description calls it a "clean-room reimplementation of Microsoft Word in pure Rust". The README says "The same 422 commands drive the ribbon", and lists a command-line tool and an MCP server among the other ways in. The README says WordCraft is in alpha and gives the licence as MIT or Apache 2.0. Created 7 Oct. 6,319 stars on 12 Oct. More than 80 points on Hacker News on 12 Oct. Background: [what is an MCP server](/blog/what-is-an-mcp-server/). [Source](https://github.com/storytold/wordcraft/releases/tag/v0.5.0) +2. **Genkit Dart 1.0.** The Flutter blog post, dated 8 Oct, calls it "the first stable, production-ready release" of Google's open source framework for AI features and agents in Dart. The post says one interface covers Gemini, Claude and OpenAI models, and that a tool can pause a run until the user confirms. Background: [human in the loop AI agents](/blog/human-in-the-loop-ai-agents/). [Source](https://flutter.dev/blog/announcing-genkit-dart-1-0) +3. **MASS.** A research page by authors from Sakana AI and UC Berkeley, marked "Published October 2026". The MASS page says a team's collective work can provide training examples for the model its members share. After two rounds, it reports score per output token at 1.2 to 1.6 times the base model on four research benchmarks, and 0.94 times on SWE-bench Verified. More than 75 points on Hacker News on 12 Oct. [Source](https://pub.sakana.ai/mass/) + +## Top 4 skills, MCP servers and plugins + +1. **Anatomy 1.0.** Released 10 Oct. The release notes describe a Claude Code skill that "explains an idea by building it as a real, working object": an interactive isometric figure in SVG. Created 8 Oct. MIT, 3,670 stars on 12 Oct. [Source](https://github.com/wheresryan22/anatomy/releases/tag/v1.0.0) +2. **Hermes official plugins.** Nous Research's own plugins for Hermes Agent. The README lists Home Assistant, Spotify and Blender, plus an experimental plugin that runs Hermes turns on a Claude Pro or Max subscription through the Claude Code CLI. Created 10 Oct. MIT, 197 stars on 12 Oct. [Source](https://github.com/NousResearch/hermes-official-plugins) +3. **consulting-pptx-skill.** The README calls it "A Claude Code skill for generating boardroom-quality decks". It lists a slide design rulebook, an automated rule checker and a 62-part HTML slide library. Created 2 Sep. MIT, 1,164 stars on 12 Oct. [Source](https://github.com/carnot-tech/jinba-consulting-pptx-skill) +4. **asc-cli v0.18.6.** Released 11 Oct. A command line tool for App Store Connect. Its README says it outputs structured JSON so AI agents can drive the full release workflow. The notes add `asc perf-overview get` and move the licence from MIT to Apache 2.0. 377 stars on 12 Oct. [Source](https://github.com/tddworks/asc-cli/releases/tag/v0.18.6) + +## Top 4 moves from multi agent tools + +1. **Qwen Code.** v0.25.1 on 11 Oct. The notes add background Shell and Monitor capabilities to the Managed Agent runtime. Agent and Goal coordination tools are now deferred by default and discovered on demand. Apache 2.0, 28,428 stars on 12 Oct. [Source](https://github.com/QwenLM/qwen-code/releases/tag/v0.25.1) +2. **Ollama.** v0.40.3 on 11 Oct. `ollama launch claude` no longer shows a warning about Claude connectors, and `ollama launch codex` no longer warns about service tiers. MIT, 182,799 stars on 12 Oct. See [how to connect Ollama to Claude Code](/blog/how-to-connect-ollama-to-claude-code/). [Source](https://github.com/ollama/ollama/releases/tag/v0.40.3) +3. **Hermes Agent.** No new release since v0.21.6 on 8 Oct. The Nous Portal home page on 12 Oct lists a model named MissingNo, with the id `stealth/missingno`, at $0.00/1M. MIT, 252,849 stars on 12 Oct. See [what is Hermes Agent](/blog/what-is-hermes-agent/). [Source](https://portal.nousresearch.com/) +4. **Agent Standup.** v1.27.0 on 12 Oct. It shows your coding agent sessions as a live team call. The notes say Codex sessions now appear next to Claude Code sessions. Created 10 Oct. MIT, 131 stars on 12 Oct. More than 45 points on Hacker News on 12 Oct. [Source](https://github.com/Atoll92/agent-standup/releases/tag/v1.27.0) + +## Top 3 rising repos + +1. **Yobiru.** The README's first line of text is "Let your agents talk to each other." Agents on different computers send messages, files and wake-up requests over Tailscale. Created 10 Oct. MIT, 61 stars on 12 Oct. [Source](https://github.com/chekusu/yobiru) +2. **stop-describing-ui.** The README reads "An agent skill that strips explanatory copy out of user interfaces." Created 11 Oct. MIT, 57 stars on 12 Oct. [Source](https://github.com/artouc/stop-describing-ui) +3. **Nanolathe.** Not an agent tool. The repo description reads "Total Annihilation engine reimplementation in Go." Created 9 Sep. MIT, 116 stars on 12 Oct. More than 390 points on Hacker News on 12 Oct. [Source](https://github.com/nanolathe-gg/nanolathe) + +New repos can gain stars quickly for reasons other than use, so treat these as names to watch, not recommendations. + +## Top 3 things people are arguing about + +1. **What 500 billion tokens bought.** Maurice Heumann's post, dated 9 Oct, covers three months of agents decompiling a first-person shooter to C++. The post says the first month's code was readable but "semantically wrong", so the team added a check that compares each function with the original, byte for byte. The 9 Oct post reports "83% of all functions being byte exact". More than 170 points and more than 120 comments on Hacker News on 12 Oct. Background: [how AI agents verify their own work](/blog/how-ai-agents-verify-their-own-work/). [Source](https://momo5502.com/posts/2026-10-09-game-decompilation/) +2. **Do you still have to think?** Piotr Sarnacki's post, dated 11 Oct, reads the code of AI rewrites of Campfire from Ruby on Rails into Rust, Elixir and Go. The post argues that when a prompt is not specific enough, "many decisions are a coin flip". More than 320 points and more than 150 comments on Hacker News on 12 Oct. [Source](https://itsallaboutthebit.com/i-am-sorry-but-you-still-have-to-think/) +3. **Ten minutes of AI.** A UC Berkeley news article, dated 9 Oct, covers a study with 1,222 participants. The article says "An overreliance on AI for answers erodes our cognitive fitness". More than 80 points and more than 85 comments on Hacker News on 12 Oct. [Source](https://vcresearch.berkeley.edu/news/using-ai-just-10-minutes-erodes-your-ability-persist-hard-things) + +## How this list is built + +Each day our agents read GitHub releases and trending pages, the Hacker News front page, and the top posts on X and Reddit about coding agents. A name only makes a list with a link that was opened and a signal that can be shown: points, stars or a dated release. Repos are checked against the GitHub API before they appear, and a claim that exists only as a social post is left out. New here? Start with the [install guide](/blog/how-to-install-and-use-munder-difflin/). + + diff --git a/blog/src/posts/claude-code-automation-while-you-sleep.md b/blog/src/posts/claude-code-automation-while-you-sleep.md index 12ce8bb2b..eb36882f7 100644 --- a/blog/src/posts/claude-code-automation-while-you-sleep.md +++ b/blog/src/posts/claude-code-automation-while-you-sleep.md @@ -84,7 +84,7 @@ v0.1.6 adds **scheduled missions** — the harness itself dispatches recurring d a timer you set. A 30-minute floor-check mission pointing at Michael (body: 'Are all agents making progress? Re-engage anyone idle.') turns the orchestrator into a self-healing system: even if the floor goes quiet, Michael wakes up, reads the hive state, and re-engages stuck agents without you touching -anything. +anything. For cloud schedules, see [Claude routines](/blog/claude-code-routines/). ## Ingredient 3 — Guardrails (the part that makes it safe) diff --git a/blog/src/posts/claude-code-routines.md b/blog/src/posts/claude-code-routines.md new file mode 100644 index 000000000..5b6af5eea --- /dev/null +++ b/blog/src/posts/claude-code-routines.md @@ -0,0 +1,128 @@ +--- +title: "Claude routines: what they are, triggers, cost and limits" +seoTitle: "Claude routines explained: triggers, cost and limits" +description: "Claude routines run a saved Claude Code prompt in the cloud on a schedule, an API call or a GitHub event. Plans, steps and limits, checked 12 Oct 2026." +date: 2026-10-12 +category: concepts +categoryLabel: Concepts +type: Non-technical +primaryKeyword: "claude routines" +secondaryKeywords: ["claude code routines", "claude routines pricing", "claude code scheduled tasks", "claude routines vs cron", "claude code routines limits"] +tags: ["Concepts", "Claude Code", "Automation"] +faq: + - q: "Are Claude routines generally available?" + a: "No. Anthropic's routines page, checked 12 Oct 2026, says routines are in research preview and that behavior, limits and the API surface may change. It says routines are available on Pro, Max, Team and Enterprise plans." + - q: "Do Claude routines cost extra?" + a: "Anthropic's routines page gives no separate price. It says routines draw down subscription usage the same way interactive sessions do. Organizations with usage credits turned on can keep running routines on metered overage after the subscription usage limit." + - q: "How often can a Claude routine run?" + a: "The routines page says the minimum interval for a schedule is one hour, and more frequent expressions are rejected. It also lists 100 scheduled runs per hour for your account, checked 12 Oct 2026." + - q: "Can a routine read files on my computer?" + a: "No. Anthropic's scheduled tasks page says a cloud routine has no access to local files and works from a fresh clone. It lists Desktop scheduled tasks and /loop as the options that run on your machine." + - q: "Does a green run status mean the task worked?" + a: "No. The routines page says a green status means the session started and exited without an infrastructure error. It does not mean the task in your prompt succeeded, so open the run and read the transcript." +--- + +Our view: Claude routines are worth one small, low risk job if you want Claude Code to work while your laptop is closed, but they are a research preview with hourly limits. A routine is a saved prompt that runs in the cloud on a schedule, an API call or a GitHub event. Checked 12 Oct 2026. + +We have not tried routines. This page reports what Anthropic's documentation says. [Munder Difflin](https://harnessmd.com/download) is free and open source: a desktop app that runs a team of coding agents such as Claude Code, Codex and Gemini CLI on your own computer. It sits at the local end of this choice, and routines sit at the cloud end. The [install guide](/blog/how-to-install-and-use-munder-difflin/) covers setup, and the [Concepts hub](/blog/topics/concepts/) explains the terms. + +## What are Claude routines? + +A routine is a saved Claude Code configuration that runs automatically. Anthropic's [routines page](https://code.claude.com/docs/en/routines) lists what is saved: a prompt, one or more repositories, and a set of connectors, "packaged once and run automatically". + +The routines page says routines execute on Anthropic-managed cloud infrastructure, or on your organization's self-hosted environment when routed there, "so they keep working when your laptop is closed". + +Each run is a full Claude Code cloud session. The routines page says the session runs shell commands and calls the connectors you include without stopping for approval, apart from some artifact actions. + +
Animation. A laptop closes its lid on a desk. An alarm clock beside it shakes its bells, and a cloud above the desk lights up while a sheet of paper labelled prompt floats up into it. You can tap the alarm clock.
Routines run in the cloud, so they keep working when your laptop is closed. Routines page, checked 12 Oct 2026. The drawing shows the alarm clock as the trigger.
+ +## Who can use routines today? + +People on Pro, Max, Team and Enterprise plans can. The routines page says "Routines are available on Pro, Max, Team, and Enterprise plans", and it carries this note: "Routines are in research preview. Behavior, limits, and the API surface may change." + +The routines page says Team and Enterprise Owners can disable routines for all members. It also says routines belong to your individual claude.ai account and are not shared with teammates. + +We found no launch date on the routines page. We found no entry announcing routines in Anthropic's [Claude Code changelog](https://code.claude.com/docs/en/changelog), so we give no date. + +## What can start a routine? + +A schedule, an API call or a GitHub event can start a routine. These are the three trigger types on the routines page on 12 Oct 2026. + +| Trigger | Starts a run | +| --- | --- | +| Scheduled | On a recurring cadence, or once at a future time | +| API | When you send an HTTP POST with a bearer token | +| GitHub | On repository events such as pull requests or releases | + +The routines page says a single routine can combine triggers. It also says a run scheduled exactly on the hour, such as 9:00, "can start several minutes late", and suggests a time like 9:07. + +
Animation. One letterbox stands on a post. Three envelopes labelled Scheduled, API and GitHub drop into its slot one after another, and each time the small flag on its side lifts. You can tap any envelope.
A schedule, an API call or a GitHub event can start a routine, and one routine can combine them. Routines page, checked 12 Oct 2026.
+ +## How do you create a routine? + +You create one on the web at claude.ai/code/routines, in the Desktop app, or from the CLI with `/schedule`. The routines page gives these web steps: + +1. Click New routine. +2. Name it and write the prompt, which must be "self-contained and explicit". +3. Add one or more GitHub repositories. +4. Pick a cloud environment, which controls network access. +5. Choose one trigger type or combine several. +6. Review connectors. Your connected MCP connectors are included by default, so remove any the routine doesn't need. +7. Click Create. + +From the CLI, the page's example is: + +```text +/schedule daily PR review at 9am +``` + +The routines page says `/schedule` in the CLI creates scheduled routines, and that you add an API trigger on the web. + +## What does a routine cost and what are the limits? + +A routine uses your plan's usage, and each way of starting a run has an hourly limit. The routines page says "Routines draw down subscription usage the same way interactive sessions do." It gives no separate price. + +Anthropic's [pricing page](https://claude.com/pricing) listed Pro at $20 if billed monthly and Max "From $100" per month on 12 Oct 2026. For plan detail see [how much Claude Code costs](/blog/how-much-does-claude-code-cost/). + +These rows are our selection from the limits table on the routines page. + +| Way of starting a run | Limit on 12 Oct 2026 | Over the limit | +| --- | --- | --- | +| Scheduled runs, including one-off runs | 100 per hour, for your account | The run waits | +| Run now, API fires and one-off reruns | 30 per hour, for each routine | The action fails | +| GitHub events | Hourly caps, no number given | Events are dropped | + +The routines page says "None of these hourly limits has overage." It also says the minimum interval for a schedule is one hour. At the subscription usage limit, the page says organizations with usage credits turned on can keep running routines on metered overage. + +
Animation. A row of mugs slides along a shelf under a coffee tap and each one fills. A meter beside the tap, labelled 100 per hour for your account, fills up. Then the tap closes and the next mug waits until a wall clock hand comes round and the meter resets.
Scheduled runs: 100 per hour for your account, and a run over the limit waits until the limit resets. Routines page, checked 12 Oct 2026.
+ +The routines page also warns that a green status means the session "started and exited without an infrastructure error". Green is a statement about plumbing, not about your task. + +## How is a routine different from a scheduled task, cron or GitHub Actions? + +A routine runs in the cloud without your machine, and the other options run on your computer or on GitHub's runners. Anthropic's [scheduled tasks page](https://code.claude.com/docs/en/scheduled-tasks) compares the cloud option with Desktop scheduled tasks and `/loop`. Cloud needs no machine on, has no access to local files (a fresh clone), and has a minimum interval of 1 hour. Desktop tasks and `/loop` run on your machine with a minimum interval of 1 minute. + +
Animation. Two plant pots sit side by side. A watering can hanging from a cloud tips over the left pot once while a clock hand sweeps 1 hour. A small watering can on a desk tips over the right pot again and again, once each 1 minute tick.
Minimum interval: 1 hour for cloud routines, 1 minute for Desktop tasks and /loop. Scheduled tasks page, checked 12 Oct 2026.
+ +On cron, the routines page says you set a cron expression with `/schedule update`, and that expressions more frequent than one hour are rejected. + +Anthropic's [GitHub Actions page](https://code.claude.com/docs/en/github-actions) says the Claude Code GitHub Action runs on GitHub-hosted runners, "which consume your GitHub Actions minutes". + +We think a local task still fits jobs that need local files or a run every few minutes. + +## What does it mean if you run coding agents on your own computer? + +Little changes for local agents, because the scheduled tasks page says a cloud routine works from a fresh clone. The routines page says routines suit work that is "unattended, repeatable, and tied to a clear outcome". + +Our view: use routines for that kind of job, and local agents for daily work in your repo. See [Claude Code automation while you sleep](/blog/claude-code-automation-while-you-sleep/), [Claude Code hooks explained](/blog/claude-code-hooks-explained/) and [local-first and cloud agent SDKs](/blog/local-first-vs-cloud-agent-sdks/). + +## What should you do now? + +Try one low risk routine and read its first run. + +1. Pick a repeatable job, such as a weekly docs check. +2. Remove the connectors it doesn't need. +3. Schedule it a few minutes past the hour. +4. Open the first run and read the transcript. + + diff --git a/docs/blog/agent-tools-today-2026-10-03/index.html b/docs/blog/agent-tools-today-2026-10-03/index.html index 5ce5e81eb..72ecabb24 100644 --- a/docs/blog/agent-tools-today-2026-10-03/index.html +++ b/docs/blog/agent-tools-today-2026-10-03/index.html @@ -249,50 +249,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source.

+

Agent Tools Today, 12 Oct 2026: WordCraft 0.5.0, Genkit Dart 1.0, 500 Billion Tokens

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 12 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 10 Oct 2026: MXC SDK 1.0, Claude Code 2.1.296, Microsoft-Decision-1

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 10 Oct 2026, each with its source.

+

Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 9 Oct 2026: Gemini Agent, Codex CLI 0.162.0, Step 5 Preview

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 9 Oct 2026, each with its source.

+

Agent Tools Today, 10 Oct 2026: MXC SDK 1.0, Claude Code 2.1.296, Microsoft-Decision-1

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 10 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-04/index.html b/docs/blog/agent-tools-today-2026-10-04/index.html index 13aa90b3e..43efed1a0 100644 --- a/docs/blog/agent-tools-today-2026-10-04/index.html +++ b/docs/blog/agent-tools-today-2026-10-04/index.html @@ -248,50 +248,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source.

+

Agent Tools Today, 12 Oct 2026: WordCraft 0.5.0, Genkit Dart 1.0, 500 Billion Tokens

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 12 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 10 Oct 2026: MXC SDK 1.0, Claude Code 2.1.296, Microsoft-Decision-1

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 10 Oct 2026, each with its source.

+

Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 9 Oct 2026: Gemini Agent, Codex CLI 0.162.0, Step 5 Preview

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 9 Oct 2026, each with its source.

+

Agent Tools Today, 10 Oct 2026: MXC SDK 1.0, Claude Code 2.1.296, Microsoft-Decision-1

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 10 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-05/index.html b/docs/blog/agent-tools-today-2026-10-05/index.html index 097368b19..b67b3c825 100644 --- a/docs/blog/agent-tools-today-2026-10-05/index.html +++ b/docs/blog/agent-tools-today-2026-10-05/index.html @@ -246,50 +246,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source.

+

Agent Tools Today, 12 Oct 2026: WordCraft 0.5.0, Genkit Dart 1.0, 500 Billion Tokens

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 12 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 10 Oct 2026: MXC SDK 1.0, Claude Code 2.1.296, Microsoft-Decision-1

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 10 Oct 2026, each with its source.

+

Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 9 Oct 2026: Gemini Agent, Codex CLI 0.162.0, Step 5 Preview

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 9 Oct 2026, each with its source.

+

Agent Tools Today, 10 Oct 2026: MXC SDK 1.0, Claude Code 2.1.296, Microsoft-Decision-1

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 10 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-06/index.html b/docs/blog/agent-tools-today-2026-10-06/index.html index 94c4d20f4..f1f8ab491 100644 --- a/docs/blog/agent-tools-today-2026-10-06/index.html +++ b/docs/blog/agent-tools-today-2026-10-06/index.html @@ -247,50 +247,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source.

+

Agent Tools Today, 12 Oct 2026: WordCraft 0.5.0, Genkit Dart 1.0, 500 Billion Tokens

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 12 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 10 Oct 2026: MXC SDK 1.0, Claude Code 2.1.296, Microsoft-Decision-1

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 10 Oct 2026, each with its source.

+

Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 9 Oct 2026: Gemini Agent, Codex CLI 0.162.0, Step 5 Preview

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 9 Oct 2026, each with its source.

+

Agent Tools Today, 10 Oct 2026: MXC SDK 1.0, Claude Code 2.1.296, Microsoft-Decision-1

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 10 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-07/index.html b/docs/blog/agent-tools-today-2026-10-07/index.html index a8321daff..71b38bc1d 100644 --- a/docs/blog/agent-tools-today-2026-10-07/index.html +++ b/docs/blog/agent-tools-today-2026-10-07/index.html @@ -247,50 +247,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source.

+

Agent Tools Today, 12 Oct 2026: WordCraft 0.5.0, Genkit Dart 1.0, 500 Billion Tokens

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 12 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 10 Oct 2026: MXC SDK 1.0, Claude Code 2.1.296, Microsoft-Decision-1

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 10 Oct 2026, each with its source.

+

Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 9 Oct 2026: Gemini Agent, Codex CLI 0.162.0, Step 5 Preview

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 9 Oct 2026, each with its source.

+

Agent Tools Today, 10 Oct 2026: MXC SDK 1.0, Claude Code 2.1.296, Microsoft-Decision-1

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 10 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-08/index.html b/docs/blog/agent-tools-today-2026-10-08/index.html index 8f22e8d48..2e7b4c2e8 100644 --- a/docs/blog/agent-tools-today-2026-10-08/index.html +++ b/docs/blog/agent-tools-today-2026-10-08/index.html @@ -246,50 +246,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source.

+

Agent Tools Today, 12 Oct 2026: WordCraft 0.5.0, Genkit Dart 1.0, 500 Billion Tokens

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 12 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 10 Oct 2026: MXC SDK 1.0, Claude Code 2.1.296, Microsoft-Decision-1

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 10 Oct 2026, each with its source.

+

Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 9 Oct 2026: Gemini Agent, Codex CLI 0.162.0, Step 5 Preview

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 9 Oct 2026, each with its source.

+

Agent Tools Today, 10 Oct 2026: MXC SDK 1.0, Claude Code 2.1.296, Microsoft-Decision-1

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 10 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-09/index.html b/docs/blog/agent-tools-today-2026-10-09/index.html index 9c2019d70..0211eb7c5 100644 --- a/docs/blog/agent-tools-today-2026-10-09/index.html +++ b/docs/blog/agent-tools-today-2026-10-09/index.html @@ -247,50 +247,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source.

+

Agent Tools Today, 12 Oct 2026: WordCraft 0.5.0, Genkit Dart 1.0, 500 Billion Tokens

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 12 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 10 Oct 2026: MXC SDK 1.0, Claude Code 2.1.296, Microsoft-Decision-1

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 10 Oct 2026, each with its source.

+

Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 8 Oct 2026: Claude Haiku 5.5, GPT-6 Intelligent UI, Docker Agent

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 8 Oct 2026, each with its source.

+

Agent Tools Today, 10 Oct 2026: MXC SDK 1.0, Claude Code 2.1.296, Microsoft-Decision-1

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 10 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-10/index.html b/docs/blog/agent-tools-today-2026-10-10/index.html index fd1a436da..10cd8929f 100644 --- a/docs/blog/agent-tools-today-2026-10-10/index.html +++ b/docs/blog/agent-tools-today-2026-10-10/index.html @@ -247,50 +247,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source.

+

Agent Tools Today, 12 Oct 2026: WordCraft 0.5.0, Genkit Dart 1.0, 500 Billion Tokens

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 12 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 9 Oct 2026: Gemini Agent, Codex CLI 0.162.0, Step 5 Preview

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 9 Oct 2026, each with its source.

+

Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 8 Oct 2026: Claude Haiku 5.5, GPT-6 Intelligent UI, Docker Agent

-

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 8 Oct 2026, each with its source.

+

Agent Tools Today, 9 Oct 2026: Gemini Agent, Codex CLI 0.162.0, Step 5 Preview

+

The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 9 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-11/index.html b/docs/blog/agent-tools-today-2026-10-11/index.html index ce9f14c03..4cd284497 100644 --- a/docs/blog/agent-tools-today-2026-10-11/index.html +++ b/docs/blog/agent-tools-today-2026-10-11/index.html @@ -239,56 +239,56 @@

How this list is built + + + + + + + +
+
+ - -
-
- - - - - - - -
-
-
+
diff --git a/docs/blog/is-claude-code-max-worth-it/index.html b/docs/blog/is-claude-code-max-worth-it/index.html index ccc8b7ac2..975de3ae2 100644 --- a/docs/blog/is-claude-code-max-worth-it/index.html +++ b/docs/blog/is-claude-code-max-worth-it/index.html @@ -411,50 +411,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/is-claude-code-open-source/index.html b/docs/blog/is-claude-code-open-source/index.html index 8100bd458..5b3f10886 100644 --- a/docs/blog/is-claude-code-open-source/index.html +++ b/docs/blog/is-claude-code-open-source/index.html @@ -292,50 +292,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/is-ollama-good-for-coding/index.html b/docs/blog/is-ollama-good-for-coding/index.html index c6cb2d166..657517f8c 100644 --- a/docs/blog/is-ollama-good-for-coding/index.html +++ b/docs/blog/is-ollama-good-for-coding/index.html @@ -332,50 +332,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/long-running-agents-the-2026-shift/index.html b/docs/blog/long-running-agents-the-2026-shift/index.html index 71ec63859..068f1873f 100644 --- a/docs/blog/long-running-agents-the-2026-shift/index.html +++ b/docs/blog/long-running-agents-the-2026-shift/index.html @@ -350,50 +350,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/loop-engineering-for-ai-agents/index.html b/docs/blog/loop-engineering-for-ai-agents/index.html index 96d88c303..6d1f7e729 100644 --- a/docs/blog/loop-engineering-for-ai-agents/index.html +++ b/docs/blog/loop-engineering-for-ai-agents/index.html @@ -291,50 +291,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/mistral-large-4/index.html b/docs/blog/mistral-large-4/index.html index 447c88aca..a8d0f1b11 100644 --- a/docs/blog/mistral-large-4/index.html +++ b/docs/blog/mistral-large-4/index.html @@ -346,50 +346,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/munder-difflin-faq/index.html b/docs/blog/munder-difflin-faq/index.html index 29a76a3a9..3e502f497 100644 --- a/docs/blog/munder-difflin-faq/index.html +++ b/docs/blog/munder-difflin-faq/index.html @@ -320,50 +320,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/open-source-ai-tools-on-purpose/index.html b/docs/blog/open-source-ai-tools-on-purpose/index.html index 355394fa1..082ccf5fc 100644 --- a/docs/blog/open-source-ai-tools-on-purpose/index.html +++ b/docs/blog/open-source-ai-tools-on-purpose/index.html @@ -322,50 +322,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/openai-decisions-api/index.html b/docs/blog/openai-decisions-api/index.html index cfde1aa17..27424fd45 100644 --- a/docs/blog/openai-decisions-api/index.html +++ b/docs/blog/openai-decisions-api/index.html @@ -361,50 +361,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/openai-text-watermarking/index.html b/docs/blog/openai-text-watermarking/index.html index 50ab42907..bd0bdcd8c 100644 --- a/docs/blog/openai-text-watermarking/index.html +++ b/docs/blog/openai-text-watermarking/index.html @@ -372,50 +372,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/reflection-beam/index.html b/docs/blog/reflection-beam/index.html index 5b55809a3..b8617802a 100644 --- a/docs/blog/reflection-beam/index.html +++ b/docs/blog/reflection-beam/index.html @@ -351,50 +351,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/review-agent-work-where-it-happens/index.html b/docs/blog/review-agent-work-where-it-happens/index.html index 76d75679c..148079140 100644 --- a/docs/blog/review-agent-work-where-it-happens/index.html +++ b/docs/blog/review-agent-work-where-it-happens/index.html @@ -282,50 +282,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/shareable-agent-roles/index.html b/docs/blog/shareable-agent-roles/index.html index 219e170a5..2ab307838 100644 --- a/docs/blog/shareable-agent-roles/index.html +++ b/docs/blog/shareable-agent-roles/index.html @@ -324,50 +324,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/tags/automation/index.html b/docs/blog/tags/automation/index.html index ec4ed0ebb..55b8d18e3 100644 --- a/docs/blog/tags/automation/index.html +++ b/docs/blog/tags/automation/index.html @@ -105,11 +105,27 @@

Tag

#Automation

-

15 posts tagged Automation.

+

16 posts tagged Automation.

+
diff --git a/docs/blog/tags/claude-code/index.html b/docs/blog/tags/claude-code/index.html index d335fa035..a581754c9 100644 --- a/docs/blog/tags/claude-code/index.html +++ b/docs/blog/tags/claude-code/index.html @@ -105,11 +105,43 @@

Tag

#Claude Code

-

83 posts tagged Claude Code.

+

85 posts tagged Claude Code.

+ +
diff --git a/docs/blog/tags/codex/index.html b/docs/blog/tags/codex/index.html index 29976ebc1..31fc3e392 100644 --- a/docs/blog/tags/codex/index.html +++ b/docs/blog/tags/codex/index.html @@ -105,11 +105,27 @@

Tag

#Codex

-

17 posts tagged Codex.

+

18 posts tagged Codex.

+
diff --git a/docs/blog/tags/concepts/index.html b/docs/blog/tags/concepts/index.html index 22eeadd0f..17c8a7453 100644 --- a/docs/blog/tags/concepts/index.html +++ b/docs/blog/tags/concepts/index.html @@ -105,11 +105,27 @@

Tag

#Concepts

-

42 posts tagged Concepts.

+

43 posts tagged Concepts.

+
diff --git a/docs/blog/tags/daily-brief/index.html b/docs/blog/tags/daily-brief/index.html index 5306cb20b..b93a89dbb 100644 --- a/docs/blog/tags/daily-brief/index.html +++ b/docs/blog/tags/daily-brief/index.html @@ -105,11 +105,27 @@

Tag

#Daily Brief

-

9 posts tagged Daily Brief.

+

10 posts tagged Daily Brief.

+
diff --git a/docs/blog/tags/open-source/index.html b/docs/blog/tags/open-source/index.html index 9fab39e00..e5b091d71 100644 --- a/docs/blog/tags/open-source/index.html +++ b/docs/blog/tags/open-source/index.html @@ -105,11 +105,27 @@

Tag

#Open Source

-

59 posts tagged Open Source.

+

60 posts tagged Open Source.

+
diff --git a/docs/blog/tags/skills/index.html b/docs/blog/tags/skills/index.html index de1252d8e..0d4628aef 100644 --- a/docs/blog/tags/skills/index.html +++ b/docs/blog/tags/skills/index.html @@ -105,11 +105,27 @@

Tag

#Skills

-

11 posts tagged Skills.

+

12 posts tagged Skills.

+
diff --git a/docs/blog/the-clone-army-trap-mixed-swarm-vs-identical-agents/index.html b/docs/blog/the-clone-army-trap-mixed-swarm-vs-identical-agents/index.html index cb3b2c6cb..373ec19dd 100644 --- a/docs/blog/the-clone-army-trap-mixed-swarm-vs-identical-agents/index.html +++ b/docs/blog/the-clone-army-trap-mixed-swarm-vs-identical-agents/index.html @@ -358,50 +358,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/topics/comparisons/index.html b/docs/blog/topics/comparisons/index.html index 1a7e17609..6d44607f6 100644 --- a/docs/blog/topics/comparisons/index.html +++ b/docs/blog/topics/comparisons/index.html @@ -116,7 +116,7 @@

comparisons

Honest side-by-sides with the other ways to guides47 - concepts45 + concepts46 comparisons41 @@ -124,12 +124,12 @@

comparisons

Honest side-by-sides with the other ways to story19 + news10 + orchestration9 use-cases9 - news9 - memory5

diff --git a/docs/blog/topics/concepts/index.html b/docs/blog/topics/concepts/index.html index 26d49d9aa..741af5dfe 100644 --- a/docs/blog/topics/concepts/index.html +++ b/docs/blog/topics/concepts/index.html @@ -116,7 +116,7 @@

concepts

The ideas underneath the product — harnesses, guides47 - concepts45 + concepts46 comparisons41 @@ -124,12 +124,12 @@

concepts

The ideas underneath the product — harnesses, story19 + news10 + orchestration9 use-cases9 - news9 - memory5

@@ -138,6 +138,22 @@

concepts

The ideas underneath the product — harnesses,

+
diff --git a/docs/blog/topics/guides/index.html b/docs/blog/topics/guides/index.html index 338adcbfb..53cd74462 100644 --- a/docs/blog/topics/guides/index.html +++ b/docs/blog/topics/guides/index.html @@ -116,7 +116,7 @@

guides

Step-by-step walkthroughs you can follow today guides47 - concepts45 + concepts46 comparisons41 @@ -124,12 +124,12 @@

guides

Step-by-step walkthroughs you can follow today story19 + news10 + orchestration9 use-cases9 - news9 - memory5

diff --git a/docs/blog/topics/index.html b/docs/blog/topics/index.html index 68ebe5307..1b179f9b8 100644 --- a/docs/blog/topics/index.html +++ b/docs/blog/topics/index.html @@ -126,7 +126,7 @@

guides

concepts

-

45 posts.

+

46 posts.

View topic →
@@ -158,6 +158,15 @@

story

+ + +
+

news

+

10 posts.

+
View topic →
+
+
+
@@ -176,15 +185,6 @@

use-cases

- - -
-

news

-

9 posts.

-
View topic →
-
-
-
@@ -202,11 +202,11 @@

memory

Multi-Agent88 - Claude Code83 + Claude Code85 - Open Source59 + Open Source60 - Concepts42 + Concepts43 Comparisons41 @@ -228,19 +228,19 @@

memory

Getting Started18 - Codex17 + Codex18 - Release16 + Automation16 - Automation15 + Release16 Engines14 Tools12 - Security12 + Skills12 - Skills11 + Security12 Memory10 @@ -248,7 +248,7 @@

memory

Human-in-the-Loop10 - Daily Brief9 + Daily Brief10 Workflow8 diff --git a/docs/blog/topics/internals/index.html b/docs/blog/topics/internals/index.html index 85ca9d722..369f088a3 100644 --- a/docs/blog/topics/internals/index.html +++ b/docs/blog/topics/internals/index.html @@ -116,7 +116,7 @@

internals

How the machine actually works: postmortems, a guides47 - concepts45 + concepts46 comparisons41 @@ -124,12 +124,12 @@

internals

How the machine actually works: postmortems, a story19 + news10 + orchestration9 use-cases9 - news9 - memory5

diff --git a/docs/blog/topics/memory/index.html b/docs/blog/topics/memory/index.html index 592d4fb17..41094b0eb 100644 --- a/docs/blog/topics/memory/index.html +++ b/docs/blog/topics/memory/index.html @@ -116,7 +116,7 @@

memory

How agents remember across sessions — and how a guides47 - concepts45 + concepts46 comparisons41 @@ -124,12 +124,12 @@

memory

How agents remember across sessions — and how a story19 + news10 + orchestration9 use-cases9 - news9 - memory5

diff --git a/docs/blog/topics/news/index.html b/docs/blog/topics/news/index.html index 7a0a9da2a..7cc229cae 100644 --- a/docs/blog/topics/news/index.html +++ b/docs/blog/topics/news/index.html @@ -116,7 +116,7 @@

news

Agent Tools Today: a daily brief of the top five la guides47 - concepts45 + concepts46 comparisons41 @@ -124,12 +124,12 @@

news

Agent Tools Today: a daily brief of the top five la story19 + news10 + orchestration9 use-cases9 - news9 - memory5

@@ -138,6 +138,22 @@

news

Agent Tools Today: a daily brief of the top five la

+
diff --git a/docs/blog/topics/orchestration/index.html b/docs/blog/topics/orchestration/index.html index a31e7d257..3dd24f7f1 100644 --- a/docs/blog/topics/orchestration/index.html +++ b/docs/blog/topics/orchestration/index.html @@ -116,7 +116,7 @@

orchestration

Patterns for making one boss agent run a f guides47 - concepts45 + concepts46 comparisons41 @@ -124,12 +124,12 @@

orchestration

Patterns for making one boss agent run a f story19 + news10 + orchestration9 use-cases9 - news9 - memory5

diff --git a/docs/blog/topics/story/index.html b/docs/blog/topics/story/index.html index 78bfb2552..1a86805c3 100644 --- a/docs/blog/topics/story/index.html +++ b/docs/blog/topics/story/index.html @@ -116,7 +116,7 @@

story

Launches, releases, and the occasional confession guides47 - concepts45 + concepts46 comparisons41 @@ -124,12 +124,12 @@

story

Launches, releases, and the occasional confession story19 + news10 + orchestration9 use-cases9 - news9 - memory5

diff --git a/docs/blog/topics/use-cases/index.html b/docs/blog/topics/use-cases/index.html index 1c8f96f5c..8ba81c212 100644 --- a/docs/blog/topics/use-cases/index.html +++ b/docs/blog/topics/use-cases/index.html @@ -116,7 +116,7 @@

use-cases

Real workflows the hive actually runs — writ guides47 - concepts45 + concepts46 comparisons41 @@ -124,12 +124,12 @@

use-cases

Real workflows the hive actually runs — writ story19 + news10 + orchestration9 use-cases9 - news9 - memory5

diff --git a/docs/blog/voice-as-a-control-plane-for-agent-fleets/index.html b/docs/blog/voice-as-a-control-plane-for-agent-fleets/index.html index ecf57af1e..11f6aea29 100644 --- a/docs/blog/voice-as-a-control-plane-for-agent-fleets/index.html +++ b/docs/blog/voice-as-a-control-plane-for-agent-fleets/index.html @@ -284,50 +284,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/what-are-claude-code-agents/index.html b/docs/blog/what-are-claude-code-agents/index.html index a12a16b35..2fdabc364 100644 --- a/docs/blog/what-are-claude-code-agents/index.html +++ b/docs/blog/what-are-claude-code-agents/index.html @@ -302,50 +302,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/what-is-a-multi-agent-harness/index.html b/docs/blog/what-is-a-multi-agent-harness/index.html index 202d98ba6..8e9cdca67 100644 --- a/docs/blog/what-is-a-multi-agent-harness/index.html +++ b/docs/blog/what-is-a-multi-agent-harness/index.html @@ -373,50 +373,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/what-is-aeo-for-dev-tools/index.html b/docs/blog/what-is-aeo-for-dev-tools/index.html index 45d6630fa..31f1bb0d9 100644 --- a/docs/blog/what-is-aeo-for-dev-tools/index.html +++ b/docs/blog/what-is-aeo-for-dev-tools/index.html @@ -424,50 +424,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/what-is-an-agent-development-environment/index.html b/docs/blog/what-is-an-agent-development-environment/index.html index 66142093f..83af6c644 100644 --- a/docs/blog/what-is-an-agent-development-environment/index.html +++ b/docs/blog/what-is-an-agent-development-environment/index.html @@ -287,50 +287,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/what-is-an-mcp-server/index.html b/docs/blog/what-is-an-mcp-server/index.html index 2e22ff31f..3d396cb14 100644 --- a/docs/blog/what-is-an-mcp-server/index.html +++ b/docs/blog/what-is-an-mcp-server/index.html @@ -292,50 +292,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/what-is-chatgpt-dots/index.html b/docs/blog/what-is-chatgpt-dots/index.html index ea06fc0b3..4f1f1fd5b 100644 --- a/docs/blog/what-is-chatgpt-dots/index.html +++ b/docs/blog/what-is-chatgpt-dots/index.html @@ -335,50 +335,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/what-is-claude-agent-sdk/index.html b/docs/blog/what-is-claude-agent-sdk/index.html index 84a41812d..f6e0c5bda 100644 --- a/docs/blog/what-is-claude-agent-sdk/index.html +++ b/docs/blog/what-is-claude-agent-sdk/index.html @@ -345,50 +345,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/what-is-claude-cowork/index.html b/docs/blog/what-is-claude-cowork/index.html index 942e78430..dc7b4ea8b 100644 --- a/docs/blog/what-is-claude-cowork/index.html +++ b/docs/blog/what-is-claude-cowork/index.html @@ -392,50 +392,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/what-is-codex/index.html b/docs/blog/what-is-codex/index.html index cf964ac63..c0088528f 100644 --- a/docs/blog/what-is-codex/index.html +++ b/docs/blog/what-is-codex/index.html @@ -352,50 +352,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/what-is-gemini-spark/index.html b/docs/blog/what-is-gemini-spark/index.html index 521ba8635..e8796d3ac 100644 --- a/docs/blog/what-is-gemini-spark/index.html +++ b/docs/blog/what-is-gemini-spark/index.html @@ -376,50 +376,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/what-is-harness-engineering/index.html b/docs/blog/what-is-harness-engineering/index.html index 0bf48001b..a95fa2d12 100644 --- a/docs/blog/what-is-harness-engineering/index.html +++ b/docs/blog/what-is-harness-engineering/index.html @@ -288,50 +288,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/what-is-hermes-agent/index.html b/docs/blog/what-is-hermes-agent/index.html index eef6ea383..5977aa1b6 100644 --- a/docs/blog/what-is-hermes-agent/index.html +++ b/docs/blog/what-is-hermes-agent/index.html @@ -393,50 +393,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/what-is-opencode/index.html b/docs/blog/what-is-opencode/index.html index 72edf23cd..086f37403 100644 --- a/docs/blog/what-is-opencode/index.html +++ b/docs/blog/what-is-opencode/index.html @@ -410,50 +410,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/what-is-pi-agent/index.html b/docs/blog/what-is-pi-agent/index.html index 295511648..2f7151df5 100644 --- a/docs/blog/what-is-pi-agent/index.html +++ b/docs/blog/what-is-pi-agent/index.html @@ -364,50 +364,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/what-is-vibe-coding/index.html b/docs/blog/what-is-vibe-coding/index.html index e22bde843..d5237404a 100644 --- a/docs/blog/what-is-vibe-coding/index.html +++ b/docs/blog/what-is-vibe-coding/index.html @@ -277,50 +277,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/what-is-zcode/index.html b/docs/blog/what-is-zcode/index.html index 882d3182d..8326d20ad 100644 --- a/docs/blog/what-is-zcode/index.html +++ b/docs/blog/what-is-zcode/index.html @@ -371,50 +371,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/when-do-agents-need-an-agent-protocol/index.html b/docs/blog/when-do-agents-need-an-agent-protocol/index.html index b6a06ed0d..ca7e381ed 100644 --- a/docs/blog/when-do-agents-need-an-agent-protocol/index.html +++ b/docs/blog/when-do-agents-need-an-agent-protocol/index.html @@ -332,50 +332,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/blog/why-cli-agents-are-powerful/index.html b/docs/blog/why-cli-agents-are-powerful/index.html index 237c25090..f979eae6e 100644 --- a/docs/blog/why-cli-agents-are-powerful/index.html +++ b/docs/blog/why-cli-agents-are-powerful/index.html @@ -370,50 +370,50 @@

FAQ

Related in Concepts

- +
- + 5 min
-

Claude Code agent teams: what they are, how to use them

-

Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits.

+

Claude Managed Agents dynamic workflows: limits and cost

+

Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026.

Concepts - Read → + Read →
diff --git a/docs/llms.txt b/docs/llms.txt index 28a1a0e27..8d0c2f61f 100644 --- a/docs/llms.txt +++ b/docs/llms.txt @@ -43,7 +43,7 @@ ## Blog -203 posts, grouped by topic, newest first in each topic. Topic hubs: https://munderdiffl.in/blog/topics/ +205 posts, grouped by topic, newest first in each topic. Topic hubs: https://munderdiffl.in/blog/topics/ ### guides @@ -97,6 +97,7 @@ ### concepts +- [Claude routines: what they are, triggers, cost and limits](https://munderdiffl.in/blog/claude-code-routines/): Claude routines run a saved Claude Code prompt in the cloud on a schedule, an API call or a GitHub event. Plans, steps and limits, checked 12 Oct 2026. - [Claude Code Projects: what they are and who can use them](https://munderdiffl.in/blog/claude-code-projects/): Claude Code Projects, checked 11 Oct 2026: a public beta on Pro and Max where Claude runs your tasks as parallel threads. Access, limits and plan use. - [Claude Managed Agents dynamic workflows: limits and cost](https://munderdiffl.in/blog/claude-managed-agents-dynamic-workflows/): Dynamic workflows let a Claude Managed Agents agent write a program that runs many agents. How to turn them on, beta limits and cost, checked 11 Oct 2026. - [Claude Code agent teams: what they are, how to use them](https://munderdiffl.in/blog/claude-code-agent-teams/): Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits. @@ -231,6 +232,19 @@ - [The Office Parody Behind Munder Difflin (and Why It Helps)](https://munderdiffl.in/blog/the-office-parody-behind-munder-difflin/): Why Munder Difflin is a loving parody of The Office — and how the office metaphor makes a hive of AI agents genuinely easier to understand and trust. - [Why We Built Munder Difflin](https://munderdiffl.in/blog/why-we-built-munder-difflin/): The origin story of Munder Difflin — how the pain of juggling Claude Code terminals led to a coordinated, memory-backed hive of agents you can watch. +### news + +- [Agent Tools Today, 12 Oct 2026: WordCraft 0.5.0, Genkit Dart 1.0, 500 Billion Tokens](https://munderdiffl.in/blog/agent-tools-today-2026-10-12/): The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 12 Oct 2026, each with its source. +- [Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0](https://munderdiffl.in/blog/agent-tools-today-2026-10-11/): The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source. +- [Agent Tools Today, 10 Oct 2026: MXC SDK 1.0, Claude Code 2.1.296, Microsoft-Decision-1](https://munderdiffl.in/blog/agent-tools-today-2026-10-10/): The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 10 Oct 2026, each with its source. +- [Agent Tools Today, 9 Oct 2026: Gemini Agent, Codex CLI 0.162.0, Step 5 Preview](https://munderdiffl.in/blog/agent-tools-today-2026-10-09/): The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 9 Oct 2026, each with its source. +- [Agent Tools Today, 8 Oct 2026: Claude Haiku 5.5, GPT-6 Intelligent UI, Docker Agent](https://munderdiffl.in/blog/agent-tools-today-2026-10-08/): The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 8 Oct 2026, each with its source. +- [Agent Tools Today, 7 Oct 2026: Mistral Large 4, EmbeddingGemma 2, OpenAI Decisions API](https://munderdiffl.in/blog/agent-tools-today-2026-10-07/): The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 7 Oct 2026, each with its source. +- [Agent Tools Today, 6 Oct 2026: OpenAI Text Watermarks, Reflection Beam, Cloudflare Web Search](https://munderdiffl.in/blog/agent-tools-today-2026-10-06/): The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 6 Oct 2026, each with its source. +- [Agent Tools Today, 5 Oct 2026: Paperclip Goes Full Auto, Strata's Codex API, Cloudflare's Git Contest](https://munderdiffl.in/blog/agent-tools-today-2026-10-05/): The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 5 Oct 2026, each with its source. +- [Agent Tools Today, 4 Oct 2026: You should Know, OpenClaw's Android Wait, Codex Wish List](https://munderdiffl.in/blog/agent-tools-today-2026-10-04/): The top 5 launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 4 Oct 2026, each with its source. +- [Agent Tools Today, 3 Oct 2026: Claude Code Mods, OpenDots, Conductor Mobile](https://munderdiffl.in/blog/agent-tools-today-2026-10-03/): The top 5 launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 3 Oct 2026, each with its source. + ### orchestration - [Deploy a PR Reviewer That Never Sleeps — In About One Prompt](https://munderdiffl.in/blog/deploy-automated-pr-reviewer-agent/): A how-to for standing up a fully automated PR-reviewing agent in Munder Difflin — one that reads your real source (not just the PR description), de-dupes noise, and only escalates what matters. With a real triage run that turned 22 duplicate firings into a clean v0.2.5 patch queue. @@ -255,18 +269,6 @@ - [Run an Office of AI Agents While You Sleep](https://munderdiffl.in/blog/run-an-office-of-ai-agents/): What it takes to run a self-coordinating office of AI coding agents that keeps shipping after you log off — and the guardrails that keep it sane. - [Why Local-First Matters for Your AI Agents](https://munderdiffl.in/blog/why-local-first-matters-for-ai-agents/): The control, privacy, and cost case for keeping your AI agents and their memory on your own machine — and what cloud orchestration quietly costs. -### news - -- [Agent Tools Today, 11 Oct 2026: Dynamic Workflows, TypeSafe AI's Raise, OpenCode 1.19.0](https://munderdiffl.in/blog/agent-tools-today-2026-10-11/): The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 11 Oct 2026, each with its source. -- [Agent Tools Today, 10 Oct 2026: MXC SDK 1.0, Claude Code 2.1.296, Microsoft-Decision-1](https://munderdiffl.in/blog/agent-tools-today-2026-10-10/): The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 10 Oct 2026, each with its source. -- [Agent Tools Today, 9 Oct 2026: Gemini Agent, Codex CLI 0.162.0, Step 5 Preview](https://munderdiffl.in/blog/agent-tools-today-2026-10-09/): The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 9 Oct 2026, each with its source. -- [Agent Tools Today, 8 Oct 2026: Claude Haiku 5.5, GPT-6 Intelligent UI, Docker Agent](https://munderdiffl.in/blog/agent-tools-today-2026-10-08/): The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 8 Oct 2026, each with its source. -- [Agent Tools Today, 7 Oct 2026: Mistral Large 4, EmbeddingGemma 2, OpenAI Decisions API](https://munderdiffl.in/blog/agent-tools-today-2026-10-07/): The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 7 Oct 2026, each with its source. -- [Agent Tools Today, 6 Oct 2026: OpenAI Text Watermarks, Reflection Beam, Cloudflare Web Search](https://munderdiffl.in/blog/agent-tools-today-2026-10-06/): The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 6 Oct 2026, each with its source. -- [Agent Tools Today, 5 Oct 2026: Paperclip Goes Full Auto, Strata's Codex API, Cloudflare's Git Contest](https://munderdiffl.in/blog/agent-tools-today-2026-10-05/): The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 5 Oct 2026, each with its source. -- [Agent Tools Today, 4 Oct 2026: You should Know, OpenClaw's Android Wait, Codex Wish List](https://munderdiffl.in/blog/agent-tools-today-2026-10-04/): The top 5 launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 4 Oct 2026, each with its source. -- [Agent Tools Today, 3 Oct 2026: Claude Code Mods, OpenDots, Conductor Mobile](https://munderdiffl.in/blog/agent-tools-today-2026-10-03/): The top 5 launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 3 Oct 2026, each with its source. - ### memory - [How AI Agents Remember: Semantic Memory in a Hive](https://munderdiffl.in/blog/how-agents-remember-semantic-memory/): A code-grounded guide to how AI agents remember — the MemPalace mine loop, per-agent wings, and wake-up digest that give a Claude Code hive shared recall. diff --git a/docs/sitemap.xml b/docs/sitemap.xml index ed13d7005..2f4a1b674 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -10,7 +10,7 @@ https://munderdiffl.in/ - 2026-10-11 + 2026-10-12 weekly 1.0 @@ -21,6 +21,18 @@ https://munderdiffl.in/blog/daily0.9 https://munderdiffl.in/blog/topics/weekly0.6 https://munderdiffl.in/blog/about/monthly0.4 + + https://munderdiffl.in/blog/agent-tools-today-2026-10-12/ + 2026-10-12 + monthly + 0.8 + + + https://munderdiffl.in/blog/claude-code-routines/ + 2026-10-12 + monthly + 0.8 + https://munderdiffl.in/blog/agent-tools-today-2026-10-11/ 2026-10-11 @@ -1244,8 +1256,8 @@ https://munderdiffl.in/blog/topics/comparisons/weekly0.5 https://munderdiffl.in/blog/topics/internals/weekly0.5 https://munderdiffl.in/blog/topics/story/weekly0.5 + https://munderdiffl.in/blog/topics/news/weekly0.5 https://munderdiffl.in/blog/topics/orchestration/weekly0.5 https://munderdiffl.in/blog/topics/use-cases/weekly0.5 - https://munderdiffl.in/blog/topics/news/weekly0.5 https://munderdiffl.in/blog/topics/memory/weekly0.5