spring-ai-playground

description: Prompt Presets - ready-to-use system prompts for Agentic Chat. Apply a role as-is or save your own. 13 built-in presets, each with a real captured run.

Prompt Presets

Where: Agentic Chat header → Prompt Library (clipboard icon) → the Presets and My presets groups.

A preset is a complete, ready-to-use system prompt. You select it, optionally tweak the text, and apply it - no fields to fill. Presets cover whole roles: a coding agent, a research agent, a translator, and so on. The built-in ones live under Presets; the ones you save live under My presets.

Presets vs Templates. Both live in the Prompt Library and both end up as a conversation’s system prompt. A preset (this page) is a complete prompt you apply as-is. A template is parameterized - it has `` you fill in first, and a renderer assembles the finished prompt. Reach for a preset to start fast; reach for a template when you want the same structure with different specifics each time. Filling a template, in fact, produces a preset.

The Prompt Library dialog - a left list split into Templates (fill variables) and Presets (ready to use), with a right pane previewing the selected prompt{ width=”1500” }

Applying a preset

Selecting a preset shows its full system prompt in the right pane, editable in place. From there:

A preset selected - the editable system prompt on the right with Apply to chat and Save as preset buttons{ width=”1500” }

Editing before applying is encouraged - a built-in preset is a strong starting point, not a fixed contract.

Required tools

A preset can declare the built-in tools its role uses - for example Coding agent names seven file and GitHub tools, and Data wrangler names five CSV tools. The detail pane lists them under Required tools. The built-in presets are all wired to key-less (Local Pass) tools, so they apply with no setup. If a preset names a key-gated tool - more common in presets you save yourself - selecting it checks for the needed API keys and blocks Apply until they are set, listing the missing tools and their environment keys in red under the preset; you add them in Tool Studio. One preset, Self-equipping agent, declares no fixed list at all - it uses dynamic tool discovery to search the whole catalog on demand instead.

Applying a preset resets the built-in MCP server to expose exactly those tools - the same preset-authoritative model the default-tool preset uses - turns built-in MCP on for the new chat, and selects them in the tool selector. A confirmation dialog lists what will be exposed before you commit. The new exposure persists across restarts and is the same set shown in Tool Studio’s built-in exposure, so the chat and Tool Studio always agree. Tools are never enabled silently.

My presets - saving your own

Anything you save with Save as preset - whether an edited built-in, a free-typed prompt from the settings drawer, or a filled-in template - lands under My presets. The save dialog also carries a Use dynamic tool discovery checkbox, so a preset you author can opt into dynamic discovery instead of declaring a fixed tool list. They are stored under your home directory (<home>/spring-ai-playground/chat/save/) so they persist across launches, and they appear in the same list as the built-ins. Saving under a name you have used before updates that entry in place.

The storage layout and load order are covered in Context Engineering → System prompts, presets, and templates.

Built-in presets

Spring AI Playground ships 13 presets - ready-to-apply roles, many of them wired to a set of built-in tools. Each card carries a real captured run - the exact input and the result it produced, locally on Ollama. Click a card to see it. Process panels (THINK, MCP TOOLS) are shown folded, the way they appear once a turn finishes - click any panel in the app to open it.

General assistant no tools
:material-chat-processing-outline:
assistant · general
A concise default - answers directly and cites anything it uses. Works with no tools enabled.
**Tools**   none
**Model**   `qwen3.5:9b-mlx`
Click for a real run - input and result
Personal assistant 7 tools
:material-account-heart-outline:
assistant · personal
Gets small real-world tasks done through [action cards](/spring-ai-playground/docs/features/agentic-chat/#action-cards) - draft an email, add a calendar event, show a place on a map - plus time, weather, holidays, and arithmetic.
**Tools**   `sendEmail` · `addToCalendar` · `showLocation` · `getCurrentTime` · `getWeather` · `getPublicHolidays` · `evalExpression`
**Model**   `qwen3.5:9b-mlx`
Click for a real run - input and result
Coding agent 7 tools
:material-code-braces:
agent · code
Explore-then-edit over local files and public GitHub.
**Tools**   `listAllowedDirectories` · `findFiles` · `listDir` · `grepFile` · `readTextFile` · `writeTextFile` · `getGithubFileContent`
**Model**   `gemma4:12b-mlx` · Reasoning `Low`
Click for a real run - input and result
Research agent 4 tools
:material-book-search-outline:
agent · research
Multi-source research with citations.
**Tools**   `searchWikipedia` · `searchArxiv` · `searchHackerNews` · `extractPageContent`
**Model**   `qwen3.5:9b-mlx` · Reasoning `Low`
Click for a real run - input and result
Self-equipping agent dynamic
:material-tools:
agent · dynamic
Equips itself with the right tools on demand via `toolSearchTool`, scaling to your whole toolbox.
**Tools**   dynamic discovery (`toolSearchTool`)
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
Data wrangler 5 tools
:material-table-cog:
agent · data
CSV / text ETL with row-count invariants.
**Tools**   `parseCsv` · `formatCsv` · `stats` · `evalExpression` · `regexReplace`
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
Korea concierge 8 tools
:material-map-marker-radius-outline:
agent · korea
Live Korean data over no-key sources - Upbit / Bithumb crypto, weather, and holidays.
**Tools**   `getCurrentTime` · `getUpbitTicker` · `getBithumbTicker` · `geocodeAddress` · `getOpenMeteoForecast` · `getPublicHolidays` · `showLocation` · `addToCalendar`
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
GitHub repo analyst 5 tools
:simple-github:
agent · github
A repo due-diligence scorecard from public GitHub.
**Tools**   `getGithubRepo` · `listGithubRepoContributors` · `listGithubRepoIssues` · `getGithubLatestRelease` · `getGithubFileContent`
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
Release notes writer 4 tools
:material-note-text-outline:
agent · github
Keep-a-changelog style notes from releases and issues.
**Tools**   `getGithubLatestRelease` · `listGithubRepoReleases` · `listGithubRepoIssues` · `getGithubFileContent`
**Model**   `qwen3.5:9b-mlx` · Reasoning `Low`
Click for a real run - input and result
Log detective 6 tools
:material-file-search-outline:
agent · ops
Root-cause hunting over local logs.
**Tools**   `listAllowedDirectories` · `findFiles` · `grepFile` · `sliceFile` · `statFile` · `stats`
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
Crypto market watch 5 tools
:material-bitcoin:
agent · finance
Global vs Korean crypto, with the kimchi-premium math shown.
**Tools**   `getCryptoPrice` · `getUpbitTicker` · `convertCurrency` · `evalExpression` · `getCurrentTime`
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
Trip planner 8 tools
:material-airplane-takeoff:
agent · travel
A dated travel briefing - weather, holidays, and currency.
**Tools**   `getCurrentTime` · `geocodeAddress` · `getOpenMeteoForecast` · `getPublicHolidays` · `getCountryInfo` · `convertCurrency` · `showLocation` · `addToCalendar`
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
Tech pulse digest 4 tools
:material-trending-up:
agent · trends
A community trend digest with linked sources.
**Tools**   `searchHackerNews` · `searchStackOverflow` · `searchGithubRepos` · `getCurrentTime`
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result

The tools a preset names are built-in Default Tools; enable them from the chat tool selector (or let the preset select them on apply). Tools that need a key stay dormant until you supply the matching environment variable.


→ Back to Agentic Chat · the other half: Prompt Templates · how it all fits together: Context Engineering