Batch Command
Process multiple GitHub issues at once and export results as JSON or CSV. Always runs in dry-run mode — no changes are posted to GitHub.
Syntax
Options
| Option | Short | Type | Description | Default |
|---|
--file | -f | file | JSON file containing array of issues | Required |
--out-file | -o | file | Output file path (stdout if omitted) | - |
--format | | string | Output format: json or csv | json |
--workers | -w | number | Concurrent workers | 1 |
--workflow | | string | Workflow preset | issue-triage |
--collection | | string | Override Qdrant collection name | - |
--threshold | | number | Override similarity threshold | - |
--duplicate-threshold | | number | Override duplicate confidence threshold | - |
--top-k | | number | Override max similar issues to show | - |
--config | -c | file | Path to configuration file | .github/simili.yaml |
--help | -h | bool | Show help message | - |
Batch mode always runs in dry-run. No comments, labels, or transfers are posted to GitHub.
Provide a JSON file containing an array of issue objects:
[
{
"org": "my-org",
"repo": "backend",
"number": 123,
"title": "Login times out after 30 seconds",
"body": "Users are getting logged out unexpectedly...",
"state": "open",
"labels": ["bug"],
"author": "johndoe",
"created_at": "2026-02-10T10:00:00Z"
},
{
"org": "my-org",
"repo": "frontend",
"number": 456,
"title": "Button click does nothing on Safari",
"body": "The submit button has no effect in Safari 17...",
"state": "open",
"labels": [],
"author": "janedoe",
"created_at": "2026-02-11T14:30:00Z"
}
]
Required fields: org, repo, number, title
Examples
Basic JSON output
simili batch --file issues.json
CSV export
simili batch --file issues.json --format csv --out-file results.csv
Parallel processing
simili batch --file issues.json --workers 5 --out-file results.json
Override thresholds
simili batch --file issues.json \
--threshold 0.75 \
--duplicate-threshold 0.90 \
--top-k 3
Use a custom collection
simili batch --file issues.json --collection my-staging-collection
Output
JSON output
[
{
"issue": {
"org": "my-org",
"repo": "backend",
"number": 123,
"title": "Login times out after 30 seconds"
},
"similar": [
{ "number": 99, "title": "Session expires early", "score": 0.88 }
],
"duplicate_detected": true,
"duplicate_of": 99,
"duplicate_confidence": 0.91,
"quality_score": 0.72,
"suggested_labels": ["bug", "auth"],
"transfer_target": null
}
]
CSV output
The CSV format includes 20+ flattened fields including:
| Field | Description |
|---|
org | Organization |
repo | Repository |
number | Issue number |
title | Issue title |
duplicate_detected | true/false |
duplicate_of | Issue number of duplicate |
duplicate_confidence | Confidence score (0.0-1.0) |
quality_score | Quality score (0.0-1.0) |
suggested_labels | Comma-separated labels |
similar_1_number | Top similar issue number |
similar_1_score | Top similar issue score |
transfer_target | Target repo if routing suggested |
- Default 1 worker for safe rate-limit behaviour
- Increase workers to speed up large batches
- Each issue takes ~3-8 seconds depending on features enabled
Next steps