Skip to main content

speckit-tasks

Generate an actionable, dependency-ordered tasks.md for the feature based on available design artifacts.

Source facts

Repository
elsa-workflows/elsa-foundation
Last source activity
October 10, 2026 at 11:06
Detected SKILL.md language
English
Stars
7
Forks
3

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
speckit-tasks
description
Generate an actionable, dependency-ordered tasks.md for the feature based on available design artifacts.
argument-hint
Optional task generation constraints
compatibility
Requires spec-kit project structure with .specify/ directory
metadata
{"author":"github-spec-kit","source":"templates/commands/tasks.md"}
user-invocable
true
disable-model-invocation
false
## User Input ```text $ARGUMENTS ``` You **MUST** consider the user input before proceeding (if not empty). ## Pre-Execution Checks **Check for extension hooks (before tasks generation)**: - Check if `.specify/extensions.yml` exists in the project root. - If it exists, read it and look for entries under the `hooks.before_tasks` key - If the YAML cannot be parsed or is invalid, skip hook checking silently and continue normally - Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default. - For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions: - If the hook has no `condition` field, or it is null/empty, treat the hook as executable - If the hook defines a non-empty `condition`, skip the hook and leave condition evaluation to the HookExecutor implementation - When constructing slash commands from hook command names, replace dots (`.`) with hyphens (`-`). For example, `speckit.git.commit` → `/speckit-git-commit`. - For each executable hook, output the following based on its `optional` flag: - **Optional hook** (`optional: true`): ``` ## Extension Hooks **Optional Pre-Hook**: {extension} Command: `/{command}` Description: {description} Prompt: {prompt} To execute: `/{command}` ``` - **Mandatory hook** (`optional: false`): ``` ## Extension Hooks **Automatic Pre-Hook**: {extension} Executing: `/{command}` EXECUTE_COMMAND: {command} Wait for the result of the hook command before proceeding to the Outline. ``` - If no hooks are registered or `.specify/extensions.yml` does not exist, skip silently ## Outline 1. **Setup**: Run `.specify/scripts/powershell/check-prerequisites.ps1 -Json` from repo root and parse FEATURE_DIR and AVAILABLE_DOCS list. All paths must be absolute. For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\''m Groot' (or double-quote if possible: "I'm Groot"). 2. **Load design documents**: Read from FEATURE_DIR: - **Required**: plan.md (tech stack, libraries, structure), spec.md (user stories with priorities) - **Optional**: data-model.md (entities), contracts/ (interface contracts), research.md (decisions), quickstart.md (test scenarios) - **IF EXISTS**: Load `.specify/memory/constitution.md` from the repository root for project principles and governance constraints - Note: Not all projects have all documents. Generate tasks based on what's available. 3. **Execute task generation workflow**: - Load plan.md and extract tech stack, libraries, project structure - Load spec.md and extract user stories with their priorities (P1, P2, P3, etc.) - If data-model.md exists: Extract entities and map to user stories - If contracts/ exists: Map interface contracts to user stories - If research.md exists: Extract decisions for setup tasks - Generate tasks organized by user story (see Task Generation Rules below) - Generate dependency graph showing user story completion order - Create parallel execution examples per user story - Validate task completeness (each user story has all needed tasks, independently testable) 4. **Generate tasks.md**: Use `.specify/templates/tasks-template.md` as structure, fill with: - Correct feature name from plan.md - Phase 1: Setup tasks (project initialization) - Phase 2: Foundational tasks (blocking prerequisites for all user stories) - Phase 3+: One phase per user story (in priority order from spec.md) - Each phase includes: story goal, independent test criteria, applicable test tasks, and implementation tasks; order test tasks according to the declared application cadence - Final Phase: Polish & cross-cutting concerns - All tasks must follow the strict checklist format (see Task Generation Rules below) - Clear file paths for each task - Dependencies section showing story completion order - Parallel execution examples per story - Implementation strategy section (MVP first, incremental delivery) 5. **Report**: Output path to generated tasks.md and summary: - Total task count - Task count per user story - Parallel opportunities identified - Independent test criteria for each story - Suggested MVP scope (typically just User Story 1) - Format validation: Confirm ALL tasks follow the checklist format (checkbox, ID, labels, file paths) 6. **Check for extension hooks**: After tasks.md is generated, check if `.specify/extensions.yml` exists in the project root. - If it exists, read it and look for entries under the `hooks.after_tasks` key - If the YAML cannot be parsed or is invalid, skip hook checking silently and continue normally - Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default. - For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions: - If the hook has no `condition` field, or it is null/empty, treat the hook as executable - If the hook defines a non-empty `condition`, skip the hook and leave condition evaluation to the HookExecutor implementation - When constructing slash commands from hook command names, replace dots (`.`) with hyphens (`-`). For example, `speckit.git.commit` → `/speckit-git-commit`. - For each executable hook, output the following based on its `optional` flag: - **Optional hook** (`optional: true`): ``` ## Extension Hooks **Optional Hook**: {extension} Command: `/{command}` Description: {description} Prompt: {prompt} To execute: `/{command}` ``` - **Mandatory hook** (`optional: false`): ``` ## Extension Hooks **Automatic Hook**: {extension} Executing: `/{command}` EXECUTE_COMMAND: {command} ``` - If no hooks are registered or `.specify/extensions.yml` does not exist, skip silently Context for task generation: $ARGUMENTS The tasks.md should be immediately executable - each task must be specific enough that an LLM can complete it without additional context. ## Task Generation Rules **CRITICAL**: Tasks MUST be organized by user story to enable independent implementation and testing. **Test-task generation**: A silent feature specification does not waive tests required by repository policy. For Foundation feature classes and logic-bearing implementations in scope, include the tests required by [framework §2.23](../../../.specify/memory/constitution-framework.md#223-unit-tests): a feature-registration test only where a feature's wiring carries logic (conditional registration, decoration, options validation), since the §2.23.1 composition test covers every feature's plain registrations, and risk-based behaviour tests for logic-bearing implementations. Test existence and cadence are separate: for greenfield work, follow [framework §2.21.2](../../../.specify/memory/constitution-framework.md#2212-greenfield-test-discipline); use test-first ordering and require a failing run only when the application's derived constitution declares TDD. Add other tests when requested or warranted by the story's changed behavior, contracts, or acceptance criteria. If no test obligation applies (for example, a docs-only correction), omit unrelated tests, including runtime tests. For greenfield work without a declared cadence, record that gap in the plan and tasks for the application owner to resolve. Do not infer a test-first requirement from the examples or omit applicable required tests. ### Checklist Format (REQUIRED) Every task MUST strictly follow this format: ```text - [ ] [TaskID] [P?] [Story?] Description with file path ``` **Format Components**: 1. **Checkbox**: ALWAYS start with `- [ ]` (markdown checkbox) 2. **Task ID**: Sequential number (T001, T002, T003...) in execution order 3. **[P] marker**: Include ONLY if task is parallelizable (different files, no dependencies on incomplete tasks) 4. **[Story] label**: REQUIRED for user story phase tasks only - Format: [US1], [US2], [US3], etc. (maps to user stories from spec.md) - Setup phase: NO story label - Foundational phase: NO story label - User Story phases: MUST have story label - Polish phase: NO story label 5. **Description**: Clear action with exact file path **Examples**: - ✅ CORRECT: `- [ ] T001 Create project structure per implementation plan` - ✅ CORRECT: `- [ ] T005 [P] Implement authentication middleware in src/middleware/auth.py` - ✅ CORRECT: `- [ ] T012 [P] [US1] Create User model in src/models/user.py` - ✅ CORRECT: `- [ ] T014 [US1] Implement UserService in src/services/user_service.py` - ❌ WRONG: `- [ ] Create User model` (missing ID and Story label) - ❌ WRONG: `T001 [US1] Create model` (missing checkbox) - ❌ WRONG: `- [ ] [US1] Create User model` (missing Task ID) - ❌ WRONG: `- [ ] T001 [US1] Create model` (missing file path) ### Task Organization 1. **From User Stories (spec.md)** - PRIMARY ORGANIZATION: - Each user story (P1, P2, P3...) gets its own phase - Map all related components to their story: - Models needed for that story - Services needed for that story - Interfaces/UI needed for that story - Include applicable repository-required tests for the feature classes and implementations in that story, even when the spec is silent; include additional tests when requested or warranted by scope - Mark story dependencies (most stories should be independent) 2. **From Contracts**: - Map each interface contract to its story. Add a contract-test task when requested or warranted by the contract's scope and acceptance criteria; applicable repository-required tests still apply when the spec is silent. 3. **From Data Model**: - Map each entity to the user story(ies) that need it - If entity serves multiple stories: Put in earliest story or Setup phase - Relationships → service layer tasks in appropriate story phase 4. **From Setup/Infrastructure**: - Shared infrastructure → Setup phase (Phase 1) - Foundational/blocking tasks → Foundational phase (Phase 2) - Story-specific setup → within that story's phase ### Phase Structure - **Phase 1**: Setup (project initialization) - **Phase 2**: Foundational (blocking prerequisites - MUST complete before user stories) - **Phase 3+**: User Stories in priority order (P1, P2, P3...) - Within each story, order applicable tests by the declared application cadence (§2.21.2); if the application's derived constitution declares TDD, place tests before implementation. Keep implementation tasks in dependency order: Models → Services → Endpoints → Integration. - Each phase should be a complete, independently testable increment - **Final Phase**: Polish & Cross-Cutting Concerns
View on GitHub