Stop Prompting, Start Engineering: Implementing Spec-Driven Development with Get-Shit-Done
The gsd-build/get-shit-done framework is essentially a "force multiplier" for AI-assisted coding. It moves away from simple chat-and-copy workflows and toward a structured, engineering-first approach.
Here’s a breakdown of why this matters and how to get it running.
When we use AI like Claude Code, the biggest bottleneck isn't the AI's coding ability—it's the context and clarity of our instructions. gsd-build solves this through three core pillars
Meta-Prompting
Instead of you writing long, messy prompts, the system uses "prompts to write prompts," ensuring the AI follows high-quality logic and coding standards.
Context Engineering
It intelligently gathers only the relevant parts of your codebase, so the AI doesn't get "confused" by irrelevant files or hit token limits unnecessarily.
Spec-Driven Development (SDD)
This is the game-changer. You define what you want in a .spec file first. The AI then implements the code to match that spec perfectly. It’s like Test-Driven Development (TDD), but for the AI era.
Since this is designed for Claude Code and OpenCode, the setup is usually centered around your CLI environment.
Usually, you’ll clone the utility or install it via your package manager (like npm or pip, depending on the specific wrapper).
# Example: Cloning the toolkit into your project
git clone https://github.com/gsd-build/get-shit-done.git .gsd
You'll want to ensure your AI CLI (like claude) can access the .gsd instructions. Most engineers alias the "GSD" command to make it snappy.
Let's look at how you'd actually use Spec-Driven Development to build a feature.
Instead of saying "Build me a login page," you create a login.spec.md file.
# Specification: User Login Component
## Requirements
- Input: Email and Password.
- Validation: Email must be valid format; Password > 8 chars.
- Action: Call `/api/v1/login` on submit.
- State: Show loading spinner during request.
## Tech Stack
- React + Tailwind CSS
- Lucide Icons for the eye/hide password toggle.
Using the gsd command (or your configured meta-prompt), you feed this spec to Claude Code
claude "Implement the feature described in docs/specs/login.spec.md using the @gsd-build standards"
The system ensures the output isn't just a snippet, but a production-ready file.
// src/components/auth/LoginForm.tsx
import React, { useState } from 'react';
import { Eye, EyeOff, Loader2 } from 'lucide-react';
export const LoginForm = () => {
const [loading, setLoading] = useState(false);
// ... state logic ...
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault();
setLoading(true);
// Implementation follows the spec exactly...
};
return (
<form className="space-y-4 p-6 border rounded-lg shadow-sm">
{/* High-quality, Tailwind-styled UI generated based on GSD context */}
</form>
);
};
By using gsd-build, you aren't just "chatting" with an AI; you're orchestrating it. It forces you to think about the design (the spec) before the code is written, which leads to fewer bugs and much higher-quality PRs. It turns the AI into a Senior Pair Programmer that understands your architecture.