Skip to main content

task-planning

Guides agents through DAG task decomposition, dependency analysis, effort estimation, and pre-mortem failure analysis. Use when creating or revising implementation plans from feature requirements.

Informations de source

Dépôt
zebbern/termstack
Dernière activité de la source
10 avril 2026 à 22:53
Langue détectée de SKILL.md
anglais
Étoiles
4
Forks
3

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
task-planning
description
Guides agents through DAG task decomposition, dependency analysis, effort estimation, and pre-mortem failure analysis. Use when creating or revising implementation plans from feature requirements.
disable-model-invocation
true
argument-hint
Feature requirements or critic feedback to plan from
tags
["agloop","planning","dag","decomposition","estimation"]
# Task Planning ## When to Use This Skill Load this skill when: - Creating an implementation plan from feature requirements (Planner agent) - Revising a plan after critic feedback (Planner agent, revision mode) - Validating a plan's structure before approving it (Coordinator) - Checking plan integrity (dependency cycles, missing criteria) ## DAG Decomposition Methodology ### Step 1: Identify Atomic Deliverables Decompose the feature into the smallest independently testable units of work. Each task must be a **deliverable**, not a module or abstraction. **Good task titles** (deliverable-focused): - "Add search API endpoint returning paginated results" - "Create user profile page with avatar upload" - "Implement rate limiting middleware for public endpoints" **Bad task titles** (module/abstraction-focused): - "Create SearchHandler class" - "Set up database schema" - "Write utility functions" **Decomposition rules:** 1. Each task produces something a user or developer can observe or test 2. Each task modifies 1-5 files (if more, split it) 3. Each task has clear start and end states 4. Each task can be verified independently of future tasks ### Step 2: Map Dependencies For every task, ask: "What must be DONE before this task can START?" ``` dependency_rules: - A task depends on another ONLY if it literally cannot be implemented without the other's output - Shared utilities are a dependency; shared concepts are NOT - Database schema tasks typically come first - API endpoints depend on their data layer - UI components depend on their API endpoints - Integration tests depend on the components they test ``` ### Step 3: Check for Cycles If task A → B → C → A exists, the plan is invalid. To detect: ``` algorithm: topological_sort 1. Build adjacency list from depends_on fields 2. Compute in-degree for each task 3. Initialize queue with all tasks where in-degree = 0 4. While queue is not empty: a. Dequeue task, add to sorted order b. For each dependent: decrement in-degree c. If in-degree reaches 0, enqueue it 5. If sorted order length < total tasks → CYCLE EXISTS - Remaining tasks form the cycle — redesign their dependencies ``` **Cycle resolution strategies:** - Extract shared dependency into its own task - Merge tightly coupled tasks into one - Use interface/contract as the dependency boundary instead of implementation ### Step 4: Topological Ordering Order tasks so that every task appears after all its dependencies. Within the same dependency level, order by: 1. Foundation tasks first (fewer dependents → more dependents) 2. Lower task ID as tiebreaker (preserves planner intent) ## Pre-Mortem Analysis Framework Before execution begins, assume the project has FAILED. Identify why. ### Failure Mode Identification For each task and for the project as a whole, identify potential failure modes: | Category | Example Modes | | ------------ | ------------------------------------------------------------------- | | Integration | API contract mismatch, incompatible data formats, version conflicts | | Data | Migration failures, data loss, schema drift, concurrent access | | Performance | N+1 queries, unbounded fetches, missing indexes, memory leaks | | Security | Injection points, auth bypass, data exposure, CSRF | | Edge Cases | Empty states, max limits, Unicode input, concurrent mutations | | Dependencies | External API down, library breaking change, missing peer deps | | Scope | Underestimated complexity, hidden requirements, ambiguous specs | ### Likelihood × Impact Scoring For each failure mode, assess: ``` likelihood: low | medium | high low = unlikely given the codebase and approach medium = possible, has happened in similar projects high = probable without explicit mitigation impact: low | medium | high | critical low = cosmetic issue, easy fix medium = feature degraded, user-visible but recoverable high = feature broken, requires significant rework critical = data loss, security breach, or cascading failures ``` **Mitigation required if:** likelihood ≥ medium OR impact ≥ high. ### Pre-Mortem Template ```yaml pre_mortem: overall_risk_level: medium # low | medium | high | critical critical_failure_modes: - mode: "Database migration fails on existing data with NULL values" likelihood: medium impact: high mitigation: "Add NOT NULL with DEFAULT in migration, backfill script, test with production data snapshot" - mode: "Search endpoint returns unbounded results on empty query" likelihood: high impact: medium mitigation: "Enforce max page_size=100, require at least one filter parameter" assumptions: - "PostgreSQL 14+ is available in all environments" - "Existing auth middleware handles JWT validation" - "No concurrent schema migrations are running" ``` ## Task Writing Standards ### Required Fields Every task in `plan.yaml` must have ALL of these fields: | Field | Type | Description | | --------------------- | -------- | -------------------------------------------- | | `id` | string | Format: `task-NNN` (zero-padded to 3 digits) | | `title` | string | Deliverable-focused, action-verb start | | `description` | string | Detailed requirements for the implementer | | `depends_on` | string[] | Task IDs this depends on (empty if none) | | `acceptance_criteria` | string[] | Specific, verifiable criteria (≥1) | | `failure_modes` | object[] | Per-task risk analysis | | `estimated_effort` | enum | `small` \| `medium` \| `large` | | `files_to_modify` | string[] | Relative paths to create/modify | | `files_to_read` | string[] | Relative paths for context | | `specification_adherence` | object | `{ required_patterns[], forbidden_patterns[], tech_choices[] }` | ### Acceptance Criteria Standards Criteria must be **specific and verifiable** — a verifier must be able to confirm pass/fail with evidence. **Good criteria:** - "GET /api/search?q=test returns 200 with JSON body containing `results` array" - "File `src/middleware/rateLimit.ts` exports `rateLimitMiddleware` function" - "Error response for invalid input returns 400 with `{ error: string }` body" - "Component renders loading skeleton when `isLoading` is true" **Bad criteria:** - "Search works correctly" - "Error handling is implemented" - "Code is clean and well-structured" - "Performance is acceptable" ### Effort Estimation Guidelines ``` small: 1-2 files, simple logic, clear pattern to follow Examples: add a config value, create a simple utility, update a type Typical time: 1 executor delegation medium: 3-5 files, moderate complexity, some design decisions Examples: new API endpoint with validation, component with state management Typical time: 1-2 executor delegations large: 6+ files, complex logic, cross-cutting concerns Examples: auth system, search with indexing, real-time sync Typical time: 2-3 executor delegations (consider splitting) ``` **Rule:** If estimated_effort is `large`, consider splitting into smaller tasks. ## plan.yaml Output Format ```yaml plan_id: "plan-YYYYMMDD-HHmmss" feature: "verbatim user request" created_at: "2026-03-01T14:30:22.000Z" updated_at: "2026-03-01T14:30:22.000Z" status: "draft" pre_mortem: overall_risk_level: medium critical_failure_modes: - mode: "description of what could go wrong" likelihood: medium impact: high mitigation: "prevention or recovery strategy" assumptions: - "assumption the plan depends on" tasks: - id: "task-001" title: "Deliverable-focused title" description: "Detailed requirements for implementer" depends_on: [] acceptance_criteria: - "Specific, verifiable criterion" failure_modes: - mode: "what could go wrong" likelihood: low impact: medium mitigation: "how to handle it" estimated_effort: small files_to_modify: - "src/path/to/file.ts" files_to_read: - "src/path/to/context.ts" specification_adherence: required_patterns: - "pattern that must be followed" forbidden_patterns: - "pattern that must not appear" tech_choices: - "technology choice constraint" dag_edges: - ["task-001", "task-002"] critique_history: [] ``` ## plan.md Output Format ```markdown # Implementation Plan: {feature_name} **Created:** {created_at} **Status:** {status} **Risk Level:** {overall_risk_level} ## Summary {1-3 paragraph summary of the approach} ## Pre-Mortem Analysis ### Critical Risks | Risk | Likelihood | Impact | Mitigation | | ------ | ------------ | -------- | ------------ | | {mode} | {likelihood} | {impact} | {mitigation} | ### Assumptions - {assumption} ## Task Plan ### Task {id}: {title} - **Effort:** {estimated_effort} - **Depends on:** {depends_on or "none"} - **Files:** {files_to_modify} - **Acceptance Criteria:** 1. {criterion} ## Dependency Graph {text-based DAG visualization} ## Critique History {iterations with objections and responses} ``` ## Verification A valid plan satisfies ALL of these checks: 1. **Structural integrity**: Every `depends_on` references an existing task ID 2. **No cycles**: Topological sort produces a valid ordering of all tasks 3. **Criteria completeness**: Every task has ≥1 acceptance criterion 4. **Criteria quality**: Every criterion is specific and verifiable (no vague language) 5. **Pre-mortem present**: `pre_mortem` section exists with ≥1 failure mode and ≥1 assumption 6. **DAG edges consistent**: `dag_edges` matches the `depends_on` fields in tasks 7. **Effort estimated**: Every task has a valid `estimated_effort` 8. **Files specified**: Every task has non-empty `files_to_modify` 9. **IDs sequential**: Task IDs follow `task-NNN` format, are unique, and sequentially ordered 10. **No orphans**: Every task is either a root (no deps) or reachable from a root via the DAG
Voir sur GitHub