atris/skills/atris-feedback/SKILL.md
Submit, list, resolve, close, or delete Atris customer feedback. Use when user types /feedback or asks to triage the feedback queue.
npx skillsauth add atrislabs/atris atris-feedbackInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
One skill for everything: submit feedback, view the queue, resolve/close/delete items.
/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 queueThe 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 # list queue
atris feedback "the calendar hangs" # submit
atris feedback resolve abc123 "fixed" # mark resolved
atris feedback close abc123 # close as wontfix
atris feedback delete abc123 # delete
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.
Only use this path if the CLI is unavailable (stale install, broken login).
cd ~/arena/atrisos-backend && source venv/bin/activate
from dotenv import load_dotenv; load_dotenv('backend/.env')
import boto3
table = boto3.resource('dynamodb', region_name='us-east-1').Table('atris_feedback')
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)
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>
Same as resolve but status = 'closed', no resolution text needed.
table.delete_item(Key={'id': FULL_ID})
Print: Deleted abc123
Users type short IDs (first 8 chars). Scan the table and match by prefix to find the full UUID.
Always print the result directly as text. Never leave it inside a tool call expansion.
development
Wake a team member by name — 'gm <member>' or 'wake up <member>' — and run ONE closed-loop tick: boot, inbox, claim, one bounded slice, verify, commit+push, proof, receipt. Optionally dispatch the build to an engine (codex/cursor/devin). Triggers on: gm, good morning, wake up <member>, wake the team, run a tick as <member>.
development
Dispatch coding work to an installed terminal agent — Codex, Cursor, or Devin — as an interchangeable worker engine. Claude orchestrates: writes the bounded prompt, the engine builds, Claude verifies and lands. Triggers on: use codex, use cursor, use devin, engine, dispatch to, worker agent, second opinion build.
development
Live RL tuner for skills. Watches skill invocations, reads user reaction, proposes targeted SKILL.md overlay edits, requires explicit approval, writes scorecards. The in-session half of the skill-RL loop (Path B). Triggers on: tune, sharpen, skill feedback, that was shit, that was great, make X better.
development
Run one RL improvement tick on the workspace via POST /api/improve. Ships one verifiable change, scores it, writes the scorecard. The thing you pay for. Triggers on: improve, make this better, ship one thing, run a tick, get smarter.