<?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: madhu kiran</title>
    <description>The latest articles on DEV Community by madhu kiran (@avmadhukiran).</description>
    <link>https://dev.to/avmadhukiran</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%2F3223075%2F665af37d-49c3-4c2c-9590-277cd55801f1.jpg</url>
      <title>DEV Community: madhu kiran</title>
      <link>https://dev.to/avmadhukiran</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/avmadhukiran"/>
    <language>en</language>
    <item>
      <title>Organizing Cursor Rules &amp; Commands Across Projects with Symlinks</title>
      <dc:creator>madhu kiran</dc:creator>
      <pubDate>Mon, 06 Oct 2025 15:40:52 +0000</pubDate>
      <link>https://dev.to/avmadhukiran/organizing-cursor-rules-commands-across-projects-with-symlinks-9li</link>
      <guid>https://dev.to/avmadhukiran/organizing-cursor-rules-commands-across-projects-with-symlinks-9li</guid>
      <description>&lt;h2&gt;
  
  
  The Challenge
&lt;/h2&gt;

&lt;p&gt;Working with Cursor AI across multiple projects, I wanted to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Share custom AI &lt;strong&gt;rules&lt;/strong&gt; that work well for my workflow &lt;/li&gt;
&lt;li&gt;Reuse common &lt;strong&gt;commands&lt;/strong&gt; and tools configurations&lt;/li&gt;
&lt;li&gt;Experiment with different prompt templates without committing them&lt;/li&gt;
&lt;li&gt;Keep project-specific customizations separate from team configurations&lt;/li&gt;
&lt;li&gt;Maintain consistency across all my development work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The problem? I didn't want these personal configurations committed to version control, but I also didn't want to maintain separate copies in each project.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Solution: Centralized Cursor Configuration
&lt;/h2&gt;

&lt;p&gt;I created a central directory for all my Cursor configurations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;~/cursor-config/
├── rules/
│   ├── base-rules.md              &lt;span class="c"&gt;# Base AI behavior rules&lt;/span&gt;
│   ├── java-rules.md              &lt;span class="c"&gt;# Java-specific rules&lt;/span&gt;
│   ├── react-rules.md             &lt;span class="c"&gt;# React-specific rules&lt;/span&gt;
│   └── solid-principles.md        &lt;span class="c"&gt;# SOLID design principles&lt;/span&gt;
├── commands/
│   ├── github-pr-review.md        &lt;span class="c"&gt;# PR review commands&lt;/span&gt;
│   ├── test-helpers.md            &lt;span class="c"&gt;# Testing utilities&lt;/span&gt;
│   ├── refactor-patterns.md       &lt;span class="c"&gt;# Refactoring templates&lt;/span&gt;
│   └── code-analysis.md           &lt;span class="c"&gt;# Code analysis prompts&lt;/span&gt;
└── tools/
    ├── project-setup.sh           &lt;span class="c"&gt;# Project initialization scripts&lt;/span&gt;
    ├── sync-dependencies.sh       &lt;span class="c"&gt;# Dependency sync utilities&lt;/span&gt;
    └── code-formatters.json       &lt;span class="c"&gt;# Formatting configurations&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Symlinking Per Project
&lt;/h2&gt;

&lt;p&gt;For each project, I symlink only the relevant files. Here's how I set up different types of projects:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Java Project :&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/work/backend-app1

&lt;span class="c"&gt;# Link base rules&lt;/span&gt;
&lt;span class="nb"&gt;ln&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; ~/cursor-config/.cursor ./

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;React/Frontend Project:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/work/backend-app2

&lt;span class="c"&gt;# Link base rules&lt;/span&gt;
&lt;span class="nb"&gt;ln&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; ~/cursor-config/.cursor ./

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Gitignore Configuration
&lt;/h2&gt;

&lt;p&gt;In each project's &lt;code&gt;.gitignore&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Cursor AI - personal configs not to commit (symlinked from central config)
.cursor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This way, team-shared Cursor configurations stay in the repo, while my personal ones (symlinked) remain local and don't get committed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Works Brilliantly
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Single source of truth&lt;/strong&gt;: Update a rule or command once, all projects benefit immediately&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Experiment freely&lt;/strong&gt;: Test new AI instructions without cluttering repos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context-aware&lt;/strong&gt;: Cursor automatically discovers and uses these files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mix and match&lt;/strong&gt;: Combine base rules with project-specific customizations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team-friendly&lt;/strong&gt;: Personal preferences don't interfere with committed team configs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero maintenance&lt;/strong&gt;: No copying, no syncing, no outdated versions&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Benefits I've Experienced
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Organized structure&lt;/strong&gt;: &lt;code&gt;.cursor/rules&lt;/code&gt;, &lt;code&gt;.cursor/commands&lt;/code&gt;, &lt;code&gt;.cursor/tools&lt;/code&gt; keep everything categorized&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faster onboarding&lt;/strong&gt;: New projects get my full Cursor setup in seconds&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistent AI behavior&lt;/strong&gt;: Same quality assistance across all codebases&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Easy iteration&lt;/strong&gt;: Refine prompts based on what works, propagate instantly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clean repos&lt;/strong&gt;: Personal tooling doesn't pollute project history&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility&lt;/strong&gt;: Different projects can use different combinations of rules/commands/tools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discoverability&lt;/strong&gt;: Clear directory structure makes it obvious what's available&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to Set This Up
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;**Create your central config directory &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create your base rules / commands / tools:&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create symlinks to your central config:&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Add symlinked files to .gitignore:&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Repeat for all your projects!&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;Symlinks turned my scattered Cursor configurations into a coherent, maintainable system. One source of truth, infinite flexibility, zero overhead.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;.cursor/rules&lt;/code&gt;, &lt;code&gt;.cursor/commands&lt;/code&gt;, and &lt;code&gt;.cursor/tools&lt;/code&gt; structure provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clear separation of concerns&lt;/strong&gt;: Rules for AI behavior, commands for reusable prompts, tools for automation scripts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Easy navigation&lt;/strong&gt;: Anyone (including future you) can quickly find what they need&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability&lt;/strong&gt;: Add new rules, commands, or tools without cluttering the project root&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team compatibility&lt;/strong&gt;: Team-committed configs and personal symlinked configs coexist peacefully&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes the simplest Unix tools are still the most powerful ones. Who knew a 50-year-old feature would be the perfect solution for organizing AI coding assistant configurations?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Tip for Faster Debugging with Local Files with File Access MCP</title>
      <dc:creator>madhu kiran</dc:creator>
      <pubDate>Mon, 15 Sep 2025 04:43:54 +0000</pubDate>
      <link>https://dev.to/avmadhukiran/tip-for-faster-debugging-with-local-files-with-file-access-mcp-53a3</link>
      <guid>https://dev.to/avmadhukiran/tip-for-faster-debugging-with-local-files-with-file-access-mcp-53a3</guid>
      <description>&lt;p&gt;You can make debugging and troubleshooting much faster by exposing local files through an MCP (Model Context Protocol) file server. This allows tools like Cursor to directly query logs, config files, or any other resources without manually opening and searching through them.&lt;/p&gt;

&lt;p&gt;Example: Pointing to a Logs Directory&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "mcpservers": {
    "logs": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/path/to/logs/"
      ]
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this setup, you can ask questions like:&lt;/p&gt;

&lt;p&gt;“Has this record synced successfully?”&lt;/p&gt;

&lt;p&gt;“Show me the last error message.”&lt;/p&gt;

&lt;p&gt;“What’s the current status of this process?”&lt;/p&gt;

&lt;p&gt;Generalizing for Any Files&lt;/p&gt;

&lt;p&gt;You’re not limited to logs — you can point the MCP server at any directory you want. For example, if you want quick access to configuration files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "mcpservers": {
    "configs": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/path/to/configs/"
      ]
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you can interact with configs conversationally, such as:&lt;/p&gt;

&lt;p&gt;“What’s the current value of the timeout setting?”&lt;/p&gt;

&lt;p&gt;“Show me the database connection string.”&lt;/p&gt;

&lt;p&gt;“List all modified config files in this directory.”&lt;/p&gt;

&lt;p&gt;✅ Key Benefits:&lt;/p&gt;

&lt;p&gt;Faster debugging and issue resolution.&lt;/p&gt;

&lt;p&gt;No need to manually grep or open files repeatedly.&lt;/p&gt;

&lt;p&gt;Works with any directory: logs, configs, traces, or even custom data files.&lt;/p&gt;

</description>
      <category>tooling</category>
      <category>mcp</category>
      <category>llm</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
