activation_code: COUPLING_ANALYSIS_V1 phase: 5.2 prerequisites:
- tasks.json outputs:
- .signals/coupling-analyzed.json optional: true description: | OPTIONAL: Analyzes TaskMaster subtasks to determine if they are tightly coupled (share code/models) or loosely coupled (independent modules). This analysis provides RECOMMENDATIONS for implementation order only - it does NOT affect proposal creation.
All proposals are created 1-per-subtask regardless of coupling. Coupling analysis only recommends whether to implement proposals sequentially (tight coupling) or in parallel (loose coupling) to avoid merge conflicts.
Activation trigger: [ACTIVATE:COUPLING_ANALYSIS_V1] (optional)
Coupling Analysis Skill
Activation Method
This skill activates when the hook system injects the codeword:
[ACTIVATE:COUPLING_ANALYSIS_V1]
This occurs when:
- tasks.json is created (automatic transition from Phase 5)
- User runs 'task-master show' command
- User asks about task coupling or parallelization
- Preparing for Phase 6 (OpenSpec generation)
Worktree Isolation Requirements
CRITICAL: This skill MUST operate in a dedicated worktree phase-5-task-2 for coupling analysis:
# Before skill activation:
./lib/worktree-manager.sh create 5 2
cd ./worktrees/phase-5-task-2
# Validate isolation:
./hooks/worktree-enforcer.sh enforce
# Coupling analysis with worktree validation
Worktree Safety Measures
- Read-only analysis: No modifications to source code during analysis
- Isolated output: Coupling results stored within worktree boundaries
- Merge validation: Results merged to main only after validation
- Contamination prevention: No cross-worktree analysis dependencies
What This Skill Does (OPTIONAL - Informational Only)
Automatically analyzes subtask structure to provide implementation order recommendations:
- Tightly Coupled → Implement proposals sequentially (prevent merge conflicts)
- Loosely Coupled → Implement proposals in parallel (safe for 3-4x speedup)
- Clear rationale with file paths and shared resource analysis
- IMPORTANT: Does NOT affect proposal creation (always 1 proposal per subtask)
- IMPORTANT: Only provides implementation hints for Phase 7
- NEW: Worktree-based isolation for safe analysis
1. Analyzes Subtask Structure
Examines:
- Task title and description
- Subtask descriptions (if any)
- File paths mentioned
- Architecture components
- Dependencies between subtasks
- Shared resources (models, utilities, services)
2. Determines Coupling Type (For Implementation Order)
ALL subtasks get 1 proposal each. Coupling only affects implementation order:
TIGHTLY COUPLED
Subtasks share significant code/data structures
→ Proposals: ONE per subtask (standard)
→ Implementation Recommendation: Sequential
→ Reason: Prevent merge conflicts on shared code
Indicators:
- Share same model/class (e.g., User, Product, Order)
- Modify same files
- Use same database tables
- Share utility functions
- Sequential dependencies (2.1 → 2.2 → 2.3)
- Common business logic
Example:
- Master Task: User Authentication (3 subtasks)
- All modify
User.tsmodel - Create 3 proposals, implement sequentially (avoid conflicts)
LOOSELY COUPLED
Subtasks are independent modules
→ Proposals: ONE per subtask (standard)
→ Implementation Recommendation: Parallel
→ Reason: Safe to implement simultaneously (3-4x speedup)
Indicators:
- Touch completely different files
- No shared models/classes
- Independent test suites
- No dependencies between subtasks
- Different architecture components
- Can be tested in isolation
Example:
- Master Task: API Endpoints (3 subtasks)
- Each touches different controller file
- Create 3 proposals, implement in parallel (safe speedup)
3. Provides Recommendation
Output Format:
COUPLING ANALYSIS: Task #[X] - [Title]
==================================================
SUBTASKS: [count]
├─ [X.1]: [title]
├─ [X.2]: [title]
└─ [X.3]: [title]
SHARED RESOURCES:
[List shared models, files, utilities]
OR
[None - completely independent]
COUPLING TYPE: [TIGHTLY COUPLED / LOOSELY COUPLED / NO SUBTASKS]
RATIONALE:
[1-2 sentence explanation of why]
PROPOSAL CREATION (Standard):
├─ OpenSpec Proposals: ONE per subtask (always)
└─ Proposal Name(s): [suggest names]
RECOMMENDED IMPLEMENTATION ORDER:
├─ Strategy: [Sequential / Parallel]
├─ Reason: [Prevent conflicts / Safe speedup]
└─ Estimated Time: [time estimate]
IMPLEMENTATION IMPACT:
├─ Sequential: [X] minutes total
└─ Parallel (if loosely coupled): [Y] minutes total
Analysis Decision Tree
START: Analyze Task #X
│
├─ Has subtasks?
│ ├─ NO → "NO SUBTASKS" → One proposal
│ └─ YES → Continue
│
├─ Check: Same model/class mentioned?
│ ├─ YES → "TIGHTLY COUPLED" → One proposal
│ └─ NO → Continue
│
├─ Check: Same files modified?
│ ├─ YES → "TIGHTLY COUPLED" → One proposal
│ └─ NO → Continue
│
├─ Check: Sequential dependencies?
│ ├─ YES → "TIGHTLY COUPLED" → One proposal
│ └─ NO → Continue
│
├─ Check: Share utilities/services?
│ ├─ YES → "TIGHTLY COUPLED" → One proposal
│ └─ NO → Continue
│
└─ All checks passed
→ "LOOSELY COUPLED" → One proposal per subtask
Pattern Recognition
Pattern 1: CRUD Operations on Same Entity
Task: Implement User Management
├─ 3.1: Create user endpoint
├─ 3.2: Update user endpoint
├─ 3.3: Delete user endpoint
└─ 3.4: Get user endpoint
Analysis: All share User model
Result: TIGHTLY COUPLED
Proposal: One proposal "user-management" with 4 requirements
Pattern 2: Authentication Features
Task: User Authentication
├─ 3.1: Create user model
├─ 3.2: Registration endpoint
├─ 3.3: Login endpoint
└─ 3.4: JWT middleware
Analysis: All depend on User model created in 3.1
Result: TIGHTLY COUPLED
Proposal: One proposal "user-authentication"
Pattern 3: Independent API Refactors
Task: Refactor API Endpoints
├─ 5.1: Refactor users endpoint (src/api/users.js)
├─ 5.2: Refactor products endpoint (src/api/products.js)
└─ 5.3: Refactor orders endpoint (src/api/orders.js)
Analysis: Different files, no shared code
Result: LOOSELY COUPLED
Proposals:
- refactor-users-endpoint
- refactor-products-endpoint
- refactor-orders-endpoint
Pattern 4: Independent Service Integrations
Task: External Service Integrations
├─ 7.1: Stripe payment integration
├─ 7.2: SendGrid email integration
├─ 7.3: Twilio SMS integration
Analysis: Completely independent services
Result: LOOSELY COUPLED
Proposals:
- stripe-payment-integration
- sendgrid-email-integration
- twilio-sms-integration
Pattern 5: UI Components with Shared State
Task: Shopping Cart UI
├─ 4.1: Cart display component
├─ 4.2: Add to cart button
├─ 4.3: Remove from cart button
└─ 4.4: Cart state management
Analysis: All share CartState, CartContext
Result: TIGHTLY COUPLED
Proposal: One proposal "shopping-cart-ui"
File Path Analysis
Extract file paths from task descriptions:
Tightly Coupled Example:
Subtasks mention:
- src/models/User.js (shared)
- src/services/auth.service.js (uses User)
- src/controllers/auth.controller.js (uses User)
- src/middleware/auth.middleware.js (uses User)
Result: TIGHTLY COUPLED (all need User model)
Loosely Coupled Example:
Subtasks mention:
- src/api/users.js (independent)
- src/api/products.js (independent)
- src/api/orders.js (independent)
Result: LOOSELY COUPLED (no overlap)
Parallelization Benefit Calculator
When LOOSELY COUPLED:
Sequential Time = Subtask1_Time + Subtask2_Time + Subtask3_Time
Parallel Time = MAX(Subtask1_Time, Subtask2_Time, Subtask3_Time)
Example:
├─ Subtask 1: 30 minutes
├─ Subtask 2: 30 minutes
└─ Subtask 3: 30 minutes
Sequential: 90 minutes
Parallel: 30 minutes (3x faster!)
Include in analysis output:
PARALLELIZATION BENEFIT:
├─ Sequential: 90 minutes
├─ Parallel: 30 minutes
└─ Speedup: 3x faster
Edge Cases
Edge Case 1: Mixed Coupling
Task: User Profile Features
├─ 6.1: Profile CRUD (uses User model)
├─ 6.2: Avatar upload (uses User model)
├─ 6.3: Email preferences (independent settings)
└─ 6.4: Notification preferences (independent settings)
Analysis: Subtasks 6.1-6.2 tightly coupled, 6.3-6.4 loosely coupled
Recommendation:
├─ Split task into two groups
├─ Group A (6.1-6.2): One proposal "user-profile-core"
└─ Group B (6.3-6.4): Separate proposals or combined "user-preferences"
Alternative: Keep as one proposal with 4 requirements
(Preference: Keep together if ≤4 subtasks)
Edge Case 2: Ambiguous Task
Task: Implement Dashboard
├─ 8.1: Create dashboard component
├─ 8.2: Add charts
├─ 8.3: Add data tables
Analysis: Unclear if components share state
Recommendation:
├─ Default to TIGHTLY COUPLED (safer)
├─ Reason: UI components often share context/state
└─ Can refactor later if truly independent
Edge Case 3: No Subtask Descriptions
Task: Complex Feature
├─ 10.1: [No description]
├─ 10.2: [No description]
└─ 10.3: [No description]
Analysis: Cannot determine coupling from titles alone
Recommendation:
├─ Request more details from TaskMaster
├─ Run: task-master show 10.1, 10.2, 10.3
├─ If still unclear: Default to TIGHTLY COUPLED
└─ Reason: Prefer cohesion over premature splitting
Output Examples
Example 1: Tightly Coupled
COUPLING ANALYSIS: Task #3 - User Authentication
==================================================
SUBTASKS: 4
├─ 3.1: Create user data model with password hashing
├─ 3.2: Implement registration endpoint with validation
├─ 3.3: Implement login endpoint with JWT generation
└─ 3.4: Create JWT validation middleware
SHARED RESOURCES:
├─ User model (src/models/User.js)
├─ AuthService (src/services/auth.service.js)
├─ JWT utilities (src/utils/jwt.utils.js)
└─ Database: users table
COUPLING TYPE: TIGHTLY COUPLED
RATIONALE:
All subtasks depend on the User model created in 3.1 and share
authentication utilities. Sequential implementation ensures consistency
in password hashing, JWT generation, and validation logic.
RECOMMENDED STRATEGY:
├─ OpenSpec Proposals: ONE proposal covering all subtasks
├─ Proposal Name: user-authentication
├─ Implementation: Sequential (maintain coherence)
└─ Estimated Time: 60-90 minutes total
PROPOSAL STRUCTURE:
user-authentication.md
├─ Requirement 1: User Data Model (TM 3.1)
├─ Requirement 2: Registration Endpoint (TM 3.2)
├─ Requirement 3: Login Endpoint (TM 3.3)
└─ Requirement 4: JWT Middleware (TM 3.4)
Example 2: Loosely Coupled
COUPLING ANALYSIS: Task #5 - Refactor API Endpoints
==================================================
SUBTASKS: 3
├─ 5.1: Refactor users endpoint (src/api/users.js)
├─ 5.2: Refactor products endpoint (src/api/products.js)
└─ 5.3: Refactor orders endpoint (src/api/orders.js)
SHARED RESOURCES:
None - each subtask touches completely different files
COUPLING TYPE: LOOSELY COUPLED
RATIONALE:
Each subtask refactors a different API endpoint in a separate file
with no shared dependencies. They can be developed, tested, and
merged independently with zero conflicts.
RECOMMENDED STRATEGY:
├─ OpenSpec Proposals: THREE proposals (one per subtask)
├─ Proposal Names:
│ ├─ refactor-users-endpoint (TM 5.1)
│ ├─ refactor-products-endpoint (TM 5.2)
│ └─ refactor-orders-endpoint (TM 5.3)
├─ Implementation: PARALLEL (3x speedup!)
└─ Estimated Time: 30 minutes parallel (vs 90 sequential)
PARALLELIZATION BENEFIT:
├─ Sequential: 90 minutes (30 min × 3)
├─ Parallel: 30 minutes (3 simultaneous work streams)
└─ Speedup: 3x faster!
IMPLEMENTATION APPROACH:
Use Prompt 3C (Parallel Implementation):
├─ Create 3 git worktrees
├─ Launch 3 Claude Code instances
└─ Implement simultaneously
Example 3: No Subtasks
COUPLING ANALYSIS: Task #2 - Configure Testing Framework
==================================================
SUBTASKS: None (single atomic task)
COUPLING TYPE: NO SUBTASKS
RATIONALE:
Single atomic task with no decomposition needed.
RECOMMENDED STRATEGY:
├─ OpenSpec Proposals: ONE proposal (or skip OpenSpec)
├─ Proposal Name: testing-framework-setup (optional)
├─ Implementation: Direct implementation
└─ Estimated Time: 15-20 minutes
NOTE: For simple setup tasks, OpenSpec proposal may be optional.
Task description and acceptance criteria may be sufficient.
Integration with Phase 2 Workflow
Phase 2 Step 1 Enhancement:
# Original workflow:
task-master show 3
# With Coupling Analysis Skill active:
task-master show 3
# ↓ Skill automatically activates
# ↓ Analyzes task structure
# ↓ Provides coupling analysis
COUPLING ANALYSIS: Task #3 - [Title]
[Complete analysis as shown above]
# User receives recommendation immediately
# Can proceed with confidence to Step 2
Common Mistakes to Avoid
❌ Mistake 1: Over-Splitting Tightly Coupled Tasks
Problem: Creating separate proposals for subtasks that share User model
Result: Inconsistent implementation, duplicate code, merge conflicts
Correct: One proposal with multiple requirements
❌ Mistake 2: Under-Splitting Loosely Coupled Tasks
Problem: One large proposal for completely independent refactors
Result: Sequential implementation, 3x slower, missed parallelization
Correct: Separate proposals, parallel implementation
❌ Mistake 3: Ignoring File Paths
Problem: Not reading file paths in task descriptions
Result: Wrong coupling decision
Correct: Extract and analyze file paths as primary indicator
❌ Mistake 4: Defaulting to "One Proposal Always"
Problem: Never recommending loosely coupled strategy
Result: Never leveraging parallelization benefits
Correct: Actively look for parallelization opportunities
Confidence Levels
Output confidence indicator:
CONFIDENCE: HIGH
├─ Clear file paths specified
├─ Explicit shared resources mentioned
└─ Obvious dependencies
CONFIDENCE: MEDIUM
├─ Some ambiguity in descriptions
├─ File paths not all specified
└─ Recommend default to tightly coupled
CONFIDENCE: LOW
├─ Insufficient information
├─ No file paths or shared resources mentioned
└─ Request more details or default to tightly coupled
Success Metrics
When this skill works well:
- ✅ 95%+ accuracy in coupling detection
- ✅ Enables 3-4x speedup for loosely coupled tasks
- ✅ Prevents merge conflicts from wrong splits
- ✅ Reduces developer decision fatigue
- ✅ Consistent proposal strategy across batches
CRITICAL: Automatic Phase Transition
DO NOT ASK THE USER FOR PERMISSION TO PROCEED.
When coupling analysis is complete, you MUST:
-
Output the completion signal:
✅ COUPLING ANALYSIS COMPLETE [SIGNAL:PHASE5_START] -
IMMEDIATELY proceed to task decomposition by outputting:
[ACTIVATE:TASK_DECOMPOSER_V1] -
Begin task decomposition without waiting for user input.
The pipeline is fully autonomous. Do not ask "Would you like to proceed?" - just proceed.
See Also
/examples/tightly-coupled-examples.md- 10 real examples/examples/loosely-coupled-examples.md- 10 real examples/examples/edge-cases.md- How to handle ambiguous cases