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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions