Files
devclaw-gitea/docs/ONBOARDING.md
Lauren ten Hoor 8a79755e4c feat: Implement GitLabProvider for issue management using glab CLI
- Add GitLabProvider class for handling issue operations, label management, and MR checks.
- Implement methods for ensuring labels, creating issues, listing issues by label, and transitioning labels.
- Introduce a provider factory to auto-detect GitLab or GitHub based on the repository URL.
- Create project registration tool to validate repositories, create state labels, and log project entries.
- Enhance queue status and session health tools to support new session management features.
- Update task completion and task creation tools to support auto-chaining and improved session handling.
- Refactor task pickup tool to streamline model selection and session management.
2026-02-09 12:54:50 +08:00

6.2 KiB

DevClaw — Onboarding Guide

What you need before starting

Requirement Why How to check
OpenClaw installed DevClaw is an OpenClaw plugin openclaw --version
Node.js >= 20 Runtime for plugin node --version
glab or gh CLI Issue tracker provider (auto-detected from remote) glab --version or gh --version
CLI authenticated Plugin calls glab/gh for every label transition glab auth status or gh auth status
A GitLab/GitHub repo with issues The task backlog lives in the issue tracker glab issue list or gh issue list from your repo
An OpenClaw agent with Telegram The orchestrator agent that will manage projects Agent defined in openclaw.json

Setup steps

1. Install the plugin

# Copy to extensions directory (auto-discovered on next restart)
cp -r devclaw ~/.openclaw/extensions/

Verify:

openclaw plugins list
# Should show: DevClaw | devclaw | loaded

2. Configure your orchestrator agent

In openclaw.json, your orchestrator agent needs access to the DevClaw tools:

{
  "agents": {
    "list": [{
      "id": "my-orchestrator",
      "name": "Dev Orchestrator",
      "model": "anthropic/claude-sonnet-4-5",
      "tools": {
        "allow": [
          "task_pickup",
          "task_complete",
          "task_create",
          "queue_status",
          "session_health",
          "project_register"
        ]
      }
    }]
  }
}

The agent needs the six DevClaw tools. Session management (sessions_spawn, sessions_send) is not needed — the plugin handles session creation and task dispatch internally via OpenClaw CLI. Workers (DEV/QA sub-agent sessions) also use task_complete and task_create directly for atomic self-reporting.

3. Register your project

Tell the orchestrator agent to register a new project:

"Register project my-project at ~/git/my-project for group -1234567890 with base branch development"

The agent calls project_register, which atomically:

  • Validates the repo and auto-detects GitHub/GitLab from remote
  • Creates all 8 state labels (idempotent)
  • Scaffolds role instruction files (roles/<project>/dev.md and qa.md)
  • Adds the project entry to projects.json with autoChain: false
  • Logs the registration event
{
  "projects": {
    "-1234567890": {
      "name": "my-project",
      "repo": "~/git/my-project",
      "groupName": "Dev - My Project",
      "deployUrl": "",
      "baseBranch": "development",
      "deployBranch": "development",
      "autoChain": false,
      "dev": {
        "active": false,
        "issueId": null,
        "startTime": null,
        "model": null,
        "sessions": { "haiku": null, "sonnet": null, "opus": null }
      },
      "qa": {
        "active": false,
        "issueId": null,
        "startTime": null,
        "model": null,
        "sessions": { "grok": null }
      }
    }
  }
}

Manual fallback: If you prefer CLI control, you can still create labels manually with glab label create and edit projects.json directly. See the Architecture docs for label names and colors.

Finding the Telegram group ID: The group ID is the numeric ID of your Telegram supergroup (a negative number like -1234567890). You can find it via the Telegram bot API or from message metadata in OpenClaw logs.

4. Add the agent to the Telegram group

Add your orchestrator bot to the Telegram group for the project. The agent will now receive messages from this group and can operate on the linked project.

5. Create your first issue

Issues can be created in multiple ways:

  • Via the agent — Ask the orchestrator in the Telegram group: "Create an issue for adding a login page" (uses task_create)
  • Via workers — DEV/QA workers can call task_create to file follow-up bugs they discover
  • Via CLIcd ~/git/my-project && glab issue create --title "My first task" --label "To Do" (or gh issue create)
  • Via web UI — Create an issue and add the "To Do" label

6. Test the pipeline

Ask the agent in the Telegram group:

"Check the queue status"

The agent should call queue_status and report the "To Do" issue. Then:

"Pick up issue #1 for DEV"

The agent calls task_pickup, which selects a model, transitions the label to "Doing", creates or reuses a worker session, and dispatches the task — all in one call. The agent just posts the announcement.

Adding more projects

Tell the agent to register a new project (step 3) and add the bot to the new Telegram group (step 4). That's it — project_register handles labels and state setup.

Each project is fully isolated — separate queue, separate workers, separate state.

What the plugin handles vs. what you handle

Responsibility Who Details
Label setup Plugin (project_register) 8 labels, created idempotently via IssueProvider
Role file scaffolding Plugin (project_register) Creates roles/<project>/dev.md and qa.md from defaults
Project registration Plugin (project_register) Entry in projects.json with empty worker state
Agent definition You (once) Agent in openclaw.json with tool permissions
Telegram group setup You (once per project) Add bot to group
Issue creation Plugin (task_create) Orchestrator or workers create issues from chat
Label transitions Plugin Atomic label transitions via issue tracker CLI
Model selection Plugin LLM-selected by orchestrator, keyword heuristic fallback
State management Plugin Atomic read/write to projects.json
Session management Plugin Creates, reuses, and dispatches to sessions via CLI. Agent never touches session tools.
Task completion Plugin (task_complete) Workers self-report. Auto-chains if enabled.
Role instructions Plugin (task_pickup) Loaded from roles/<project>/<role>.md, appended to task message
Audit logging Plugin Automatic NDJSON append per tool call
Zombie detection Plugin session_health checks active vs alive
Queue scanning Plugin queue_status queries issue tracker per project