Skill Dependency Graph
- Repo stars 430
- Author updated Live
- Author repo aeon
- Domain
- Other · meta · dev
- Compatible agents
-
- Claude Code
- Cursor
- Cline
- Codex
- Windsurf
- Gemini CLI
- +20
- Trust score
- 94 / 100 · audit passed
- Author / version / license
- @aaronjmars · no license declared
- Token usage
- Lean
- Setup complexity
- Guided setup
- External API key
- Required · GitHub
- Operating systems
- macOS · Linux · Windows
- Runtime requirements
- Node.js
- Permissions
-
- Read-only
- Write / modify
- Network behavior
- External requests
- Install commands
- 26 variants
Profile is derived at build time from SKILL.md and install vectors. Subject to drift from author intent.
---
name: Skill Dependency Graph
description: Generate a navigable Mermaid dependency map of all skills with change detection, per-category dr…
category: other
runtime: Node.js
---
# Skill Dependency Graph output preview
## PART A: Task fit
- Use case: Generate a navigable Mermaid dependency map of all skills with change detection, per-category drill-downs, and enabled overlay <!-- autoresearch: variation B — sharper output via change detection + per-category diagrams + enabled overlay + click-through + diff-vs-prior --> Today is ${today}. Generate a navigable, decision-ready Mermaid map of all Aeon ski….
- Inputs: target material, constraints, expected output, and acceptance criteria.
- Evidence boundary: follow “Steps / 1. Fingerprint inputs and check for change / 2. Parse all inputs (explicit + derived)” and do not present inference as author intent.
## PART B: Execution result
- **01** The card summarizes the use case; runtime output centers on “Generate a navigable Mermaid dependency map of all skills with change detection, per-category drill-downs, and enabled overlay <!-- autoresearch: variation B — sharper output via change detection + per-category diagrams + enabled overlay + click-through + diff-vs-prior --> Today is ${today}. Generate a navigable, decision-ready Mermaid map of all Aeon ski…”.
- **02** When the source has headings, the agent prioritizes “Steps / 1. Fingerprint inputs and check for change / 2. Parse all inputs (explicit + derived)” so the result follows the author’s structure.
- **03** Typical output includes task judgment, concrete steps, required commands or file edits, validation, and follow-up options.
- **04** Risk context follows the fingerprint: read files, write/modify files; may access external network resources; requires GitHub API keys.
## Running Rules
- read files, write/modify files; may access external network resources; requires GitHub API keys.
- Validate with a small sample before expanding scope.
- Return the result, validation criteria, and next iteration options. The source mentions slash commands such as `/tmp`; use them first when your agent supports command triggers.
Name target files or source material, expected output, forbidden changes, and whether network or shell access is allowed. Permission fingerprint: read files, write/modify files.
Start with a small task and check whether the result follows “Steps / 1. Fingerprint inputs and check for change / 2. Parse all inputs (explicit + derived)”. Inspect diffs, logs, previews, or tests before expanding scope.
Confirm the final output includes a concrete result, evidence, and next action. If it stays generic, tighten inputs, boundaries, and acceptance criteria.
---
name: Skill Dependency Graph
description: Generate a navigable Mermaid dependency map of all skills with change detection, per-category dr…
category: other
source: aaronjmars/aeon
---
# Skill Dependency Graph
## When to use
- Generate a navigable Mermaid dependency map of all skills with change detection, per-category drill-downs, and enabled…
- Use it when the task has clear inputs, repeatable steps, and validation criteria.
## What to provide
- Target material, scope, expected result, and forbidden changes.
- Whether network, commands, file writes, or external services are allowed.
## Execution rules
- Organize steps around “Steps / 1. Fingerprint inputs and check for change / 2. Parse all inputs (explicit + derived)” and keep inference separate from source facts.
- read files, write/modify files; may access external network resources; requires GitHub API keys.
- Validate with a small sample before expanding the task.
## Output requirements
- Return the deliverable, key evidence, validation method, and next action.
- Mark missing information as unknown; do not invent commands, platforms, or dependencies. The author source anchors workflow facts; repository files anchor sources and commands; Fluxly only adds fit, limitations, and quality judgment.
skill "Skill Dependency Graph" {
input -> user goal + target files + boundaries + acceptance criteria
context -> Steps / 1. Fingerprint inputs and check for change / 2. Parse all inputs (explicit + derived)
rules -> SKILL.md triggers / order / output contract
runtime -> Node.js | read files, write/modify files | may access external network resources
guardrails -> requires GitHub API keys + small-sample validation + diff/log review
output -> copyable result + checklist + next iteration
} ${var} — Output path override. If empty, writes to
docs/skill-graph.md.
Today is ${today}. Generate a navigable, decision-ready Mermaid map of all Aeon skills. Skip notify and PR when nothing changed.
Steps
1. Fingerprint inputs and check for change
Build an input fingerprint:
{
sha1sum aeon.yml skills.json
for f in skills/*/SKILL.md; do
awk '/^---$/{n++;next} n==1{print FILENAME": "$0}' "$f" # frontmatter only
grep -hE '^depends_on:|^- skill:|consume:|parallel:|trigger:' "$f" || true
grep -hoE 'memory/(topics|state)/[a-zA-Z0-9_.-]+' "$f" | sort -u
done | sha1sum
} > /tmp/skill-graph.fingerprint
Compare against memory/topics/skill-graph-state.json (key input_fingerprint). If identical:
- Append
## skill-graphblock tomemory/logs/${today}.md:SKILL_GRAPH_NO_CHANGE — N skills, identical fingerprint - Exit silently. No notify. No PR. No file rewrite.
If state file is missing → mode = SKILL_GRAPH_NEW. Otherwise → mode = SKILL_GRAPH_OK.
2. Parse all inputs (explicit + derived)
Explicit edges:
aeon.yml→ per-skillenabled,schedule,var,model;chains:blocks (steps:,consume:,parallel:);reactive:blocks (trigger:,on:,when:)- Each
skills/*/SKILL.md→ frontmattername,tags,depends_on:array
Derived edges (this is the leverage):
- For each skill, grep
memory/topics/*.mdandmemory/state/*.jsonreferences. Classify as write if surrounding 3 lines match(write|save|append|>|update)\b.*(topics|state)/, else read. Awrite→topicfrom skill A and aread→same topicfrom skill B yields a shared-state edgeA -..-> B. - Skills tagged
researchwriting toarticles/*.md(or havingarticles/in their output description) → automatic content-pipeline edges tosyndicate-article,rss-feed,update-gallery. - Every skill writes
memory/cron-state.json— collapse this into a single legend note rather than 90 edges toheartbeat/skill-health/skill-repair.
3. Categorize via skills.json
Use skills.json as the canonical category map (research, dev, crypto, social, productivity). For skills not in skills.json, fall back to the first matching tag.
4. Lint before write
Before writing any Mermaid, validate:
- Every
[label]declaration has matching brackets - Every edge
A --> Breferences nodes declared in some subgraph - Every
click X "..."directive references a declared node and a path that exists on disk - Every subgraph block opens with
subgraphand closes withend
If any lint check fails → mode = SKILL_GRAPH_ERROR, abort write, notify with the failing rule, exit.
5. Generate the multi-diagram document
Write to docs/skill-graph.md (or ${var}). Structure:
- Header — title,
Auto-generated by skill-graph on ${today}, current mode - Verdict line — one of:
ARCHITECTURE_OK(no structural change) /NEW_SKILLS: a, b/RETIRED_SKILLS: c/NEW_DEPS: A→B, .../NEW_ENABLED: x - What changed since last run — diff against prior
docs/skill-graph.md: added/removed nodes, added/removed edges, enabled-state flips. Skip section onSKILL_GRAPH_NEW. - Overview diagram —
flowchart LRwith 5 category subgraph boxes (no inner nodes) + cross-category edges + edge counts as labels - Self-healing loop callout — small dedicated
flowchart LRshowingheartbeat → skill-health → skill-evals → skill-repair → self-improvewith the sharedcron-state.jsonas a labeled state node - Per-category mini-diagrams — one
flowchart LRper category. Inside: all nodes for that category, intra-category edges as solid/dashed/dotted, cross-category dependencies shown as faded:::externalghost nodes pointing into a side cluster - Click-through directives — every node in every diagram gets
click slug "../skills/slug/SKILL.md"(Mermaid renders as hyperlinks on github.com) - Enabled overlay — Mermaid classes:
class slug enabled(bold border, schedule annotation in label) for skills withenabled: true;class slug disabled(faded grey) for the rest. Class definitions:classDef enabled fill:#fff,stroke:#000,stroke-width:2px,color:#000 classDef disabled fill:#f5f5f5,stroke:#bbb,color:#888 classDef external fill:none,stroke:#bbb,stroke-dasharray:3 3,color:#888 - Legend — edge types (
-->depends_on,-.->consume,-..->reactive/shared-state); enabled vs disabled visual; click-to-source note - Summary table — total skills, by category, by status (enabled/disabled), edges by type
- Source-status footer —
skills parsed: N · depends_on: X · consume: Y · reactive: Z · shared-state derived: W · enabled: E/N · mode: SKILL_GRAPH_{OK,NEW,NO_CHANGE,ERROR}
6. Update README idempotently
if ! grep -q 'docs/skill-graph.md' README.md; then
# insert under "Skills" header if present, else append
...
fi
Never re-insert. Never reformat existing lines.
7. Persist state
Write memory/topics/skill-graph-state.json:
{
"generated_at": "${today}",
"input_fingerprint": "<sha1>",
"skills_total": 96,
"enabled_count": 1,
"edges": { "depends_on": 4, "consume": 4, "reactive": 1, "shared_state": 12 },
"node_list_sha": "<sha1 of sorted slugs>",
"edge_list_sha": "<sha1 of sorted edge tuples>"
}
Used next run for change detection (step 1).
8. Branch, commit, PR
git checkout -b skill-graph/${today} 2>/dev/null || git checkout skill-graph/${today}
git add docs/skill-graph.md memory/topics/skill-graph-state.json README.md
git commit -m "docs(skill-graph): regenerate map (${verdict_one_line})"
git push -u origin skill-graph/${today}
gh pr create --title "docs(skill-graph): ${verdict_one_line}" --body "..."
PR body includes: verdict line, what-changed diff, summary table, source-status footer.
9. Notify (gated)
SKILL_GRAPH_NO_CHANGE→ no notify (already exited at step 1)SKILL_GRAPH_NEW→ notify:*Skill Graph initialized* — ${N} skills mapped across 5 categories. PR: ${url}SKILL_GRAPH_OK→ notify only if verdict is notARCHITECTURE_OK:*Skill Graph updated* — ${verdict_one_line}. PR: ${url}SKILL_GRAPH_ERROR→ notify:*Skill Graph FAILED* — lint: ${rule}. No PR opened.
10. Log
Append to memory/logs/${today}.md:
### skill-graph
- Mode: SKILL_GRAPH_{OK|NEW|NO_CHANGE|ERROR}
- Verdict: ${verdict_one_line}
- Skills: ${N} (enabled: ${E})
- Edges: depends_on=${X}, consume=${Y}, reactive=${Z}, shared_state=${W}
- PR: ${url or "—"}
- Source-status: ${footer}
Sandbox note
No external APIs needed — all inputs come from local files. Standard git + gh CLI for branch/PR creation (already authenticated via GITHUB_TOKEN).
Constraints
- State file:
memory/topics/skill-graph-state.json— auto-created on first run; safe to delete to force a full regeneration (next run will fall through toSKILL_GRAPH_NEW). - Never silently regress an already-good output. If lint fails, abort with
SKILL_GRAPH_ERRORrather than commit a broken diagram. SKILL_GRAPH_NO_CHANGEis the most common path on a stable architecture and must be silent — no PR, no notify, just a log line. Operator trains to trust the silence.- Click-through paths must be relative from the output file's directory (e.g.
../skills/X/SKILL.mdfromdocs/skill-graph.md) so they resolve on github.com. - Enabled state comes from
aeon.ymlonly — never infer from cron-state or recent runs (a skill can be enabled but not yet run). - Do not expand
every skill writes cron-state.jsoninto N edges — collapse into one legend note. The graph is a map, not an audit log.
Decide Fit First
Design Intent
How To Use It
Boundaries And Review