Skip to content
Back to skills

Map Dependencies

ASecurity

Use when asked to find dependencies between issues or prepare a dependency-aware sprint plan.

  • 6 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 6, 2026
ai-agentsgobashnodeexpressgit

Works with

  • cli

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 6, 2026

npx -y skills add BrennonTWilliams/little-loops --skill map-dependencies --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Map Dependencies?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Map Dependencies
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/brennontwilliams-map-dependencies/badge)](https://www.skillsdirectory.com/skills/brennontwilliams-map-dependencies)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: map-dependencies
description: Use when asked to find dependencies between issues or prepare a dependency-aware sprint plan.
disable-model-invocation: true
model: sonnet
model_hint: coding
allowed-tools:
  - Read
  - Glob
  - Grep
  - Bash(ll-deps:*, git:*)
metadata:
  short-description: Use when asked to find dependencies between issues or prepare a dependency-aware
---

# Map Dependencies Skill

This skill performs cross-issue dependency analysis to discover missing relationships, validate existing references, and propose new dependency links using the canonical 6-field relationship vocabulary.

### Canonical Relationship Fields

Issues use six frontmatter fields to express relationships:

| Field | Type | Meaning | Ordering |
|-------|------|---------|---------|
| `parent` | string | Parent issue this was decomposed from | — |
| `blocked_by` | list | Hard dependencies — `──→` — must complete before this issue can start (wave-gated) | Hard stop |
| `depends_on` | list | Soft ordering prerequisites — `-->` — wave-gated (scheduled in a later wave) but non-fatal if the prerequisite is absent | Soft |
| `relates_to` | list | Thematically related issues (no ordering constraint) | — |
| `duplicate_of` | string | Superseded by another issue | — |
| `blocks` | list | Computed inverse of `blocked_by`; written by `ll-deps fix` | — |

Use `blocked_by` only when ISSUE-B **must** complete before ISSUE-A can start. For preferred-but-not-required ordering, use `depends_on` instead.

## When to Activate

Proactively offer or invoke this skill when the user:

- Asks about issue dependencies or relationships
- Wants to find which issues overlap or conflict
- Is preparing for sprint planning and needs dependency context
- Asks to validate or check existing dependency references
- Mentions missing or broken dependency links
- Wants a dependency graph visualization

## Arguments

$ARGUMENTS

Parse arguments for flags:

```bash
AUTO_MODE=false
CHECK_MODE=false

# Auto-enable in automation contexts
if [[ "$ARGUMENTS" == *"--dangerously-skip-permissions"* ]] || [[ -n "${LL_NON_INTERACTIVE:-}" ]] || [[ -n "${DANGEROUSLY_SKIP_PERMISSIONS:-}" ]]; then AUTO_MODE=true; fi

# Explicit flags
if [[ "$ARGUMENTS" == *"--auto"* ]]; then AUTO_MODE=true; fi
if [[ "$ARGUMENTS" == *"--check"* ]]; then CHECK_MODE=true; AUTO_MODE=true; fi
```

- **flags** (optional):
  - `--auto` - Non-interactive mode: apply all HIGH-confidence dependency proposals (≥0.7 conflict score) without prompting. Skip MEDIUM-confidence proposals.
  - `--check` — Check-only mode for FSM loop evaluators. Run dependency analysis without applying changes, print `[ID] deps: N unmapped dependencies` per issue with unmapped deps, exit 1 if any unmapped, exit 0 if all mapped. Implies `--auto`.

## How to Use

Run the `ll-deps` CLI command based on user needs:

### Full Analysis

For comprehensive dependency analysis (file overlaps + validation):
```bash
ll-deps analyze
```

### With Dependency Graph

Include an ASCII dependency graph visualization:
```bash
ll-deps analyze --graph
```

### JSON Output

For programmatic access:
```bash
ll-deps analyze --format json
```

### Sprint-Scoped Analysis

Restrict analysis to only issues in a named sprint:
```bash
ll-deps analyze --sprint my-sprint
ll-deps analyze --sprint my-sprint --graph
ll-deps validate --sprint my-sprint
```

### Validation Only

Check existing dependency references for broken refs, cycles, and missing backlinks:
```bash
ll-deps validate
ll-deps validate --json
```

> **Note:** `ll-deps validate` uses `--json`/`-j` for structured output (consistent with most `ll-*` CLIs), while `ll-deps analyze` uses `--format json`. This is a known pattern inconsistency — `analyze` predates the universal `--json` contract.

### EPIC Tree View

Render an EPIC's child issue hierarchy with dependency edges:
```bash
ll-deps tree --epic EPIC-1773          # Text tree with ├──/└── connectors
ll-deps tree --epic EPIC-1773 -f json  # Structured JSON (root, nodes, edges)
```

### Custom Issues Directory

If issues are not in the default `.issues` directory:
```bash
ll-deps -d path/to/issues analyze
```

## Examples

| User Says | Action |
|-----------|--------|
| "Find missing dependencies" | `ll-deps analyze` |
| "Check dependency references" | `ll-deps validate` |
| "Show dependency graph" | `ll-deps analyze --graph` |
| "Are there broken dependency links?" | `ll-deps validate` |
| "Prepare for sprint planning" | `ll-deps analyze --graph` |
| "Analyze deps for my sprint" | `ll-deps analyze --sprint <name>` |
| "Validate sprint dependencies" | `ll-deps validate --sprint <name>` |
| "Which issues conflict?" | `ll-deps analyze` |
| "Map deps non-interactively" | `/ll:map-dependencies --auto` |
| "Check if all deps are mapped" | `/ll:map-dependencies --check` |
| "Show EPIC child hierarchy" | `ll-deps tree --epic EPIC-NNN` |
| "EPIC tree as JSON" | `ll-deps tree --epic EPIC-NNN --format json` |

## Interpreting Results

### Proposed Dependencies

The analysis identifies issue pairs that reference overlapping files and computes a semantic conflict score:

- **HIGH conflict (>= 0.7)**: Issues modify the same component/section — strong dependency
- **MEDIUM conflict (>= 0.4)**: Issues share files with moderate semantic overlap
- **Confidence**: Based on file overlap ratio (higher = more overlapping files)

Direction is determined by:
1. Priority: Higher priority issue blocks lower
2. Modification type: Structural blocks infrastructure blocks enhancement
3. Fallback: ID ordering with reduced confidence

### Parallel-Safe Pairs

Pairs with conflict score < 0.4 are reported as safe to run in parallel. These touch the same files but different sections/components.

### Validation Issues

- **Broken references**: `## Blocked By` entries referencing nonexistent issues
- **Missing backlinks**: A blocked by B, but B doesn't list A in Blocks
- **Cycles**: Circular dependency chains
- **Stale references**: Dependencies on already-completed issues
- **Broken depends-on references**: `depends_on` frontmatter entries referencing nonexistent issues
- **Broken relates-to references**: `relates_to` frontmatter entries referencing nonexistent issues

## Applying Proposals

After reviewing the analysis output, apply proposed dependencies using `ll-deps apply`:

```bash
ll-deps apply                           # Apply all proposals >= 0.7 confidence
ll-deps apply --min-confidence 0.5      # Lower threshold
ll-deps apply --dry-run                 # Preview without writing
ll-deps apply --sprint my-sprint        # Sprint-scoped apply
ll-deps apply FEAT-001 blocks FEAT-002  # Manual explicit pair
```

`ll-deps apply` writes only the `## Blocked By` direction. Run `ll-deps fix` afterward to add missing `## Blocks` backlinks, then `ll-deps validate` to confirm a clean state.

`ll-deps fix` also enumerates any circular `Blocked By`/`depends_on` chains (member edges plus a suggested lowest-priority-edge cut) without breaking them; pass `ll-deps fix --break-cycles` to apply the suggested cut and restore mutually-blocked issues to the ready pool.

### Auto Mode Behavior

**When `AUTO_MODE` is true**: Skip the AskUserQuestion prompt below. Run `ll-deps apply` automatically (default threshold 0.7). Emit one status line per applied proposal: `[SOURCE-ID] → [TARGET-ID]: dependency added (confidence: HIGH)`

### Check Mode Behavior (--check)

**When `CHECK_MODE` is true**: Run dependency analysis without applying any changes. For each issue with unmapped dependencies (HIGH-confidence proposals not yet in `## Blocked By`), print `[ID] deps: N unmapped dependencies`. After all issues analyzed, if any had unmapped deps: print `N issues with unmapped dependencies`, then `exit 1`. If all mapped: print `All dependencies mapped`, then `exit 0`. This integrates with FSM `evaluate: type: exit_code` routing.

### Interactive Mode (default)

1. Use AskUserQuestion to confirm which proposals to apply:
   - "Apply all" — run `ll-deps apply`
   - "Select individually" — run `ll-deps apply <source> blocks <target>` per pair
   - "Skip all" — don't write changes

2. After applying, fix backlinks and validate:
```bash
ll-deps fix
ll-deps validate
```

3. Stage changes. `ll-deps fix` rewrites backlinks across an open-ended set of *tracked*
   issue files, so stage tracked modifications only — do **not** add the whole directory,
   which would also sweep in unrelated *untracked* drafts under `.issues/` (BUG-1976):
```bash
git add -u {{config.issues.base_dir}}/
```

## Configuration

Uses project configuration from `.ll/ll-config.json`:

- `issues.base_dir` - Base directory for issues (default: `.issues`)
- `issues.categories` - Bug/feature/enhancement directory config
- `sprints.sprints_dir` - Sprint definitions directory (default: `.sprints`)

## Integration

After running dependency mapping:

- Review changes with `git diff`
- Commit with `/ll:commit`
- Use `/ll:create-sprint` for dependency-aware sprint planning
- Run `ll-sprint show [name]` to see execution wave structure
- Use `/ll:verify-issues` to validate dependency integrity

## Best Practices

### Good Dependencies

- Based on **file overlap + semantic conflict** — issues modifying the same component/section should be sequenced
- **Priority ordering** — higher priority issues block lower priority ones
- **Modification type ordering** — structural changes block infrastructure, which blocks enhancements (at same priority)
- Dependencies represent real sequencing needs, not just related topics

### Parallel-Safe Pairs

- Issues touching the **same file but different sections** (e.g., header vs body) are identified as parallel-safe
- The conflict score threshold is 0.4 — pairs below this are not proposed as dependencies
- Review parallel-safe pairs to confirm the tool's assessment is correct for your context

### Avoid

- Creating dependencies between unrelated issues just because they have similar titles
- Circular dependencies (the tool will warn about these)
- Over-connecting — not every pair of related issues needs a dependency edge
- Overriding parallel-safe assessments without good reason — false-positive dependencies reduce sprint throughput

Files in this skill

  • SKILL.md10 KB
  • agents/openai.yaml150 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…