jumpserver-skills
# JumpServer Skills
只使用正式 CLI 入口:
- `python3 scripts/jumpserver_api/jms_query.py ...`
- `python3 scripts/jumpserver_api/jms_diagnose.py ...`
- `python3 scripts/jumpserver_api/jms_report.py ...`
这是查询与分析 skill。允许本地运行时写入 `config-write --confirm` 和 `select-org --confirm`。不执行 JumpServer 业务写操作。
## Route First
按下面顺序判路由。上面的规则优先于下面的规则。
1. 如果用户请求的核心对象是某一天或某一段时间内的 JumpServer 使用数据分析,优先命中 HTML 模板工作流。这包括:使用报告、日报、使用情况、使用分析、审计分析、某天发生了什么、分析 `20260310`、看下 / 看看 `3 月 10 号` 使用情况、帮我看 / 帮我看看某天登录/会话/命令/传输情况、想看上周谁登录最多、过一下 `3 月上旬` 哪些资产最活跃,以及类似的“时间范围内使用情况 / 概览 / 汇总 / 排行 / TOP”表达。
动作:优先使用 `python3 scripts/jumpserver_api/jms_report.py daily-usage ...`,并由它加载 [template/bastion-daily-usage-template.html](template/bastion-daily-usage-template.html) 和 [references/metadata/daily_usage_report_template_fields.json](references/metadata/daily_usage_report_template_fields.json);先把“昨天 / 20260310 / 3月10号 / 上周 / 本月”等时间表达归一化为明确时间窗,再生成并验证完整 HTML 报告;模板细节见 [references/report-template-playbook.md](references/report-template-playbook.md)。
2. 如果用户要配置 JumpServer、检查依赖、检查配置、检查连通性、切换组织、查看许可证、系统设置、报表、工单、存储、终端或做对象解析,先走 `jms_diagnose.py`。
动作:先预检,再用 `config-status` / `ping` / `select-org` / `inspect` / `resolve`。
3. 如果用户要看授权规则、ACL、RBAC、为什么某人能访问某资产、某条权限详情,走 `jms_query.py`。
动作:优先 `permission-list` / `permission-get` / `asset-perm-users`;必要时先用 `jms_diagnose.py` 做访问分析。
4. 如果用户要查登录、会话、终端会话、命令记录、文件传输、异常行为、高危命令、失败登录、特权账号使用审计,走 `jms_query.py`。
动作:优先 `audit-analyze --capability ...`,需要明细时再用 `audit-list` / `audit-get` / `terminal-sessions`。
5. 如果用户要查资产、节点、平台、账号、账号模板、用户、用户组、组织、标签、网域等对象,走 `jms_query.py`。
动作:只做 `object-list` / `object-get`;名称不唯一时先解析,不要猜。
6. 如果用户要做治理巡检、聚合分析、账号治理、资产治理、访问分析、系统巡检或 capability 型统计,走 `jms_diagnose.py inspect --capability ...`。
动作:优先 capability,不手工拼多条零散查询。
普通路由细节、更多命中说法和反例见 [references/routing-playbook.md](references/routing-playbook.md)。
## Template Overrides
按下面顺序处理模板例外。上面的规则优先于下面的规则。
1. 如果用户明确说“不要生成报告,直接分析”“先简单说下”“只给我结论”“不用模板”,才允许跳过模板,直接给简短分析。
2. 除上述明确例外外,只要是某一天或某一段时间的 JumpServer 使用情况 / 使用分析 / 审计分析,或者表达为某时间段的登录 / 会话 / 命令 / 传输情况、排行、TOP、谁最多,就必须先走模板工作流。
3. “分析”不等于自由文本优先。带时间范围的使用分析、情况概览或排行类问题,默认先产出完整 HTML 报告;摘要只能作为补充,不能替代报告。
## Organization Priority
按下面顺序处理组织。上面的规则优先于下面的规则。
1. 用户显式给组织:按用户指定组织执行。
2. 报告或使用分析模板请求且用户未指定组织,或明确指定“所有组织”“全局组织”:默认执行 `python3 scripts/jumpserver_api/jms_diagnose.py select-org --org-id 00000000-0000-0000-0000-000000000000 --confirm`。
3. 全局组织 `00000000-0000-0000-0000-000000000000` 的可访问性不只看候选组织列表;允许通过显式 `select-org` / 直连探测确认。
4. 如果全局组织 `00000000-0000-0000-0000-000000000000` 的直连探测或显式选择验证失败:直接阻塞并返回 `candidate_orgs`;不要回退到 `{0002}` / `{0002,0004}` 自动规则。
5. 非报告类请求且未指定组织:沿用保留组织逻辑。只有可访问组织集合恰好是 `{0002}` 或 `{0002,0004}` 时,才自动写入 `0002`。
6. 当前 `JMS_ORG_ID` 已不可访问:先重新 `select-org`,不要继续业务命令。
7. 查询类请求在未确定组织且存在多个可访问组织时:先返回 `candidate_orgs` 并要求用户选择查询组织。
8. 查询类请求在当前组织已生效且仍有其他可切换组织时:继续返回 `switchable_orgs`,提示用户还可以切换到哪些组织查询。
## Standard Flow
收到请求先做:
```text
自动检查依赖 -> config-status --json -> 必要时 config-write --confirm -> ping -> 按路由和组织优先级选择正式入口
```
执行规则:
- 配置或环境不确定时,先执行 `python3 scripts/jumpserver_api/jms_diagnose.py config-status --json`。
- `complete=false` 时,先补齐配置,再继续。
- 名称不唯一、平台不明确、对象跨组织时,先解析或阻塞,不要猜。
- 审计类问题没有 `date_from/date_to` 时,默认最近 7 天;想查更大范围时优先要求明确时间窗。
- 模板化使用报告/使用分析请求必须先走 `python3 scripts/jumpserver_api/jms_report.py daily-usage ...`;它会负责时间归一化、组织处理、字段元数据取数、模板填充和生成后自检。普通查询优先只选 1 个正式入口。
## Guardrails
- 不生成临时 SDK Python 脚本或 HTTP 脚本。
- 不猜对象 ID、平台 ID、组织、鉴权信息或筛选条件。
- 不创建、更新、删除、解锁对象,也不追加或移除权限关系。
- 权限问题只做读取和解释,不做权限写入。
- 模板化报告请求必须优先使用 `python3 scripts/jumpserver_api/jms_report.py daily-usage ...`;不要现场写临时拼装逻辑。若正式入口缺失,应先补齐正式入口,再使用它。
- 模板化报告请求只使用字段元数据里声明的来源,不用 Markdown 模板替代 HTML 模板。
- 模板化报告请求中的命令审计字段,未显式给 `command_storage_id` 时默认汇总全部可访问 command storage;普通命令审计查询仍沿用默认 storage / 单个 storage / 多 storage 阻塞逻辑。
## Respond With
成功时至少回显:
- 已走预检
- 选中的正式入口或模板路径
- `effective_org`
- `switchable_orgs`(当当前组织已生效且仍有其他可切换组织时)
- 执行命令摘要
- 普通查询:结果摘要
- 模板报告:完整 HTML 报告,且已经通过生成后自检
模板报告成功时还至少回显:
- 正式入口:`python3 scripts/jumpserver_api/jms_report.py daily-usage ...`
- 报告文件路径
- 模板路径:`template/bastion-daily-usage-template.html`
- 字段元数据路径:`references/metadata/daily_usage_report_template_fields.json`
- `queried_command_storage_ids`
- `queried_command_storage_count`
- `report_date`
- `date_from`
- `date_to`
- `validation_summary`
- 可附加简短摘要,但不得仅返回摘要替代报告
阻塞时至少回显:
- 已走预检
- `effective_org`
- 阻塞原因
- `candidate_orgs` 或 `candidate_objects`
- 下一步安全动作
## References
- [普通路由与阻塞规则](references/routing-playbook.md)
- [报告模板工作流](references/report-template-playbook.md)
- [运行入口与环境](references/runtime.md)
- [诊断与访问分析](references/diagnose.md)
- [安全规则](references/safety-rules.md)
标签
skill
ai