Skip to content
/

Tessl

tessl · tesslio/spec-driven-development-tile · ★ 38 · last commit 2026-03-30

Steering tile that enforces spec-before-code methodology via versioned skills, always-on rules, and an evaluation harness with 9 graded scenarios.

Best whenMethodology should be distributed as versioned packages with CI-enforced evaluation, not as ad-hoc prompt instructions.
Skip ifImplementing without an approved spec, Asking multiple questions at once during requirement gathering
vs seeds
spec-kitstructurally (4 skills enforcing requirement → spec → implement → verify), but introduces a proprietary tile distributio…
Primitive shape 4 total
Skills 4
00

Summary

Tessl — Summary

Tessl is a "steering tile" and agent enablement platform that gives coding agents structured, versioned skills, rules, and evaluation scenarios for spec-driven development — teaching agents to gather requirements, write .spec.md files, and get explicit approval before writing any code.

Problem it solves: Vibecoding produces apps that hallucinate APIs, have useless error handling, lack tests, and can't be verified against intent; Tessl's spec-before-code rule enforces that agents never begin implementation without an approved spec, and its one-question-at-a-time rule prevents requirement-gathering from being rushed.

Distinctive trait: Tessl ships a custom tile format (tile.json) deployed via tessl install, a commercial registry at tessl.io, and an evaluation harness (tessl eval run) for verifying that skills behave correctly — making it the only framework in the corpus with a first-party evaluation/grading system for its own skills.

Target audience: Development teams using MCP-compatible agents (Claude Code, Cursor, etc.) who want a methodology tile that installs once and consistently enforces spec-driven development across all developers without any per-developer configuration.

Production-readiness: v2.0.1; actively maintained with 38 stars and 2 contributors; published on the Tessl registry at tessl.io/registry/tessl-labs/spec-driven-development. Founded by Guy Podjarny (founder of Snyk).

Differs from seeds: Closest to spec-kit in structure (4 skills + 3 rules mapping to spec-kit's 9 commands + 9 skills), but Tessl introduces a proprietary tile distribution format with versioned registry hosting, a tessl eval run evaluation harness (9 evaluation scenarios graded by the framework), and a commercial platform layer. Unlike spec-kit which requires a Python CLI, Tessl installs via npx @tessl/cli install and drops files into .tessl/ for any MCP-compatible agent to read without framework coupling.

01

Overview

Tessl — Origin and Philosophy

Origin

Tessl was founded in 2024 by Guy Podjarny (LinkedIn: guypod), founder and former CEO of Snyk. The company (tesslio on LinkedIn, @tesslhq on X) builds the "agent enablement platform" — a layer between agent CLIs and developer workflows that provides structured skills, evaluations, and a tile registry.

The spec-driven-development tile (tesslio/spec-driven-development-tile) is one published tile on the Tessl registry.

Philosophy (from website schema)

"Tessl is the agent enablement platform that gives coding agents structured, versioned context, such as skills and their performance evaluations, to build reliable AI-powered software."

On the problem:

"Vibecoding (prompting without structure) produces apps that: hallucinate APIs from stale training data, have useless error handling ('Something went wrong, try again'), lack tests, can't be verified against intent."

On the solution:

"Spec-driven development produces apps where: requirements are explicit and reviewable, implementation can be verified against specs, tests trace back to documented requirements, you maintain control over what gets built."

On the tile model:

"This is a steering tile — it provides guidance that becomes part of the agent's context. When you install it: Tessl adds the tile's files to your project's .tessl/ directory; your MCP-compatible agent reads this context; the agent follows the methodology described in the tile's skills and rules. No special commands. No annotations. No framework."

The Tile format

A Tessl tile is a versioned bundle of:

  • Skills — what the agent should do (structured workflows)
  • Rules (alwaysApply: true/false) — what the agent must never do
  • Docs — reference material the agent reads
  • Scripts — shell validators the human runs
  • Evals — graded scenarios that verify skill behavior

Tiles are published to the Tessl registry and installed into .tessl/ directories. Versioning, publishing, and evaluation are all managed by the tessl CLI.

02

Architecture

Tessl — Architecture

Distribution

Install

# Via Tessl CLI
tessl init
tessl install tessl-labs/spec-driven-development

# Via npx (no global install required)
npx @tessl/cli install tessl-labs/spec-driven-development

Required runtime

  • Node.js (for tessl CLI)
  • Any MCP-compatible agent (Claude Code, Cursor, etc.)

Target AI tools

Any MCP-compatible agent that reads files from .tessl/ directory. Explicitly supported: Claude Code, Cursor.

Directory structure (after install)

your-project/
└── .tessl/
    ├── skills/
    │   ├── requirement-gathering/SKILL.md
    │   ├── spec-writer/SKILL.md
    │   ├── spec-verification/SKILL.md
    │   └── work-review/SKILL.md
    ├── steering/
    │   ├── spec-before-code.md     (alwaysApply: true)
    │   ├── one-question-at-a-time.md (alwaysApply: true)
    │   └── spec-format-compliance.md
    ├── docs/
    │   ├── spec-format.md
    │   └── spec-styleguide.md
    └── scripts/
        ├── validate-specs.sh
        └── check-spec-links.sh

Tile manifest (tile.json)

{
  "name": "tessl-labs/spec-driven-development",
  "version": "2.0.1",
  "skills": {
    "requirement-gathering": { "path": "skills/requirement-gathering/SKILL.md" },
    "spec-writer": { "path": "skills/spec-writer/SKILL.md" },
    "spec-verification": { "path": "skills/spec-verification/SKILL.md" },
    "work-review": { "path": "skills/work-review/SKILL.md" }
  },
  "steering": {
    "spec-before-code": { "rules": "rules/spec-before-code.md" },
    "one-question-at-a-time": { "rules": "rules/one-question-at-a-time.md" },
    "spec-format-compliance": { "rules": "rules/spec-format-compliance.md" }
  }
}

Spec format (.spec.md)

---
name: User Authentication
description: Login and session management
targets:
  - ../src/auth/*.py
---

# User Authentication

Users can log in with email and password.

[@test] ../tests/auth/test_login.py

## Error Handling
- Invalid credentials return 401
  [@test] ../tests/auth/test_invalid_credentials.py

Key elements:

  • targets: files/globs the spec describes
  • [@test]: inline references to tests verifying each requirement
03

Components

Tessl — Components

Skills (4)

Skill Trigger conditions Purpose
requirement-gathering New task, "build me", "implement", "add support for", vague requirements Interview stakeholder one question at a time; produce confirmed requirements summary
spec-writer After requirement-gathering; updating existing specs Create or update .spec.md files from clarified requirements
spec-verification After implementation Verify implementation and tests remain synchronized with specs
work-review After implementation complete Review completed work against approved specs

Rules (3)

Rule alwaysApply Purpose
spec-before-code yes Never begin implementation without an approved spec; check specs/ first
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 with YAML frontmatter and [@test] links

Docs (2)

Doc 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

Scripts (2 — run by human/CI)

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

Evals (9 scenarios)

Evaluation scenarios for verifying skill behavior (tessl eval run .):

  1. Spec authoring from confirmed requirements
  2. Requirements gap analysis against existing specs
  3. Work review catching implementation drift
  4. Spec drift detection after file refactoring
  5. Extending an existing spec with new requirements
  6. Decomposing a vague request into concrete gaps
  7. Interview question preparation (one-question-at-a-time)
  8. Handling code written without a spec
  9. Trivial changes that should bypass the full workflow

CI workflows (GitHub Actions)

Workflow Purpose
Lint Validates tile structure on every push and PR
Skill review Runs tessl skill review on all skills
Version check Ensures tile.json version is bumped on PRs
Publish Publishes to the Tessl registry on merge to main
05

Prompts

Tessl — Prompt Files (Verbatim Excerpts)

Excerpt 1: requirement-gathering SKILL.md

Technique: Structured interview protocol with explicit quality criteria and failure mode prevention

---
name: requirement-gathering
description: |
  Interview stakeholders to clarify ambiguous or underspecified requirements before writing
  code. Use when receiving a new task, feature request, or bug report that lacks clear
  acceptance criteria. Produces clarified requirements ready for spec authoring. Common
  triggers: "new feature", "build me", "implement", "add support for", or any task where
  requirements are vague or incomplete.
---

# Requirement Gathering

## Rules

- Ask ONE question at a time (see `one-question-at-a-time` rule)
- Never begin implementation until requirements are confirmed
- Base questions on gaps found in existing specs, not assumptions

## Steps

1. **Review existing specs.** Scan the `specs/` directory for any specs related to the
   request. Note what's already documented and what's missing.

2. **Identify gaps.** List the ambiguous or underspecified areas:
   - Unclear scope boundaries (what's in vs. out)
   - Missing edge cases or error handling expectations
   - Unspecified behavior for boundary conditions
   - Unclear integration points with existing functionality
   - Missing non-functional requirements (performance, security)

3. **Interview the stakeholder.** Ask ONE question at a time. Wait for the answer before
   asking the next question. Prioritize questions by impact.

   Good questions are specific and bounded:
   - "Should the API return a 404 or an empty list when no results match?"
   - "Is this endpoint authenticated, and if so, which roles have access?"

   Bad questions are open-ended or bundled:
   - "What should the API do?" (too vague)
   - "What about errors, pagination, auth, and rate limits?" (too many at once)

4. **Summarize requirements.** After all questions are answered, present a concise summary
   back to the stakeholder for confirmation.

5. **Get explicit approval.** Do not proceed until the stakeholder confirms the summary
   is accurate. If they correct anything, update the summary and re-confirm.

## Success criteria

- Zero ambiguous requirements remain after the interview
- Stakeholder explicitly confirmed the summary
- No implementation work began before confirmation

Excerpt 2: spec-before-code rule

Technique: Always-on constraint rule with explicit exception cases and "what does NOT count" section

---
alwaysApply: true
---

# Spec Before Code

Never begin implementation without an approved spec.

## The rule

When receiving a new task that involves writing or modifying code:

1. Check if a `specs/` directory exists with relevant specs
2. If existing specs cover the work — verify they're still accurate before proceeding
3. If no specs exist or none cover the work — gather requirements and write a spec first
4. Get explicit stakeholder approval on the spec before writing any code

## What counts as approval

- Stakeholder says the spec is accurate (e.g., "looks good", "yes", "approved")
- Stakeholder makes corrections and then confirms the updated version

## What does NOT count as approval

- Silence or no response
- "Just do it" without reviewing the spec
- Your own judgment that the spec is probably fine

## Exceptions

- Trivial changes (typo fixes, formatting) that don't alter behavior
- Emergency hotfixes — but a spec must be written retroactively

Prompting techniques observed

  1. Trigger specification in YAML frontmatter — the description lists verbatim trigger phrases ("new feature", "build me", "implement") so the agent knows when to activate the skill
  2. Good vs. bad examples — the skill shows concrete examples of well-formed vs. malformed questions, training the agent on the distinction
  3. Explicit "what does NOT count" — rules list negative cases (silence, "just do it") to close common loopholes
  4. Success criteria section — each skill ends with verifiable completion conditions, making it possible to evaluate whether the skill was executed correctly
09

Uniqueness

Tessl — Uniqueness and Positioning

Differs from seeds

Tessl is closest to spec-kit structurally (4 skills enforcing a requirement → spec → implement → verify cycle), but introduces three genuinely novel dimensions: (1) a proprietary tile distribution format with a commercial versioned registry and CI-enforced publishing workflow; (2) a first-party evaluation harness (tessl eval run) with 9 graded scenarios that verify skills behave correctly — no other framework in the seed corpus or this batch ships its own skill grading system; (3) alwaysApply: true rules that fire on every interaction without requiring user invocation, closer to superpowers' Iron Laws than to spec-kit's per-command hooks. Unlike kiro (closed IDE with proprietary primitives), Tessl's tile model works with any MCP-compatible agent. Unlike openspec (npm package generating spec files), Tessl is a methodology container with versioning, evaluation, and CI — not just a file generator.

Positioning

Tessl is founded by Guy Podjarny (Snyk founder), targeting enterprise teams who want methodology-as-a-versioned-package: install once, enforce consistently, update centrally, measure with evals. The registry model suggests a future where teams share and version their custom methodology tiles the way they share npm packages.

Observable failure modes

  1. Platform dependency — the tile format and registry are commercial; if Tessl the company changes pricing or access, tile distribution breaks
  2. Passive enforcementalwaysApply rules rely on the agent's attention to .tessl/ files; unlike hook-enforced constraints (WORCA's pre_tool_use.py), a model may ignore them under context pressure
  3. No autonomous execution — skills provide structured workflows but don't auto-execute; still requires human to type the triggering prompt
  4. Spec driftspec-verification must be invoked; no hook-based auto-verification after file changes

Explicit antipatterns

  • Implementing without an approved spec (enforced by spec-before-code rule)
  • Asking multiple questions at once during requirement gathering (one-question-at-a-time)
  • Treating silence as approval for a spec
  • Emergency hotfixes without retroactive spec writing
04

Workflow

Tessl — Workflow

Phases

Phase What happens Artifact
Requirement Gathering Skill: review existing specs; identify gaps; interview stakeholder one question at a time; summarize; get explicit confirmation Confirmed requirements summary
Stakeholder Approval Review specs for accuracy; confirm completeness; explicitly approve to proceed Approved spec
Spec Writing spec-writer skill: create/update .spec.md files with YAML frontmatter, targets, [@test] links .spec.md in specs/ directory
Implementation Build against approved specs; create tests linked to requirements; follow targets Code + tests matching spec
Verification spec-verification skill: verify implementation matches spec; check [@test] links Verification report
Work Review work-review skill: review completed work against approved specs Review completion

Approval gates

Gate Type
Requirements summary confirmation ("Stakeholder explicitly confirmed the summary is accurate") freetext-clarify
Spec approval before implementation ("Do not proceed until the stakeholder confirms") freetext-clarify

Workflow diagram (from README)

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

Exception cases

  • Trivial changes (typo fixes, formatting that doesn't alter behavior) → bypass full workflow
  • Emergency hotfixes → implement first, but write spec retroactively (explicitly called out in spec-before-code rule)

Invocation

No slash command required. The agent reads skills from .tessl/ and the alwaysApply: true rules fire on every interaction involving code changes. Usage:

Create an API for managing user subscriptions. Use spec-driven development.
06

Memory Context

Tessl — Memory and Context

State storage

State is stored as .spec.md files in the specs/ directory and in .tessl/ tile files.

State Location
Specs specs/<name>.spec.md — Markdown with YAML frontmatter
Skill definitions .tessl/skills/<name>/SKILL.md
Rules .tessl/steering/<name>.md
Docs .tessl/docs/

Persistence

  • Project-scoped — specs are committed to the project repo; they persist across sessions
  • Session-spanningspec-verification skill checks that existing specs are still accurate before proceeding with any new work

Context injection

The tile model: Tessl installs files into .tessl/ which the agent reads as part of its context via MCP or file-system tools. No dynamic injection — the files are static once installed.

alwaysApply: true rules (spec-before-code, one-question-at-a-time) fire on every relevant interaction; the agent reads these from .tessl/steering/.

Compaction handling

None built-in. Spec files are deliberately small and structured to be re-readable from scratch in any session.

Cross-session continuity

Specs serve as persistent requirements memory. Any session can read specs/ and understand what was approved, what's in scope, and what tests link to which requirements. No handoff mechanism needed — specs are the handoff artifact.

Spec format as memory

The [@test] link format creates a bi-directional traceability graph:

  • Spec → test: [@test] ../tests/auth/test_login.py
  • check-spec-links.sh validates that all linked tests exist
  • spec-verification skill validates that all spec targets are implemented

This makes the spec the persistent source of truth for both requirements and test coverage.

07

Orchestration

Tessl — Orchestration

Multi-agent

No — Tessl is a single-agent behavioral framework. No multi-agent coordination.

Orchestration pattern

Sequential — requirement gathering → spec writing → implementation → verification → review. One agent, one task at a time.

Execution mode

Interactive-loop — the agent responds to user prompts with the skills' structured workflows active.

Subagent definition format

None — no subagents.

Isolation mechanism

None — the framework makes no provisions for process isolation, worktrees, or containers.

Multi-model

No — single model, whichever the user has configured in their AI tool.

Consensus mechanism

None.

Prompt chaining

Yes — requirement-gathering skill produces a confirmed requirements summary that spec-writer then consumes to write the spec; the spec becomes the input for implementation and spec-verification.

Hook events

None — Tessl is a passive steering tile. Rules fire via the agent's own attention to the .tessl/steering/ files, not via Claude Code lifecycle hooks.

Evaluation system (unique feature)

Tessl provides a first-party evaluation harness:

tessl eval run .
make eval

9 scenarios test whether each skill behaves correctly. This is distinct from all seed frameworks — no other framework ships graded evaluation scenarios for its own skills.

08

Ui Cli Surface

Tessl — UI and CLI Surface

CLI binary

tessl — Tessl CLI, installed via npx @tessl/cli or globally.

Key subcommands

Command Purpose
tessl init Initialize Tessl in a project
tessl install <tile> Install a tile from registry (e.g., tessl-labs/spec-driven-development)
tessl skill review Review skill quality (runs in CI)
tessl eval run . Run evaluation scenarios locally

Local UI

None — no web dashboard, desktop app, or TUI.

Registry

Commercial registry at tessl.io/registry — tiles are versioned packages with badges:

  • tessl.io/registry/tessl-labs/spec-driven-development
  • Badge: https://api.tessl.io/v1/badges/tessl-labs/spec-driven-development

IDE integration

Files installed into .tessl/ are read by any MCP-compatible agent. No IDE-specific plugin required.

Observability

  • Scriptsvalidate-specs.sh and check-spec-links.sh run locally or in CI to check spec integrity
  • Evalstessl eval run . runs 9 graded scenarios and reports skill quality
  • No runtime observability dashboard

Commercial platform

The Tessl website (tessl.io) appears to offer:

  • Registry hosting for tiles
  • Skill performance evaluations
  • Enterprise features (based on "agent enablement platform" positioning)
  • Discord community (discord.gg/tessl)

Pricing not publicly documented in the open-source tile repository.

Related frameworks

same archetype · same primary tool · same memory type

claude-mem (thedotmack) ★ 78k

Background worker service captures every tool call as an observation, AI-compresses sessions, and auto-injects relevant past…

pi (badlogic/earendil) ★ 55k

A minimal, hackable, multi-provider terminal coding agent that adapts to your workflows via npm-installable TypeScript Extensions…

Agent Skills (Addy Osmani) ★ 46k

Encodes senior-engineer software development lifecycle as 23 auto-routed skills and 7 slash commands for any AI coding agent.

wshobson/agents Plugin Marketplace ★ 36k

Single Markdown source for 83 domain-specialized plugins that auto-generates idiomatic artifacts for five AI coding harnesses.

TabbyML/Tabby ★ 34k

Self-hosted AI coding assistant server (alternative to GitHub Copilot) with admin dashboard, RAG-based completions, and multi-IDE…

Compound Engineering ★ 17k

Make each unit of engineering work compound into easier future work via brainstorm→plan→execute→review→learn cycles.