lean-spec 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-J7ZSZ5VJ.js → chunk-ER23B6KS.js} +603 -633
- package/dist/chunk-ER23B6KS.js.map +1 -0
- package/dist/{chunk-S4YNQ5KE.js → chunk-LVD7ZAVZ.js} +9 -17
- package/dist/chunk-LVD7ZAVZ.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +18 -36
- package/dist/cli.js.map +1 -1
- package/dist/commands-ZNL7ZCHU.js +4 -0
- package/dist/commands-ZNL7ZCHU.js.map +1 -0
- package/dist/frontmatter-R2DANL5X.js +3 -0
- package/dist/frontmatter-R2DANL5X.js.map +1 -0
- package/dist/mcp-server.d.ts +16 -0
- package/dist/mcp-server.js +3 -7
- package/dist/mcp-server.js.map +1 -1
- package/package.json +14 -21
- package/CHANGELOG.md +0 -326
- package/LICENSE +0 -21
- package/README.md +0 -421
- package/dist/chunk-J7ZSZ5VJ.js.map +0 -1
- package/dist/chunk-S4YNQ5KE.js.map +0 -1
- package/dist/frontmatter-26SOQGYM.js +0 -23
- package/dist/frontmatter-26SOQGYM.js.map +0 -1
package/README.md
DELETED
|
@@ -1,421 +0,0 @@
|
|
|
1
|
-
# LeanSpec
|
|
2
|
-
|
|
3
|
-
<p align="center">
|
|
4
|
-
<img src="docs-site/static/img/logo-with-bg.svg" alt="LeanSpec Logo" width="120" height="120">
|
|
5
|
-
</p>
|
|
6
|
-
|
|
7
|
-
<p align="center">
|
|
8
|
-
<a href="https://www.npmjs.com/package/lean-spec"><img src="https://img.shields.io/npm/v/lean-spec.svg" alt="npm version"></a>
|
|
9
|
-
<a href="https://www.npmjs.com/package/lean-spec"><img src="https://img.shields.io/npm/dm/lean-spec.svg" alt="npm downloads"></a>
|
|
10
|
-
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License"></a>
|
|
11
|
-
</p>
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Specs that fit in AI working memory
|
|
16
|
-
|
|
17
|
-
Traditional 2,000-line RFCs overflow AI context windows. Your AI agent can't help because it can't fit the full context.
|
|
18
|
-
|
|
19
|
-
```diff
|
|
20
|
-
- Heavyweight process (multi-step workflows) → AI context overflow
|
|
21
|
-
- Vibe coding (no specs) → Team misalignment
|
|
22
|
-
+ LeanSpec: Structure without overhead
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
**LeanSpec: A lean SDD methodology for human + AI collaboration.**
|
|
26
|
-
|
|
27
|
-
Specs under 300 lines. Intent-focused. Machine-readable. Adapts to your workflow—from solo dev to enterprise.
|
|
28
|
-
|
|
29
|
-
*Lean = adaptive and progressive. Tools (CLI/MCP) support the methodology.*
|
|
30
|
-
|
|
31
|
-
<p align="center">
|
|
32
|
-
<a href="#quick-start-5-minutes"><strong>Quick Start (5 Minutes) →</strong></a> •
|
|
33
|
-
<a href="https://www.lean-spec.dev"><strong>Documentation</strong></a> •
|
|
34
|
-
<a href="https://www.lean-spec.dev/docs/guide/ai-executable-patterns"><strong>Examples</strong></a>
|
|
35
|
-
</p>
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## The SDD Dilemma
|
|
40
|
-
|
|
41
|
-
### Scenario 1: Context Overflow 🔴
|
|
42
|
-
|
|
43
|
-
You paste a traditional spec into Cursor. **"Context too large."** Your AI agent can't help—it can't fit the full context. Back to manual implementation.
|
|
44
|
-
|
|
45
|
-
### Scenario 2: Stale Documentation 📄
|
|
46
|
-
|
|
47
|
-
Your team has beautiful specs. None match the current code. Nobody updates them because it's too painful. They're documentation theater.
|
|
48
|
-
|
|
49
|
-
### Scenario 3: Wrong Tool for the Job ⚖️
|
|
50
|
-
|
|
51
|
-
You tried automated code generation tools—powerful but heavyweight. You tried vibe coding—fast but team gets misaligned. Where's the **lightweight spec methodology**?
|
|
52
|
-
|
|
53
|
-
**LeanSpec solves this:**
|
|
54
|
-
- ✅ Specs fit in AI context windows (<300 lines)
|
|
55
|
-
- ✅ Structured enough for AI agents to understand
|
|
56
|
-
- ✅ Flexible enough to grow with your team
|
|
57
|
-
- ✅ CLI & MCP tools to support the workflow
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## How LeanSpec is Different
|
|
62
|
-
|
|
63
|
-
**From Automated Tools (like [Spec Kit](https://github.com/speckai/speckai)):**
|
|
64
|
-
- ❌ No multi-step workflows or slash commands
|
|
65
|
-
- ❌ No code generation or task execution
|
|
66
|
-
- ✅ Just specs for team alignment and AI context
|
|
67
|
-
|
|
68
|
-
**From Lightweight Approaches (vibe coding):**
|
|
69
|
-
- ❌ Not "just chat with AI"
|
|
70
|
-
- ✅ Enough structure for AI agents to act on
|
|
71
|
-
- ✅ Team alignment through shared specs
|
|
72
|
-
- ✅ Maintainable documentation
|
|
73
|
-
|
|
74
|
-
**From Change-Tracking Systems (like [OpenSpec](https://github.com/openspec-dev/openspec)):**
|
|
75
|
-
- ❌ No proposals or change folders
|
|
76
|
-
- ❌ No diff-based workflows
|
|
77
|
-
- ✅ Direct spec editing with version control
|
|
78
|
-
- ✅ Philosophy over process
|
|
79
|
-
|
|
80
|
-
**LeanSpec = Just the specs.** Markdown files with structure. No ceremony, no overhead.
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## How It Works
|
|
85
|
-
|
|
86
|
-
### A Real LeanSpec in Action
|
|
87
|
-
|
|
88
|
-
Here's an actual spec from this project (287 lines):
|
|
89
|
-
|
|
90
|
-
```yaml
|
|
91
|
-
---
|
|
92
|
-
status: in-progress
|
|
93
|
-
created: 2025-11-01
|
|
94
|
-
tags: [cli, dx]
|
|
95
|
-
priority: high
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
# Unified Dashboard
|
|
99
|
-
|
|
100
|
-
## Overview
|
|
101
|
-
Combine `lean-spec board` and `lean-spec stats` into a single, comprehensive
|
|
102
|
-
project health view. Give users instant insight into project status,
|
|
103
|
-
bottlenecks, and team velocity.
|
|
104
|
-
|
|
105
|
-
## Design
|
|
106
|
-
- Board view (Kanban columns)
|
|
107
|
-
- Key metrics (completion rate, avg spec size)
|
|
108
|
-
- Bottleneck detection (specs >400 lines, stale specs)
|
|
109
|
-
- Health score (0-100)
|
|
110
|
-
|
|
111
|
-
## Plan
|
|
112
|
-
1. Merge board + stats logic
|
|
113
|
-
2. Add health scoring algorithm
|
|
114
|
-
3. Implement bottleneck detection
|
|
115
|
-
4. Add color-coded indicators
|
|
116
|
-
|
|
117
|
-
## Success Criteria
|
|
118
|
-
- Shows full project state in <5 seconds
|
|
119
|
-
- Identifies bottlenecks automatically
|
|
120
|
-
- Used daily by team leads
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
**Notice:**
|
|
124
|
-
- ✅ Under 300 lines (fits in AI + human working memory)
|
|
125
|
-
- ✅ Intent is clear ("what" and "why")
|
|
126
|
-
- ✅ Implementation details are minimal (not a PRD)
|
|
127
|
-
- ✅ Both human and AI can understand
|
|
128
|
-
- ✅ Structured metadata (status, tags, priority)
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
## Built on First Principles
|
|
133
|
-
|
|
134
|
-
LeanSpec isn't arbitrary rules—it's derived from fundamental constraints of working with AI.
|
|
135
|
-
|
|
136
|
-
### 🧠 Context Economy
|
|
137
|
-
**Specs <300 lines → Fit in working memory**
|
|
138
|
-
|
|
139
|
-
- **Physics**: AI performance degrades with longer context (quality drops beyond 50K tokens despite 200K limits)
|
|
140
|
-
- **Biology**: Human working memory is limited (7±2 items, 5-10 min attention)
|
|
141
|
-
- **Economics**: Large contexts cost more time and money
|
|
142
|
-
- **Reality**: Attention is the scarce resource, not storage
|
|
143
|
-
- **Result**: Keep specs under 300 lines, split complex features
|
|
144
|
-
|
|
145
|
-
### ✂️ Signal-to-Noise Maximization
|
|
146
|
-
**Every word informs decisions → Or it's cut**
|
|
147
|
-
|
|
148
|
-
- Every sentence must answer: "What decision does this inform?"
|
|
149
|
-
- Cut obvious statements, inferable content, speculation
|
|
150
|
-
- Keep decision rationale, constraints, success criteria
|
|
151
|
-
- **Result**: Dense, actionable specs that respect reader attention
|
|
152
|
-
|
|
153
|
-
### 📈 Progressive Disclosure
|
|
154
|
-
**Add structure only when you feel pain → Start simple**
|
|
155
|
-
|
|
156
|
-
- Solo dev: Just `status` + `created`
|
|
157
|
-
- Small team: Add `tags` + `priority`
|
|
158
|
-
- Enterprise: Add custom fields as needed
|
|
159
|
-
- **Result**: Structure adapts to team, not the other way around
|
|
160
|
-
|
|
161
|
-
### 🎯 Intent Over Implementation
|
|
162
|
-
**Capture "why" → Let "how" emerge**
|
|
163
|
-
|
|
164
|
-
- Must have: Problem, intent, success criteria
|
|
165
|
-
- Should have: Design rationale, trade-offs
|
|
166
|
-
- Could have: Implementation details (these change)
|
|
167
|
-
- **Result**: Specs stay relevant as code evolves
|
|
168
|
-
|
|
169
|
-
### 🌉 Bridge the Gap
|
|
170
|
-
**Both humans AND AI must understand → Clear structure + natural language**
|
|
171
|
-
|
|
172
|
-
- For humans: Overview, context, rationale
|
|
173
|
-
- For AI: Unambiguous requirements, structured metadata
|
|
174
|
-
- Both can parse and reason about specs
|
|
175
|
-
- **Result**: True human-AI collaboration
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
**These aren't preferences—they're constraints.** Physics (context windows), biology (working memory), and economics (token costs) dictate what works.
|
|
180
|
-
|
|
181
|
-
📖 [Deep dive: First Principles Guide →](https://www.lean-spec.dev/docs/guide/understanding#the-five-first-principles)
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
|
-
## Features Designed for AI-First Development
|
|
186
|
-
|
|
187
|
-
### 🤖 AI-Native Integration
|
|
188
|
-
|
|
189
|
-
Works seamlessly with popular AI coding tools:
|
|
190
|
-
|
|
191
|
-
- **GitHub Copilot** - AI pair programmer in VS Code & JetBrains IDEs
|
|
192
|
-
- **Claude Code** - Anthropic's AI coding assistant
|
|
193
|
-
- **OpenAI Codex** - OpenAI's coding agent (CLI, IDE, cloud)
|
|
194
|
-
- **Cursor / Windsurf** - AI-first code editor built on VS Code
|
|
195
|
-
|
|
196
|
-
MCP-native specs. Works with any tool that supports Model Context Protocol.
|
|
197
|
-
|
|
198
|
-
### 📊 Workflow Visibility
|
|
199
|
-
|
|
200
|
-
Track progress without leaving the terminal:
|
|
201
|
-
|
|
202
|
-
```bash
|
|
203
|
-
$ lean-spec board
|
|
204
|
-
|
|
205
|
-
📋 Spec Kanban Board
|
|
206
|
-
|
|
207
|
-
📅 Planned (11)
|
|
208
|
-
🟠 High Priority
|
|
209
|
-
• readme-redesign-ai-first
|
|
210
|
-
• validate-output-lint-style
|
|
211
|
-
|
|
212
|
-
⏳ In Progress (2)
|
|
213
|
-
• unified-dashboard
|
|
214
|
-
• mcp-error-handling
|
|
215
|
-
|
|
216
|
-
✅ Complete (14)
|
|
217
|
-
• stats-dashboard-refactor
|
|
218
|
-
• git-backfill-timestamps
|
|
219
|
-
...
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
```bash
|
|
223
|
-
$ lean-spec stats
|
|
224
|
-
|
|
225
|
-
📊 Project Stats
|
|
226
|
-
|
|
227
|
-
Total: 27 specs | Active: 13 | Complete: 14
|
|
228
|
-
Completion: 52% | Avg size: 287 lines
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
Simple, focused CLI for spec status and team visibility.
|
|
232
|
-
|
|
233
|
-
### 🎨 Progressive Structure
|
|
234
|
-
|
|
235
|
-
Start simple, add complexity only when you need it:
|
|
236
|
-
|
|
237
|
-
```yaml
|
|
238
|
-
# Day 1: Solo dev
|
|
239
|
-
status: planned
|
|
240
|
-
|
|
241
|
-
# Week 2: Small team
|
|
242
|
-
status: in-progress
|
|
243
|
-
tags: [api, feature]
|
|
244
|
-
priority: high
|
|
245
|
-
|
|
246
|
-
# Month 3: Enterprise
|
|
247
|
-
assignee: alice
|
|
248
|
-
epic: PROJ-123
|
|
249
|
-
sprint: 2025-Q4-S3
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
Custom fields fully supported. Adapts to your workflow as you grow.
|
|
253
|
-
|
|
254
|
-
### ⚡ Actually Maintainable
|
|
255
|
-
|
|
256
|
-
**The problem:** Traditional specs get stale because updating them is too painful.
|
|
257
|
-
|
|
258
|
-
**LeanSpec solution:**
|
|
259
|
-
- **Short specs** - Fits in AI context window for easy updates
|
|
260
|
-
- **CLI tools** - Quick viewing and editing from terminal
|
|
261
|
-
- **AI-friendly format** - Structured markdown AI agents can parse and update
|
|
262
|
-
- **Version control** - Git tracks changes, diffs show what evolved
|
|
263
|
-
|
|
264
|
-
**Result:** Specs light enough to actually keep in sync with code.
|
|
265
|
-
|
|
266
|
-
---
|
|
267
|
-
|
|
268
|
-
## Quick Start (5 Minutes)
|
|
269
|
-
|
|
270
|
-
### 1. Install & Initialize
|
|
271
|
-
|
|
272
|
-
```bash
|
|
273
|
-
npm install -g lean-spec
|
|
274
|
-
cd your-project
|
|
275
|
-
lean-spec init
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
### 2. Work with Your AI Tool
|
|
279
|
-
|
|
280
|
-
**In Cursor, Copilot, or any AI coding assistant:**
|
|
281
|
-
|
|
282
|
-
```
|
|
283
|
-
👤 You: "Create a spec for user authentication with OAuth2."
|
|
284
|
-
|
|
285
|
-
🤖 AI: [runs lean-spec create user-authentication]
|
|
286
|
-
"I've created specs/001-user-authentication/README.md.
|
|
287
|
-
Here's the spec..."
|
|
288
|
-
|
|
289
|
-
👤 You: "Now implement the OAuth2 flow based on this spec."
|
|
290
|
-
|
|
291
|
-
🤖 AI: [reads spec, implements code]
|
|
292
|
-
"I've implemented the OAuth2 provider in src/auth/oauth.ts..."
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
### 3. Track Progress
|
|
296
|
-
|
|
297
|
-
```bash
|
|
298
|
-
# Check project status
|
|
299
|
-
lean-spec board
|
|
300
|
-
|
|
301
|
-
# View spec with AI-friendly output
|
|
302
|
-
lean-spec view user-authentication --json
|
|
303
|
-
|
|
304
|
-
# Update status as you progress
|
|
305
|
-
lean-spec update user-authentication --status in-progress
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
**The workflow:**
|
|
309
|
-
1. ✅ Ask AI to create spec (it uses `lean-spec create`)
|
|
310
|
-
2. ✅ AI reads spec and implements (spec fits in context)
|
|
311
|
-
3. ✅ Track with `lean-spec board` / `lean-spec stats`
|
|
312
|
-
4. ✅ Update status as work progresses
|
|
313
|
-
|
|
314
|
-
**Why this works:**
|
|
315
|
-
- Specs <300 lines → Fit in AI context window
|
|
316
|
-
- Structured format → AI can parse and act on
|
|
317
|
-
- CLI tools → AI knows how to use them
|
|
318
|
-
- You drive, AI executes
|
|
319
|
-
|
|
320
|
-
**Next steps:**
|
|
321
|
-
- 📘 [Full CLI Reference](https://www.lean-spec.dev/docs/reference/cli) - All commands
|
|
322
|
-
- 🎨 [Choose a Template](https://www.lean-spec.dev/docs/guide/templates) - Minimal, standard, or enterprise
|
|
323
|
-
- 🤖 [AI Agent Setup](AGENTS.md) - Configure AI coding tools
|
|
324
|
-
|
|
325
|
-
---
|
|
326
|
-
|
|
327
|
-
## Choose the Right Tool
|
|
328
|
-
|
|
329
|
-
Not every project needs the same level of structure. Here's when to use what:
|
|
330
|
-
|
|
331
|
-
| Use This | When You Need |
|
|
332
|
-
|----------|---------------|
|
|
333
|
-
| **[Spec Kit](https://github.com/speckai/speckai)** | Automated code generation from specs • Multi-step workflows |
|
|
334
|
-
| **[OpenSpec](https://github.com/openspec-dev/openspec)** | Change proposals and delta tracking • Brownfield modifications |
|
|
335
|
-
| **LeanSpec** | AI-native specs that fit in context • Human + AI collaboration • Solo to enterprise |
|
|
336
|
-
| **Vibe Coding** | Rapid prototyping • Solo experiments • Trivial features |
|
|
337
|
-
|
|
338
|
-
**Why LeanSpec?** The only SDD methodology designed from first principles for AI context windows. Specs that both humans and AI can actually use.
|
|
339
|
-
|
|
340
|
-
---
|
|
341
|
-
|
|
342
|
-
## Who Uses LeanSpec
|
|
343
|
-
|
|
344
|
-
### AI-First Development Teams
|
|
345
|
-
Give agents clear context without context window overload. Works with Cursor, Copilot, Aider, Claude.
|
|
346
|
-
|
|
347
|
-
### Scaling Startups
|
|
348
|
-
One methodology from solo dev → team → enterprise. Add structure progressively as you grow.
|
|
349
|
-
|
|
350
|
-
### Teams Seeking Balance
|
|
351
|
-
Need structure for alignment and AI context, but heavyweight processes slow you down.
|
|
352
|
-
|
|
353
|
-
### Developers Building AI Agents
|
|
354
|
-
MCP-native specs. Structured input format agents can parse reliably.
|
|
355
|
-
|
|
356
|
-
---
|
|
357
|
-
|
|
358
|
-
## We Practice What We Preach
|
|
359
|
-
|
|
360
|
-
**LeanSpec is built using LeanSpec.** Every feature, refactor, and design decision has a spec. All specs follow the first principles—under 300 lines, AI-readable, actively maintained.
|
|
361
|
-
|
|
362
|
-
**Real velocity from zero to official launch:**
|
|
363
|
-
- **6 days** from first commit to production
|
|
364
|
-
- Full-featured CLI, MCP server, documentation site
|
|
365
|
-
- 54 specs written and implemented—all with AI agents
|
|
366
|
-
- Derived first principles from practicing LeanSpec
|
|
367
|
-
|
|
368
|
-
We dogfood our own methodology. Specs that fit in AI context enable the velocity we promise.
|
|
369
|
-
|
|
370
|
-
→ [Browse our specs](https://github.com/codervisor/lean-spec/tree/main/specs)
|
|
371
|
-
|
|
372
|
-
---
|
|
373
|
-
|
|
374
|
-
## When to Use (and Skip) Specs
|
|
375
|
-
|
|
376
|
-
| Use LeanSpec When: | Skip It When: |
|
|
377
|
-
|---------------------|---------------|
|
|
378
|
-
| ✅ Features span multiple files/components | ❌ Trivial bug fixes |
|
|
379
|
-
| ✅ Architecture decisions need alignment | ❌ Self-explanatory refactors |
|
|
380
|
-
| ✅ Guiding AI agents on complex features | ❌ Pure API reference (use code comments) |
|
|
381
|
-
| ✅ Design rationale should be documented | ❌ Quick experiments |
|
|
382
|
-
| ✅ Team needs to coordinate work | ❌ Changes are obvious |
|
|
383
|
-
|
|
384
|
-
**Philosophy:** Write specs when they add clarity. Skip them when they don't.
|
|
385
|
-
|
|
386
|
-
---
|
|
387
|
-
|
|
388
|
-
## Learn More
|
|
389
|
-
|
|
390
|
-
### 📚 Documentation
|
|
391
|
-
- [Getting Started Guide](https://www.lean-spec.dev/docs/guide/getting-started) - Complete setup walkthrough
|
|
392
|
-
- [First Principles](https://www.lean-spec.dev/docs/guide/understanding#the-five-first-principles) - The philosophy behind LeanSpec
|
|
393
|
-
- [CLI Reference](https://www.lean-spec.dev/docs/reference/cli) - All commands with examples
|
|
394
|
-
|
|
395
|
-
### 🛠️ Integrations
|
|
396
|
-
- [AI Agent Configuration](AGENTS.md) - Cursor, Copilot, Aider setup
|
|
397
|
-
- [MCP Server](docs/MCP-SERVER.md) - Claude Desktop integration
|
|
398
|
-
- [VS Code Extension](https://www.lean-spec.dev/docs/roadmap#vs-code-extension) - Enhanced editor support (planned)
|
|
399
|
-
|
|
400
|
-
### 🎓 Guides
|
|
401
|
-
- [Custom Fields](https://www.lean-spec.dev/docs/guide/custom-fields) - Adapt to your workflow
|
|
402
|
-
- [Templates](https://www.lean-spec.dev/docs/guide/templates) - Choose the right structure
|
|
403
|
-
- [Frontmatter](https://www.lean-spec.dev/docs/guide/frontmatter) - Metadata and organization
|
|
404
|
-
|
|
405
|
-
### 🤝 Community
|
|
406
|
-
- [GitHub Issues](https://github.com/codervisor/lean-spec/issues) - Report bugs or request features
|
|
407
|
-
- [Contributing Guide](CONTRIBUTING.md) - Join the project
|
|
408
|
-
- [AI-Executable Patterns](https://www.lean-spec.dev/docs/guide/ai-executable-patterns) - Real-world usage patterns
|
|
409
|
-
|
|
410
|
-
---
|
|
411
|
-
|
|
412
|
-
## License
|
|
413
|
-
|
|
414
|
-
MIT - See [LICENSE](LICENSE)
|
|
415
|
-
|
|
416
|
-
---
|
|
417
|
-
|
|
418
|
-
<p align="center">
|
|
419
|
-
<strong>Spec-Driven Development without the overhead.</strong><br>
|
|
420
|
-
Keep your specs short. Keep them clear. Keep them useful.
|
|
421
|
-
</p>
|