skill-cli
npx skills add https://github.com/skillrecordings/support --skill skill-cli
Agent 安装分布
Skill 文档
Skill Recordings Support Agent CLI
CLI tool for the Skill Recordings support platform. Named skill after Skill Recordings (the company), not Claude skills.
Quick start
skill front search "refund" --inbox inb_4bj7r # Search conversations
skill front search --status unassigned # Filter-only search
skill front conversation <id> -m # Conversation with history
skill front assign cnv_xxx tea_xxx # Assign to teammate
skill front reply cnv_xxx --body "On it" # Draft reply (never auto-sends)
skill front api GET /me # Raw API escape hatch
skill inngest events --after 1h # Recent workflow events
skill inngest failures --after 2h # Aggregate failure analysis
Inngest Commands
List events
skill inngest events # List recent events (default 20)
skill inngest events --after 2h # Events from last 2 hours
skill inngest events --after 1d # Events from last day
skill inngest events --name "support/inbound.received" # Filter by name
skill inngest events --limit 50 # Limit results
skill inngest events --json # JSON output
skill inngest events --dev # Use dev server (localhost:8288)
Get event details
skill inngest event <id> # Event details + triggered runs
skill inngest event <id> --json # JSON output
Get run details
skill inngest run <id> # Run status, output, timing
skill inngest run <id> --json # JSON output
Investigation Commands (Agent-Optimized)
These commands output JSON by default, optimized for agent consumption with aggregate stats and anomaly detection.
skill inngest inspect <event-id> # Deep dive: event + runs + results
skill inngest failures --after 2h # Aggregate failure analysis
skill inngest stats --after 1d # Stats with anomaly detection
skill inngest trace <run-id> # Full workflow trace
skill inngest search "email@example" # Search event data for patterns
skill inngest search "refund" --field result # Search specific field
Inspect (Deep Dive)
skill inngest inspect 01KFxxx
# Returns: event details, all triggered runs with results/errors, durations
Failures (Aggregate Analysis)
skill inngest failures --after 2h --limit 20
# Returns: total failures, grouped by error message, failure details
Stats (Pattern Detection)
skill inngest stats --after 1d
# Returns: event counts by type, workflow outcomes, skip reasons, anomalies
# Anomalies detected: high failure rate, more skipped than completed, etc.
Trace (Workflow Debug)
skill inngest trace 01KFxxx
# Returns: run details, input, result, error, duration
Search (Pattern Matching)
skill inngest search "purchase_id" --after 1h
skill inngest search "error" --field result --limit 100
# Returns: matching events with data
Cancel run
skill inngest cancel <id> # Cancel running function
Send signal
skill inngest signal <name> # Resume waiting function
skill inngest signal approval:draft_123 # Example: approval signal
skill inngest signal <name> --data '{"approved":true}' # With payload
Front Commands
Search conversations
skill front search "payment failed" # Text search (subject + body)
skill front search "refund" --inbox inb_4bj7r --status unassigned # With filters
skill front search "is:unreplied" --inbox inb_4bj7r --after 1706745600
skill front search --status unassigned --inbox inb_4bj7r # Filters only, no text
skill front search "from:dale@a.com tag:tag_14nmdp" --limit 50 # Inline Front syntax
skill front search # Shows full query syntax help
Filters (CLI flags): --inbox, --tag, --assignee, --status, --from, --after, --before, --limit, --json
Inline Front syntax (in the query arg): inbox:inb_xxx, tag:tag_xxx, from:email, to:email, cc:email, recipient:email, assignee:tea_xxx, participant:tea_xxx, author:tea_xxx, mention:tea_xxx, commenter:tea_xxx, is:<status>, before:<ts>, after:<ts>, during:<ts>, custom_field:"Key=Value"
Status values: open, archived, assigned, unassigned, unreplied, snoozed, trashed, waiting
Logic: Multiple filters = AND. Multiple from/to/cc/bcc = OR. Max 15 filters.
Get message
skill front message <id> # Full message details (body, author, recipients)
skill front message msg_xxx --json # JSON output
Get conversation
skill front conversation <id> # Conversation details
skill front conversation cnv_xxx -m # Include message history
skill front conversation <id> --json # JSON output
Inbox & conversations
skill front inbox # List all inboxes
skill front inbox inb_xxx # List conversations in inbox
skill front inbox inb_xxx --status unassigned # Filter by status
skill front inbox "AI Hero" # Lookup by name
skill front inbox inb_xxx --tag "500 Error" --limit 100 --json
Assign / unassign conversations
skill front assign cnv_xxx tea_xxx # Assign to teammate
skill front assign cnv_xxx --unassign # Remove assignee
skill front assign cnv_xxx tea_xxx --json # JSON output
Tag / untag conversations
skill front tag cnv_xxx "bug report" # Add tag by name (case-insensitive)
skill front tag cnv_xxx tag_xxx # Add tag by ID
skill front untag cnv_xxx "bug report" # Remove tag by name
skill front untag cnv_xxx tag_xxx --json # JSON output
Reply (draft only â HITL)
skill front reply cnv_xxx --body "Thanks for reporting this"
skill front reply cnv_xxx --body "We're looking into it" --author tea_xxx
skill front reply cnv_xxx --body "..." --json
# NEVER auto-sends. Creates a draft. Review and send from Front.
Tag management
skill front tags list # All tags with conversation counts
skill front tags list --unused # Tags with 0 conversations
skill front tags delete tag_xxx # Delete a tag
skill front tags rename tag_xxx "New Name"
skill front tags cleanup # Interactive: dedup, fix variants, remove obsolete
Teammates
skill front teammates # List all teammates
skill front teammates --json
skill front teammate tea_xxx # Get teammate details
skill front teammate tea_xxx --json
Archive & bulk operations
skill front archive cnv_xxx # Archive single conversation
skill front bulk-archive --inbox inb_xxx --dry-run # Preview bulk archive
skill front bulk-archive --inbox inb_xxx --tag "spam" --execute
Report & triage
skill front report --inbox inb_xxx # Inbox forensics report
skill front triage --inbox inb_xxx # AI-powered triage
skill front triage --inbox inb_xxx --auto-archive # Auto-archive noise
Raw API passthrough
skill front api GET /me # Escape hatch for any endpoint
skill front api GET /conversations/cnv_xxx
skill front api PATCH /conversations/cnv_xxx --data '{"status":"archived"}'
skill front api POST /conversations/cnv_xxx/tags --data '{"tag_ids":["tag_xxx"]}'
# Always outputs JSON. Supports GET, POST, PATCH, PUT, DELETE.
Pull conversations (eval datasets)
skill front pull-conversations --inbox inb_xxx --output data.json
Linear Commands
â ï¸ Personal API Key Required for Write Operations
All write operations (create, update, assign, close, comment, etc.) require a personal LINEAR_API_KEY.
# Set up your personal API key
skill config init
skill config set LINEAR_API_KEY=lin_api_xxx
# Without a personal key, write commands will fail with:
# "Write operations require a personal API key for LINEAR_API_KEY."
Read Operations (no personal key needed)
skill linear issues # List issues
skill linear issues --team ENG # Filter by team
skill linear issues --state "In Progress" # Filter by state
skill linear issues --assignee me # My issues
skill linear issue ENG-123 # Get issue details
skill linear search "bug" # Search issues
skill linear teams # List teams
skill linear users # List users
skill linear states ENG # Workflow states for team
skill linear labels ENG # Labels for team
skill linear projects # List projects
skill linear my # My assigned issues
Write Operations (require personal API key)
skill linear create "Fix the bug" --team ENG # Create issue
skill linear create "Task" --team ENG --priority 1 --state "Todo"
skill linear update ENG-123 --priority 0 --estimate 3 # Update issue
skill linear assign ENG-123 --to user@example.com # Assign
skill linear assign ENG-123 --unassign # Unassign
skill linear state ENG-123 --state "In Review" # Change state
skill linear close ENG-123 # Close issue
skill linear close ENG-123 --reason "Fixed in PR #42" # Close with reason
skill linear comment ENG-123 --body "Working on this" # Add comment
skill linear label ENG-123 --add "bug" # Add label
skill linear label ENG-123 --remove "feature" # Remove label
skill linear link ENG-123 --blocks ENG-456 # Link issues
skill linear link ENG-123 --blocked-by ENG-456
skill linear link ENG-123 --related ENG-456
JSON Output with HATEOAS
skill linear issue ENG-123 --json
# Response includes:
# - _meta.personal_key_hint: Warning about write operations
# - _actions[].requires_personal_key: true for write actions
# - _links: Related resources
Other Commands
Initialize integration
skill init # Interactive mode
skill init my-app # Quick mode with name
skill init --json # JSON output
Setup wizard
skill wizard # Interactive property setup
skill wizard --json # JSON output
Health check
skill health # Check default integration
skill health total-typescript # Check by slug
skill health https://example.com -s secret # Check by URL
skill health -l # List all registered apps
skill health --json # JSON output
Run evals
skill eval routing dataset.json # Run routing eval
skill eval routing dataset.json --json # JSON output
skill eval routing dataset.json --min-precision 0.95
skill eval routing dataset.json --min-recall 0.98
skill eval routing dataset.json --max-fp-rate 0.02
skill eval routing dataset.json --max-fn-rate 0.01
Response Analysis Commands
List recent responses
skill responses list # List recent responses (default 20)
skill responses list --app total-typescript # Filter by app
skill responses list --limit 50 # More results
skill responses list --rating bad # Only bad-rated responses
skill responses list --rating unrated # Only unrated responses
skill responses list --since 2024-01-01 # Since date
skill responses list --json # JSON output
Get response details
skill responses get <actionId> # Response details
skill responses get <actionId> --context # Include conversation history
skill responses get <actionId> --json # JSON output
Export for analysis
skill responses export # Export all with context
skill responses export --app total-typescript # Filter by app
skill responses export --rating bad # Only bad responses
skill responses export -o bad-responses.json # Output to file
Common Workflows
Triage an inbox
# 1. Search for unassigned conversations
skill front search --inbox inb_4bj7r --status unassigned --json
# 2. Get details on a specific conversation
skill front conversation cnv_xxx -m
# 3. Assign, tag, and reply
skill front assign cnv_xxx tea_xxx
skill front tag cnv_xxx "needs-investigation"
skill front reply cnv_xxx --body "Looking into this now"
# 4. Or bulk triage with AI
skill front triage --inbox inb_4bj7r
Find conversations from a specific sender
skill front search "from:user@example.com" --inbox inb_4bj7r
skill front search "from:user@example.com is:unreplied"
Debug empty message body
# 1. Find recent inbound events
skill inngest events --after 1h --name "support/inbound.received"
# 2. Get event details
skill inngest event 01KFxxx
# 3. Check if message has body via Front API
skill front message msg_xxx
# 4. Compare webhook data vs API data
Investigate failed workflow
# 1. Find failures
skill inngest failures --after 2h
# 2. Get run details
skill inngest run 01KFxxx
# 3. Check event that triggered it
skill inngest event <event_id>
Pipe search results to other commands
# Get all unassigned conversation IDs
skill front search --inbox inb_4bj7r --status unassigned --json | jq '.data.conversations[].id'
# Archive all snoozed conversations (careful!)
skill front search "is:snoozed" --inbox inb_4bj7r --json | jq -r '.data.conversations[].id' | xargs -I{} skill front archive {}
Environment Variables
Required in .env.local:
FRONT_API_TOKEN= # For Front API commands
INNGEST_SIGNING_KEY= # For Inngest API commands
JSON Output
All commands support --json for machine-readable output:
skill inngest events --json | jq '.[0].data'
skill front message msg_xxx --json | jq '.body'