<?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: Dmytro Taranov</title>
    <description>The latest articles on DEV Community by Dmytro Taranov (@__f4d90f1f20b8).</description>
    <link>https://dev.to/__f4d90f1f20b8</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3887420%2Fbb5743be-30ff-4a9c-92a2-fc922bc4be51.jpeg</url>
      <title>DEV Community: Dmytro Taranov</title>
      <link>https://dev.to/__f4d90f1f20b8</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/__f4d90f1f20b8"/>
    <language>en</language>
    <item>
      <title>How I Keep My Code up to Date With Zero Effort With Claude</title>
      <dc:creator>Dmytro Taranov</dc:creator>
      <pubDate>Fri, 01 May 2026 17:07:27 +0000</pubDate>
      <link>https://dev.to/__f4d90f1f20b8/how-i-keep-my-code-up-to-date-with-zero-effort-with-claude-45gc</link>
      <guid>https://dev.to/__f4d90f1f20b8/how-i-keep-my-code-up-to-date-with-zero-effort-with-claude-45gc</guid>
      <description>&lt;p&gt;Like most developers, I’ve always been stressed by the sheer volume of dependencies. A typical project has 50 to 100 third-party libraries, and they are constantly changing. How are you supposed to track all of them?&lt;/p&gt;

&lt;p&gt;I used to obsess over this because it was eating up a massive chunk of my time. But the worst part? When one library falls so far behind that it starts conflicting with everything new you try to plug in.&lt;/p&gt;

&lt;p&gt;What’s the solution? Manually check and update them every day? Sure... there are plugins and tools, but when you’re under pressure, in active development, or rushing a feature, maintenance isn't your first, second, or even third priority.&lt;/p&gt;

&lt;p&gt;And then, one day - BAMMMMM**** You add a simple dependency, and everything is incompatible &lt;em&gt;(Rage moment).&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  So, let’s get into how I actually solve this problem...
&lt;/h2&gt;

&lt;p&gt;I’ve seen a lot of people online using AI for these kinds of solutions, and honestly, I wanted in. It seemed like a perfect use case. On the surface, the task is simple: check a list of libraries, find the new versions. It’s exactly the kind of thing an AI should be able to handle effortlessly.&lt;/p&gt;

&lt;h2&gt;
  
  
  I decided to give it a shot with Claude
&lt;/h2&gt;

&lt;p&gt;But as soon as I started, I hit the reality of how LLMs actually work. If you just ask an AI to find updates, it starts hallucinating version numbers that don't exist because its training data is static and might be stale. I tried letting it browse the web, but it just got lost in the noise of old documentation and random GitHub issues.&lt;/p&gt;

&lt;p&gt;That’s when I realized that if I wanted this to work for a professional-grade project, I couldn't just 'ask' the AI... I had to build a proper architecture around it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Architecture: My Zero-Effort Pipeline
&lt;/h2&gt;

&lt;p&gt;I decided to use the new &lt;strong&gt;Claude Routines&lt;/strong&gt; &lt;em&gt;(they just released it, and it's a game changer because it allows you to set up recurring tasks, &lt;strong&gt;even if your PC is off&lt;/strong&gt;)&lt;/em&gt;. I have mine scheduled as a routine that triggers every Friday morning.&lt;/p&gt;

&lt;p&gt;For the data, I’m using &lt;strong&gt;Context7&lt;/strong&gt; as my source of truth &lt;em&gt;(If you’re not familiar with it, it’s a tool you can plug into Claude that acts as a real-time repository for the latest library versions)&lt;/em&gt;. Unlike Claude’s internal training data, Context7 is constantly updated with the newest releases.&lt;br&gt;
My setup looks like this:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwf6ekt8yhdtir0c2e8b9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwf6ekt8yhdtir0c2e8b9.png" alt=" " width="661" height="147"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s look under the hood at how I actually implemented this.&lt;/p&gt;

&lt;p&gt;I started by taking my dependency file and asking Claude to convert it into a clean Markdown file. I specifically told it to generate a table with only two columns: the library name and its current version.&lt;/p&gt;

&lt;p&gt;Why this approach? Because it’s much easier for Claude to parse a structured Markdown table than my raw source files, which are cluttered with configurations, plugins, and other boilerplate code.&lt;/p&gt;

&lt;p&gt;I then created a &lt;strong&gt;dedicated repository&lt;/strong&gt; just for this Markdown file. This keeps the environment clean and ensures the agent focuses only on the data that matters.&lt;/p&gt;

&lt;p&gt;Here is what the final result looks like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbnvt50tuhjwc2czr820p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbnvt50tuhjwc2czr820p.png" alt=" " width="800" height="716"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The last piece of the puzzle
&lt;/h2&gt;

&lt;p&gt;he last piece of the puzzle was setting up &lt;strong&gt;Claude Routines&lt;/strong&gt; on that specific repository. I added &lt;strong&gt;Context7&lt;/strong&gt;, configured the scheduler, and spent some time crafting a prompt that would actually deliver.&lt;/p&gt;

&lt;p&gt;The goal was simple: Claude needs to read that Markdown file inside repo, run every single library through Context7, and then open a Pull Request in that same repo with an updated table (separate file). This new table has four columns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;library name&lt;/li&gt;
&lt;li&gt;current version&lt;/li&gt;
&lt;li&gt;new available version&lt;/li&gt;
&lt;li&gt;status&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But it wasn’t easy. I ran into two major issues during testing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The 'Lazy Agent' Problem:&lt;/strong&gt; Claude would check 8 or 10 libraries and then just stop, thinking the job was done.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Tool Bypass:&lt;/strong&gt; Sometimes it would ignore Context7 entirely and try to find versions using its own stale data or random web searches.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After a lot of trial and error, I finally found the right prompt engineering to force it to process the entire list sequentially and stay strictly within the Context7 'Source of Truth.'&lt;/p&gt;

&lt;p&gt;For the output, I decided that this dedicated repo was the best place to store the results. I instructed Claude to name the new file with the current date and open it as a PR.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And here is the result:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flwowz5qeiyxl0ymx04ln.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flwowz5qeiyxl0ymx04ln.png" alt=" " width="800" height="679"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Now that this is running, I’m honestly satisfied with the result. The best part? It works completely independently of me. Even if my computer is off, the process just happens. It’s a great feeling to wake up on a Friday and see the work already done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;All I have to do is check the file when it’s ready. But honestly, do I even need to check file? Probably not.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While setting this up, I noticed that Claude Routines has a lot more triggers than I initially realized. Right now, I’m working on taking this to the next level: a setup where the libraries are updated directly in the code, fully automatically. I think I’ve already found a very solid solution for this.&lt;/p&gt;

&lt;p&gt;I’ll share exactly how I did it as soon as the implementation is finished.&lt;/p&gt;

&lt;p&gt;If you want to dive deeper or replicate this exact setup for your own projects, check out the full video I’ve posted on YouTube. I’ve put together a very simple, step-by-step guide there. If you follow along, you can have this entire system up and running in about 5 minutes: &lt;a href="https://www.youtube.com/watch?v=tscsoX-Rvj0" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=tscsoX-Rvj0&lt;/a&gt;&lt;br&gt;
If you’ve already read the background and just want to dive into the implementation, feel free to skip the intro and start the video at 1:18&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
      <category>claude</category>
      <category>ai</category>
      <category>automation</category>
      <category>programming</category>
    </item>
    <item>
      <title>How I Automate Jira Tickets Investigation using Claude Code &amp; MCP</title>
      <dc:creator>Dmytro Taranov</dc:creator>
      <pubDate>Sun, 19 Apr 2026 15:03:06 +0000</pubDate>
      <link>https://dev.to/__f4d90f1f20b8/how-i-automate-jira-tickets-investigation-using-claude-code-mcp-5haj</link>
      <guid>https://dev.to/__f4d90f1f20b8/how-i-automate-jira-tickets-investigation-using-claude-code-mcp-5haj</guid>
      <description>&lt;p&gt;As a software engineer, I hate context switching. Investigating a Jira ticket usually means bouncing between Jira for the context, Confluence for the high-level logic, the Codebase for the actual implementation, and finally Slack to ping the reporter about blockers/additional questions.&lt;br&gt;
It takes time, breaks flow, and is incredibly tedious. So, I decided to automate the entire process using Claude Code and MCP.&lt;/p&gt;

&lt;p&gt;I connected &lt;strong&gt;Claude&lt;/strong&gt; to my &lt;strong&gt;Jira&lt;/strong&gt;, &lt;strong&gt;Confluence&lt;/strong&gt;, and &lt;strong&gt;Slack&lt;/strong&gt; using &lt;strong&gt;MCP&lt;/strong&gt; (Model Context Protocol). &lt;br&gt;
Now, my day starts simply: I ask Claude for a list of my active Jira tickets and give it a command to investigate a specific one.&lt;/p&gt;

&lt;p&gt;In about 2 minutes, Claude does the heavy lifting. It either prepares a complete implementation plan, or it compiles a list of blockers and clarifying questions that prevent me from moving forward.&lt;br&gt;
I just start coding session If the plan is ready and there are no blockers. If there are blockers, Claude automatically drafts and sends a Slack message to the ticket reporter asking for clarification.&lt;br&gt;
You can see the workflow diagram below:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frate221br90h83shbxhz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frate221br90h83shbxhz.png" alt=" " width="800" height="672"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Everything starts with asking Claude: &lt;em&gt;"Which tickets do I have in Jira?"&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Claude uses the &lt;code&gt;Jira Explorer Skill&lt;/code&gt; to hit the Atlassian MCP and pull my current tasks. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Once the ticket is selected, I give the command: &lt;em&gt;"Investigate this ticket and prepare an implementation plan."&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This triggers the &lt;code&gt;Knowledge Researcher Skill&lt;/code&gt;. The magic here is the strict order of execution. I explicitly force Claude to search Confluence first, and only then look at the Codebase. Confluence usually contains the high-level logic and API specs. If the agent jumps straight into the code, it scans blindly, wasting both time and tokens.&lt;br&gt;
If all the information is there, Claude gives me a ready-to-use, step-by-step coding plan. But during the research, Claude might realize we are blocked (e.g., a missing payload structure or an undefined API endpoint). It will immediately stop and prepare a list of these blockers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Since I can't start coding, I tell the agent: &lt;em&gt;"Find the reporter of this ticket and send these blockers to them on Slack."&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Claude triggers the &lt;code&gt;Slack Researcher Skill&lt;/code&gt;, finds the right person via Slack MCP, and drafts a highly professional message explaining exactly what is missing.&lt;/p&gt;

&lt;p&gt;I’ll be honest, getting here wasn't without its challenges. I had to fine-tune the agent and figure out these strict rules through a lot of trial and error to prevent token drains and hallucinations. But right now, it works flawlessly.&lt;br&gt;
Anyway, if you want to see how this actually works in reality, I recorded a step-by-step video on YouTube with real example:&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/X1TZ3GYnDik"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you want to skip the overview and example and dive straight into the exact prompts I wrote, and how I configured the custom skills and hard rules, you can jump directly to [05:22]&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
