R

redmine-cli

by @diskd-aiv
4.0(20)

通过Redmine REST API自动化管理Redmine问题和工单,实现终端快速创建、编辑与查看,提高效率。

redminecliissue-trackingproject-managementautomationGitHub
安装方式
git clone https://github.com/diskd-ai/redmine-cli.git
compare_arrows

Before / After 效果对比

1
使用前

在网页界面中手动点击、填写表单来创建、查看和更新 Redmine 问题,操作流程繁琐,尤其在需要批量处理或快速查询时效率低下。

使用后

通过命令行工具,用户可以直接在终端快速执行 Redmine 操作,如创建、编辑、评论问题,实现自动化脚本,显著提升问题管理和日常工作效率。

SKILL.md

Redmine CLI

Use the bundled scripts/redmine_cli.py (no external dependencies) to interact with Redmine from the terminal. It reads auth/config from ~/.red/config.json (and optionally ./.red/config.json as an override).

Quick start

  1. Create a Redmine API key (Redmine UI: My account -> API access key).
  2. Create ~/.red/config.json (v1 / single-instance format):
{
  "api-key": "YOUR_API_KEY",
  "editor": "",
  "pager": "",
  "project": "",
  "project-id": 0,
  "server": "https://redmine.example.com",
  "user-id": 0
}
  1. Verify connectivity:
python scripts/redmine_cli.py project list --json | head

Multi-instance (--rid) (optional)

If your ~/.red/config.json uses a v2 / multi-server structure (like the reference red-cli), select a server with --rid:

python scripts/redmine_cli.py issue list --rid prod
python scripts/redmine_cli.py issue list --rid 1

Common tasks

List projects (default output is TSV; use --json for automation):

python scripts/redmine_cli.py project list
python scripts/redmine_cli.py project list --json

List issues (uses project-id from config unless --all or issue list all):

python scripts/redmine_cli.py issue list
python scripts/redmine_cli.py issue list --json --limit 10 --page 1
python scripts/redmine_cli.py issue list --query "login fails" --status_id 1 --sort priority
python scripts/redmine_cli.py issue list --issue-urls
python scripts/redmine_cli.py issue list --project   # include project column in output

List available projects, trackers, statuses, and priorities (useful before creating issues):

python scripts/redmine_cli.py issue meta

Create an issue (defaults to "Task" tracker; use --tracker to override by name):

python scripts/redmine_cli.py issue create --project-id 1 --subject "New feature request" --json
python scripts/redmine_cli.py issue create --subject "Bug fix" --description "Details here" --json
python scripts/redmine_cli.py issue create --subject "Subtask" --parent-id 123 --json
python scripts/redmine_cli.py issue create --subject "A bug" --tracker Bug --priority-id 3 --json

Get an issue:

python scripts/redmine_cli.py issue view 12345
python scripts/redmine_cli.py issue view 12345 --journals

List all issues across projects:

python scripts/redmine_cli.py issue list all
python scripts/redmine_cli.py issue list --all

List only issues assigned to the current user:

python scripts/redmine_cli.py issue list me

Add a journal note to an issue:

python scripts/redmine_cli.py issue note 12345 -m "Fixed in commit abc123"
python scripts/redmine_cli.py issue note 12345 -m "Customer-visible" --private
python scripts/redmine_cli.py issue note 12345 --message-file ./notes.md
python scripts/redmine_cli.py issue note 12345 --message-file - < ./notes.md

Edit issue fields (subject, description, status, priority, tracker, parent, assigned-to):

python scripts/redmine_cli.py issue edit 12345 --description "New description"
python scripts/redmine_cli.py issue edit 12345 --description-file ./description.md
python scripts/redmine_cli.py issue edit 12345 --subject "Renamed" --status-id 2
python scripts/redmine_cli.py issue edit 12345 --parent-id 100       # make it a subtask
python scripts/redmine_cli.py issue edit 12345 --assigned-to-id 5 --priority-id 3

Manage issue relations (relates, blocks, duplicates, precedes, follows):

python scripts/redmine_cli.py issue relate add 12345 67890                    # relates (default)
python scripts/redmine_cli.py issue relate add 12345 67890 --type blocks      # 12345 blocks 67890
python scripts/redmine_cli.py issue relate list 12345                          # list relations
python scripts/redmine_cli.py issue relate list 12345 --json
python scripts/redmine_cli.py issue relate remove 42                           # delete by relation id

Update/remove an existing comment (journal):

  1. Find the journal id in issue view --journals output: issue.journals[].id
  2. Update or remove:
python scripts/redmine_cli.py issue comment update 5993 -m "Updated comment text"
python scripts/redmine_cli.py issue comment update 5993 --message-file ./comment.md
python scripts/redmine_cli.py issue comment remove 5993

Show current user info:

python scripts/redmine_cli.py user me

Troubleshooting

  • HTTP 401/403: API key missing/invalid, REST API disabled, or insufficient permissions.
  • HTTP 404: wrong base URL (ensure it is the Redmine root, not a sub-path like /projects).
  • Config not found: ensure ~/.red/config.json exists and is valid JSON.

References

  • Redmine REST API notes (endpoints, payloads, filters): references/rest-api.md

用户评价 (0)

发表评价

效果
易用性
文档
兼容性

暂无评价

统计数据

安装量1
评分4.0 / 5.0
版本
更新日期2026年5月20日
对比案例1 组

用户评分

4.0(20)
5
10%
4
40%
3
40%
2
10%
1
0%

为此 Skill 评分

0.0

兼容平台

🔧Manual

时间线

创建2026年4月9日
最后更新2026年5月20日