<?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>Forem: Xu Bian</title>
    <description>The latest articles on Forem by Xu Bian (@xu_bian_f1525524ffcb08e35).</description>
    <link>https://forem.com/xu_bian_f1525524ffcb08e35</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2479858%2F87325cb9-be31-4966-8b8f-abd6b1993886.png</url>
      <title>Forem: Xu Bian</title>
      <link>https://forem.com/xu_bian_f1525524ffcb08e35</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/xu_bian_f1525524ffcb08e35"/>
    <language>en</language>
    <item>
      <title>How Codex Can Drive Verifiable SketchUp Modeling</title>
      <dc:creator>Xu Bian</dc:creator>
      <pubDate>Wed, 06 May 2026 00:22:11 +0000</pubDate>
      <link>https://forem.com/xu_bian_f1525524ffcb08e35/how-codex-can-drive-verifiable-sketchup-modeling-271o</link>
      <guid>https://forem.com/xu_bian_f1525524ffcb08e35/how-codex-can-drive-verifiable-sketchup-modeling-271o</guid>
      <description>&lt;p&gt;This is not a step-by-step tutorial.&lt;/p&gt;

&lt;p&gt;Until the demo path is fully verified, I do not want to package it as something readers can simply follow and reproduce. A more accurate label is architecture walkthrough: this piece explains why Codex or another agent CLI should not "magically control SketchUp" directly, and why it should instead use verifiable intermediate layers to turn natural-language intent into checkable, executable, repairable project state.&lt;/p&gt;

&lt;p&gt;Using SketchUp Agent Harness as the example, Claude and Codex are only entry points. The important structure sits in the middle:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;agent CLI
-&amp;gt; runtime skills
-&amp;gt; MCP server
-&amp;gt; structured design model
-&amp;gt; SketchUp Ruby bridge
-&amp;gt; SketchUp scene
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This chain determines whether the agent is generating a one-off result or maintaining a design project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Codex Should Not Directly Operate SketchUp
&lt;/h2&gt;

&lt;p&gt;The most obvious idea is to let Codex understand the user's request and directly call SketchUp.&lt;/p&gt;

&lt;p&gt;That idea is tempting, but it creates several problems.&lt;/p&gt;

&lt;p&gt;First, software operations can become a black box. What Codex did, why it did it, which objects were created, and where dimensions came from become hard to trace without structured records.&lt;/p&gt;

&lt;p&gt;Second, design state gets scattered. Some of it sits in chat, some in the SketchUp scene, some in temporary scripts, and some in the user's head. When the project continues later, the agent may not know the real current state.&lt;/p&gt;

&lt;p&gt;Third, mistakes are hard to repair. If the result looks wrong, the agent may patch the current scene instead of going back to source evidence and the structured model to fix the root cause.&lt;/p&gt;

&lt;p&gt;Codex should not simply become SketchUp's hand. It should be an agent entry point that understands intent, calls tools, checks results, and drives repair.&lt;/p&gt;

&lt;p&gt;The stable execution capability should live in the tool layer and the project state layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 1: Agent CLI Understands Intent
&lt;/h2&gt;

&lt;p&gt;The user begins with natural-language intent.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;"Create a 2 m by 1.8 m bathroom with a toilet, vanity, door, mirror, basic lighting, and a clearance check."&lt;/p&gt;

&lt;p&gt;Codex's value is not to turn that sentence directly into a one-off script. Its value is to understand the design actions inside the request:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;create a space&lt;/li&gt;
&lt;li&gt;set dimensions and units&lt;/li&gt;
&lt;li&gt;place components&lt;/li&gt;
&lt;li&gt;apply basic rules&lt;/li&gt;
&lt;li&gt;check clearances&lt;/li&gt;
&lt;li&gt;generate an execution plan&lt;/li&gt;
&lt;li&gt;push the result into SketchUp&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Codex is the entry point and coordinator. It is not the source of truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 2: Runtime Skills Provide Design Context
&lt;/h2&gt;

&lt;p&gt;Natural-language understanding is not enough.&lt;/p&gt;

&lt;p&gt;A general agent may know what a bathroom is, but it may not know how this product represents spaces, how components are registered, how design rules work, when layout validation is required, or when a project-specific repair must not become a global rule.&lt;/p&gt;

&lt;p&gt;That is the role of runtime skills.&lt;/p&gt;

&lt;p&gt;In a system like SketchUp Agent Harness, runtime skills should serve design tasks, not product maintainers. They can tell the agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how to create or open a design project&lt;/li&gt;
&lt;li&gt;how to handle space planning&lt;/li&gt;
&lt;li&gt;how to import a floor plan&lt;/li&gt;
&lt;li&gt;how to search and place components&lt;/li&gt;
&lt;li&gt;how to apply design rules&lt;/li&gt;
&lt;li&gt;how to record visual feedback&lt;/li&gt;
&lt;li&gt;how to turn feedback into structured repair&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These skills should not mix in release workflow, test workflow, or maintainer-only development rules. At runtime, designers need design task capability, not product engineering context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 3: The MCP Server Defines the Tool Boundary
&lt;/h2&gt;

&lt;p&gt;If Codex is the entry point and runtime skills provide task context, the MCP server is the stable tool boundary.&lt;/p&gt;

&lt;p&gt;It should handle things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reading project state&lt;/li&gt;
&lt;li&gt;updating the structured model&lt;/li&gt;
&lt;li&gt;running validation&lt;/li&gt;
&lt;li&gt;generating execution plans&lt;/li&gt;
&lt;li&gt;exposing clear tool interfaces&lt;/li&gt;
&lt;li&gt;turning agent requests into controlled product operations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This layer matters because it turns model-session intent into auditable tool calls.&lt;/p&gt;

&lt;p&gt;Without it, an agent may directly generate scripts, edit files, or operate software. That may feel flexible in the short term, but it is hard to maintain.&lt;/p&gt;

&lt;p&gt;With it, Codex can change, Claude can change, and future agent CLIs can change, while the project protocol and execution model remain stable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 4: The Structured Model Holds Project Truth
&lt;/h2&gt;

&lt;p&gt;The core of SketchUp Agent Harness is not a chat entry point. It is the structured design model.&lt;/p&gt;

&lt;p&gt;In this project, &lt;code&gt;design_model.json&lt;/code&gt; holds the working truth of the design project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;spaces&lt;/li&gt;
&lt;li&gt;dimensions&lt;/li&gt;
&lt;li&gt;components&lt;/li&gt;
&lt;li&gt;rules&lt;/li&gt;
&lt;li&gt;assumptions&lt;/li&gt;
&lt;li&gt;source evidence&lt;/li&gt;
&lt;li&gt;execution plans&lt;/li&gt;
&lt;li&gt;repair clues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This layer determines whether the system is reliable.&lt;/p&gt;

&lt;p&gt;Without a structured model, Codex may generate a SketchUp scene that looks correct, but it will be difficult to continue reliably next time.&lt;/p&gt;

&lt;p&gt;With a structured model, the system can support:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;diff&lt;/li&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;replay&lt;/li&gt;
&lt;li&gt;repair&lt;/li&gt;
&lt;li&gt;version comparison&lt;/li&gt;
&lt;li&gt;source-backed correction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The SketchUp scene is the execution result. &lt;code&gt;design_model.json&lt;/code&gt; is the project state that the agent can keep understanding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 5: The Ruby Bridge Executes Into SketchUp
&lt;/h2&gt;

&lt;p&gt;Design still needs to enter SketchUp.&lt;/p&gt;

&lt;p&gt;The Ruby bridge's role is to send structured operations into SketchUp, rather than forcing the agent to carry all software details inside the conversation.&lt;/p&gt;

&lt;p&gt;This layer should be stable, diagnosable, and allowed to fail clearly.&lt;/p&gt;

&lt;p&gt;A good bridge does more than create objects. It should report when SketchUp is not in the right state, when the bridge is missing, when execution is blocked by software state, or when the returned structure is not what the upper layers expected.&lt;/p&gt;

&lt;p&gt;Structured errors matter. They keep the agent from guessing and prevent it from mistaking a software-state problem for a design problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 6: Visual Review Returns to Structured Repair
&lt;/h2&gt;

&lt;p&gt;After execution in SketchUp, review is still necessary.&lt;/p&gt;

&lt;p&gt;Screenshots, top views, and renders can reveal many problems: wall misalignment, reversed orientation, missing openings, incorrect component scale, or material and lighting mismatches.&lt;/p&gt;

&lt;p&gt;But visual review should not stop at "this image looks wrong."&lt;/p&gt;

&lt;p&gt;If a designer accepts a visual correction, the system should turn it into structured repair:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;update the model diff&lt;/li&gt;
&lt;li&gt;correct source evidence&lt;/li&gt;
&lt;li&gt;add validation rules&lt;/li&gt;
&lt;li&gt;record component or material changes&lt;/li&gt;
&lt;li&gt;save project-local memory&lt;/li&gt;
&lt;li&gt;execute or replay again&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the loop.&lt;/p&gt;

&lt;p&gt;Codex should not only generate the first version. It should help find problems, explain them, call tools, and repair them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Full Chain Looks Like
&lt;/h2&gt;

&lt;p&gt;At an abstract level, one natural-language modeling request can be decomposed 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;1. The user expresses design intent.
2. Codex uses runtime skills to classify the task.
3. The MCP server reads or creates project state.
4. The structured model records spaces, rules, components, and assumptions.
5. Validators check dimensions, clearances, or structural issues.
6. The execution plan becomes SketchUp bridge operations.
7. The Ruby bridge executes inside SketchUp.
8. A screenshot or view becomes a review artifact.
9. Designer feedback is written back into the structured model.
10. The system validates, repairs, or replays.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is more complex than "type one sentence and generate a model."&lt;/p&gt;

&lt;p&gt;But it solves the reliability problem: the project can continue, mistakes can be located, designer feedback can be traced, and the model can be replayed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Is Not Codex-Specific
&lt;/h2&gt;

&lt;p&gt;Codex is not the only core of this architecture.&lt;/p&gt;

&lt;p&gt;Claude, Codex, and future agent CLIs can all be entry points. The parts that should remain stable are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;runtime skills&lt;/li&gt;
&lt;li&gt;MCP tool layer&lt;/li&gt;
&lt;li&gt;design model schema&lt;/li&gt;
&lt;li&gt;SketchUp bridge&lt;/li&gt;
&lt;li&gt;protocol documents&lt;/li&gt;
&lt;li&gt;validation loop&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This means the agent entry point can change without rewriting project state and execution boundaries.&lt;/p&gt;

&lt;p&gt;It also avoids hard-coding the habits of one model product into the core system. Claude-specific and Codex-specific logic should stay in adapters as much as possible, not inside the MCP server or the structured model.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Should Not Be Overclaimed Yet
&lt;/h2&gt;

&lt;p&gt;The boundary matters.&lt;/p&gt;

&lt;p&gt;SketchUp Agent Harness is still an early-stage open-source project. It should not be packaged as a mature commercial design platform.&lt;/p&gt;

&lt;p&gt;What is ready to discuss is the architecture direction and the product boundary that already exists: natural-language entry, MCP server, Ruby bridge, structured model, runtime skills, protocol, and validation loop.&lt;/p&gt;

&lt;p&gt;To turn this into a true tutorial, we still need a verified public-safe demo path: public-safe input, a full run from natural-language goal to SketchUp execution, review, and repair.&lt;/p&gt;

&lt;p&gt;Until then, this article explains the architecture. It does not promise that readers can reproduce a full demo by following steps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Codex-driven SketchUp modeling is not about letting Codex directly control software.&lt;/p&gt;

&lt;p&gt;The key is the middle layer.&lt;/p&gt;

&lt;p&gt;Natural language is only the entry point. The SketchUp scene is only the execution result. What makes the system sustainable is the combination of runtime skills, MCP server, structured design model, Ruby bridge, and visual review loop.&lt;/p&gt;

&lt;p&gt;Without these layers, AI modeling easily becomes one-off output.&lt;/p&gt;

&lt;p&gt;With these layers, an agent can move from "help me draw something" toward "help me maintain a design project."&lt;/p&gt;




&lt;p&gt;Originally published on my personal site:&lt;br&gt;
&lt;a href="https://marlinbian-site.pages.dev/writing/codex-driven-sketchup-modeling/" rel="noopener noreferrer"&gt;https://marlinbian-site.pages.dev/writing/codex-driven-sketchup-modeling/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More links: &lt;a href="https://github.com/marlinBian" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://www.youtube.com/channel/UCDohkzMJ37unYpA78MOl2og" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; · &lt;a href="https://www.linkedin.com/in/xu-bian-0b6404207/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; · &lt;a href="https://bsky.app/profile/marlin-bian.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; · &lt;a href="https://mastodon.social/@marlin_bian" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; · &lt;a href="https://discord.gg/jy2N8b3kZR" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>codex</category>
      <category>sketchup</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Designers Should Think, Not Draft</title>
      <dc:creator>Xu Bian</dc:creator>
      <pubDate>Wed, 06 May 2026 00:22:01 +0000</pubDate>
      <link>https://forem.com/xu_bian_f1525524ffcb08e35/designers-should-think-not-draft-2pk2</link>
      <guid>https://forem.com/xu_bian_f1525524ffcb08e35/designers-should-think-not-draft-2pk2</guid>
      <description>&lt;p&gt;When AI enters design tools, the most common misunderstanding is that designers can finally "draw with one sentence."&lt;/p&gt;

&lt;p&gt;That is attractive. Fewer manual steps, fewer menu clicks, and less repeated operation are real improvements.&lt;/p&gt;

&lt;p&gt;But if an AI design tool only moves designers from manually operating software to verbally operating software, it is not enough. The designer has only moved from being a mouse-and-shortcut operator to being a prompt-and-chat operator.&lt;/p&gt;

&lt;p&gt;The more valuable direction is not to make designers faster drafting operators. It is to help designers spend more of their energy on ideas, judgment, constraints, and tradeoffs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Drafting Is Not Low-Value, But It Is Not All of Design
&lt;/h2&gt;

&lt;p&gt;To be clear: drafting is not low-value work.&lt;/p&gt;

&lt;p&gt;Drawings, models, sketches, and renders are design language. Without expression, design judgment cannot be communicated or checked.&lt;/p&gt;

&lt;p&gt;The problem is that real design work often spends too much time on repeated execution rather than judgment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;placing the same type of component in the right position&lt;/li&gt;
&lt;li&gt;adjusting dimensions and clearances according to rules&lt;/li&gt;
&lt;li&gt;filling in walls, openings, and furniture from existing boundaries&lt;/li&gt;
&lt;li&gt;moving back and forth between several versions&lt;/li&gt;
&lt;li&gt;turning verbal feedback into model changes&lt;/li&gt;
&lt;li&gt;repeatedly checking whether drawings, models, and screenshots still match&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These tasks require patience and precision, but they do not all need to be executed line by line by the designer.&lt;/p&gt;

&lt;p&gt;The irreplaceable part of design is deciding what is worth doing, why it should be done that way, which constraints cannot be broken, where compromise is acceptable, and whether the final expression still matches the intent.&lt;/p&gt;

&lt;p&gt;AI design tools should serve that judgment instead of producing more output that the designer has to inspect and repair.&lt;/p&gt;

&lt;h2&gt;
  
  
  "One-Sentence Design" Can Hide the Real Problem
&lt;/h2&gt;

&lt;p&gt;If a tool's main promise is "type one sentence and generate a space," it can hide complexity very quickly.&lt;/p&gt;

&lt;p&gt;A generated bathroom, living room, or exhibition booth may look plausible. That does not mean the design workflow is working.&lt;/p&gt;

&lt;p&gt;The designer still needs to know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;whether the dimensions are credible&lt;/li&gt;
&lt;li&gt;where the walls and openings came from&lt;/li&gt;
&lt;li&gt;whether components have semantics and dimensions&lt;/li&gt;
&lt;li&gt;whether clearances have been checked&lt;/li&gt;
&lt;li&gt;whether visual feedback can return to the model&lt;/li&gt;
&lt;li&gt;whether the AI can still understand the current state next time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If those questions have no answer, AI has only compressed execution into a result. It makes the first generation faster, but it does not make ongoing design more stable.&lt;/p&gt;

&lt;p&gt;That is why AI design tools should not optimize only for prompt-to-image or prompt-to-scene. They need to organize design work as a continuing workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a Better Workflow Looks Like
&lt;/h2&gt;

&lt;p&gt;In my view of SketchUp Agent Harness, an AI tool for designers should at least support this chain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;design intent
-&amp;gt; project directory
-&amp;gt; structured working model
-&amp;gt; design rules
-&amp;gt; components and source evidence
-&amp;gt; SketchUp execution
-&amp;gt; visual review
-&amp;gt; structured repair
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key point is that the designer is not dealing with a black-box output. The designer is maintaining a project.&lt;/p&gt;

&lt;p&gt;A designer can express a goal in natural language:&lt;/p&gt;

&lt;p&gt;"Create a 2 m by 1.8 m bathroom with a toilet, vanity, door, mirror, basic lighting, and a clearance check."&lt;/p&gt;

&lt;p&gt;But the agent should not only turn that sentence into a picture. It should turn the request into project state: space dimensions, components, rules, assumptions, clearance checks, an execution plan, and a repairable model.&lt;/p&gt;

&lt;p&gt;Next time, the designer should not need to start over. They should continue from an existing project state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Designers Should Control Judgment, Not Every Execution Detail
&lt;/h2&gt;

&lt;p&gt;AI can take on more low-level execution, but it should not take away design judgment.&lt;/p&gt;

&lt;p&gt;A better division of labor is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI organizes project state&lt;/li&gt;
&lt;li&gt;AI executes repeated modeling actions&lt;/li&gt;
&lt;li&gt;AI turns source evidence into a first working model&lt;/li&gt;
&lt;li&gt;AI checks structural problems&lt;/li&gt;
&lt;li&gt;AI turns visual feedback into repairable actions&lt;/li&gt;
&lt;li&gt;designers decide direction, constraints, tradeoffs, and acceptance criteria&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This does not make designers less involved. It moves their involvement to the level where it matters more.&lt;/p&gt;

&lt;p&gt;If designers still have to confirm every line, every object, and every small position, AI has only added a new interface.&lt;/p&gt;

&lt;p&gt;If a designer can say "this opening should not be sealed," "this wall is too thick," or "this area is not a room, it is an exterior void," and the agent can write that feedback back into the structured model, then AI is starting to support real design work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Runtime Skills Should Serve Design Tasks
&lt;/h2&gt;

&lt;p&gt;This is why I treat runtime skills as an important part of design tools.&lt;/p&gt;

&lt;p&gt;A designer-facing skill should not be a maintainer's development note. It should not expose internal product implementation details.&lt;/p&gt;

&lt;p&gt;It should serve real design tasks, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;space planning&lt;/li&gt;
&lt;li&gt;floor plan import&lt;/li&gt;
&lt;li&gt;component search&lt;/li&gt;
&lt;li&gt;design rules&lt;/li&gt;
&lt;li&gt;semantic placement&lt;/li&gt;
&lt;li&gt;visual feedback&lt;/li&gt;
&lt;li&gt;structured repair&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The role of these skills is not to give the AI a few prompting tricks. Their role is to help the agent know how to act in a specific design context, how to respect project state, and how to avoid turning a local project decision into a global product rule.&lt;/p&gt;

&lt;p&gt;Runtime skills are part of the design workflow, not marketing packaging.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local Project Memory Must Not Pollute Product Rules
&lt;/h2&gt;

&lt;p&gt;AI design tools also face a practical problem: every design project has local facts.&lt;/p&gt;

&lt;p&gt;The orientation of one floor plan, a client's preference, a scale correction for one import, or a room naming convention may belong only to the current project.&lt;/p&gt;

&lt;p&gt;If the agent writes those local facts into product defaults, the product will quickly become unstable.&lt;/p&gt;

&lt;p&gt;A better approach is layered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;product runtime skills hold general design task capability&lt;/li&gt;
&lt;li&gt;project or session memory serves only the current project&lt;/li&gt;
&lt;li&gt;maintainer development skills serve product development and release work&lt;/li&gt;
&lt;li&gt;only generalized and validated patterns move into central knowledge or product rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This layering is not engineering neatness for its own sake. It protects the designer's work boundary and the privacy of client materials.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Should Reduce Noise, Not Create More Drafts
&lt;/h2&gt;

&lt;p&gt;A weak AI design tool generates endless options and leaves selection, repair, explanation, and finishing work to the designer.&lt;/p&gt;

&lt;p&gt;A better AI design tool should reduce noise.&lt;/p&gt;

&lt;p&gt;It should help designers reach a state they can judge, not produce a pile of results that cannot continue.&lt;/p&gt;

&lt;p&gt;For designers, the valuable outcome is not "AI gave me many images." The valuable outcome is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I can understand why the current proposal looks this way&lt;/li&gt;
&lt;li&gt;I can point out a problem&lt;/li&gt;
&lt;li&gt;AI can turn the problem into a structured change&lt;/li&gt;
&lt;li&gt;I can keep versions&lt;/li&gt;
&lt;li&gt;I can keep moving instead of restarting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is workflow-level efficiency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I do not think AI makes designers less important.&lt;/p&gt;

&lt;p&gt;If the tool is designed well, AI can release designers from a large amount of low-level execution and help them focus on intent, judgment, constraints, review, and tradeoffs.&lt;/p&gt;

&lt;p&gt;But the tool itself has to respect design workflow.&lt;/p&gt;

&lt;p&gt;It cannot only pursue "type one sentence and generate a result." It has to maintain project state, preserve source evidence, execute into professional software, accept visual feedback, and write that feedback back into structured truth.&lt;/p&gt;

&lt;p&gt;Designers should not become drafting operators in the AI era.&lt;/p&gt;

&lt;p&gt;Designers should become directors of the design workflow.&lt;/p&gt;




&lt;p&gt;Originally published on my personal site:&lt;br&gt;
&lt;a href="https://marlinbian-site.pages.dev/writing/designers-should-think-not-draft/" rel="noopener noreferrer"&gt;https://marlinbian-site.pages.dev/writing/designers-should-think-not-draft/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More links: &lt;a href="https://github.com/marlinBian" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://www.youtube.com/channel/UCDohkzMJ37unYpA78MOl2og" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; · &lt;a href="https://www.linkedin.com/in/xu-bian-0b6404207/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; · &lt;a href="https://bsky.app/profile/marlin-bian.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; · &lt;a href="https://mastodon.social/@marlin_bian" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; · &lt;a href="https://discord.gg/jy2N8b3kZR" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>design</category>
      <category>productivity</category>
      <category>workflow</category>
    </item>
    <item>
      <title>Why AI Design Tools Need a Source of Truth</title>
      <dc:creator>Xu Bian</dc:creator>
      <pubDate>Wed, 06 May 2026 00:21:04 +0000</pubDate>
      <link>https://forem.com/xu_bian_f1525524ffcb08e35/why-ai-design-tools-need-a-source-of-truth-4ejj</link>
      <guid>https://forem.com/xu_bian_f1525524ffcb08e35/why-ai-design-tools-need-a-source-of-truth-4ejj</guid>
      <description>&lt;p&gt;The most impressive moment in many AI design tools is simple: you type a sentence, and the tool gives you an image, a model, or a space that looks almost finished.&lt;/p&gt;

&lt;p&gt;But once you move from a demo into a real design workflow, the hard questions appear quickly.&lt;/p&gt;

&lt;p&gt;Can this result keep being edited?&lt;/p&gt;

&lt;p&gt;Where did the walls, doors, objects, and dimensions come from?&lt;/p&gt;

&lt;p&gt;When a designer points out a problem, did the AI repair the structure, or did it only patch the visible output?&lt;/p&gt;

&lt;p&gt;When the project is opened again, how does the agent know what was design intent, what was a temporary experiment, what came from a source drawing, and what was only an assumption?&lt;/p&gt;

&lt;p&gt;This is why I think AI design tools should not optimize only for "it looks generated." They need an editable, verifiable, repairable, replayable source of truth.&lt;/p&gt;

&lt;p&gt;By "source of truth," I do not mean that AI should decide what good design is. I mean a structured working fact layer where intent, evidence, spaces, dimensions, components, rules, assumptions, and execution results have a place to live, can be checked, and can be repaired when they are wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Output Alone Is Not Enough
&lt;/h2&gt;

&lt;p&gt;If AI only generates an image, the result is easy to understand visually, but it is a weak long-term working base.&lt;/p&gt;

&lt;p&gt;An image can express style, mood, and direction. It is much less reliable at carrying:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;wall thickness&lt;/li&gt;
&lt;li&gt;door and window openings&lt;/li&gt;
&lt;li&gt;space boundaries&lt;/li&gt;
&lt;li&gt;component dimensions&lt;/li&gt;
&lt;li&gt;clearance rules&lt;/li&gt;
&lt;li&gt;drawing evidence&lt;/li&gt;
&lt;li&gt;design assumptions&lt;/li&gt;
&lt;li&gt;change history&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The same problem appears when AI only manipulates a SketchUp scene. The SketchUp scene matters, but it does not automatically tell the agent why an object is there, which dimension came from a designer instruction, which one came from an imported drawing, and which change was only a temporary exploration.&lt;/p&gt;

&lt;p&gt;Chat history is not enough either. Conversation is good for expressing intent and discussing judgment, but it is a poor long-term structured state for a design project.&lt;/p&gt;

&lt;p&gt;A reliable AI design tool therefore cannot have only a final image or a final scene. It needs to know what the current project actually is.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Source of Truth Makes the Project Continue-able
&lt;/h2&gt;

&lt;p&gt;In SketchUp Agent Harness, &lt;code&gt;design_model.json&lt;/code&gt; is the structured working truth for a design project.&lt;/p&gt;

&lt;p&gt;It is not an aesthetic judgment. It is not a legal compliance report or a construction document. It is closer to a shared project state between the designer and the agent.&lt;/p&gt;

&lt;p&gt;It should record things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how spaces are organized&lt;/li&gt;
&lt;li&gt;what the dimensions and units are&lt;/li&gt;
&lt;li&gt;which components are already in the project&lt;/li&gt;
&lt;li&gt;what semantics, anchors, and clearances those components have&lt;/li&gt;
&lt;li&gt;which design rules are currently active&lt;/li&gt;
&lt;li&gt;which conclusions came from an imported drawing, image, or scan&lt;/li&gt;
&lt;li&gt;which parts are assumptions&lt;/li&gt;
&lt;li&gt;which visual feedback needs to become a structured change&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With that layer, an agent can do important work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;compare versions&lt;/li&gt;
&lt;li&gt;check whether the structure is reasonable&lt;/li&gt;
&lt;li&gt;repair a model using source evidence&lt;/li&gt;
&lt;li&gt;replay the structure into SketchUp&lt;/li&gt;
&lt;li&gt;turn visual feedback into precise model changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the value of a source of truth. It does not make the output more spectacular. It makes the project understandable, checkable, and repairable.&lt;/p&gt;

&lt;h2&gt;
  
  
  The SketchUp Scene Is Not the Source of Truth
&lt;/h2&gt;

&lt;p&gt;This can be misunderstood.&lt;/p&gt;

&lt;p&gt;The SketchUp scene is important. Designers need to see, inspect, adjust, and often deliver work through SketchUp.&lt;/p&gt;

&lt;p&gt;But for an agent, the SketchUp scene is better understood as a live execution result. It is the result of execution, not the whole project truth.&lt;/p&gt;

&lt;p&gt;There are three reasons.&lt;/p&gt;

&lt;p&gt;First, a software scene contains a lot of implicit state. It is hard for an agent to know the evidence, assumption, or design intent behind every object.&lt;/p&gt;

&lt;p&gt;Second, a scene can mix several rounds of experiments. Without structured records, it is hard to tell what should remain and what was only leftover exploration.&lt;/p&gt;

&lt;p&gt;Third, repair can easily become patching the current picture. That may improve the short-term appearance while making the long-term project harder to trace.&lt;/p&gt;

&lt;p&gt;A stronger loop 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;design intent
-&amp;gt; structured truth
-&amp;gt; SketchUp execution
-&amp;gt; visual review
-&amp;gt; structured repair
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In other words, the SketchUp scene and screenshots should feed back into structured truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Visual Feedback Must Return to Structure
&lt;/h2&gt;

&lt;p&gt;Visual review matters.&lt;/p&gt;

&lt;p&gt;A top view can expose wall misalignment, missing openings, reversed orientation, or an exterior void that was mistaken for a room. A render can expose material, lighting, scale, or style problems.&lt;/p&gt;

&lt;p&gt;But visual feedback should not stop at "this image looks wrong."&lt;/p&gt;

&lt;p&gt;If a designer says:&lt;/p&gt;

&lt;p&gt;"This wall is too thick."&lt;/p&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;p&gt;"This opening should not be sealed."&lt;/p&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;p&gt;"This area is not a room. It is an exterior void."&lt;/p&gt;

&lt;p&gt;A good agent should not only tweak the current view. It should turn that feedback into structured actions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;update wall thickness&lt;/li&gt;
&lt;li&gt;correct space boundaries&lt;/li&gt;
&lt;li&gt;update opening evidence&lt;/li&gt;
&lt;li&gt;add a validation failure&lt;/li&gt;
&lt;li&gt;record uncertainty in the source interpretation&lt;/li&gt;
&lt;li&gt;create a replayable model diff&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The next time the project is opened, the agent should not merely remember that the user disliked an image. It should know how the project truth changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Floor Plan Import Especially Needs a Source of Truth
&lt;/h2&gt;

&lt;p&gt;Floor plan import is a useful example.&lt;/p&gt;

&lt;p&gt;If a user gives AI a DWG, DXF, PDF, image, scan, or photo, the weakest workflow is to generate a model that looks plausible and then treat it as fact.&lt;/p&gt;

&lt;p&gt;A more reliable workflow should:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Register the source.&lt;/li&gt;
&lt;li&gt;Preserve source evidence.&lt;/li&gt;
&lt;li&gt;Interpret scale, orientation, boundaries, rooms, walls, and openings.&lt;/li&gt;
&lt;li&gt;Generate a first editable working model.&lt;/li&gt;
&lt;li&gt;Execute or preview it in SketchUp.&lt;/li&gt;
&lt;li&gt;Use a top view, screenshot, or validator to find problems.&lt;/li&gt;
&lt;li&gt;Write repairs back into structured truth.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The first import result should not be treated as a verified survey. It is working truth.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;p&gt;AI does not need to be perfect on the first pass. It needs to admit what came from evidence, what was inferred, what is uncertain, and let the designer repair errors in natural language.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Means for Designers
&lt;/h2&gt;

&lt;p&gt;If an AI design tool has a structured source of truth, the designer's role becomes clearer.&lt;/p&gt;

&lt;p&gt;Designers do not need to manually execute every low-level modeling step, and they should not need to restate the same project context in chat again and again.&lt;/p&gt;

&lt;p&gt;They should spend more attention on higher-value work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;judging whether a space makes sense&lt;/li&gt;
&lt;li&gt;confirming design intent&lt;/li&gt;
&lt;li&gt;choosing style and material direction&lt;/li&gt;
&lt;li&gt;managing constraints and tradeoffs&lt;/li&gt;
&lt;li&gt;reviewing visual output&lt;/li&gt;
&lt;li&gt;deciding which feedback should enter project truth&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI should not turn designers into drafting operators who happen to use natural language. A better direction is to let designers become directors and reviewers of the workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Means for AI Products
&lt;/h2&gt;

&lt;p&gt;For AI products, a source of truth changes the architecture.&lt;/p&gt;

&lt;p&gt;If a product only optimizes for output, it can focus on prompts, image generation, and one-off results.&lt;/p&gt;

&lt;p&gt;If it wants to enter real workflows, it has to handle more structure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;project directories&lt;/li&gt;
&lt;li&gt;structured models&lt;/li&gt;
&lt;li&gt;source evidence&lt;/li&gt;
&lt;li&gt;runtime skills&lt;/li&gt;
&lt;li&gt;design rules&lt;/li&gt;
&lt;li&gt;component metadata&lt;/li&gt;
&lt;li&gt;software bridges&lt;/li&gt;
&lt;li&gt;validators&lt;/li&gt;
&lt;li&gt;versioning and replay&lt;/li&gt;
&lt;li&gt;visual review loops&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SketchUp Agent Harness is interesting not because it is already a mature platform, but because it exposes this problem clearly.&lt;/p&gt;

&lt;p&gt;Claude and Codex are only entry points. The more important layer is the combination of an MCP server, a SketchUp Ruby bridge, runtime skills, protocol documents, and &lt;code&gt;design_model.json&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That middle layer decides whether the agent is generating a result or maintaining a project.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Source of Truth Is Not a Universal Answer
&lt;/h2&gt;

&lt;p&gt;The boundary also needs to be clear.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;design_model.json&lt;/code&gt; is not aesthetic judgment.&lt;/p&gt;

&lt;p&gt;It cannot decide whether a space is beautiful.&lt;/p&gt;

&lt;p&gt;It is not a construction compliance report and should not be treated as legal, code, or engineering review.&lt;/p&gt;

&lt;p&gt;It is a structured working fact layer. It carries current project state, sources, assumptions, rules, and repairable structure.&lt;/p&gt;

&lt;p&gt;The real design judgment still belongs to the designer.&lt;/p&gt;

&lt;p&gt;This is why "source of truth" should not mean "the only correct answer." In this context, it means "the single traceable working state."&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;When I evaluate whether an AI design tool has really entered a workflow, I look for answers to a few questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where is the current model's structured state?&lt;/li&gt;
&lt;li&gt;What evidence supports each important conclusion?&lt;/li&gt;
&lt;li&gt;Do the visual output and structured model agree?&lt;/li&gt;
&lt;li&gt;What concrete change does designer feedback become?&lt;/li&gt;
&lt;li&gt;Can the project be checked, repaired, and replayed?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If those questions have no answer, the AI is still mostly an output engine.&lt;/p&gt;

&lt;p&gt;If those questions have answers, the AI is starting to become a real design workflow tool.&lt;/p&gt;

&lt;p&gt;That is why AI design tools need a source of truth.&lt;/p&gt;




&lt;p&gt;Originally published on my personal site:&lt;br&gt;
&lt;a href="https://marlinbian-site.pages.dev/writing/why-ai-design-tools-need-a-source-of-truth/" rel="noopener noreferrer"&gt;https://marlinbian-site.pages.dev/writing/why-ai-design-tools-need-a-source-of-truth/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More links: &lt;a href="https://github.com/marlinBian" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://www.youtube.com/channel/UCDohkzMJ37unYpA78MOl2og" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; · &lt;a href="https://www.linkedin.com/in/xu-bian-0b6404207/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; · &lt;a href="https://bsky.app/profile/marlin-bian.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; · &lt;a href="https://mastodon.social/@marlin_bian" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; · &lt;a href="https://discord.gg/jy2N8b3kZR" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>design</category>
      <category>sketchup</category>
      <category>architecture</category>
    </item>
    <item>
      <title>SketchUp Agent Harness</title>
      <dc:creator>Xu Bian</dc:creator>
      <pubDate>Wed, 06 May 2026 00:20:54 +0000</pubDate>
      <link>https://forem.com/xu_bian_f1525524ffcb08e35/sketchup-agent-harness-d8h</link>
      <guid>https://forem.com/xu_bian_f1525524ffcb08e35/sketchup-agent-harness-d8h</guid>
      <description>&lt;p&gt;SketchUp Agent Harness is an early-stage open-source project for connecting design agents such as Claude Code and Codex CLI to SketchUp. The goal is to let designers express intent in natural language and turn that intent into verifiable, executable, repairable project state.&lt;/p&gt;

&lt;p&gt;Project repository:&lt;/p&gt;

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

&lt;p&gt;It is not a plugin for only one AI tool. Claude and Codex are entry points. The more stable core is the MCP server, SketchUp Ruby bridge, structured design model, component metadata, runtime skills, and protocol documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Problem This Project Tries to Solve
&lt;/h2&gt;

&lt;p&gt;Many AI design tools stop at "generate an image from a prompt" or "operate a few software steps for me." That can be useful for inspiration, but it is not enough for real design work.&lt;/p&gt;

&lt;p&gt;Designers need a workflow that can keep going:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;design intent can be recorded&lt;/li&gt;
&lt;li&gt;floor plans, images, scans, and other source material can be preserved&lt;/li&gt;
&lt;li&gt;model state can be checked and repaired&lt;/li&gt;
&lt;li&gt;software execution can be traced back to structured facts&lt;/li&gt;
&lt;li&gt;visual feedback can become explicit changes instead of being buried in chat history&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The core judgment behind SketchUp Agent Harness is that AI design tools need a structured source of truth. In this project, the key file is &lt;code&gt;design_model.json&lt;/code&gt;. SketchUp scenes, screenshots, and renders matter, but they are better understood as execution results or review artifacts. They should not be the only long-term truth of the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Can Do Today
&lt;/h2&gt;

&lt;p&gt;Based on the current project documentation, the 1.0 version is still early, but it already has several foundational capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;initialize an isolated design project directory&lt;/li&gt;
&lt;li&gt;install the SketchUp Ruby bridge&lt;/li&gt;
&lt;li&gt;install Claude and Codex runtime skills into the project&lt;/li&gt;
&lt;li&gt;generate simple spaces and bathroom layouts through natural language&lt;/li&gt;
&lt;li&gt;import DWG, DXF, PDF, image, scan, or photo inputs into a first editable model&lt;/li&gt;
&lt;li&gt;store structured design truth in &lt;code&gt;design_model.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;preserve source evidence, screenshots, versions, and project rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The intended workflow is not that designers clone the source repository for normal design work. A more typical path is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install the harness package.&lt;/li&gt;
&lt;li&gt;Install or update the SketchUp Ruby bridge.&lt;/li&gt;
&lt;li&gt;Create a clean design project directory.&lt;/li&gt;
&lt;li&gt;Run Claude or Codex in that design project directory.&lt;/li&gt;
&lt;li&gt;Describe the design goal in natural language.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why the Source of Truth Matters
&lt;/h2&gt;

&lt;p&gt;If AI only generates an image, designers have limited ability to keep editing, checking, replaying, or repairing it.&lt;/p&gt;

&lt;p&gt;If AI only operates a SketchUp scene directly, many design decisions become hidden inside software state. A later agent may not know what was design intent, what was a temporary action, what came from the original drawing, and what was only inferred.&lt;/p&gt;

&lt;p&gt;A structured model makes these things explicit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;spaces&lt;/li&gt;
&lt;li&gt;dimensions&lt;/li&gt;
&lt;li&gt;components&lt;/li&gt;
&lt;li&gt;rules&lt;/li&gt;
&lt;li&gt;assumptions&lt;/li&gt;
&lt;li&gt;source evidence&lt;/li&gt;
&lt;li&gt;execution plans&lt;/li&gt;
&lt;li&gt;review and repair clues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is what lets the agent support diff, validation, repair, and replay. It also lets designers focus more on intent, judgment, constraints, and tradeoffs instead of repeatedly becoming drafting operators in the AI era.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;One way to understand SketchUp Agent Harness is as a chain from natural language to SketchUp execution:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;designer intent
-&amp;gt; agent CLI
-&amp;gt; runtime skills
-&amp;gt; MCP server
-&amp;gt; structured design model
-&amp;gt; SketchUp Ruby bridge
-&amp;gt; SketchUp scene
-&amp;gt; visual review
-&amp;gt; structured repair
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is not any single agent model. The important part is the verifiable protocol layer and the structured project state in the middle.&lt;/p&gt;

&lt;p&gt;That is why the project includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MCP server&lt;/li&gt;
&lt;li&gt;SketchUp Ruby bridge&lt;/li&gt;
&lt;li&gt;runtime skills&lt;/li&gt;
&lt;li&gt;protocol specs&lt;/li&gt;
&lt;li&gt;spatial behavior specs&lt;/li&gt;
&lt;li&gt;project workspace docs&lt;/li&gt;
&lt;li&gt;import pipeline docs&lt;/li&gt;
&lt;li&gt;visual review loop docs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Current Limits
&lt;/h2&gt;

&lt;p&gt;This project should not be described as a mature commercial design platform.&lt;/p&gt;

&lt;p&gt;A more accurate description is: an early-stage open-source harness for exploring how natural-language agents can control SketchUp reliably and organize the design process into a checkable structured workflow.&lt;/p&gt;

&lt;p&gt;Floor plan import is especially important to frame correctly. The first generated model should be treated as an editable working model, not a survey-grade result. Real component libraries, more complex collision checks, more stable drawing recognition, and fuller design rules still need continued iteration.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Plan to Write Next
&lt;/h2&gt;

&lt;p&gt;This project is also the starting point for a set of essays and demos.&lt;/p&gt;

&lt;p&gt;The first thread is source of truth:&lt;/p&gt;

&lt;p&gt;Why AI design tools should not only pursue "it looks generated," and why they need editable, repairable, replayable structured truth.&lt;/p&gt;

&lt;p&gt;The second thread is the designer workflow:&lt;/p&gt;

&lt;p&gt;Designers should spend more energy on ideas, judgment, constraints, and tradeoffs instead of manually executing every low-level modeling step.&lt;/p&gt;

&lt;p&gt;The third thread is implementation:&lt;/p&gt;

&lt;p&gt;How Codex or Claude can use runtime skills, an MCP server, a SketchUp bridge, and &lt;code&gt;design_model.json&lt;/code&gt; to turn natural language into verifiable SketchUp project state.&lt;/p&gt;

&lt;p&gt;I also plan to produce demo videos based on this project, using a public-safe example to show the full path from natural-language goal to SketchUp model, review, and repair.&lt;/p&gt;




&lt;p&gt;Originally published on my personal site:&lt;br&gt;
&lt;a href="https://marlinbian-site.pages.dev/projects/sketchup-agent-harness/" rel="noopener noreferrer"&gt;https://marlinbian-site.pages.dev/projects/sketchup-agent-harness/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More links: &lt;a href="https://github.com/marlinBian" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://www.youtube.com/channel/UCDohkzMJ37unYpA78MOl2og" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; · &lt;a href="https://www.linkedin.com/in/xu-bian-0b6404207/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; · &lt;a href="https://bsky.app/profile/marlin-bian.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; · &lt;a href="https://mastodon.social/@marlin_bian" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; · &lt;a href="https://discord.gg/jy2N8b3kZR" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>design</category>
      <category>sketchup</category>
      <category>opensource</category>
    </item>
    <item>
      <title>A Personal AI Workbench for Ordinary People</title>
      <dc:creator>Xu Bian</dc:creator>
      <pubDate>Tue, 05 May 2026 00:50:54 +0000</pubDate>
      <link>https://forem.com/xu_bian_f1525524ffcb08e35/a-personal-ai-workbench-for-ordinary-people-1k3c</link>
      <guid>https://forem.com/xu_bian_f1525524ffcb08e35/a-personal-ai-workbench-for-ordinary-people-1k3c</guid>
      <description>&lt;p&gt;I finished an English series on the way I think ordinary people can start using AI for real work.&lt;/p&gt;

&lt;p&gt;The point is not to become an AI expert first.&lt;/p&gt;

&lt;p&gt;The point is to have one place where you can say what you want, give the tool access to the right folder, and check the result.&lt;/p&gt;

&lt;p&gt;Anything important still needs a human pause: publishing, deleting, paying, or authorizing.&lt;/p&gt;

&lt;p&gt;My preferred starting point is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;One project folder. One command-line window. One plain-English request. One habit of checking before confirming.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the "AI workbench" idea.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I started with the command line
&lt;/h2&gt;

&lt;p&gt;Most people hear "command line" and think it means programming.&lt;/p&gt;

&lt;p&gt;I think that is the wrong frame.&lt;/p&gt;

&lt;p&gt;For an AI tool like Codex, the command line can be the cleanest interface because it does not start with a pile of buttons.&lt;/p&gt;

&lt;p&gt;You type the goal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I want to organize the files in this folder and turn the useful material into a public article.

Please inspect the folder first.
Tell me what looks public, what looks private, and what you would do next.
Do not move or publish anything until I approve the plan.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is not a developer-only request. It is a normal human request with a goal, boundary, and confirmation rule.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the series covers
&lt;/h2&gt;

&lt;p&gt;The series is for people who can use a computer or phone, but do not want to memorize AI jargon before doing anything useful.&lt;/p&gt;

&lt;p&gt;It covers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/ai-workbench-for-everyone/" rel="noopener noreferrer"&gt;Your Personal AI Workbench&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/why-one-command-line-window-is-enough/" rel="noopener noreferrer"&gt;Why I Think One Command-Line Window Is All You Need&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/ai-tools-come-in-four-types/" rel="noopener noreferrer"&gt;AI Tools Actually Come in Four Types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/ai-interface-differences/" rel="noopener noreferrer"&gt;Web, App, Client, IDE, CLI — What Is the Difference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/why-ordinary-people-can-use-cli/" rel="noopener noreferrer"&gt;Why Ordinary People Can Use CLI Too&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/minimum-ai-glossary/" rel="noopener noreferrer"&gt;The Minimum AI Glossary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/ai-real-world-limits/" rel="noopener noreferrer"&gt;Foreign Models, Accounts, Networks, and Real-World Limits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/ten-things-ai-can-do/" rel="noopener noreferrer"&gt;Ten Things Ordinary People Can Do with AI Right Away&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/when-not-to-use-ai/" rel="noopener noreferrer"&gt;When Not to Use AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/minimum-ai-workbench/" rel="noopener noreferrer"&gt;My Minimum AI Workbench&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/ai-glossary/" rel="noopener noreferrer"&gt;AI Glossary for Ordinary People&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The practical test
&lt;/h2&gt;

&lt;p&gt;My test for an AI tool is not whether it has the most impressive demo.&lt;/p&gt;

&lt;p&gt;It is whether it can reach the work.&lt;/p&gt;

&lt;p&gt;The questions I ask are practical:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can it read the current folder?&lt;/li&gt;
&lt;li&gt;Can it edit the file I am actually working on?&lt;/li&gt;
&lt;li&gt;Can it run a check?&lt;/li&gt;
&lt;li&gt;Can it open or name the next page I need?&lt;/li&gt;
&lt;li&gt;Can it stop at the moment where I need to confirm an account, payment, deletion, authorization, or public publish?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a tool cannot reach the work, it may still be useful for conversation. But it is not a workbench yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  The safety boundary
&lt;/h2&gt;

&lt;p&gt;This series is not an argument for handing judgment to AI.&lt;/p&gt;

&lt;p&gt;The more useful an AI tool becomes, the more important the boundary becomes.&lt;/p&gt;

&lt;p&gt;I do not want AI to decide medical, legal, investment, payment, publishing, or deletion questions for me.&lt;/p&gt;

&lt;p&gt;What I want is preparation, inspection, comparison, drafting, organization, and explanation — then a stop where a human decision is needed.&lt;/p&gt;

&lt;p&gt;That habit matters more than any specific product name.&lt;/p&gt;

&lt;h2&gt;
  
  
  A first prompt
&lt;/h2&gt;

&lt;p&gt;If you already have Codex installed, start in an empty folder and try this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I want to start using AI to help me get things done, but I am not a programmer
and I do not want to learn a bunch of jargon first.

Please tell me: in this folder, what can you help me with?
Can I ask you to read files, change content, make a plan, explain something, or check for errors?
Give me one small first task I can do here — steps small enough that you can guide me through each one.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The question is not "how much AI theory do I know?"&lt;/p&gt;

&lt;p&gt;The better question is: can I describe a real task clearly enough that the tool can help me move one step?&lt;/p&gt;

&lt;p&gt;Full series:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/ai-workbench-for-everyone/" rel="noopener noreferrer"&gt;https://marlinbian-site.pages.dev/en/tutorials/ai-workbench-for-everyone/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Originally published on my personal site:&lt;br&gt;
&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/ai-workbench-for-everyone/" rel="noopener noreferrer"&gt;https://marlinbian-site.pages.dev/en/tutorials/ai-workbench-for-everyone/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More links: &lt;a href="https://github.com/marlinBian" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://www.youtube.com/channel/UCDohkzMJ37unYpA78MOl2og" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; · &lt;a href="https://www.linkedin.com/in/xu-bian-0b6404207/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; · &lt;a href="https://bsky.app/profile/marlin-bian.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; · &lt;a href="https://mastodon.social/@marlin_bian" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; · &lt;a href="https://discord.gg/jy2N8b3kZR" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Your first personal website with Codex, without fearing the tools</title>
      <dc:creator>Xu Bian</dc:creator>
      <pubDate>Mon, 04 May 2026 05:14:34 +0000</pubDate>
      <link>https://forem.com/xu_bian_f1525524ffcb08e35/your-first-personal-website-with-codex-without-fearing-the-tools-2d52</link>
      <guid>https://forem.com/xu_bian_f1525524ffcb08e35/your-first-personal-website-with-codex-without-fearing-the-tools-2d52</guid>
      <description>&lt;p&gt;I finished a seven-part beginner series on building a personal website with Codex.&lt;/p&gt;

&lt;p&gt;The reader I had in mind is not a programmer.&lt;/p&gt;

&lt;p&gt;They can use a computer, copy text, open a browser, sign in with Google when needed, and read a page to see whether it says the right thing.&lt;/p&gt;

&lt;p&gt;That is enough for a first site.&lt;/p&gt;

&lt;p&gt;The mistake I wanted to avoid was making people learn the whole map before they can move.&lt;/p&gt;

&lt;p&gt;A normal person should not need to understand GitHub, Cloudflare, DNS, build output, or deployment pipelines before the first useful action.&lt;/p&gt;

&lt;p&gt;My rule for the series is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The reader should be able to act before they fully understand the system.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What the series covers
&lt;/h2&gt;

&lt;p&gt;The route starts with one clean folder, not a platform dashboard.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/codex-site-step-1-start-codex/" rel="noopener noreferrer"&gt;Start Codex in an empty folder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/codex-site-step-2-first-preview/" rel="noopener noreferrer"&gt;Open the first local preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/codex-site-step-3-free-url/" rel="noopener noreferrer"&gt;Publish a free public URL first&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/codex-site-step-4-custom-domain/" rel="noopener noreferrer"&gt;Add a custom domain only when it helps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/codex-site-step-5-update-site/" rel="noopener noreferrer"&gt;Keep editing the site after it is online&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/codex-site-step-6-privacy-check/" rel="noopener noreferrer"&gt;Check privacy and common mistakes before publishing&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There is also a series entry point:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/first-personal-site-with-codex/" rel="noopener noreferrer"&gt;Your first personal website with Codex, without fearing the tools&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The first prompt matters
&lt;/h2&gt;

&lt;p&gt;The series does not begin with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Build me a personal website.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is too vague. Codex has to guess the audience, scope, privacy boundary, and first structure.&lt;/p&gt;

&lt;p&gt;The better first move is closer to this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I want to build my first personal website, but I am not a programmer.

Please break the process into small steps I can follow.
Do not make me understand GitHub, Cloudflare, DNS, or build commands first.

For now, inspect the current folder and tell me whether it is safe to start here.
If it is safe, give me the smallest first plan.
If it is not safe, tell me which empty folder I should use instead.

Version one only needs:
- home page
- about page
- work or writing list
- contact page

Please keep warning me about anything that should not be public.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now Codex has a real job: guide the route, keep the scope small, and protect the boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment should not start with manual upload
&lt;/h2&gt;

&lt;p&gt;One part I rewrote after trying the flow myself: the publishing step should not ask a beginner to upload &lt;code&gt;dist&lt;/code&gt; or &lt;code&gt;build&lt;/code&gt; by hand.&lt;/p&gt;

&lt;p&gt;The path I prefer is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ask Codex to inspect the project;&lt;/li&gt;
&lt;li&gt;let Codex prepare Git and the deployment path;&lt;/li&gt;
&lt;li&gt;let Codex open or name the page where the reader must sign in, choose an account, authorize, or confirm;&lt;/li&gt;
&lt;li&gt;use the free public URL first;&lt;/li&gt;
&lt;li&gt;buy a custom domain only after the free version works.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The reader should not have to know which website comes next before Codex tells them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Maintenance is the real test
&lt;/h2&gt;

&lt;p&gt;The first launch is not the end. A personal site only matters if the owner can keep changing it.&lt;/p&gt;

&lt;p&gt;That means every update should be small:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;change one sentence;&lt;/li&gt;
&lt;li&gt;add one article;&lt;/li&gt;
&lt;li&gt;replace one image;&lt;/li&gt;
&lt;li&gt;preview locally;&lt;/li&gt;
&lt;li&gt;run checks;&lt;/li&gt;
&lt;li&gt;publish through the workflow this project actually uses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If something breaks, the fix should start from the symptom, not from rebuilding the whole site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy is not optional
&lt;/h2&gt;

&lt;p&gt;A personal website is public. Search engines may index it. Someone may forward it. Years later, you may forget what was once there.&lt;/p&gt;

&lt;p&gt;So the last step is a pre-publish check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;page text;&lt;/li&gt;
&lt;li&gt;screenshots and images;&lt;/li&gt;
&lt;li&gt;filenames and links;&lt;/li&gt;
&lt;li&gt;API keys or environment files;&lt;/li&gt;
&lt;li&gt;placeholder text;&lt;/li&gt;
&lt;li&gt;broken links;&lt;/li&gt;
&lt;li&gt;phone readability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not about making the site empty. It is about keeping the public boundary clean.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I wrote it this way
&lt;/h2&gt;

&lt;p&gt;Most beginner tutorials still assume the reader already has a map in their head.&lt;/p&gt;

&lt;p&gt;This one assumes the opposite.&lt;/p&gt;

&lt;p&gt;A reader can say what they want, confirm account pages, authorize tools, and check the result.&lt;/p&gt;

&lt;p&gt;Codex should handle the mechanical parts and explain the next page only when it appears.&lt;/p&gt;

&lt;p&gt;That is a more honest beginner workflow than pretending everyone wants to become a web developer before they can have a small home on the web.&lt;/p&gt;

&lt;p&gt;Full series:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/first-personal-site-with-codex/" rel="noopener noreferrer"&gt;https://marlinbian-site.pages.dev/en/tutorials/first-personal-site-with-codex/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Originally published on my personal site:&lt;br&gt;
&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/first-personal-site-with-codex/" rel="noopener noreferrer"&gt;https://marlinbian-site.pages.dev/en/tutorials/first-personal-site-with-codex/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More links: &lt;a href="https://github.com/marlinBian" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://www.youtube.com/channel/UCDohkzMJ37unYpA78MOl2og" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; · &lt;a href="https://www.linkedin.com/in/xu-bian-0b6404207/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; · &lt;a href="https://bsky.app/profile/marlin-bian.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; · &lt;a href="https://mastodon.social/@marlin_bian" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; · &lt;a href="https://discord.gg/jy2N8b3kZR" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How much does a personal independent site really cost?</title>
      <dc:creator>Xu Bian</dc:creator>
      <pubDate>Sun, 03 May 2026 23:13:20 +0000</pubDate>
      <link>https://forem.com/xu_bian_f1525524ffcb08e35/how-much-does-a-personal-independent-site-really-cost-4pkl</link>
      <guid>https://forem.com/xu_bian_f1525524ffcb08e35/how-much-does-a-personal-independent-site-really-cost-4pkl</guid>
      <description>&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.amazonaws.com%2Fuploads%2Farticles%2F0ei9ur55xten1a19hudh.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.amazonaws.com%2Fuploads%2Farticles%2F0ei9ur55xten1a19hudh.png" alt="Article cover image" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Short Version
&lt;/h2&gt;

&lt;p&gt;A personal independent site can start at &lt;strong&gt;$0/year&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you do not buy a top-level domain, you can publish the first version on a free provider subdomain from Cloudflare Pages, Netlify, Vercel, or GitHub Pages. An address like &lt;code&gt;your-name.pages.dev&lt;/code&gt; is already enough for learning, drafts, a small portfolio, or a family project.&lt;/p&gt;

&lt;p&gt;That does not mean a site stays free forever. Costs usually appear when:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You want a domain that belongs to you.&lt;/li&gt;
&lt;li&gt;You use paid tools such as Codex, ChatGPT, design software, or image generation to move faster.&lt;/li&gt;
&lt;li&gt;Your site grows into heavy media, email, databases, login, comments, search, or commercial features.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So the real question is not “can I hack together the cheapest possible site?” The better question is: where does a normal person actually spend money when building a serious personal site?&lt;/p&gt;

&lt;h2&gt;
  
  
  Separate Three Kinds Of Cost
&lt;/h2&gt;

&lt;p&gt;When people ask what a website costs, they often mix three different bills.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infrastructure cost&lt;/strong&gt; keeps the site online: domain, DNS, static hosting, storage, CDN, and certificates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tool cost&lt;/strong&gt; helps you build faster: Codex, ChatGPT, design tools, image generation, writing tools, and code editors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Maintenance cost&lt;/strong&gt; keeps the site useful over time: new content, privacy review, backups, redesigns, renewals, and broken-link cleanup.&lt;/p&gt;

&lt;p&gt;For a static personal site, the first category is often the cheapest one. The expensive part is attention, plus any tools you buy to save time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three Budget Routes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Route One: Start Free
&lt;/h3&gt;

&lt;p&gt;Budget: &lt;strong&gt;$0/year&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Best for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learning before you know whether you will keep publishing.&lt;/li&gt;
&lt;li&gt;Giving projects, notes, or family material a temporary public address.&lt;/li&gt;
&lt;li&gt;Accepting a provider subdomain.&lt;/li&gt;
&lt;li&gt;Avoiding business email, backends, memberships, payments, and databases.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A free first version can look like this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Choice&lt;/th&gt;
&lt;th&gt;Estimate&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Domain&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;*.pages.dev&lt;/code&gt;, &lt;code&gt;*.netlify.app&lt;/code&gt;, &lt;code&gt;*.vercel.app&lt;/code&gt;, or GitHub Pages&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Static hosting&lt;/td&gt;
&lt;td&gt;Cloudflare Pages, Netlify, Vercel, or GitHub Pages free tiers&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTTPS&lt;/td&gt;
&lt;td&gt;Automatic on the platform&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content&lt;/td&gt;
&lt;td&gt;Markdown, MDX, and ordinary image files&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Email&lt;/td&gt;
&lt;td&gt;Keep using Gmail or public social profiles&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Analytics&lt;/td&gt;
&lt;td&gt;Cloudflare Web Analytics or GA&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The tradeoff is ownership of the address. If you move providers later, the old provider subdomain may stop being the stable entrance to your work.&lt;/p&gt;

&lt;p&gt;For version one, that is fine. If you do not yet know whether you can keep the site alive for a month, not buying a domain is a reasonable decision.&lt;/p&gt;

&lt;h3&gt;
  
  
  Route Two: Own The Address
&lt;/h3&gt;

&lt;p&gt;Budget: &lt;strong&gt;about $10-20/year for basic infrastructure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Best for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Treating the site as a long-term public identity.&lt;/li&gt;
&lt;li&gt;Putting the URL on a resume, portfolio, social profile, or business card.&lt;/li&gt;
&lt;li&gt;Wanting readers and search engines to remember your domain instead of a platform subdomain.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This route usually adds only one paid item: a domain.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Choice&lt;/th&gt;
&lt;th&gt;Estimate&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Domain&lt;/td&gt;
&lt;td&gt;Buy a &lt;code&gt;.com&lt;/code&gt;, &lt;code&gt;.net&lt;/code&gt;, &lt;code&gt;.dev&lt;/code&gt;, or similar top-level domain&lt;/td&gt;
&lt;td&gt;Often about $10-20/year, depending on TLD and registrar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DNS&lt;/td&gt;
&lt;td&gt;Cloudflare DNS or registrar DNS&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Static hosting&lt;/td&gt;
&lt;td&gt;Cloudflare Pages, GitHub Pages, Netlify, or Vercel free tier&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTTPS&lt;/td&gt;
&lt;td&gt;Automatic on the platform&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inbound email&lt;/td&gt;
&lt;td&gt;Cloudflare Email Routing into Gmail&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Outbound email&lt;/td&gt;
&lt;td&gt;Start with Gmail, upgrade later if needed&lt;/td&gt;
&lt;td&gt;$0+&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;As of May 3, 2026, Porkbun's domain pricing page shows &lt;code&gt;.COM from $11.08&lt;/code&gt;, but domain prices vary by TLD, first-year promotion, and renewal. Always check the renewal price before buying. Cloudflare Registrar says it sells and renews domains at cost without markup, but you still pay registry and ICANN costs.&lt;/p&gt;

&lt;p&gt;This is the route I would recommend for most serious first versions: buy the domain, keep hosting free, and keep the content as files you control.&lt;/p&gt;

&lt;h3&gt;
  
  
  Route Three: Add Tools And Growth
&lt;/h3&gt;

&lt;p&gt;Budget: &lt;strong&gt;$20/month and up, depending on what you add&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Best for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;People who already know they will publish regularly.&lt;/li&gt;
&lt;li&gt;People who want AI tools to reduce the technical and writing burden.&lt;/li&gt;
&lt;li&gt;Sites with large images, videos, downloads, or interactive features.&lt;/li&gt;
&lt;li&gt;Sites that need professional email, collaboration, a CMS, database, search, comments, or automation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this point the cost is less about “the website” and more about the workbench around it.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;When it matters&lt;/th&gt;
&lt;th&gt;Estimate&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Codex / ChatGPT&lt;/td&gt;
&lt;td&gt;You want AI help editing code, writing pages, running checks, and organizing content&lt;/td&gt;
&lt;td&gt;ChatGPT Plus is listed at $20/month; Codex limits and rates depend on plan and usage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Object storage&lt;/td&gt;
&lt;td&gt;Images, attachments, or downloads outgrow the repo&lt;/td&gt;
&lt;td&gt;Cloudflare R2 has a free Standard storage allowance, then charges by storage and operations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Professional email&lt;/td&gt;
&lt;td&gt;You need to send as &lt;code&gt;hello@yourdomain.com&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Free forwarding can start it; full sending usually needs a mail service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Paid hosting&lt;/td&gt;
&lt;td&gt;You need higher build limits, teams, serverless functions, or commercial features&lt;/td&gt;
&lt;td&gt;Free to monthly plans, depending on provider&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database / CMS&lt;/td&gt;
&lt;td&gt;You need login, comments, memberships, forms, or non-technical editing&lt;/td&gt;
&lt;td&gt;Can start free, then becomes usage-based&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Paid analytics&lt;/td&gt;
&lt;td&gt;You need privacy-focused analytics, team reports, or longer retention&lt;/td&gt;
&lt;td&gt;Free to monthly plans&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is not the route for day one. Ship the site first, learn whether you will maintain it, then upgrade.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is Codex A Website Cost?
&lt;/h2&gt;

&lt;p&gt;Yes, but only if you count it correctly.&lt;/p&gt;

&lt;p&gt;If you already pay for ChatGPT Plus, Pro, or a team plan, using Codex for your site may be a near-zero marginal cost. It is another use of a tool you already have.&lt;/p&gt;

&lt;p&gt;If you subscribe to ChatGPT Plus only to build the site, then you can count it as a &lt;strong&gt;$20/month tool cost&lt;/strong&gt;. It is not hosting, and it is not a domain bill. You are paying to save time, lower the technical barrier, and let an AI assistant inspect and edit the project.&lt;/p&gt;

&lt;p&gt;OpenAI's help docs say Codex is included with ChatGPT Plus, Pro, Business, and Enterprise/Edu plans, while usage limits depend on the plan and task complexity. The Codex rate card moved toward token-based credit usage in April 2026, so “$20/month” should not be read as an unlimited Codex promise.&lt;/p&gt;

&lt;p&gt;A more practical calculation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;If you only use AI to build version one:
Domain $10-20/year + AI tool $20/month, then cancel when done if you want.

If you use AI all year for writing, site edits, images, and content operations:
Domain $10-20/year + AI tool from $240/year.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Codex is an efficiency cost. It is not a required infrastructure cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do You Need A Domain?
&lt;/h2&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;Without a domain, you can use provider subdomains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloudflare Pages: &lt;code&gt;your-site.pages.dev&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Netlify: &lt;code&gt;your-site.netlify.app&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Vercel: &lt;code&gt;your-site.vercel.app&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;GitHub Pages: &lt;code&gt;username.github.io&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those addresses open, share, and work. For learning, experiments, temporary portfolios, and family projects, they are enough.&lt;/p&gt;

&lt;p&gt;The reason to buy a domain is not status. It is durability:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You want readers to remember one stable address.&lt;/li&gt;
&lt;li&gt;You may change hosting providers later without changing public links.&lt;/li&gt;
&lt;li&gt;You want to put the URL on a resume, portfolio, card, or long-term profile.&lt;/li&gt;
&lt;li&gt;You want search engines to associate your name and work with your own address.&lt;/li&gt;
&lt;li&gt;You want an address such as &lt;code&gt;hello@yourdomain.com&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My rule for beginners: if you have not published three pieces or maintained the site for four weeks, wait before buying the domain. Prove the habit first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Can Static Hosting Be Free?
&lt;/h2&gt;

&lt;p&gt;Because static sites are cheap to serve.&lt;/p&gt;

&lt;p&gt;A static site is mostly HTML, CSS, JavaScript, and image files. When someone opens a page, the platform sends files from a CDN. It does not need to run a custom server program for every request.&lt;/p&gt;

&lt;p&gt;Cloudflare Pages advertises unlimited static requests. Its limits documentation lists 500 builds per month on the Free plan, 100 custom domains per project, and up to 20,000 files per Free-plan site. Netlify's pricing page lists a Free plan at $0 with 300 credits per month. Vercel documents the Hobby plan as free with automatic HTTPS, Git integrations, preview deployments, and 100 GB of Fast Data Transfer. GitHub Pages describes itself as static hosting for HTML, CSS, and JavaScript files from a repository.&lt;/p&gt;

&lt;p&gt;That is why a first personal site should avoid unnecessary backend complexity. The closer it stays to static files, the cheaper and easier it is to move.&lt;/p&gt;

&lt;h2&gt;
  
  
  Will Images, Video, And Downloads Become Expensive?
&lt;/h2&gt;

&lt;p&gt;Normal images usually will not.&lt;/p&gt;

&lt;p&gt;A few compressed images in each article can live in the repository or static hosting. Costs become more likely when you publish:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Many full-resolution images.&lt;/li&gt;
&lt;li&gt;Video files.&lt;/li&gt;
&lt;li&gt;Large PDFs, software packages, audio, or downloads.&lt;/li&gt;
&lt;li&gt;A frequently accessed asset library.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then object storage may make sense. Cloudflare R2's pricing page lists a 10 GB-month monthly free allowance for Standard storage, then storage and operation charges after that, with no Internet egress bandwidth fees. That is generous for ordinary personal sites, but heavy reads can still create operation costs.&lt;/p&gt;

&lt;p&gt;For version one, keep it simple: compress images, host video on YouTube, Bilibili, or another video platform, and embed or link from the site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do You Need Paid Email?
&lt;/h2&gt;

&lt;p&gt;Not for version one.&lt;/p&gt;

&lt;p&gt;You can start with Gmail, social links, or a simple contact page. After buying a domain, you can think about &lt;code&gt;hello@yourdomain.com&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you only need inbound mail, Cloudflare Email Routing says it can create custom addresses and route them to your preferred inbox, and it is free and private by design. That solves receiving and forwarding. It is not a full professional mailbox. Reliable sending from your domain usually needs Google Workspace, Fastmail, Zoho, iCloud Custom Email Domain, or another mail service.&lt;/p&gt;

&lt;p&gt;For a personal site, solve “can people reach me?” before solving email branding.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Do You Need A Backend, Database, Or CMS?
&lt;/h2&gt;

&lt;p&gt;When the need is real.&lt;/p&gt;

&lt;p&gt;Version one usually does not need a database. Articles, projects, and pages can be Markdown or MDX files.&lt;/p&gt;

&lt;p&gt;Backend costs start to make sense when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users need to log in.&lt;/li&gt;
&lt;li&gt;Readers can comment.&lt;/li&gt;
&lt;li&gt;You have paid content or memberships.&lt;/li&gt;
&lt;li&gt;Forms need a real admin workflow.&lt;/li&gt;
&lt;li&gt;Non-technical collaborators need to edit content.&lt;/li&gt;
&lt;li&gt;Search, recommendation, or personalization becomes complex.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of that can be built later. None of it is required for a first independent site.&lt;/p&gt;

&lt;h2&gt;
  
  
  A More Realistic Budget Table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;First-year infrastructure&lt;/th&gt;
&lt;th&gt;AI / tools&lt;/th&gt;
&lt;th&gt;What it feels like&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Learn and test&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;td&gt;$0+&lt;/td&gt;
&lt;td&gt;You can start now&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Free subdomain + one month of Codex&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;td&gt;about $20&lt;/td&gt;
&lt;td&gt;Cheapest serious validation route&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain + free static hosting&lt;/td&gt;
&lt;td&gt;about $10-20&lt;/td&gt;
&lt;td&gt;$0+&lt;/td&gt;
&lt;td&gt;Best serious starting point&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain + year-round ChatGPT Plus / Codex use&lt;/td&gt;
&lt;td&gt;about $10-20&lt;/td&gt;
&lt;td&gt;about $240/year+&lt;/td&gt;
&lt;td&gt;Tool cost, not hosting cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Growing personal site&lt;/td&gt;
&lt;td&gt;about $10-20+&lt;/td&gt;
&lt;td&gt;$20-50/month or more&lt;/td&gt;
&lt;td&gt;Depends on email, storage, CMS, analytics, and backend&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The most common mistake is to say “an AI-built site costs hundreds per year.” More precise: the site itself can cost about ten to twenty dollars per year; separately, you may buy an AI tool that helps with coding, writing, images, and operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Recommendation
&lt;/h2&gt;

&lt;p&gt;If you do not have a site yet:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start on a free subdomain and publish version one.&lt;/li&gt;
&lt;li&gt;Publish three pieces, or maintain the site for four weeks.&lt;/li&gt;
&lt;li&gt;If the habit survives, buy a domain.&lt;/li&gt;
&lt;li&gt;Upgrade storage, email, backend, or team features only when they block real work.&lt;/li&gt;
&lt;li&gt;Judge Codex and similar AI tools by time saved, not by whether they are required.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The best thing about an independent site is that it does not require a large commitment on day one. Start at $0, prove that you want to keep writing and organizing your work, then spend money where the need is real.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://help.openai.com/en/articles/6950777-chatgpt-plus" rel="noopener noreferrer"&gt;OpenAI: What is ChatGPT Plus?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://help.openai.com/en/articles/11369540-codex-in-chatgpt" rel="noopener noreferrer"&gt;OpenAI: Using Codex with your ChatGPT plan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://help.openai.com/en/articles/20001106-codex-rate-card" rel="noopener noreferrer"&gt;OpenAI: Codex rate card&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pages.cloudflare.com/" rel="noopener noreferrer"&gt;Cloudflare Pages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.cloudflare.com/pages/platform/limits/" rel="noopener noreferrer"&gt;Cloudflare Pages limits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.cloudflare.com/r2/pricing/" rel="noopener noreferrer"&gt;Cloudflare R2 pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.cloudflare.com/registrar/" rel="noopener noreferrer"&gt;Cloudflare Registrar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.cloudflare.com/email-routing/" rel="noopener noreferrer"&gt;Cloudflare Email Routing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.netlify.com/pricing/" rel="noopener noreferrer"&gt;Netlify pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vercel.com/docs/plans" rel="noopener noreferrer"&gt;Vercel account plans&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/pages/getting-started-with-github-pages/what-is-github-pages" rel="noopener noreferrer"&gt;GitHub Pages docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://porkbun.com/products/domains" rel="noopener noreferrer"&gt;Porkbun domain pricing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Originally published on my personal site:&lt;br&gt;
&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/personal-site-cost/" rel="noopener noreferrer"&gt;https://marlinbian-site.pages.dev/en/tutorials/personal-site-cost/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More links: &lt;a href="https://github.com/marlinBian" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://www.youtube.com/channel/UCDohkzMJ37unYpA78MOl2og" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; · &lt;a href="https://www.linkedin.com/in/xu-bian-0b6404207/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; · &lt;a href="https://bsky.app/profile/marlin-bian.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; · &lt;a href="https://mastodon.social/@marlin_bian" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; · &lt;a href="https://discord.gg/jy2N8b3kZR" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Build your own independent site with Codex</title>
      <dc:creator>Xu Bian</dc:creator>
      <pubDate>Sun, 03 May 2026 12:37:44 +0000</pubDate>
      <link>https://forem.com/xu_bian_f1525524ffcb08e35/build-your-own-independent-site-with-codex-5ah</link>
      <guid>https://forem.com/xu_bian_f1525524ffcb08e35/build-your-own-independent-site-with-codex-5ah</guid>
      <description>&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.amazonaws.com%2Fuploads%2Farticles%2Fil4y2e8uv3f6nl5dtepi.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.amazonaws.com%2Fuploads%2Farticles%2Fil4y2e8uv3f6nl5dtepi.png" alt="A map of turning materials into a personal website and social channels." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Short Version
&lt;/h2&gt;

&lt;p&gt;You do not need to become a programmer before you can have your own place on the web. You need to make three decisions first:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What should last: artwork, essays, projects, learning notes, tutorials, or a family archive.&lt;/li&gt;
&lt;li&gt;How often you will update it: weekly, monthly, or only when a real project is ready.&lt;/li&gt;
&lt;li&gt;How much maintenance you can accept: no-code, light file editing, or a long-term code project.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Codex sits between light file editing and a long-term code project. It is not a magic website button. It is a local collaborator that can inspect a project, edit files, run checks, and explain the changes. The official OpenAI Codex CLI documentation describes it as a coding agent you can run locally from the terminal, working inside the selected directory.&lt;/p&gt;

&lt;p&gt;That makes it useful for the repetitive parts: setting up folders, creating pages, adjusting styles, turning Markdown into pages, running builds, and checking that private material has not entered the public site.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Website Is Not Just Another Feed
&lt;/h2&gt;

&lt;p&gt;Social platforms are useful. They are where distribution, feedback, and discovery happen. But they are not good archives. Rules change, timelines bury work, and links can become fragile.&lt;/p&gt;

&lt;p&gt;An independent site solves a different problem: it gives your public work a stable address.&lt;/p&gt;

&lt;p&gt;A healthier publishing order 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;Publish the complete version on your site first.
Then adapt it for Xiaohongshu, WeChat, YouTube, Bluesky, DEV.to, or other platforms.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This keeps the source version in your hands. You can still benefit from social platforms without letting them become the only copy of your work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose By Person, Not By Tool
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Designers And Artists
&lt;/h3&gt;

&lt;p&gt;Start with a portfolio. Do not start with a complex blog system.&lt;/p&gt;

&lt;p&gt;Your strongest assets are images, project process, taste, and judgment. A first version can be very small:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Home: one clear sentence about who you are, plus selected work.&lt;/li&gt;
&lt;li&gt;Work pages: one page per project, with images, context, process, and outcome.&lt;/li&gt;
&lt;li&gt;About: what you do, what kind of collaboration fits, and how to contact you.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a designer, Codex should not decide which work is good. Its job is to make the structure steady: create pages, keep image sizing consistent, add alt text, update navigation, and run checks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Engineers And STEM Builders
&lt;/h3&gt;

&lt;p&gt;Start with project records and reusable notes.&lt;/p&gt;

&lt;p&gt;It is easy to over-engineer your own site. The better first version is practical:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Project pages: what you built, why it exists, what stack you used, and what happened.&lt;/li&gt;
&lt;li&gt;Tutorials: reusable explanations for things you keep teaching.&lt;/li&gt;
&lt;li&gt;Playgrounds: small demos or tools people can try without an account.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are comfortable with Git, Markdown, Astro, and static hosting, Codex can be very effective. It can work inside the repository and run the build. Your job is to review the changes and keep the important decisions explicit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Children And Family Projects
&lt;/h3&gt;

&lt;p&gt;Start with safety, simplicity, and adult review.&lt;/p&gt;

&lt;p&gt;A child's site should not begin with public attention. A better goal is a safe record:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A small wall of work: drawings, crafts, Scratch projects, or reading notes.&lt;/li&gt;
&lt;li&gt;A learning log: one or two sentences each week.&lt;/li&gt;
&lt;li&gt;A review flow: drafts stay local until an adult checks them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Privacy matters more than polish. Do not publish school names, home locations, routine schedules, identity documents, or anything that makes the child easy to identify. Codex can help scan text, but an adult must make the final decision.&lt;/p&gt;

&lt;h3&gt;
  
  
  Writers, Teachers, And Small Service Businesses
&lt;/h3&gt;

&lt;p&gt;Start with articles and useful resources.&lt;/p&gt;

&lt;p&gt;Writers need durable long-form links. Teachers need organized materials. Small service businesses need a clear public introduction. A first version can be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Home: what value you provide.&lt;/li&gt;
&lt;li&gt;Writing or resources: public material grouped by topic.&lt;/li&gt;
&lt;li&gt;Contact: one low-friction way to reach you.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You do not need a complex system at the beginning. Let the work have stable URLs first. Add newsletters, courses, payments, membership, or automation only when the content proves the need.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Steady Route
&lt;/h2&gt;

&lt;p&gt;If you do not know what to choose, I would start here:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write content in Markdown or MDX.&lt;/li&gt;
&lt;li&gt;Build the site with Astro.&lt;/li&gt;
&lt;li&gt;Keep history in Git.&lt;/li&gt;
&lt;li&gt;Deploy to Cloudflare Pages, GitHub Pages, Netlify, or Vercel.&lt;/li&gt;
&lt;li&gt;Treat social platforms as distribution, not the archive.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This route is not the only good route. Its advantage is durability. Your content remains ordinary files. If you change themes, hosting providers, or domains, the articles and images are still yours.&lt;/p&gt;

&lt;p&gt;No-code tools are also valid. Framer, Webflow, Carrd, Notion-style sites, and similar tools can be faster for a single polished homepage. The deciding question is simple: if you need one beautiful page, no-code may be faster. If you want years of essays, tutorials, projects, and interactive demos, a file-based site is usually steadier.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Better First Prompt For Codex
&lt;/h2&gt;

&lt;p&gt;This prompt is too vague:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Build me a personal website.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A better starting prompt is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Please help me build a personal independent site in the current directory.
The audience is not programmers only. People should understand me through work and writing.
The first version needs a home page, about page, writing list, project list, and contact page.
Store content in Markdown or MDX. Public content should not depend on a database.
Inspect the project structure first, give me a short plan, and wait before editing files.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you already have materials, add a privacy boundary:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The materials/inbox folder contains images and drafts.
First list what is suitable for public use and what may be private.
Do not move anything from private into public or src/content.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A good prompt does not lock every technical detail. It states the goal, audience, boundaries, and acceptance checks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep Version One Small
&lt;/h2&gt;

&lt;p&gt;The first version only needs five areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Home: one clear positioning sentence and recent work.&lt;/li&gt;
&lt;li&gt;About: who you are and what you are focused on now.&lt;/li&gt;
&lt;li&gt;Writing: articles and durable opinions.&lt;/li&gt;
&lt;li&gt;Projects: work, experiments, and tools.&lt;/li&gt;
&lt;li&gt;Contact: email, social links, and collaboration paths.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Avoid login, comments, CMS complexity, memberships, heavy animation, and multilingual admin systems at the beginning. Add them only after you have a real publishing rhythm.&lt;/p&gt;

&lt;h2&gt;
  
  
  Launch Checklist
&lt;/h2&gt;

&lt;p&gt;Check at least these items before publishing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every page is readable on a phone.&lt;/li&gt;
&lt;li&gt;The home page explains who you are within ten seconds.&lt;/li&gt;
&lt;li&gt;Each article has a title, description, date, and tags.&lt;/li&gt;
&lt;li&gt;Images have reasonable dimensions and alt text.&lt;/li&gt;
&lt;li&gt;Secrets, private drafts, backend screenshots, and child-sensitive details are not in public folders.&lt;/li&gt;
&lt;li&gt;The build command passes.&lt;/li&gt;
&lt;li&gt;Important links open correctly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where Codex helps: run the build, inspect diffs, and list risks. Still, read the public pages yourself before shipping.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developers.openai.com/codex/cli" rel="noopener noreferrer"&gt;OpenAI Codex CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.openai.com/codex/skills" rel="noopener noreferrer"&gt;OpenAI Codex Agent Skills&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Originally published on my personal site:&lt;br&gt;
&lt;a href="https://marlinbian-site.pages.dev/en/tutorials/build-personal-site-with-codex/" rel="noopener noreferrer"&gt;https://marlinbian-site.pages.dev/en/tutorials/build-personal-site-with-codex/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More links: &lt;a href="https://github.com/marlinBian" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://www.youtube.com/channel/UCDohkzMJ37unYpA78MOl2og" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; · &lt;a href="https://www.linkedin.com/in/xu-bian-0b6404207/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; · &lt;a href="https://bsky.app/profile/marlin-bian.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; · &lt;a href="https://mastodon.social/@marlin_bian" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; · &lt;a href="https://discord.gg/jy2N8b3kZR" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
