agentsclimarketplace

Spec driven development

Skill GuillemRoca/agent-skills-android/skills/spec-driven-development

Use when starting new Android projects, features, or changes with unclear requirements. Guides writing a structured spec (SPEC.md) that becomes the shared source of truth before any code is written.From its SKILL.md

Install
npx -y skills add GuillemRoca/agent-skills-android --skill spec-driven-development

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

4.1 KB, 893 tokens by cl100k_base, as published. Nobody here has run it

Spec-Driven Development

Overview

Write a structured specification before writing code. The spec becomes the shared source of truth — a development contract that prevents misalignment, scope creep, and wasted effort. Every implementation decision traces back to the spec.

When to Use

  • Starting a new Android project or module
  • Adding a feature that spans multiple files or layers
  • Requirements are ambiguous or come from multiple stakeholders
  • Before writing a tasks/plan.md

Skip when: Single-line fixes or changes that are unambiguous and self-contained.

Core Process

Phase 1: Specify

  1. Ask clarifying questions before writing anything:

    • What problem does this solve? Who is the user?
    • Which features are in scope? Which are explicitly out?
    • What is the tech stack? (minSdk, target SDK, Compose vs XML, DI framework)
    • What are the boundaries? (offline support? accessibility? tablet?)
  2. Write SPEC.md with these sections:

# Feature Name — Specification

## Objective
What we're building and why. One paragraph.

## Commands
Key Gradle tasks and how to use them:
- `./gradlew assembleDebug` — build debug APK
- `./gradlew test` — run unit tests
- `./gradlew connectedAndroidTest` — run instrumented tests
- `./gradlew lint` — run Android Lint

## Project Structure
Where new code lives in the module hierarchy:
- `:app` — main application module
- `:feature:feature-name` — new feature module
- `:core:data` — data layer (repositories, data sources)
- `:core:domain` — domain layer (use cases, models)

## Code Style
- Kotlin with Jetpack Compose for UI
- MVVM/MVI architecture with ViewModel + StateFlow
- Hilt for dependency injection
- Coroutines + Flow for async operations
- Material 3 design system

## Testing Strategy
- Unit tests: JUnit5 + MockK for ViewModels, use cases, repositories
- UI tests: Compose test rules for screen-level testing
- Integration tests: Room in-memory database, MockWebServer
- Target: critical paths covered, not arbitrary coverage %

## Boundaries
What is explicitly NOT in scope:
- [ ] List exclusions here
  1. Save as SPEC.md in the project or module root

Phase 2: Plan

  1. Review spec with human — get explicit approval before continuing
  2. Use planning-and-task-breakdown to create implementation tasks from the spec

Phase 3: Tasks

  1. Break spec into vertical slices (see planning-and-task-breakdown)
  2. Each task references the spec section it implements

Phase 4: Implement

  1. Build incrementally (see incremental-implementation)
  2. Every PR references the spec section it addresses
  3. Spec evolves with the project — update it when requirements change

Common Rationalizations

ShortcutWhy It Fails
"The feature is simple, no spec needed"Simple features have hidden edge cases (configuration changes, process death, deep links). A brief spec still beats none.
"We'll figure it out as we go"Without a spec, each developer builds a different mental model. Alignment costs compound.
"The ticket/issue IS the spec"Tickets describe what to build. Specs describe how it fits into the system, what's excluded, and how to verify.
"Writing specs slows us down"Rework from misalignment costs 3–10x more than a spec.

Red Flags

  • Implementation started without written spec
  • Spec has no "Boundaries" or exclusions section
  • Spec doesn't specify testing strategy
  • Multiple developers have different understandings of scope
  • Spec never updated after requirement changes

Verification

  • SPEC.md exists in version control
  • All six sections filled in (Objective, Commands, Structure, Style, Testing, Boundaries)
  • Human has reviewed and approved the spec
  • Implementation tasks reference spec sections
  • Spec updated when requirements changed during development

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,851. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.