Persist the most recent /graph run's workflow script to
Scanned 9/3/2026
Install to Claude Code
npx -y skills add ayaangazali/graph-engineering --skill graph-save --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Graph Save?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ayaangazali-graph-save)More formats (shields.io, HTML) on the badges page.
---
name: graph-save
description: Persist the most recent /graph run's workflow script to
.claude/workflows/<name>.js so it becomes a reusable /command in this project.
argument-hint: "[name]"
disable-model-invocation: true
---
# Graph-save: keep a graph as a replayable command
Persist the most recently run graph so it can be replayed as `/<name>` — same DAG,
new inputs via `args`.
## Procedure
1. **Locate the script.** Every Workflow invocation persists its script and returns
the path in the tool result (under the session directory). Use the most recent
run from this conversation.
- No graph has run this session → say so and suggest `/graph <goal>` first; do
not reconstruct a script from memory.
- The last run used the **fallback engine** (no Workflow script exists) → offer
to author a fresh script from the recorded DAG and schemas, clearly labeled
as untested, or decline — never present a reconstruction as the tested run.
2. **Name it.** Use `$ARGUMENTS` kebab-cased; if empty, propose a name derived from
the graph's goal and ask. Validate the result is legal kebab-case (it becomes
`meta.name` and the `/command`).
3. **Check for collisions** before writing: an existing file at
`.claude/workflows/<name>.js`, or a known command/skill with the same name.
On collision, require explicit confirmation to overwrite, else suggest a
suffixed name.
4. **Read the script file**, then adjust for reuse:
- `meta.name` → the chosen name; `meta.description` → one generic line;
populate `meta.whenToUse`.
- Generalize the input: the goal/targets come from `args`
(`const GOAL = (typeof args === "string" && args.trim()) || ""` with a
helpful error return) — hard-coded file lists or findings from the original
run must not survive into the template.
- Add a comment header with 2–3 realistic example invocations derived from the
just-completed run: `// examples: /<name> "audit src/api", /<name> "src/auth"`.
5. **Write** to `<project-root>/.claude/workflows/<name>.js` (create the directory
if needed).
6. **Confirm and offer a smoke test:**
- Available as `/<name> <input>` from the next session (or immediately via
`Workflow({name: '<name>', args})`).
- Offer to replay it now with the smallest example to confirm the generalized
`args` plumbing works before anyone trusts it as a team command.
- Project workflows are shared with everyone who clones the repo; for
cross-project personal use, offer to copy to `~/.claude/workflows/<name>.js`.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!