From product-design
Compact YAML format for defining parallel task specifications with scope, boundaries, and agent assignments. Use when creating task files for parallel development.
npx claudepluginhub jpoutrin/product-forge --plugin product-designThis skill uses the workspace's default tool permissions.
Compact YAML format for parallel task files in `parallel/TS-XXXX-slug/tasks/`.
Orchestrates subagents to execute tasks from markdown development plans in parallel waves by inferring dependencies, launching unblocked tasks, and updating plans with logs. Triggered by /parallel-task.
Generates phased, dependency-ordered tasks from specifications with parallelization opportunities and tech-stack patterns for systematic feature implementation.
Decomposes specifications into dependency-aware task graphs via TaskCreate/TaskUpdate. Use after cw-spec before cw-dispatch to plan sequenced, executable tasks.
Share bugs, ideas, or general feedback.
Compact YAML format for parallel task files in parallel/TS-XXXX-slug/tasks/.
---
id: task-001
component: users
wave: 1
deps: []
blocks: [task-004, task-005]
agent: python-experts:django-expert
skills: [python-experts:python-style, python-experts:django-dev, python-experts:django-api]
tech_spec: TS-0042
contracts: [contracts/types.py, contracts/api-schema.yaml]
---
# task-001: User Management
## Scope
CREATE: apps/users/{models,views,serializers,urls}.py, apps/users/tests/*.py
MODIFY: config/urls.py
BOUNDARY: apps/orders/*, apps/products/*, apps/*/migrations/*
## Requirements
- User model with email authentication
- UserSerializer with explicit fields
- UserViewSet (list, retrieve, create, update)
- Email uniqueness validation
## Checklist
- [ ] Model matches UserDTO in contracts/types.py
- [ ] API matches /api/users/* in contracts/api-schema.yaml
- [ ] pytest apps/users/ passes
- [ ] mypy apps/users/ passes
- [ ] ruff check apps/users/ passes
- [ ] No files modified outside scope
| Field | Required | Description |
|---|---|---|
id | Yes | Task identifier (task-NNN or task-NNN-component) |
component | Yes | System component name |
wave | Yes | Dependency wave number (1, 2, 3...) |
deps | Yes | Task IDs this depends on (empty list [] if none) |
blocks | No | Task IDs this blocks (optional) |
agent | Yes | Recommended agent type |
skills | Yes | Skills the agent should invoke (list from agent-skills-mapping.yaml) |
tech_spec | No | Tech Spec ID (if applicable) |
contracts | Yes | Contract files to reference (relative paths) |
Note: skills are stored in task files so prompt generation can include them in === REQUIRED SKILLS === sections. They are NOT stored in manifest.json.
Use compact notation with three directives:
Files to create (use glob patterns). A file can only be in CREATE for ONE task.
CREATE: apps/users/{models,views,serializers,urls}.py, apps/users/tests/*.py
Existing files to modify. Use scoped syntax for parallel modifications:
Unscoped (whole file - only ONE task per wave can use this):
MODIFY: config/urls.py, config/settings.py
Scoped (specific section - multiple tasks in same wave can modify different scopes):
MODIFY: apps/users/models.py::User.save # Owns User.save method
MODIFY: apps/users/models.py::User.clean # Different task owns User.clean
MODIFY: apps/users/views.py::UserViewSet # Owns entire class
MODIFY: config/urls.py::urlpatterns # Owns urlpatterns list
Scoped syntax rules:
file.py::ClassName - owns entire classfile.py::function_name - owns entire functionfile.py::ClassName.method - owns specific method::Class and ::Class.method in same wave)Files NOT to touch (owned by other tasks):
BOUNDARY: apps/orders/*, apps/products/*, apps/*/migrations/*
task-{number}-{component}.md
Examples:
- task-001-users.md
- task-002-products.md
- task-003-orders.md
- task-004-api.md
- task-005-integration.md
| Task Files | Agent | Description |
|---|---|---|
apps/*/models.py, apps/*/views.py | python-experts:django-expert | Django models, views, serializers |
api/*.py, routers/*.py | python-experts:fastapi-expert | FastAPI endpoints |
src/components/*.tsx | frontend-experts:react-typescript-expert | React components |
**/test_*.py, **/tests/*.py | python-experts:python-testing-expert | Python tests |
*.spec.ts, *.test.tsx | frontend-experts:playwright-testing-expert | TypeScript/E2E tests |
terraform/, docker-compose.yml | devops-data:devops-expert | Infrastructure |
| Integration, architecture | devops-data:cto-architect | Cross-cutting concerns |
Contracts are in the same parallel directory:
parallel/TS-0042-slug/
contracts/
types.py # Reference as: contracts/types.py
api-schema.yaml # Reference as: contracts/api-schema.yaml
tasks/
task-001-users.md
Tasks in Wave N can only depend on tasks in Waves 1 to N-1:
Wave 1: task-001, task-002 (no dependencies, run in parallel)
Wave 2: task-003 (depends on task-001, task-002)
Wave 3: task-004 (depends on task-003)
deps: Tasks that MUST complete before this task startsblocks: Tasks that CANNOT start until this task completesBoth express the same relationship from different perspectives:
# task-001
blocks: [task-003]
# task-003
deps: [task-001]
Clear, actionable requirements:
## Requirements
- Implement `User` model with fields: `email`, `username`, `password`, `is_active`
- Create `UserSerializer` with all User fields (hide password)
- Implement `UserViewSet` with: list, retrieve, create, update
- Add email validation and uniqueness constraint
- Test coverage: minimum 85%
Verification criteria:
## Checklist
- [ ] Model matches DTO in contracts/types.py
- [ ] API matches schema in contracts/api-schema.yaml
- [ ] pytest apps/users/ passes
- [ ] mypy apps/users/ --strict passes
- [ ] Coverage >= 85%
- [ ] No files modified outside scope
Before using tasks:
idagent assignedskills list (from agent-skills-mapping.yaml)contracts referenceddepsdeps: []The Output Format JSON block is not included in task files or generated prompts. It's managed via system prompt by the external execution tool (cpo orchestrator).
This ensures consistent JSON output format across all agents without duplicating the schema in every prompt.