← Back to Kontasks
Dashboard Console System Prompt
The prompt wrapper that konui injects around user messages sent to Claude
Output
Dashboard Console Prompt Wrapper
How It Works
When you send a prompt from the dashboard console, konui wraps your message with instructions before forwarding to konsole/Claude. This wrapper tells Claude to:
- Identify who is making the request
- Create a kontask with the response (for the visual card)
- Use proper HTML formatting from CLAUDE.md templates
- Include a requestId for session recovery
The Prompt Template
Location: konui/src/router.ts:1317
DASHBOARD CONSOLE REQUEST from user "${requestingUser}": ${userPrompt}${imageInstruction} --- CRITICAL OUTPUT INSTRUCTIONS - You MUST create a kontask with your response: Call konui_create_task with EXACTLY this structure: { "type": "general", "title": "<short summary of request>", "description": "<one-line description>", "targetUser": "${requestingUser}", "scope": "<product|vibetools>", "tags": ["<relevant>", "<tags>"], "context": { "output": "<your HTML response here>", "requestedAt": "<ISO timestamp>", "requestId": "${requestId}" } } IMPORTANT: - targetUser MUST be at the ROOT level, not inside context - requestId in context is REQUIRED for recovery - scope: "product" for Konnect data, "vibetools" for dev tooling - Put your full HTML response in context.output - Keep console output minimal - the kontask card IS the deliverable
Image Attachment Handling
If images are attached, additional instructions are injected:
// Single image: [ATTACHED IMAGE: /tmp/upload-abc123.png] Use the Read tool to view this image before responding. // Multiple images: [ATTACHED IMAGES (3): 1. /tmp/upload-abc.png 2. /tmp/upload-def.png 3. /tmp/upload-ghi.png ] Use the Read tool to view these images before responding.
Variables Injected
| Variable | Source | Example |
|---|---|---|
requestingUser | Auth token | "johnathon" |
userPrompt | Request body | "Show me listings" |
requestId | Generated UUID | "31759a84-d3d2..." |
imagePaths | Uploaded files | ["/tmp/img.png"] |
Why This Design?
- Kontask output — Forces Claude to create rich visual cards instead of plain text
- requestId — Enables session recovery if browser disconnects
- targetUser — Ensures kontasks appear in the right user's view
- Minimal console output — The kontask card is the main deliverable, not chat text
What's Next?
Choose an action:
Quick Actions
Original Request
No layout configured
Details
Type
General
Status
Completed
Scope
vibetools
Tags
consolepromptsarchitecture
Created
4 Jan 2026, 1:45 am
Updated
4 Jan 2026, 1:45 am
Created By
claude
Raw Data
{
"id": "3a0edf95-028a-4aac-a368-64fda5f716de",
"type": "general",
"status": "completed",
"title": "Dashboard Console System Prompt",
"description": "The prompt wrapper that konui injects around user messages sent to Claude",
"context": {
"output": "<div style=\"background:#1e1e1e;color:#e0e0e0;padding:20px;border-radius:8px;font-family:sans-serif;\">\n<h2 style=\"color:#fff;margin:0 0 16px 0;\">Dashboard Console Prompt Wrapper</h2>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\">\n<h3 style=\"color:#61afef;margin:0 0 12px 0;\">How It Works</h3>\n<p style=\"margin:0;line-height:1.6;\">When you send a prompt from the dashboard console, konui wraps your message with instructions before forwarding to konsole/Claude. This wrapper tells Claude to:</p>\n<ol style=\"margin:12px 0 0 0;padding-left:20px;line-height:1.8;\">\n<li>Identify who is making the request</li>\n<li>Create a kontask with the response (for the visual card)</li>\n<li>Use proper HTML formatting from CLAUDE.md templates</li>\n<li>Include a requestId for session recovery</li>\n</ol>\n</div>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\">\n<h3 style=\"color:#98c379;margin:0 0 12px 0;\">The Prompt Template</h3>\n<p style=\"margin:0 0 12px 0;color:#7f848e;\">Location: <code style=\"background:#1e1e1e;padding:2px 6px;border-radius:3px;\">konui/src/router.ts:1317</code></p>\n<pre style=\"background:#1e1e1e;padding:16px;border-radius:4px;overflow-x:auto;font-family:'Consolas','Monaco',monospace;font-size:0.85rem;line-height:1.6;\"><span style=\"color:#c678dd;\">DASHBOARD CONSOLE REQUEST</span> from user <span style=\"color:#98c379;\">\"${requestingUser}\"</span>:\n\n<span style=\"color:#e5c07b;\">${userPrompt}</span><span style=\"color:#7f848e;\">${imageInstruction}</span>\n\n---\n<span style=\"color:#ef4444;\">CRITICAL OUTPUT INSTRUCTIONS</span> - You MUST create a kontask with your response:\n\nCall <span style=\"color:#61afef;\">konui_create_task</span> with EXACTLY this structure:\n{\n <span style=\"color:#98c379;\">\"type\"</span>: <span style=\"color:#98c379;\">\"general\"</span>,\n <span style=\"color:#98c379;\">\"title\"</span>: <span style=\"color:#7f848e;\">\"<short summary of request>\"</span>,\n <span style=\"color:#98c379;\">\"description\"</span>: <span style=\"color:#7f848e;\">\"<one-line description>\"</span>,\n <span style=\"color:#98c379;\">\"targetUser\"</span>: <span style=\"color:#98c379;\">\"${requestingUser}\"</span>,\n <span style=\"color:#98c379;\">\"scope\"</span>: <span style=\"color:#7f848e;\">\"<product|vibetools>\"</span>,\n <span style=\"color:#98c379;\">\"tags\"</span>: [<span style=\"color:#7f848e;\">\"<relevant>\"</span>, <span style=\"color:#7f848e;\">\"<tags>\"</span>],\n <span style=\"color:#98c379;\">\"context\"</span>: {\n <span style=\"color:#98c379;\">\"output\"</span>: <span style=\"color:#7f848e;\">\"<your HTML response here>\"</span>,\n <span style=\"color:#98c379;\">\"requestedAt\"</span>: <span style=\"color:#7f848e;\">\"<ISO timestamp>\"</span>,\n <span style=\"color:#98c379;\">\"requestId\"</span>: <span style=\"color:#98c379;\">\"${requestId}\"</span>\n }\n}\n\n<span style=\"color:#f97316;\">IMPORTANT:</span>\n- targetUser MUST be at the ROOT level, not inside context\n- requestId in context is REQUIRED for recovery\n- scope: \"product\" for Konnect data, \"vibetools\" for dev tooling\n- Put your full HTML response in context.output\n- Keep console output minimal - the kontask card IS the deliverable</pre>\n</div>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\">\n<h3 style=\"color:#e5c07b;margin:0 0 12px 0;\">Image Attachment Handling</h3>\n<p style=\"margin:0 0 12px 0;\">If images are attached, additional instructions are injected:</p>\n<pre style=\"background:#1e1e1e;padding:12px;border-radius:4px;overflow-x:auto;font-family:'Consolas','Monaco',monospace;font-size:0.85rem;\">\n<span style=\"color:#7f848e;\">// Single image:</span>\n[ATTACHED IMAGE: <span style=\"color:#98c379;\">/tmp/upload-abc123.png</span>]\nUse the Read tool to view this image before responding.\n\n<span style=\"color:#7f848e;\">// Multiple images:</span>\n[ATTACHED IMAGES (3):\n 1. <span style=\"color:#98c379;\">/tmp/upload-abc.png</span>\n 2. <span style=\"color:#98c379;\">/tmp/upload-def.png</span>\n 3. <span style=\"color:#98c379;\">/tmp/upload-ghi.png</span>\n]\nUse the Read tool to view these images before responding.</pre>\n</div>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\">\n<h3 style=\"color:#c678dd;margin:0 0 12px 0;\">Variables Injected</h3>\n<table style=\"width:100%;border-collapse:collapse;\">\n<tr style=\"border-bottom:1px solid #444;\">\n<th style=\"text-align:left;padding:8px;color:#9ca3af;\">Variable</th>\n<th style=\"text-align:left;padding:8px;color:#9ca3af;\">Source</th>\n<th style=\"text-align:left;padding:8px;color:#9ca3af;\">Example</th>\n</tr>\n<tr><td style=\"padding:8px;\"><code style=\"color:#e5c07b;\">requestingUser</code></td><td style=\"padding:8px;\">Auth token</td><td style=\"padding:8px;color:#98c379;\">\"johnathon\"</td></tr>\n<tr><td style=\"padding:8px;\"><code style=\"color:#e5c07b;\">userPrompt</code></td><td style=\"padding:8px;\">Request body</td><td style=\"padding:8px;color:#98c379;\">\"Show me listings\"</td></tr>\n<tr><td style=\"padding:8px;\"><code style=\"color:#e5c07b;\">requestId</code></td><td style=\"padding:8px;\">Generated UUID</td><td style=\"padding:8px;color:#98c379;\">\"31759a84-d3d2...\"</td></tr>\n<tr><td style=\"padding:8px;\"><code style=\"color:#e5c07b;\">imagePaths</code></td><td style=\"padding:8px;\">Uploaded files</td><td style=\"padding:8px;color:#98c379;\">[\"/tmp/img.png\"]</td></tr>\n</table>\n</div>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;\">\n<h3 style=\"color:#56b6c2;margin:0 0 12px 0;\">Why This Design?</h3>\n<ul style=\"margin:0;padding-left:20px;line-height:1.8;\">\n<li><strong style=\"color:#fff;\">Kontask output</strong> — Forces Claude to create rich visual cards instead of plain text</li>\n<li><strong style=\"color:#fff;\">requestId</strong> — Enables session recovery if browser disconnects</li>\n<li><strong style=\"color:#fff;\">targetUser</strong> — Ensures kontasks appear in the right user's view</li>\n<li><strong style=\"color:#fff;\">Minimal console output</strong> — The kontask card is the main deliverable, not chat text</li>\n</ul>\n</div>\n\n<div style=\"background:#2d2d2d;padding:12px;border-radius:6px;margin-top:16px;\">\n<h4 style=\"margin:0 0 8px 0;color:#fff;\">What's Next?</h4>\n<p style=\"color:#9ca3af;margin:0;\">Choose an action:</p>\n</div>\n</div>",
"requestedAt": "2026-01-04T01:45:00.000Z",
"requestId": "31759a84-d3d2-419a-b1d1-f86703269181",
"choices": [
{
"label": "View full router.ts",
"value": "Show me the full /api/dashboard/stream handler in router.ts",
"primary": true
},
{
"label": "Edit the template",
"value": "I want to modify the prompt template"
},
{
"label": "See konsole side",
"value": "Show me how konsole receives and processes this prompt"
}
]
},
"createdBy": "claude",
"createdAt": "2026-01-03T15:45:23.897Z",
"updatedAt": "2026-01-03T15:45:24.057Z",
"requestId": "31759a84-d3d2-419a-b1d1-f86703269181",
"scope": "vibetools",
"tags": [
"console",
"prompts",
"architecture"
],
"targetUser": "claude"
}