rahulkumar96t

Claude Support Agent — Data skill for Claude Code

Data community

Tool-using customer-support agent on the Claude Messages API: policy-enforced refunds with human approval, tools scoped to the signed-in customer, tool output treated as untrusted data, PII-redacted J.

How to install Claude Support Agent

This entry records only its repository, not the path inside it, so there is no exact command to give. Open rahulkumar96t/claude-support-agent and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Claude Support Agent does

Tool-using customer-support agent on the Claude Messages API: policy-enforced refunds with human approval, tools scoped to the signed-in customer, tool output treated as untrusted data, PII-redacted JSONL traces, CLI and FastAPI.

Alternatives in Data

  • Skill Production Pipeline — Claude-skills — Effective: 2026-03-07 Applies to ALL new skills, improvements, and deployments 5.3k ★
  • 12 Services Layer — Prompt 12: Wire Up Services Layer (Analytics, Policy, Settings, Sessions) 2.3k ★
  • Busabase — Open-source database & workspace for AI agents — structured data, durable knowledge, reusable skills, runnable 162 ★

README

claude-support-agent

[![CI](https://github.com/rahulkumar96t/claude-support-agent/actions/workflows/ci.yml/badge.svg)](https://github.com/rahulkumar96t/claude-support-agent/actions/workflows/ci.yml)

A customer-support agent for a fictional outdoor-gear shop, built directly on the Claude Messages API tool-use loop. The model talks to the customer and decides which tool to call; the code decides what is allowed. Refund eligibility and amounts come from a written policy implemented in Python, refunds above a threshold pause the conversation until a human approves them, every tool only sees the signed-in customer's data, tool output reaches the model as untrusted JSON, and every conversation leaves a PII-redacted JSONL trace. It runs as a terminal chat or a FastAPI service, and the whole test suite runs offline against a scripted model.

Features

  • Bounded agent loop on the Messages API: max model calls per request, a per-call timeout and a wall-clock deadline, with explicit stop reasons (completed, awaiting_approval, max_turns, timeout, refusal, out_of_scope).
  • Six tools defined from Pydantic models: lookup_order, get_shipment_status, check_refund_eligibility, issue_refund, create_ticket, search_knowledge_base. The JSON schemas are sent with strict: true; the same models validate the arguments before anything runs.
  • Written refund policy, enforced in code: `refund-policy.md` (30/60-day windows, excluded categories, one refund per order, $500 self-service cap, review above $100) is implemented in policy.py, and a test checks that the numbers in the document match the code. issue_refund has no amount parameter.
  • Human approval gate: a refund above the threshold is held; the conversation pauses with an approval id, a reviewer approves or denies (terminal prompt or POST /approvals/{id}), the policy is re-checked, and the loop resumes with the result.
  • **