Navigate Summer logo

Navigate Summer

Organization
SummerEngine
navigate-summer

Open a Summer page or editor view for the person: studio.open, and engine.view_set while you work.

Overview

PublisherSummerEngine
Repositorysummer
Skill namenavigate-summer
Stars
91
Forks
8
Bundled files
1
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.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

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

Installation

Install the Navigate Summer 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/SummerEngine/summer/tree/main/library/skills/navigate-summer
  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/SummerEngine/summer.git /tmp/summer
mkdir -p .claude/skills
cp -r /tmp/summer/library/skills/navigate-summer .claude/skills/navigate-summer
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Navigate Summer 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 Navigate Summer 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 Navigate Summer 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.

navigate-summer — land the user exactly where they want to look

Overview

Summer has two surfaces the user looks at: summerengine.com (Studio, games, billing, templates, guides, docs) and the Summer Engine editor (scenes, nodes, docks). studio.open — the same behavior as summer open <target> in a shell, run by the Summer MCP on this computer — takes an intent ("billing", "my games", "the scene I'm editing", "res://player.gd") and opens the exact page or panel, or prints the URL / engine op so you can hand it over. The product map reference (summer_docs_read id reference/product-map) is the full table of destinations with their intent phrases, required context, and what the user will see.

A call written studio.open({...}) is summer_call({ op: "studio.open", input: {...} }) (3.x name: summer_open). The fields below are in the answer's result.

Rigid skill: follow the rules below exactly.

The one decision: open a surface, or act?

The user wants to…Do
see / check / decide — plan and billing (money), their published games and releases, usage, pricing, the MCP setup guide for their agent, docs, the scene or node you just built ("show me")Open the surface with studio.open
get a result — add a node, set a property, import an asset, run the game, publishAct through Summer tools (mutation tools, summer_play, store.publish); do not click through the editor by hand to do what a tool does
both ("add a camera and show me")act first, then open the scene / select the node so the user sees the result

Never open a browser or switch the editor's tab as a side effect of building. Opening a page or panel is a user-visible action — do it because the user asked to look, and say what will open before it opens. Playing the game and taking screenshots to check your own work is different: that is allowed and expected (summer_play, then summer_screenshot or summer_frame_shot).

How to call it

  1. Resolve first when unsure. studio.open({ target: "change my plan", open: false }) returns the matched target, the URL (and login_url if login is required), or the engine op — nothing opens. If action is ambiguous, pick from matches and call again with the id.
  2. Open. studio.open({ target: "billing" }) opens the browser at Studio → Billing. studio.open({ target: "scene", params: { path: "res://levels/level_1.tscn" } }) opens the scene in the running editor. studio.open({ target: "node", params: { node: "Player/Camera3D" } }) selects the node. studio.open({ target: "res://player.gd" }) routes by extension.
  3. Fill the slots the target declares. game needs params.gameId (and an optional section such as builds, releases, store-page, analytics); mcp-guide takes params.guide as an agent name (cursor, claude-code, codex, gemini, …); profile takes username; changelog takes version.
  4. List when you do not know the id. studio.open({}) returns every target with surface, status, and requires. In a shell: summer open --list.

Read the result honestly

  • action: "opened" — say what opened, in one line ("Opened Studio → Billing in your browser.").
  • logged_in: false with login_url — the login page opened with returnUrl set; tell the user the destination loads after sign-in.
  • action: "engine_not_running" — nothing opened. Tell the user to start Summer Engine (summer run <project>) or open the project in the desktop app, then offer to retry. Do not fall back to editing files.
  • action: "unsupported" (failure_reason: engine_lacks_op) — this Summer Engine build cannot open that surface (it predates the Navigate op, or does not advertise that id). Say so plainly, tell the user to update Summer Engine, and describe what to open by hand. Never claim it opened.
  • action: "ambiguous" — show the top matches by title and ask, or pick the obvious one and say which you picked.
  • action: "not_found" — the intent is not a Summer destination (or a res:// path tried to escape the project). Do not invent a URL; the tool only opens summerengine.com and its subdomains.
  • action: "open_failed" — this machine could not launch a browser (headless, no display). Nothing opened; paste the url for the user.
  • action: "blocked_origin" — the configured gateway is not a Summer origin; nothing opened. Tell the user to check gateway.url / SUMMER_GATEWAY_URL.

When to hand over a link instead

Use open: false (CLI: --print) and paste the url (or login_url) when the session has no browser (headless, remote, CI), when the user asked for a link, or when opening would interrupt what the user is doing. A link the user clicks is always acceptable; a browser window that appears unasked is not.

Editor targets

The editor owns its own table of destinations (the Navigate op) and tells the tool which ids it can open. studio.open({}) lists every editor id with availability: available (Navigate op), legacy (an older engine serving it through its original op), unavailable (update Summer Engine), unknown (engine not running). Ids: scene (default = the project's main scene), main-scene, node, script (with line), file, files, scene-tree, inspector, import-dock, signals-dock, changes-dock, screen-2d/3d/script/game/assetlib, viewport-show/hide, assistant, project-settings, editor-settings, output, debugger, editor-window. On a legacy engine, script opens without taking focus — mention it if the user does not see it.

While you work: what to open when

When you drive Summer Engine from outside (Claude Code, Codex, Cursor, the summer CLI), the person is not using the in-app chat. The editor is their window onto your work. A line at the bottom of it names your app and says what you are doing ("Claude Code · Placing 12 trees"). You choose what they see with engine.view_set (3.x summer_view_set): view (3d, 2d, script, game, chat, home, studio), optional rail (scene, inspector, files, output, none), optional focus and optional frame. A node path in focus selects that node; a res:// script or scene opens. frame lists the nodes to frame the camera on. Switching is instant and changes nothing in the game.

You are about to…Show
Edit a scene (place, move, remove nodes){"view": "3d", "rail": "scene", "focus": "<the node or group you edit>", "frame": ["<it>"]}; a 2D game uses "2d"
Write or fix a script{"view": "script", "focus": "res://<the script>.gd"}
Tune one node's properties{"view": "3d", "rail": "inspector", "focus": "<that node>"}
Playtest{"view": "game"}, then play the game
Review how it looksa summer_frame_shot of the result
Read errors or logs with the person{"view": "3d", "rail": "output"}
Finishthe best view of the result: the game in game for gameplay work, the framed scene in 3d or 2d for level and art work, the script for code-only changes
  • Open the view before the first edit of a step, so the person watches the change happen.
  • Focus what you change, not the scene root; for a group, focus its parent.
  • Make one call when the kind of work changes, not one per edit.
  • End on the result, never on an empty or unrelated view.
  • When the person is using the in-app chat, let them choose the view.

Anti-patterns

  • Opening billing or pricing when the user asked about a feature, not money.
  • Opening the scene in the editor before the change landed ("show me" comes after the mutation and its screenshot).
  • Guessing a gameId. Open my-games and let the user pick, or read the id from a URL they gave you.
  • Describing a page you did not open. If ok is false, the user saw nothing.

From a shell

No Summer MCP tools in this session? Run each one as a command; when summer --version is missing or below 4.0, use npx -y summer-engine@latest in place of summer. Fields are flags in kebab-case (--scene-path res://main.tscn) or one --input '<json>', and summer ops describe <op> prints the exact input. The summer-cli skill has the rest.

In this skillCommand
summer_docs_readsummer docs read
summer_frame_shotsummer engine frame-shot
summer_get_project_contextsummer engine get-project-context
summer_is_runningsummer engine is-running
summer_playsummer engine play
summer_screenshotsummer engine screenshot
engine.view_set, summer_view_setsummer engine view-set
store.publishsummer store publish
studio.open, summer_opensummer studio open

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Navigate Summer AI skill do?

Open a Summer page or editor view for the person: studio.open, and engine.view_set while you work.

Why use Navigate Summer on TypingMind?

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

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/SummerEngine/summer/tree/main/library/skills/navigate-summer. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Navigate Summer?

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 Navigate Summer?

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

Is the Navigate Summer AI skill free?

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