/create-prompt
Create prompts for sidecar workspaces. Covers prompt structure (name, ticketMode, body), template variables (ticket with fallbacks), config file locations (global vs project), and scope overrides. Use when creating or modifying prompts in sidecar config files.
$ npx -y skills add marcus/sidecar --skill create-prompt --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/create-prompt
Context preview
The summary Claude sees to decide when to auto-load this skill.
Create prompts for sidecar workspaces. Covers prompt structure (name, ticketMode, body), template variables (ticket with fallbacks), config file locations (global vs project), and scope overrides. Use when creating or modifying prompts in sidecar config files.
SKILL.md
create-prompt.SKILL.mdname: create-prompt
description: Create prompts for sidecar workspaces. Covers prompt structure (name, ticketMode, body), template variables (ticket with fallbacks), config file locations (global vs project), and scope overrides. Use when creating or modifying prompts in sidecar config files.
Creating Prompts
Prompts are reusable templates that configure the initial context for agents when creating workspaces. They help standardize common workflows like code reviews, bug fixes, or feature implementation.
Config File Locations
| Scope | Path | Override Priority | |---------|---------------------------------------|-------------------| | Global | `~/.config/sidecar/config.json` | Lower | | Project | `.sidecar/config.json` (in project) | Higher |
Project prompts override global prompts with the same name (case-sensitive match).
Config Format
{
"prompts": [
{
"name": "Code Review",
"ticketMode": "optional",
"body": "Do a detailed code review of {{ticket || 'open reviews'}}.\nFocus on correctness, edge cases, and test coverage."
}
]
}Prompt Fields
name (required)
Display name shown in the prompt picker. Keep it concise.
ticketMode (optional)
Controls how the ticket/task field behaves:
| Mode | Behavior | |------------|-----------------------------------------------| | `optional` | Task field shown, can be empty (default) | | `required` | Task must be selected before creating | | `none` | Task field is hidden, prompt stands alone |
body (required)
The prompt text sent to the agent. Supports template variables. Use `\n` for newlines.
Template Variables
`{{ticket}}`
Expands to the selected task ID. Returns empty string if no task selected.
"body": "Fix issue {{ticket}}."
// With task td-abc123: "Fix issue td-abc123."
// Without task: "Fix issue ."`{{ticket || 'fallback'}}`
Expands to task ID, or the fallback text if no task selected.
"body": "Review {{ticket || 'all open items'}}."
// With task td-abc123: "Review td-abc123."
// Without task: "Review all open items."**Only single quotes work for fallback text:**
- `{{ticket || 'default'}}` -- works
- `{{ticket || "default"}}` -- does NOT work
Examples
Task-Required Workflow
{
"name": "Implement Task",
"ticketMode": "required",
"body": "Begin work on {{ticket}}. Use td to track progress.\nRead the task description carefully before starting."
}Standalone Workflow
{
"name": "Run Tests",
"ticketMode": "none",
"body": "Run the full test suite. Fix any failures.\nReport a summary when complete."
}Flexible Workflow
{
"name": "Code Review Session",
"ticketMode": "optional",
"body": "Start a review session for {{ticket || 'open reviews'}}.\nCreate td tasks for any issues found."
}Backlog Refinement
{
"name": "Backlog Refinement",
"ticketMode": "none",
"body": "Start a backlog refinement session. Use td to find all tasks in the backlog starting with the oldest. For each task:\n\n1. Determine relevance - has it been implemented, is it still needed? If not relevant, comment on the task and close it. If questionable, leave open with notes.\n\n2. Update tasks with out-of-date code references to reflect the current state of the codebase.\n\nUse sub-agents to analyze multiple tasks in parallel. Present a report of findings and changes when complete."
}Default Prompts
If no config file exists, the app creates one with 5 built-in templates:
- Begin Work on Ticket (required)
- Code Review Ticket (required)
- Plan to Epic (No Impl) (none)
- Plan to Epic + Implement (none)
- TD Review Session (none)
Press `d` in the prompt picker to install defaults if none are configured.
Scope Indicators
In the prompt picker, prompts show their source:
- `[G]` - Global prompt (from `~/.config/sidecar/`)
- `[P]` - Project prompt (from `.sidecar/`)
Important Notes
- Prompt names must match exactly (case-sensitive) for project overrides
- Only single quotes work in fallback syntax
- `ticketMode` defaults to `optional` if omitted
- Config files are loaded when creating a workspace; restart the app to reload
- Keep names short (they appear in a table with limited width)
- Use `\n` for newlines in prompt bodies
Read more
name: create-prompt description: Create prompts for sidecar workspaces. Covers prompt structure (name, ticketMode, body), template variables (ticket with fallbacks), config file locations (global vs project), and scope overrides. Use when creating or modifying prompts in sidecar config files.
Creating Prompts
Prompts are reusable templates that configure the initial context for agents when creating workspaces. They help standardize common workflows like code reviews, bug fixes, or feature implementation.
Config File Locations
| Scope | Path | Override Priority | |---------|---------------------------------------|-------------------| | Global | `~/.config/sidecar/config.json` | Lower | | Project | `.sidecar/config.json` (in project) | Higher |
Project prompts override global prompts with the same name (case-sensitive match).
Config Format
{
"prompts": [
{
"name": "Code Review",
"ticketMode": "optional",
"body": "Do a detailed code review of {{ticket || 'open reviews'}}.\nFocus on correctness, edge cases, and test coverage."
}
]
}Prompt Fields
name (required)
Display name shown in the prompt picker. Keep it concise.
ticketMode (optional)
Controls how the ticket/task field behaves:
| Mode | Behavior | |------------|-----------------------------------------------| | `optional` | Task field shown, can be empty (default) | | `required` | Task must be selected before creating | | `none` | Task field is hidden, prompt stands alone |
body (required)
The prompt text sent to the agent. Supports template variables. Use `\n` for newlines.
Template Variables
`{{ticket}}`
Expands to the selected task ID. Returns empty string if no task selected.
"body": "Fix issue {{ticket}}."
// With task td-abc123: "Fix issue td-abc123."
// Without task: "Fix issue ."`{{ticket || 'fallback'}}`
Expands to task ID, or the fallback text if no task selected.
"body": "Review {{ticket || 'all open items'}}."
// With task td-abc123: "Review td-abc123."
// Without task: "Review all open items."**Only single quotes work for fallback text:**
- `{{ticket || 'default'}}` -- works
- `{{ticket || "default"}}` -- does NOT work
Examples
Task-Required Workflow
{
"name": "Implement Task",
"ticketMode": "required",
"body": "Begin work on {{ticket}}. Use td to track progress.\nRead the task description carefully before starting."
}Standalone Workflow
{
"name": "Run Tests",
"ticketMode": "none",
"body": "Run the full test suite. Fix any failures.\nReport a summary when complete."
}Flexible Workflow
{
"name": "Code Review Session",
"ticketMode": "optional",
"body": "Start a review session for {{ticket || 'open reviews'}}.\nCreate td tasks for any issues found."
}Backlog Refinement
{
"name": "Backlog Refinement",
"ticketMode": "none",
"body": "Start a backlog refinement session. Use td to find all tasks in the backlog starting with the oldest. For each task:\n\n1. Determine relevance - has it been implemented, is it still needed? If not relevant, comment on the task and close it. If questionable, leave open with notes.\n\n2. Update tasks with out-of-date code references to reflect the current state of the codebase.\n\nUse sub-agents to analyze multiple tasks in parallel. Present a report of findings and changes when complete."
}Default Prompts
If no config file exists, the app creates one with 5 built-in templates:
- Begin Work on Ticket (required)
- Code Review Ticket (required)
- Plan to Epic (No Impl) (none)
- Plan to Epic + Implement (none)
- TD Review Session (none)
Press `d` in the prompt picker to install defaults if none are configured.
Scope Indicators
In the prompt picker, prompts show their source:
- `[G]` - Global prompt (from `~/.config/sidecar/`)
- `[P]` - Project prompt (from `.sidecar/`)
Important Notes
- Prompt names must match exactly (case-sensitive) for project overrides
- Only single quotes work in fallback syntax
- `ticketMode` defaults to `optional` if omitted
- Config files are loaded when creating a workspace; restart the app to reload
- Keep names short (they appear in a table with limited width)
- Use `\n` for newlines in prompt bodies
You might never open your editor again. Status: Ready for daily use. Please report any issues you encounter.
Other skills on sidecar.
- /create-adapter
Create conversation adapters for importing AI chat history from different tools (Claude Code, Cursor, Warp, Codex, etc.). Covers the adapter.Adapter interface, caching strategies, incremental parsing, watch/FD management, and performance standards. Use when creating a new
Open skill - /create-modal
Create declarative modals using the modal library API. Covers modal types (confirm, input, select, form), sections (Text, Buttons, Input, Textarea, Checkbox, List, When, Custom), rendering with OverlayModal, and keyboard/mouse handling. Use when adding modals or dialogs to the
Open skill - /create-plugin
Create new sidecar plugins implementing the plugin.Plugin interface, rendering views with Bubble Tea, handling keyboard input via keymap contexts, and integrating with the app shell (footer hints, event bus, adapters). Use when creating a new plugin, modifying plugin
Open skill - /create-theme
Create custom color themes for Sidecar, including base theme selection, color overrides, gradient borders, tab styles, per-project themes, community themes, and programmatic theme registration. Use when creating or modifying themes, adjusting UI appearance, or debugging
Open skill - /drag-pane
Drag-and-drop pane resizing implementation for two-pane plugin layouts. Covers mouse event handling via the internal/mouse package, hit region registration, drag delta calculation, width clamping, state persistence, and pane layout management. Use when working on pane resizing,
Open skill - /feature-flags
Creating and using feature flags in sidecar for gating experimental functionality. Covers flag registration, checking flags in code, config file and CLI overrides, and priority resolution. Use when adding feature flags, toggling features, or gating new functionality behind flags.
Open skill

