Skip to content

Example: create a custom assistant

Last verified: 2026-05-06 · Time: 20 minutes · No API key required

Turn one of your repeated workflows into a reusable, named assistant — a Custom GPT (ChatGPT), a Gem (Gemini), a Skill (Claude), a Space (Perplexity), or a Project (any).

This is the meta-example. After you do it once, every other example in this library becomes shareable.

Layer 1 — Chat only (the design pass) Free

Before you build the assistant, design it in chat:

Help me design a custom AI assistant.

The job: <one sentence, e.g., "draft difficult emails in my voice">
Audience: <me; my team; the public>
Inputs the assistant will get: <one or two sentences>
Outputs the assistant should produce: <format + length + tone>

Output a single markdown block with:
1. A 4-word name.
2. A 1-paragraph description.
3. The system prompt / instructions, second-person ("You are…").
4. 3 sample prompts a user might paste.
5. 1 obvious failure mode and the rule that prevents it.
6. Which slot in my AI to paste each piece into:
   - ChatGPT → Custom GPT Configure tab
   - Gemini → Gem Instructions
   - Claude → Project Instructions (and SKILL.md if I want a Skill)
   - Perplexity → Space System Prompt

This is the template from the Memory & preferences guide. Save the output.

Layer 2 — Project Sub

For most users, the right starting point is a Project, not a Custom GPT:

  • Lower cost.
  • Easier to iterate on instructions.
  • Already integrates with files and connectors.

What to click:

  • ChatGPT: New Project → name it → paste Instructions + sample prompts.
  • Claude: New Project → same.
  • Gemini: New Gem (closest equivalent).
  • Perplexity: New Space.

Layer 3 — Memory Sub

If the style/constraints from your assistant are universal, push them into global memory so every chat (not just this Project) benefits.

Layer 4 — Scheduled action

N/A — assistants are on-demand. But you can schedule a workflow that uses the assistant. See Create a native scheduled task.

Layer 5 — Custom GPT / Gem / Claude Skill Sub

Graduate from a Project to a published assistant when:

  • Multiple people will use it (Team / Ent for shareable surfaces).
  • The instructions are stable.
  • You want it discoverable in the GPT/Gem/Skill picker.

What to click:

  • Custom GPT: chatgpt.com/gpts/editor → Create → paste Instructions in Configure → upload Knowledge → set Capabilities (Browsing, Code interpreter) intentionally → save.
  • Gemini Gem: Gem manager → New Gem → paste Instructions → attach files → save.
  • Claude Skill: write a SKILL.md (see the Claude feature map). Skills also pack templates and reference resources.

Always test the published assistant against 3–5 example prompts before sharing.

Layer 6 — Developer / API (advanced) Dev

If your assistant touches APIs / data / external services, write a system prompt + tool list against the SDK of your choice. See Mastery — Claude § Expert, ChatGPT § Expert, Gemini § Expert.

Make it reusable

  • Save the assistant's source-of-truth doc in your team drive — even when the assistant is published. Things drift; the doc is the truth.
  • Version the system prompt. Add a Last updated: line.

Make it robust

  • Eval set: 5 inputs the assistant should handle well; 2 it should refuse. Score each release.
  • Red-team: every assistant gets prompt-injection probes (jailbreak persona override, exfiltration via URL, scope creep). See evals/red-team/.
  • Drift check: monthly, run the eval set. Adjust instructions when scores drop.

What good output looks like

  • Assistant says exactly what you'd say if you wrote it by hand.
  • It refuses out-of-scope requests and offers an in-scope alternative.
  • It produces the same shape of output for the same shape of input.

If your plan doesn't have this feature

  • No Custom GPT / Gem → use a Project. Same instructions; just less shareable.
  • No Project → save the system prompt in a notes app and paste as message 1 of every chat. The assistant is the prompt.
  • No memory → keep your style block in the same notes file.

See also