skills/beam/beam-tools/beam-graph-edit/SKILL.md
Edit Beam agent graph nodes — update prompts, input/output param descriptions, and push changes via PUT. Load when user says 'edit beam graph', 'update beam node', 'change beam prompt', 'push graph changes', 'modify agent graph', 'update param description', or needs to modify a live Beam agent's graph configuration. Uses the proven GET-clean-modify-PUT cycle that bypasses the unreliable PATCH endpoint.
npx skillsauth add beam-ai-team/beam-next-skills beam-graph-editInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Edit Beam agent graph nodes and push changes reliably via the PUT full-graph approach.
Modify prompts, input/output parameter descriptions, and node configurations on live Beam agents. Uses the safe GET-clean-modify-PUT cycle.
Before pushing graph changes, show the workspace, agent ID/name, node IDs or toolFunctionNames, exact fields being changed, payload file path, dry-run or diff summary when available, and expected side effects including whether publishing is requested. Require explicit user approval in the current turn. Read-only graph fetches, summaries, and local payload preparation do not require approval.
.env has BEAM_API_KEY and BEAM_WORKSPACE_ID)/usr/local/bin/python3.13 skills/beam/beam/beam-master/scripts/check_beam_config.py --json
If not configured, follow beam-master setup.
If user provides name but not ID:
/usr/local/bin/python3.13 skills/beam/beam/beam-master/scripts/list_agents.py --json
Match by name, confirm with user, note the agent ID.
/usr/local/bin/python3.13 skills/beam/beam/beam-master/scripts/get_agent_graph.py --agent-id AGENT_ID --json
Parse the response. Show user a summary:
Graph for: [Agent Name]
Nodes: [count]
# | Objective | toolFunctionName
----|------------------------------|---------------------------
1 | Identify department | GPTAction_Custom_Dept_Xxx
2 | Process email input | GPTAction_Custom_Proc_Yyy
3 | Send escalation email | MicrosoftOutlookCC_Zzz
Use beam_graph_utils.summarize_graph() for this.
Ask user:
Before making changes, read:
skills/beam/beam/beam-master/references/graph-push-gotchas.md
Write a Python snippet using beam_graph_utils:
import sys, json
sys.path.insert(0, 'skills/beam/beam/beam-master/scripts')
from beam_client import get_client
from beam_graph_utils import (
prepare_graph_for_put,
find_node_by_tool_function,
update_node_prompt,
update_param_description,
)
AGENT_ID = "..."
client = get_client()
# GET and clean
response = client.get(f'/agent-graphs/{AGENT_ID}')
payload = prepare_graph_for_put(response)
nodes = payload['nodes']
# Find target node (ALWAYS by toolFunctionName, never by ID)
node = find_node_by_tool_function(nodes, 'TOOL_FUNCTION_NAME')
# Apply change (one of):
update_node_prompt(node, NEW_PROMPT_TEXT)
update_param_description(node, 'output', 'param_name', NEW_DESC)
update_param_description(node, 'input', 'param_name', NEW_DESC)
# Save payload
with open('/tmp/beam_graph_payload.json', 'w') as f:
json.dump(payload, f, indent=2)
Show the diff to user before pushing (old vs new values).
Dry-run first:
/usr/local/bin/python3.13 03-skills/beam-graph-edit/scripts/push_graph.py \
--agent-id AGENT_ID --payload-file /tmp/beam_graph_payload.json --dry-run
Then push:
/usr/local/bin/python3.13 03-skills/beam-graph-edit/scripts/push_graph.py \
--agent-id AGENT_ID --payload-file /tmp/beam_graph_payload.json
Add --save-and-publish to publish immediately.
The push script auto-verifies node count. For detailed verification, GET the graph again and check specific fields by matching on toolFunctionName.
If saved as draft: "Changes saved as draft. Open Beam UI to re-link any LINKED inputs if needed."
update_node_prompt(node, """Your new prompt here...""")
update_param_description(node, 'output', 'identification_result', """{
"field": "new schema description"
}""")
update_param_description(node, 'input', 'email_address', """New description...""")
edits = {
'GPTAction_Custom_Tool1': {'prompt': 'new prompt...'},
'GPTAction_Custom_Tool2': {'params': [
{'type': 'output', 'name': 'result', 'description': 'new desc'}
]},
}
for fn_name, changes in edits.items():
node = find_node_by_tool_function(nodes, fn_name)
if changes.get('prompt'):
update_node_prompt(node, changes['prompt'])
for pc in changes.get('params', []):
update_param_description(node, pc['type'], pc['name'], pc['description'])
push_graph.py — CLI for pushing cleaned graph payloads
python push_graph.py --agent-id ID --payload-file FILE [--dry-run] [--clean] [--save-and-publish] [--json]
| Error | Cause | Solution |
|-------|-------|---------|
| PATCH "Cannot read properties of undefined" | Unreliable PATCH endpoint | Use this skill's PUT workflow |
| PUT 400 validation errors | Unstripped server fields | Use prepare_graph_for_put() |
| Prompt not updating | GET/PUT path asymmetry | Use update_node_prompt() |
| Node ID not found after push | IDs regenerate on PUT | Match by toolFunctionName |
| Output param validation error | Missing isArray | clean_output_param() auto-adds it |
tools
Build a Palantir-shape, PDF-native use-case proposal document for a sophisticated enterprise account: research-grounded use cases (each with description, challenge, impact, value), an operating-graph ontology page, a recommended PoC with a week-by-week plan, and a closing page that asks for one decision. Load when a client asks us to 'propose high-impact use cases', requests a use-case presentation/catalog for a function (finance, HR, ops), or when a technical evaluation team will review candidates to pick a PoC. NOT for single-account cold outreach (use prospect-brief), full process diagnostics (use operating-diagnostic), or priced proposals (use proposal-creation).
development
Convert Beam Figma slide designs into high-fidelity, editable HTML presentation decks. Use when Codex is asked to audit Figma slides, extract slide templates, rebuild Beam slides as HTML decks, decide whether Figma imagery should be exported or rebuilt in HTML/CSS, create Beam/Prism-compatible deck templates, or improve fidelity of existing Beam HTML slide rebuilds.
development
Use the Beam AI reusable slide library: individual HTML slide templates extracted from Beam Figma rebuilds, kept separate from deck themes and full deck templates. Load when the user asks for a slide library, specific Beam slide patterns, reusable Figma-inspired slides, Prism slide-library items, or slide-level HTML templates.
development
Use Beam AI deck and report design packs, HTML templates, and curated examples to create sales decks, customer intro decks, RPO decks, and DIN A4 use-case proposal reports. Load when the user asks for Beam-branded presentation templates, Prism-compatible deck templates, Beam report templates, customer intro decks, commercial proposals, or reusable HTML deck/report examples.