Spec-driven workflow covering requirement gathering, spec authoring, implementation review, and verification — with skills, rules, and evaluation scenarios.
96
90%
Does it follow best practices?
Impact
98%
1.19xAverage score across 9 eval scenarios
Passed
No known issues
This repository contains the source code of the "Spec Driven Development" tile released by Tessl.
A methodology tile that teaches AI coding agents to gather requirements, write specifications, and get approval before writing code.
When installed, this tile changes how your AI coding agent approaches tasks. Instead of diving straight into code, the agent will:
This is the difference between an agent that assumes what you want and one that asks.
tessl init
tessl install tessl-labs/spec-driven-developmentnpx @tessl/cli install tessl-labs/spec-driven-developmentAfter installation, include "use spec-driven development" in your prompt:
Create an API for managing user subscriptions. Use spec-driven development.The agent will start by asking questions rather than writing code:
Once requirements are clear, the agent creates specs in a specs/ directory, waits for your approval, then implements.
| Skill | Purpose |
|---|---|
requirement-gathering | Interview stakeholders to clarify ambiguous requirements before writing code |
spec-writer | Create or update .spec.md files from clarified requirements |
spec-verification | Verify implementation and tests remain synchronized with specs |
work-review | Review completed work against approved specs |
| Rule | Always Apply | Purpose |
|---|---|---|
spec-before-code | Yes | Never begin implementation without an approved spec |
one-question-at-a-time | Yes | Ask exactly one question per message during requirement gathering |
spec-format-compliance | No | Ensure .spec.md files follow the required format |
| File | Purpose |
|---|---|
docs/spec-format.md | How to structure spec files: YAML frontmatter, targets, [@test] links |
docs/spec-styleguide.md | Best practices for writing clear, maintainable specs |
| Script | Purpose |
|---|---|
scripts/validate-specs.sh | Validate .spec.md files have required frontmatter and structure |
scripts/check-spec-links.sh | Check that [@test] links and targets point to existing files |
Nine evaluation scenarios covering:
GitHub Actions workflows (via tesslio/setup-tessl):
tessl skill review on all skillstile.json version is bumped on PRsEvals are run locally via make eval or tessl eval run . during development.
Specs are markdown files (.spec.md) with YAML frontmatter:
---
name: User Authentication
description: Login and session management
targets:
- ../src/auth/*.py
---
# User Authentication
Users can log in with email and password.
```python
def login(email: str, password: str) -> Session: ...
def logout(session_id: str) -> None: ...
```
[@test] ../tests/auth/test_login.py
## Error Handling
- Invalid credentials return 401
[@test] ../tests/auth/test_invalid_credentials.py
- Expired sessions return 403
[@test] ../tests/auth/test_expired_session.pyKey elements:
targets: Files or glob patterns the spec describes[@test] links: Inline references to tests that verify each requirementVibecoding (prompting without structure) produces apps that:
Spec-driven development produces apps where:
This is a steering tile — it provides guidance that becomes part of the agent's context. When you install it:
.tessl/ directoryNo special commands. No annotations. No framework. Skills provide the workflows, rules enforce the constraints, and docs give the reference material.
┌─────────────────────────────────────────────────────────────────┐
│ REQUIREMENT GATHERING │
│ • Review existing specs │
│ • Identify ambiguous areas │
│ • Interview stakeholder (one question at a time) │
│ • Create/update specs │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ STAKEHOLDER APPROVAL │
│ • Review specs for accuracy │
│ • Confirm requirements are complete │
│ • Approve to proceed with implementation │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ IMPLEMENTATION │
│ • Build against approved specs │
│ • Create tests linked to requirements │
│ • Follow targets defined in specs │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ REVIEW │
│ • Verify all requirements satisfied │
│ • Update specs with any discovered requirements │
│ • Ensure tests are linked from specs │
└─────────────────────────────────────────────────────────────────┘This methodology tile works well alongside library/framework tiles from the Tessl Registry. For example:
tessl install tessl-labs/spec-driven-development
tessl install tessl/maven-io-quarkus--quarkus-coreNow your agent knows how to work (spec-driven methodology) and what tools to use correctly (Quarkus APIs). This prevents both process chaos and API hallucination.
MIT License — see LICENSE for details.