Prompts & Templates
Prompts are the core unit in Promptmark. Each prompt has content, metadata, and optional template variables that make it reusable.
Creating a Prompt
Navigate to New Prompt and fill in:
- Title — A descriptive name for your prompt
- Content — The prompt text. Use
{{variable}}syntax to create template variables - Type — Categorize the prompt (see types below)
- Tags — Comma-separated labels for organization
- Notes — Private notes about the prompt’s purpose or usage
- Collection — Optionally assign to a collection
Prompt Types
Promptmark supports 8 prompt categories:
| Type | Description | Use Case |
|---|---|---|
| General | Default type | Catch-all for uncategorized prompts |
| System | System/instructions | AI model system prompts and instructions |
| Query | Questions and searches | Research queries, Q&A prompts |
| Text-to-Image | Image generation | DALL-E, Midjourney, Stable Diffusion prompts |
| Text-to-Video | Video generation | Sora, Runway, Pika prompts |
| Text-to-Speech | Voice synthesis | TTS prompts and voice descriptions |
| Text-to-Code | Code generation | Programming and code-related prompts |
| Agent | AI agent instructions | Autonomous agent system prompts |
Templates
Any prompt containing {{variable}} syntax becomes a template. Templates are prompts with fill-in-the-blank variables that make them reusable across contexts.
Review this {{language:enum:Python,JavaScript,Go,Rust}} code for {{focus:enum:bugs,performance,security}}:
{{code:text}}
When you render a template, Promptmark generates a form for each variable. See Template Variables for the complete syntax specification.
Template vs. Prompt
- is_template = true — Shows in the Templates section, has a “Use Template” flow
- is_template = false — Regular prompt (may still contain variables)
Visibility and Publishing
Visibility Levels
| Setting | Who Can See | URL Pattern |
|---|---|---|
| Private (default) | Only you | N/A |
| Public | Anyone with the link, shows on your profile | /p/{id} |
| Remixable | Public + others can create derivatives | /p/{id} |
Publishing Flow
When you make a prompt public, Promptmark runs safety scans:
-
Layer 1 (Local) — Runs on every save. Checks for:
- PII — Personal identifiable information (emails, phone numbers, SSNs)
- Injection — Prompt injection patterns
- Secrets — API keys, tokens, passwords
-
Layer 2 (API) — Runs on publish if
HUGGINGFACE_API_KEYis configured:- Violence, harassment, self-harm, dangerous content
Scan Flags
Each scan category uses a trinary flag:
| Value | Status | Meaning |
|---|---|---|
0 |
Clean | No issues detected |
1 |
HAS | Active issue — blocks publishing |
2 |
HAD | Acknowledged — publishing allowed |
To publish, all flags must be 0 (clean) or 2 (acknowledged). You can acknowledge a flag via the prompt detail page or the acknowledge_scan MCP tool.
Remix and Lineage
Remixing creates a private copy of a public prompt in your library with full lineage tracking:
- Original must have
is_remixable = true - Remix is a new prompt owned by you with
is_remix = true - Lineage tracked via
remixed_id(original prompt ID) andsource_metadata - Remixes appear in your Remixes dashboard section
Version History
Promptmark automatically snapshots prompts. You can:
- View all versions of a prompt
- Compare versions
- Restore any previous version (creates a snapshot of current state first)
- Create explicit major versions with descriptions
Fields Reference
| Field | Type | Default | Description |
|---|---|---|---|
title |
string | (required) | Prompt title |
prompt |
string | (required) | Prompt content |
notes |
string | "" |
Private notes |
type_id |
string | "" (General) |
Prompt type |
tags |
JSON array | [] |
Tag list |
collection_id |
string | null |
Collection assignment |
is_public |
boolean | false |
Public visibility |
is_remixable |
boolean | false |
Allow remixing |
is_template |
boolean | false |
Template flag |
is_draft |
boolean | false |
Draft status |
self_rating |
float | 2.5 |
Self-rating (1-5) |
models |
JSON array | [] |
Designed-for models |