home / skills / krishagel / geoffrey / freshservice-manager
This skill helps manage Freshservice tickets, approvals, and performance reports across workspaces to streamline IT support and reporting.
npx playbooks add skill krishagel/geoffrey --skill freshservice-managerReview the files below or copy the command above to add this skill to your agents.
---
name: freshservice-manager
description: Manage Freshservice tickets, approvals, and get team performance reports across all workspaces
triggers:
- "freshservice"
- "ticket"
- "helpdesk"
- "what happened in freshservice"
- "tech team metrics"
- "daily summary"
- "weekly summary"
- "approvals"
- "assign to"
- "add note to ticket"
- "close ticket"
allowed-tools: Read, Bash
version: 0.1.0
---
# Freshservice Manager Skill
## Configuration
- **Domain**: psd401.freshservice.com
- **Agent ID**: 6000130414 (Kris Hagel)
- **Primary Workspace**: 2 (Technology)
- **API Key**: Stored in `~/Library/Mobile Documents/com~apple~CloudDocs/Geoffrey/secrets/.env`
## Workspaces
| ID | Name |
|----|------|
| 2 | Technology (primary) |
| 3 | Employee Support Services |
| 4 | Business Services |
| 5 | Teaching & Learning |
| 6 | Maintenance |
| 8 | Investigations |
| 9 | Transportation |
| 10 | Safety & Security |
| 11 | Communications |
| 13 | Software Development |
## Team Context
- **TSD Generic Account** (6000875582) - Shared by high school interns for Chromebook repairs
- **David Edwards** - Desktop Support Tech, handles most varied workload including incidents
- **Carol Winget** - Student Database Admin, PowerSchool specialist
- **Laura Durkin** - Admin Secretary, handles new students and badges
## Reports & Summaries
### Daily Summary
Get a narrative summary of what happened in Technology on a specific day.
**Natural language triggers:**
- "What happened in Freshservice yesterday?"
- "Give me today's tech summary"
- "What did the team do on Wednesday?"
**Script:** `bun get_daily_summary.js [date]`
Date options:
- `today` (default)
- `yesterday`
- Day names: `monday`, `tuesday`, `wednesday`, etc.
- `last wednesday`, `last friday`
- Specific date: `2025-11-20`
**Output includes:**
- Total tickets closed
- Breakdown by category (Chromebook, Schoology, Security Alert, etc.)
- Breakdown by agent with their tickets
- Automated ticket count (password resets)
### Weekly Summary
Get trends and metrics for the entire week.
**Natural language triggers:**
- "Weekly tech summary"
- "How did the team do this week?"
- "Give me the weekly Freshservice report"
**Script:** `bun get_weekly_summary.js [weeks_ago]`
Options:
- `0` = this week (default)
- `1` = last week
- `2` = two weeks ago
**Output includes:**
- Total closed and daily average
- Peak day and slow day
- Daily trend by volume
- Category breakdown with percentages
- Category trends (which days had spikes)
- Top agents with ticket counts and focus areas
- Agent daily breakdown
### Narrative Style
When presenting summaries, write a 1-minute narrative that:
- Highlights the main story of the day/week (outages, big pushes, etc.)
- Calls out specific people and what they handled
- Notes any concerning patterns (security alerts, cut wires, etc.)
- Converts UTC timestamps to Pacific time
- Uses specific numbers and ticket counts
## Ticket Operations
### List Tickets
```bash
bun list_tickets.js '{"workspace_id": 2, "filter": "new_and_my_open"}'
```
Filters: `new_and_my_open`, `watching`, `spam`, `deleted`, `archived`
### Search Tickets
```bash
bun search_tickets.js "status:2 AND priority:3" 2
```
Query syntax: `field:value AND/OR field:value`
Fields: `status`, `priority`, `agent_id`, `group_id`, `created_at`, `updated_at`
### Get Ticket Details
```bash
bun get_ticket.js <ticket_id>
```
### Get Service Request (with form data)
```bash
bun get_service_request.js <ticket_id>
```
Includes requester info, custom form fields, requested items.
### Create Ticket
```bash
bun create_ticket.js '<json>'
```
Required: `subject`, `description`, `email` or `requester_id`
Optional: `priority`, `status`, `workspace_id`
### Update Ticket
```bash
bun update_ticket.js <ticket_id> '<json>'
```
Can update: `status`, `priority`, `responder_id`, `group_id`
### Add Note
```bash
bun add_note.js <ticket_id> '{"body": "Note text", "private": true}'
```
Optional: `notify_emails` array to alert specific agents.
## Agent Operations
### List Agents
```bash
bun list_agents.js [query]
```
Query filters by first name, last name, or email.
Returns: id, name, email, job_title
Use this to resolve "assign to Mark" → find Mark's agent ID → update ticket.
### Get Agent by Email
```bash
bun get_agent.js <email>
```
## Approvals
### Get Pending Approvals
```bash
bun get_approvals.js [status]
```
Status: `requested` (default), `approved`, `rejected`, `cancelled`
**Note:** Freshservice API does not support approving service requests programmatically. User must approve via:
- Web UI: `https://psd401.freshservice.com/helpdesk/tickets/<id>`
- Email reply to approval request
## Common Workflows
### "Add a note to Jodi on ticket 151501"
1. Find Jodi's agent ID: `bun list_agents.js jodi` → 6000542935
2. Add note: `bun add_note.js 151501 '{"body": "...", "notify_emails": ["[email protected]"]}'`
### "Assign ticket to Mark"
1. Find Mark's ID: `bun list_agents.js mark`
2. Update ticket: `bun update_ticket.js <id> '{"responder_id": <mark_id>}'`
### "What approvals do I have?"
1. Get approvals: `bun get_approvals.js`
2. For each approval, get details: `bun get_service_request.js <ticket_id>`
### Cross-skill workflow
"Add note to ticket, create OmniFocus task, reassign ticket" - can combine Freshservice note + OmniFocus task creation + ticket update in one flow.
## Category Detection
Tickets are auto-categorized by subject keywords:
- **Password Reset**: "password reset"
- **Security Alert**: "security alert", "compromised", "breach"
- **Schoology**: "schoology"
- **PowerSchool**: "powerschool"
- **Promethean Board**: "promethean"
- **Chromebook**: "chromebook"
- **Phone/Voicemail**: "phone", "voicemail", "ext."
- **Badge Request**: "badge"
- **New Student**: "new student", "enrollee"
- **Intercom**: "intercom"
- **Raptor**: "raptor"
- **GoGuardian**: "goguardian", "go guardian"
- **Access/Login**: "login", "access", "mfa"
## Status Codes
| Code | Status |
|------|--------|
| 2 | Open |
| 3 | Pending |
| 4 | Resolved |
| 5 | Closed |
## Priority Codes
| Code | Priority |
|------|----------|
| 1 | Low |
| 2 | Medium |
| 3 | High |
| 4 | Urgent |
This skill manages Freshservice tickets, approvals, and team performance reports across multiple workspaces. It lets you list, search, create, update, and annotate tickets, retrieve per-agent and per-category summaries, and fetch pending approvals. Summaries are written as concise narratives and convert timestamps to Pacific time for local context.
The skill interacts with the Freshservice domain to run ticket operations (list, search, get details, create, update, add notes) and agent lookups to resolve assignments. It generates daily and weekly narrative summaries with counts, category breakdowns, agent performance, and trend highlights. Approvals can be listed, but final approval actions must be completed through Freshservice web UI or email replies because the API does not support programmatic approvals.
Can the skill approve service requests programmatically?
No. The Freshservice API used by this skill does not support programmatic approvals. Use the web UI or reply to the approval email to complete approvals.
How are categories assigned to tickets?
Tickets are auto-categorized by subject keyword matching (examples: 'password reset', 'chromebook', 'powerschool', 'security alert'). Clear subjects improve accuracy.