The Spec Kit specification-driven workflow in Meshtastic-Android - how a feature description becomes a spec, a plan, tasks and an implementation, and what the constitution requires at each step. Use this when asked to write or update a spec, plan or tasks file, or when working anywhere under `specs/`.
85%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Spec Kit is the project's specification-driven development (SDD) workflow. It takes a natural-language feature description through a structured pipeline that produces specs, plans, tasks, and implementation — with review gates, constitution alignment, and automated git hooks at each stage.
| Command | Slash Command | Purpose |
|---|---|---|
| Specify | /speckit.specify | Create or update spec.md from a feature description |
| Clarify | /speckit.clarify | Ask up to 5 targeted clarification questions, encode answers into spec |
| Plan | /speckit.plan | Generate plan.md with architecture, phases, data models |
| Tasks | /speckit.tasks | Generate tasks.md with dependency-ordered, parallelizable tasks |
| Analyze | /speckit.analyze | Read-only cross-artifact consistency and quality analysis |
| Implement | /speckit.implement | Execute tasks from tasks.md with status tracking |
| Command | Slash Command | Purpose |
|---|---|---|
| Checklist | /speckit.checklist | Generate a custom quality checklist for the feature |
| Constitution | /speckit.constitution | Create or update project constitution (.specify/memory/constitution.md) |
| Tasks to Issues | /speckit.taskstoissues | Convert tasks.md into GitHub Issues |
| Command | Slash Command | Purpose |
|---|---|---|
| Git Initialize | /speckit.git.initialize | Initialize git repo (skips if already initialized) |
| Git Feature | /speckit.git.feature | Create a feature branch with sequential numbering |
| Git Commit | /speckit.git.commit | Auto-commit changes after a Spec Kit command |
| Git Remote | /speckit.git.remote | Detect git remote URL for GitHub integration |
| Git Validate | /speckit.git.validate | Validate branch follows feature naming conventions |
The standard SDD cycle for a new feature:
1. /speckit.specify "Feature description here"
→ Creates specs/<YYYYMMDD-HHMMSS>-feature-name/spec.md
→ Auto-creates feature branch via git hook
2. /speckit.clarify
→ Asks clarification questions, encodes answers into spec.md
3. /speckit.plan
→ Generates plan.md with architecture, phases, data model
4. /speckit.tasks
→ Generates tasks.md with phased, dependency-ordered tasks
5. /speckit.analyze
→ Read-only quality analysis (constitution alignment, coverage gaps)
→ Fix any CRITICAL/HIGH findings before proceeding
6. /speckit.implement
→ Executes tasks with status tracking
→ Auto-commits after each phaseThe full cycle can also run as a single workflow with review gates:
/speckit.workflow speckit "Describe the feature"This runs: specify → (review gate) → plan → (review gate) → tasks → implement
Spec Kit produces files under specs/<YYYYMMDD-HHMMSS>-feature-name/:
specs/
└── 20260513-160000-feature-name/
├── spec.md # Feature specification (FRs, NFRs, SCs, user stories)
├── plan.md # Implementation plan (architecture, phases)
├── tasks.md # Dependency-ordered task list
├── data-model.md # Entity definitions and schemas
├── research.md # Technical decisions and alternatives
├── quickstart.md # Getting started guide
├── checklists/
│ └── requirements.md # Quality checklist
└── contracts/
├── deep-links.md # Deep link contract
└── *.json # Schema contractsThe project constitution at .specify/memory/constitution.md defines non-negotiable principles.
All specs, plans, and tasks are validated against it during /speckit.analyze.
Current constitution (v1.4.2) enforces 7 principles:
commonMain onlyspotlessCheck + detekt must passmeshtastic/design/features/docs/en/ (in-app browser, Jekyll, Docusaurus) with last_updated frontmatter; links, coverage, the DocBundleLoader registry, and locale layout/nav_order matching docs/en/ with no locale parent are a blocking CI gate (docs-quality.yml) on PRs touching docs/**/*.md, freshness advisorygit pushGit hooks are configured in .specify/extensions.yml and run automatically:
Feature branches created by /speckit.git.feature use timestamp-based numbering:
YYYYMMDD-HHMMSS-feature-name (e.g., 20260511-211823-compose-screenshot-testing)
This avoids merge conflicts when multiple specs are developed on parallel branches.
Non-spec branches follow conventional commit-style prefixes:
feat/, fix/, chore/, docs/, build/, ci/, refactor/, test/, deps/
To avoid collision when multiple specs exist, prefix task IDs with a short feature mnemonic
(e.g., SST-T001 for screenshot testing, DISC-T001 for discovery). The prefix is defined
per-spec in the tasks.md header.
All specs with UI work must include a Phase 0 [UI-GATE] blocking task that reviews
the Meshtastic design standards before implementation begins. The /speckit.analyze
command flags missing gates as CRITICAL.
All deep links must use the canonical URI scheme: meshtastic://meshtastic/settings/<path>.
Compatibility aliases with camelCase or hyphenated variants are acceptable but must not be
the primary contract.
/speckit.analyze before /speckit.implement — it catches constitution violations,
coverage gaps, and cross-artifact inconsistencies./speckit.clarify when specs feel underspecified — it asks targeted questions and
encodes answers directly into the spec./speckit.checklist command generates feature-specific quality gates beyond the
standard code review checklist./speckit.specify "description".auto_execute_hooks: true
in .specify/extensions.yml to skip prompts.Specs live in specs/, one directory per feature (<YYYYMMDD-HHMMSS>-<slug>; two legacy dirs use NNN-<slug> numbering). List that directory for the live inventory — each spec's spec.md / tasks.md records its own scope and status.
implement-feature — Feature implementation workflow (post-spec)code-review — PR review checklisttesting-ci — CI validation commandsnew-branch — Branch bootstrap recipesmeshtastic/Meshtastic-Android
1bedc5d
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.