Saved Replies
Saved replies are reusable response templates stored as Markdown files in your repository. Answer common questions in one command instead of typing the same reply every time.
How it works
- Create Markdown files in
.github/scitor/replies/(or a custom path) - Each
.mdfile is one reply β the filename becomes the reply name - Use
/reply <name>to expand and send the reply as an email
.github/
scitor/
replies/
billing-faq.md
reset-password.md
known-issue-login.md
feature-request-ack.md
Because replies are files in your repository, theyβre versioned, reviewable via pull requests, and editable directly in GitHubβs web interface β the same workflow you use for code and documentation.
Reply file format
A reply file is plain Markdown with optional YAML frontmatter:
---
description: Answer common questions about billing, plans, and invoices
tags: [billing, pricing]
---
Hi {{customer_name}},
Thanks for getting in touch about your plan.
Here's what's included on each tier:
| Plan | Price | Outbound emails |
|------|-------|-----------------|
| Free | $0/month | 100/month |
| Pro | $9/month | 500/month |
You can upgrade at any time by typing `/upgrade` on any open ticket.
Frontmatter fields
| Field | Type | Description |
|---|---|---|
description |
string | Shown in /reply list and AI suggestions |
tags |
string[] | Used for /reply search filtering |
Both fields are optional. If omitted, the reply still works β it just wonβt have a description in the list view.
Template variables
Variables use {{double_braces}} syntax and are expanded from the current ticket context when the reply is sent:
| Variable | Resolves to |
|---|---|
{{customer_name}} |
First name from the senderβs email header (falls back to βthereβ) |
{{customer_email}} |
Senderβs email address |
{{issue_title}} |
Issue or Discussion title |
{{issue_number}} |
Issue number (e.g. #42) |
{{issue_url}} |
Full URL to the GitHub Issue or Discussion |
{{repo}} |
Repository name (e.g. acme/support) |
{{agent_name}} |
GitHub username of the agent who ran the command |
{{today}} |
Current date (YYYY-MM-DD) |
Unknown variables are left as-is and a warning is posted so you can fix the template.
Commands
/reply <name>
Expand the template, apply variables, and send the result as an email to the customer.
/reply billing-faq
Scitor will:
- Fetch the reply file from your repository
- Expand all
{{variables}}from the ticket context - Render Markdown to HTML (same pipeline as
/send) - Send the email to the customer
- Add a π reaction to your comment
- Post a confirmation (unless disabled with
/skip-success-comment)
/reply <name> draft
Expand the template and post it as a preview comment β without sending an email. Use this to review the expanded content before committing to a send.
/reply billing-faq draft
The preview is posted as a bot comment marked βnot sentβ. If it looks good, run /reply billing-faq to send.
/reply list
Show all available saved replies with their descriptions.
/reply list
Returns a formatted table of every .md file in your replies folder.
/reply search <keyword>
Search replies by name, description, or tag.
/reply search billing
Configuration
Configure the replies path and AI suggestions in your .github/scitor.yaml:
replies:
path: .github/scitor/replies # default
ai_suggest: true # Suggest replies after AI triage (Pro)
ai_suggest_threshold: 0.75 # Confidence threshold (0β1)
| Field | Type | Default | Description |
|---|---|---|---|
path |
string | .github/scitor/replies |
Folder containing reply files |
ai_suggest |
boolean | true |
Post reply suggestions on inbound (Pro) |
ai_suggest_threshold |
number | 0.75 |
Minimum confidence for suggestions |
AI reply suggestions (Pro)
When AI triage is enabled, Scitor checks if any saved reply matches the detected category (e.g., billing, bug-report). If a match is found, a suggestion comment is posted on the new ticket:
π‘ Suggested reply: This looks like a
billingquestion. Try/reply billing-faqto respond instantly.
This is posted alongside the AI triage labels β before the agent has read the ticket. The agent sees both the AI classification and a ready-made reply in one glance.
Matching works by comparing the AI-detected category against reply names, tags, and descriptions. Name your reply files after common categories for the best experience.
Caching
Reply files are cached at the edge (Cloudflare Workers KV) for 5 minutes. When you push changes to your reply files, the cache is automatically invalidated.
Tips
- Name files descriptively β use
billing-faq.md, notreply-1.md - Add tags β they make
/reply searchmore useful - Write descriptions β they appear in
/reply listand help agents find the right reply quickly - Use draft mode first β
/reply <name> draftlets you preview before sending - Review via PR β reply quality improves when the team reviews changes like any other content
Info
Saved replies are available on both Free and Pro plans. AI reply suggestions are Pro only.