Server logo

Server

Organization
toss
server

Write or review the server side of an Apps in Toss mini-app: any backend that stores per-user data or calls the Apps in Toss partner API (Toss login token exchange, anonymous-key exchange, other partner calls), on Cloudflare Workers, Node, a BaaS (Supabase, Firebase) or any other hosting. Use it right away, before writing server code, for "서버에 저장해서 다른 기기에서도 보이게 해줘", "서버 붙여줘", "Supabase·Firebase에 내 기록 저장해줘", "Workers로 서버 만들어줘", "토스 로그인 붙여줘" (even client side only — login needs console setup and a server exchange), "서버에서 사용자 구분은 어떻게 해?", or "getAnonymousKey 값을 서버에서 그대로 써도 돼?" — even when the user only names the feature. It decides how the server identifies users (anonymous-key exchange vs Toss login), wires mTLS for partner API calls, parses the resultType envelope and sets exact CORS origins, then writes or fixes the code. Keeps the user's chosen hosting. Deploys only when asked; no console calls. Client screens are `/ait:design`; phone testing is `/ait:test-on-device`. Triggered by `/ait:server [request]`.

Overview

Publishertoss
Repositoryapps-in-toss-harness
Skill nameserver
Stars
169
Forks
6
Bundled files
Instructions only
LicenseBSD-3-Clause
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 toss on GitHub. Read the source before you install it.

Installation

Install the Server 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/toss/apps-in-toss-harness/tree/main/packages/agent-plugin/shared/skills/server
  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/toss/apps-in-toss-harness.git /tmp/apps-in-toss-harness
mkdir -p .claude/skills
cp -r /tmp/apps-in-toss-harness/packages/agent-plugin/shared/skills/server .claude/skills/server
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Server 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 Server 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 Server 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.

server skill

목적

미니앱이 쓰는 서버 코드를 쓰거나 고칠 때 앱인토스 고유의 판단과 연결부를 맡는다. 사용자별 저장, 파트너 API 호출(토스 로그인 토큰 교환, 익명 식별키 교환 등)이 대상이다. 프레임워크 템플릿을 새로 깔지 않고, 사용자가 고른 호스팅과 기존 코드를 따른다. 사실(경로, 스키마, 허용 origin)은 docs MCP로 읽는 개발자센터 문서가 정본이고, 이 skill은 판단 기준과 점검 순서를 더한다.

실행 순서

0. 범위 확인

작업 디렉터리부터 읽는다(클라이언트 package.json의 web-framework 버전, 서버 디렉터리, wrangler.jsonc·wrangler.toml 같은 호스팅 설정). 서버가 아직 없고 사용자가 호스팅을 정하지 않았으면 무엇으로 할지 한 번 묻는다. 사용자가 이미 고른 호스팅을 다른 것으로 바꾸자고 먼저 제안하지 않는다.

1. 기준 읽기

../launch/references/server-runtime.md를 처음부터 끝까지 Read로 읽는다. 서버 코드를 한 줄이라도 쓰기 전에 읽는다. 사용자 식별, mTLS 인증서, Workers 경로, 응답 봉투, CORS, 로컬 검증 기준이 모두 거기 있다. 경로와 스키마는 그 문서가 가리키는 docs 페이지를 getPage로 읽어 맞춘다.

2. 사용자 식별 정하기

  • 개인정보가 필요 없는 사용자별 저장이면 익명 식별키 교환을 먼저 제안한다. 클라이언트 User.createAnonymousKeyAuthCode() → 서버의 교환 API → success.anonKey.
  • 사용자가 토스 로그인을 콕 집었으면 따르되, 콘솔에서 토스 로그인 등록과 약관 설정이 먼저 돼 있어야 한다고 알린다(등록 전에는 토큰 발급이 errorCode 4050으로 실패한다). 클라이언트 쪽만 요청받아도 이 선행 조건과, 받은 인가 코드를 서버가 토큰으로 바꿔야 한다는 점을 함께 말한다.
  • 클라이언트가 getAnonymousKey()로 얻은 값을 서버가 그대로 믿게 짜지 않는다. 사용자가 그렇게 해 달라고 해도 이유(그 값은 요청자를 증명하지 않는다)를 말하고 교환 방식으로 짠다.
  • 사용자가 Supabase·Firebase를 골랐으면 사용자별 데이터는 서버를 거치게 하고, 클라이언트 직결은 공용 데이터에만 쓴다. secret key는 서버에만 두고 supabase.auth 같은 자체 로그인은 붙이지 않는다. 자세한 경계는 server-runtime.md의 BaaS 절.

3. 코드 쓰기·고치기

server-runtime.md의 기준대로 쓴다. 최소한 다음을 지킨다.

  • 파트너 API 호출에는 mTLS 클라이언트 인증서를 싣는다. Workers는 mtls_certificates 바인딩과 env.<BINDING>.fetch.
  • 성공 판정은 HTTP 상태가 아니라 resultType이고, 데이터는 success 안에 있다.
  • CORS는 *가 아니라 앱의 SDK 버전에 맞는 정확한 origin만 허용한다.
  • 인증서·키·토큰 값은 코드, 커밋, 로그, 응답에 넣지 않는다. 경로와 바인딩 이름만 다룬다.
  • 로컬 검증은 가짜 mTLS fetch로 봉투 경우를 돌린다. 로그인 우회 플래그를 두지 않는다.

4. 보고

사용자가 직접 해야 할 일을 빠뜨리지 않는다: 콘솔에서 mTLS 인증서 발급, 호스팅 로그인(! npx wrangler login 등), 배포 후 클라이언트 서버 주소 갱신과 재빌드.

서버 작업 결과
  식별 방식: <익명 식별키 교환 | 토스 로그인>
  확인한 것: <로컬 테스트·봉투 경우>
  사용자가 할 일: <인증서 발급, 로그인, 배포 등>

다음 단계
  /ait:test-on-device   # 서버 주소로 다시 빌드한 번들을 폰에서 확인
                        #   말로: "만든 미니앱을 실제 토스 앱에서 돌려보고 싶어. 번들 올려서 폰에서 확인하게 해줘"
  /ait:launch           # 출시 전 점검
                        #   말로: "검수 넣기 전에 한번 봐줘"

문서가 필요하면 docs MCP(searchDocumentation/getPage)로 조회하세요.

Out of scope (이 skill이 하지 않는 것)

  • ❌ 사용자가 요청하지 않은 배포(wrangler deploy 등), 콘솔 쓰기
  • ❌ mTLS 인증서 발급(콘솔에서 사용자가 한다), 인증서·키 파일 내용 읽기나 출력
  • ❌ 화면 작업(/ait:design), 검수 점검(/ait:launch)
  • ❌ 확인하지 못한 런타임의 mTLS 지원 여부 단정

참고

  • ../launch/references/server-runtime.md: 서버 연결 기준(식별, mTLS, Workers, 응답 봉투, CORS, 로컬 검증)
  • 짝 skill: launch(출시 전 점검), test-on-device(폰 확인), design(화면)

Frequently asked questions

What does the Server AI skill do?

Write or review the server side of an Apps in Toss mini-app: any backend that stores per-user data or calls the Apps in Toss partner API (Toss login token exchange, anonymous-key exchange, other partner calls), on Cloudflare Workers, Node, a BaaS (Supabase, Firebase) or any other hosting. Use it right away, before writing server code, for "서버에 저장해서 다른 기기에서도 보이게 해줘", "서버 붙여줘", "Supabase·Firebase에 내 기록 저장해줘", "Workers로 서버 만들어줘", "토스 로그인 붙여줘" (even client side only — login needs console setup and a server exchange), "서버에서 사용자 구분은 어떻게 해?", or "getAnonymousKey 값을 서버에서 그대로 써도 돼?" — even when the...

Why use Server on TypingMind?

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

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/toss/apps-in-toss-harness/tree/main/packages/agent-plugin/shared/skills/server. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Server?

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 Server?

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

Is the Server AI skill free?

Yes. It is published on GitHub by toss under the BSD-3-Clause 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 👇