<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Martin Krause</title>
    <description>The latest articles on DEV Community by Martin Krause (@martinkr).</description>
    <link>https://dev.to/martinkr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F169336%2F180debdd-548f-490e-9cb1-b4bf5f7ec333.png</url>
      <title>DEV Community: Martin Krause</title>
      <link>https://dev.to/martinkr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/martinkr"/>
    <language>en</language>
    <item>
      <title>Chapter 7: Skill, Workflow or Agent?</title>
      <dc:creator>Martin Krause</dc:creator>
      <pubDate>Mon, 02 Nov 2026 10:49:02 +0000</pubDate>
      <link>https://dev.to/martinkr/chapter-7-skill-workflow-or-agent-2jbm</link>
      <guid>https://dev.to/martinkr/chapter-7-skill-workflow-or-agent-2jbm</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Not every AI task needs an agent.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's surprisingly easy to forget when agents are everywhere.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
By &lt;em&gt;Chapter 7&lt;/em&gt; of &lt;a href="https://www.packtpub.com/en-us/product/claude-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt&lt;/a&gt;, prompts, skills, workflows, agents, subagents, and connected workflows are all on the table. That means you need to know when to choose which. The book follows a well-known principle: Keep it simple. &lt;br&gt;
&amp;nbsp;&lt;br&gt;
I teach you to use the smallest structure that fits the work. Why? Because using an agent when a prompt would do does not make the system more advanced. Instead, it increases the surface area you have to understand, supervise, and maintain.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Chapter 7 gives you the framework so your architecture doesn't become bigger than the problem.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Continue your AI journey with &lt;a href="https://www.packtpub.com/en-us/product/claude-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt&lt;/a&gt;. It is available from Packt. If you are moving from prompting into reusable AI workflows, this is the problem I wrote it to help you solve.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Get the book at &lt;a href="https://www.packtpub.com/en-us/product/claude-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Packt Publishing&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>promptengineering</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Chapter 6: From Skills to Workflows</title>
      <dc:creator>Martin Krause</dc:creator>
      <pubDate>Thu, 29 Oct 2026 07:40:33 +0000</pubDate>
      <link>https://dev.to/martinkr/chapter-6-from-skills-to-workflows-5f6d</link>
      <guid>https://dev.to/martinkr/chapter-6-from-skills-to-workflows-5f6d</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;An isolated skill is helpful, but real work is teamwork&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That applies to** Agentic Work** as well, and it became obvious to me as soon as I started using Claude Code and Agent Skills professionally. &lt;/p&gt;

&lt;p&gt;Real work often involves several known steps, with decisions and handovers between them. That is where workflows come in, and it naturally became the next step in the book.&lt;/p&gt;

&lt;p&gt;For a reusable workflow, I distinguish between the incident and the process.&lt;/p&gt;

&lt;p&gt;Let me give you an example: If I write down everything that happened in &lt;em&gt;one case&lt;/em&gt;, I have documented an &lt;em&gt;incident&lt;/em&gt;. Once I map out the steps that should still apply even when the &lt;em&gt;incident changes&lt;/em&gt;, I have the beginning of a &lt;em&gt;reusable workflow&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Moving from a reusable skill to a reusable process is what Chapter 6 is about.&lt;/p&gt;

&lt;p&gt;Get &lt;a href="https://www.packtpub.com/en-us/product/claude-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt (ISBN 978-1-80778-229-0)&lt;/a&gt; from &lt;a href="https://www.packtpub.com/en-us/product/claude-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;https://www.packtpub.com/en-us/product/claude-beyond-the-prompt-9781807782290&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>agentskills</category>
      <category>agents</category>
    </item>
    <item>
      <title>Chapter 5: Skill Boundaries</title>
      <dc:creator>Martin Krause</dc:creator>
      <pubDate>Mon, 26 Oct 2026 14:14:33 +0000</pubDate>
      <link>https://dev.to/martinkr/chapter-5-skill-boundaries-2khe</link>
      <guid>https://dev.to/martinkr/chapter-5-skill-boundaries-2khe</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;A good skill has one job.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
That's what I learned the hard way. Imagine you have added a skill that analyzes logs and then turns them into a bug ticket, and then you ask: &lt;em&gt;“Here are the logs. Analyze the logs, and you fix the bug.”&lt;/em&gt;&lt;br&gt;
&amp;nbsp;&lt;br&gt;
The evidence looks familiar. It is logs, after all. The skill analyzes them already; *&lt;em&gt;how different can fixing the bug be? Quite different, actually. *&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Τhe skill was designed to turn the provided evidence into a ticket. It was not designed to inspect the repository, identify the root cause, modify the code, or verify the fix.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;em&gt;Chapter 5&lt;/em&gt; of &lt;a href="https://www.packtpub.com/en-us/product/claude-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt&lt;/a&gt; focuses on boundaries.&lt;br&gt;
You need to define what your skill should do and what it should not do:&lt;br&gt;
&amp;nbsp;&lt;br&gt;
-&amp;nbsp;Some work belongs to the skill and should happen every time.&lt;br&gt;
-&amp;nbsp;Some work may be reasonable, but only after the user agrees.&lt;br&gt;
-&amp;nbsp;Some work belongs somewhere else.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Otherwise, your skills grow and take on tasks they aren't designed for. When responsibility drifts, output quality degrades. That is the part of skill design that is often overlooked.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Get &lt;a href="https://www.packtpub.com/en-us/product/claude-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt&lt;/a&gt; at Packt Publishing: &lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;a href="https://www.packtpub.com/en-us/product/claude-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;https://www.packtpub.com/en-us/product/claude-beyond-the-prompt-9781807782290&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>tutorial</category>
      <category>development</category>
    </item>
    <item>
      <title>Chapter 4: Your First Skill</title>
      <dc:creator>Martin Krause</dc:creator>
      <pubDate>Fri, 23 Oct 2026 13:17:52 +0000</pubDate>
      <link>https://dev.to/martinkr/chapter-4-your-first-skill-33ao</link>
      <guid>https://dev.to/martinkr/chapter-4-your-first-skill-33ao</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Your first AI skill should be small.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That was hands-down the best advice I got when I ventured into agentic engineering.&lt;/p&gt;

&lt;p&gt;Your first AI in the book turns supplied evidence into a bug ticket. That is enough to understand the principles of a skill and to teach the movements. It is easy to grasp and has just enough complexity to show you the ropes.&lt;/p&gt;

&lt;p&gt;That is what &lt;em&gt;Chapter 4&lt;/em&gt; of &lt;a href="https://www.packtpub.com/en-us/product/claude-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt&lt;/a&gt; is all about. You build the first working &lt;code&gt;SKILL.md&lt;/code&gt;. You write a description that tells Claude when the skill applies. You define its boundary, method, and output. All in plain English, the programming language of the future.&lt;/p&gt;

&lt;p&gt;Once you've written the skill, you test the trigger against different requests:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one should clearly match.&lt;/li&gt;
&lt;li&gt;one says the same thing in different words.&lt;/li&gt;
&lt;li&gt;one looks similar but should not trigger the skill at all.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last case is where things get interesting. Getting a skill to trigger is only half the problem. The harder part is making sure it stays out of the way when it should. Get &lt;a href="https://www.packtpub.com/en-us/product/claude-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt&lt;/a&gt; (ISBN 978-1-80778-229-0)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.packtpub.com/en-us/product/claude-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;https://www.packtpub.com/en-us/product/claude-beyond-the-prompt-9781807782290&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  ClaudeCode #AgentSkills #AIEngineering
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>promptengineering</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Chapter 3: What a Skill actually is</title>
      <dc:creator>Martin Krause</dc:creator>
      <pubDate>Tue, 20 Oct 2026 06:48:45 +0000</pubDate>
      <link>https://dev.to/martinkr/chapter-3-what-a-skill-actually-is-22o9</link>
      <guid>https://dev.to/martinkr/chapter-3-what-a-skill-actually-is-22o9</guid>
      <description>&lt;p&gt;&lt;strong&gt;An agent skill is not just a prompt in a Markdown file.&lt;/strong&gt;&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Once I started working with skills, I realized: &lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;With a prompt from my collection, I have to remember which instructions to find, adapt, and apply.&lt;/li&gt;
&lt;li&gt;With a skill, the method is part of the agentic environment, along with enough information for Claude to recognize when it applies.
&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I needed to extract the reusable method. The prompt from the collection required a fundamentally different structure than before. &lt;strong&gt;A giant prompt is not an effective agent skill.&lt;/strong&gt;&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Chapter 3 of &lt;em&gt;&lt;a href="https://www.packtpub.com/en-us/product/claude-code-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt&lt;/a&gt;&lt;/em&gt; explores that idea with a basic example: using logs, symptoms, and debugging notes as evidence to turn them into a structured bug ticket.&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;p&gt;This will be the example skill you'll use throughout the book. In Chapter 3, you'll build its skeleton, define a small discovery surface, the method itself, and supporting material around it.&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;p&gt;You focus on understanding how to separate the reusable method from everything that is needed only when the task calls for it. &lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;p&gt;If you are moving from prompts toward reusable AI methods, this is one of the core concepts in &lt;em&gt;&lt;a href="https://www.packtpub.com/en-us/product/claude-code-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt&lt;/a&gt;&lt;/em&gt; and it is essential to making agent skills practical.&lt;/p&gt;

&lt;p&gt;Get &lt;a href="https://www.packtpub.com/en-us/product/claude-code-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt&lt;/a&gt; (ISBN 978-1-80778-229-0) &lt;a href="https://www.packtpub.com/en-us/product/claude-code-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Packt Publishing&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>tutorial</category>
      <category>agentskills</category>
    </item>
    <item>
      <title>Chapter 2: What Agentic Engineering Actually Means</title>
      <dc:creator>Martin Krause</dc:creator>
      <pubDate>Fri, 16 Oct 2026 10:43:24 +0000</pubDate>
      <link>https://dev.to/martinkr/chapter-2-what-agentic-engineering-actually-means-5gg2</link>
      <guid>https://dev.to/martinkr/chapter-2-what-agentic-engineering-actually-means-5gg2</guid>
      <description>&lt;p&gt;&lt;strong&gt;What does “agentic” actually mean?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When writing &lt;em&gt;&lt;a href="https://www.packtpub.com/en-us/product/claude-code-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt&lt;/a&gt;&lt;/em&gt;, I realized early on that &lt;strong&gt;“agentic”&lt;/strong&gt; has become one of those words that gets used for almost everything. And it is not the only buzzword around AI.&lt;/p&gt;

&lt;p&gt;That becomes a problem once you try to build something.&lt;/p&gt;

&lt;p&gt;I spent more time defining them than I expected, because vague language leads to vague design decisions.&lt;/p&gt;

&lt;p&gt;Chapter 2 gets the vocabulary straight: &lt;strong&gt;model, tool, skill, agent, context, memory,&lt;/strong&gt; and &lt;strong&gt;access&lt;/strong&gt;. It gives you the mental model I use throughout the rest of the book.&lt;/p&gt;

&lt;p&gt;If you want to understand what actually makes a system agentic before you start building one, start here. The same mental model applies well beyond Claude Code.&lt;/p&gt;

&lt;p&gt;Get &lt;a href="https://www.packtpub.com/en-us/product/claude-code-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt&lt;/a&gt; (ISBN 978-1-80778-229-0) &lt;a href="https://www.packtpub.com/en-us/product/claude-code-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Packt Publishing&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>tutorial</category>
      <category>programming</category>
      <category>claude</category>
    </item>
    <item>
      <title>Why Anthropic’s Scion Forces Us to Think "Agent-Native"</title>
      <dc:creator>Martin Krause</dc:creator>
      <pubDate>Thu, 15 Oct 2026 12:13:13 +0000</pubDate>
      <link>https://dev.to/martinkr/anthropics-scion-and-the-case-for-agent-native-development-1jf0</link>
      <guid>https://dev.to/martinkr/anthropics-scion-and-the-case-for-agent-native-development-1jf0</guid>
      <description>&lt;p&gt;&lt;strong&gt;Anthropic has redesigned source control to support AI agents at scale. Most teams won't need to follow its example. But its engineering decisions raise a question every team adopting agents should ask: which of our established development practices still make sense?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Anthropic’s latest disclosures around Scion signal a massive paradigm shift: the transition from prompt engineering to Agent-Native Development.&lt;/p&gt;

&lt;p&gt;As developers and architects, we need to stop treating AI as an external utility function and start treating the agent as the foundational core of our application lifecycle. This means rewriting how we think about state, side effects, and deterministic guardrails.&lt;/p&gt;

&lt;p&gt;In this post, we’ll break down:&lt;br&gt;
• The core architectural limitations of prompt-heavy infrastructure.&lt;br&gt;
• What "Agent-Native" actually looks like in a production codebase.&lt;br&gt;
• How tools like Scion change the way we orchestrate autonomous workflows.&lt;/p&gt;




&lt;p&gt;In February, I published &lt;a href="https://dev.to/martinkr/toward-agent-native-development-3fae"&gt;Toward Agent Native Development&lt;/a&gt;, questioning why we continue to organize AI agents around development workflows designed primarily for human contributors.&lt;/p&gt;

&lt;p&gt;Branches, pull requests, and CI pipelines evolved to help developers work independently, coordinate changes, and maintain quality. They work well for human contributors, but their assumptions may not fit teams of agents producing changes concurrently and at much greater speed.&lt;/p&gt;

&lt;p&gt;Increasing code generation without reconsidering coordination risks moving the bottleneck rather than removing it.&lt;/p&gt;

&lt;p&gt;I proposed three changes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Rethink local branches as the default unit of parallel work:&lt;/strong&gt; Agents could work with shared change sets and explicit dependencies rather than isolated branches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make changes independently observable:&lt;/strong&gt; A change ledger could expose ongoing work through APIs, allowing agents to react to relevant changes without waiting for integration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Move toward continuous verification as default:&lt;/strong&gt; Agents could maintain evidence about the system's changing state, while humans supervise critical decisions.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The principle behind these proposals was simple: development workflows should reflect the needs of their contributors. As agents take on more work, the constraints shaping those workflows begin to change.&lt;/p&gt;

&lt;p&gt;On October 13, Anthropic published &lt;a href="https://www.anthropic.com/engineering/redesigning-source-control" rel="noopener noreferrer"&gt;Redesigning source control at Anthropic&lt;/a&gt;, describing how its engineers encountered several of these problems at scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Anthropic vs Git's assumptions
&lt;/h2&gt;

&lt;p&gt;In their piece, they report that between May and September 2026, Anthropic's daily merged changes increased from approximately 2,500 to more than 30,000. Its monorepo approached 100 GB of main-branch history, while CI performed about 25 million code checkouts daily.&lt;/p&gt;

&lt;p&gt;Git's decentralized design allows developers to work independently, including offline, by maintaining local repository data and history. At Anthropic's scale, replicating and maintaining that data across enormous numbers of clients became expensive. Most of those clients were agents and automated jobs that remained connected, making offline operation far less important.&lt;/p&gt;

&lt;p&gt;Rather than continue optimizing Git, Anthropic questioned why its infrastructure should preserve capabilities its main consumers rarely needed. Instead of adapting the workload to an established tool, they reconsidered the tool around the workload.&lt;/p&gt;

&lt;p&gt;As a result, they built Scion, a centralized source control system. Changesets are stored in a write-ahead log, become immediately available, and can be accessed through APIs without requiring complete local repositories, branches, and most other refs.&lt;/p&gt;

&lt;p&gt;Scion shares several characteristics with the change ledger I proposed in February. Both treat changesets as first-class objects, make changes accessible through APIs, and reduce dependence on branch-based isolation.&lt;/p&gt;

&lt;p&gt;Anthropic also questions conventional merge queues and CI pipelines. When hundreds of changes land while tests are running, pre-merge verification becomes difficult to maintain. Its engineers have invested in post-merge and pre-deployment testing instead.&lt;/p&gt;

&lt;p&gt;This echoes my proposal for verification that follows the system's changing state, although the objectives differ. Scion addresses how changes are stored and integrated at scale. My proposal focused on how agents coordinate related work and maintain evidence about its correctness.&lt;/p&gt;

&lt;p&gt;There is a broader distinction here. Using agents to produce code faster is not the same as designing a development environment around agents. The former increases the capacity of individual contributors. The latter questions how work is coordinated, integrated, and verified when those contributors are no longer primarily human.&lt;/p&gt;

&lt;p&gt;Scion doesn't make established practices obsolete. It shows why their usefulness depends on the constraints under which they operate. Those constraints differ between teams, and they change as agentic development scales.&lt;/p&gt;

&lt;h2&gt;
  
  
  Engineering leadership matters more than ever
&lt;/h2&gt;

&lt;p&gt;A small team using occasional coding agents may find conventional pull requests entirely adequate. Teams requiring offline development may deliberately retain Git's decentralized architecture. But a workflow that serves two agents may become unsuitable when dozens work concurrently on the same codebase.&lt;/p&gt;

&lt;p&gt;At the other end of the spectrum are dark software factories, where agents perform most of the implementation work and human engineers increasingly supervise the system rather than individual changes.&lt;/p&gt;

&lt;p&gt;These environments place different demands on coordination, verification, and engineering leadership. As agents take on more implementation work, engineering leadership increasingly depends on understanding the constraints under which that work happens.&lt;/p&gt;

&lt;p&gt;The decisions extend beyond selecting coding tools. They concern how agents share context, coordinate changes, establish correctness, and operate within human-defined boundaries.&lt;/p&gt;

&lt;p&gt;While Claude contributed heavily to building Scion, Anthropic's engineers were responsible for its architecture, system constraints, and tradeoffs. Sometimes their most valuable contribution was rejecting an implementation that satisfied the immediate task but violated a broader requirement. They designed and actively steered toward an agent-native development environment, building on and questioning established practices at the same time.&lt;/p&gt;

&lt;p&gt;Agentic development doesn't automatically make established practices obsolete. It makes understanding their purpose more important. Some teams will retain Git, branches, and conventional reviews. Others will redesign parts of their workflows as their constraints change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We may keep the tools we have or replace them. What matters is that we understand why.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article follows &lt;a href="https://dev.to/martinkr/toward-agent-native-development-3fae"&gt;Toward Agent Native Development&lt;/a&gt; (February 2026) and discusses Anthropic's &lt;a href="https://www.anthropic.com/engineering/redesigning-source-control" rel="noopener noreferrer"&gt;Redesigning source control at Anthropic&lt;/a&gt; (October 2026).&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  ai #softwareengineering #engineeringmanagement #agents
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>tooling</category>
      <category>leadership</category>
    </item>
    <item>
      <title>Chapter 1: From Prompts to Skills</title>
      <dc:creator>Martin Krause</dc:creator>
      <pubDate>Wed, 14 Oct 2026 15:49:07 +0000</pubDate>
      <link>https://dev.to/martinkr/chapter-1-from-prompts-to-skills-48ci</link>
      <guid>https://dev.to/martinkr/chapter-1-from-prompts-to-skills-48ci</guid>
      <description>&lt;p&gt;&lt;strong&gt;A good prompt can still be a bad way of working.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That was one of the first things I noticed when I started using ChatGPT regularly. &lt;/p&gt;

&lt;p&gt;Often, I remembered a prompt, but not always exactly. Rebuilding it from memory is a flaky approach. Which context mattered? Which instruction made the answer useful? Had I changed the method when I reconstructed it?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 1 of  &lt;a href="https://www.packtpub.com/en-us/product/claude-code-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt&lt;/a&gt; starts with that problem.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One-off prompting is useful, but repeated work exposes its limits. Context is lost between sessions. Instructions drift. Results vary.&lt;br&gt;
Once I realized that, the next step was obvious: make the method explicit and move it out of my head. &lt;/p&gt;

&lt;p&gt;The chapter traces that move from prompt to pattern, method, and reusable template. Skills, workflows, and agents come later, but they all grow from the same idea.&lt;/p&gt;

&lt;p&gt;So the question behind Chapter 1 is simple:_ When does a useful prompt need to become a reusable method?_&lt;/p&gt;

&lt;h2&gt;
  
  
  If you have a collection of prompts you keep rewriting, this chapter is probably for you.
&lt;/h2&gt;

&lt;p&gt;Get  &lt;a href="https://www.packtpub.com/en-us/product/claude-code-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt&lt;/a&gt; from  &lt;a href="https://www.packtpub.com/" rel="noopener noreferrer"&gt;Packt&lt;/a&gt; (ISBN 978-1-80778-229-0)!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>writing</category>
      <category>claude</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Claude Code Beyond the Prompt (Announcement)</title>
      <dc:creator>Martin Krause</dc:creator>
      <pubDate>Wed, 14 Oct 2026 15:24:23 +0000</pubDate>
      <link>https://dev.to/martinkr/claude-code-beyond-the-prompt-announcement-1gjh</link>
      <guid>https://dev.to/martinkr/claude-code-beyond-the-prompt-announcement-1gjh</guid>
      <description>&lt;p&gt;&lt;strong&gt;I’m entering the final stretch on my second book, &lt;a href="https://www.packtpub.com/en-us/product/claude-code-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Over the next few weeks, I’ll share the ideas that are the foundation of agentic engineering and that are covered in the 14 Chapters of &lt;a href="https://www.packtpub.com/en-us/product/claude-code-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;When I wrote my first book, &lt;a href="https://nostarch.com/complete-developer" rel="noopener noreferrer"&gt;The Complete Developer&lt;/a&gt; &lt;a href="https://nostarch.com" rel="noopener noreferrer"&gt;No Starch Press&lt;/a&gt;, I wanted to explain how the parts of modern web development fit together. Because knowing one aspect in isolation is never enough.&lt;/p&gt;

&lt;p&gt;When &lt;a href="//packtpub.com"&gt;Packt&lt;/a&gt; approached me about writing a book on Claude Code and Agent Skills, I kept running into the same problem: &lt;em&gt;Knowing how to write a good prompt is genuinely useful. But it is not enough.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A good prompt can solve the problem in front of you. But what happens when the same kind of work comes up again tomorrow? What happens when another developer needs to follow the same method? Or when Claude needs to inspect a repository, run tests, read logs, use tools, or retrieve information from another system? At that point, the prompt is still important, but it is only one part of the work. &lt;/p&gt;

&lt;p&gt;That became the subject of &lt;a href="https://www.packtpub.com/en-us/product/claude-code-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt&lt;/a&gt;. The book starts with simple, one-off prompts and gradually builds from there: reusable skills, workflows, agents, tools, connected systems, and finally a small AI workbench. &lt;/p&gt;

&lt;p&gt;If you’re trying to move from useful AI experiments to repeatable engineering practice, this book is for you.&lt;/p&gt;




&lt;p&gt;Pre-Order Claude Code Beyond the Prompt (ISBN 978-1-80778-229-0) at &lt;a href="https://www.packtpub.com/en-us/product/claude-code-beyond-the-prompt-9781807782290" rel="noopener noreferrer"&gt;Claude Code Beyond the Prompt&lt;/a&gt; or &lt;a href="https://www.amazon.com/Claude-Beyond-Prompt-reusable-workflows/dp/1807782298" rel="noopener noreferrer"&gt;Amazon&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>writing</category>
      <category>claude</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Toward Agent Native Development  </title>
      <dc:creator>Martin Krause</dc:creator>
      <pubDate>Thu, 05 Feb 2026 18:35:47 +0000</pubDate>
      <link>https://dev.to/martinkr/toward-agent-native-development-3fae</link>
      <guid>https://dev.to/martinkr/toward-agent-native-development-3fae</guid>
      <description>&lt;p&gt;&lt;em&gt;Agents change the physics of development. They can watch, adapt, and coordinate continuously, yet we force them into branch-centric workflows built around the limitations of human developers. How can we move toward an Agent-Native development workflow? What if we stopped treating branches as the default unit of parallel work and started treating change sets, contracts, and live verification as the unit of collaboration?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rather than adapting AI agents to human-centric workflows, we should redesign software development with agents as primary users.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Update: Follow up at &lt;a href="https://dev.to/martinkr/anthropics-scion-and-the-case-for-agent-native-development-1jf0"&gt;Anthropic's Scion and the Case for Agent-Native Development&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The workflow we inherited
&lt;/h2&gt;

&lt;p&gt;Software development has always been shaped by human constraints. Processes are built around limited attention spans, the human brain's capacity, and developers’ uneven skill levels. Then there’s the common tale passed down through generations of engineers: if two engineers edit the same file at the same time, they will, sooner or later, collide.  After the dark ages of locked files and isolated copies, Git branches emerged as a pragmatic compromise. We isolate work, reduce interference, and then merge it all together.&lt;/p&gt;

&lt;p&gt;Not because it is the optimal solution, but it is merely the best compromise, a coping mechanism for the cognitive limits of humans.&lt;/p&gt;

&lt;h2&gt;
  
  
  The new contributor we pretend is a faster human.
&lt;/h2&gt;

&lt;p&gt;Now, we’re adding a new type of contributor type to the team. AI agents that don’t have the same limits as human team members.  They can write code, refactor modules, generate tests, and keep documentation in sync, all at a speed that makes human developers feel extremely slow.&lt;/p&gt;

&lt;p&gt;Industry narratives frame this as replacement: agents will replace developers. So we plug them into the same assembly line, expecting increased output. Predictably, we take a workflow built for humans and turn the dial up to eleven.&lt;/p&gt;

&lt;p&gt;Soon, pull requests pile up on the human developers' to-do list. Reviews stop being about quality and become quick triage decisions. Under pressure, humans approve quickly out of 'pragmatism' or delegate reviews to agents and call it 'at scale'. Just to preserve familiar processes rather than question whether they still make sense.  Not long, and both approaches will be promoted as best practices. &lt;/p&gt;

&lt;p&gt;However, this shift leads to downstream consequences. Quality metrics suffer as bugs slip through unchecked and technical debt accumulates, eroding overall code stability and undermining the agent’s contribution. &lt;/p&gt;

&lt;p&gt;Human morale declines when developers feel their contributions are reduced to a mechanical process devoid of craftsmanship and creativity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the friction concentrates
&lt;/h2&gt;

&lt;p&gt;Let’s take a step back. Much of the frustration in modern development workflows comes from branch isolation. Branches help, but they also create separate timelines in which assumptions change, context is lost, and the real impact only becomes apparent when we merge everything back together.&lt;/p&gt;

&lt;p&gt;When you look at what slows teams down, the pattern is clear. Duplicate work occurs when two people fix the same problem without knowing about each other’s progress. Isolated changes can seem fine and pass tests, but fail when combined. New features that work independently might break after merging because parts don’t fit. The more complex the codebase, the more complex the PR reviews. The longer a branch exists, the more likely it is to cause merge conflicts and the less likely it is to be thoroughly reviewed. &lt;/p&gt;

&lt;p&gt;Even our tools are a confession that we accept this as normal. We invent rituals, write more tickets to keep changes small and the scope narrow, push for immediate PR reviews, and have CI pipelines to prove that merges were safe and that the code still works. We introduce naming conventions, stricter PR templates, more checks and branch rules, stronger definitions of done, appoint sheriffs, add rules against opportunistic refactoring, and hold more meetings to align on changes. While many of these practices are useful, they still rest on the assumption that parallel work requires isolation, because human attention is the bottleneck and integration is a separate phase. &lt;/p&gt;

&lt;p&gt;This attachment to our rituals reflects our identity within a human-centric development culture, pointing to the broader challenge of embracing the necessary cultural shift toward a mindset in which process and mindset are inseparable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agents change the physics of development
&lt;/h2&gt;

&lt;p&gt;Human developers compromised on branches because they need a stable context bubble. They can’t keep the entire system in mind. They can’t constantly adapt to new contexts. They require uninterrupted time to think, concentrate, to reach “the flow”. Branching is a cognitive prosthetic to solve one problem at a time.&lt;/p&gt;

&lt;p&gt;Agents do not have those limitations; they can adapt to changes instantly and are not interrupted. Not long, and they can work with nearly unlimited context, watch files, rerun suites, and update approaches immediately as context changes. Agents retrieve details on demand and coordinate at a pace humans can’t match. One agent may own tests, another may focus on implementation, a third may handle documentation, and another may manage performance.&lt;/p&gt;

&lt;p&gt;And yet we treat agents like humans who type a bit faster and don’t rest. We use the same process: hand them tickets, send them to work in isolation, and wait until they return with pull requests ready for human review. We funnel everything through the same integration bottleneck. We scale output without scaling the coordination model.&lt;/p&gt;

&lt;p&gt;This is where a branch-centric workflow falls short. If your team has many contributors who can act continuously, isolation is not the only way to work in parallel. Isolation keeps changes hidden until the pull request is merged, so other agents can't adapt to or use new code until it’s merged. Humans solve this through communication, daily standups, and async updates. &lt;/p&gt;

&lt;p&gt;But how does this work when much of the team is software? What does alignment look like for agentic AI?&lt;/p&gt;

&lt;h2&gt;
  
  
  Do agents dream of electric sheep?
&lt;/h2&gt;

&lt;p&gt;One obvious approach is to assign a 'coordinator' or 'orchestrator' agent that mimics the role of a human lead developer or project manager. We are seeing workflows built on existing version control systems increasingly emphasize change sets over branches.&lt;/p&gt;

&lt;p&gt;Both models (and there are a few more) are still centered on human cadence. Humans supervise, Humans review, humans approve, humans merge - because the human mind is limited in its capabilities and human developers have different skill levels. &lt;/p&gt;

&lt;p&gt;The harder question isn’t about new tools. It’s whether we’re ready to let go of the workflows and habits that have shaped software development for decades. This questions the deep-rooted mindset associated with human cadence, underscored by an ingrained belief that human supervision is essential at every step. &amp;nbsp;&lt;/p&gt;

&lt;h2&gt;
  
  
  How can we achieve unparalleled parallelism?
&lt;/h2&gt;

&lt;p&gt;This mindset shift is simple to say and hard to implement. We should move away from treating branches as the default unit of parallel work. Instead, parallel work should be seen as collaboration, with changes, contracts, and live verification as the unit of collaboration.&lt;/p&gt;

&lt;p&gt;Future workflows should focus on evolving change sets within a single review thread, enabling a truly continuous process. We should also consider APIs for change sets to facilitate agent communication within the same codebase.&lt;/p&gt;

&lt;p&gt;In this agent-oriented workflow, the codebase remains shared. Each contributor’s changes are tracked as first-class objects with clear ownership, traceability, and interfaces to ensure visibility and responsiveness. Instead of separate branches, imagine a continuous stream of proposed changes that are combined, tested, and accepted in real time.&lt;/p&gt;

&lt;p&gt;Now imagine a 'change ledger' that lets each agent track its own change sets. This ledger would expose an API that other agents can use to verify changes and receive real-time updates. Agents could subscribe to changes they need and use them as soon as they are stable. Humans could also see what’s happening and what’s stable in real time. At any given time, the workflow and codebase are transparent, the system is easy to observe, and progress is visible in real time.&lt;/p&gt;

&lt;h2&gt;
  
  
  What becomes possible when work is visible
&lt;/h2&gt;

&lt;p&gt;A traditional branch-centric workflow is like a series of cascading waterfalls, each branch representing an isolated stream. Work progresses independently through various channels, only to merge at the end, often resulting in sudden turbulence and inefficiencies. In contrast, imagine a live mesh, a flexible, interconnected network where changes flow freely and dynamically adapt to one another in real time. A mesh-like coordination that allows for seamless integration and continuous collaboration.&lt;/p&gt;

&lt;p&gt;Agents can act as watchers, not just workers. If one agent owns the API contract and another handles implementation, the implementation agent can adjust as soon as the change is stable. A third agent building a consumer can do the same. Coordination is no longer the bottleneck; now it happens in real time through clear interfaces.&lt;br&gt;
The mental model of code quality and code testing could shift from a binary gate to a live dashboard that monitors the entire application. &lt;/p&gt;

&lt;p&gt;In an agent-first model, stakeholders could see which system components are functioning, which tests are failing, who is responsible, and what actions are underway in real time. Not only after they ran all test suites in a separate step once a feature's development is done.&lt;/p&gt;

&lt;p&gt;Humans no longer need to review every change to assess product health; they can monitor signals, review contracts, and focus on critical behaviors. When issues arise, agents can be deployed immediately to address problems and facilitate real-time recovery.&lt;br&gt;
As a result, the perception of collaboration changes. Instead of treating isolation as the default, we can design for structured concurrency, real super-charged parallel engineering. One agent produces a change set. Another checks it for consistency. A third expands test coverage. A fourth looks for performance regressions. If all happens at the same time, integration is no longer a conflict between timelines. Then, it is a shared view of the same change and the evidence that it works in a running application.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Future of Dev Workflows Is Not a Better Branch Strategy
&lt;/h2&gt;

&lt;p&gt;Our workflows always mirror the capabilities of our contributors. As software development teams evolve, our workflows and models must adapt as well.&lt;/p&gt;

&lt;p&gt;We stand at a critical juncture in the evolution of software development. We can keep evolving branch management and spend the next decade fighting the same problems at a higher velocity. Or we can step back and ask what it would mean to design development around shared reality, explicit contracts, live verification, and traceable change ownership. &lt;br&gt;
With agents as part of the team, we redefine what it means to collaborate. The team is no longer constrained by the same parameters that shaped our previous processes. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I don't have a ready-made solution, a tool to sell, or a workflow to promote, but it’s time to talk about what a true agentic workflow could be. I’d love to hear your ideas and thoughts: let’s figure this out together.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>development</category>
      <category>discuss</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Next.js: Internationalisation (i18n) for the `app directory`</title>
      <dc:creator>Martin Krause</dc:creator>
      <pubDate>Mon, 15 Jan 2024 15:44:57 +0000</pubDate>
      <link>https://dev.to/martinkr/nextjs-internationalisation-i18n-for-the-app-directory-1o2o</link>
      <guid>https://dev.to/martinkr/nextjs-internationalisation-i18n-for-the-app-directory-1o2o</guid>
      <description>&lt;p&gt;&lt;strong&gt;A while ago, we released &lt;code&gt;version 3.0.0&lt;/code&gt; of &lt;code&gt;next-export-i18n&lt;/code&gt;, the &lt;em&gt;most popular&lt;/em&gt; i18n module for Next.js, which is &lt;em&gt;fully compatible with next export&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Version 3.0.0&lt;/code&gt; fully supports the &lt;code&gt;app directory&lt;/code&gt; and comes with the highly sought-after feature of storing the selected language in &lt;code&gt;localStorage&lt;/code&gt; instead of the &lt;code&gt;search parameter&lt;/code&gt; on the URL.&lt;/p&gt;

&lt;h2&gt;
  
  
  The case for next-export-i18n
&lt;/h2&gt;

&lt;p&gt;Since &lt;code&gt;v10.0.0&lt;/code&gt; Next.js has an out-of-the-box support for internationalised (i18n) routing and it streamlines the touring and locale parsing for nearly all existing l18n library solutions available for Next.js, for example, &lt;code&gt;react-intl&lt;/code&gt;, &lt;code&gt;react-i18next&lt;/code&gt;, &lt;code&gt;lingua&lt;/code&gt;, &lt;code&gt;rosetta&lt;/code&gt;, &lt;code&gt;next-intl&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Those are amazing libraries, but unfortunately, &lt;code&gt;next.js' i18n-routing&lt;/code&gt; does not support statically exported pages that you create with &lt;code&gt;next export&lt;/code&gt; or the &lt;code&gt;config: export&lt;/code&gt; property.&lt;/p&gt;

&lt;p&gt;With &lt;code&gt;next-export-i18n&lt;/code&gt;, you can easily add internationalisation (i18n) to your h actual static exported pages by operating exclusively on the client side. &lt;/p&gt;

&lt;h2&gt;
  
  
  For the &lt;code&gt;page router&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;In case you're using the &lt;code&gt;page router&lt;/code&gt; please use &lt;code&gt;version 2.x&lt;/code&gt; of &lt;code&gt;next-export-i18n&lt;/code&gt; with &lt;code&gt;npm install --save-dev next-export-i18n@^2&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Migrating your code
&lt;/h2&gt;

&lt;p&gt;In case you're migrating from the &lt;code&gt;page router&lt;/code&gt; to the &lt;code&gt;app directory&lt;/code&gt;, please look at the &lt;a href="https://github.com/martinkr/next-export-i18n/blob/main/migration-guide.md"&gt;2.x to 3.x Migration guide&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>i18n</category>
      <category>webdev</category>
      <category>react</category>
    </item>
    <item>
      <title>next-export-i18n v2.3.5: localStorage and an internal link component</title>
      <dc:creator>Martin Krause</dc:creator>
      <pubDate>Tue, 12 Dec 2023 16:29:08 +0000</pubDate>
      <link>https://dev.to/martinkr/next-export-i18n-v235-localstorage-and-an-internal-link-component-2lm5</link>
      <guid>https://dev.to/martinkr/next-export-i18n-v235-localstorage-and-an-internal-link-component-2lm5</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Announcement: &lt;a href="https://github.com/martinkr/next-export-i18n/blob/main/README.md"&gt;next-export-i18n v2.3.5&lt;/a&gt; &lt;code&gt;3.x.x&lt;/code&gt; with support for Next.js' &lt;code&gt;app&lt;/code&gt; directory is available at &lt;a href="https://www.npmjs.com/package/next-export-i18n/v/3.0.0"&gt;npm&lt;/a&gt;!&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.npmjs.com/package/next-export-i18n/v/3.0.0"&gt;Version &lt;code&gt;3.x.x&lt;/code&gt;&lt;/a&gt; exclusively supports Next.js' &lt;code&gt;app&lt;/code&gt; directory architecture. The &lt;a href="https://www.npmjs.com/package/next-export-i18n/v/2.3.5"&gt;&lt;code&gt;2.x.x&lt;/code&gt; branch&lt;/a&gt; continues to support the &lt;code&gt;page&lt;/code&gt; directory, please.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://github.com/martinkr/next-export-i18n/blob/main/README.md"&gt;next-export-i18n v2.3.5&lt;/a&gt;: localStorage and an internal link component&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Today, we released &lt;a href="https://github.com/martinkr/next-export-i18n/blob/main/README.md"&gt;version 2.3.5&lt;/a&gt; of &lt;code&gt;next-export-i18n&lt;/code&gt;, the most popular i18n module for Next.js, which is fully compatible with &lt;code&gt;next export&lt;/code&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The new version has two main additions: &lt;strong&gt;local storage support&lt;/strong&gt; and a new &lt;strong&gt;internal link component&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The default method to store the selected language is the search parameter, &lt;code&gt;next-export-i18n&lt;/code&gt;, which adds the language to the URL as &lt;code&gt;?lang=&lt;/code&gt;. With Version 2.3.5, you can set the configuration option &lt;code&gt;languageDataStore&lt;/code&gt; to either &lt;code&gt;query&lt;/code&gt; or &lt;code&gt;localStorage&lt;/code&gt;. The latter changes the behaviour, instead using the browser's local storage to keep your URLs cleaner.&lt;/p&gt;

&lt;p&gt;When using &lt;code&gt;next-export-i18n&lt;/code&gt; with the default &lt;code&gt;query&lt;/code&gt; store, it is vital to remember that all internal links require the language parameter. Otherwise, the exported application falls back to the default language. We've added a custom component to simplify that. &lt;/p&gt;

&lt;p&gt;Using the new &lt;code&gt;&amp;lt;LinkWithLocale&amp;gt;&lt;/code&gt; component, you no longer need to add the query manually. Previously, your code would have looked similar to this listing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;useLanguageQuery&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;next-export-i18n&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Page&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useLanguageQuery&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Link&lt;/span&gt; &lt;span class="nx"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="na"&gt;pathname&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;path&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;query&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nx"&gt;Link&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Link&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can use the failsafe, streamlined new component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;LinkWithLocale&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;next-export-i18n&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Page&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;LinkWithLocale&lt;/span&gt; &lt;span class="nx"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;path&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nx"&gt;Link&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Link&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Install &lt;code&gt;next-export-i18n&lt;/code&gt; with &lt;code&gt;$ npm i next-export-i18n&lt;/code&gt; or get &lt;a href="https://www.npmjs.com/package/next-export-i18n"&gt;&lt;code&gt;next-export-i18n v2.3.5&lt;/code&gt;&lt;/a&gt; from npm.js.&lt;/p&gt;




&lt;h2&gt;
  
  
  About &lt;code&gt;next-export-i18n&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;This npm module provides a simple solution for the Internationalization (i18n) of projects using &lt;code&gt;next export&lt;/code&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next.js already has support for internationalized (i18n) routing out-of-the-box. You can provide a list of default and domain-specific locales, and Next.js  automatically handles the routing. It streamlines the touring and locale parsing for nearly all existing l18n library solutions available for Next.js, such as &lt;code&gt;react-intl&lt;/code&gt;, &lt;code&gt;react-i18next&lt;/code&gt;, &lt;code&gt;lingui&lt;/code&gt;, &lt;code&gt;rosetta&lt;/code&gt;, &lt;code&gt;next-intl&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Unfortunately, &lt;a href="https://nextjs.org/docs/advanced-features/i18n-routing"&gt;&lt;code&gt;Next.js&lt;/code&gt; i18n-routing&lt;/a&gt; does not support &lt;code&gt;next export&lt;/code&gt;.&lt;br&gt;
This means that &lt;em&gt;none&lt;/em&gt; of the i18n-libraries (utilising the built-in i18n-routing) can support fully static sites generated with &lt;code&gt;next export&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;next-export-i18n&lt;/code&gt; provides a simple solution for Internationalization (i18n) when you want to generate a genuinely static website with &lt;code&gt;next export&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Read the &lt;a href="https://dev.to/martinkr/next-js-i18n-with-static-sites-2644"&gt;Introduction to &lt;code&gt;next-export-i18n&lt;/code&gt; - next.js: i18n with static sites&lt;/a&gt; for more details.&lt;/p&gt;




&lt;h3&gt;
  
  
  Sample implementation
&lt;/h3&gt;

&lt;p&gt;You can also take a look at the example implementation &lt;a href="https://next-export-i18n-example.vercel.app"&gt;next-export-i18n-example.vercel.app&lt;/a&gt; and its source code at &lt;a href="https://github.com/martinkr/next-export-i18n-example"&gt;github: &lt;code&gt;https://github.com/martinkr/next-export-i18n-example&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/next-export-i18n"&gt;&lt;code&gt;next-export-i18n&lt;/code&gt; npm module&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/martinkr/next-js-i18n-with-static-sites-2644"&gt;next.js: i18n with static sites (Introduction)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Example implementation: &lt;a href="https://next-export-i18n-example.vercel.app"&gt;https://next-export-i18n-example.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub for the npm module: &lt;a href="https://github.com/martinkr/next-export-i18n"&gt;https://github.com/martinkr/next-export-i18n&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub for the example: &lt;a href="https://github.com/martinkr/next-export-i18n-example"&gt;https://github.com/martinkr/next-export-i18n-example&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Follow me on &lt;a href="http://twitter.com/_martinkr"&gt;Twitter: @martinkr&lt;/a&gt; and consider to &lt;a href="https://www.buymeacoffee.com/martinkr"&gt;buy me a coffee&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@z734923105?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Jerry Zhang&lt;/a&gt; on &lt;a href="https://unsplash.com/?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;




</description>
      <category>javascript</category>
      <category>nextjs</category>
      <category>react</category>
      <category>i18</category>
    </item>
  </channel>
</rss>
