惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
WordPress大学
WordPress大学
Help Net Security
Help Net Security
Jina AI
Jina AI
Security Latest
Security Latest
Y
Y Combinator Blog
Project Zero
Project Zero
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
Know Your Adversary
Know Your Adversary
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
NISL@THU
NISL@THU
Cisco Talos Blog
Cisco Talos Blog
博客园 - 司徒正美
MyScale Blog
MyScale Blog
Cyberwarzone
Cyberwarzone
D
Docker
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
C
CERT Recently Published Vulnerability Notes
B
Blog
L
LangChain Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
SecWiki News
SecWiki News
The Hacker News
The Hacker News
C
Check Point Blog
L
Lohrmann on Cybersecurity
V2EX - 技术
V2EX - 技术
S
Securelist
T
Threat Research - Cisco Blogs
Stack Overflow Blog
Stack Overflow Blog
TaoSecurity Blog
TaoSecurity Blog
云风的 BLOG
云风的 BLOG
Latest news
Latest news
人人都是产品经理
人人都是产品经理
L
LINUX DO - 最新话题
Application and Cybersecurity Blog
Application and Cybersecurity Blog
The Register - Security
The Register - Security
Webroot Blog
Webroot Blog
Simon Willison's Weblog
Simon Willison's Weblog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Security Blog
Microsoft Security Blog
AWS News Blog
AWS News Blog
C
Cybersecurity and Infrastructure Security Agency CISA
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
小众软件
小众软件
T
Tailwind CSS Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
宝玉的分享
宝玉的分享
O
OpenAI News

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
AI Coding Standards at Scale: Versioned AI Rules for Cursor, Claude Code, and Beyond
Léo Le Roy · 2026-05-26 · via DEV Community

AI Coding Standards at Scale: How We Versioned Our Team's AI Rules with Claude Code

"AI amplifies best practices… and worst ones."


TL;DR

  • AI without shared rules amplifies chaos as fast as it amplifies good practices
  • Treating AI instructions as versioned, distributed team contracts changes the dynamic
  • Layered context (universal → tech-specific → project) keeps rules relevant without noise
  • Two workflow gates — /plan before coding, /review before merging — move feedback upstream
  • Scaling to multiple teams requires parameterizing identity, not forking the repo
  • Measuring whether any of it actually works is still an open problem

The Paradox at the Heart of AI-Assisted Development

AI coding standards weren't a priority for us — until they became a problem. As a lead software engineer at HiPay, I watched the same pattern repeat on every team that adopted Claude Code or other AI coding assistants without shared configuration: disciplined developers got more productive, and undisciplined ones got more chaotic — at exactly the same rate.

When I looked at how everyone on our team had configured their AI assistant, what I found wasn't reassuring. Each developer had their own setup. Different context files, different constraints, different rules. One had configured their assistant to always check for tests before suggesting changes. Another had given it no architectural context at all. A third had no guardrails around secrets or git conventions.

The consequences were concrete. A hardcoded API key committed to a feature branch. Changelog entries perpetually forgotten until the MR got blocked at review. Architecture patterns that varied wildly between contributors who sat ten meters apart. And one developer whose AI was reading hundreds of lines of irrelevant files on every request — tokens burned, context polluted, slower responses for no benefit.

The culprit wasn't the AI. Every tool is only as effective as the constraints you put on it. The real problem was that we had treated AI configuration as a personal preference — and we were paying for it in rework, review friction, and repeated mistakes.


The Mental Shift: Treating AI Rules as Versioned Team Contracts

The fix felt obvious in retrospect.

We already version everything that matters: our linters, our CI pipelines, our Docker configs, our commit message format. We had collectively agreed that "it works differently on my machine" wasn't acceptable for build tooling. Why was it acceptable for the AI assistant that helps us write, review, and ship code?

The key insight: AI instructions aren't personal preferences. They're team contracts. When I tell an AI assistant "never modify the core transaction service without checking its dependents first," that's not my opinion — it's institutional knowledge that affects everyone on the team.

So I built a centralized repository — a single source of truth for how our AI assistants should behave. It's versioned, published as a package, and distributed to every project with a single command.

Two design decisions that turned out to matter more than I expected:

Rules are copied, not referenced. Each project gets its own local copy of the relevant rules at install time. This means a project can stay on v1.8 while another adopts v1.9 — no hard coupling between repos, no "the rules changed upstream and broke our workflow."

Updates are pull, not push. Teams explicitly pull new versions. No surprises. No rules changing under you while you're mid-sprint.

One command installs the right rules for your stack - core conventions, tech-specific constraints, and your team's context, all in one shot.


The Layering Problem: How We Structured Our AI Rules Across Tools

The first version of the standards repo was a flat list of conventions. It worked for one team. It didn't scale.

The problem is that "context" isn't one-size-fits-all. An AI working on a NestJS backend needs to understand hexagonal architecture, port/adapter boundaries, and use-case placement. An AI working on a React frontend needs hook rules, component structure conventions, and testing library patterns. An AI on a Symfony codebase needs controller-service-repository layering and PHP typing conventions.

Giving all these teams one monolithic rules file means half of it is noise for any given developer. And noise in AI context is expensive — it dilutes the rules that matter and burns tokens on every request.

I landed on a three-layer model:

Layer 1 — Universal rules. Always active, regardless of tech stack. No secrets in code. Git convention enforcement. No destructive operations without explicit confirmation. These are the floor — non-negotiable across the entire org.

Layer 2 — Tech-specific rules. Selected automatically based on what the project uses. NestJS projects get hexagonal architecture constraints. React projects get hooks rules. The AI only sees what's relevant to its context.

Layer 3 — Project context. This is where institutional knowledge lives. What does this specific repository do? What are its known failure patterns? Which modules are fragile? What's the domain model? This layer is different per repo, and it captures the things no linter or generic rule can encode.

The key design principle: layers compose, they don't conflict. Layer 2 can add specificity for tech-specific cases. Layer 3 adds context without replacing anything. The AI sees a coherent, layered picture — not a contradictory mess.


Two Workflows That Changed How We Ship: /plan and /review with Claude Code

The layered rules were the foundation. But what actually changed day-to-day development was two structured workflows built on top of them.

I didn't design these from scratch. I drew inspiration from mattpocock/skills and other open-source AI skill frameworks, then assembled the elements that mattered most for our context: persistent memory of past architectural decisions, impact analysis to detect blast radius before writing a line, and structured prompting that forces the AI to surface its own uncertainty — asking questions instead of confidently producing a wrong answer.

The underlying problem with code review: feedback arrives after the work is done. A developer writes two hours of code, opens an MR, and then finds out their change breaks a module they hadn't considered. Either they rewrite a significant chunk, or the reviewer wastes their review budget on "you forgot to update the changelog" instead of real architecture questions.

The solution was to move AI guidance upstream.

Before writing a single line: /plan

When starting a new ticket, the developer invokes /plan. Rather than reading the codebase blindly, the AI uses dedicated tooling to run targeted searches and impact analysis — querying its memory for past decisions, identifying what the proposed change will touch, reading only the relevant stack conventions.

What comes back isn't code. It's a structured plan: validated scope, identified risks, recommended approach.

A concrete example: a developer was about to add a CSV export filter to our transaction module. Without /plan, they would have modified the core transaction service — a reasonable first instinct. After analyzing the impact, the AI found that this service was used by three other modules, and that changing its signature would be a breaking change for all of them. It recommended creating a new use-case instead, leaving the existing contract intact.

That discovery took three minutes. Without /plan, it would have emerged during code review — after the code was written.

Before opening the MR: /review

After the code is written, /review runs a systematic checklist: changelog entry in the correct format, no hardcoded secrets, no debug code left in, architecture boundaries respected, blast radius identified.

The output is a structured report with clear pass/warn/block verdicts:

🔍 Review — PROJ-1234 : CSV Export Filter

✅ CHANGELOG : [feat][PROJ-1234]: Add CSV export filter — format OK
✅ Architecture : ExportCsvUseCase in application/ — boundaries OK
✅ No console.log or debug code detected

⚠  Blast radius: TransactionService touched by 3 modules
   → Verify widget.spec.ts and dashboard.spec.ts still pass

❌ Secret detected: EXPORT_API_KEY hardcoded at line 47
   → Move to .env and add to .env.example

──────────────────────────────────────────────
Verdict: ✋ Changes requested
  Blocking: 1 (hardcoded secret)
  Warning:  1 (cross-module test coverage)

Enter fullscreen mode Exit fullscreen mode

The human reviewer never has to catch the secret. They can spend their review time on the architecture question: is this use-case in the right place? Is the abstraction correct?

One last thing /review does that's easy to overlook: it saves the decisions made — the chosen approach, the trade-offs accepted — into a persistent memory. The next time someone invokes /plan on the same codebase, those decisions are already there. The system learns from each cycle.

That's the shift. AI handles the checklist. Humans handle the judgment. And nothing gets forgotten.

Two gates, two minutes each: /plan surfaces risks before you write a line, /review catches what humans shouldn't have to.

To put it plainly:

What changes when AI configuration stops being a personal preference.


Scaling to Multiple Teams: The Hard Part

The system worked well for one team. Then a second team wanted to adopt it.

The problem: every context file was implicitly written for our team. Our ticket prefix. Our team name. Our release workflows. A second team could technically install the package, but they'd get rules that referenced the wrong context at every turn.

The naive solution is to fork the repo. I want to explain why this fails: the moment you fork, you have two standards instead of one. Improvements to the universal rules don't propagate. After six months, they've diverged enough that merging is impractical. You've solved the short-term adoption problem and created a long-term maintenance problem.

The principle I landed on: standardize the structure, parameterize the identity.

Universal rules — the security guardrails, the architecture constraints, the git conventions — stay universal. They belong to the org, not to any single team.

Team identity is injected at install time. The AI assistant's context file gets populated with the correct team name, ticket prefix, and team-specific context. The install process prompts for these values once and bakes them in.

Team-specific workflows live in a dedicated namespace, not in core. A team can add their own release runbook, their own known failure patterns — without touching shared rules.

The governance model this creates: one team owns the standards repo (they publish versions, review changes to universal rules). Other teams contribute their context via pull requests — adding their project context files, their team-specific runbooks, their known failure patterns. Shared ownership without fragmentation.

The practical result: a new team goes from zero to a fully configured AI assistant in minutes. They inherit all org-wide guardrails automatically, then add their specific context on top.


What's Next: Open Problems in AI Standards Governance

The multi-team generalization (v1.10) was the milestone that changed the scope of the project. It went from "our team's internal tooling" to "something other teams can actually adopt without forking it." That shift opens a different set of questions.

The immediate next step is rolling it out to other teams and observing what breaks. Rules that felt obvious to us may be confusing to a team with a different tech stack or a different way of working. The contribution model — teams submitting PRs to add their own project context — will be the real test of whether the governance model holds up at scale.

The longer-term question is one I don't have an answer to yet: how do you know when a rule has become obsolete? The codebase evolves, the team's practices evolve, and a rule that was hard-won six months ago may be actively misleading today. Keeping the standards fresh is a discipline problem as much as a tooling problem — and I haven't solved it.

There's also a deeper measurement challenge I'm still working through. Is the system actually being used? Are the workflows genuinely changing how developers write and review code, or are they being quietly skipped when the deadline is tight? And beyond usage — is it actually making things better? Fewer regressions, less rework, faster reviews? Answering these questions properly requires instrumentation I'm still building out. Gut feel says yes. But gut feel is exactly what I was trying to replace.



FAQ

How do you standardize AI coding assistants across a development team?
Treat AI configuration files (.cursorrules for Cursor, CLAUDE.md for Claude Code, or equivalent) as versioned team contracts, not personal preferences. Publish them as a package, distribute them to every project with a single install command, and use a pull model so teams explicitly opt into updates — no surprises mid-sprint.

What are .cursorrules / CLAUDE.md files and how do they work for team AI standards?
These are context files that AI coding assistants (Cursor, Claude Code, and others) read automatically in any project. They tell the assistant how to behave: what architecture patterns to follow, what guardrails to apply, what team conventions to enforce. The tool name differs, the principle is the same. By versioning these files in a shared repo and distributing them like a package, you turn individual AI configs into shared team knowledge.

How do you scale AI assistant configuration (Cursor, Claude Code…) across multiple teams without forking?
Standardize the structure, parameterize the identity. Universal rules (security guardrails, git conventions, architecture constraints) stay shared. Team-specific values — ticket prefix, team name, project context — are injected at install time. New teams inherit all org-wide rules automatically and add their context on top, without touching the core.

What is the /plan workflow?
/plan is a structured workflow invoked before writing any code. It runs targeted impact analysis, queries past architectural decisions from memory, and returns a structured plan — validated scope, identified risks, recommended approach — before a single line is written. It's designed to surface the kind of problems that would otherwise only appear during code review.


If you're building something similar — or have a different approach to AI coding standards at team scale — I'd love to compare notes in the comments. And if you want to dig into the Claude Code setup that powers /plan and /review, drop a comment and I'll share the repo.