Skip to content
Back to skills

Batch Ops

ASecurity

dart-query batch operations - execute_dartql (recommended), batch update/delete, DartQL SQL-92 syntax, CSV import, safety protocols. 批量操作:execute_dartql(推薦)、批量更刪、DartQL語法、CSV導入、安全協議. Use when: bulk update tasks, batch delete, run DartQL query, import tasks from CSV, execute dartql statement, batch status change

  • 4 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 12, 2026
testingsql

Works with

  • mcp

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add aibot88/sec_skill_store --skill batch-ops --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Batch Ops?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Batch Ops
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aibot88-batch-ops/badge)](https://www.skillsdirectory.com/skills/aibot88-batch-ops)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: dart-query-batch-ops
description: "dart-query batch operations - execute_dartql (recommended), batch update/delete, DartQL SQL-92 syntax, CSV import, safety protocols. 批量操作:execute_dartql(推薦)、批量更刪、DartQL語法、CSV導入、安全協議. Use when: bulk update tasks, batch delete, run DartQL query, import tasks from CSV, execute dartql statement, batch status change"
disable-model-invocation: true
---

# dart-query Batch Operations

任務批量操作:執行DartQL語句、批量更新/刪除、CSV導入。

## Access Pattern (all examples below use this)

```yaml
tool: mcp__plugin_slop-mcp_slop-mcp__execute_tool
params:
  mcp_name: "dart-query"
  tool_name: "<tool-name>"
  parameters: { ... }
```

---

## Safety Protocol — MANDATORY

```yaml
NEVER_SKIP:
  1: "ALWAYS dry_run: true first"
  2: "Review matched tasks before executing"
  3: "batch_delete requires confirm: true"
  4: "CSV import requires validate_only: true first"
```

---

## DartQL Selector Syntax

DartQL採標準**SQL-92 WHERE子句語法**。知SQL即知DartQL。

**Operators:** `=`, `!=`, `<>`, `>`, `>=`, `<`, `<=`, `AND`, `OR`, `NOT`, `LIKE` (with `%` and `_` wildcards), `IN`, `NOT IN`, `BETWEEN`, `IS NULL`, `IS NOT NULL`, `CONTAINS` (aliases: `INCLUDES`, `HAS`), parentheses for grouping. Strings use single quotes.

**Available fields:**
```yaml
text:     title, description, status, dartboard, assignee  # singular in WHERE, maps to assignees array
string:   priority, size  # string values from get_config (e.g. "Critical", "High")
date:     due_at, start_at, created_at, updated_at, completed_at  # ISO8601
id:       parent_task, dart_id  # use IS NULL / IS NOT NULL
array:    tags, subtask_ids, blocker_ids, blocking_ids, duplicate_ids, related_ids
```

> **注意:** 狀態與優先級名稱因工作區而異。用`get_config`發現工作區實際值。下列示例使用常見默認值——你的可能不同(如「To-do」vs「Todo」,「Doing」vs「In Progress」)。

**Examples:**
```sql
status = 'To-do' AND priority >= 4
status IN ('To-do', 'Doing') AND dartboard = 'Sprint 5'
title LIKE '%authentication%'
due_at BETWEEN '2026-02-15' AND '2026-02-28'
tags CONTAINS 'urgent' AND assignee IS NOT NULL
```

---

## execute_dartql — Recommended

批量操作首選工具。支持帶SQL-92 WHERE子句之UPDATE與DELETE。

**Features:**
- Template variables: `SET title = 'DONE: {title}'` — 按任務字段值插值
- Inline COMMENT: `UPDATE WHERE ... SET ... COMMENT 'reason'` — 對每個匹配任務添加注釋
- Multi-statement: chain operations with `;` separator
- Array literals: `SET blocker_ids = ['id1', 'id2']`

**Parameters:**
- `query` (string, required) — DartQL statement(s)
- `dry_run` (boolean, default `true`) — 預覽匹配而不修改
- `concurrency` (integer, default `5`, range `1-20`)

**Example — simple status update (always dry_run first):**
```yaml
tool_name: execute_dartql
parameters:
  query: "UPDATE WHERE status = 'Todo' AND priority >= 4 SET status = 'In Progress'"
  dry_run: true
```

**Example — template variable (prefix title per task):**
```yaml
tool_name: execute_dartql
parameters:
  query: "UPDATE WHERE dartboard = 'Sprint 5' AND status = 'Done' SET title = 'DONE: {title}' COMMENT 'Sprint completed'"
  dry_run: false
  concurrency: 10
```

**Example — multi-statement (update then delete):**
```yaml
tool_name: execute_dartql
parameters:
  query: "UPDATE WHERE status = 'In Progress' SET priority = 3; DELETE WHERE status = 'Done' AND updated_at < '2026-01-01' CONFIRM;"
  dry_run: true
```

**Example — use as query tool (dry_run returns matches without modifying):**
```yaml
tool_name: execute_dartql
parameters:
  query: "UPDATE WHERE tags CONTAINS 'urgent' AND assignee IS NULL SET status = 'Todo'"
  dry_run: true
```

---

## batch_update_tasks — Deprecated (use execute_dartql)

仍可用,但新工作流首選`execute_dartql`。

**Parameters:**
- `selector` (string) — DartQL WHERE clause
- `updates` (object) — fields to update (same fields as `update_task`)
- `dry_run` (boolean, default `true`)
- `concurrency` (integer)

關係數組(`blocker_ids`、`subtask_ids`等)採**完全替換語義**——設`[]`以清空。

**Example:**
```yaml
tool_name: batch_update_tasks
parameters:
  selector: "status = 'Todo' AND dartboard = 'Backlog'"
  updates:
    priority: 3
    tags: ["needs-triage"]
  dry_run: true
```

---

## batch_delete_tasks — Deprecated (use execute_dartql)

額外安全:`dry_run: false`時需`confirm: true`。

**Parameters:**
- `selector` (string) — DartQL WHERE clause
- `dry_run` (boolean, default `true`)
- `confirm` (boolean) — **REQUIRED** when `dry_run: false`
- `concurrency` (integer)

**Example:**
```yaml
tool_name: batch_delete_tasks
parameters:
  selector: "status = 'Done' AND completed_at < '2025-12-01'"
  dry_run: false
  confirm: true
  concurrency: 5
```

---

## get_batch_status

查詢運行中或已完成批量操作之狀態。

**Parameters:**
- `batch_operation_id` (string) — returned in the response from any batch operation

操作完成後在內存中保留**1小時**。

**Example:**
```yaml
tool_name: get_batch_status
parameters:
  batch_operation_id: "batch_abc123"
```

---

## import_tasks_csv

從CSV批量創建任務。導入前必須驗證。

**Parameters:**
- `dartboard` (string, required) — target dartboard dart_id or name
- `csv_data` (string) — inline CSV content
- `csv_file_path` (string) — path to CSV file (one of `csv_data` or `csv_file_path` required)
- `column_mapping` (object) — map CSV headers to task fields
- `validate_only` (boolean, default `true`) — 解析驗證但不創建任務
- `continue_on_error` (boolean, default `true`) — 跳過無效行繼續
- `concurrency` (integer)

**Workflow:** `validate_only: true` → 審閱報告 → 設`validate_only: false`執行。

**Standard CSV format** (headers match task field names directly):
```csv
title,status,priority,assignee,due_at
"Fix login bug",Todo,2,user@example.com,2026-05-01
"Update docs",Todo,4,,
```

**Custom column mapping** (when CSV headers differ from field names):
```yaml
column_mapping:
  "Task Name": title
  "Owner": assignee
  "Due Date": due_at
  "Urgency": priority
```

**Example — inline CSV with validation:**
```yaml
tool_name: import_tasks_csv
parameters:
  dartboard: "Sprint 6"
  csv_data: |
    title,status,priority,due_at
    "Implement OAuth",Todo,2,2026-05-15
    "Write unit tests",Todo,3,2026-05-20
  validate_only: true
```

**Example — file import with custom mapping:**
```yaml
tool_name: import_tasks_csv
parameters:
  dartboard: "Backlog"
  csv_file_path: "/tmp/tasks-export.csv"
  column_mapping:
    "Task Name": title
    "Priority Level": priority
    "Assigned To": assignee
  validate_only: false
  continue_on_error: true
  concurrency: 8
```

---

## Concurrency Tuning

默認`5`對大多數操作安全。

- **1-2** — 關係字段(`blocker_ids`、`subtask_ids`)、有副作用之狀態轉換
- **5** (default) — 混合字段更新
- **10-20** — 大批量(100+任務)之簡單字段更新(`priority`、`title`)

Files in this skill

  • SKILL.md7 KB
  • source.json865 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.