forge-platform

A guide to building Forge workflows, where visual nodes are connected to create language-model agents and automated processes.

In plain words
What is it for?
Use it to design, build, debug, or explain Forge workflows, including complex node arrangements, agent coordination, and supervisor patterns.
Why use it?
It helps prevent invalid workflow definitions and explains how data, routing, middleware, tools, and sub-agents fit together.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/nihalashetty/forge/forge-platform
Any agent
npx skills add nihalashetty/Forge --skill forge-platform
Clone the repo
git clone --depth 1 https://github.com/nihalashetty/Forge

Made for: Claude Code, Codex.

Per session 76 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,080 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00076 $0.02080
Opus 5 $0.00038 $0.01040
Sonnet 5 $0.00015 $0.00416
Haiku 4.5 $0.00008 $0.00208

Measured 2d ago against content hash de66686363d0, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

forge-platform scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

apps/api/forge/assistant_skills/forge-platform/SKILL.md · 140 lines

How it starts

The opening of the file, as written. The whole thing — 140 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Forge platform deep guide

You are embedded in Forge, a visual builder for LangChain/LangGraph agents. Workflows are JSON definitions compiled to LangGraph StateGraphs. This guide covers the rules the canned builder tools don't teach. For the live catalog always call list_node_types, get_node_schema(type), and list_middleware_types - they read the real registry.

Workflow definition shape

{
  "state": {"messages": {"type": "list[message]", "reducer": "add_messages"},
             "intent": {"type": "str", "reducer": "last"}},
  "entry_node": "start",
  "nodes": [{"id": "start", "type": "start", "config": {}, "position": {"x": 40, "y": 200}}],
  "edges": [{"source": "start", "target": "..."}]
}

Rules:

  • Exactly one start node; at least one end node; every node reachable; a path must reach end.
  • Every state key a node WRITES must be declared in state (LangGraph rejects undeclared writes). create_custom_workflow auto-declares keys for known node configs, but declare custom output_keys yourself. Types: str, int, float, bool, json, list[str], list[json], list[message]. Reducers: last (overwrite), add (append lists), merge (dict merge), add_messages (chat history).
  • Messages flow on the messages channel; nodes append, never replace.

Routing patterns

  • Triage first (almost every support/chatbot graph): right after start, classify the message into at least general vs support, then router it. Send general (greetings, smalltalk, "what can you do?", capability/meta questions) to a small friendly agent that answers directly and goes to end; route only support into the retrieval/ticket pipeline. Without this, greetings and meta questions fall through retrieval, miss, and dead-end at a "no relevant data → create a ticket" path - a bad first impression. Shape: start → classify(general|support) → router → {general: greeter_agent → end, support: retrieval → … → end}. (Simpler alt: one front agent with a knowledge_search tool that both chats and answers.)
  • Single intent: classifier (labels, output_key=intent) → router (expression=intent, cases {label: node_id}, default=fallback_node). Case KEYS are the exact VALUES the expression takes, not display labels.
  • ALWAYS give routers a default - with no default, an unmatched value silently ends the run with no answer.
  • MULTI-INTENT (a question with several asks): classifier multi_label: true writes a LIST to state (declare it list[str]); router multi: true routes to EVERY matching case in parallel. All branches then converge on ONE synthesizer agent node before end - its prompt: "compose the partial answers above into one coherent reply". Without a synthesizer the user sees only the last branch's answer.
  • Simpler multi-intent alternative (preferred for support bots): ONE agent with config.knowledge enabled (rag and/or qa) plus any REST tools. The agent searches the KB once per sub-question and composes one answer itself. Fewer nodes, no fan-out needed.
  • Conditional on retrieval success: retrieval route_key writes "yes"/"no"; human decisions: human_input output_key writes the decision string.

Read the full file on GitHub · 140 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 140 lines · 76 tokens per session scan A de66686363d0

Subscribe to this mod's changes

forge-platform is a skill published in the GitHub repository nihalashetty/Forge (157 stars, last pushed 9d ago), licensed MIT. It adds 76 tokens to every session and 2,080 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

project-graveyard

Scans the developer's machine for dead side projects, autopsies each one from its git history (died at the payments wall, killed by a newer project, finished but never shipped), surfaces their personal death patterns, and picks the corpse most worth resurrecting — then helps ship it. Use when the user mentions…

Shubhamsaboo/awesome-llm-apps · 127 tokens

mcp-apps-builder

MANDATORY for ALL MCP server work - mcp-use framework best practices and patterns. READ THIS FIRST before any MCP server work, including: Creating new MCP servers Modifying existing MCP servers (adding/updating tools, resources, prompts, widgets) Debugging MCP server issues or errors Reviewing MCP server code for…

Shubhamsaboo/awesome-llm-apps · 139 tokens

commit-archaeologist

Reconstructs why code exists from local git history, including the introducing commit, later changes, current authors, repeated companion files, and likely intent. Use when the user asks "why does this code exist", "who wrote this function and why", or to "explain the history of this function" before a rewrite…

Shubhamsaboo/awesome-llm-apps · 82 tokens

dependency-doctor

Checks requirements.txt, pyproject.toml, and package.json dependency manifests for surface-level direct-dependency footguns: standard-library shadowing pins, abandoned backports, unpinned dependencies, and obvious intra-manifest conflicts, plus opt-in PyPI yanked releases. Use when the user asks to check a manifest…

Shubhamsaboo/awesome-llm-apps · 115 tokens

scope-creep-detector

Analyzes git diffs against a stated intent to detect scope creep, unrelated files, broad pull requests, changes that grew beyond a fix, dependency additions, public API renames, config or CI edits, oversized hunks, and formatting-only files. Use when the user asks whether a change grew beyond the fix, a PR is too…

Shubhamsaboo/awesome-llm-apps · 98 tokens

data-visualization

Use for creating publication-quality charts and multi-panel analysis summaries. Triggers when tasks involve visualizing data, plotting results, creating charts, or producing visual reports from analysis output.

langchain-ai/deepagents · 40 tokens