Skip to content
← All posts

AI / Prompt Engineering

What Leaked System Prompts Teach: 8 Design Principles

awesome-ai-system-prompts collects the system prompts of 29 AI tools in one place. Here are the eight shared design principles that emerge from v0, Cursor, Manus, Claude Code, and ChatGPT — and how to apply them to your own agent.

Published July 17, 202611 min read

The fastest way to learn how to write a good agent is to read how the agents that already work were written. The problem is that these prompts are normally invisible: they sit inside the tool, handed to the model before you ever type.

awesome-ai-system-prompts gathers those instructions into one repository. The system prompts of 29 different tools sit there folder by folder — ChatGPT, Claude, Claude Code, Cursor, v0, Manus, Devin, Cline, Windsurf, Bolt.new, Replit, Perplexity, Grok, Notion, and more. The repo has over 6,100 stars and is MIT licensed.

What’s in the repo?

The root holds one folder per tool, and the file format varies by tool: some are .md, some .txt, some are raw .js or .ts (extracted straight from the tool’s source), and some are .json schema files.

CategoryFolders
Coding agentsClaude-Code, Cursor, Cline, Devin, windsurf, Augment, trae-agent, Replit, same.new, Bolt.new, v0, Loveable, Blackbox.ai
General-purpose assistantsChatGPT, Claude, Grok, Mistral, Google, Google-Jules, Z.ai, MetaAI-Whatsapp
Autonomous / tool-using agentsManus, Clawdbot, notte, Parahelp, Cluely
Search and productivityperplexity.ai, notion
Othersecurity

Figures as of July 2026: ~6,100 stars, ~900 forks, MIT license. The repo opened in March 2025.

The 8 design principles

These are the shared patterns the README extracts. Every example comes straight from the relevant tool’s prompt:

PrincipleWhat it doesExample
1. Role and scopeThe agent learns who it is and where its limits are in the first sentencev0: “You are v0, Vercel’s AI-powered assistant.”
2. Structured instructionsThe prompt is split into headings or tagsv0 and Cline use Markdown headings; same.new and Manus use XML-like tags
3. Explicit tool integrationTools are described with schemas and usage rulesChatGPT inlines schemas in the prompt; Manus externalizes them to tools.json
4. Step-by-step reasoningThe agent is given structure for its reasoningManus’s six-stage loop; v0’s <Thinking> tags
5. Environment awarenessOS, working directory, and constraints are injected into the promptCline injects OS/shell/cwd; Manus describes its Ubuntu 22.04 sandbox
6. Domain constraintsTechnology and style preferences become rulesv0 prefers shadcn/ui and lucide-react; Claude Code says “DO NOT ADD ANY COMMENTS unless asked”
7. Safety and refusal protocolThe refusal case and its wording are fixedv0 uses one fixed line: “I’m sorry. I’m not able to assist with that.”
8. Tone consistencyHow the agent speaks is specifiedCline is banned from opening with “Great” or “Certainly”; Bolt.new: “Do NOT be verbose”

Standout case studies

Vercel v0 — components as tools

The interesting thing about v0 is that it defines its tools not as function calls but as MDX components. Tags like <CodeProject>, <QuickEdit>, and <DeleteFile /> effectively act as tools. The prompt also carries dense Next.js and Tailwind rules, mandatory kebab-case filenames, and accessibility requirements.

Manus — writing the loop down explicitly

Manus numbers its agent loop right in the prompt: analyze, select tools, wait, iterate, submit, stand by. On top of that it adds a strict rule: one tool call per turn. The prompt isn’t monolithic either — it’s split into Planner, Knowledge, and Datasource modules, with tool schemas living in tools.json.

same.new — justify every call

same.new, a cloud IDE, uses tag-delimited rule blocks (like <tool_calling>). Two of its rules are especially instructive: it must explain why before every tool call, and it must read a file before editing it. On runtime errors it retries at most three times. It also carries a classic UX rule: “NEVER refer to tool names when speaking to the USER.”

Clawdbot — splitting the prompt across files

Instead of one giant prompt, Clawdbot separates identity into three files: SOUL.md, AGENTS.md, and IDENTITY.md, then defines a three-tier approval flow on top. It’s a good demonstration that you don’t have to keep a prompt in a single file as your agent grows.

Architectural variation: there is no one correct template

This is the most honest conclusion the repo reaches. Tools solve the same problem differently:

  • Tool syntax: splits between embedded markup (v0, Bolt.new) and JSON schemas (ChatGPT, Manus).
  • Planning: some write an explicit loop (Manus), others rely on implicit rules.
  • File editing: diff-based (replace_in_file), component-based (QuickEdit), or full overwrite.
  • Prompt structure: a single monolithic file, or a modular multi-file setup.

So looking for an ideal template to copy is the wrong question. The right one is: what tools does my agent use, in what environment, with what risk profile?

How should you use the repo?

  1. 01

    Open the folder of the tool closest to your own agent — Claude-Code or Cline for a coding agent, Manus for an autonomous one.

  2. 02

    Read the prompt end to end, but not to copy it; to see which decision was made and why.

  3. 03

    Apply the 8 principles to your own prompt as a checklist.

  4. 04

    Borrow the pattern for mechanical parts like tool descriptions and refusal wording; write identity and domain rules yourself.

  5. 05

    Change one thing and run the agent again — that’s the only way to measure what a prompt change actually did.

I keep this repo as a reference library. When I’m about to build a new agent I open the closest example and read it; what I’ve usually forgotten in my own prompt is environment awareness or refusal wording.