Automating Project Implementation and Maintenance with Claude Code + MCP + AI Agent Skills —… Programmer and machine learning specialist Michał Żarnecki published the first part of a three-part series describing how he automates software development and project maintenance using Claude Code, MCP servers, and AI agent skills, with configurations presented as of September 2026. Żarnecki, who works primarily in Python and PHP with a focus on natural language processing, said he spends most of his development time determining what code should do rather than typing it, and uses Claude Code to trace evidence across Jira, repositories, logs, and relational databases. The article also notes that reasoning models such as OpenAI o1 and DeepSeek-R1 debuted in 2024, trained via supervised fine-tuning on reasoning traces, and that inference-time techniques including Chain of Thoughts, Self-consistency, Reflection/critique, Tree of Thoughts, and Verifier are now common. Part 1 of 3 In this article and follow up articles I will explain how I automated development and project maintenance with AI agents based on Claude Code, MCP servers and related concepts. In the end you should have overview what is the role of AI tools in software engineering these days. Hi My name is Michał Żarnecki. I’m a programmer, machine learning specialist, and educator. I build data-driven systems using programming languages such as Python and PHP, with a strong focus on natural language processing. I do not spend most of my development time typing code. I spend it finding out what the code should do, why it stopped doing it, and whether a proposed change actually fixes the problem. The evidence rarely lives in one place. For example the requirement is in project management and issue-tracking system I personally use Jira accompanied with Agile Scrum methodology and Kanban board for tasks flow monitoring and management . The implementation is in the repository. The symptom is in a log can be database table like ElasticSearch index, server log file, etc. . The unexpected data is in relational database like MySQL, MariaDB, Postgres, etc. . The reason for an unusual design decision is in a commit in long-term projects even from a few years ago . This is where Claude Code becomes particularly useful - when it can follow those connections instead of asking me to copy everything into a chat window. In this series, I will show how I approach that setup, turn repeated work into skills, and run selected workflows automatically. The examples come from software development work, but I have generalized the business domain, infrastructure, identifiers, and data. As every project is different, treat the configurations below as templates, not exports of our production configuration, which would adjusted to project specifics and therefore less intuitive. One more important notice before we jump into practical part — the state of knowledge presented in the article states for September 2026 . Features and authentication requirements change quickly; the linked official guides are how I divide the configurationthe place to check before installing. Also AI-driven projects automation is relatively new area and evolves rapidly — for example it’s no longer possible to track manually scientific papers related to LLM architectural and usage improvements on arxiv.org https://arxiv.org/ without agents that summarize and filter the content due to multiple new ideas and experiments being published every single day. LLM model without possibility to interact with environment is like the brain in the jar. Brain needs access to limbs and sense organs to take actions. For LLMs there are tools called also function calling . It means that model is trained during post-training phase supervised fine-tuning - SFT to include in answers specific constructions that contain tool name and arguments. For example getting weather forecast API tool can be accessed by attaching code below in generated text. { "name": "get weather", "arguments": { "city": "Poznan" }, "type": "tool call", "city": "23456",} Going further this direction we should add iterative nature of getting things done. It means that in reality getting to final conclusion usually consist of multiple steps. Therefore in 2024 debuted reasoning models — LRMs Large Reasoning Models such as OpenAI o1 and DeepSeek-R1. They were trained on specific datasets encouraging models to develop ability of planning, conducting multi step work and getting to conclusion based on their previous thoughts SFT on reasoning traces — the model learns from examples containing a question, a step-by-step reasoning process, and the final answer. . Also since then models were often using inference-time without changing model weights reasoning techniques such as Chain of Thoughts, Self-consistency, Reflection / critique, Tree of Thoughts, Verifier. At this point we were given a tool that can be engine capable of conducting continuous, complex and comprehensive work when given the access to the work environment the way programmers and other IT specialists roles have. Here comes Model Context Protocol — MCP. MCP Model Context Protocol is like a universal adapter between AI assistants and external systems. Instead of creating a separate integration for every database, application, or service, developers expose their data and tools through one common protocol. This allows MCP-compatible AI agents to discover available capabilities and use them — for example, to read project files, query business data, or perform actions. Learn more in Anthropic’s article: Introducing the Model Context Protocol https://www.anthropic.com/news/model-context-protocol . One day, I investigated an application incident using several MCP connections in the same session. - Service logs established the timeline, - Monitoring showed that application workers were occupied even though CPU usage was relatively low, - Application logs helped distinguish a new error storm from existing noise, - A database check revealed a large queue of background task — this was the root cause. I was able to very quickly have it detected. Reading the worker implementation connected those observations: the background jobs were generating requests back to the application itself. The useful result was a causal explanation that crossed several systems. Even a detailed code completion could not have provided that from the currently open file. There was another important step. The agent checked the scheduling implementation before proposing a change. Changing an apparently relevant priority field would not have reduced concurrency in the way we needed. The actual control was elsewhere in the worker routing. This is how modern debugging works — instead of spending hours on digging deep into the code, searching for information and consulting multiple specialists to get any track, AI assistant with MCP access is doing a quick research first, gathering comprehensive information and proposing solutions. It still requires Human In The Loop — HITL at least for now as AI assistant doesn’t know all nuances, reasons behind architectural decisions and project evolution history. Anyway it’s better to start providing solution from comprehensive analysis then digging on your own. This is very important to be aware because it implicates that the role of developer/programmer is no longer considered the same. The traditional digging for hours is becoming obsolete. The programmer role will never be the same. Now let’s jump to “hands on” part and get deeper into the system that is supporting solving issues. Here is a small vocabulary with terms that are important to distinguish due to their characteristics, granularity and role in the process. I will explain them one by one and also provide code snippets so you can configure such solutions in your environment. A Claude skill is a reusable set of instructions that teaches Claude how to perform a specific task consistently. For example, an error-log verification skill could tell Claude to identify exceptions, group repeated errors, correlate them with timestamps and deployments, and suggest likely root causes. Each skill is defined primarily in a SKILL.md file, which describes when the skill should be used, the workflow Claude should follow, and any supporting scripts, tools, or reference files it may use. MCP standardizes communication between a host such as Claude Code and servers exposing tools, resources, or prompts. It does not replace the authorization rules of the connected service. The server may wrap an existing API, it does not have to expose a database directly. Subagent is a process that Claude can run in a background. For example one subagent can run console script on a dataset while second subagent can target another dataset. Meanwhile main thread can work on improving the script and adjust it based on results generated by subagents. CLAUDE.md is a project-level file containing persistent instructions for Claude Code, such as architecture details, coding conventions, build commands, and testing rules. Claude loads it at the beginning of each session. I use it for specific project information, for example how to setup project locally to help Claude test changes automatically. Scheduler allows Claude Code tasks to run automatically at a specified time or on a recurring schedule — for example, reviewing error logs every morning, conducting technical review for developers pull requests and preparing a summary. Scheduled tasks are configured as routines and can run without an active interactive session. I’m using a systemd user timers for daily Claude Code automations, not cron. Each skill has a pair of units in ~/.config/systemd/user/ named claude-