Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:37:27 +08:00
commit 37774aa937
131 changed files with 31137 additions and 0 deletions

View File

@@ -0,0 +1,170 @@
# Task Navigation
> **SCOPE:** Quick navigation to active tasks in Linear. Contains ONLY links and titles per Context Budget Rule. DO NOT add: task descriptions, implementation notes, or workflow rules (→ tasks/README.md).
> **Last Updated**: [YYYY-MM-DD] (Hierarchical format: Status → Epic → Story → Tasks)
---
## Linear Configuration (use MCP Linear)
**What is Linear:** Issue tracking and project management tool with workspace → initiative → project → issue hierarchy.
**Our Configuration:**
- **Workspace**: [TEAM_NAME] ([WORKSPACE_URL])
- **Team**: [TEAM_NAME] (Team Key: [TEAM_KEY])
- **Initiative**: [Your Initiative Name]
- **Projects**: Each Epic = separate Linear Project
- **Issues**: User Stories (label:user-story, parentId=null) + Tasks (parentId=StoryId)
**Key Features:**
- Custom views replicate kanban workflow (Backlog → Active → Review → Done)
- Labels for technical categorization (db, api, service, testing)
- Issue titles preserve Epic context (EP{N}_{XX}: Task Name)
- Single source of truth for all task tracking
**Detailed Guide:** See [docs/guides/25-linear-task-management.md](../guides/25-linear-task-management.md) for:
- Hierarchical structure and best practices
- Custom views, labels, and workflow patterns
- Team keyboard shortcuts and bulk actions
**Single Source of Truth for all Linear variables**
| Variable | Value | Description |
|----------|-------|-------------|
| **Team ID** | [TEAM_NAME] | Linear team name |
| **Team UUID** | [TEAM_UUID] | Team UUID for API calls |
| **Team Key** | [TEAM_KEY] | Short key for issues ([TEAM_KEY]-XX) |
| **Workspace URL** | [WORKSPACE_URL] | Linear workspace |
| **Next Epic Number** | 1 | Next available Epic number |
## Quick Access
**Views:**
- [Backlog]([WORKSPACE_URL]/team/[TEAM_KEY]/backlog)
- [Todo]([WORKSPACE_URL]/team/[TEAM_KEY])
- [Active Sprint]([WORKSPACE_URL]/team/[TEAM_KEY]/active)
- [All Issues]([WORKSPACE_URL]/team/[TEAM_KEY]/all)
---
### Epic Story Counters
| Epic | Last Story | Next Story | Last Task | Next Task |
|------|------------|------------|-----------|-----------|
| Epic 0 | - | US001 | - | EP0_01 |
| Epic 1+ | - | US001 | - | EP1_01 |
> [!NOTE]
> User Story numbering starts at US001 for each new Epic. Task numbering starts at EP{N}_01 where N is the Epic number. [TEAM_KEY]-XX numbers are auto-generated by Linear.
---
## Work in Progress
**Format:** Each status section groups tasks by Epic → Story → Tasks hierarchy. Epic headers (`**Epic N: Title**`) have no indent. Stories have 2-space indent. Tasks have 4-space indent (2 base + 2 for dash).
**Important:** Stories without tasks are ONLY allowed in Backlog/Postponed statuses with note: `_(tasks not created yet)_`
### Backlog
**Epic 0: Common Tasks**
📖 [[TEAM_KEY]-XX: US001 Example Story Title](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX)
_( tasks not created yet)_
**Epic 1: Example Feature Area**
📖 [[TEAM_KEY]-XX: US001 Another Example Story](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX)
- [[TEAM_KEY]-XX: EP1_01 Example Task](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX)
### Todo
**Epic 1: Example Feature Area**
📖 [[TEAM_KEY]-XX: US002 Approved Story Title](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX) ✅ APPROVED
- [[TEAM_KEY]-XX: EP1_02 Ready Task](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX)
- [[TEAM_KEY]-XX: EP1_03 Another Ready Task](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX)
### In Progress
**Epic 1: Example Feature Area**
📖 [[TEAM_KEY]-XX: US002 Approved Story Title](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX) ✅ APPROVED
- [[TEAM_KEY]-XX: EP1_02 Active Task](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX)
### To Review
**Epic 1: Example Feature Area**
📖 [[TEAM_KEY]-XX: US002 Approved Story Title](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX) ✅ APPROVED
- [[TEAM_KEY]-XX: EP1_02 Task Under Review](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX)
### To Rework
**Epic 1: Example Feature Area**
📖 [[TEAM_KEY]-XX: US002 Approved Story Title](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX) ✅ APPROVED
- [[TEAM_KEY]-XX: EP1_02 Task Needing Fixes](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX)
### Done (Last 5 tasks)
**Epic 0: Common Tasks**
📖 [[TEAM_KEY]-XX: US001 Completed Story](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX) ✅ DONE
- [[TEAM_KEY]-XX: EP0_01 Completed Task 1](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX)
- [[TEAM_KEY]-XX: EP0_02 Completed Task 2](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX)
**Epic 1: Example Feature Area**
📖 [[TEAM_KEY]-XX: US002 Another Completed Story](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX) ✅ DONE
- [[TEAM_KEY]-XX: EP1_01 Completed Task](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX)
### Postponed
**Epic 0: Common Tasks**
📖 [[TEAM_KEY]-XX: US003 Deferred Story](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX)
_(tasks not created yet)_
**Epic 2: Future Feature**
📖 [[TEAM_KEY]-XX: US001 Postponed Work](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX)
- [[TEAM_KEY]-XX: EP2_01 Postponed Task](https://linear.app/[workspace]/issue/[TEAM_KEY]-XX)
---
## Epics Overview
**Active:**
_No active epics yet_
**Completed:**
_No completed epics yet_
---
## Workflow Reference
| Status | Purpose |
|--------|---------|
| **Backlog** | New tasks requiring estimation and approval |
| **Postponed** | Deferred tasks for future iterations |
| **Todo** | Approved tasks ready for development |
| **In Progress** | Active development |
| **To Review** | Awaiting code review |
| **To Rework** | Needs fixes, returns to In Progress |
| **Done** | Completed and approved |
**Manual Statuses:** Canceled, Duplicate
---
## Related Documentation
- [tasks/README.md](./README.md) - Task system workflow and rules
---
**Template Version:** 3.0.0 (Epic grouping in ALL Work in Progress sections with examples)
**Last Updated:** 2025-11-15

View File

@@ -0,0 +1,274 @@
# Task Management Documentation Questions
**Purpose:** Define validation questions for task management system (tasks/README.md, kanban_board.md). Used in CREATE mode (user answers questions) and VALIDATE mode (check document compliance).
**Format:** Document → Questions (with target sections) → Validation Heuristics → Auto-Discovery → Special Handling
---
## Table of Contents
| Document | Questions | Auto-Discovery | Priority | Line |
|----------|-----------|----------------|----------|------|
| [tasks/README.md](#tasksreadmemd) | 3 | None | High | L35 |
| [kanban_board.md](#kanban_boardmd) | 2 | Placeholder Detection | Critical | L110 |
**Priority Legend:**
- **Critical:** Must answer all questions (Linear Configuration required for workflow)
- **High:** Strongly recommended (standard workflow content)
**Auto-Discovery Legend:**
- **None:** No auto-discovery needed (workflow is standardized)
- **Placeholder Detection:** Detect and replace placeholders with user input
---
<!-- DOCUMENT_START: tasks/README.md -->
## tasks/README.md
**File:** docs/tasks/README.md
**Target Sections:** Linear Integration, Task Workflow, Task Templates
**Rules for this document:**
- Must have SCOPE tag in first 10 lines
- Must explain Linear MCP integration
- Must document state transitions and review criteria
- Must list available task templates
---
<!-- QUESTION_START: 1 -->
### Question 1: How is Linear integrated into the task management system?
**Expected Answer:** Team ID location, issue statuses (Backlog, Todo, In Progress, To Review, Done), label conventions, Linear MCP methods reference, workflow configuration
**Target Section:** ## Core Concepts, ## Critical Rules, ## Linear MCP Methods Reference
**Validation Heuristics:**
- ✅ Contains "Linear" or "MCP" → pass
- ✅ Mentions team ID or team UUID → pass
- ✅ Has workflow states: Backlog, Todo, In Progress, To Review, Done → pass
- ✅ Has "Linear MCP Methods" section with examples → pass
- ✅ Length > 100 words → pass
**Auto-Discovery:**
- None needed (standardized workflow provided by template)
**MCP Ref Hints:**
- Research "Linear API MCP integration"
- Search "Linear issue workflow states"
<!-- QUESTION_END: 1 -->
---
<!-- QUESTION_START: 2 -->
### Question 2: What are the task state transitions and review criteria?
**Expected Answer:** State transition rules (Backlog → Todo → In Progress → To Review → Done), review criteria, rework process, Epic Grouping Pattern
**Target Section:** ## Task Workflow, ## Core Concepts
**Validation Heuristics:**
- ✅ Contains "Backlog" or "Todo" or "In Progress" → pass
- ✅ Mentions "Review" or "To Review" → pass
- ✅ Mentions "Done" or "Completed" → pass
- ✅ Has workflow states diagram or table → pass
- ✅ Mentions "Epic Grouping" → pass
- ✅ Length > 60 words → pass
**Auto-Discovery:**
- None needed (standard workflow states)
**MCP Ref Hints:**
- None needed
<!-- QUESTION_END: 2 -->
---
<!-- QUESTION_START: 3 -->
### Question 3: What task templates are available and how to use them?
**Expected Answer:** List of templates (Epic, Story, Task, Test Task), usage guidelines, required sections, links to template files
**Target Section:** ## Task Workflow, ## Critical Rules
**Validation Heuristics:**
- ✅ Contains "template" (case insensitive) → pass
- ✅ Mentions "Epic" or "Story" or "Task" → pass
- ✅ Has links to template files or references → pass
- ✅ Mentions "Story-Level Test Strategy" or testing → pass
- ✅ Length > 40 words → pass
**Auto-Discovery:**
- None needed (templates provided by other skills)
**MCP Ref Hints:**
- None needed
<!-- QUESTION_END: 3 -->
---
**Overall File Validation:**
- ✅ Has SCOPE tag in first 10 lines: `<!-- SCOPE: Task tracking system workflow and rules ONLY -->`
- ✅ Total length > 200 words (meaningful content)
- ✅ Has Maintenance section at end
<!-- DOCUMENT_END: tasks/README.md -->
---
<!-- DOCUMENT_START: kanban_board.md -->
## kanban_board.md
**File:** docs/tasks/kanban_board.md
**Target Sections:** Linear Configuration, Work in Progress (Epic Tracking)
**Rules for this document:**
- Must have SCOPE tag in first 10 lines
- Must have Linear Configuration section with Team Name, Team UUID, Team Key
- Must have Epic tracking table or placeholder
- Single Source of Truth for Next Epic/Story Numbers
---
<!-- QUESTION_START: 1 -->
### Question 1: What is the Linear team configuration?
**Expected Answer:** Team Name, Team UUID (valid format), Team Key (2-4 uppercase letters), Workspace URL, Next Epic Number (≥1), Next Story Number (≥1)
**Target Section:** ## Linear Configuration, ## Epic Story Counters
**Validation Heuristics:**
- ✅ Has Team Name (not placeholder `[TEAM_NAME]`) → pass
- ✅ Has valid UUID format (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) → pass
- ✅ Has Team Key (2-4 uppercase letters, e.g., PROJ, WEB, API) → pass
- ✅ Has Next Epic Number (integer ≥ 1) → pass
- ✅ Has Next Story Number (integer ≥ 1) → pass
- ✅ Has Workspace URL or Team ID → pass
**Auto-Discovery:**
- **Placeholder Detection Pattern:**
- Check for: `[TEAM_NAME]`, `[TEAM_UUID]`, `[TEAM_KEY]`
- If placeholders found → Trigger interactive user prompt (see Special Handling)
- If real values present → Validate format only
**Special Handling (Phase 3 VALIDATE CONTENT):**
**Placeholder Detection:**
```
Pattern: [TEAM_NAME], [TEAM_UUID], [TEAM_KEY]
If ANY placeholder present → Interactive Setup Mode
If NO placeholders → Validation Mode
```
**Interactive Setup Mode (if placeholders detected):**
1. **Prompt user for Team Name:**
- Question: "What is your Linear Team Name?"
- Validation: Non-empty string
- Example: "My Project Team"
2. **Prompt user for Team UUID:**
- Question: "What is your Linear Team UUID?"
- Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
- Validation Regex: `/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/`
- If invalid → Re-prompt with error: "Invalid UUID format. Expected: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (lowercase hex)"
- Example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
3. **Prompt user for Team Key:**
- Question: "What is your Linear Team Key (2-4 uppercase letters)?"
- Format: 2-4 uppercase letters
- Validation Regex: `/^[A-Z]{2,4}$/`
- If invalid → Re-prompt with error: "Invalid Team Key format. Expected: 2-4 uppercase letters (e.g., PROJ, WEB, API)"
- Example: "PROJ"
4. **Replace placeholders:**
- Replace `[TEAM_NAME]``{user_team_name}`
- Replace `[TEAM_UUID]``{user_team_uuid}`
- Replace `[TEAM_KEY]``{user_team_key}`
- Replace `[WORKSPACE_URL]``https://linear.app/{workspace_slug}` (if placeholder exists)
5. **Set initial counters:**
- Set "Next Epic Number" → 1
- Set "Next Story Number" → 1
6. **Update Last Updated date:**
- Replace `[YYYY-MM-DD]``{current_date}`
7. **Save updated kanban_board.md**
8. **Log success:**
```
✓ Linear configuration updated:
- Team Name: {user_team_name}
- Team UUID: {user_team_uuid}
- Team Key: {user_team_key}
- Next Epic Number: 1
- Next Story Number: 1
```
**Validation Mode (if real values present):**
1. **Extract existing values:**
- Extract Team UUID from line matching: `Team UUID: {value}`
- Extract Team Key from line matching: `Team Key: {value}`
2. **Validate formats:**
- UUID: `/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/`
- Team Key: `/^[A-Z]{2,4}$/`
3. **If validation fails:**
```
⚠ Invalid format detected in Linear Configuration:
- Team UUID: {uuid} (expected: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
- Team Key: {key} (expected: 2-4 uppercase letters)
Fix manually or re-run skill to replace with correct values.
```
4. **If validation passes:**
```
✓ Linear Configuration valid (Team: {name}, UUID: {uuid}, Key: {key})
```
**MCP Ref Hints:**
- Research "Linear team UUID format"
- Search "Linear workspace configuration"
<!-- QUESTION_END: 1 -->
---
<!-- QUESTION_START: 2 -->
### Question 2: Are Epics being tracked in the board?
**Expected Answer:** Table with Epic data (Epic ID, Name, Status, Progress) or placeholder ("No active epics")
**Target Section:** ## Work in Progress (Epics Overview subsection)
**Validation Heuristics:**
- ✅ Has "Epic" or "Epics Overview" section header → pass
- ✅ Has table with columns: Epic, Name, Status, Progress (or similar) → pass
- ✅ OR has placeholder: "No active epics" or "No epics yet" → pass
- ✅ Length > 20 words → pass
**Auto-Discovery:**
- None needed (Epics are populated by workflow skills: ln-210, ln-220, ln-300)
**MCP Ref Hints:**
- None needed
<!-- QUESTION_END: 2 -->
---
**Overall File Validation:**
- ✅ Has SCOPE tag in first 10 lines: `<!-- SCOPE: Quick navigation to active tasks in Linear -->`
- ✅ Has Linear Configuration section with valid Team Name, UUID, Key
- ✅ Has Epic Story Counters table
- ✅ Has Maintenance section at end
<!-- DOCUMENT_END: kanban_board.md -->
---
**Version:** 1.0
**Last Updated:** 2025-11-18

View File

@@ -0,0 +1,541 @@
# Task Tracking System
> **SCOPE:** Task tracking system workflow and rules ONLY. Contains task lifecycle, naming conventions, and integration rules. DO NOT add: actual task details (→ task files), kanban status (→ kanban_board.md), or implementation guides (→ guides/).
---
## Overview
This folder contains the project's task management system, organizing all development work into trackable units with clear status progression.
### Folder Structure
```
docs/tasks/
├── README.md # This file - Task tracking workflow and rules
└── kanban_board.md # Live navigation to active tasks in Linear
```
> [!NOTE]
> All task tracking (Epics, User Stories, tasks) is handled in Linear. Linear is the single source of truth.
**Live Navigation**: [Kanban Board](kanban_board.md)
---
## Core Concepts
### Task Lifecycle
**Workflow:**
```
Backlog/Postponed → Todo → In Progress → To Review → Done
To Rework → (back to In Progress)
```
**Statuses:**
- **Backlog:** New tasks requiring estimation and approval
- **Postponed:** Deferred tasks for future iterations
- **Todo:** Approved tasks ready for development
- **In Progress:** Currently being developed
- **To Review:** Awaiting code review and validation
- **To Rework:** Needs fixes after review
- **Done:** Completed, reviewed, tested, approved
**Manual Statuses** (not in workflow): Canceled, Duplicate
### Epic Structure
**Organization in Linear:**
- **Epic** = Linear Project (contains all User Stories and tasks for epic)
- **User Story** = Linear Issue with `label: user-story` and `parentId: null`
- **Task** = Linear Issue with `parentId: <UserStoryId>`
**Epic Fields:** Name, description, start date, target date, project lead
**User Story Format:** "As a... I want... So that..." + Given-When-Then acceptance criteria
**Task Format:** Context, requirements, acceptance criteria, implementation notes
### Foundation-First Execution Order
**Critical Rule**: Foundation tasks are executed BEFORE consumer tasks (for testability).
**Definitions**:
- **Foundation** = Database, Repository, core services
- **Consumer** = API endpoints, Frontend components that USE foundation
**Rationale**: Each layer is testable when built (can't test API without working DB).
**Example**:
```
✅ CORRECT EXECUTION ORDER:
Task 1: Database schema + Repository (foundation)
Task 2: Service layer with business logic
Task 3: API endpoint (consumer)
Task 4: Frontend dashboard (consumer)
❌ WRONG (can't test):
Task 1: Frontend dashboard calls /api/users
Task 2: API endpoint (no DB to test against)
```
> **Note:** Consumer-First is for API/interface DESIGN (think from consumer perspective), Foundation-First is for EXECUTION ORDER (build testable foundation first).
---
## Critical Rules
### Rule 1: Linear Integration (MCP Methods ONLY)
**CRITICAL**: Use ONLY `mcp__linear-server__*` methods for all Linear operations.
**PROHIBITED**:
- `gh` command (GitHub CLI)
- GitHub API calls
- Direct Linear API calls
- Manual task creation in Linear UI (for automated workflows)
**Rationale**:
- MCP Linear provides type-safe, validated operations
- Prevents data inconsistencies
- Ensures proper error handling
**See**: [Linear MCP Methods Reference](#linear-mcp-methods-reference) below
---
### Rule 2: Integration Rules
#### Tests
**Rule**: Tests are created ONLY in the final Story task (Story Finalizer test task).
**NEVER** create:
- Separate test tasks during implementation
- Tests in implementation tasks (implementation tasks focus on feature code only)
**Process**:
1. Implementation tasks (1-6 tasks) → To Review → Done
2. ln-340-story-quality-gate Pass 1 → Manual testing
3. ln-350-story-test-planner → Creates Story Finalizer test task
4. ln-334-test-executor → Implements all tests (E2E, Integration, Unit)
**Rationale**: Atomic testing strategy, prevents test duplication, ensures comprehensive coverage.
#### Documentation
**Rule**: Documentation is ALWAYS integrated in feature tasks (same task as implementation).
**NEVER** create:
- Separate documentation tasks
- "Update README" tasks
- "Write API docs" tasks
**Process**: Implementation task includes both code AND documentation updates in Definition of Done.
**Rationale**: Ensures documentation stays in sync with code, prevents documentation debt.
---
### Rule 3: Story-Level Test Strategy
**Value-Based Testing**: Test only scenarios with Priority ≥15 (calculated by Impact × Likelihood).
**Test Limits per Story**:
| Test Type | Min | Max | Purpose |
|-----------|-----|-----|---------|
| **E2E Tests** | 2 | 5 | End-to-end user workflows (Priority ≥15) |
| **Integration Tests** | 3 | 8 | Component interactions, external APIs |
| **Unit Tests** | 5 | 15 | Business logic, edge cases |
| **Total** | 10 | 28 | Complete Story coverage |
**Example**:
```
Story: User Authentication
- E2E: 3 tests (login success, login failure, session expiry)
- Integration: 5 tests (OAuth flow, token refresh, database session storage, Redis cache, logout)
- Unit: 8 tests (password validation, email validation, token generation, permission checks, etc.)
Total: 16 tests (within 10-28 range)
```
**Reference**: [Risk-Based Testing Guide](../reference/guides/risk-based-testing-guide.md) for Priority calculation.
---
### Rule 4: Context Budget Rule
- [ ] **CRITICAL: Minimize context pollution in kanban_board.md**
**Rule:** [kanban_board.md](./kanban_board.md) contains ONLY links and titles - no descriptions, no implementation notes.
**Board Structure:**
Single hierarchical view: **Status → Epic → User Story → Tasks**
**Sections:**
1. **Work in Progress** - Hierarchical task tracking (Backlog → Todo → In Progress → To Review → To Rework → Done → Postponed)
2. **Epics Overview** - Portfolio-level status (Active + Completed epics)
**Format Rules:**
**User Story:**
- Format: `📖 [{{TEAM_KEY}}-XX: USYYY Title](link)` + optional `✅ APPROVED`
- 2-space indent from Epic
- Always shows parent epic context
- Can exist without tasks ONLY in Backlog status (with note: `_(tasks not created yet)_`)
**Task:**
- Format: ` - [{{TEAM_KEY}}-XX: EPYY_ZZ Title](link)` (2-space indent + dash)
- 4-space total indent (2-space base from Story + 2-space for dash)
- Always nested under parent User Story
- Cannot exist without parent story
**Epic Grouping:**
- Each status section grouped by: `**Epic N: Epic Name**` (bold header)
- Stories listed under epic with 2-space indent
- Tasks listed under stories with 4-space indent (2-space base + 2-space for dash)
**Status-Specific Limits:**
- **Backlog:** All stories (tasks optional, use `_(tasks not created yet)_` if none)
- **Todo/In Progress/To Review/To Rework:** All stories with all tasks
- **Done:** Maximum 5 tasks total across all stories (show most recent)
- **Postponed:** All stories with all tasks
**Rationale:**
- Single view eliminates need to "jump" between sections
- Natural hierarchy matches mental model: Status → Epic → Story → Task
- Story context always visible with its tasks
- Reduced cognitive load: one structure, not three
- Minimize context size for AI agents
- Fast navigation at all levels (status/epic/story/task)
---
## Task Workflow
### Planning Guidelines
**Optimal Task Size**: 3-5 hours per task
**Task Granularity**:
- Too small (< 2 hours): Merge with related tasks
- Too large (> 8 hours): Split into subtasks
- Sweet spot (3-5 hours): Maximum productivity, clear acceptance criteria
**Story Limits**:
- Implementation tasks: 1-6 tasks per Story
- Test task: 1 Story Finalizer test task (created after implementation)
- Total: Max 7 tasks per Story
### Workflow Skills
| Category | Skill | Purpose |
|----------|-------|---------|
| **Planning** | ln-210-epic-coordinator | Decompose scope → 3-7 Epics |
| | ln-220-story-coordinator | Decompose Epic → 5-10 Stories (with Phase 3 Library Research) |
| | ln-310-story-decomposer | Decompose Story → 1-6 Implementation Tasks |
| | ln-350-story-test-planner | Plan Story Finalizer test task (after manual testing) |
| **Validation** | ln-320-story-validator | Auto-fix Stories/Tasks → Approve (Backlog → Todo) |
| **Execution** | ln-330-story-executor | Orchestrate Story execution (delegates to ln-31/ln-34/ln-32) |
| | ln-331-task-executor | Execute implementation tasks (Todo → In Progress → To Review) |
| | ln-334-test-executor | Execute Story Finalizer test tasks (11 sections) |
| | ln-332-task-reviewer | Review tasks (To Review → Done/Rework) |
| | ln-333-task-rework | Fix tasks after review (To Rework → To Review) |
| **Quality** | ln-340-story-quality-gate | Two-pass review (Code Quality → Regression → Manual Testing) |
| | ln-341-code-quality-checker | Analyze code for DRY/KISS/YAGNI violations |
| | ln-342-regression-checker | Run existing test suite |
| | ln-343-manual-tester | Perform manual testing via curl/puppeteer |
| **Documentation** | ln-114-project-docs-creator | Create project docs (requirements, architecture, specs) |
| | ln-322-adr-creator | Create ADRs (architecture decisions) |
| | ln-321-guide-creator | Create guides (reusable patterns) |
| | ln-323-manual-creator | Create manuals (API references) |
---
## Project Configuration
### Quality Commands
```bash
# Docker development environment
{{DOCKER_COMMAND}}
# Run tests
{{TEST_COMMAND}}
# Run tests with coverage
{{COVERAGE_COMMAND}}
# Type checking
{{TYPE_CHECK_COMMAND}}
# Linting
{{LINT_COMMAND}}
```
### Documentation Structure
Core documentation:
- [Requirements](../project/requirements.md) - Functional requirements (FR-XXX-NNN) with MoSCoW prioritization
- [Architecture](../project/architecture.md) - System architecture (C4 Model, arc42)
- [Technical Specification](../project/technical_specification.md) - Implementation details
- [ADRs](../reference/adrs/) - Architecture Decision Records
- [Guides](../reference/guides/) - Project patterns and best practices
- [Manuals](../reference/manuals/) - Package API references
### Label Taxonomy
**Functional Labels**: `feature`, `bug`, `refactoring`, `documentation`, `testing`, `infrastructure`
**Type Labels**: `user-story`, `implementation-task`, `test-task`
**Status Labels** (auto-managed by Linear): `backlog`, `todo`, `in-progress`, `to-review`, `to-rework`, `done`, `canceled`
### Test Audit History (Optional)
**Test Audit:** Every +50 tests → review new files, delete framework tests. Last: {{AUDIT_DATE}} ({{OLD_COUNT}} → {{NEW_COUNT}})
---
## Linear MCP Methods Reference
### Core Operations
**Issues**:
```python
# List issues
mcp__linear-server__list_issues(
team="TeamName", # Team name or ID
state="In Progress", # State name or ID
assignee="me", # User ID, name, email, or "me"
limit=50 # Max 250
)
# Get issue details
mcp__linear-server__get_issue(
id="PROJ-123" # Issue ID
)
# Create issue
mcp__linear-server__create_issue(
team="TeamName", # Required: Team name or ID
title="Task title", # Required: Issue title
description="...", # Markdown description
state="Todo", # State name or ID
assignee="me", # User ID, name, email, or "me"
parentId="parent-uuid", # For tasks (parent Story UUID)
labels=["feature", "backend"] # Label names or IDs
)
# Update issue
mcp__linear-server__update_issue(
id="PROJ-123", # Required: Issue ID
state="Done", # State name or ID
description="...", # Updated description
assignee="me" # Reassign
)
```
**Projects** (Epics):
```python
# List projects
mcp__linear-server__list_projects(
team="TeamName", # Filter by team
state="started", # Filter by state
limit=50
)
# Get project
mcp__linear-server__get_project(
query="Epic 1" # ID or name
)
# Create project (Epic)
mcp__linear-server__create_project(
team="TeamName", # Required
name="Epic 1: Auth", # Required
description="...", # Epic description
state="planned" # Epic state
)
# Update project
mcp__linear-server__update_project(
id="project-uuid", # Required
state="started", # Update state
description="..." # Update description
)
```
**Teams**:
```python
# List teams
mcp__linear-server__list_teams()
# Get team
mcp__linear-server__get_team(
query="TeamName" # UUID, key, or name
)
```
**Labels**:
```python
# List labels
mcp__linear-server__list_issue_labels(
team="TeamName" # Optional: filter by team
)
# Create label
mcp__linear-server__create_issue_label(
name="backend", # Required
color="#FF5733", # Hex color
teamId="team-uuid" # Optional: team-specific label
)
```
**Comments**:
```python
# List comments
mcp__linear-server__list_comments(
issueId="issue-uuid" # Required
)
# Create comment
mcp__linear-server__create_comment(
issueId="issue-uuid", # Required
body="Comment text" # Required: Markdown
)
```
### Parameter Patterns
**Common Filters**:
```python
# By assignee
assignee="me" # Current user
assignee="user@example.com" # By email
assignee="user-uuid" # By UUID
# By state
state="Todo" # By name
state="state-uuid" # By UUID
# By team
team="TeamName" # By name
team="team-uuid" # By UUID
# By label
label="feature" # By name
label="label-uuid" # By UUID
```
**Pagination**:
```python
# Limit results
limit=50 # Default: 50, Max: 250
# Pagination
after="cursor-id" # Start from cursor
before="cursor-id" # End at cursor
```
**Date Filters**:
```python
# ISO-8601 date-time
createdAt="2025-01-01T00:00:00Z"
# Duration (relative)
createdAt="-P1D" # Created in last 1 day
updatedAt="-P7D" # Updated in last 7 days
```
### Examples
**Example 1: Get all In Progress tasks for current user**
```python
issues = mcp__linear-server__list_issues(
team="ProjectTeam",
state="In Progress",
assignee="me",
limit=100
)
```
**Example 2: Create Story (User Story)**
```python
story = mcp__linear-server__create_issue(
team="ProjectTeam",
title="US001 User Login",
description="User story description...",
state="Backlog",
labels=["user-story", "feature"]
)
```
**Example 3: Create Task (child of Story)**
```python
task = mcp__linear-server__create_issue(
team="ProjectTeam",
title="EP1_01 Implement JWT tokens",
description="Task description...",
state="Todo",
parentId="story-uuid", # Link to parent Story
labels=["implementation-task", "backend"]
)
```
**Example 4: Move task to Done**
```python
mcp__linear-server__update_issue(
id="PROJ-123",
state="Done"
)
```
**Example 5: Create Epic (Project)**
```python
epic = mcp__linear-server__create_project(
team="ProjectTeam",
name="Epic 1: Authentication System",
description="Epic description...",
state="planned"
)
```
---
## Maintenance
**Update Triggers**:
- When adding new workflow skills
- When changing task lifecycle statuses
- When updating Critical Rules
- When modifying Linear integration patterns
- When changing test strategy limits
**Verification**:
- All Linear MCP method examples are valid
- Workflow skills table matches available skills
- Critical Rules align with current development principles
- Test limits match risk-based testing guide
**Last Updated**: {{DATE}}
---
**Template Version:** 1.0.0
**Template Last Updated:** 2025-11-15