Skip to content

Feature request: Task management hooks for external integrations (GitHub Issues, Jira, etc.) #1

@laird

Description

@laird

Summary

Add hooks for task lifecycle events and a task creation API/CLI, enabling Riptide to integrate with any external task management system — GitHub Issues, Jira, Asana, Shortcut, etc. — not just Linear.

Motivation

Riptide's Linear integration is great, but teams use many different task trackers. Rather than building one-off integrations for each, exposing hooks and a task creation mechanism would let users (and plugin authors) bridge any system into the RPI workflow.

The autocoder pattern (laird/agents) already solves autonomous GH issue resolution with Claude Code, but Riptide's RPI workflow (research → plan → implement) adds significant value for complex issues. Generic hooks would let anyone combine these strengths regardless of their task tracker.

What I tried

  1. Scripted artifact creation — wrote sync-gh-issues.sh to fetch open GH issues via gh issue list, create artifact directories under ~/.humanlayer/riptide/artifacts/, write ticket.md files, and create symlinks in .humanlayer/tasks/. The directories were created but Riptide doesn't recognize them as tasks because tasks are managed server-side through cloud.codelayer.cloud.

  2. Looked for a local API — the daemon (riptided) only has outbound connections to the cloud backend and Unix sockets to the Tauri UI. No local API to create tasks programmatically.

Proposed: Two Complementary Features

1. Task Creation API/CLI (inbound)

Allow external tools to create Riptide tasks programmatically:

# CLI
riptide task create --title "Fix login bug" --body "Details..." --project /path/to/repo

# Or a local API the daemon exposes
curl -X POST http://localhost:PORT/tasks \
  -d '{"title": "Fix login bug", "body": "...", "project": "/path/to/repo"}'

This unblocks any integration: a cron job syncing Jira tickets, a GH webhook creating tasks, a Slack bot dispatching work, etc.

2. Task Lifecycle Hooks (outbound)

Fire hooks when task status changes, similar to Claude Code's existing hook system:

{
  "hooks": {
    "TaskStatusChange": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "bash scripts/on-task-status-change.sh"
          }
        ]
      }
    ]
  }
}

Hook script receives JSON on stdin:

{
  "task_id": "019cbbe0-859b-7770-9d8f-75f9d781a600",
  "task_slug": "fix-login-bug",
  "old_status": "in_progress",
  "new_status": "completed",
  "artifact_dir": "/path/to/artifacts"
}

Together these enable full bidirectional sync with anything:

System Inbound (→ Riptide) Outbound (Riptide →)
GitHub Issues gh issue listriptide task create Hook → gh issue comment/close
Jira Jira API → riptide task create Hook → Jira API transition
Slack Slash command → riptide task create Hook → Slack message
Custom Any script Any script

Use Cases

  1. GitHub Issues → RPI workflow — issues get structured research/planning instead of ad-hoc fixes
  2. Jira/Asana sync — enterprise teams keep their existing tracker, get Riptide's RPI workflow
  3. Status writeback — close external tickets, post comments, update labels when work completes
  4. CI triggers — kick off deployments when tasks complete
  5. Notifications — Slack/email/webhook on status changes
  6. Plugin ecosystem — community can build integrations without Riptide core changes

Environment

  • Riptide plugin: rpi 0.13.1
  • Platform: macOS (Darwin 25.2.0)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions