---
title: "Lift a workflow action node into a standalone skill"
method: POST
path: "/skills/from-node"
tags: ["Skills"]
---

# Lift a workflow action node into a standalone skill

`POST /skills/from-node`

## Request

- Base URL: `https://be.graph8.com/api/v1`
- URL: `https://be.graph8.com/api/v1/skills/from-node`
- Auth: HTTP bearer

Two-step lift (per PRD lock):
  1) Fetch the workflow + locate the named node.
  2) Resolve the referenced action_id, fetch its full config, then
     POST to the SAME ``/api/v1/actions/create`` endpoint with a
     derived name. The new action_id is returned.

This is the route ``g8_skill_create_from_node`` MCP tool calls. It
guarantees lift skills are byte-identical to authored skills.

Does NOT modify the workflow — the lift is a copy, not a move. If
the caller wants the workflow node to reference the new skill, they
update the workflow themselves with ``g8_workflow_update_node``.

## Headers

- `Authorization` string, nullable
- `X-Target-Org-Id` string, nullable

## Request body

- object: ``{workflow_id: str, node_id: str, name?: str}``. Reads the workflow's action node config and creates a new standalone skill with the same config, then returns the new skill.

## Response `201`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/graph8/apis/graph8-developer-api.md) · [All operations](https://skmtc.dev/graph8/apis/graph8-developer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/graph8/apis/graph8-developer-api/revisions/2e7cfa0ca921?raw)
