Claude-skill-registry hierarchy-tree

Construct ASCII tree visualizations from parent/child work item data. Use when the user asks to "show hierarchy", "show tree", "display parent child", "visualize structure", "show feature tree", or wants to see work item relationships as a tree diagram. This skill teaches how to build trees from flat data WITHOUT code - use LLM reasoning only.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/hierarchy-tree" ~/.claude/skills/majiayu000-claude-skill-registry-hierarchy-tree && rm -rf "$T"
manifest: skills/data/hierarchy-tree/SKILL.md
source content

Building ASCII Trees from Parent/Child Data

When you have flat parent/child data, construct the tree visually using LLM reasoning - NO CODE NEEDED.

Step 1: Get the Data

Query work items with their parent:

az boards query --wiql "SELECT [System.Id], [System.Title] FROM workitems WHERE [System.WorkItemType] = 'Feature' AND [System.TeamProject] = 'ProjectName'" -o json

Then for each item, get its parent via relations (System.LinkTypes.Hierarchy-Reverse).

The result is flat data like:

ID     Parent   Title
1517   1509     Feature A
1518   1509     Feature B
1759   1827     Feature C
1827   1509     Feature D

Step 2: Build the Tree (LLM Reasoning)

  1. Find roots - Items whose Parent is not in the ID list (or is an Epic/external)
  2. Group children - For each ID, collect all items where Parent = that ID
  3. Recurse - Build subtrees for each child

From the example above:

  • Root: 1509 (not in ID list as a child)
  • 1509's children: 1517, 1518, 1827
  • 1827's children: 1759

Step 3: Render ASCII

Use these characters:

|   = vertical continuation (more siblings below)
|-- = branch to sibling (more siblings follow)
`-- = last branch (no more siblings)
    = indent (4 spaces under a last branch)

Rules:

  • Each level indents 4 characters
  • Use
    |-- 
    for all children except the last
  • Use
    `--
    for the last child
  • Continue
    |   
    vertically when parent has more siblings

Example Transformation

Input data:

ID    Parent  Name
100   -       Root
200   100     Child A
300   100     Child B
400   300     Grandchild B1
500   300     Grandchild B2
600   100     Child C

Output tree:

#100 Root
|-- #200 Child A
|-- #300 Child B
|   |-- #400 Grandchild B1
|   `-- #500 Grandchild B2
`-- #600 Child C

Complex Example

Input:

ID    Parent  Name
1     -       Epic
10    1       Feature A
11    1       Feature B
20    10      Sub A1
21    10      Sub A2
30    11      Sub B1
31    30      Deep B1a
32    30      Deep B1b

Output:

#1 Epic
|-- #10 Feature A
|   |-- #20 Sub A1
|   `-- #21 Sub A2
`-- #11 Feature B
    `-- #30 Sub B1
        |-- #31 Deep B1a
        `-- #32 Deep B1b

Key Points

  1. Don't use code - The LLM can construct this from data using reasoning
  2. Process top-down - Start from roots, recurse into children
  3. Track "is last" - Determines
    |--
    vs
    `--
  4. Track depth - Determines indentation and vertical bars
  5. Keep it clean - Omit IDs if user prefers names only

When to Use

  • User asks for "tree view" or "hierarchy"
  • User wants to see parent/child relationships
  • Visualizing feature breakdown structures
  • Showing Epic → Feature → PBI → Task relationships