<?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: Mubbasher Ahmed Qureshi</title>
    <description>The latest articles on DEV Community by Mubbasher Ahmed Qureshi (@mubbi).</description>
    <link>https://dev.to/mubbi</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%2F3292660%2Fbd8289b9-bbed-4991-8654-c97cdcc833e4.jpeg</url>
      <title>DEV Community: Mubbasher Ahmed Qureshi</title>
      <link>https://dev.to/mubbi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mubbi"/>
    <language>en</language>
    <item>
      <title>Supercharge Your Git Workflow with Laravel Commit‑Lint</title>
      <dc:creator>Mubbasher Ahmed Qureshi</dc:creator>
      <pubDate>Tue, 29 Jul 2025 13:38:13 +0000</pubDate>
      <link>https://dev.to/mubbi/supercharge-your-git-workflow-with-laravel-commit-lint-482n</link>
      <guid>https://dev.to/mubbi/supercharge-your-git-workflow-with-laravel-commit-lint-482n</guid>
      <description>&lt;p&gt;&lt;strong&gt;Tired of messy, inconsistent commit messages cluttering your Git history?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Say hello to &lt;a href="https://github.com/mubbi/laravel-commit-lint" rel="noopener noreferrer"&gt;Laravel Commit‑Lint&lt;/a&gt; — a lightweight, developer-friendly Laravel package built to enforce &lt;strong&gt;Conventional Commits&lt;/strong&gt; right from your terminal.&lt;/p&gt;

&lt;p&gt;Crafted by &lt;a href="https://github.com/mubbi" rel="noopener noreferrer"&gt;Mubbasher Ahmed Qureshi (@mubbi)&lt;/a&gt;, this tool brings structure, readability, and automation to your Git commits—without any complex setup or bloated dependencies.&lt;/p&gt;


&lt;h2&gt;
  
  
  🧠 Why Commit Linting Even Matters
&lt;/h2&gt;

&lt;p&gt;Before diving into features, let’s answer a critical question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Isn’t this just extra work?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Actually, it’s the opposite.&lt;/p&gt;

&lt;p&gt;Standardizing commit messages makes your Git history predictable, changelogs automated, and team collaboration smoother. It also plays perfectly with tools like semantic versioning and CI/CD pipelines.&lt;/p&gt;

&lt;p&gt;And Laravel Commit‑Lint brings all of this goodness—natively—to your Laravel workflow.&lt;/p&gt;


&lt;h2&gt;
  
  
  📦 What Is Laravel Commit‑Lint?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Laravel Commit‑Lint&lt;/strong&gt; is a plug-and-play package that installs a &lt;code&gt;commit-msg&lt;/code&gt; Git hook in your Laravel project. Every time you commit, it validates your message against the &lt;a href="https://www.conventionalcommits.org/en/v1.0.0/" rel="noopener noreferrer"&gt;Conventional Commits&lt;/a&gt; format:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;type&amp;gt;(&amp;lt;scope&amp;gt;): &amp;lt;short description&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No valid format? The commit is blocked—with helpful feedback to fix it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;✅ &lt;code&gt;feat(auth): add login endpoint&lt;/code&gt;&lt;br&gt;&lt;br&gt;
❌ &lt;code&gt;updated stuff&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And don’t worry—special commits like &lt;code&gt;merge&lt;/code&gt;, &lt;code&gt;WIP&lt;/code&gt;, or &lt;code&gt;revert&lt;/code&gt; are automatically skipped.&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%2Fhv8yhh62b4kp1gg8gin0.webp" 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%2Fhv8yhh62b4kp1gg8gin0.webp" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚙️ Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🔍 &lt;strong&gt;Real-time commit validation&lt;/strong&gt; – Catch bad messages before they hit your repo.&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;Zero-config Artisan install&lt;/strong&gt; – Just run &lt;code&gt;php artisan commitlint:install&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;🚫 &lt;strong&gt;Smart skipping&lt;/strong&gt; – Merge, WIP, and revert commits are ignored.&lt;/li&gt;
&lt;li&gt;🛠 &lt;strong&gt;Customizable hooks&lt;/strong&gt; – Install to a custom path or use your own stub.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Getting Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Install the Package
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;composer require mubbi/laravel-commit-lint &lt;span class="nt"&gt;--dev&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Install the Git Hook
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php artisan commitlint:install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it. You’re live.&lt;/p&gt;

&lt;p&gt;Want a custom hook path?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php artisan commitlint:install /your/custom/path
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or maybe a custom hook script?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php artisan commitlint:install &lt;span class="nt"&gt;--stub&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/path/to/your/hook.stub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧪 Try It in Action
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"fix(user): handle null emails"&lt;/span&gt;
&lt;span class="c"&gt;# ✅ Success&lt;/span&gt;

git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"fixed stuff"&lt;/span&gt;
&lt;span class="c"&gt;# ❌ Rejected – helpful message shown&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"WIP: experimenting with Stripe"&lt;/span&gt;
&lt;span class="c"&gt;# ✅ Skipped – WIP commit allowed&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  💡 Real-World Use Case: Why This Exists
&lt;/h2&gt;

&lt;p&gt;While contributing to the Laravel core, I &lt;a href="https://github.com/laravel/framework/pull/56443" rel="noopener noreferrer"&gt;proposed PR #56443&lt;/a&gt; to introduce commit linting as a built-in feature. The Laravel team appreciated the idea, but Taylor Otwell preferred keeping the core minimal—so I released it as a standalone tool.&lt;/p&gt;

&lt;p&gt;Now, Laravel devs can still enjoy structured commit messages—without touching the framework itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧰 Valid vs Invalid Commit Messages
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ✅ Valid Examples
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;feat: add user registration&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fix: correct timezone offset&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chore: clean up config files&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs(readme): update usage guide&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ Invalid Examples
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;fixed auth&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;update stuff&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bug fix&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;done&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When a message is invalid, you’ll see a helpful explanation and suggested fixes—so you can commit confidently.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧯 Troubleshooting &amp;amp; Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;🔐 &lt;strong&gt;Permission issues?&lt;/strong&gt; Run:&lt;br&gt;&lt;br&gt;
&lt;code&gt;chmod +x .git/hooks/commit-msg&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;📂 &lt;strong&gt;Custom path errors?&lt;/strong&gt; Ensure the directory exists and is writable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🌀 &lt;strong&gt;Artisan command not found?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Run &lt;code&gt;composer dump-autoload&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🧪 &lt;strong&gt;Need flexibility?&lt;/strong&gt; Customize the hook stub and format to match your team’s standards.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;❌ &lt;strong&gt;Want to remove it?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Delete the hook file or run:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  composer remove mubbi/laravel-commit-lint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧭 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Laravel Commit‑Lint is a no-nonsense tool for teams who value:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Clean, consistent Git logs
&lt;/li&gt;
&lt;li&gt;✅ Seamless automation (semantic versioning, changelogs, CI)
&lt;/li&gt;
&lt;li&gt;✅ Laravel-native tooling—no Node or external dependencies
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s especially perfect for Laravel 12+ teams that want structure without sacrificing speed.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Ready to Try?
&lt;/h2&gt;

&lt;p&gt;Add it to your project today:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;composer require mubbi/laravel-commit-lint &lt;span class="nt"&gt;--dev&lt;/span&gt;
php artisan commitlint:install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Visit the repo: &lt;a href="https://github.com/mubbi/laravel-commit-lint" rel="noopener noreferrer"&gt;github.com/mubbi/laravel-commit-lint&lt;/a&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>git</category>
      <category>commit</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Turning AI Struggles into Standards — The Birth of Copilot Instructions</title>
      <dc:creator>Mubbasher Ahmed Qureshi</dc:creator>
      <pubDate>Wed, 25 Jun 2025 05:42:08 +0000</pubDate>
      <link>https://dev.to/mubbi/turning-ai-struggles-into-standards-the-birth-of-copilot-instructions-304</link>
      <guid>https://dev.to/mubbi/turning-ai-struggles-into-standards-the-birth-of-copilot-instructions-304</guid>
      <description>&lt;p&gt;In this article, I share how constant frustration with inconsistent AI coding suggestions led me to create &lt;strong&gt;Copilot Instructions&lt;/strong&gt; — a simple but powerful way to turn AI struggles into clear project standards. Instead of explaining the same coding preferences over and over, I realized we can guide AI like we guide human teammates: with written instructions. That’s exactly what &lt;code&gt;.github/copilot-instructions.md&lt;/code&gt; does. I’ve even provided ready-made templates for Laravel, React, PHP, and more, so teams can quickly align AI tools like GitHub Copilot with their coding style. The whole point? Less frustration, more consistent code, and AI that actually understands your project.&lt;/p&gt;

&lt;p&gt;Story Link: &lt;a href="https://mubbiqureshi.medium.com/turning-ai-struggles-into-standards-the-birth-of-copilot-instructions-8cfac368d50a" rel="noopener noreferrer"&gt;Medium Article Link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What you guys do for your AI Assistance?&lt;/p&gt;

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