Skip to main content

Approvals & Skills

Human-in-the-Loop Approvals

Approvals are a first-class primitive in Ariftly. Any agent action that affects the outside world — sending an email, creating a PR, posting to Slack — waits for human approval before executing.

How it works

  1. Agent determines an action should be taken (e.g., send outreach email)
  2. Agent emits an approval.requested event with the draft action payload
  3. Core creates an Approval record and notifies the user (dashboard + Slack)
  4. User reviews the action in the dashboard or Slack, and approves or denies
  5. Core sends POST /v1/approval/:id/resolve to the agent
  6. Agent executes (if approved) or discards (if denied)

Approval in the Dashboard

The Approvals inbox in the dashboard shows all pending approvals across all agents, sorted by recency. Each approval shows:

  • Which agent requested it
  • What action it wants to take
  • The full payload (e.g., the email body and recipients)
  • Edit and approve / deny buttons

Approvals via Slack

Configure a Slack channel as your approval channel in Settings → Channels. The agent will post the draft and you can approve/deny directly from Slack with button clicks.

Skills

Skills let you extend any agent's behavior without writing code. Describe what you want in plain English — the Skill Builder meta-agent generates the YAML, you approve it, and it's live.

Example Skill

id: sales.flag_pricing_mentions
version: 1.0.0
agent: sales-agent
triggers:
- on: session.message_received
when:
any:
- message.content.matches: "(?i)\\b(price|pricing|cost)\\b"
actions:
- type: emit_artifact
artifact_type: sales.pricing_signal
- type: notify
target: { role: "cro" }
channel: slack

Skill Hooks

Skills can attach to these agent lifecycle events:

HookWhen it fires
before_taskBefore a task starts
after_taskAfter a task completes
before_session_messageBefore the agent processes a message
after_session_messageAfter a response is generated
on_artifact_emittedWhen an artifact is created
on_approval_requestedWhen an approval is requested
on_approval_resolvedWhen an approval is granted or denied
daily_tickOnce per day (for scheduled checks)

Creating a Skill

  1. Go to Agents → [Your Agent] → Skills → New Skill
  2. Describe what you want: "Notify the sales team in Slack whenever a lead replies mentioning a competitor"
  3. The Skill Builder generates YAML
  4. Review and approve
  5. The skill is active immediately