<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Serren</title>
    <description>The latest articles on DEV Community by Serren (@serrendypity).</description>
    <link>https://dev.to/serrendypity</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4033433%2Fd287b559-df20-4cf9-ae7d-5dcc3403fb34.png</url>
      <title>DEV Community: Serren</title>
      <link>https://dev.to/serrendypity</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/serrendypity"/>
    <language>en</language>
    <item>
      <title>What broke when I reviewed 5 agent-made HTML artifacts outside the agent session</title>
      <dc:creator>Serren</dc:creator>
      <pubDate>Sat, 18 Jul 2026 15:58:33 +0000</pubDate>
      <link>https://dev.to/serrendypity/what-broke-when-i-reviewed-5-agent-made-html-artifacts-outside-the-agent-session-2bik</link>
      <guid>https://dev.to/serrendypity/what-broke-when-i-reviewed-5-agent-made-html-artifacts-outside-the-agent-session-2bik</guid>
      <description>&lt;p&gt;I've been testing one narrow problem: Codex or Claude can make an HTML deck or report, but the person reviewing it usually isn't in the agent session.&lt;/p&gt;

&lt;p&gt;I published five public artifacts and opened them as an outside reviewer. More of the runtime survived than I expected. Precise feedback was the part that got awkward.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Artifact&lt;/th&gt;
&lt;th&gt;What survived&lt;/th&gt;
&lt;th&gt;Review edge&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FluidDocs single-file deck&lt;/td&gt;
&lt;td&gt;12 slides, buttons, ArrowRight, exact text selection&lt;/td&gt;
&lt;td&gt;Best result because the slides stay in one document&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;deck-transformer directory&lt;/td&gt;
&lt;td&gt;15 relative slide pages, previews, play mode, next button, ArrowRight&lt;/td&gt;
&lt;td&gt;Playback works, but text inside child iframes doesn't reach the outer feedback target&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-code-transcripts&lt;/td&gt;
&lt;td&gt;Index to page navigation, return link, &lt;code&gt;#msg-*&lt;/code&gt; anchors&lt;/td&gt;
&lt;td&gt;Cross-page review needs stable page and message IDs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-atlas report&lt;/td&gt;
&lt;td&gt;Triage, Cytoscape graph, real diffs&lt;/td&gt;
&lt;td&gt;Text is selectable inside the report, but the outer target still falls back to whole content&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;agent-review-panel&lt;/td&gt;
&lt;td&gt;4 charts, 13 issue cards, P1 filter at 4/13, keyboard open, &lt;code&gt;#issue-AI-1&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Stable issue IDs help; iframe text selection still doesn't bridge&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The shape that held up best
&lt;/h2&gt;

&lt;p&gt;The cleanest result was a single entry document with slides or sections in the same DOM. The deck kept its own buttons and keyboard controls. The reviewer could still point at exact text.&lt;/p&gt;

&lt;p&gt;Child iframes changed that. Navigation was fine. I could select the words in the child page, but the outer review surface only knew "whole content."&lt;/p&gt;

&lt;p&gt;For agent-made decks, stable slide or issue IDs are worth keeping even if the layout changes. Something explicit like &lt;code&gt;data-preapp-slide="pricing"&lt;/code&gt;, or an existing anchor such as &lt;code&gt;#issue-AI-1&lt;/code&gt;, gives the next agent run a better address than "the chart near the end."&lt;/p&gt;

&lt;p&gt;Multi-page output is still usable. The transcript test kept relative links and &lt;code&gt;#msg-*&lt;/code&gt; anchors. If comments need to survive v2, the page and message identity should survive regeneration too.&lt;/p&gt;

&lt;h2&gt;
  
  
  What comes back to the agent
&lt;/h2&gt;

&lt;p&gt;I'm building PreApp around this return path. Feedback comes back with the source version, locator, and feedback ID. The agent relays it and waits for the owner to choose which IDs to apply. Reviewer text stays untrusted data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F48l00ygqnsxelesct434.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F48l00ygqnsxelesct434.png" alt="A reviewer leaves contextual feedback on an HTML deck and the agent receives the version, target, and feedback IDs." width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;None of these compatibility publishes count as external users, and I didn't submit feedback while testing them. They were just a way to separate "the HTML runs" from "a reviewer can point at the right thing."&lt;/p&gt;

&lt;p&gt;I'm still looking for non-sensitive HTML or Markdown work made with Codex or Claude Code. The &lt;a href="https://preapp.app/login?intent=onboarding&amp;amp;agent=codex&amp;amp;utm_source=dev-community&amp;amp;utm_campaign=feedback-loop" rel="noopener noreferrer"&gt;Codex first-publish page&lt;/a&gt; gives the agent three complete messages. Send step 1, reopen the agent once after install, then send steps 2 and 3.&lt;/p&gt;

&lt;p&gt;If it stops before you get a view link, comment with the artifact type, OS, and failed step. Please don't post a token or private file content.&lt;/p&gt;

&lt;p&gt;The CLI, Skill, MCP server, and protocol are in the &lt;a href="https://github.com/serrendypity/preapp-agent" rel="noopener noreferrer"&gt;MIT-licensed repo&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How I get reviewer comments back into Codex after sharing HTML</title>
      <dc:creator>Serren</dc:creator>
      <pubDate>Fri, 17 Jul 2026 11:50:28 +0000</pubDate>
      <link>https://dev.to/serrendypity/how-i-get-reviewer-comments-back-into-codex-after-sharing-html-enf</link>
      <guid>https://dev.to/serrendypity/how-i-get-reviewer-comments-back-into-codex-after-sharing-html-enf</guid>
      <description>&lt;p&gt;Putting a local HTML file online is mostly solved. There are small CLIs for it, plus the usual hosting platforms if you don't mind setting up a repo and a deploy.&lt;/p&gt;

&lt;p&gt;The part that kept breaking for me came after I sent the link.&lt;/p&gt;

&lt;p&gt;Someone would reply with a screenshot, or write something like "the total here is confusing." I still had to work out which version they saw, where "here" was, and how to turn that message into enough context for Codex to make a useful edit.&lt;/p&gt;

&lt;p&gt;For a Markdown report, the same thing happened with page numbers and copied text. The file was easy to share. The feedback had lost its address.&lt;/p&gt;

&lt;p&gt;I made a small CLI and Codex skill to test a different handoff. The basic flow looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Codex publishes -&amp;gt; reviewer comments in context -&amp;gt; Codex pulls the feedback -&amp;gt; I choose what to apply -&amp;gt; Codex publishes v2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Publishing from a Codex task
&lt;/h3&gt;

&lt;p&gt;The easiest path now is to let Codex handle setup and publishing. Open the &lt;a href="https://preapp.app/login?intent=onboarding&amp;amp;agent=codex&amp;amp;utm_source=dev-community&amp;amp;utm_campaign=feedback-loop" rel="noopener noreferrer"&gt;Codex first-publish page&lt;/a&gt;, sign in, and send the three complete messages on that page to Codex.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Send step 1 to install the CLI and Skill.&lt;/li&gt;
&lt;li&gt;When installation finishes, reopen the Codex task once so it discovers the Skill.&lt;/li&gt;
&lt;li&gt;Send steps 2 and 3 from the same page. The access token stays inside the Agent message; don't paste it into a comment, screenshot, or issue.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The last message asks Codex to find the HTML or Markdown deliverable in the current task, publish its local assets, verify the view link, and return separate view and feedback links. I don't have to identify the file path or assemble CLI flags first.&lt;/p&gt;

&lt;p&gt;The reviewer doesn't need an account. They can select text, click an image or diagram, or leave a note on the whole document.&lt;/p&gt;

&lt;p&gt;The separate links ended up mattering more than I expected. I can send a clean reading link to someone who only needs the report, and a feedback link to the person doing the review.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pulling comments back into Codex
&lt;/h3&gt;

&lt;p&gt;After the review, Codex can run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;preapp feedback get checkout-review &lt;span class="nt"&gt;--format&lt;/span&gt; markdown
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The result includes a feedback ID, source version, and locator for each item. A text comment carries the selected quote and its surrounding context. Image and diagram comments carry their target reference. Markdown feedback also maps back to the source file and line.&lt;/p&gt;

&lt;p&gt;Publishing the same slug creates v2 while the shared link stays the same. Old comments stay attached to the version they were written against.&lt;/p&gt;

&lt;p&gt;I deliberately didn't make the skill auto-apply everything it reads. Reviewer text is untrusted data. Codex first relays the feedback, then stops. I choose the feedback IDs it may use before it edits anything.&lt;/p&gt;

&lt;p&gt;That sounds a little fussy until someone writes a comment that looks like an instruction to the agent. In the production test, I included one of those on purpose. It stayed in the source feedback and never became a change instruction.&lt;/p&gt;

&lt;h3&gt;
  
  
  Interactive HTML needs a little more context
&lt;/h3&gt;

&lt;p&gt;The Agent-first message handles static reports. For an HTML prototype with buttons, routes, or client-side state, I can still publish it with a review profile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;preapp publish ./dist &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--slug&lt;/span&gt; checkout-review &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--review-profile&lt;/span&gt; prototype &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--format&lt;/span&gt; json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The reviewer can use the page normally, switch into feedback mode, and click the exact element they mean. The locator includes the page hash, viewport, scroll position, element rectangle, and optional &lt;code&gt;data-preapp-*&lt;/code&gt; labels from the source.&lt;/p&gt;

&lt;p&gt;The owner can then turn selected feedback into a revision brief. Codex reads that brief instead of treating every raw comment as an edit request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;preapp revision get checkout-review &lt;span class="nt"&gt;--version&lt;/span&gt; 1 &lt;span class="nt"&gt;--format&lt;/span&gt; markdown
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What the first real run caught
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F48l00ygqnsxelesct434.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F48l00ygqnsxelesct434.png" alt="A reviewer leaves contextual feedback on an HTML deck and the Agent receives the version, target, and feedback IDs." width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I ran the full flow on a checkout prototype in production. It went through four versions, two review loops, six feedback items, and two applied revision briefs.&lt;/p&gt;

&lt;p&gt;The useful part wasn't the count. One reviewer caught a missing loading state on the submit button. Another asked for the total amount and item count to stay visible. A later review found that the total didn't say whether shipping was included.&lt;/p&gt;

&lt;p&gt;There was also a real bug in the review interface itself: after rewriting or merging an item, focus moved to a hidden pane. Dogfooding the feedback loop exposed that too.&lt;/p&gt;

&lt;p&gt;The same share link kept working through v1 to v4, while each comment stayed on the version and HTML state where it was made.&lt;/p&gt;

&lt;p&gt;I recorded the full loop in a &lt;a href="https://github.com/user-attachments/assets/472a0d85-259e-4e14-8b5b-7d66428b8e81" rel="noopener noreferrer"&gt;41-second demo&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The first outside test
&lt;/h3&gt;

&lt;p&gt;Someone I hadn't worked with before tried the same flow on a synthetic weekly quality report. The reviewer flagged a recommendation that converted an empty &lt;code&gt;unit_price&lt;/code&gt; string to &lt;code&gt;null&lt;/code&gt;, since that could hide a broken vendor contract.&lt;/p&gt;

&lt;p&gt;The Agent pulled the note with the selected text and source version. About three minutes later, the creator published v2: the coercion was gone, the report now called for boundary validation and quarantine, and it added a vendor-specific &lt;code&gt;E_EMPTY_UNIT_PRICE&lt;/code&gt; error.&lt;/p&gt;

&lt;p&gt;This was the first run where the person publishing the artifact wasn't me. They kept control of the edit, and the reviewer never needed the source file or Agent token.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trying it on real work
&lt;/h3&gt;

&lt;p&gt;The CLI, Codex skill, MCP server, protocol docs, and examples are in an MIT-licensed repo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/serrendypity/preapp-agent" rel="noopener noreferrer"&gt;https://github.com/serrendypity/preapp-agent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The hosted share and review service is &lt;a href="https://preapp.app/login?intent=onboarding&amp;amp;agent=codex&amp;amp;utm_source=dev-community&amp;amp;utm_campaign=feedback-loop" rel="noopener noreferrer"&gt;PreApp&lt;/a&gt;. That part isn't open source, and it's free during early access.&lt;/p&gt;

&lt;p&gt;I'm looking for 10 people who already use Codex, Claude Code, or another shell-capable agent for reports, HTML presentations, or prototypes. The useful test is one real, non-sensitive HTML or Markdown artifact, not a canned example. I'll help with the first publish if the setup gets in the way.&lt;/p&gt;

&lt;p&gt;If you have one, open the Codex first-publish page above and send the three messages to your Agent. If anything stops before you get a view link, reply with the artifact type, OS, and the step that failed. Don't post a token or private file content.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
