| name | atris-feedback |
| description | Submit, list, resolve, close, or delete Atris customer feedback. Use when user types /feedback or asks to triage the feedback queue. |
| version | 1.0.0 |
| tags | ["feedback","customer","admin"] |
Feedback
One skill for everything: submit feedback, view the queue, resolve/close/delete items.
Steps
- Parse the user input to determine the feedback action (list, submit, resolve, close, delete)
- Run the matching
atris feedback CLI command from the reference below
- If
atris CLI is unavailable, fall back to the direct API/DynamoDB path
- Report the result to the user
Parse the input
/feedback (no args) → show the queue
/feedback <message> → submit new feedback
/feedback resolve <id> <resolution> → mark as resolved, notify customer
/feedback close <id> → close as wontfix/duplicate
/feedback delete <id> → remove from queue
Preferred path: the Atris CLI
The atris CLI wraps every feedback operation against the production API and
handles auth from the user's login. Use it first — it's the canonical,
audited path and works without needing AWS credentials.
atris feedback
atris feedback "the calendar hangs"
atris feedback resolve abc123 "fixed"
atris feedback close abc123
atris feedback delete abc123
IDs can be short (first 8 chars of the UUID) — the CLI resolves the prefix
against the live list before acting.
If atris is not on PATH, it lives at ~/arena/atris-cli/bin/atris.js.
Fallback: direct API / DynamoDB
Only use this path if the CLI is unavailable (stale install, broken login).
Setup
Use this only from a trusted service workspace with AWS credentials already
configured. Do not ask end users to clone or run backend services locally.
from dotenv import load_dotenv; load_dotenv('backend/.env')
import boto3
table = boto3.resource('dynamodb', region_name='us-east-1').Table('atris_feedback')
Submit
curl -s -X POST "https://api.atris.ai/api/feedback" \
-H "Content-Type: application/json" \
-H "X-Feedback-Key: $FEEDBACK_API_KEY" \
-d '{"message": "THE_MESSAGE", "source": "cli", "context": {"user_email": "GIT_EMAIL"}}'
Confirm: Feedback submitted (id: abc123)
Resolve
table.update_item(
Key={'id': FULL_ID},
UpdateExpression='SET #s = :s, resolution = :r, resolved_at = :t',
ExpressionAttributeNames={'#s': 'status'},
ExpressionAttributeValues={':s': 'resolved', ':r': RESOLUTION, ':t': NOW},
)
Print: Resolved abc123: <resolution>
Close
Same as resolve but status = 'closed', no resolution text needed.
Delete
table.delete_item(Key={'id': FULL_ID})
Print: Deleted abc123
ID matching
Users type short IDs (first 8 chars). Scan the table and match by prefix
to find the full UUID.
Security
- NEVER include API keys, tokens, or secrets in feedback messages
- Server-side sanitization strips them anyway (double protection)
- Max 2000 chars per message
Output
Always print the result directly as text. Never leave it inside a tool
call expansion.