- This is the agent-side lifecycle skill. The OpenClaw launcher skill is separate and should be named
- preqstation-dispatch
- .
- Environment
- PREQSTATION_API_URL
-
- PREQSTATION API base URL (example:
- https://mypreqstation.vercel.app
- )
- PREQSTATION_TOKEN
-
- PREQSTATION Bearer token (generated in PREQSTATION
- /api-keys
- )
- PREQSTATION_ENGINE
- (optional): fallback engine (
- claude
- |
- codex
- |
- gemini
- ) when client auto-detection is unavailable
- Agent Identity & Engine Mapping
- Each agent must identify itself and use the corresponding
- engine
- value in
- all
- task operations (list, create, plan, start, update status, complete, review, block):
- If you are...
- Use
- engine=
- Claude (Anthropic)
- claude
- GPT / Codex (OpenAI)
- codex
- Gemini (Google)
- gemini
- Always include your
- engine
- value when listing, creating, planning, starting, completing, reviewing, or blocking tasks.
- MCP Plugin Mode (Recommended)
- If MCP is available, prefer
- scripts/preqstation-mcp-server.mjs
- tools.
- All mutation tools accept an optional
- engine
- parameter and always send an engine value using this order:
- explicit tool arg
- existing task engine (when available)
- MCP
- initialize.clientInfo.name
- auto-detection
- PREQSTATION_ENGINE
- codex
- fallback
- Tool
- engine usage
- preq_list_tasks
- Read-only, no engine needed
- preq_get_task
- Read-only, no engine needed
- preq_get_project_settings
- Read-only, no engine needed (fetch project deploy settings by key)
- preq_plan_task
- Assign
- engine
- when planning task → todo
- preq_create_task
- Assign
- engine
- to new inbox task
- preq_start_task
- Record
- engine
- starting the work → in_progress
- preq_update_task_status
- Record
- engine
- while updating status-only endpoint (
- /api/tasks/:id/status
- )
- preq_complete_task
- Record
- engine
- in work log result → review (fallback to task's existing engine)
- preq_review_task
- Record
- engine
- running verification (tests, build, lint) → done
- preq_block_task
- Record
- engine
- reporting the block → blocked
- preq_delete_task
- Permanently delete a task by ticket number or UUID
- This gives deterministic task-id based execution and result upload.
- Shell Helper Mode
- If MCP is not available, source
- scripts/preqstation-api.sh
- and use shell functions.
- All mutation helpers accept an
- engine
- parameter:
- Function
- Signature
- preq_get_tasks
- preq_get_tasks [status] [label]
- (read-only, no engine needed)
- preq_get_task
- preq_get_task
- (read-only, no engine needed)
- preq_get_project_settings
- preq_get_project_settings
- (read-only, deploy settings by key)
- preq_create_task
- preq_create_task '
' - (include
- engine
- in JSON)
- preq_patch_task
- preq_patch_task
' ' - (generic PATCH)
- preq_start_task
- preq_start_task
[engine] - preq_update_task_status
- preq_update_task_status
[engine] - (
- status
- :
- inbox
- /
- todo
- /
- in_progress
- /
- in_review
- /
- done
- /
- archived
- , supports
- review
- alias)
- preq_plan_task
- preq_plan_task
[engine] - preq_complete_task
- preq_complete_task
[engine] [pr_url] [tests] [notes] [branch_name] - preq_review_task
- preq_review_task
[engine] [test_cmd] [build_cmd] [lint_cmd] - preq_block_task
- preq_block_task
[engine] - preq_delete_task
- preq_delete_task
- preq_resolve_branch_name
- preq_resolve_branch_name
[fallback_branch] - Requires
- jq
- for JSON construction in plan/complete/review/block helpers.
- For curl examples, see
- docs/curl-examples.md
- .
- Deployment Strategy Contract (required)
- Before any git action, resolve deployment strategy through MCP:
- Call
- preq_get_task
- .
- Read
- task.deploy_strategy
- from the response.
- If missing, call
- preq_get_project_settings
- and resolve from:
- settings.deploy_strategy
- settings.deploy_default_branch
- settings.deploy_auto_pr
- settings.deploy_commit_on_review
- settings.deploy_squash_merge
- Expected values from PREQSTATION backend:
- strategy
- :
- direct_commit
- |
- feature_branch
- |
- none
- default_branch
-
- string (usually
- main
- )
- auto_pr
-
- boolean (feature_branch only)
- commit_on_review
-
- boolean
- squash_merge
-
- boolean (direct_commit only)
- Default when absent/invalid:
- strategy=none
- default_branch=main
- auto_pr=false
- commit_on_review=true
- squash_merge=true
- Behavior by
- strategy
- :
- none
-
- do not run git commit/push/PR. Only code changes + task update result.
- direct_commit
- merge worktree commits into default_branch and push. No PR. After completing work in the worktree:
In primary checkout: update and merge
git -C < project_cwd
checkout < default_branch
git -C < project_cwd
pull origin < default_branch
squash_merge=true (default): single commit
git -C < project_cwd
merge --squash < worktree_branch
git -C < project_cwd
commit -m "
: "
squash_merge=false: regular merge
git -C < project_cwd
merge < worktree_branch
Push to remote
- git
- -C
- <
- project_cwd
- >
- push origin
- <
- default_branch
- >
- feature_branch
- push worktree branch to remote. Create PR only when
auto_pr=true
(requires GitHub MCP on the agent).
git
-C
<
project_cwd
push origin < worktree_branch
if auto_pr=true: create PR via GitHub MCP or gh CLI
Rule for commit_on_review : if true and strategy is direct_commit or feature_branch , do not move task to review until remote push is verified. if false , review transition is allowed without mandatory remote push. Execution Flow Call preq_get_task once at the start to fetch task details, acceptance criteria, and the initial status. Resolve the initial status once and execute exactly one matching branch below. Do not chain lifecycle branches in a single run. inbox — plan only: Read local code and prepare the implementation plan. Call preq_plan_task with plan markdown and acceptance criteria. Stop after backend moves the task to todo . Do not implement. todo — start and execute: Call preq_start_task immediately, before code changes or tests, so the task is marked in_progress for the user. Implement code changes and run task-level tests. Resolve deploy strategy via the Deployment Strategy Contract. Perform the required git/deploy steps for direct_commit , feature_branch , or none . Call preq_complete_task with summary, branch, and pr_url when applicable. Stop after backend moves the task to review . Do not call preq_review_task in the same run. in_progress — continue execution: Do not call preq_start_task again. Continue implementation and run task-level tests. Resolve deploy strategy via the Deployment Strategy Contract. Perform the required git/deploy steps for direct_commit , feature_branch , or none . Call preq_complete_task with summary, branch, and pr_url when applicable. Stop after backend moves the task to review . Do not call preq_review_task in the same run. review — verification only: Run verification ( tests , build , lint ). Call preq_review_task on success. Stop after backend moves the task to done . On any failure in an active branch, call preq_block_task with the blocking reason and stop. preq_plan_task , preq_start_task , preq_complete_task , preq_review_task , and preq_block_task are semantic lifecycle actions. Backend owns the actual status transition and must validate the current status for each action. preq_update_task_status is an escape hatch for manual operations, not part of the normal lifecycle flow. preq_complete_task must be used only after the task is in in_progress . preq_review_task must be used only after the task is in review (i.e. after preq_complete_task ). Inbox → Todo Plan Flow User adds short task card to Inbox (optionally specifying engine ). Agent loads candidate tasks with preq_list_tasks (use projectKey + status=inbox + own engine filter). Agent reads local source code and generates implementation plan. Agent calls preq_plan_task with projectKey , taskId , planMarkdown , engine , and optional acceptanceCriteria . Backend uploads plan to task description and moves the card to status=todo .