Corezoid Edit logo

Corezoid Edit

Organization
corezoid
corezoid-edit

Corezoid process editing specialist. Use when the user wants to modify, update, or fix an existing Corezoid process, add or remove nodes, change node behavior, add an API call, fix an error, or update process logic. Activate when the user says "edit a process", "modify", "update", "fix", "add a node", "change behavior", "add a call", "remove a node", or "update the logic".

Overview

Publishercorezoid
Repositorycorezoid-ai-plugin
Skill namecorezoid-edit
Stars
74
Forks
26
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by corezoid on GitHub. Read the source before you install it.

Installation

Install the Corezoid Edit AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/corezoid/corezoid-ai-plugin/tree/main/plugins/corezoid/skills/corezoid-edit
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/corezoid/corezoid-ai-plugin.git /tmp/corezoid-ai-plugin
mkdir -p .claude/skills
cp -r /tmp/corezoid-ai-plugin/plugins/corezoid/skills/corezoid-edit .claude/skills/corezoid-edit
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Corezoid Edit in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Corezoid Edit on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Corezoid Edit is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Edit an Existing Corezoid Process

You are a specialist in modifying Corezoid processes using the corezoid MCP server.

Identify the Process (MANDATORY FIRST STEP)

Before doing anything else, resolve PROCESS_PATH:

  1. Check whether the user already provided a process identifier — a file path, process name, or process ID — in the current message or conversation history.

  2. If no identifier is provided, ask:

    "Please specify the process — you can provide a file path (e.g. 123_payment.conv.json), a process name, or a process ID."

    Do not call any MCP tools until the user provides an identifier.

  3. If the user gave a name or ID (not a file path), search the local working directory for the matching .conv.json file using the find or grep Bash tools (the project is already pulled locally).

  4. Once PROCESS_PATH is known and the file exists locally, open and analyze it before making any changes.


Step 1: Analyze the Process

Open and analyze PROCESS_PATH to understand the current structure and logic. Pay attention to:

  • Processes related to the requested changes
  • IDs of processes that may be called from the target process
  • Existing naming conventions and patterns

Step 2: Implement the Changes

Apply changes to PROCESS_PATH.

Core rules

  • Connect nodes only through the go field
  • Every node that can fail must have err_node_id — point it directly at a Final Error node (obj_type: 2) unless the error path needs logic (reply to caller, retry routing). Never create an Escalation node (obj_type: 3) that only contains a bare go — that is a passthrough anti-pattern flagged by lint-process
  • Node IDs must be unique 24-character hex strings: ^[0-9a-f]{24}$. Always pull-process before editing and reference only canonical, server-assigned IDs — IDs you invented in a previous push were reassigned by the server and no longer exist. New nodes added now get placeholder IDs that the server will likewise reassign on push. Existing nodes' IDs are preserved. See Node ID Lifecycle.
  • Use descriptive node title values (e.g., "Call Payment Process", not "RPC")
  • Leave new nodes at placeholder coordinates x: 0, y: 0 — push-process auto-places them near their graph neighbours (preserve mode: existing nodes keep their positions; inserting a node above an existing one slides that node's downstream subtree down to open a gap; error nodes land to the right of their parent). Keep the x/y of nodes you are NOT moving — do not rebuild the scheme without them. As a safety net, if the file reaches push with every node's coordinates missing, push re-hydrates them from the server (reports Restored N node coordinate(s)) so a laid-out process is never re-arranged by accident. Only when auto-placement is disabled (COREZOID_AUTOLAYOUT=off) position nodes manually — error nodes to the right of their parent (x + 300). Do NOT re-layout the whole process unless the user asks — see the corezoid-node-layout skill's authorship policy

Variables for constants

All constants (URLs, tokens, endpoints, hosts) must be stored as variables — never hardcoded:

  1. Check _ENV_VARS_.json (from pull-folder) or .processes/variables.json (from this session) for existing variables
  2. Create a new variable if needed: call cz-variables with action: "create-variable" and args name, description, value
  3. Reference in logic using {{env_var[@variable-name]}}

See ${CLAUDE_PLUGIN_ROOT}/docs/variables-guide.md for details.

Node type quick reference

Nodeobj_typeLogic type
Start1go
Code Node0api_code
Call a Process0 (4 only for active Stub Mode)api_rpc
API Call0api
Reply to Process0 (3 as err_node_id target)api_rpc_reply
End / Error2(no logics)

For complete JSON structures see ${CLAUDE_PLUGIN_ROOT}/docs/node-structures.md.

Common pitfalls

  • Regenerating the whole scheme instead of editing it in place — make targeted edits to the pulled file (change the one node/logic you need). Do NOT rewrite every node from scratch: that drops the existing x/y (the x:0,y:0 authoring habit is for brand-new nodes only), and a scheme where every node is at 0,0 forces push-process to re-lay-out the entire process, discarding its arrangement. push re-hydrates coordinates from the server as a safety net, but editing surgically is the right habit.
  • Using "type": "call_process" instead of "type": "api_rpc" — will fail validation
  • Missing extra/extra_type in Call a Process node — both required even if empty ({})
  • Treat active Stub Mode (obj_type: 4 + condition.stub) as a temporary mock only: it bypasses the called process and can fake success. Preserve condition.stub during round trips, but do not leave obj_type: 4 enabled on production paths unless the user explicitly confirms allow_active_stub_mode=true.
  • Raw JSON objects as values in extra — must be stringified: "{\"key\":\"val\"}"
  • Keys in extra and extra_type must match exactly

Step 3: Update the Description

Before deploying, update the root-level description field in PROCESS_PATH to reflect the process's current behaviour after your edits.

Guard — preserve existing descriptions when appropriate: if the process already has a non-empty description and your edits did not change the overall purpose (e.g. you fixed a bug, adjusted a timeout, or rewired an error path without altering what the process fundamentally does), preserve the existing description rather than replacing it.

Follow the Description Update Rule from the corezoid skill:

  • 1–2 sentences, starting with a verb (Calls, Creates, Validates, Routes, Aggregates)
  • Sentence 1: what the process does — verb + action + subject
  • Sentence 2 (optional): key inputs/outputs or notable behaviour
  • Under 200 characters, no "This process…" preamble

Write the updated description directly into the JSON file. This costs nothing extra — the description rides the same push-process call.

If the parent folder was structurally affected (process added, removed, or renamed), also call cz-structure with action: "modify-folder" and a one-sentence description in args.


Step 4: Deploy the Changes

MANDATORY: Always run this step whenever any changes were made to the process file — even if there are open questions or the work is not fully complete. Without deploying, all changes are lost.

Deploy the modified process by calling MCP tool push-process with process_path: "<PROCESS_PATH>".

If deployment fails, fix the reported errors and re-run push-process until it succeeds. Do not skip this step or postpone it — changes exist only in memory until pushed.

Auto-snapshot: if the process already existed on the server (obj_id ≠ null), push-process automatically creates a snapshot of the current server state before deploying your changes. No action needed — this is transparent. The snapshot appears in the Corezoid UI and can be managed with the cz-snapshots actions list-snapshots / get-snapshot / delete-snapshot. Environments whose API has no snapshot object (some on-prem / older installations) are detected by a read-only probe, confirmed against control requests and re-checked periodically per project/stage: the snapshot is skipped, the push proceeds, and the push result says so — keep the .conv.json under version control there, because the platform holds no rollback point.

Concurrent-change detection & 3-way merge: pull-process/pull-folder capture the server version before export in a per-folder .corezoid-baseline.json sidecar, plus a copy of the pulled process under .corezoid-baseline/ (add both to .gitignore). If someone else changed the process between pull and push, push-process blocks — a plain push could silently drop their edits — and reports local/server/overlap changes across nodes and process-level fields such as title, description, params, and scheme.web_settings. Reconcile one of three ways: re-pull and re-apply; merge=true to save the original as <process>.pre-merge and graft non-overlapping server changes into the local file for review; or overwrite_server_change=true to overwrite after being shown the report (a server snapshot is attempted first, and recovery is possible only if it succeeds). force=true is the lint override only and does not waive this gate — pass overwrite_server_change in reply to the block report, never ahead of it, because set in advance it authorises dropping a change that has not happened yet and that nobody will see. Overwriting live server state that was never compared (overwrite_server_change, or adopt_existing on a file with no baseline) while no pre-push snapshot could be taken is refused outright unless allow_no_snapshot=true is passed as well: neither reported nor recoverable is not a state a single flag should reach. A never-deployed process is exempt — there is no previous version to protect, so the create → push flow never needs the second flag. Every waived gate is named in the push result. Files with no baseline push with an advisory; an unreadable/corrupt baseline blocks until a re-pull rebuilds it, because silently ignoring it would disable lost-update protection. A pre-v3.1.3 sidecar with no recorded merge ancestor cannot run the same-second content check: the push proceeds, says so, and records the ancestor from the live server scheme, so only that one push is unchecked.

After a successful deploy, notify the user:

"Changes have been deployed. Please refresh the page in Corezoid to see the updated process."


Reference Documents

Use the Read tool to load these files when specific node or validation details are needed:

PathWhen to read
${CLAUDE_PLUGIN_ROOT}/docs/node-structures.mdJSON schemas for all node types + full Logics fields reference (canonical)
${CLAUDE_PLUGIN_ROOT}/docs/nodes/set-parameters-built-in-functions.mdBuilt-in functions: $.math, $.date, $.random, $.sha1_hex, $.md5_hex, $.base64_encode, $.unixtime, $.map, $.filter
${CLAUDE_PLUGIN_ROOT}/docs/nodes/set-parameters-dynamic-values.mdDynamic values: {{var}}, {{node[id].count}}, {{node[id].SumID}}, {{conv[@alias].ref[...]}}, {{env_var[@name].key[1]}}
${CLAUDE_PLUGIN_ROOT}/docs/tasks/task-metadata.mdGlobal root.* fields: root.task_id, root.ref, root.conv_id, root.node_id, root.prev_node_id, root.user_id, root.change_time, root.create_time
${CLAUDE_PLUGIN_ROOT}/docs/nodes/code-node.mdCode node details and available JS libraries
${CLAUDE_PLUGIN_ROOT}/docs/nodes/call-process-node.mdCall a Process node, semaphores, cross-folder calls
${CLAUDE_PLUGIN_ROOT}/docs/nodes/reply-to-process-node.mdReply formats, object stringification
${CLAUDE_PLUGIN_ROOT}/docs/nodes/api-call-node.mdHTTP API call configuration
${CLAUDE_PLUGIN_ROOT}/docs/nodes/end-node.mdEnd node success/error configuration
${CLAUDE_PLUGIN_ROOT}/docs/nodes/condition-node.mdCondition node (branching logic)
${CLAUDE_PLUGIN_ROOT}/docs/nodes/delay-node.mdDelay node (timers and waiting); 30s limit is static-literal only — dynamic absolute-timestamp value for scheduled or sub-30s delays
${CLAUDE_PLUGIN_ROOT}/docs/nodes/copy-task-node.mdCopy Task node (task duplication)
${CLAUDE_PLUGIN_ROOT}/docs/process/process-json-validation.mdValidation rules and common errors
${CLAUDE_PLUGIN_ROOT}/docs/process/error-handling.mdError handling patterns (hardware vs software errors)
${CLAUDE_PLUGIN_ROOT}/docs/process/node-positioning-best-practices.mdCoordinate system and layout guidelines
${CLAUDE_PLUGIN_ROOT}/docs/variables-guide.mdVariable naming rules, creation workflow, usage examples

Example Processes

PathDescription
${CLAUDE_PLUGIN_ROOT}/samples/stripe-checkout.jsonStripe payment checkout flow
${CLAUDE_PLUGIN_ROOT}/samples/create-actors.jsonCreating actors/users
${CLAUDE_PLUGIN_ROOT}/samples/create-user.jsonUser creation process
${CLAUDE_PLUGIN_ROOT}/samples/gpt-calculator.jsonGPT integration example
${CLAUDE_PLUGIN_ROOT}/samples/api-post.jsonHTTP POST API call example

Final Step: Update Git Context

Do NOT report the task as complete and do NOT stop until this step is evaluated. The main task being deployed does not mean the session is over — this step is next.

Immediately after push-process or create-process succeeds, check whether at least one of the following is true:

  • push-process or create-process was actually called (not just previewed);
  • a new external host/API/service appeared that is not yet in dependencies.md;
  • an architectural decision was made (one approach chosen over another);
  • an issue was found or closed during this session.

If yes → activate corezoid-git-context skill right now. Do not wait for the user to ask. Do not skip because the main task "looks done".

If none of the above → skip and tell the user the session is complete.

The skill handles everything autonomously: reads current _ext/docs/, proposes a unified diff, asks confirmation, writes files, and pushes — one invocation.

Frequently asked questions

What does the Corezoid Edit AI skill do?

Corezoid process editing specialist. Use when the user wants to modify, update, or fix an existing Corezoid process, add or remove nodes, change node behavior, add an API call, fix an error, or update process logic. Activate when the user says "edit a process", "modify", "update", "fix", "add a node", "change behavior", "add a call", "remove a node", or "update the logic".

Why use Corezoid Edit on TypingMind?

Because you install it once and use it with any model. Corezoid Edit is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Corezoid Edit in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/corezoid/corezoid-ai-plugin/tree/main/plugins/corezoid/skills/corezoid-edit. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Corezoid Edit?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Corezoid Edit?

As many as you like. As long as a model supports skills, you can use Corezoid Edit with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Corezoid Edit AI skill free?

Yes. It is published on GitHub by corezoid under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇