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

推荐订阅源

F
Full Disclosure
Recorded Future
Recorded Future
T
Tenable Blog
S
Securelist
C
CERT Recently Published Vulnerability Notes
T
Threatpost
S
Schneier on Security
A
Arctic Wolf
The Hacker News
The Hacker News
C
CXSECURITY Database RSS Feed - CXSecurity.com
Know Your Adversary
Know Your Adversary
P
Privacy International News Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Register - Security
The Register - Security
Cisco Talos Blog
Cisco Talos Blog
AWS News Blog
AWS News Blog
K
Kaspersky official blog
T
True Tiger Recordings
T
Threat Research - Cisco Blogs
V
Vulnerabilities – Threatpost
P
Palo Alto Networks Blog
T
The Exploit Database - CXSecurity.com
小众软件
小众软件
B
Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Azure Blog
Microsoft Azure Blog
Cyberwarzone
Cyberwarzone
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tor Project blog
Spread Privacy
Spread Privacy
Malwarebytes
Malwarebytes
P
Proofpoint News Feed
F
Fox-IT International blog
F
Fortinet All Blogs
P
Privacy & Cybersecurity Law Blog
G
GRAHAM CLULEY
量子位
Latest news
Latest news
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
Project Zero
Project Zero
T
Tailwind CSS Blog
N
Netflix TechBlog - Medium
Martin Fowler
Martin Fowler
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
I
Intezer
博客园_首页
腾讯CDC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
Darknet – Hacking Tools, Hacker News & Cyber Security

DEV Community

TIL 5/22/2026 How We Shipped more than 60 Design System Components in 5 Weeks Using Figma as the Single Source of Truth Why HVAC Owners Lose More Money in the Office Than They Make in the Field What will you think of when you read about a neural network!!? Mathematics? 🤔 I Built a Free Finance Dashboard as a Solo Dev — Here's What I Learned Drive JHipster with your AI agent: introducing jhipster-mcp (v0.0.4) Pokemon Battle Simulator Napkin Challenge! Looking for a Founding Engineer Copy Job CDC with SQL estate is now GA in Microsoft Fabric what terminal for CLI in Windows 10 do users like most Is Claude API Worth $3/1M Tokens Over Self-Hosted Llama? We Asked 10 LLMs to Write Efficient Code. Only 4 Got Better. 10 Models Tested: From 81.6% to 10%. The Free Tier is a Full-On Gamble. Building a Browser-Based Free Isometric Illustration Maker for Modern UI Animation Workflows Use Blunt Prompts and Get Shit Done MCP servers are just REST APIs in a polite wrapper - here's 5 lines of Python I Got Tired of LLMs Hallucinating Compliance, So I Built an Open-Source Governance Layer Containers & Agents with Docker & OpenClaw All About AI & Using Claude On the Shoulders of Giants: Package Registries, Node & NPM Decoupling Webhook Verification and Automating Unstructured Data Ingestion Why flag_shih_tzu is changing its default SQL for bit flags Cómo construí una calculadora de interés compuesto con JavaScript vanilla y por qué todo el mundo debería usar una The Hard Part of Building a Realtime Binary Options Platform Was Not the Chart When the Runtime Was the Wall: How Rust Broke a 50 ms SLA and Saved the Day 🎤 Building a Real-Time Voice AI Assistant Using Open Source Tools I Benchmarked 5 Voice AI Stacks. Only 2 Stayed Under 300ms. I built AimVantage — an AI tool that turns your CV + a job link into a full interview prep pack in 90 seconds Your LLM Is Wrong. Your Codebase Is Why. Building an indexable verification page for a freshly-launched small business FinancialService schema for a real merchant services brokerage: a case study How Free Online Tools Survive Without Collecting Your Email The Day the Treasure Hunt Engine Buried Itself Alive Zero-Day Exploits, GitHub Actions Supply Chain Attacks, and OTP Auth Flaws Only 14.6% of 'AI-native' job postings actually name an AI tool. I checked 37,920. AI Agents, Jupyter Tooling, and LLM Code Gen Production Metrics SQLite Internals, PostgreSQL Performance & Multi-Tenancy Patterns FlashAttention CUDA Kernel, Strix Halo MOE Boost, & NVIDIA DLSS 4.5 Driver Update From "Vibe Coding" to Precision: Why GitHub Spec Kit Changes Everything Scale Wars #5 — Twitter: The Fan-out Pattern and the Architecture Behind 140 Characters Retrying HTTP Requests in Go Without Making It Worse Building a Vector Search Engine from Scratch: The Math and Mechanics of HNSW Technical Due Diligence Checklist for Startup Investors (2026) My AI agent ran overnight and I woke up to a $47 bill — so I built a kill-switch Run your first AI agent in Java — for free, with Mistral The Joke Worked: Building an AI-Powered COBOL Meeting Auditor with Hermes Agent Deep Dive into Y.js CRDTs for Real-Time Multiplayer Editors Async Python for AI Applications: Patterns That Don't Break Under Load The Hidden Reason GRC Programs Keep Failing: It's a Design Problem, Not a People Problem An LLM API call, in 4 GIFs Fear not the Markdown: A Beginner's Quest 😱 [Boost] I built a search engine for 3 million Polish businesses — here's what I learned An Intelligence Briefing for the Port of Rotterdam, from a Single Prompt How I Built Semantic Discussion Clustering Without Embeddings (and Why It Was Good Enough) I Built a Real-Time Simulation Game in a Single HTML File (Without React or Custom JavaScript) I Got Tired of SNMP Dev Hell, So I Built Trishul SNMP Suite 98. RAG: Give Your AI Access to Your Documents Why Getting a Tech Job Right Now Feels Broken? The Container Runtime Nobody Told You About (And Four Others) The Singleton Labyrinth Build your first MCP server in TypeScript: the 2026 setup that takes 30 minutes. Check Wallet Balances Across 4 Chains with Zero Dependencies — chain_balance.py Vectr — Code Intelligence AI Tool Veltrix Was Killing Us With YAML 5 PostgreSQL locking behaviors that trip people up Beyond Monolithic AI: How to Build a Pluggable "Brain" Architecture for Autonomous Agents The Operational Cost of JWT Lifecycle Management: Overlooked Details Mastering Structured JSON Outputs with Gemini API ATR Implements the Detection Layer the NSA Identified as Missing in MCP I tried both Cursor and Antigravity(1.20) - Switching Context - which one is better? Negative Lookups in Bf-Tree: Caching Things That Don't Exist My Struggles as a Software Engineer in 2026 Why Hybrid Metaheuristics Still Beat “Smarter” AI in Real-World Optimization Cómo destacar como JR DEV en tu equipo I got tired of guessing which model holds my VRAM, so I built a tiny dashboard Qwen Is Not Yet Ready to Power Local OpenClaw Deployments Top 7 Featured DEV Posts of the Week Why I got frustrated with AI job search tools and built my own 10 Best Open-Source AI Agents for 2026 Contract Analysis Will Replace Legal Gatekeeping AWS Cloud Shell with Antigravity CLI Building Reliable Event Delivery for XRPL Applications AMTP: HTTP for the Agentic Web — A New Markdown-First Protocol for AI Agents LLM Security Vulnerabilities Engineers Need to Know in 2026 Shared Build Cache: Makes Sense for the Independent Developer? Live Lessons From Running a 5-Minute Polymarket Crypto Bot Cómo Evaluar Agentes IA: Tutorial de LLM-as-Judge Day 2 of Python Learning 🐍 I built a local-first Apple Health recovery briefing that shows its math I Built a REST Microservice With a Database in 3 Files — and Wrote Zero Code 10 Avro Schema Mistakes Even Experienced Developer Do Commit: Refactor background workers and logging pipeline GitHub Actions vs Jenkins vs GitLab CI: A Developer's Honest Comparison (2026) Clean Architecture in MongoDB + C#: Why is the Repository Pattern Alone Not Enough? I Tested 10 More Models. Five Brand New Families Debuted. None Scored Below 75%. I Almost Quit Coding to Become a Welder Understanding Reinforcement Learning with Human Feedback Part 6: How the Reward Model Trains the Original Model # Level Up Your Portfolio with Wowfolio.in: Free, Customizable, Type Inhabitation in Lean: Why “Hello {name}” Can Become a Theorem
Vibe Coding Meets Spec-Driven Development: The Best of Both Worlds
Tahirih Jali · 2026-05-27 · via DEV Community

Stop choosing between speed and structure, you don't have to.


The Tension Every Developer Feels

If you've been coding with AI assistants lately, you've probably experienced both extremes.

On one side: vibe coding, you open a chat, describe what you want in plain English, and let the model run. It feels like magic. You ship fast, you stay in flow, and the dopamine hits are real.

On the other side, there's a nagging feeling. The codebase starts to drift. A component does three things it shouldn't. A bug appears that you swear you didn't introduce. You ask the AI to fix it, and it breaks something else. The vibes turn chaotic.

Enter Spec-Driven Development (SDD), the idea that before you write (or generate) a single line of code, you write a specification: a clear, structured document that defines what you're building, why, and how it should behave. It's not a new concept, but it's having a renaissance in the age of AI coding.

The good news? You don't have to pick one. In fact, combining them is arguably the most productive way to build software today.


What Is Vibe Coding, Really?

The term was popularized by Andrej Karpathy in early 2025: "There's a new kind of coding I call vibe coding, where you fully give in to the vibes, embrace exponentials, and forget that the code even exists."

It's characterized by:

  • Prompt-first, code-second thinking
  • High iteration speed
  • Minimal upfront planning
  • Trusting the model to fill in the blanks

Vibe coding shines for prototyping, exploration, and solo projects where speed matters more than maintainability. It's a legitimate and powerful workflow, but it has a ceiling.


What Is Spec-Driven Development?

SDD is the practice of writing a machine-readable (and human-readable) specification before implementation begins. A spec typically includes:

  • Goal: What problem are we solving?
  • Scope: What's in and what's explicitly out?
  • Functional requirements: What should the system do?
  • Non-functional requirements: Performance, security, scalability constraints
  • Data models / API contracts: The shape of the data
  • Acceptance criteria: How do we know it's done?

In an AI-assisted workflow, the spec becomes the single source of truth you feed into every prompt. Instead of re-explaining context each time, you anchor the model to a document it can reference.


Why Each Approach Alone Falls Short

Vibe Coding Without Specs

You: "Build me a user authentication system"
AI: *generates 300 lines of code*
You: "Actually add role-based access control"
AI: *refactors half the codebase*
You: "Wait, why is the session logic in the component?"
AI: "Good point, let me move it..."
You: *three hours later, untangling spaghetti*

Enter fullscreen mode Exit fullscreen mode

Without a spec, the AI optimizes for your last message, not your actual goal. Every new prompt is a new negotiation with the model, and context drift is inevitable.

Spec-Driven Without the Vibe

Heavy specification processes can kill momentum. Writing a 10-page PRD before you know if an idea even works is a trap. You over-engineer requirements for problems you haven't validated. The spec becomes a bureaucratic artifact nobody reads.


The Hybrid Workflow: Spec First, Vibe Fast

The sweet spot is a lightweight spec that guides rapid AI-assisted implementation. Here's how it works in practice:

Step 1: Write a Minimal Viable Spec (MVS)

Before touching any AI coding tool, spend 15–30 minutes writing a short spec. It doesn't need to be formal, a markdown file works perfectly.

# Feature: User Authentication

## Goal
Allow users to register, log in, and manage sessions securely.

## Scope
- IN: Email/password registration, JWT sessions, logout
- OUT: OAuth, 2FA (next iteration)

## Data Model
User { id, email, passwordHash, createdAt, role: "user" | "admin" }
Session { token, userId, expiresAt }

## API Contracts
POST /auth/register  → { token, user }
POST /auth/login     → { token, user }
POST /auth/logout    → { success: boolean }
GET  /auth/me        → { user }

## Acceptance Criteria
- Passwords hashed with bcrypt (min 12 rounds)
- JWT expires in 7 days
- Invalid credentials return 401, never expose which field failed
- Logout invalidates the token server-side

Enter fullscreen mode Exit fullscreen mode

That's it. Two hundred words that prevent hours of confusion.

Step 2: Use the Spec as Your Prompt Foundation

Every AI prompt now starts with context from the spec:

Given this spec: [paste relevant section]

Implement the POST /auth/register endpoint. Use bcrypt for 
hashing and return a signed JWT. Follow the data model defined above.

Enter fullscreen mode Exit fullscreen mode

The model is no longer guessing your intent, it's executing against a contract.

Step 3: Vibe Within the Spec's Boundaries

Once the structure is in place, let the vibes flow. Need to add error handling? Optimize a query? Style a component? You can move fast because the foundation is solid. The spec sets the walls; the vibe coding furnishes the room.

Step 4: Update the Spec When Requirements Change

This is the discipline that separates good hybrid workflows from bad ones. When scope changes (and it will), update the spec first, then regenerate or refactor the code. Don't let the spec become stale documentation, it's a living contract.

Step 1: Edit spec.md → add OAuth section
Step 2: Prompt AI with updated spec section
Step 3: Let it implement

Enter fullscreen mode Exit fullscreen mode


A Practical Example: Building a Task Manager

Let's say you want to build a simple task manager. Here's how the hybrid approach plays out:

Pure vibe approach:

"Build a task manager with React and Node"

You'll get something, but what database? What auth? What data model? You'll spend the next hour correcting assumptions.

Hybrid approach:

Write a 10-minute spec:

# Task Manager MVP

## Stack: React + Express + SQLite (simple, no Docker needed)
## Auth: None for MVP (single user, local app)

## Data Model
Task { id, title, status: "todo"|"in_progress"|"done", createdAt }

## UI Requirements
- List view grouped by status
- Add task via inline input
- Drag or click to change status
- No delete (archive instead)

## Out of Scope
- Multi-user, tags, due dates, notifications (v2)

Enter fullscreen mode Exit fullscreen mode

Now your AI prompts are laser-focused:

"Using this spec, generate the Express API with SQLite. Only implement the endpoints needed for CRUD on tasks."

The result? Clean, predictable code that matches what you actually want.


Tools That Make This Workflow Shine

The spec-then-vibe approach pairs beautifully with AI tools that support long context or file-based prompting:

  • Claude: excellent at reasoning over long specs and maintaining consistency
  • Cursor / Windsurf: load your spec as a project rule or context file
  • GitHub Copilot Workspace: spec-to-code is literally the core feature
  • Claude Code: ideal for feeding specs through the CLI and maintaining context across sessions

The key is making your spec accessible to the AI at all times, not just in the first prompt.


When to Use Each Mode

Situation Recommended Mode
Exploring a new idea Pure vibe, validate fast
Building a feature in a production codebase Spec first, always
Solo weekend project Light spec (30 min max)
Team collaboration Full spec with acceptance criteria
Debugging / fixing issues Vibe with the existing spec as context
Greenfield product Spec-driven from day one

The Mindset Shift

The biggest change isn't technical, it's philosophical. Vibe coding tempts you to treat the AI as an oracle: just ask and receive. Spec-driven development reminds you that you are still the architect. The AI is an extraordinary executor, but it needs direction.

When you combine both, you get something powerful: the speed of vibe coding without the chaos, and the structure of specs without the bureaucracy.

Think of it this way: specs are the map, vibe coding is the engine. You can drive fast, but you still need to know where you're going.


Getting Started Today

  1. Next time you start a feature, write a 15-minute spec in markdown
  2. Include: goal, scope boundaries, data model, and acceptance criteria
  3. Paste the relevant section into every AI prompt
  4. Update the spec before you update the code when things change
  5. Ship fast within those boundaries

You'll be surprised how much less time you spend fixing AI hallucinations, and how much more time you spend shipping things that actually work.


Have you tried combining vibe coding with specs? What's your workflow? Drop a comment below, I'd love to hear how others are navigating this.