.github/skills/tsh-creating-prompts/SKILL.md
Create custom prompt files (.prompt.md) for GitHub Copilot in VS Code. Provides templates, guidelines, and a structured process for building prompt files that trigger specific workflows routed to the right custom agent and AI model. Use when creating, reviewing, or updating .prompt.md files.
npx skillsauth add thesoftwarehouse/copilot-collections tsh-creating-promptsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Creates well-structured custom prompt files for GitHub Copilot in VS Code. Enforces a consistent pattern across all prompts and ensures clear separation between prompt files, agent definitions, and skills.
A prompt routes work to an agent and configures the workflow context. The agent's role, personality, and behavioral guidelines are defined exclusively in the agent file. The prompt must never redefine, override, or contradict the agent's identity. </separation-of-concerns>
<workflow-focus> A prompt file is a **workflow trigger**. It must:agent frontmatter fieldmodel frontmatter fieldA prompt must NOT:
.instructions.md filesUse Markdown only for inline formatting (bold, code blocks, tables, lists) within XML sections. </xml-syntax>
<minimal-scope> A prompt should only describe what is necessary for the specific workflow it triggers. Delegate domain knowledge to skills, coding standards to instructions, and behavioral guidelines to agents. </minimal-scope> </principles>Use the checklist below and track your progress:
Creation progress:
- [ ] Step 1: Define the prompt's purpose
- [ ] Step 2: Choose the target agent and model
- [ ] Step 3: Determine tool requirements
- [ ] Step 4: Identify required skills
- [ ] Step 5: Design the workflow steps
- [ ] Step 6: Define output expectations
- [ ] Step 7: Assemble the prompt file using the template
- [ ] Step 8: Validate the prompt file
Step 1: Define the prompt's purpose
Answer these questions before writing anything:
Step 2: Choose the target agent and model
Select the agent and model best suited for the workflow:
.github/agents/ to find the one whose role aligns with the workflowagent field controls which agent runs the prompt; the model field controls which LLM is usedStep 3: Determine tool requirements
Decide if the prompt needs tools beyond the agent's defaults:
figma/*, atlassian/*), list them in the tools frontmattertools field entirely<server-name>/* format to include all tools from an MCP serverStep 4: Identify required skills
Determine which skills the workflow depends on:
.github/skills/ to find relevant onesStep 5: Design the workflow steps
Outline the workflow as a numbered sequence:
Step 6: Define output expectations
Specify the expected deliverables of the workflow:
Step 7: Assemble the prompt file using the template
Use the ./prompt.template.md template to assemble the final .prompt.md file. Place the file in .github/prompts/ with a descriptive kebab-case filename (e.g., research.prompt.md, implement-ui.prompt.md).
Step 8: Validate the prompt file
Verify the prompt file against this checklist:
agent field references an existing agent in .github/agents/model field specifies a valid AI modeldescription field is present and concisetools field (if present) lists only tools needed beyond agent defaultsRequired Skills section exist in .github/skills/| Field | Required | Description |
|---|---|---|
| agent | Yes | The custom agent used for running the prompt. Must match an agent filename in .github/agents/ (without the .agent.md suffix). If omitted, the current agent in chat is used. |
| model | Yes | The AI model used when running the prompt. If omitted, the currently selected model in the model picker is used. |
| description | Yes | A short description of what the prompt does. Shown in the / menu. |
| name | No | Override display name shown in the / menu instead of the filename. |
| argument-hint | No | Hint text shown in the chat input field to guide the user on what to provide (e.g., [Jira ID or task description]). |
| tools | No | A list of tool or tool set names available for this prompt. Overrides agent defaults. Use <server-name>/* for all MCP server tools. |
* Technically optional per VS Code, but required by convention in this project to ensure every prompt explicitly routes to the correct agent and model.
| Section | Required | Purpose |
|---|---|---|
| Goal statement | Yes | 1-2 paragraphs describing what the prompt accomplishes and the expected outcome. |
| <prerequisites> | No | Dependencies on other prompts or files that must be completed first. |
| <input-requirements> | No | Describes what context or inputs the workflow needs to start. |
| Required Skills | Yes | Skills to load before starting the workflow, with brief rationale for each. |
| Workflow | Yes | Numbered steps defining the workflow sequence. |
| <output-specification> | No | File naming, document structure, summary format, or success criteria. |
| <handoff> | No | Automatic handoff to another agent at the end of the workflow. |
| <constraints> | No | Workflow-specific limitations, anti-patterns, or scope boundaries. |
All body content in the prompt file must use XML-like tags for structure. Rules:
<section-name> ... </section-name><tool name="...">) are acceptable when they improve readability.Prompt files support variables that are resolved at runtime. Use them to make prompts more flexible:
| Variable | Description |
|---|---|
| ${workspaceFolder} | Absolute path to the workspace root |
| ${workspaceFolderBasename} | Name of the workspace folder |
| ${file} | Path to the currently open file |
| ${fileBasename} | Filename of the currently open file |
| ${fileDirname} | Directory of the currently open file |
| ${fileBasenameNoExtension} | Filename without extension |
| ${selection} / ${selectedText} | Currently selected text in the editor |
| ${input:variableName} | Prompts user for text input at runtime |
| ${input:variableName:placeholder} | User input with placeholder hint |
Variables are useful for prompts that operate on dynamic context (e.g., the current file, user-provided identifiers).
tsh-creating-agents - to understand agent patterns and ensure prompts don't overlap with agent responsibilitiestsh-creating-skills - to ensure this skill's own structure follows the canonical skill creation requirementstsh-technical-context-discovering - to understand existing prompt patterns and project conventions before creating a new onetsh-codebase-analysing - to analyze existing prompts and identify patterns to followtsh-creating-instructions - to understand when coding standards belong in instruction files rather than prompt definitionsdevelopment
Custom hook and composable patterns — naming, composition, stable return shapes, lifecycle cleanup, and testing strategies. Use when writing reusable logic units (React hooks, Vue composables), refactoring logic into hooks, debugging hook behavior, or reviewing hook implementations.
testing
UI verification criteria, structure checklists, severity definitions, and tolerance rules for comparing implementations against Figma designs. Use for verifying UI matches design, understanding what to check, and determining acceptable differences.
development
Clean raw workshop or meeting transcripts from small talk, filler words, and off-topic tangents. Extract and structure business-relevant content into a standardized format with discussion topics, key decisions, action items, and open questions.
development
Discover and establish technical context before implementing any feature. Prioritize project instructions, existing codebase patterns, and external documentation in that order. Use for any task requiring understanding of project conventions, coding standards, architecture patterns, and established practices before writing code.