Install
$ agentstack add skill-jonreid-discoverytreeskill-discovery-tree ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Discovery Tree
STARTER_CHARACTER = 🌲
Description
Visualize tasks as a Discovery Tree, where subtasks are child nodes.
Steps
Step 1: Open File
Open discovery-tree.md.
If it doesn't exist, create it:
- Ask user "What is the project title?" and wait for input.
- Then ask user: "What is the parent task?"
- Use template in
references/template-discovery-tree.md, replacingparent-nodeandParent Taskwith parent task
Step 2: Constraint
Root parent-task node is never modified.
Step 3: Display
Tree is a Mermaid graph. Display to user as ASCII using box-drawing characters. Represent state using emoji.
Show project title in bold. Then show legend line above the tree:
Legend: 🟡 To do 🔶 In progress ✅ Completed 🔴 Blocked 🟣 Punt 🔵 Notes
Then show tree, with no emoji for parent task.
Step 4: Review
Ask user to review current tree. Any new stories to add?
Step 5: Find Next Task
Find next todo story to work on. Ask user to confirm.
Keep stories ordered left-to-right in diagram.
Step 6: Sync Names
Keep node names and user story labels in sync.
Step 7: Mark as In-Progress
Mark chosen story as in-progress. Change all parent nodes to in-progress as well, except root parent-task.
Step 8: Complete
When task is done:
- Mark it as
complete - Ask user: "Any new stories to add next to this one?"
- If not, go up one level in tree
- Loop back to Step 4
Optional Features
Side Notes
A side note is a free-floating box not connected to tree. Use it for reminders, open questions, or context that isn't a task. Only add when user requests one.
Trigger phrases (examples):
- "Add note to discovery tree"
- "Add side note to discovery tree"
To list existing side notes (read-only), trigger phrases:
- "What notes are on the tree?"
- "List the side notes"
Read each notes-classed node and report its id and label. Do not modify the file.
If trigger phrase does not include note text (e.g. user just says "add a side note" with no content), prompt user: "What should the side note say?" Do not invent content or use a placeholder. Wait for user's response before adding node.
To add a side note:
- Declare a node with a unique id, e.g.
note-1["Check API rate limits"] - Apply
notesclass:class note-1 notes - Optionally anchor it near another node with an invisible link:
parent-node ~~~ note-1(no visible edge is drawn) - Place side notes after legend block and before
classDefblock
Layout: choose by note count
- 1 note: declare it loose and anchor near a node:
parent-node ~~~ note-1. No subgraph. - 2–5 notes: wrap them in a single invisible row subgraph (see below).
- 6+ notes: use multiple row subgraphs, max 5 per row.
Do not mix loose anchored notes with row subgraphs — the competing invisible links fight Mermaid's layout. Once a second note is added, move the first into a row subgraph.
Layout: max 5 per row
Limit each row of side notes to 5; stack additional notes in new rows below.
- Group every 5 notes into an invisible subgraph with
direction LRand a blank label, e.g.subgraph note-row-1[" "] - Chain notes inside a row with invisible links:
note-1 ~~~ note-2 ~~~ note-3 ~~~ note-4 ~~~ note-5 - Chain rows top-to-bottom with invisible links:
note-row-1 ~~~ note-row-2 - Hide each row's border:
style note-row-1 fill:none,stroke:none - Always close each subgraph with
end
Example (6 notes → row of 5, then row of 1):
subgraph note-row-1[" "]
direction LR
note-1 ~~~ note-2 ~~~ note-3 ~~~ note-4 ~~~ note-5
end
subgraph note-row-2[" "]
direction LR
note-6
end
note-row-1 ~~~ note-row-2
style note-row-1 fill:none,stroke:none
style note-row-2 fill:none,stroke:none
Editing and Removing Side Notes
To edit a note, change only the label text in its node declaration (e.g. note-1["New text"]). Leave id and class line unchanged.
To remove a note:
- Delete its node declaration and its
class note-N notesline. - Splice it out of
~~~chain so remaining notes stay linked (e.g. removingnote-3fromnote-2 ~~~ note-3 ~~~ note-4leavesnote-2 ~~~ note-4). - Never renumber or reuse ids — leave gaps. Renumbering churns diff for no benefit.
- Re-balance rows so no row exceeds 5 and no row is empty: pull first note of each later row up to fill gap, then drop layout down a tier if total now fits (6+ → 2–5 → 1) per count rules above. Delete any subgraph left empty and its
style/chaining lines.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: jonreid
- Source: jonreid/DiscoveryTreeSkill
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.