<?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: shakti mishra</title>
    <description>The latest articles on DEV Community by shakti mishra (@shakti_mishra_308e9f36b5d).</description>
    <link>https://dev.to/shakti_mishra_308e9f36b5d</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%2F3895003%2Ff64e0882-0aa9-44ad-8c7c-a53d7a669188.jpg</url>
      <title>DEV Community: shakti mishra</title>
      <link>https://dev.to/shakti_mishra_308e9f36b5d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shakti_mishra_308e9f36b5d"/>
    <language>en</language>
    <item>
      <title>5 Markdown Files That Tame Non-Deterministic AI in Your Engineering Org</title>
      <dc:creator>shakti mishra</dc:creator>
      <pubDate>Fri, 24 Apr 2026 00:08:51 +0000</pubDate>
      <link>https://dev.to/shakti_mishra_308e9f36b5d/5-markdown-files-that-tame-non-deterministic-ai-in-your-engineering-org-31h3</link>
      <guid>https://dev.to/shakti_mishra_308e9f36b5d/5-markdown-files-that-tame-non-deterministic-ai-in-your-engineering-org-31h3</guid>
      <description>&lt;h1&gt;
  
  
  Your AI Coding Agent Has No Memory. These 5 Files Fix That.
&lt;/h1&gt;

&lt;p&gt;Picture this: two developers on the same team, same repo, same AI coding assistant. One gets perfectly typed TypeScript with tests. The other gets &lt;code&gt;any&lt;/code&gt; everywhere and zero test coverage. Same tool. Same codebase. Completely different output.&lt;/p&gt;

&lt;p&gt;This is not a bug. It is the default state of AI-assisted engineering when you leave standardization up to individual prompting habits.&lt;/p&gt;

&lt;p&gt;One developer's Copilot generates tests for every function. Another skips testing entirely. One team receives code that reuses the shared auth module. Another ends up with a custom, hand-rolled auth flow. One developer's output follows established naming conventions. Another produces code that looks like it came from a completely different codebase.&lt;/p&gt;

&lt;p&gt;As AI becomes embedded in software delivery, the real problem is not capability — it is consistency. The rules, workflows, and context that shape good engineering decisions need to live somewhere permanent. Somewhere the model will actually read.&lt;/p&gt;

&lt;p&gt;That somewhere is your repository. And the format is five markdown files.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Prompting Alone Doesn't Scale
&lt;/h2&gt;

&lt;p&gt;Every engineer prompts differently. That is fine for a solo project. It is a slow disaster for a team.&lt;/p&gt;

&lt;p&gt;When everyone relies on personal prompting habits, you get a system where quality varies by individual, standards drift across branches, good decisions made once never get inherited by the next PR, and AI agents context-switch between contributors with no shared memory.&lt;/p&gt;

&lt;p&gt;The models are not the bottleneck. Your team's ability to encode engineering judgment into the system around the model is.&lt;/p&gt;

&lt;p&gt;GitHub now supports a structured set of repository-level files that give AI coding agents a persistent, shared understanding of how your team works. These files load into context automatically, apply to specific code paths, define specialist roles, and package reusable workflows. They work across GitHub Copilot, Claude Code, Cursor, and Codex.&lt;/p&gt;

&lt;p&gt;Here is how each one works — and why it matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. &lt;code&gt;.github/copilot-instructions.md&lt;/code&gt; — The Always-On Standards Layer
&lt;/h2&gt;

&lt;p&gt;This is your baseline. It applies to every AI interaction in the repo, automatically, without anyone having to remember to include it.&lt;/p&gt;

&lt;p&gt;Put broad engineering expectations here: coding conventions, testing requirements, accessibility standards, architectural boundaries, documentation rules, error-handling patterns. If your team wants the AI to always write typed APIs, follow a specific folder structure, or update tests whenever production code changes — this is where that lives.&lt;/p&gt;

&lt;p&gt;It is one of the highest-leverage files you can create. Not because it does anything new, but because it makes implicit standards explicit and permanent.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# .github/copilot-instructions.md&lt;/span&gt;

&lt;span class="gu"&gt;## Language and framework&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Use TypeScript with strict mode enabled
&lt;span class="p"&gt;-&lt;/span&gt; Use Express.js for all API endpoints
&lt;span class="p"&gt;-&lt;/span&gt; Never use &lt;span class="sb"&gt;`any`&lt;/span&gt; type

&lt;span class="gu"&gt;## Testing&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Write unit tests for every new function using Jest
&lt;span class="p"&gt;-&lt;/span&gt; Maintain minimum 80% code coverage

&lt;span class="gu"&gt;## Error handling&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Use custom error classes from &lt;span class="sb"&gt;`src/errors/`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Always return structured error responses with status code and message

&lt;span class="gu"&gt;## Architecture&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Never import directly from &lt;span class="sb"&gt;`src/internal/`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Use the repository pattern for all database access
&lt;span class="p"&gt;-&lt;/span&gt; All new endpoints must go through the API gateway in &lt;span class="sb"&gt;`src/gateway/`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Think of it as onboarding documentation that never gets ignored, because the AI reads it every time.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. &lt;code&gt;.github/instructions/*.instructions.md&lt;/code&gt; — The Path-Scoped Layer
&lt;/h2&gt;

&lt;p&gt;Most real codebases are not uniform. Your frontend follows different rules than your infrastructure. Your data pipelines need different guardrails than your API layer.&lt;/p&gt;

&lt;p&gt;Path-specific instruction files let you apply the right constraints in the right place. Each file uses an &lt;code&gt;applyTo&lt;/code&gt; pattern to activate only for matching directories or file types. This is where standardization gets intelligent instead of blunt.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;applyTo&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;src/frontend/**"&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="gh"&gt;# Frontend instructions&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Use React functional components with hooks
&lt;span class="p"&gt;-&lt;/span&gt; Use Tailwind CSS for styling, no inline styles
&lt;span class="p"&gt;-&lt;/span&gt; All components must be accessible (WCAG 2.1 AA)
&lt;span class="p"&gt;-&lt;/span&gt; Use React Testing Library for component tests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;applyTo&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;infrastructure/**"&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="gh"&gt;# Infrastructure instructions&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Use Bicep for all Azure resource definitions
&lt;span class="p"&gt;-&lt;/span&gt; Never hardcode secrets, always reference Key Vault
&lt;span class="p"&gt;-&lt;/span&gt; Tag every resource with &lt;span class="sb"&gt;`environment`&lt;/span&gt; and &lt;span class="sb"&gt;`team`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You stop treating the repo like a monolith and start giving the AI the right lens for each context. The frontend agent should not be applying infrastructure conventions. Now it will not.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. &lt;code&gt;AGENTS.md&lt;/code&gt; — The Repo's Operating Manual
&lt;/h2&gt;

&lt;p&gt;This is the file that tells an autonomous agent how work actually gets done here.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; is an open format for guiding coding agents, originally created by the OpenAI ecosystem. GitHub's Copilot coding agent added support for it in 2025, and the industry has converged around it: GitHub also supports &lt;code&gt;CLAUDE.md&lt;/code&gt; and &lt;code&gt;GEMINI.md&lt;/code&gt; as equivalent alternatives, depending on your toolchain.&lt;/p&gt;

&lt;p&gt;Think of it as operational memory for the repo. What commands should the agent run? How should it test? What should it never touch? How should it title pull requests? What counts as "done"?&lt;/p&gt;

&lt;p&gt;Without this file, every autonomous agent starts from scratch. With it, engineering standards become portable across tools and contributors.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# AGENTS.md&lt;/span&gt;

&lt;span class="gu"&gt;## Build and test&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Run &lt;span class="sb"&gt;`npm run build`&lt;/span&gt; before committing
&lt;span class="p"&gt;-&lt;/span&gt; Run &lt;span class="sb"&gt;`npm test`&lt;/span&gt; and ensure all tests pass
&lt;span class="p"&gt;-&lt;/span&gt; Run &lt;span class="sb"&gt;`npm run lint`&lt;/span&gt; and fix all warnings

&lt;span class="gu"&gt;## Pull requests&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Title format: &lt;span class="sb"&gt;`[AREA] Short description`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Always include a summary of what changed and why
&lt;span class="p"&gt;-&lt;/span&gt; Never push directly to &lt;span class="sb"&gt;`main`&lt;/span&gt;

&lt;span class="gu"&gt;## Off limits&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Do not modify files in &lt;span class="sb"&gt;`src/generated/`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Do not update &lt;span class="sb"&gt;`package-lock.json`&lt;/span&gt; manually
&lt;span class="p"&gt;-&lt;/span&gt; Do not change CI/CD workflows without approval
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The distinction from &lt;code&gt;copilot-instructions.md&lt;/code&gt; is important. That file sets coding standards. This one sets operating procedure. One shapes what the AI produces. The other shapes how it behaves as an agent.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. &lt;code&gt;.github/agents/*.md&lt;/code&gt; — Custom Agent Profiles (The Specialist Layer)
&lt;/h2&gt;

&lt;p&gt;Not every task should go to a general-purpose coding assistant. Sometimes you need a security reviewer who will not touch production code. Sometimes you need an implementation planner. Sometimes you need a refactoring specialist with write access to exactly two directories.&lt;/p&gt;

&lt;p&gt;Custom agent files let you define specialist personas with their own instructions, tools, and restrictions. They live in &lt;code&gt;.github/agents/&lt;/code&gt; and can specify which tools the agent is allowed to use — including MCP servers if your setup supports them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# .github/agents/security-reviewer.md
---
&lt;/span&gt;description: "Reviews code for security vulnerabilities"
tools:
&lt;span class="p"&gt;  -&lt;/span&gt; code_search
&lt;span class="gh"&gt;  - read_file
---
&lt;/span&gt;
You are a security reviewer. Your job is to find vulnerabilities.

&lt;span class="gu"&gt;## Rules&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Flag any use of &lt;span class="sb"&gt;`eval()`&lt;/span&gt;, &lt;span class="sb"&gt;`innerHTML`&lt;/span&gt;, or unsanitized user input
&lt;span class="p"&gt;-&lt;/span&gt; Check for SQL injection in all database queries
&lt;span class="p"&gt;-&lt;/span&gt; Verify that all API endpoints require authentication
&lt;span class="p"&gt;-&lt;/span&gt; You may read code but never modify it
&lt;span class="p"&gt;-&lt;/span&gt; Output a structured report with severity levels
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is architecturally different from general instructions. General instructions tell every agent how your team works. Custom agents create intentional specialists for jobs that repeat. You define the role once, and any developer on the team can invoke it without reinventing the persona each time.&lt;/p&gt;

&lt;p&gt;The repo stops having one AI assistant with inconsistent behavior. It starts having a team of specialists with defined roles.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. &lt;code&gt;SKILL.md&lt;/code&gt; — The Reusable Capability Layer
&lt;/h2&gt;

&lt;p&gt;This is where things get genuinely powerful.&lt;/p&gt;

&lt;p&gt;A skill is a folder of instructions, scripts, and resources that an agent loads on demand for a specific task. It lives under &lt;code&gt;.github/skills/&lt;/code&gt; and must include a &lt;code&gt;SKILL.md&lt;/code&gt; file. GitHub has made the spec an open standard, and skills work across Copilot's coding agent, the CLI, and VS Code agent mode.&lt;/p&gt;

&lt;p&gt;The difference between a skill and a custom instruction is that a skill can package a repeatable workflow — not just guidance, but executable steps with associated scripts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.github/skills/
  debug-ci/
    SKILL.md
    scripts/
      analyze-logs.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# SKILL.md
---
&lt;/span&gt;name: "debug-ci"
&lt;span class="gh"&gt;description: "Debug failing GitHub Actions workflows"
---
&lt;/span&gt;
&lt;span class="gu"&gt;## Steps&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; Read the failing workflow YAML from &lt;span class="sb"&gt;`.github/workflows/`&lt;/span&gt;
&lt;span class="p"&gt;2.&lt;/span&gt; Run &lt;span class="sb"&gt;`scripts/analyze-logs.sh`&lt;/span&gt; to extract the error
&lt;span class="p"&gt;3.&lt;/span&gt; Check if the failure is a flaky test, dependency issue, or config error
&lt;span class="p"&gt;4.&lt;/span&gt; Suggest a fix with the exact file and line to change
&lt;span class="p"&gt;5.&lt;/span&gt; If the fix involves a dependency update, run &lt;span class="sb"&gt;`npm audit`&lt;/span&gt; first
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can build skills for anything that happens more than twice: Playwright UI testing, infrastructure code review, proposal drafting, schema validation, changelog generation. The team stops starting from zero on recurring tasks. Good engineering behavior becomes a reusable asset.&lt;/p&gt;




&lt;h2&gt;
  
  
  How the Layers Stack Together
&lt;/h2&gt;

&lt;p&gt;Here is how the full system looks when all five files are in play:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────┐
│                    Your Repository                   │
│                                                      │
│  ┌──────────────────────────────────────────────┐   │
│  │  copilot-instructions.md                     │   │
│  │  Always-on: coding standards, arch rules     │   │
│  └──────────────────────────────────────────────┘   │
│                                                      │
│  ┌──────────────────────────────────────────────┐   │
│  │  .github/instructions/*.instructions.md      │   │
│  │  Path-scoped: frontend rules, infra rules    │   │
│  └──────────────────────────────────────────────┘   │
│                                                      │
│  ┌──────────────────────────────────────────────┐   │
│  │  AGENTS.md                                   │   │
│  │  Operating manual: build, test, PR rules     │   │
│  └──────────────────────────────────────────────┘   │
│                                                      │
│  ┌──────────────────────────────────────────────┐   │
│  │  .github/agents/*.md                         │   │
│  │  Specialist roles: security, planner, etc.   │   │
│  └──────────────────────────────────────────────┘   │
│                                                      │
│  ┌──────────────────────────────────────────────┐   │
│  │  .github/skills/*/SKILL.md                   │   │
│  │  Reusable workflows: debug-ci, test-ui, etc. │   │
│  └──────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────┘
                          │
                          ▼
         ┌────────────────────────────┐
         │   AI Coding Agent          │
         │   (Copilot / Claude Code / │
         │    Cursor / Codex)         │
         └────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each layer handles a different surface area. Together, they close the gap between what the model can do and what your team needs it to do consistently.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Shift Most Teams Miss
&lt;/h2&gt;

&lt;p&gt;Most teams reach for more model power when they hit inconsistency problems. A better model will not fix a context problem.&lt;/p&gt;

&lt;p&gt;The real insight is this: your AI coding tools are only as consistent as the context they receive. When that context is scattered across Slack threads, tribal knowledge, and individual senior engineers, the AI inherits that chaos. When it lives in structured, version-controlled files, the AI inherits your engineering judgment.&lt;/p&gt;

&lt;p&gt;These five files are not markdown clutter. They are the beginning of a standardized interface between your engineering system and the AI agents working inside it.&lt;/p&gt;

&lt;p&gt;The best teams will not win because they have access to the smartest model. They will win because they know how to encode their engineering judgment into the system around the model.&lt;/p&gt;

&lt;p&gt;And increasingly, that system looks like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;copilot-instructions.md&lt;/code&gt; for the default rules&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;AGENTS.md&lt;/code&gt; for the repo's operating manual&lt;/li&gt;
&lt;li&gt;Path-specific files for context-aware standards&lt;/li&gt;
&lt;li&gt;Custom agents for specialist roles&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;SKILL.md&lt;/code&gt; for reusable workflows
The future of software engineering will not just be written in code. More of it will be written in context.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI coding tools are only as consistent as the context they receive.&lt;/strong&gt; Without structured repo files, every developer's output diverges based on personal prompting style.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The 5-file system creates layered, version-controlled context&lt;/strong&gt; — always-on standards, path-scoped rules, operating procedures, specialist personas, and reusable workflows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; is cross-tool portable.&lt;/strong&gt; GitHub Copilot, Claude Code, and Gemini all support their own flavor; the concept is converging into an industry standard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills package repeatable workflows, not just instructions.&lt;/strong&gt; If a task happens more than twice, it should be a skill.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Most teams need more structure before they need more model power.&lt;/strong&gt; Better context produces more consistent output than a smarter model with no guardrails.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What Are You Doing About This?
&lt;/h2&gt;

&lt;p&gt;Most teams I talk to are one or two steps into this system — they have a rough &lt;code&gt;copilot-instructions.md&lt;/code&gt; or a stale &lt;code&gt;AGENTS.md&lt;/code&gt; that nobody updates. Very few have all five layers running together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which of these files does your team already have in place? And which one would make the biggest difference if you added it tomorrow?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Drop a comment — I'm curious where teams are actually getting value and where they're still fighting entropy.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Credit: The technical insights in this post draw from &lt;a href="https://newsletter.karuparti.com" rel="noopener noreferrer"&gt;Diary of an AI Architect&lt;/a&gt; by Anurag Karuparti — one of the clearest voices on production agentic AI architecture.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>github</category>
      <category>productivity</category>
      <category>devtools</category>
    </item>
  </channel>
</rss>
