<?xml version="1.0" encoding="UTF-8"?>


<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://www.julianwyngaard.com/tags/context-engineering/feed.xml</id>
    <title>Loosely Coupled Thoughts &#x2014; tagged context-engineering</title>
    <subtitle>A blog about software engineering, AI, and development.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://www.julianwyngaard.com/tags/context-engineering/feed.xml"/>
    <link rel="alternate" type="text/html" href="https://www.julianwyngaard.com/tags/context-engineering"/>
    <updated>2026-05-31T17:48:59.372831+12:00</updated>
    <author>
        <name>Julian Wyngaard</name>
    </author>
    <entry>
        <id>urn:uuid:019e7c64-e05b-71bf-8e99-9e087da764f8</id>
        <title>Designing a Feature with Claude Design &#x2014; Then Handing It to Claude Code</title>
        <link rel="alternate" type="text/html" href="https://www.julianwyngaard.com/2026/05/31/designing-a-feature-with-claude-design-then-handing-it-to-claude-code"/>
        <published>2026-05-31T17:48:59.372831+12:00</published>
        <updated>2026-05-31T17:48:59.372831+12:00</updated>
        <category term="ai" label="ai"/>
        <category term="engineering-with-ai" label="engineering-with-ai"/>
        <category term="context-engineering" label="context-engineering"/>
        <category term="anthropic" label="anthropic"/>
        <category term="claude" label="claude"/>
        <category term="claude-design" label="claude-design"/>
        <category term="claude-code" label="claude-code"/>
        <category term="ux-design" label="ux-design"/>
        <content type="html">&lt;p&gt;I&apos;ve been wanting to give &lt;a href=&quot;https://www.anthropic.com/news/claude-design-anthropic-labs&quot;&gt;Claude Design&lt;/a&gt; a try. In this post I&apos;ll walk through my first use of it for designing some new functionality I wanted for my blog CMS. My use here is probably very basic, but it was an interesting exercise, and in particular I wanted to see how I could hand the design off for building.&lt;/p&gt;
&lt;p&gt;Just a small disclaimer: I&apos;m not a UX designer, or a creative person in general. But that&apos;s exactly why this exercise was interesting &#x2014; it did a far better job than I ever could.&lt;/p&gt;
&lt;p&gt;Getting into it...&lt;/p&gt;
&lt;p&gt;I&apos;ve recently built this blog site where this article is being read (I will write about this separately). It&apos;s very new and the feature/capability set is minimal, just enough functionality to manage, publish and serve blog content.&lt;/p&gt;
&lt;p&gt;It has a custom-built CMS for managing the content, and supports slug-like tags that I can selectively apply to any of the content. These tags are visible to the right side of this article (or at the bottom on mobile).&lt;/p&gt;
&lt;p&gt;When writing or editing content, it has a section where I can add new tags or use existing ones. Below shows editing an article in the CMS I wrote recently about &lt;a href=&quot;https://www.julianwyngaard.com/2026/04/24/human-review-is-the-bottleneck/&quot;&gt;human reviews being a bottleneck&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.julianwyngaard.com/f5b7e7b7-2815-4c16-af82-675a90871f9e.png&quot; alt=&quot;Blog CMS Edit Post&quot;&gt;&lt;/p&gt;
&lt;p&gt;The behaviour of the tags input field is: On post creation, any never-before-seen tags will be created in the tags table in the database, existing tags will be referenced.&lt;/p&gt;
&lt;p&gt;At first sight it looks ok, but:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It has no option to select existing tags.&lt;/li&gt;
&lt;li&gt;It doesn&apos;t indicate if a tag being added was one that already existed or would be created.&lt;/li&gt;
&lt;li&gt;It doesn&apos;t help me avoid creating near-duplicate tags with a similar name or even typos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One wouldn&apos;t want different blog articles using tags that mean the same thing but with slightly different names. For example &lt;code&gt;ai-engineering&lt;/code&gt; and &lt;code&gt;engineering-with-ai&lt;/code&gt;, or even a typo in the tag like &lt;code&gt;ai-eginering&lt;/code&gt;. So without any kind of tag selection, and the behaviour of the existing tag selection and creation, this made the UX painful (I had to open the tag management section in a different tab to remember what tags were available) and susceptible to tags becoming a mess across all the content.&lt;/p&gt;
&lt;h1&gt;Using Claude Design&lt;/h1&gt;
&lt;p&gt;Claude Design was &lt;a href=&quot;https://www.anthropic.com/news/claude-design-anthropic-labs&quot;&gt;introduced on 17 April&lt;/a&gt;. I had had a bit of a poke around in it before to see what it was about, but this was the first chance I had to try it out on something real.&lt;/p&gt;
&lt;p&gt;I started by pasting four screenshots of the CMS and giving it this prompt. (I used the term &quot;upsert&quot; for tags, which wasn&apos;t quite correct, but Claude got it).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Attached are four screenshots of my blog CMS. One is where tags are managed, show when two tags existed; ai and harness-engineering. The second one is showing where I can add a post and enter tags. How it currently works is I can enter any tag value and when the post is created/published then the app(or probably the backend for the CMS) will upsert tags.&lt;/p&gt;
&lt;p&gt;So you can see in the third image I enter two tags, one existing and the second one (new-tag) is new, so when the blog post got created is used the existing tag and then created a the new-tag, as shown in the fourth image, where I then have a total of three tags. (Two were existing one new one got created on that new post).&lt;/p&gt;
&lt;p&gt;I like this functionality. However, right now when I enter tags on the create post page I don&apos;t get offered to select from existing tags, so if my new post should use an existing tag I have to carefully remember or go back and look in the tags section to remember the exact name of the tag so I don&apos;t end up with near duplicated for what should be the same tag.&lt;/p&gt;
&lt;p&gt;Ideally when I start typing for a new tag, it should show existing tags that match (like contain) the text I have entered, with the option of selecting one of those. If none match it should allow me to add a new tag.&lt;/p&gt;
&lt;p&gt;Come up with three options for the post create screen for selecting existing or adding tags. Should be simple and seamless and easy to use.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The prompt is relatively verbose (easy to do with voice dictation), but I wanted Claude to really understand how it currently works and what I am looking for.&lt;/p&gt;
&lt;p&gt;Importantly at the end I asked for three design options.&lt;/p&gt;
&lt;p&gt;After a fair bit of time it presented me with a fully functional interactive prototype, with three separate design concepts which I could toggle between with a selector at the bottom. And the generated designs looked very close to my actual CMS.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Concept A&lt;/strong&gt;: auto-complete (shows matching tags as you type, with option to create)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.julianwyngaard.com/a34c6604-a718-41cb-a3fb-29032294ffdd.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Concept B&lt;/strong&gt;: command-popover (shows &lt;strong&gt;all&lt;/strong&gt; tags, filtering as you type, with option to create)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.julianwyngaard.com/98959e8f-ca1d-48b4-8002-c54bbf2099f8.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Concept C&lt;/strong&gt;: A tag shelf&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.julianwyngaard.com/dd543fe3-bc13-4c4d-a9c6-05969cc14a9c.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;To be honest, I was really impressed with this. All these options look really slick. How long would it have taken a designer to come up with this before these kinds of AI-assisted design tools existed, especially with a fully functional interactive prototype? I am not a creative person and for personal things like my blog CMS these kinds of designs would never have seen the light of day.&lt;/p&gt;
&lt;h1&gt;Stretching a bit further with related functionality&lt;/h1&gt;
&lt;p&gt;I had already also been thinking about adding additional AI-generated tag suggestions functionality as a separate piece of work. I spend a ton of time trying to think about tag names for content. So I thought I would see how Claude Design would go with extending what it had already proposed while also incorporating this new AI tag suggestion functionality.&lt;/p&gt;
&lt;p&gt;Here&apos;s the prompt I gave it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;These look really great. And actually now while looking at it, it has made me think a bit further about this. I would like you to perhaps create another version of this (leaving the existing on in place so I can still refer back to it), where another killer piece of functionality would be tag suggestions. The suggestions here would be based on the content in the post being written, and would use a combination of matching to existing tags, but also potential new tags. I&apos;m not sure if this is different from the selection of tags that you have already designed for, but I would imagine there would be an endpoint in the server that could get tag suggestions based on the blog content. Not sure if it would be automatic as typing the post (seems heavy on the server, especially as it may be doing outbound AI calls to get suggestions), or just a button to get suggestions, or perhaps something a little smarter like suggestions after a certain about of text, or based on the title + blog text, maybe some initial suggestion and then a small refresh button or AI type button to suggest tags. Would exclude suggestions that are already added to the post. Also need to consider when editing a draft, should also work. What nice clean simple design options would you propose with this, fitting into the design we have already designed for the tag selection.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I tried to give it my thinking but also leaving it open-ended for Claude Design to be creative with. It gave me another interactive prototype with three modes to choose from, and incorporated one of the tag selection design options from the first round.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mode A&lt;/strong&gt;: A button with the name &quot;Suggest Tags&quot;, or as shown below &quot;Refresh&quot; which would generate new suggestions to choose from.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.julianwyngaard.com/28c0e55b-bead-410f-9aa9-79a3b85aceb9.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mode B&lt;/strong&gt;: Smart auto, which generated suggestions after enough post content existed, and a small refresh button.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.julianwyngaard.com/113e3418-25f0-42ab-8ce7-9ef54624f995.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mode C&lt;/strong&gt;: Assistant panel. This felt super chaotic.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.julianwyngaard.com/7a9cbc2a-3f95-4c60-896c-33f6a07f66d6.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;I decided I liked &quot;Concept A: Auto-complete&quot; for tag selection and &quot;Mode B: Smart auto&quot; for tag suggestions. These two seemed to complement each other.&lt;/p&gt;
&lt;p&gt;I got it to create a final version of the working prototype with those two options. And this time I also gave it my existing style guide for the CMS (I probably should have done that at the start).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ok, I like the tag selection Concept A, along with Mode B (smart auto) with tag suggestions. Can you do one more round showing a functional version with these two options baked in. I have also attached the style-guide for the existing application as it&apos;s currently implemented, so if we could align as much as possible to that.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This image below shows the two separate pieces of functionality working together. Selection as a slick fly-over style drop down when typing, and option to select tags from the tag suggestion box.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.julianwyngaard.com/e2cbbed4-2808-4194-9211-2a6bb0e18dab.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h1&gt;Moving From Design to Implementation&lt;/h1&gt;
&lt;p&gt;So now I had a flash new design that I was pretty excited about. But now how to feed this to Claude Code so it can build it as accurately as possible to the designs?&lt;/p&gt;
&lt;p&gt;The conversation I had with Claude during this design process contained a lot of critical context that the design artefacts alone wouldn&apos;t hold. So, not knowing what Claude Design would be able to do here, I just asked it to write up a requirement doc based on the conversation and final design options chosen.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ok, can you write up a set of requirements and acceptance criteria for this new functionality. Note that the develoers are never have going to have seen the other options, they just need to see the final solution and spec. The exact endpoint name for example is not that important, but what is important is how it&apos;s expected to behave and return so the UI functionality can work as expected. How the UX and interface behaves does need to be quite specific. Write this as a markdown document.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And lo and behold, it gave me a detailed requirements document! &lt;a href=&quot;https://gist.github.com/julianwyngaard/4b71109292c41956a0f9bb90c6830c9d&quot;&gt;This is what it produced&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There are some options to hand off to Claude Code. I just downloaded the zip file.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.julianwyngaard.com/0a77a808-ddf8-41d4-bd44-e8d509c97a65.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;I added the functional design prototype and the requirements document to an &lt;code&gt;in-progress&lt;/code&gt; folder in my already created git worktree, ready for the next phase of planning and building.&lt;/p&gt;
&lt;p&gt;The prototype has a lot of boilerplate code as it was a fully functional web site. However, for Claude to reference this, along with the requirements document it generated during the planning and implementation phases meant it would greatly increase the probability of getting it as close as possible to the design. And it did.&lt;/p&gt;
&lt;p&gt;My code base for the blog application is already very well primed with context, structure and tooling that allows streamlining real engineering with AI. And I have templates and agent skills that help me create design specs and implementation plans for Claude to execute on.&lt;/p&gt;
&lt;p&gt;This design exercise above happened the day after &lt;a href=&quot;https://www.anthropic.com/news/claude-opus-4-8&quot;&gt;Opus 4.8&lt;/a&gt; was released, so I was super keen to do some building with it, and also try out their new &lt;a href=&quot;https://claude.com/blog/introducing-dynamic-workflows-in-claude-code&quot;&gt;Dynamic Workflows&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The design and build was all fully completed on the same day (well to be more accurate, about two-thirds of the build was done while I was sleeping).&lt;/p&gt;
&lt;p&gt;I will follow this article with another one running through how I did the build. I was quite happy with how that went.&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>urn:uuid:019d8632-375a-7829-9954-6ad5a1453ca1</id>
        <title>Feedback Flywheel</title>
        <link rel="alternate" type="text/html" href="https://www.julianwyngaard.com/2026/04/13/feedback-flywheel"/>
        <published>2026-04-13T21:35:33.966412+12:00</published>
        <updated>2026-04-13T21:35:33.966412+12:00</updated>
        <category term="ai" label="ai"/>
        <category term="engineering-with-ai" label="engineering-with-ai"/>
        <category term="context-engineering" label="context-engineering"/>
        <content type="html">&lt;p&gt;&lt;a href=&quot;https://martinfowler.com/articles/reduce-friction-ai/feedback-flywheel.html&quot;&gt;Feedback Flywheel&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Rahul Garg at Thoughtworks talks about the &lt;em&gt;Feedback Flywheel&lt;/em&gt;, a practice that encourages paying attention to signals in AI engineering that can be used to continuously improve the AI engineering setup and workflows to get better outcomes. Not at a personal level but at the team level.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Every AI interaction generates signal: prompts that worked, context that was missing, patterns that succeeded, failures worth preventing. Most teams discard this signal. I propose a structured feedback practice that harvests learnings from AI sessions and feeds them back into the team&apos;s shared artifacts, turning individual experience into collective improvement.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Anyone who has used AI when building software has felt all kinds of frustration when it&apos;s not doing what you expect, and what seemingly should be obvious.&lt;/p&gt;
&lt;p&gt;Every interaction like this is a signal that the LLM hasn&apos;t been primed sufficiently with the right information or instruction for the task or workflow. At this point one could start instructing and steering the LLM right there and then with prompts to get a better result. But it will likely need to be repeated again later.&lt;/p&gt;
&lt;p&gt;The idea with the Feedback Flywheel is to pay attention to these, ask what went wrong and what can be improved so next time it works better. Not just for yourself but for anyone on the team working on the project. And then taking steps to bake these in so the next encounter of that situation works better, and broadly for everyone.&lt;/p&gt;
&lt;p&gt;Adopting AI practices can plateau once everyone gets comfortable.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;With AI coding assistants, most teams reach a plateau. They adopt the tools, develop some fluency, and then stay there. The same prompting habits, the same frustrations, the same results month after month. Not because the tools stop improving, but because the team&apos;s practices around the tools stop improving&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Worse than this, when every developer on the team is encountering their own flavours of these issues, and each has their own level of skills, prompting style, local setup and even different AI tools, what you can and likely will quickly end up with is snowflake pull requests of wildly varying style and quality.&lt;/p&gt;
&lt;p&gt;All of this is signal that should be used to continuously make adjustments to the context and knowledge the LLM is primed with. These can be done in various ways, like adding specific content to the agent specific files (&lt;a href=&quot;https://agents.md/&quot;&gt;AGENTS.md&lt;/a&gt;, &lt;a href=&quot;https://claude.com/blog/using-claude-md-files&quot;&gt;CLAUDE.md&lt;/a&gt; etc), well structured and discoverable context in additional markdown files, &lt;a href=&quot;https://agentskills.io/home&quot;&gt;agent skills&lt;/a&gt; and custom commands.&lt;/p&gt;
&lt;p&gt;These benefits will quickly start to compound and result in better outcomes across the team and improve the quality of the codebase and the pace at which things can be delivered with a high level of quality.&lt;/p&gt;</content>
    </entry>
</feed>
