spencerm e38841918d Fix status-cache poisoning, add HTTP timeouts, coerce custom status names
- _status_choices no longer caches failures: a transient /ticket_form_fields
  error used to cache [] forever, silently degrading unresolved=True to an
  unfiltered listing (including Resolved/Closed) until container restart.
  unresolved=True and list_ticket_statuses now return an explicit error when
  the status list can't be fetched instead of degrading silently.
- All API calls (server and skill helper) now use a 30s timeout with a clean
  error, so a hung connection can't block a tool call indefinitely.
- _coerce_status falls back to the instance's live status list, so custom
  names like "Working" coerce to their id instead of 400ing at the API.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 10:38:56 -06:00

freshservice-claude

A Claude skill for working with Freshservice ITSM from chat / Cowork — view, create, update, reply to, and triage tickets; look up and update assets/CMDB; find agents, requesters, groups, and departments; and manage changes, problems, and releases via the Freshservice REST API v2.

Layout

File Purpose
SKILL.md Skill entry point — setup, common commands, guardrails
reference.md Endpoints, status/priority codes, filter-query syntax
scripts/fs.py Stdlib-only API helper (auth, URL building, paging, errors)

Install

Copy the skill into your Claude skills directory:

cp -R . ~/.claude/skills/freshservice

Configure credentials

mkdir -p ~/.freshservice
cat > ~/.freshservice/credentials <<'EOF'
FRESHSERVICE_DOMAIN=yourcompany
FRESHSERVICE_API_KEY=your_api_key
EOF
chmod 600 ~/.freshservice/credentials

python3 ~/.claude/skills/freshservice/scripts/fs.py check

The API key is in Freshservice → profile picture → Profile settings → API key. FRESHSERVICE_DOMAIN accepts the subdomain (yourcompany) or the full host. Environment variables of the same name override the file.

Usage

The skill activates when you mention Freshservice or a ticket/asset/change in chat. Under the hood it calls:

python3 scripts/fs.py request <METHOD> <PATH> [--param KEY=VALUE ...] [--data '<JSON>']

See SKILL.md and reference.md for details.

Description
Freshservice ITSM skill for Claude (Cowork) — tickets, assets/CMDB, people, changes/problems/releases via the REST API v2.
Readme 123 KiB
Languages
Python 87%
PowerShell 6.6%
Shell 5.5%
Dockerfile 0.9%