Skip to content

Add HappyFox skill for help desk ticket management#197

Open
jpshackelford wants to merge 3 commits intomainfrom
add-happyfox-skill
Open

Add HappyFox skill for help desk ticket management#197
jpshackelford wants to merge 3 commits intomainfrom
add-happyfox-skill

Conversation

@jpshackelford
Copy link
Copy Markdown
Contributor

Summary

This PR adds a new skill for interacting with the HappyFox help desk API, enabling ticket creation and management operations.

Features

The HappyFox skill supports:

  • Create Tickets: Create new support tickets with contacts, categories, priorities, and custom fields
  • Update Tickets: Add staff replies, change status, priority, assignee, and tags
  • Private Notes: Add internal notes visible only to staff
  • Query Tickets: List, filter, and search tickets by various criteria (status, assignee, date, contact, etc.)
  • Tag Management: Add and remove tags from tickets
  • Category Management: Move tickets between categories
  • Custom Fields: Full support for ticket and contact custom fields

Required Environment Variables

  • HAPPYFOX_API_KEY: HappyFox API key
  • HAPPYFOX_AUTH_CODE: HappyFox auth code
  • HAPPYFOX_SUBDOMAIN: HappyFox account subdomain (e.g., acme for acme.happyfox.com)

Documentation Sources

The skill is based on the official HappyFox API documentation:

Triggers

The skill is activated by:

  • happyfox
  • help desk
  • support ticket

Files Added

  • skills/happyfox/SKILL.md - Full skill documentation with API examples
  • skills/happyfox/README.md - Overview and quick reference

This PR was created by an AI assistant (OpenHands) on behalf of the user.

@jpshackelford can click here to continue refining the PR

This skill enables interaction with the HappyFox help desk API for:
- Creating and updating support tickets
- Adding staff replies and private notes
- Managing ticket status, priority, and assignee
- Querying and filtering tickets
- Working with custom fields
- Moving tickets between categories

Requires HAPPYFOX_API_KEY, HAPPYFOX_AUTH_CODE, and HAPPYFOX_SUBDOMAIN
environment variables.

Co-authored-by: openhands <openhands@all-hands.dev>
@jpshackelford jpshackelford marked this pull request as ready for review April 22, 2026 20:00
Copy link
Copy Markdown
Contributor

@all-hands-bot all-hands-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Acceptable - Well-structured skill with comprehensive documentation, but missing required marketplace entry.

Note: Review body kept brief per instructions. See inline comments for specific issues.

Comment thread skills/happyfox/SKILL.md
@@ -0,0 +1,370 @@
---
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Critical - Missing Marketplace Entry: This skill must be added to marketplaces/openhands-extensions.json or CI will fail.

According to AGENTS.md:

The test suite expects every directory under skills/ to be listed in a marketplace. If you add a new skill, update the appropriate marketplace file or CI will fail.

Add an entry alphabetically between gitlab and iterate with this structure:

{
  "name": "happyfox",
  "source": "./skills/happyfox",
  "description": "Interact with HappyFox help desk - create tickets, add updates, manage ticket status, and query tickets using the HappyFox REST API.",
  "category": "integration",
  "keywords": [
    "happyfox",
    "help desk",
    "support",
    "ticket",
    "api"
  ]
}

Comment thread skills/happyfox/SKILL.md

# HappyFox

<IMPORTANT>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Good Practice: Checking environment variables before use is the right approach. Clear, actionable guidance for users.

Comment thread skills/happyfox/SKILL.md Outdated
- Auth Code: `$HAPPYFOX_AUTH_CODE`
- Subdomain: Your HappyFox account name (e.g., `acme` for `acme.happyfox.com`)

> **Note**: If your HappyFox account is hosted in EU, use `<subdomain>.happyfox.net` instead of `<subdomain>.happyfox.com`
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Suggestion: Consider mentioning what determines EU vs US hosting. Users might not know which domain to use without checking their HappyFox admin panel.

Suggested addition:

> **Note**: If your HappyFox account is hosted in EU, use `<subdomain>.happyfox.net` instead of `<subdomain>.happyfox.com`. Check your HappyFox URL in your browser or contact your admin if unsure.

Comment thread skills/happyfox/README.md Outdated

- `HAPPYFOX_API_KEY`: Your HappyFox API key
- `HAPPYFOX_AUTH_CODE`: Your HappyFox auth code
- `HAPPYFOX_SUBDOMAIN`: Your HappyFox account subdomain (e.g., `acme` for `acme.happyfox.com`)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Acceptable: The <IMPORTANT> block provides clear, practical guidance. The instruction to verify environment variables before operations follows good defensive programming practices.

- Add credential detection script that checks for HFOX_* or HAPPYFOX_* variables
- HFOX prefix supports custom domains via HFOX_BASE_URL (full URL)
- HAPPYFOX prefix uses HAPPYFOX_SUBDOMAIN for standard happyfox.com domains
- Unified HF_* variables used in all API examples after detection
- Updated README.md to document both configuration options

Co-authored-by: openhands <openhands@all-hands.dev>
…havior notes

- Add IMPORTANT warning that /staff_pvtnote/ is the ONLY way to create private notes
- Clarify that /staff_update/ with visible_only_staff or private params does NOT create private notes
- Document that update_customer: false only prevents email, reply is still visible in portal
- Add note about attachment URL expiration (signed S3 URLs ~15 min)
- Document message_type field: 'p' for private notes, null for regular updates
- Add text field option for private notes (in addition to html)

Co-authored-by: openhands <openhands@all-hands.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants