ai-devblog · git:20260809.08d7a80 · 2026-08-09 · sha256 12cd6e785a9e0a52
ai-devblog git:20260809.08d7a80A
Immutable. This exact content is served forever at /api/v1/blob/12cd6e785a9e0a52.
--- name: ai-devblog description: Turn interesting coding, debugging, research, architecture, migration, or deployment work into a dated, high-quality technical devblog within an existing publishing system. Use when an agent should reconstruct work from code and coding-agent threads, decide whether findings merit a post, offer angles, write or revise a structured site-native explanation, select claim-fit evidence, design purposeful article-specific visuals, inspect the rendered result, and publish it publicly or internally. Pair with blog-system-design when work changes the shared index, post shell, typography, navigation, search, responsive behavior, or reusable components. --- # AI Devblog Write a technical account grounded in work the agent performed or can fully reconstruct from primary artifacts. Capture what changed, why it mattered, the evidence behind the conclusion, and what remains uncertain. Prefer a concise, useful field report over polished but generic content marketing. Use `blog-system-design` together with this skill whenever the task creates or changes the shared blog index, taxonomy, article shell, typography, search, navigation, TOC, responsive behavior, or reusable presentation components. A single post must not silently redesign the publication. Keep article angle, prose, and evidence here; keep the shared reading system there. ## Entry contract - Use this skill after technical work produced inspectable artifacts: code, diffs, commits, logs, traces, benchmarks, screenshots, tests, deployments, or operational receipts. - Apply an interestingness gate before proposing a post. Continue only when the work contains at least one of: - a non-obvious finding; - a meaningful design decision or tradeoff; - a measurable improvement or shipped capability; - a surprising failure or corrected assumption; - a reusable technique, tool, or operating lesson. If none applies, recommend a changelog entry, commit message, or internal status note instead of manufacturing a devblog. - Do not invent a post from memory or plans alone. Inspect the current evidence. - For every substantial post, complete the mandatory angle review in [references/angle-review.md](references/angle-review.md) before drafting. Present 3-5 materially different story packages with explicit pros, cons, and a recommendation. Wait for the user's choice unless they explicitly say to skip angle review. A request to “write now” does not itself waive review. - When the user asks to write a post, default to carrying it through publication unless they set a narrower boundary. In the first progress update, remind them that the planned endpoint includes preview, commit, push, deployment, and live publication at the selected visibility. Give them a clear chance to request a draft-only or preview-only handoff before publication work begins. ## Choose visibility Respect an explicit visibility choice: - **Public**: suitable for the open web, with durable public links and all sensitive information removed. - **Internal**: employees-only detail may include private architecture and operational context, but never secrets, credentials, raw personal data, or unnecessary customer content. Default to **public** when visibility is unspecified. Record visibility in front matter when the site's schema supports it. Never publish internal material to a public target merely because public is the default. ## Establish the evidence boundary Before writing: 1. Inspect the relevant source, diff, issue, transcript, experiment, or incident. 2. Inspect screenshots and other media the user supplied in the coding thread. Reuse them when they are primary evidence for the problem, diagnosis, or shipped result. Preserve provenance in the caption, sanitize browser chrome, identifiers, and private data, and distinguish a diagnostic snapshot from production proof. Do not substitute a reconstructed mockup when an authentic supplied screenshot tells the story accurately. 3. Identify exact versions: commit SHA, package/model/runtime version, dataset, configuration, date range, and environment where material. 4. Re-run or read the most relevant tests and measurements when reasonably cheap. Do not convert stale or unavailable evidence into a current claim. 5. Separate these boundaries explicitly: - local source changed; - committed; - pushed or merged; - deployed or migrated; - verified on the live user-facing surface. 6. Preserve failed attempts, reversals, and uncertainty when they explain the final design. Do not edit the causal history into a clean fictional path. Distinguish what this agent directly executed or observed from repository history, another agent's work, and human decisions. Attribute material ideas, discoveries, and playbooks. Use the project's editorial voice where appropriate, but do not imply sole authorship or first-hand observation that the evidence does not support. Link claims to primary evidence whenever possible. Prefer exact-SHA source links, official documentation, original issues or papers, test output, deployment receipts, and public URLs over secondary summaries. Use inline links where they read naturally; use footnotes or a references section for supporting material. Keep quotations short. ### Reconstruct the lived story When coding-agent threads exist, use them to recover the real prompt, surprise, failed assumption, and decision sequence instead of writing from the final diff alone. Search Codex, Claude Code, Devin, and other available thread formats. Match threads to the work by exact commit, changed file, command, and timestamp before falling back to keyword search. - Use private threads to reconstruct causality, but publish a direct excerpt only after checking disclosure, secrets, identities, private paths, customer data, and internal architecture. - Quote only a short decisive exchange. Preserve the original wording; mark omissions and light trimming, name the agent or source type, and never silently rewrite a quotation for polish. - Pair an authentic screenshot with a compact semantic transcript excerpt when the visual context matters. Use transcript text alone when a screenshot would be inaccessible, illegible, or mostly browser chrome. - Use first person only when the trace establishes who acted or observed the event. Otherwise use a transparent project or agent voice. Open with the strongest real artifact: an incident, surprising prompt exchange, diagnostic screenshot, failed assumption, or observed user consequence. Use two to four short paragraphs and at most one compact artifact before the mechanism. State the technical BLUF by the third paragraph. Adapt the artifact to the story instead of forcing every post into a conversation cold open. ### Select evidence by support, not abundance Use the minimum sufficient proof for each important claim. Weigh candidate evidence by: 1. **fit** — it directly supports the claim being made; 2. **directness** — it observes the result rather than relying on a loose proxy; 3. **scope** — its environment and sample match the stated conclusion; 4. **freshness** — it describes the relevant implementation; 5. **explanatory value** — it helps the reader understand or trust the result. Do not list numbers because they are available. Do not repeat one result as a metric card, paragraph, table, and chart. Put detailed receipts in an appendix or durable linked artifact when they matter for audit rather than explanation. Match numeric precision to the claim and the reader's decision. Do not copy machine precision into prose by default. For human-scale durations, normally round to whole seconds; use tenths when that precision changes the comparison, and milliseconds for genuinely subsecond behavior. Keep extra decimal places in linked receipts or raw evidence when auditability requires them. Apply the same judgment to percentages, byte counts, and other measurements: use appropriate significant figures, keep compared values at compatible precision, and avoid three-decimal-place figures unless the distinction is material. Reject proof theater. For each material claim, record the claim, the evidence that directly changes a skeptical reader's belief, and the evidence boundary or limitation. Remove an evidence block when it only demonstrates that normal delivery machinery ran. - Treat HTTP 200 as reachability evidence only. It does not prove the requested source, behavior, bindings, migration, performance, or user outcome. - Do not promote CI success, a green build, an uploaded artifact, or a public URL into article proof unless the article's actual claim concerns that exact boundary. - Keep publication chain-of-custody in the release handoff, a compact provenance line, or a linked receipt. Do not turn it into a large in-article pipeline or set of ornamental proof cards by default. - Prefer one compact comparison table or sentence over a sequence of status badges. A visual must compress and clarify evidence, not enlarge ceremony. - If removing a proof graphic leaves the argument unchanged, remove it. ## Write the title and front matter Start every title with a straightforward summary that tells the reader what actually happened: the concrete change, result, incident, or finding. Put the general lesson, principle, or opinion in the subtitle or body unless that principle is itself the demonstrated result. Optionally follow the title with a subtitle that adds mechanism, context, evidence, or stakes. Good shapes: - `Exact-SHA Archives Cut Checkouts 89%` - `Repository Agents Stay Scoped` - `Durable Events Replaced Polling` Avoid vague titles such as `Some Thoughts on Agents` or hooks that conceal the actual result. Also reject post-hoc principle titles that abstract away a concrete implementation story—for example, prefer `We Split Forge's API Into Five Workers` over `Release Authority Follows Ownership` for a large runtime refactor. Before publication, repeat the title-to-story audit from [references/angle-review.md](references/angle-review.md). Adapt to the destination's established metadata or front-matter schema. Do not add fields or redesign the site's content model merely to satisfy this skill. When the site has no convention yet, prefer: ```yaml title: "Short result — optional hook" description: "One concrete sentence about the result and why it matters." date: "YYYY-MM-DD" tags: ["specific-topic", "system-or-tool"] visibility: "public" ``` Use a real publication date. Choose a few specific, reusable tags rather than an exhaustive keyword list. ### Byline and opening Follow the destination's established author and avatar conventions. Reuse an existing author identity or explicit AI-assistance label rather than adding a one-off persona or hardcoding a project-specific name into the article. When the post is materially AI-written, prefer a convention that makes that clear; do not hide AI authorship behind an invented “the team” byline or an ambiguous institutional voice. If the site has no applicable convention and authorship is required, ask the user or use the smallest transparent AI attribution the content model already supports. The rendered post must move directly from its title, optional subtitle/deck, and compact author byline into the article prose. Do not insert a metrics grid, implementation-evidence scorecard, validation-receipt card, ship-receipt sidebar, or other dashboard-like summary between the headline and the writing. Place important proof in the narrative at the point where it supports a claim; link a longer receipt naturally from that passage or from a restrained endnote. ## Shape the article Use the site's native human-editable format. Use MDX when the destination already supports it and the article benefits from components or interaction. Discover and reuse the site's content directories, layouts, components, typography, metadata, citation style, and build pipeline. Do not introduce a new blog framework merely to enable one article without the user's approval. If the article needs a new shared component or presentation convention, load `blog-system-design` and make that system change explicitly. Orient the reader within the first two or three paragraphs. Assume they are broadly familiar with the technical area but do not know this project, incident, architecture, experiment, or prior argument. Spend two to four sentences naming the relevant system, the situation before this work, why the problem matters, and the specific question the post answers. A catchy opener is optional. When one genuinely helps, use it briefly and put the orienting context immediately after it. When there is no strong opener, begin directly with the context rather than manufacturing a slogan, dramatic anecdote, or mystery. A concrete incident may supply the hook, but readers should not have to infer the surrounding system or stakes from that incident. Be engaging to technical readers in the way the material earns. Preserve a weird failure, funny constraint, surprising reversal, vivid debugging moment, or unusual mechanism when it is authentic and helps explain the work. Do not flatten an interesting story into a formal report, but do not invent personality or suspense for routine work. Within that opening, deliver a two-part BLUF: 1. what changed or was learned; 2. the most important evidence or consequence. Then adapt the structure to the story. A substantial devblog usually needs: - the problem and why it mattered; - the prior design or failed assumption; - the key mechanism or decision; - evidence that supports the result; - alternatives considered and why they lost; - limitations, unresolved questions, and the next test. Before preview, perform a **scan-structure pass** on the source and rendered article; break up any viewport that reads as an uninterrupted wall of prose. - Avoid more than three consecutive body paragraphs when structure is available. - Use headings for transitions and bullets for parallel claims or inventories. - Use **bold lead-ins** for scan targets and *italics* for definitions or contrast. - Do not force emphasis or bullets; every device must expose the article's logic. Before drafting the body, write a private one-sentence thesis and a short causal outline. The thesis must state the non-obvious conclusion, not merely the work completed. The outline should connect the starting condition, mechanism, consequence, evidence, and limitation. Remove it from the finished post unless it also works naturally as reader-facing prose. Explain at the reader's altitude: - introduce project-specific nouns before relying on them; - separate what happened, why it happened, how the mechanism works, and what proves it; - use concrete subjects and verbs instead of vague abstractions such as “improved the architecture” or “leveraged the platform”; - make causal transitions explicit when one decision or observation leads to another; - keep one primary idea per paragraph and cut repeated conclusions, ceremonial setup, and exhaustive inventories that do not advance the argument; - name the strongest counterargument or tradeoff instead of presenting the chosen design as inevitable; - preserve technical precision, but define uncommon terms and give a small example when a mechanism is otherwise difficult to picture. Stay close to ASD-STE100 Simplified Technical English without making the prose mechanical. Prefer short direct sentences, active voice, one main idea per sentence, consistent terminology, defined abbreviations, and concrete verbs. Avoid idioms, inflated metaphors, vague intensifiers, marketing language, and clickbait that hides the technical result. After the first draft, perform an editorial pass independently from factual verification. Check whether the opening earns attention, each section advances the thesis, examples arrive near the concepts they explain, and the ending adds a durable lesson rather than repeating the introduction. Keep implementation inventories, long logs, and exhaustive methods behind a details block, appendix, linked receipt, or sidebar. Use asides for caveats, definitions, operator notes, and surprising secondary observations without breaking the main narrative. Avoid “AI report” furniture: front-loaded KPI tiles, three-number summary strips, evidence tables that merely restate the deck, and ornamental receipt cards. A table is appropriate only when exact row/column comparison is materially easier to understand than prose. Never add one just to make a post look rigorous. Prefer small exact code excerpts over large dumps. Explain why each excerpt is present. Use a focused code diff when the change itself tells the story. Use tabbed examples when readers benefit from comparing before/after code, alternative implementations, languages, frameworks, or configuration modes; do not hide the only complete example behind interaction. Link to the exact source revision when readers need the full context. When reproducibility is part of the value, give readers the minimum prerequisites, commands, expected result, and safe cleanup needed to follow along. Do not turn every devblog into a start-to-finish tutorial. ## Make the mechanism visible Strongly prefer purposeful visuals when they expose a mechanism or relationship faster than prose. For every substantial post, look for the clearest opportunity to show the mechanism, comparison, or proof. There is no fixed quota: publish without a visual when every candidate would be decorative, misleading, or require disproportionate new infrastructure. Every included visual must make a relationship faster to understand than prose alone. Plan visuals before polishing the prose. List the two or three relationships a reader most needs to understand—such as structure, causality, sequence, comparison, or proof—and choose a visual form only when it improves one of them. Treat the visual and its nearby explanation as one unit: the prose should interpret the graphic, not transcribe every label in it. Before designing article visuals, read [the visual-language reference](references/visual-language.md) and use its selection sequence, semantic palette, layout rules, and examples. Treat visual quality as part of editorial quality, not decoration. When a substantial visual needs art direction, make two to four image-generation studies and iterate between image generation, deterministic code, and human feedback. Start from a text brief or pass an exact diagram back through image generation to explore hierarchy, texture, composition, and publication identity. Use `align-me` when materially different directions remain plausible; show concrete passes rather than asking abstract style questions. Choose the strongest final form instead of forcing every exploration back into code: - publish a generated image directly when it is intentionally editorial, coherent with the article, accessible, and free of unsupported factual detail; - use image generation to stylize a deterministic chart or diagram, then compare it with the source and restore exact labels, scales, measurements, and topology in a deterministic overlay when needed; - rebuild the selected direction in HTML, SVG, CSS, Mermaid, or plotting code when precision, interaction, responsiveness, or accessibility requires it. Generated visual studies may become final assets; they are not automatically disposable moodboards. However, never treat generated pixels as evidence, and never trust a model to preserve factual labels, measurements, screenshots, or topology without verification. For a prominent or technically consequential visual, take a few review passes with the user when practical and obtain clear approval before publication. Choose the smallest useful form: - diagram for architecture, authority, or data flow; - timeline for an incident, migration, or changing state; - table for exact mappings or alternatives that genuinely need two-dimensional comparison, never as a decorative metrics summary; - chart for measured comparisons with units and sample boundaries; - annotated screenshot for user-visible or operational proof; - code diff for a small decisive implementation change; - syntax-highlighted code sample for the key technique; - tabbed code examples for meaningful before/after or cross-stack comparisons; - interactive demo, calculator, explorer, or stepper when readers benefit from changing inputs or walking a causal sequence. Match the visual's semantics to its claim: - An architecture or data-flow diagram must label the meaningful entities and relationships. Show direction, boundaries, ownership, protocol, or lifecycle distinctions when they affect the conclusion. A collection of boxes without relationships is an inventory, not an architecture diagram. - A comparison graphic must use a truthful common scale where comparison is intended. Show units, totals or denominators, the baseline, and the sample or measurement boundary. Do not imply that a proxy metric measures more than it does. - A timeline or sequence must show state transitions and the event that moves the system between them, including retries, branches, or ambiguity when those are central to the lesson. - A screenshot must prove a user-visible or operational claim. Crop it to the relevant surface and annotate the evidence when the reader would otherwise have to hunt for it. - A code visual must be small enough to read and must call attention to the decisive behavior, not merely demonstrate that code exists. Prefer deterministic HTML, SVG, Mermaid, plotting code, or site-native components when exact technical relationships must remain inspectable. Generated or hybrid editorial illustrations are welcome when they add a useful idea, memorable context, or publication identity and survive factual review. Do not let a low-information illustration dominate the initial viewport. Prefer an information-dense SVG diagram, chart, annotated screenshot, or compact mixed media treatment above the fold. Create a strong `og:image` when the publication supports social cards; it may be more expressive because it does not displace article content. Do not add decorative hero art by reflex; use it when the article's story and publication direction justify it. Generative imagery can support attention and explanation, but cannot substitute for a labeled technical diagram, measured chart, authentic screenshot, or other evidence. For performance work, use a before/after visual, timing waterfall, flame chart, or stacked stage diagram only when it supports a distinct claim. Do not show the same result in several forms by default. Keep comparisons on a common scale, show units and totals, identify the exact environment or sample boundary, and provide an accessible table or textual equivalent. If timing attribution is incomplete, label the remainder as overhead or unmeasured time; never invent a stage breakdown. Use supplied screenshots when they show the original symptom or operational surface better than reconstructed UI. Heavily favor an interactive visual when manipulating inputs, replaying a sequence, exploring an artifact, or switching implementations reveals the finding better than a static image. Do not add interaction solely as polish. For interactive visuals or MDX components: - reuse existing components before creating new ones; if the destination has no component system, ask before expanding the publishing stack; - keep data and logic in feature-owned, reusable components; - make the central claim visible without interaction; - provide a static or textual fallback; - support keyboard and touch use, reduced motion, and narrow screens; - avoid client-side weight that is disproportionate to the lesson. When an interactive visual establishes a reusable site convention or requires shared responsive infrastructure, use `blog-system-design` for the component system and keep only article-specific data and interpretation in this skill. Every figure needs a concise caption, units or provenance where applicable, and meaningful alt text or an adjacent textual equivalent. Do not use a chart, diagram, screenshot, or decorative card merely to satisfy a quota. Apply a visual explanation test before keeping a figure: 1. State the exact question the figure answers. 2. Confirm that a reader can identify the answer without relying on the surrounding paragraph. 3. Confirm that labels, scales, arrows, colors, and grouping have declared meanings rather than decorative meanings. 4. Confirm that the adjacent prose explains why the answer matters. 5. Remove or redesign the figure if it could be exchanged for an unrelated illustration without changing the argument. ## Protect readers and systems Before saving or publishing: - remove keys, cookies, tokens, internal credentials, private headers, and authentication artifacts; - mask personal information and customer identifiers unless their inclusion is explicitly authorized and necessary; - sanitize logs, screenshots, terminal output, URLs, analytics, and database rows—not only prose; - do not publish private repository links as if public readers can open them; - distinguish inference from directly observed evidence; - avoid claiming production success from a build, commit, push, preview, or health endpoint alone. ## Preview and publish Follow repository instructions and the user's requested boundary. Unless the user asks for a narrower handoff, carry the article through: 1. write the human-editable post and any reusable visual components; 2. run the relevant content, type, link, lint, and production-build checks; 3. preview the rendered article; 4. visually inspect mobile and desktop, plus tablet or ultrawide when shared layout or wide interactive content changed; 5. verify captions, code wrapping, tables, sidebars, navigation, metadata, dates, tags, citations, and fallbacks; 6. inspect every explanatory figure at its rendered size: labels must be legible, relationships unambiguous, scales truthful, colors distinguishable, and content unclipped without requiring unexplained interaction; 7. test visual components through meaningful rendered or structural assertions. String-presence checks alone do not prove that a chart, diagram, or fallback works; 8. commit only the intended files; 9. push and use the owning deployment path; 10. verify the final URL and any binding-dependent or interactive behavior. When the post changes shared layout, navigation, search, typography, or reusable components, also complete the `blog-system-design` verification checklist. Do not call a visual article complete when the preview is unavailable or when its explanatory figures have not been inspected in the rendered page. Report that state as an incomplete handoff even if content tests and the production build pass. Report source, commit, push/merge, deployment, and live verification as separate facts. A public devblog handoff should end with a verified public URL; an internal devblog should end with the authorized internal preview or URL.