Batch logo

Batch

OrganizationPopular
QwenLM
batch

Execute batch operations on multiple files in parallel. Automatically discovers files, splits into chunks, and processes with parallel worker agents. Use `/batch` followed by operation and file pattern.

Overview

PublisherQwenLM
Repositoryqwen-code
Skill namebatch
Stars
27.9K
Forks
3.1K
Bundled files
Instructions only
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by QwenLM on GitHub. Read the source before you install it.

Installation

Install the Batch AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/QwenLM/qwen-code.git /tmp/qwen-code
mkdir -p .claude/skills
cp -r /tmp/qwen-code/packages/core/src/skills/bundled/batch .claude/skills/batch
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Batch in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Batch on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Batch is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

/batch - Parallel Batch Operations

You are orchestrating a batch operation across multiple files. Your job is to:

  1. Parse the user's request to understand the target files and operation
  2. Discover matching files using glob
  3. Split files into chunks for parallel processing
  4. Launch multiple worker agents to process files concurrently
  5. Aggregate results and present a summary

Step 1: Parse Intent and Discover Files

First, parse the user's request to identify:

  • Target pattern: glob pattern for files (e.g., src/**/*.ts, **/*.js)
  • Operation: what to do with each file (e.g., "add JSDoc comments", "convert to TypeScript")

If the user didn't specify a pattern, infer it from context or ask for clarification.

Use the glob tool to discover matching files.

If no files match the pattern:

  • Inform the user that no files were found for the given pattern
  • Suggest checking the pattern or broadening the search scope
  • Do not proceed with an empty batch

Apply these common exclusions automatically:

  • node_modules/**
  • dist/**
  • build/**
  • .git/**
  • **/*.test.ts, **/*.test.js
  • **/*.spec.ts, **/*.spec.js
  • **/__tests__/**
  • **/test/**, **/tests/**
  • **/package-lock.json
  • **/yarn.lock
  • **/*.min.js
  • Binary files (images, fonts, etc.)
  • Files larger than 500KB (check size if needed)

Important: If more than 50 files match, inform the user with the exact count and the file list, then proceed. The user can cancel (Ctrl+C) if needed. If the count exceeds 100 files, warn the user and suggest a more specific pattern instead of proceeding.

Step 2: Chunk Files for Parallel Processing

Split the discovered files into chunks based on these rules:

Total FilesChunk CountFiles Per Chunk
1-51All files
6-1523-8 each
16-303~10 each
31-504~10-12 each
51-755~10-15 each
76-1005~15-20 each

Chunking algorithm:

  • Minimum chunk size: 3 files (avoid over-parallelization for small batches)
  • Maximum chunk size: 15 files (ensure reasonable work per agent)
  • Maximum parallel agents: 5 (API rate limit consideration)

Example: 24 files → 3 chunks of ~8 files each

Step 3: Launch Parallel Worker Agents

Launch worker agents in parallel by invoking the task tool (the Agent tool) multiple times in a SINGLE message.

Note: The task tool in allowedTools is the Agent tool used to spawn worker agents.

Each worker agent should receive:

  • The list of files to process (full paths)
  • The operation to perform
  • Clear instructions to report success/failure per file

Use the general-purpose subagent type for workers.

CRITICAL: All Agent tool calls MUST be in a single response to enable parallel execution. The system automatically runs multiple Agent calls concurrently.

Agent Prompt Template

For each chunk, use this prompt format:

You are a worker agent processing a batch of files.

**Operation**: [describe the operation, e.g., "Add JSDoc comments to all exported functions"]

**Files to process**:
- [file1.ts]
- [file2.ts]
- ...

**Instructions**:
1. Process each file independently
2. For each file, report one of:
   - SUCCESS: [file path] - [brief description of change]
   - FAILED: [file path] - [reason for failure]
   - SKIPPED: [file path] - [reason for skipping]
3. If a file fails or is skipped, continue with the next file - do not abort
4. At the end, provide a summary of what was done

**Constraints**:
- Do not modify test files unless explicitly requested
- Preserve existing code style and formatting
- Make minimal necessary changes to accomplish the operation

Example Invocation Pattern

Set run_in_background: false on every worker call so all results return inline for aggregation in Step 4.

<Agent tool call 1>
description: "Process batch chunk 1/3"
prompt: "You are a worker agent... [full prompt as above]"
subagent_type: "general-purpose"
run_in_background: false
</Agent tool call 1>

<Agent tool call 2>
description: "Process batch chunk 2/3"
prompt: "You are a worker agent... [full prompt as above]"
subagent_type: "general-purpose"
run_in_background: false
</Agent tool call 2>

<Agent tool call 3>
description: "Process batch chunk 3/3"
prompt: "You are a worker agent... [full prompt as above]"
subagent_type: "general-purpose"
run_in_background: false
</Agent tool call 3>

Step 4: Aggregate Results

After all worker agents complete, aggregate their results into a clear summary.

Output Format

markdown
### Batch Operation Complete

**Operation**: [description of what was done]
**Files discovered**: [total count]
**Chunks processed**: [number of parallel agents]
**Total time**: [duration if tracked]

| Status  | Count |
| ------- | ----- |
| Success | [N]   |
| Failed  | [N]   |
| Skipped | [N]   |

**Successful files**:

- [file1.ts] - [brief description]
- [file2.ts] - [brief description]
  ...

**Failed files** (if any):

- [file.ts]: [reason for failure]

**Skipped files** (if any):

- [file.ts]: [reason for skipping]

Handling Partial Failures

If some files failed but others succeeded:

  • Clearly report which files succeeded
  • List failures with specific reasons
  • Suggest follow-up actions if appropriate

If all files failed:

  • Report the common failure pattern
  • Suggest potential fixes

Step 5: Error Handling

During Batch Processing

  1. Single file failure: Don't abort the batch. The worker agent records the error and continues.
  2. Agent failure: If a worker agent fails completely (timeout, crash), note the chunk as failed with reason.
  3. User cancellation: If the user sends Ctrl+C, the system will cancel all pending agents gracefully.

Error Reporting

For each failed file, include:

  • File path
  • Specific error message or reason
  • Suggested fix if obvious

Usage Examples

Example 1: Add License Headers

/batch Add Apache 2.0 license header to all .ts files in src/

Flow:

  1. glob src/**/*.ts → find 45 files
  2. Split into 4 chunks
  3. Launch 4 parallel agents
  4. Each agent adds the license header to its assigned files
  5. Summary: 45 files processed, 45 succeeded, 0 failed

Example 2: Convert JavaScript to TypeScript

/batch Convert all .js files in utils/ to TypeScript

Flow:

  1. glob utils/**/*.js → find 12 files
  2. Split into 2 chunks
  3. Launch 2 parallel agents
  4. Each agent converts files and renames to .ts
  5. Summary: 12 files processed, 10 succeeded, 2 failed (complex dynamic patterns)

Example 3: Fix Lint Errors

/batch Fix all @typescript-eslint/no-explicit-any errors in src/

Flow:

  1. Use grep_search to find files containing : any pattern in src/
  2. Filter to relevant files
  3. Split into chunks and launch parallel agents
  4. Each agent fixes the specific lint issue (replace any with proper types)
  5. Summary: 8 files fixed

Constraints and Limits

ConstraintValueReason
Max files per batch100Prevent resource exhaustion
Max parallel agents5API rate limit consideration
Min files per agent3Avoid over-parallelization
Max files per agent15Ensure meaningful work
File size limit500KBAvoid context overflow

Dry-Run Mode

If the user wants to preview what will be changed without actually modifying files (e.g., "preview", "show me what would change", "dry run"):

  1. Discover and list all matching files with counts
  2. Show the planned operation for each file
  3. Display the chunking strategy
  4. Ask the user if they want to proceed with the actual changes
  5. If user confirms, execute the batch operation

Example:

/batch preview adding JSDoc comments to src/**/*.ts

Expected output:

### Dry-Run Preview

**Operation**: Add JSDoc comments to all .ts files in src/

**Files discovered**: 24 files

**Chunking plan**:
| Chunk | Files |
|-------|-------|
| 1     | src/utils/a.ts, b.ts, c.ts, ... (8 files) |
| 2     | src/components/x.ts, y.ts, ... (8 files) |
| 3     | src/services/m.ts, n.ts, ... (8 files) |

**Planned operation per file**:
- Add JSDoc comments to all exported functions
- Preserve existing code style

Proceed? (y/n)

Frequently asked questions

What does the Batch AI skill do?

Execute batch operations on multiple files in parallel. Automatically discovers files, splits into chunks, and processes with parallel worker agents. Use `/batch` followed by operation and file pattern.

Why use Batch on TypingMind?

Because you install it once and use it with any model. Batch is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Batch in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/QwenLM/qwen-code/tree/main/packages/core/src/skills/bundled/batch. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Batch?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Batch?

As many as you like. As long as a model supports skills, you can use Batch with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Batch AI skill free?

Yes. It is published on GitHub by QwenLM under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇