{"id":19559,"date":"2026-10-27T11:49:42","date_gmt":"2026-10-27T08:49:42","guid":{"rendered":"https:\/\/railsware.com\/blog\/?p=19559"},"modified":"2026-10-27T11:49:43","modified_gmt":"2026-10-27T08:49:43","slug":"how-to-ai-handling-routine-engineering-tasks-with-claude","status":"publish","type":"post","link":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/","title":{"rendered":"How to AI: handling routine engineering tasks with Claude"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Let\u2019s address the elephant in the room first. For the past year or two, the industry has been throwing around 10x, 100x, sometimes even 1000x productivity claims for AI-assisted coding. Expectations are sky-high.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But if you\u2019re working on a large, legacy-heavy codebase, tools like Claude Code probably won\u2019t make you 10x more productive in the majority of your work. (And if they do for you, please share your tips and we will all listen carefully.)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What they can do (as of autumn 2026)&nbsp; is save a meaningful amount of time when you build the right scaffolding around them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this article, I\u2019ll break down what that looks like in practice:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>which routine engineering tasks are actually worth handing to Claude;<\/li>\n\n\n\n<li>how hooks, permissions, and deny rules can keep an AI agent inside the lines;<\/li>\n\n\n\n<li>how to structure the workflow so Claude can move quickly without turning every task into a code-review adventure;<\/li>\n\n\n\n<li>where it still needs supervision (and where trusting it too much gets expensive);<\/li>\n\n\n\n<li>and what kind of productivity gains are realistic when you\u2019re working with an existing production codebase.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s no silver bullet and no rocket science involved. Mostly, it comes down to making the plumbing work.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So, let\u2019s talk plumbing.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"538\" src=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/handling-routine_image-1024x538.png\" alt=\"\" class=\"wp-image-19562\" srcset=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/handling-routine_image-1024x538.png 1024w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/handling-routine_image-360x189.png 360w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/handling-routine_image-768x403.png 768w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/handling-routine_image-1536x806.png 1536w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/handling-routine_image-2048x1075.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">How do I tailor Claude Code to the task?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">After experimenting with different ways of working with Claude, I\u2019ve found that the setup matters almost as much as the model itself. So, here is my short list of favourite Claude Code tools.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here are the skills, I use most often:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create PR<\/li>\n\n\n\n<li>Fix flaky tests<\/li>\n\n\n\n<li><a href=\"https:\/\/drive.google.com\/file\/d\/1Tf_Ggt21DSpMYxuprdaSR-Y2HZSW-Ep1\/view?usp=drive_link\" target=\"_blank\" rel=\"noopener\">Collect feedback<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">I also like giving Claude different roles depending on what I&#8217;m trying to accomplish. My most useful ones are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Backend developer<\/li>\n\n\n\n<li>Frontend developer<\/li>\n\n\n\n<li><a href=\"https:\/\/drive.google.com\/file\/d\/1Cp2GA_AAg_trT8NMVkj0ELtk-MP1kH8l\/view?usp=drive_link\" target=\"_blank\" rel=\"noopener\">QA<\/a><\/li>\n\n\n\n<li>Product manager<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The final piece is giving Claude access to the tools where the work lives. My favourites are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GitHub: create PR, review, fix CI, check status. This is the loop I&#8217;m in constantly, so having it native saves the most context-switching.<\/li>\n\n\n\n<li>Figma:\u00a0 pulls designs directly into frontend work, so &#8220;does this match the mock&#8221; stops being a manual check.<\/li>\n\n\n\n<li>Linear: create tasks or subtasks, read or generate descriptions. Keeps the agents&#8217; output tied back to actual tracked work instead of living only in chat.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">What are the three tools that actually earn a place in your daily routine?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you use the Claude desktop app rather than the terminal, you can switch into Claude Code directly from the app and get the same settings and file structure I\u2019m talking about below. You can also ask Claude to create an agent, skill, or hook for you, and it\u2019ll put it in the right folder.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After months of trying different setups, these are the top ones that earned a permanent place in my workflow.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Hooks<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hooks are scripts that run when something specific happens in Claude\u2019s lifecycle. There are quite a <a href=\"https:\/\/code.claude.com\/docs\/en\/hooks\" target=\"_blank\" rel=\"noopener\">few points you can hook into<\/a>, but the one I get quite a lot of value from is session stop.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I use it to automatically trigger a skill I call Debrief.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The idea came from a very human problem: I would finish a session, realise that Claude had made the same kind of mistake twice, think <em>\u201cI should probably teach it not to do that again\u201d<\/em>, and then\u2026 not teach it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So I stopped relying on myself to remember.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When a session ends, Debrief collects the useful feedback and turns it into updates to my skills and agents. Claude does have its own memory, but I\u2019ve found that explicitly writing a lesson into the relevant skill works much better for the things I want it to consistently remember.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The result is pretty simple: <strong>I don\u2019t have to give Claude the same correction twice.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I also use hooks for less exciting things, like setting up the boring bits of a new session \u2014 copying git ignored files when a worktree starts and other project housekeeping. Nothing revolutionary, but exactly the kind of tiny task I\u2019d rather never think about again.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Claude Agents View<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I spend a lot of time in the terminal, so Claude Agents View quickly became one of those things without which I can&#8217;t imagine work with Claude.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"478\" src=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-2-1024x478.png\" alt=\"\" class=\"wp-image-19566\" style=\"aspect-ratio:2.1443298969072164;width:828px;height:auto\" title=\"claude agents view.png\" srcset=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-2-1024x478.png 1024w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-2-360x168.png 360w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-2-768x358.png 768w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-2-1536x716.png 1536w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-2.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">It gives me a live overview of my Claude sessions: what\u2019s running, what\u2019s finished, what needs my attention and what\u2019s ready for review. I can rename and colour-code sessions, which sounds unnecessarily decorative until you have several of them running and they\u2019re all called variation of &#8220;hot fix users form&#8221;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It basically gives the terminal some of the situational awareness I like about the desktop app, while letting me keep all the terminal privileges.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I also like staying close to the terminal because new Claude Code features tend to show up there first.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Or, maybe I&#8217;m just someone who loves strange things like the shell and the command line, but I think many of you can relate to it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Review with OpenAI ( Codex)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Yes, I ask another model to look at the work, and it is not another Claude model.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I\u2019ll let Claude write the code, then occasionally give it to Codex for a review. I don\u2019t do this for every task (partly because there\u2019s no OpenAI subscription on the project). So, it\u2019s an occasional second pass rather than a permanent part of the workflow. But when I do it, I find it useful precisely because it\u2019s a different model.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"368\" src=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-1024x368.png\" alt=\"\" class=\"wp-image-19560\" style=\"aspect-ratio:2.7857142857142856\" title=\"codex.png\" srcset=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-1024x368.png 1024w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-360x129.png 360w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-766x275.png 766w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-1536x551.png 1536w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">By this point, Claude has already spent the session building a particular solution. I could ask another Claude session, without any context, to challenge it, but I find that bringing in a completely different model family, like OpenAI, often gives me a much more useful second perspective.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I could automate the whole thing with something like <a href=\"https:\/\/github.com\/umputun\/ralphex\" target=\"_blank\" rel=\"noopener\">ralphex<\/a>, although there\u2019s a catch: it burns through tokens pretty quickly. Or with the new Orca, an ADE (Agent Development Environment) that lets you use many agents at once. Pretty convenient, right?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Most of the time, I just do it manually. Claude on one side, Codex on the other, copy the review across, make the changes, and briefly feel like I\u2019ve built an extremely sophisticated multi-agent engineering system.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then I remember I\u2019m just copy-pasting between two windows.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And honestly, that works too.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Security: &#8220;ignore all previous instructions&#8221; is funny until it isn&#8217;t<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s a moment with AI coding agents when the joke stops being theoretical. You realise that the thing you\u2019ve just given access to can read your files, run commands, touch your database, push code, and, if you haven\u2019t thought about the boundaries carefully enough, do things you absolutely did not mean to ask it to do.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The good news is that prompts work surprisingly well. Most of the time, they do exactly what you asked.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The bad news is that \u201cworks most of the time\u201d is a terrible definition of a security boundary.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So I think about security in layers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Isolation is the bigger lever\u00a0<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This is the boundary I\u2019d trust most. Instead of giving Claude access to your everyday development environment, run it somewhere isolated \u2014 a VM or container, where a bad command has a much smaller blast radius.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The important question becomes less \u201cCan Claude be trusted not to do something dangerous?\u201d and more \u201cWhat can Claude actually reach if it does?\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That distinction matters. Even if the agent makes a mistake or follows an instruction it shouldn\u2019t, the damage is contained to the environment you gave it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Add deny rules in settings.json<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">There are still a few things I don&#8217;t want Claude casually attempting, so I add deny rules for them in settings.json. My short list includes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>No force-pushing to Git \u2014 nobody wants to discover that an AI agent quietly rewrote a coworker\u2019s branch.<\/li>\n\n\n\n<li>No deleting folders or branches.<\/li>\n\n\n\n<li>No reading environment variables.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">One important correction here: deny rules are not a reliable security boundary on their own. Think of them as another layer of defence: they can prevent straightforward mistakes and make the safer path the default, even if a determined or sufficiently creative workaround exists.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The combination is what matters: isolate the environment first, then use deny rules to narrow what the agent should normally be able to do.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Add deny rules into auto mode too<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Then there are the rules I want Claude to follow but don&#8217;t necessarily need to enforce structurally. Things like \u201cdon&#8217;t send credentials outside this machine\u201d or \u201cask before doing anything that could affect production.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Every one of these rules <em>can<\/em> be worked around (force-push with a different syntax, for instance), but the logic holds: a rule that stops most accidents is worth having even if a determined bypass exists.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Two habits that aren&#8217;t AI-specific but matter more now than ever:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Back up your Claude files, not just your repo.\u00a0<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Skills, agent configs, generated docs \u2014 most of this often lives in gitignored territory, which is exactly the kind of thing you don&#8217;t think about until it&#8217;s gone. A colleague&#8217;s laptop died and took a real chunk of accumulated Claude context with it. A separate repo for this costs nothing.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Give AI its own API keys, on their own budget.\u00a0<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If a project uses OpenAI both in a live feature and for AI-driven testing, don&#8217;t let those share billing. A separate project\/key for the AI&#8217;s own testing traffic means a runaway test loop shows up as a small line item, not a surprise invoice.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What I have tried and quietly dropped<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-1-1024x683.png\" alt=\"\" class=\"wp-image-19564\" style=\"aspect-ratio:1.5;width:802px;height:auto\" srcset=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-1-1024x683.png 1024w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-1-360x240.png 360w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-1-767x511.png 767w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-1-1536x1024.png 1536w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-1.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The honest conclusion, almost verbatim from the talk: it&#8217;s a balance between effort and security, and everyone finds their own level. There&#8217;s a literal &#8220;skip all permissions, dangerously&#8221; flag available. Not using it. Your risk appetite may differ.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Backlog: How the work actually flows now<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The default day-to-day loop hasn&#8217;t really changed: plan \u2192 review the plan with Claude \u2192 implement \u2192 review the result \u2192 capture feedback \u2192 repeat.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s the everyday rhythm. Layered on top, four patterns \u2014 the first three proven, the fourth still experimental:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1. Cover with tests before refactoring using AI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Not a novel idea, but it compounds: the team is mid-migration off jQuery (some jQuery, and yes, even a little CoffeeScript, is still hanging around, unapologetically). Where test coverage is solid, review gets lighter, and work moves faster. The safety net is already doing the job a careful human reviewer would otherwise have to do.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2. Match review depth to blast radius.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In an active redesign of a large multi-page feature, backend changes get full-team review; frontend changes are reviewed only by the person who owns that task. Not every line carries equal risk, so the review process stopped pretending otherwise.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3. Pair planning replaced pair coding.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The team used to pair on writing code line by line. Now that AI does most of the typing, that pairing time moved upstream into building shared context and a genuinely solid implementation plan before Claude ever starts. A real example from right before this talk: a pair-planning session produced the implementation plan Claude was executing live during writing this post. Two people thinking through the plan together noticeably improves where the AI lands.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4. Experimental: an AI agent that lives inside the task tracker. Linear (the team&#8217;s task manager) has no native Claude integration, so they wired one in using an open-source agent framework called Cyrus. The architecture, roughly:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Assign a ticket to Cyrus in Linear \u2192 Linear webhook fires \u2192 hits a Cloudflare Tunnel (functionally the same idea as ngrok \u2014 a public endpoint pointing at something private) \u2192 lands on an isolated machine (in this case, literally a spare laptop) running Cyrus + Claude Code, with its own local repo checkout and its own isolated API keys.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"656\" src=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-3-1024x656.png\" alt=\"\" class=\"wp-image-19568\" style=\"aspect-ratio:1.56;width:823px;height:auto\" srcset=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-3-1024x656.png 1024w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-3-360x230.png 360w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-3-767x491.png 767w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-3-1536x983.png 1536w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/image-3.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In Linear itself, it shows up as a normal assignment: Cyrus assigned, session finished, click into it to see the full history of what it did and correct course if needed. Because the team doesn&#8217;t watch it closely while it runs, it&#8217;s currently scoped to small, contained changes, it does reuse the project&#8217;s existing skills and agents and opens PRs that follow house conventions, but for anything more complex it&#8217;s genuinely hard to verify correctness from the outside. And once you&#8217;re pulling the branch down locally to actually check the work, it stops mattering much whether Cyrus wrote it or you did with your own Claude Code session. So for now: useful for the small stuff, unproven for the big stuff. That might change.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What&#8217;s the easiest way to actually isolate Claude Code without a big DevOps lift?<\/strong><strong><br><\/strong>Docker. Run Claude Code somewhere other than your laptop \u2014 a container is enough \u2014 so a bad command can&#8217;t touch your local filesystem, database, or anything production-adjacent. It&#8217;s a more approachable setup than &#8220;I&#8217;ve never configured Docker&#8221; makes it sound; point Claude at the problem and it will build its own contained environment to work inside.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What other hooks besides debrief that can be used?<\/strong><strong><br><\/strong>There are quite a few points in Claude&#8217;s lifecycle you can hook into. Beyond Debrief, hooks work well for the boring bits of setting up a new session, like copying gitignored files when a worktree starts and other project housekeeping.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What replaced pair programming once AI started doing most of the typing?<br><\/strong>Pair planning. Instead of two people writing code together, planning sessions now build shared context and a solid implementation plan before Claude starts, which measurably improves where the AI ends up, since the plan is what actually steers it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Can an AI agent work autonomously from the task tracker without someone manually kicking off each session?<br><\/strong>Yes, experimentally, one setup assigns tickets to an agent (via Linear&#8217;s webhooks and a framework called Cyrus) which then runs Claude Code on an isolated machine and opens a PR following the project&#8217;s existing conventions. It&#8217;s currently scoped to small, one-line-type changes only, because the team doesn&#8217;t closely supervise it while it runs. For anything more complex, it&#8217;s hard to verify correctness without pulling the branch down and reviewing it locally anyway, at which point it stops mattering much whether the agent or a person wrote it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">So, are we actually faster?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We estimate work in points, and two recent examples give a pretty good sense of what has changed. One was a refactor of a core feature \u2014 extracting document text. The other was a project-wide table rename. Before AI, neither would have felt like particularly small pieces of work. Today, both land at around a couple of points.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So yes, the productivity gain looks real. What we don&#8217;t have yet is a clean number for how much faster we are, because the work itself keeps changing. Once something becomes easier, we start attempting things we might previously have avoided or scoped differently. The ruler moves while you&#8217;re trying to measure it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And that may be the more interesting effect of AI: it doesn&#8217;t just <a href=\"https:\/\/railsware.com\/services\/\" target=\"_blank\" rel=\"noopener\">make existing work faster<\/a>. It changes what feels worth doing in the first place.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If someone from product management eventually figures out how to measure \u201cwe\u2019re working better, faster and more efficiently\u201d without reducing it to lines of code or story points, that&#8217;s probably the follow-up talk I&#8217;d actually want to attend.<\/p>\n\n\n\n<div class=\"sources\">\n      <span class=\"sources__title\">Additional sources<\/span>\n  \n  <ul class=\"sources-list\">\n    \n          <li class=\"sources-list__item\">\n            <a href=\"https:\/\/railsware.com\/blog\/how-to-ai-running-product-and-marketing-decisions-with-ai\/\" target=\"_blank\">\n              <span class=\"sources-list__long-text\">\n                How to AI: running product and marketing decisions with AI              <\/span>\n            <i class=\"icon-arrow-right\"><\/i>\n          <\/a>\n          <\/li>\n        \n      \n          <li class=\"sources-list__item\">\n            <a href=\"https:\/\/railsware.com\/blog\/how-to-ai-fixing-generic-ai-content-not-with-better-prompts\/\" target=\"_blank\">\n              <span class=\"sources-list__long-text\">\n                How to AI: fixing generic AI content (not with better prompts)              <\/span>\n            <i class=\"icon-arrow-right\"><\/i>\n          <\/a>\n          <\/li>\n        \n      \n          <li class=\"sources-list__item\">\n            <a href=\"https:\/\/railsware.com\/blog\/how-to-ai-using-claude-design-when-youre-not-a-designer\/\" target=\"_blank\">\n              <span class=\"sources-list__long-text\">\n                How to AI: using Claude Design when you\u2019re not a designer              <\/span>\n            <i class=\"icon-arrow-right\"><\/i>\n          <\/a>\n          <\/li>\n        \n            <\/ul>\n<\/div>\n\n\n<section class=\"writer\">\n  <div class=\"writer__image\">\n    <img loading=\"lazy\" decoding=\"async\" width=\"180\" height=\"180\" src=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2024\/05\/Anastasiia-Vlasova-modified-180x180.png\" class=\"avatar avatar-180 photo wp-post-image\" alt=\"Anastasiia Vlasova\" srcset=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2024\/05\/Anastasiia-Vlasova-modified-180x180.png 180w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2024\/05\/Anastasiia-Vlasova-modified.png 309w\" sizes=\"auto, (max-width: 180px) 100vw, 180px\" \/>  <\/div>\n\n  <div class=\"writer-data\">\n    <span class=\"writer-data__label\">Article by<\/span>\n    <span class=\"writer-data__name\">\n      Anastasiia Vlasova    <\/span>\n    <div class=\"writer-data__bio\">\n      Anastasiia is a full-stack developer rooted in Ruby on Rails, with React on the frontend and 13+ years of shipping real products. From greenfield builds to untangling legacy code, she&#8217;s comfortable across the stack, including search, databases, and third-party integrations. Here, she shares practical insights on building applications that work and keep working.\r\n\r\n<a href=\"https:\/\/www.linkedin.com\/in\/anastasia-vlasova\/\"> Linkedin<\/a>    <\/div>\n    \n      <\/div>\n<\/section>","protected":false},"excerpt":{"rendered":"<p>Let\u2019s address the elephant in the room first. For the past year or two, the industry has been throwing around 10x, 100x, sometimes even 1000x productivity claims for AI-assisted coding. Expectations are sky-high. But if you\u2019re working on a large, legacy-heavy codebase, tools like Claude Code probably won\u2019t make you 10x more productive in the&#8230;<\/p>\n","protected":false},"author":102,"featured_media":19561,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[3,365],"tags":[],"coauthors":["Anastasiia Vlasova"],"class_list":["post-19559","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development","category-insights"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"A 2026 practical guide to using Claude Code for routine engineering tasks on a large legacy codebase: Stop hooks, deny rules, Docker isolation, review with Codex.\" \/>\n\t<meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"Nadiia Stelmakh\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"| Blog on Engineering, Product Management, Transparency, Culture and many more...\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"How to AI: handling routine engineering tasks with Claude\" \/>\n\t\t<meta property=\"og:description\" content=\"A 2026 practical guide to using Claude Code for routine engineering tasks on a large legacy codebase: Stop hooks, deny rules, Docker isolation, review with Codex.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/Group-1321322062-1.svg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/Group-1321322062-1.svg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"360\" \/>\n\t\t<meta property=\"og:image:height\" content=\"254\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-10-27T08:49:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-10-27T08:49:43+00:00\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/how-to-ai-handling-routine-engineering-tasks-with-claude\\\/#article\",\"name\":\"How to AI: handling routine engineering tasks with Claude\",\"headline\":\"How to AI: handling routine engineering tasks with Claude\",\"author\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/nadiia-stelmakhrailsware-com\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/Group-1321322062-1.svg\",\"width\":360,\"height\":254},\"datePublished\":\"2026-10-27T11:49:42+03:00\",\"dateModified\":\"2026-10-27T11:49:43+03:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/how-to-ai-handling-routine-engineering-tasks-with-claude\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/how-to-ai-handling-routine-engineering-tasks-with-claude\\\/#webpage\"},\"articleSection\":\"Engineering, Insights, anastasiia-vlasova\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/how-to-ai-handling-routine-engineering-tasks-with-claude\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/railsware.com\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"name\":\"Engineering\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"position\":2,\"name\":\"Engineering\",\"item\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/how-to-ai-handling-routine-engineering-tasks-with-claude\\\/#listItem\",\"name\":\"How to AI: handling routine engineering tasks with Claude\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/how-to-ai-handling-routine-engineering-tasks-with-claude\\\/#listItem\",\"position\":3,\"name\":\"How to AI: handling routine engineering tasks with Claude\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"name\":\"Engineering\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\",\"description\":\"Blog on Engineering, Product Management, Transparency, Culture and many more...\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/Logo-circle.png\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/how-to-ai-handling-routine-engineering-tasks-with-claude\\\/#organizationLogo\",\"width\":3137,\"height\":1054,\"caption\":\"Railsware logo\"},\"image\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/how-to-ai-handling-routine-engineering-tasks-with-claude\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/nadiia-stelmakhrailsware-com\\\/#author\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/nadiia-stelmakhrailsware-com\\\/\",\"name\":\"Nadiia Stelmakh\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/how-to-ai-handling-routine-engineering-tasks-with-claude\\\/#authorImage\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/avatar_user_102_1763651730-96x96.png\",\"width\":96,\"height\":96,\"caption\":\"Nadiia Stelmakh\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/how-to-ai-handling-routine-engineering-tasks-with-claude\\\/#webpage\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/how-to-ai-handling-routine-engineering-tasks-with-claude\\\/\",\"name\":\"How to AI: handling routine engineering tasks with Claude\",\"description\":\"A 2026 practical guide to using Claude Code for routine engineering tasks on a large legacy codebase: Stop hooks, deny rules, Docker isolation, review with Codex.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/how-to-ai-handling-routine-engineering-tasks-with-claude\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/nadiia-stelmakhrailsware-com\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/nadiia-stelmakhrailsware-com\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/Group-1321322062-1.svg\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/how-to-ai-handling-routine-engineering-tasks-with-claude\\\/#mainImage\",\"width\":360,\"height\":254},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/how-to-ai-handling-routine-engineering-tasks-with-claude\\\/#mainImage\"},\"datePublished\":\"2026-10-27T11:49:42+03:00\",\"dateModified\":\"2026-10-27T11:49:43+03:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/\",\"description\":\"Blog on Engineering, Product Management, Transparency, Culture and many more...\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"How to AI: handling routine engineering tasks with Claude","description":"A 2026 practical guide to using Claude Code for routine engineering tasks on a large legacy codebase: Stop hooks, deny rules, Docker isolation, review with Codex.","canonical_url":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/","robots":"max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/#article","name":"How to AI: handling routine engineering tasks with Claude","headline":"How to AI: handling routine engineering tasks with Claude","author":{"@id":"https:\/\/railsware.com\/blog\/author\/nadiia-stelmakhrailsware-com\/#author"},"publisher":{"@id":"https:\/\/railsware.com\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/Group-1321322062-1.svg","width":360,"height":254},"datePublished":"2026-10-27T11:49:42+03:00","dateModified":"2026-10-27T11:49:43+03:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/#webpage"},"isPartOf":{"@id":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/#webpage"},"articleSection":"Engineering, Insights, anastasiia-vlasova"},{"@type":"BreadcrumbList","@id":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/#listItem","position":1,"name":"Home","item":"https:\/\/railsware.com\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","name":"Engineering"}},{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","position":2,"name":"Engineering","item":"https:\/\/railsware.com\/blog\/category\/development\/","nextItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/#listItem","name":"How to AI: handling routine engineering tasks with Claude"},"previousItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/#listItem","position":3,"name":"How to AI: handling routine engineering tasks with Claude","previousItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","name":"Engineering"}}]},{"@type":"Organization","@id":"https:\/\/railsware.com\/blog\/#organization","description":"Blog on Engineering, Product Management, Transparency, Culture and many more...","url":"https:\/\/railsware.com\/blog\/","logo":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2020\/11\/Logo-circle.png","@id":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/#organizationLogo","width":3137,"height":1054,"caption":"Railsware logo"},"image":{"@id":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/railsware.com\/blog\/author\/nadiia-stelmakhrailsware-com\/#author","url":"https:\/\/railsware.com\/blog\/author\/nadiia-stelmakhrailsware-com\/","name":"Nadiia Stelmakh","image":{"@type":"ImageObject","@id":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/#authorImage","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2025\/11\/avatar_user_102_1763651730-96x96.png","width":96,"height":96,"caption":"Nadiia Stelmakh"}},{"@type":"WebPage","@id":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/#webpage","url":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/","name":"How to AI: handling routine engineering tasks with Claude","description":"A 2026 practical guide to using Claude Code for routine engineering tasks on a large legacy codebase: Stop hooks, deny rules, Docker isolation, review with Codex.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/railsware.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/#breadcrumblist"},"author":{"@id":"https:\/\/railsware.com\/blog\/author\/nadiia-stelmakhrailsware-com\/#author"},"creator":{"@id":"https:\/\/railsware.com\/blog\/author\/nadiia-stelmakhrailsware-com\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/Group-1321322062-1.svg","@id":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/#mainImage","width":360,"height":254},"primaryImageOfPage":{"@id":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/#mainImage"},"datePublished":"2026-10-27T11:49:42+03:00","dateModified":"2026-10-27T11:49:43+03:00"},{"@type":"WebSite","@id":"https:\/\/railsware.com\/blog\/#website","url":"https:\/\/railsware.com\/blog\/","description":"Blog on Engineering, Product Management, Transparency, Culture and many more...","inLanguage":"en-US","publisher":{"@id":"https:\/\/railsware.com\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"| Blog on Engineering, Product Management, Transparency, Culture and many more...","og:type":"article","og:title":"How to AI: handling routine engineering tasks with Claude","og:description":"A 2026 practical guide to using Claude Code for routine engineering tasks on a large legacy codebase: Stop hooks, deny rules, Docker isolation, review with Codex.","og:url":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/","og:image":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/Group-1321322062-1.svg","og:image:secure_url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/Group-1321322062-1.svg","og:image:width":360,"og:image:height":254,"article:published_time":"2026-10-27T08:49:42+00:00","article:modified_time":"2026-10-27T08:49:43+00:00"},"aioseo_meta_data":{"post_id":"19559","title":"How to AI: handling routine engineering tasks with Claude","description":"A 2026 practical guide to using Claude Code for routine engineering tasks on a large legacy codebase: Stop hooks, deny rules, Docker isolation, review with Codex.","keywords":null,"keyphrases":{"focus":{"keyphrase":"engineering with Claude","score":0,"analysis":[]},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-10-27 08:24:04","updated":"2026-10-27 08:50:07","seo_analyzer_scan_date":null,"focus_keyword":"engineering with Claude","additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/railsware.com\/blog\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/railsware.com\/blog\/category\/development\/\" title=\"Engineering\">Engineering<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tHow to AI: handling routine engineering tasks with Claude\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/railsware.com\/blog\/"},{"label":"Engineering","link":"https:\/\/railsware.com\/blog\/category\/development\/"},{"label":"How to AI: handling routine engineering tasks with Claude","link":"https:\/\/railsware.com\/blog\/how-to-ai-handling-routine-engineering-tasks-with-claude\/"}],"reading_time":"9 min read","categories_data":[{"name":"Engineering","link":"https:\/\/railsware.com\/blog?category=development"},{"name":"Insights","link":"https:\/\/railsware.com\/blog?category=insights"}],"post_thumbnails":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2026\/10\/Group-1321322062-1.svg","article_background":"#f1f5fd","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/19559","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/users\/102"}],"replies":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/comments?post=19559"}],"version-history":[{"count":6,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/19559\/revisions"}],"predecessor-version":[{"id":19571,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/19559\/revisions\/19571"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media\/19561"}],"wp:attachment":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media?parent=19559"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/categories?post=19559"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/tags?post=19559"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/coauthors?post=19559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}