Frontend Runtime logo

Frontend Runtime

OrganizationPopular
agent0ai
Frontend Runtime

Editable frontend runtime rules for framework pages, stores, shared runtime namespaces, and reusable visual patterns.

Overview

Publisheragent0ai
Repositoryspace-agent
Skill nameFrontend Runtime
Stars
1.4K
Forks
323
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 agent0ai on GitHub. Read the source before you install it.

Installation

Install the Frontend Runtime 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.
  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/agent0ai/space-agent.git /tmp/space-agent
mkdir -p .claude/skills
cp -r /tmp/space-agent/app/L0/_all/mod/_core/skillset/ext/skills/development/frontend-runtime .claude/skills/agent0ai-frontend-runtime
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Frontend Runtime 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 Frontend Runtime 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 Frontend Runtime 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.

Use this skill when the task changes browser runtime behavior, framework-backed UI, store orchestration, shared helpers, or general frontend composition under app/.

Editable Scope

  • You may edit app/.
  • Keep agent logic in the browser when possible.
  • Treat server/ as read-only infrastructure from this skill set.

Where First-Party Frontend Code Lives

  • Repo-owned first-party frontend code should normally live under app/L0/_all/mod/_core/....
  • New shared browser-runtime helpers belong in _core/framework/ only when multiple modules genuinely need them.
  • New shared UI primitives belong in _core/visual/.
  • Do not place durable repo-owned first-party features directly into L1 or L2.

Framework Boot And Runtime

  • Framework-backed pages boot through /mod/_core/framework/js/initFw.js.
  • The runtime installs onto globalThis.space.
  • initFw.js runs the extensible framework bootstrap step at _core/framework/initializer.js/initialize before Alpine startup.
  • Framework bootstrap also creates _core/framework/head/end in document.head for declarative head-side tags or inline bootstraps.
  • Use _core/framework/head/end when the setup can stay declarative, and use _core/framework/initializer.js/initialize/end when the setup must stay imperative instead of editing page shells.
  • Framework-backed pages centrally handle same-origin / and /admin opens through normal target="_blank" link clicks and window.open(..., "_blank") by granting the child window the current tab's /enter access marker before navigation; context-menu, middle-click, and modifier-key browser opens stay unmodified and still route through /enter.
  • Current shared runtime surface includes:
    • space.api
    • space.config
    • space.chat when the current agent surface publishes the active thread snapshot
    • space.fw.createStore
    • space.utils.markdown.render(text, target)
    • space.utils.markdown.parseDocument
    • space.utils.yaml.parse and space.utils.yaml.stringify
    • space.proxy
    • space.download
    • space.fetchExternal(...)
    • space.browser for registered browser-surface control; load the top-level browser-control skill for the detailed method list and browser-frame bridge usage

Use <x-browser src="https://example.com"></x-browser> when frontend UI, pages, or widgets need to embed a live browser surface directly in their DOM. Add controls="true" when that surface should render its own address bar and navigation controls; omit it or set controls="false" for a frameless embedded browser. Authored <x-browser> elements register with space.browser automatically, so agents can discover, inspect, navigate, and interact with them the same way they use stand-alone browser windows.

External browser fetches under the framework should try direct fetch(...) first and only fall back to /api/proxy after a failed cross-origin attempt; when that fallback succeeds, the runtime keeps an in-memory origin cache so later requests to the same origin go through the backend immediately for the rest of the page lifetime.

Do not hardcode third-party CORS proxy services such as allorigins, corsproxy, or codetabs in frontend code or widget renderers. For external HTTP reads, use plain fetch(externalUrl) or space.fetchExternal(externalUrl) and let the runtime handle /api/proxy fallback automatically. Use space.proxy.buildUrl(...) only when you need a same-origin proxied URL string for a non-fetch consumer such as an element attribute or link target.

space.utils.markdown.render(...) is the shared browser markdown wrapper. It inserts a .markdown root so the owning feature can style rendered markdown predictably.

space.api includes attachment-style helpers such as space.api.folderDownloadUrl(pathOrOptions) when a feature needs a same-origin download URL instead of a fetched blob.

Store Pattern

  • Create stores with space.fw.createStore(name, model).
  • Use init() for one-time startup and mount(refs) or unmount() for DOM-bound lifecycle.
  • Component HTML owns structure and Alpine bindings.
  • Stores own state, persistence, async work, and API orchestration.
  • Small utilities own parsing, transforms, and rendering helpers that would make the store too dense.
  • Pass DOM refs explicitly with x-ref; do not scan the document when direct refs will do.

Visual And Composition Rules

  • Reuse _core/visual before inventing feature-local chrome, dialogs, menus, or conversation patterns.
  • Keep page shells thin and static; mount real features through modules.
  • If a helper or style pattern repeats across features, move it into a clearly shared owner.
  • Keep the browser runtime deliberate and readable, not overloaded with one-off patterns.

Promotion Rules

  • If a contract is used by only one module, keep it in that module.
  • If multiple modules need the same runtime helper, move it into _core/framework.
  • If multiple modules share a presentation pattern, move it into _core/visual.

Mandatory Doc Follow-Up

  • When framework runtime, shared namespaces, bootstrap order, or reusable frontend primitives change, update the owning AGENTS.md files and the development skill subtree in the same session.

Frequently asked questions

What does the Frontend Runtime AI skill do?

Editable frontend runtime rules for framework pages, stores, shared runtime namespaces, and reusable visual patterns.

Why use Frontend Runtime on TypingMind?

Because you install it once and use it with any model. Frontend Runtime 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 Frontend Runtime in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/agent0ai/space-agent/tree/main/app/L0/_all/mod/_core/skillset/ext/skills/development/frontend-runtime. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Frontend Runtime?

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 Frontend Runtime?

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

Is the Frontend Runtime AI skill free?

Yes. It is published on GitHub by agent0ai 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 👇