- Add intelligent-router.sh hook for automatic agent routing - Add AUTO-TRIGGER-SUMMARY.md documentation - Add FINAL-INTEGRATION-SUMMARY.md documentation - Complete Prometheus integration (6 commands + 4 tools) - Complete Dexto integration (12 commands + 5 tools) - Enhanced Ralph with access to all agents - Fix /clawd command (removed disable-model-invocation) - Update hooks.json to v5 with intelligent routing - 291 total skills now available - All 21 commands with automatic routing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Dexto Commands (File Prompts)
This directory contains File Prompts — reusable prompt templates that work like Claude Code's custom slash commands.
Prompt Types in Dexto
Dexto supports four types of prompts, each with different capabilities:
1. 📁 File Prompts (Commands)
Location:
- Local:
commands/ - Global:
~/.dexto/commandsFormat: Markdown files with frontmatter Arguments: Positional placeholders ($1,$2,$ARGUMENTS) Best for: Simple, file-based prompts you can version control
2. 🔌 MCP Prompts
Source: Connected MCP servers
Format: Defined by MCP protocol
Arguments: Named arguments (e.g., report_type: "metrics")
Best for: Complex prompts from external services (GitHub, databases, etc.)
3. ⚡ Starter Prompts
Source: Built into Dexto Format: Hardcoded in code Arguments: Varies by prompt Best for: Common operations provided out-of-the-box
4. ✨ Custom Prompts
Source: Created at runtime via API/UI Format: Stored in database Arguments: Positional placeholders like File Prompts Best for: User-created prompts that need persistence
Custom Commands (Create, Use, Manage)
Custom commands are prompts you create at runtime. They live in the local database (not on disk) and are available to the active agent across sessions. They support the same placeholder behavior as file prompts:
$1..$9and$ARGUMENTSpositional placeholders$$escapes a literal dollar{{name}}named placeholders (when you declarearguments)- If no placeholders are used in the template: arguments/context are appended at the end
Create via Web UI
- Open the “Create Custom Prompt” modal in the web UI
- Provide
name, optionaltitle/description, and the promptcontent - Use
$1..$9/$ARGUMENTS/{{name}}placeholders incontent - Optionally attach a resource file; it will be stored and included when the prompt runs
Create via API
- POST
POST /api/prompts/customwith JSON:
{
"name": "research-summary",
"title": "Research Summary",
"description": "Summarize research papers with key findings",
"content": "Summarize in style $1 with length $2.\n\nContent:\n$ARGUMENTS",
"arguments": [
{ "name": "style", "required": true },
{ "name": "length", "required": true }
],
"resource": {
"base64": "data:application/pdf;base64,...",
"mimeType": "application/pdf",
"filename": "paper.pdf"
}
}
- Declaring
argumentsis optional but recommended; it enables inline argument hints in the slash UI and required-arg validation. - The
resourcefield is optional; attached data is stored in the blob store and sent alongside the prompt when executed.
Delete via API
DELETE /api/prompts/custom/:name
Preview resolution (without sending to LLM)
GET /api/prompts/:name/resolve?context=...&args={...}contextbecomes_contextfor positional flowsargsis a JSON string for structured argument values
Argument Handling Summary
- Positional tokens typed after
/nameappear inargs._positionaland are expanded into$1..$9and$ARGUMENTS. - Named args can be declared in
argumentsand referenced as{{name}}. - If the template contains any placeholders ($1..$9, $ARGUMENTS, or {{name}}), arguments are considered deconstructed and are NOT appended.
- If the template contains no placeholders, providers append at the end:
Context: <_context>if provided, otherwiseArguments: key: value, ...
Creating File Prompts
Basic Structure
Create a .md file in this directory with frontmatter:
---
description: Short description of what this prompt does
argument-hint: [required-arg] [optional-arg?]
---
# Prompt Title
Your prompt content here using $1, $2, or $ARGUMENTS placeholders.
Frontmatter Fields
| Field | Required | Description | Example |
|---|---|---|---|
description |
✅ Yes | Brief description shown in UI | "Summarize text with style and length" |
argument-hint |
⚠️ Recommended | Argument names for UI hints | "[style] [length]" |
name |
❌ Optional | Override filename as command name | "quick-summary" |
category |
❌ Optional | Group prompts by category | "text-processing" |
id |
❌ Optional | Unique identifier | "summarize-v2" |
Argument Placeholders
File prompts support Claude Code's positional argument system:
| Placeholder | Expands To | Use Case |
|---|---|---|
$1, $2, ..., $9 |
Individual arguments by position | Structured parameters |
$ARGUMENTS |
Remaining arguments after $1..$9 |
Free-form text content |
$$ |
Literal dollar sign | When you need $ in output |
Examples
Example 1: Structured Arguments Only
---
description: Translate text between languages
argument-hint: [from-lang] [to-lang] [text]
---
Translate from $1 to $2:
$3
Usage: /translate english spanish "Hello world"
Expands to:
Translate from english to spanish:
Hello world
Example 2: Mixed Structured + Free-form
---
description: Analyze code with focus area
argument-hint: [file] [focus]
---
Analyze the code in **$1** focusing on: $2
Full input for context:
$ARGUMENTS
Usage: /analyze utils.ts performance "function slow() { ... }"
Expands to:
Analyze the code in **utils.ts** focusing on: performance
Full input for context:
utils.ts performance function slow() { ... }
Example 3: Free-form Only
---
description: Improve any text
argument-hint: [text-to-improve]
---
Please improve the following text:
$ARGUMENTS
Usage: /improve "This sentence not good"
Expands to:
Please improve the following text:
This sentence not good
Usage in the UI
Invoking File Prompts
- Type
/in chat — opens slash command autocomplete - Select your prompt — shows inline argument hints
- Provide arguments — positional order matters!
Argument Display
The UI shows:
<argname>— Required argument<argname?>— Optional argument- Hover tooltip — Argument description (if provided)
Example UI display for summarize:
/summarize <style> <length>
^required ^required
How Different Prompt Types Handle Arguments
File Prompts vs MCP Prompts
File Prompts (like summarize):
User types: /summarize technical 100 "Machine learning..."
↓
Expands: $1="technical", $2="100", $ARGUMENTS="technical 100 Machine learning..."
↓
Result: Prompt text with placeholders replaced
MCP Prompts (like generate-report):
User types: /generate-report metrics
↓
Maps: _positional=["metrics"] → report_type="metrics"
↓
Result: MCP server receives {report_type: "metrics"}
Key difference:
- File prompts: Simple string replacement in markdown
- MCP prompts: Structured data passed to external servers
Best Practices
✅ DO:
- Use descriptive names —
analyze-performancenotanalyze - Add clear descriptions — help users understand what it does
- Include usage examples — in the prompt content or description
- Use
argument-hint— enables inline UI hints - Keep it focused — one clear purpose per prompt
- Use
$1,$2for structure — when you need specific parameters - Use
$ARGUMENTSfor flexibility — when content is variable
❌ DON'T:
- Don't use spaces in filenames — use kebab-case:
my-prompt.md - Don't create overly complex prompts — split into multiple files
- Don't forget argument-hint — users need to know what to provide
- Don't rely on order if flexible — document expected argument positions
Testing Your Prompts
- Create the
.mdfile in this directory - Restart the agent (or wait for hot reload)
- Type
/your-prompt-namein chat - Test with different arguments — verify placeholders expand correctly
Advanced: Argument-Hint Parsing
The argument-hint field is parsed to create structured argument definitions:
argument-hint: [style] [length?] [extra-param]
Becomes:
[
{ "name": "style", "required": true },
{ "name": "length", "required": false },
{ "name": "extra-param", "required": true }
]
Rules:
[name]= required argument[name?]= optional argument (with?)- Order matters — matches positional
$1,$2positions
Troubleshooting
Prompt doesn't appear in slash command list
- Check filename ends with
.md - Verify frontmatter is valid YAML
- Ensure description field is present
- Put your file in
commands/(local) or~/.dexto/commands(global) - Restart the agent
Further Reading
- Prompt Manager Architecture:
packages/core/src/prompts/prompt-manager.ts - File Prompt Provider:
packages/core/src/prompts/providers/file-prompt-provider.ts - Placeholder Expansion:
packages/core/src/prompts/utils.ts(expandPlaceholders function)