dependency-manager
Visualizes, creates, and diagnoses dependencies between MCP work items. Use when a user says: what blocks this, add a dependency, show dependency graph, why can't this start, link these items, unblock this, remove dependency, or show blockers.
What this skill does
# dependency-manager — Dependency Visualization, Creation, and Diagnosis
Manage BLOCKS, IS_BLOCKED_BY, and RELATES_TO edges between work items. Handles all four paths: view existing dependencies, create new edges, delete edges, and diagnose why items cannot start.
---
## Step 1: Determine Intent
Classify the user request before making any tool calls.
**If `$ARGUMENTS` looks like a UUID** (8-4-4-4-12 hex pattern), default intent to VIEW for that item.
**If `$ARGUMENTS` is a text string** (title fragment or action phrase), search for matching items:
```
query_items(operation="search", query="$ARGUMENTS", limit=5)
```
If multiple results are returned, present them and ask which item the user means.
**If `$ARGUMENTS` is empty**, infer intent from the surrounding conversation. If intent is still unclear, ask via `AskUserQuestion`: "What would you like to do with dependencies? Options: view, create, delete, diagnose."
**Compound requests** (e.g., "show what blocks this and remove the dependency"): handle the VIEW path first, then proceed to the second action using the results.
**Intent signal words:**
| Signal words | Path |
|---|---|
| "show", "view", "graph", "what blocks", "what depends on", "visualize" | VIEW (Step 2) |
| "add", "create", "link", "connect", "chain", "depend on" | CREATE (Step 3) |
| "remove", "delete", "unlink", "disconnect" | DELETE (Step 4) |
| "why can't this start", "why is this blocked", "diagnose", "show blockers", "unblock" | DIAGNOSE (Step 5) |
---
## Step 2: View Dependencies
Once you have an item ID and intent is VIEW, query its dependency edges:
```
query_dependencies(itemId="<uuid>", direction="all", includeItemInfo=true)
```
Format the result as an ASCII tree:
```
◉ Design API schema (work)
↳ BLOCKS → ○ Implement data models (queue)
↳ BLOCKS → ○ Build REST endpoints (queue)
← BLOCKED BY → ◉ Finalize data contract (work)
```
Use the visual symbols to indicate role at a glance:
| Symbol | Role |
|---|---|
| ✓ | terminal |
| ◉ | work or review |
| ○ | queue |
| ⊘ | blocked |
**Direction parameter meanings:**
| Value | Returns |
|---|---|
| `outgoing` | Edges where this item is the source (things this item blocks) |
| `incoming` | Edges where this item is the target (things that block this item) |
| `all` | Both directions combined |
For a full chain view (ancestors and descendants beyond immediate neighbors), add `neighborsOnly=false`:
```
query_dependencies(itemId="<uuid>", direction="all", includeItemInfo=true, neighborsOnly=false)
```
This performs BFS traversal and returns the full dependency graph. Use it when the user asks to "show the full chain" or "trace all blockers."
After displaying the tree, note any items in `⊘ blocked` state and offer to run DIAGNOSE (Step 5) on them.
---
## Step 3: Create Dependencies
Identify the structure from what the user described, then select the right creation pattern.
**Decision tree:**
```
Two specific items to link → single edge (dependencies array)
Three or more items in a sequence (A then B then C) → linear pattern
One item that blocks many others → fan-out pattern
Many items that all block one item → fan-in pattern
```
**Pattern reference:**
| Pattern | Key parameter | When to use |
|---|---|---|
| Single edge | `dependencies=[{fromItemId, toItemId}]` | Link exactly two items |
| `linear` | `itemIds=[A, B, C, D]` | Sequential chain: A→B→C→D |
| `fan-out` | `source=A`, `targets=[B, C, D]` | One item blocks many |
| `fan-in` | `sources=[A, B, C]`, `target=D` | Many items block one |
Confirm the derived edges with the user before creating. Show them what you're about to create in a readable way, for example:
```
About to create: A → B → C → D as a linear chain. Proceed?
```
Adjust the format to fit the actual pattern (single edge, fan-out, fan-in, etc.).
Then call `manage_dependencies(operation="create")` with the selected pattern:
```
manage_dependencies(
operation="create",
pattern="linear",
itemIds=["<uuid-a>", "<uuid-b>", "<uuid-c>", "<uuid-d>"]
)
```
For a single edge or custom edges, use the `dependencies` array directly:
```
manage_dependencies(
operation="create",
dependencies=[
{ fromItemId: "<uuid-a>", toItemId: "<uuid-b>", type: "BLOCKS" }
]
)
```
After creation, show the edges created:
```
✓ Created 3 dependency edges:
A → BLOCKS → B
B → BLOCKS → C
C → BLOCKS → D
```
To set a partial unblock threshold (so the blocked item unblocks before the blocker is terminal), include `unblockAt` in the dependency spec. See the `unblockAt` reference table below.
---
## Step 4: Delete Dependencies
Query existing edges first so the user knows what can be deleted:
```
query_dependencies(itemId="<uuid>", direction="all", includeItemInfo=true)
```
Present the edges to the user:
```
Existing edges for "Implement data models":
[1] ◉ Design API schema → BLOCKS → this item (dep-uuid-1)
[2] this item → BLOCKS → ○ Build REST endpoints (dep-uuid-2)
Which edge(s) would you like to remove?
```
Confirm before deleting. Then call `manage_dependencies(operation="delete")` using the appropriate mode:
```
manage_dependencies(operation="delete", id="<dep-uuid>")
```
**Delete parameter modes:**
| Mode | Parameters | When to use |
|---|---|---|
| By dependency ID | `id="<dep-uuid>"` | Delete one specific edge (most precise) |
| By relationship | `fromItemId="<uuid>", toItemId="<uuid>"` | Delete the edge between two known items |
| By relationship + type | `fromItemId, toItemId, type="BLOCKS"` | When multiple edge types exist between same pair |
| All edges for item | `fromItemId="<uuid>", deleteAll=true` | Remove all outgoing edges from an item |
| All edges for item | `toItemId="<uuid>", deleteAll=true` | Remove all incoming edges to an item |
After deletion, confirm:
```
✓ Removed: Design API schema → BLOCKS → Implement data models
```
---
## Step 5: Diagnose Blocked Items
For DIAGNOSE intent, identify why a specific item cannot start or is stuck in blocked state.
**Path A — User provided an item ID:**
```
query_dependencies(itemId="<uuid>", direction="incoming", includeItemInfo=true)
```
**Path B — User wants a broad view of all blocked work:**
```
get_blocked_items(includeItemDetails=true)
```
For each blocker returned, show:
```
⊘ "Build REST endpoints" cannot start because:
Blocker 1: ◉ Design API schema (work)
Must reach: terminal (unblockAt: terminal)
Action: advance Design API schema to terminal first
Blocker 2: ○ Write OpenAPI spec (queue)
Must reach: terminal (unblockAt: terminal)
Action: start and complete Write OpenAPI spec first
```
For each blocker, determine what must happen:
| Blocker's current role | unblockAt threshold | What needs to happen |
|---|---|---|
| queue | terminal | Start and complete the blocker |
| work | terminal | Complete the blocker (already started) |
| work | review | Advance the blocker to review |
| review | terminal | Advance the blocker to terminal |
| blocked | any | The blocker itself is stuck — recurse diagnosis |
If any blocker is itself blocked, offer to recurse: "The blocker is also blocked. Would you like to diagnose that item too?"
After the diagnosis, link to the resolution path:
- To advance the blocking item: use `/status-progression` with its UUID
- To fill missing notes on the blocker first: use `manage_notes(operation="upsert")` to fill required notes
---
## Dependency Type Reference
| Type | Meaning | Effect |
|---|---|---|
| `BLOCKS` | A must complete before B can proceed | B appears as blocked until A reaches its unblockAt threshold |
| `IS_BLOCKED_BY` | Reverse of BLOCKS — same edge, opposite direction | Equivalent to creating BLOCKS from B to A |
| `RELATES_TO` | Informational link only — no blocking behavior | Item appears in dependency queries but does not affect role transitions |
---
## `unblockAt` Threshold Reference
| Value | When the dependent item unblocks | Use case |
|---|---|---|
| `terminal` (default) |Related in AI Agents
skill-development
IncludedComprehensive meta-skill for creating, managing, validating, auditing, and distributing Claude Code skills and slash commands (unified in v2.1.3+). Provides skill templates, creation workflows, validation patterns, audit checklists, naming conventions, YAML frontmatter guidance, progressive disclosure examples, and best practices lookup. Use when creating new skills, validating existing skills, auditing skill quality, understanding skill architecture, needing skill templates, learning about YAML frontmatter requirements, progressive disclosure patterns, tool restrictions (allowed-tools), skill composition, skill naming conventions, troubleshooting skill activation issues, creating custom slash commands, configuring command frontmatter, using command arguments ($ARGUMENTS, $1, $2), bash execution in commands, file references in commands, command namespacing, plugin commands, MCP slash commands, Skill tool configuration, or deciding between skills vs slash commands. Delegates to docs-management skill for official documentation.
reprompter
IncludedTransform messy prompts into well-structured, effective prompts — single or multi-agent. Use when: "reprompt", "reprompt this", "clean up this prompt", "structure my prompt", rough text needing XML tags and best practices, "reprompter teams", "repromptception", "run with quality", "smart run", "smart agents", multi-agent tasks, audits, parallel work, anything going to agent teams. Don't use when: simple Q&A, pure chat, immediate execution-only tasks. See "Don't Use When" section for details. Outputs: Structured XML/Markdown prompt, quality score (before/after), optional team brief + per-agent sub-prompts, agent team output files. Success criteria: Single mode quality score ≥ 7/10; Repromptception per-agent prompt quality score 8+/10; all required sections present, actionable and specific.
adaptive-compaction
IncludedAdaptive add-on policy and recovery layer that decides WHEN to compact, prune, snapshot, or fork -- replacing fixed-percent auto-compaction across Claude Code, Codex, and MCP-capable hosts. Trigger on auto-compact timing or damage: "when should I compact", "is it safe to compact now or start a fresh session", "auto-compact fires too early/mid-task", "switching to an unrelated task but the window still has space", "context rot", "answers get worse the longer the session runs", "the agent forgot the plan or my decisions after it summarized", "add a layer on top that manages context without changing the agent", raising autoCompactWindow to give the policy room, or installing/tuning a cross-tool compaction policy or PreCompact hook -- even when "compaction" is never said but the problem is context-window pressure or post-summarization memory loss. Do NOT use to summarize a conversation, build RAG, write a summarization prompt (decides WHEN not HOW), or answer max-context-length trivia.
agent-skill-creator
IncludedCreate cross-platform agent skills from workflow descriptions. Activates when users ask to create an agent, automate a repetitive workflow, create a custom skill, or need advanced agent creation. Triggers on phrases like create agent for, automate workflow, create skill for, every day I have to, daily I need to, turn process into agent, need to automate, create a cross-platform skill, validate this skill, export this skill, migrate this skill. Supports single skills, multi-agent suites, transcript processing, template-based creation, interactive configuration, cross-platform export, and spec validation.
llm-wiki
IncludedUse when building or maintaining a persistent personal knowledge base (second brain) in Obsidian where an LLM incrementally ingests sources, updates entity/concept pages, maintains cross-references, and keeps a synthesis current. Triggers include "second brain", "Obsidian wiki", "personal knowledge management", "ingest this paper/article/book", "build a research wiki", "compound knowledge", "Memex", or whenever the user wants knowledge to accumulate across sessions instead of being re-derived by RAG on every query.
skill-master
IncludedAgent Skills authoring, evaluation, and optimization. Create, edit, validate, benchmark, and improve skills following the agentskills.io specification. Use when designing SKILL.md files, structuring skill folders (references, scripts, assets), ingesting external documentation into skills, running trigger evals, benchmarking skill quality, optimizing descriptions, or performing blind A/B comparisons. Keywords: agentskills.io, SKILL.md, skill authoring, eval, benchmark, trigger optimization.