Files
leo-claude-mktplace/plugins/projman/skills/dependency-management.md
lmiranda 2d51df7a42 feat(marketplace): command consolidation + 8 new plugins (v8.1.0 → v9.0.0) [BREAKING]
Phase 1b: Rename all ~94 commands across 12 plugins to /<noun> <action>
sub-command pattern. Git-flow consolidated from 8→5 commands (commit
variants absorbed into --push/--merge/--sync flags). Dispatch files,
name: frontmatter, and cross-reference updates for all plugins.

Phase 2: Design documents for 8 new plugins in docs/designs/.

Phase 3: Scaffold 8 new plugins — saas-api-platform, saas-db-migrate,
saas-react-platform, saas-test-pilot, data-seed, ops-release-manager,
ops-deploy-pipeline, debug-mcp. Each with plugin.json, commands, agents,
skills, README, and claude-md-integration. Marketplace grows from 12→20.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 14:52:11 -05:00

139 lines
4.0 KiB
Markdown

---
name: dependency-management
description: Parallel execution planning, dependency graphs, and file conflict prevention
---
# Dependency Management
## Purpose
Defines how to analyze dependencies, plan parallel execution, and prevent file conflicts.
## When to Use
- **Orchestrator agent**: When starting sprint execution
- **Commands**: `/sprint start`, `/sprint-diagram`
---
## Get Execution Order
```python
get_execution_order(repo="org/repo", issue_numbers=[45, 46, 47, 48, 49])
```
Returns batches that can run in parallel:
```json
{
"batches": [
[45, 48], // Batch 1: No dependencies
[46, 49], // Batch 2: Depends on batch 1
[47] // Batch 3: Depends on batch 2
]
}
```
**Independent tasks in the same batch can run in parallel.**
---
## Parallel Execution Display
```
Parallel Execution Batches:
┌─────────────────────────────────────────────────────────────┐
│ Batch 1 (can start immediately): │
│ • #45 [Sprint 18] feat: Implement JWT service │
│ • #48 [Sprint 18] docs: Update API documentation │
├─────────────────────────────────────────────────────────────┤
│ Batch 2 (after batch 1): │
│ • #46 [Sprint 18] feat: Build login endpoint (needs #45) │
│ • #49 [Sprint 18] test: Add auth tests (needs #45) │
├─────────────────────────────────────────────────────────────┤
│ Batch 3 (after batch 2): │
│ • #47 [Sprint 18] feat: Create login form (needs #46) │
└─────────────────────────────────────────────────────────────┘
```
---
## File Conflict Prevention (MANDATORY)
**CRITICAL: Before dispatching parallel agents, check for file overlap.**
### Pre-Dispatch Conflict Check
1. **Identify target files** for each task in the batch
2. **Check for overlap** - Do any tasks modify the same file?
3. **If overlap detected** - Sequentialize those specific tasks
### Example Analysis
```
Batch 1 Analysis:
#45 - Implement JWT service
Files: auth/jwt_service.py, auth/__init__.py
#48 - Update API documentation
Files: docs/api.md, README.md
Overlap: NONE → Safe to parallelize ✅
Batch 2 Analysis:
#46 - Build login endpoint
Files: api/routes/auth.py, auth/__init__.py
#49 - Add auth tests
Files: tests/test_auth.py, auth/__init__.py
Overlap: auth/__init__.py → CONFLICT! ⚠️
Action: Sequentialize #46 and #49 (run #46 first)
```
### Conflict Resolution Rules
| Conflict Type | Action |
|---------------|--------|
| Same file in checklist | Sequentialize tasks |
| Same directory | Review if safe, usually OK |
| Shared test file | Sequentialize or assign different test files |
| Shared config | Sequentialize |
---
## Branch Isolation Protocol
Each task MUST have its own branch:
```
Task #45 → feat/45-jwt-service (isolated)
Task #48 → feat/48-api-docs (isolated)
```
Never have two agents work on the same branch.
---
## Sequential Merge After Completion
```
1. Task #45 completes → merge feat/45-jwt-service to development
2. Task #48 completes → merge feat/48-api-docs to development
3. Never merge simultaneously - always sequential to detect conflicts
```
**If Merge Conflict Occurs:**
1. Stop second task
2. Resolve conflict manually or assign to human
3. Resume/restart second task with updated base
---
## Creating Dependencies
```python
# Issue 46 depends on issue 45
create_issue_dependency(
repo="org/repo",
issue_number=46,
depends_on=45
)
```
This ensures #46 won't be scheduled until #45 completes.