Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create a new ticket (persistent conversation/work thread) in EvoNexus. Assigns to an agent, sets priority, optionally links to a goal or project. Writes via POST /api/tickets. Use when the user says 'create a ticket', 'open an issue', 'add to Zara's queue', 'track this topic for later', 'assign X to Y agent', or wants to turn an ad-hoc conversation into persistent work.
.claude/skills/evolution-foundation-create-ticket/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 43% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 33% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -21% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 32% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 0% | 0% |
Create a ticket — persistent conversation/work thread with state and assignee.
Use tickets when:
Don't use tickets for:
Ask the user:
urgent, high, medium (default), lowzara-cs — support / CSflux-finance — billing / paymentsatlas-project — project blockersaria-hr — HR / hiringlex-legal — contracts / compliancegoal_id if this work moves a specific goal. Skip if not.project_id for grouping without a specific goal.Use from dashboard.backend.sdk_client import evo — auto-handles URL + auth.
The runtime injects the current agent slug and session id into your system prompt — pass them through so the ticket records provenance.
pythonimport json from dashboard.backend.sdk_client import evo ticket = evo.post("/api/tickets", { "title": "Cliente X reclama de latência", "description": "Print anexado no Intercom, 4s para carregar /dashboard", "priority": "high", "assignee_agent": "zara-cs", "goal_id": 3, "source_agent": "<agent-slug>", # injected via system prompt at runtime "source_session_id": "<session-uuid>", # injected via system prompt at runtime }) print(json.dumps(ticket)) # use json.dumps, NOT print(ticket) — the UI auto-binds the session to the ticket when it sees a valid JSON ticket in stdout
Response includes the created ticket with id, status=open, created_at.
Explain to the user:
/issues?assignee=zara-cs inboxurgent, it jumps to front of queuelocked_at / locked_by = zara-cs (atomic checkout)lock_timeout_seconds (default 1800s) if Zara crashes mid-workIf the user says "and tell Flux to check billing", add a comment with:
pythonfrom dashboard.backend.sdk_client import evo evo.post(f"/api/tickets/{ticket['id']}/comments", { "body": "@flux-finance please confirm this customer's billing status", })
The @flux-finance is parsed and fires a wake trigger — Flux's heartbeat wakes (within 30s debounce window) and picks up the ticket.
/issues — global list with filters and search/tickets/<id> — detail view with full timeline (comments + activity + status changes)/issues: close, reopen, delete, reassign, relink_goalurgent > high > medium > low (enum with internal rank).Related: .claude/rules/tickets.md, .claude/rules/heartbeats.md, .claude/rules/goals.md.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 9,956 | 7,971 | -20% | 1 | 1 | 0% | 1,833 | 1,473 | -20% | 0 | 0 | — |
case-02 | fail→fail | 10,353 | 8,913 | -14% | 1 | 1 | 0% | 932 | 1,556 | +67% | 0 | 0 | — |
case-03 | fail→fail | 15,153 | 2,676 | -82% | 1 | 1 | 0% | 2,091 | 1,505 | -28% | 0 | 0 | — |
case-04 | pass→pass | 5,481 | 5,198 | -5% | 1 | 1 | 0% | 1,020 | 1,907 | +87% | 0 | 0 | — |
case-05 | pass→pass | 12,916 | 6,623 | -49% | 1 | 1 | 0% | 2,187 | 2,077 | -5% | 0 | 0 | — |
case-06 | fail→fail | 16,583 | 14,239 | -14% | 1 | 1 | 0% | 2,931 | 3,568 | +22% | 0 | 0 | — |
case-07 | fail→pass | 6,751 | 3,703 | -45% | 1 | 1 | 0% | 1,189 | 1,697 | +43% | 0 | 0 | — |
case-08 | fail→pass | 7,778 | 4,689 | -40% | 1 | 1 | 0% | 1,381 | 1,837 | +33% | 0 | 0 | — |
case-09 | fail→pass | 12,442 | 4,048 | -67% | 1 | 1 | 0% | 2,093 | 1,659 | -21% | 0 | 0 | — |
case-10 | fail→pass | 10,855 | 7,659 | -29% | 1 | 1 | 0% | 1,763 | 2,325 | +32% | 0 | 0 | — |
case-11 | fail→pass | 13,103 | 6,496 | -50% | 1 | 1 | 0% | 2,082 | 2,089 | +0% | 0 | 0 | — |
case-12 | fail→pass | 9,419 | 2,547 | -73% | 1 | 1 | 0% | 1,824 | 1,448 | -21% | 0 | 0 | — |
case-13 | fail→pass | 12,821 | 5,562 | -57% | 1 | 1 | 0% | 2,135 | 1,927 | -10% | 0 | 0 | — |
case-14 | fail→pass | 14,893 | 2,298 | -85% | 1 | 1 | 0% | 2,655 | 1,340 | -50% | 0 | 0 | — |
case-15 | fail→pass | 8,864 | 3,881 | -56% | 1 | 1 | 0% | 1,683 | 1,653 | -2% | 0 | 0 | — |
case-16 | fail→pass | 8,132 | 1,913 | -76% | 1 | 1 | 0% | 1,407 | 1,330 | -5% | 0 | 0 | — |
case-17 | fail→pass | 10,884 | 1,852 | -83% | 1 | 1 | 0% | 1,766 | 1,296 | -27% | 0 | 0 | — |
case-18 | pass→pass | 9,683 | 3,208 | -67% | 1 | 1 | 0% | 1,522 | 1,493 | -2% | 0 | 0 | — |
case-19 | fail→pass | 11,643 | 2,632 | -77% | 1 | 1 | 0% | 1,996 | 1,452 | -27% | 0 | 0 | — |
case-20 | fail→pass | 12,351 | 4,042 | -67% | 1 | 1 | 0% | 2,450 | 1,694 | -31% | 0 | 0 | — |
case-21 | fail→pass | 15,261 | 7,373 | -52% | 1 | 1 | 0% | 2,524 | 2,207 | -13% | 0 | 0 | — |
case-22 | fail→pass | 5,613 | 3,475 | -38% | 1 | 1 | 0% | 1,079 | 1,616 | +50% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +68 percentage points is the difference between those two pass rates over the 20 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.