关于 bootstrap-system-context
bootstrap-system-context 会探测 SAP 系统,并将系统标识、组件、功能可用性、RAP 约束和当前 lint 预设写入本地文件。它适用于不熟悉或升级后的系统,为后续编码提供具体环境信息;不会读取源代码或更改系统配置。
主要功能
- 01读取系统标识和已安装组件
- 02探测功能可用性
- 03整理 RAP 约束摘要
- 04记录当前 lint 预设和 ABAP 方言
- 05将结果写入 system-info.md
适用场景
- 01在不熟悉的 SAP 系统上开始编码前做准备
- 02系统升级后刷新环境信息
- 03开发前检查 RAP 和 UI5 是否可用
- 04为后续技能提供系统约束
MCP 相关
该技能使用 ARC-1 MCP 工具读取系统及组件信息、探测功能并获取 lint 规则。这些操作均为只读;结果会写入本地 Markdown 文件。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ arc-mcp/ arc-1 --skill bootstrap-system-context安装后在 Claude Code 中输入/bootstrap-system-context确认已加载。
详细介绍
引导系统上下文
在开始任何编码工作之前,先让助手了解目标 SAP 系统。生成本地 system-info.md 文件,记录 SID、发行版本、已安装组件、检测到的功能、与 RAP 相关的限制,以及 ARC-1 当前启用的 lint 预设,避免后续提示词对这些限制进行猜测。
在针对不熟悉的系统工作时,每个会话运行一次;系统升级后也应重新运行。
智能默认值(静默应用,不要询问)
| 设置 | 默认值 | 原因 |
|---|---|---|
| 输出路径 | ./system-info.md | 放在项目根目录旁 |
| 覆盖 | 是,如果文件已存在 | 最新探测结果具有权威性 |
| 探测功能 | 是 | 功能标志(RAP、UI5、传输)会影响后续决策 |
| 包含 lint 预设 | 是 | 云端与本地部署的 lint 规则会影响生成的代码 |
| 包含 RAP 限制快照 | 是 | 帮助 RAP 技能立即规避已知的 7.5x 陷阱 |
输入
无需输入。可选:
- 输出路径(默认:
./system-info.md) - 跳过功能探测 — 如果用户只需要系统身份信息,且系统响应较慢
步骤 1:读取系统身份信息
SAPRead(type="SYSTEM")
返回:SID、系统类型(onprem | btp)、发行版本、内核版本、当前用户、客户端、语言。
步骤 2:读取已安装组件
SAPRead(type="COMPONENTS")
返回 { name, release, description } 数组。至少记录:SAP_BASIS、SAP_UI、SAP_ABA、SAP_GWFND。这些信息决定安全的 ABAP 语法上限和可用 API。
步骤 3:探测功能可用性
SAPManage(action="probe")
返回以下功能的标志:hana、abapGit、rap、amdp、ui5、ui5repo、transport、flp。每项都包含 available(布尔值)、mode 和 message。这些信息会影响诸如“能否生成 RAP 技术栈?”或“FLP 目录管理是否已接入?”之类的决策。
如果用户要求跳过此步骤,请在输出中将功能标记为“未探测”。
步骤 3b:推导 RAP 限制快照
根据发行版本、探测结果和 lint 上下文,推导一份精简的 RAP 限制说明。这是供技能提示词参考的启发式指南,并非硬性 API 契约。
至少包括:
- RAP 创建是否可能可行(
rap.available,以及 DDLS/BDEF 读取是否正常) - 本地部署的 7.5x 防护措施(TABL 类型定义陷阱、投影 BDEF 标头限制、DDLX 注释作用域注意事项)
- 写入前 lint 可能只覆盖 DDLS,还是覆盖范围更广的 RAP 构件
- ARC-1 RAP 预检/脚手架辅助工具是否应作为默认路径(
preflightBeforeWrite、scaffold_rap_handlers) - 为确保安全,是否应默认采用延迟式/两阶段草稿流程
步骤 4:读取 lint 预设
SAPLint(action="list_rules")
返回 { preset, abapVersion, enabledRules, disabledRules, ... }。预设(cloud 或 onprem)反映系统类型检测结果;abapVersion 是目标 ABAP 方言(例如 v754、cloud、standard)。生成的代码应遵循此方言。
步骤 5:写入 system-info.md
在所选路径创建文件。严格使用以下布局:
# System Info: <SID>
_Generated: <ISO timestamp>_ · _Source: ARC-1_
## Identity
| Field | Value |
|---|---|
| SID | <SID> |
| System type | <onprem / btp> |
| Release | <release> |
| Kernel | <kernel> |
| Client | <client> |
| Language | <lang> |
| User | <username> |
## Core Components
| Component | Release | Description |
|---|---|---|
| SAP_BASIS | <release> | <description> |
| SAP_UI | <release> | <description> |
| SAP_ABA | <release> | <description> |
| SAP_GWFND | <release> | <description> |
<additional rows for any other captured components>
## Feature Availability
| Feature | Available | Mode | Note |
|---|---|---|---|
| RAP / CDS | <yes/no> | <auto/on/off> | <message> |
| abapGit | <yes/no> | <auto/on/off> | <message> |
| HANA | <yes/no> | <auto/on/off> | <message> |
| AMDP | <yes/no> | <auto/on/off> | <message> |
| UI5 | <yes/no> | <auto/on/off> | <message> |
| UI5 Repository | <yes/no> | <auto/on/off> | <message> |
| Transports | <yes/no> | <auto/on/off> | <message> |
| FLP | <yes/no> | <auto/on/off> | <message> |
## Lint Configuration
- **Preset**: <cloud / onprem>
- **ABAP dialect**: <abapVersion>
- **Enabled rules**: <count>
- **Disabled rules**: <count>
## RAP Constraints Snapshot
- **RAP endpoint status**: <available / unavailable / not probed>
- **Recommended build mode**: <single-pass / two-pass>
- **TABL admin type guidance**: <syuname+timestampl on on-prem, abp_* on BTP>
- **Known projection BDEF caveat**: <e.g., use `projection;` header only on 7.5x>
- **Known DDLX scope caveat**: <e.g., headerInfo/search/objectmodel placement limits>
- **Lint coverage hint**: <ABAP+DDLS only / broader>
- **RAP helper path**: <`scaffold_rap_handlers` available / use quick-fix fallback>
## Coding Guidance
- Target ABAP dialect: **<abapVersion>** — do not use syntax beyond this level without verifying per object.
- System type is **<onprem / btp>**:
- If `btp`: prefer released APIs (check with `SAPRead(type="API_STATE", ...)`); avoid non-cloud object types (PROG, INCL, FUGR).
- If `onprem`: full type range available; still prefer released APIs for forward compatibility.
- Transports <enabled / disabled>: <if disabled, note that writes stay on `$TMP`>.
- RAP stack <available / not available>: <if not available, skip RAP generation skills>.
步骤 6:向用户总结
写入文件后,用 3-5 行报告:
- 探测的系统(SID、类型、发行版本)
- ABAP 方言上限
- 主要功能的可用情况(RAP、UI5、传输)
- 关键 RAP 限制(例如:两阶段建议,或严格模式/草稿注意事项)
- 写入的文件路径
不要在聊天中完整贴出文件内容 — 用户可以自行打开文件。
错误处理
| 错误 | 原因 | 修复方法 |
|---|---|---|
SAPRead(type="SYSTEM") 因认证错误而失败 | 用户缺少用于发现的 S_ADT_RES 权限 | 不包含身份信息块继续执行;在输出中注明 SID 未知 |
SAPRead(type="COMPONENTS") 返回空结果或 404 | 此系统上无法使用该端点 | 注明“组件端点不可用”;继续执行探测和 lint |
SAPManage(action="probe") 被阻止(只读模式且没有 write 作用域) | 安全配置 | 改用 SAPManage(action="features") 获取缓存结果 |
SAPLint(action="list_rules") 未返回预设 | 尚未加载 ARC-1 lint 配置 | 报告“lint 预设:未配置”;仍然写入文件 |
注意事项
何时重新运行
- 开始在新系统或不熟悉的系统上工作时
- 支持包升级后(SAP_BASIS 版本发生变化)
- 添加功能后(例如安装 abapGit、启用 RAP 运行时)
- 从本地部署迁移到 BTP(或反向迁移)时
此 Skill 不会执行的操作
- 不会读取源代码——仅读取身份信息、组件和功能
- 不会枚举包——请使用
setup-abap-mirror或SAPRead(type="DEVC") - 不会更改 SAP 系统级配置——所有调用均为只读
与其他 Skills 配合使用
- 在
generate-rap-service-researched之前运行——研究人员会使用 system-info.md 选择合适的 RAP 模式 - 在
setup-abap-mirror之前运行——镜像 Skill 会在其标题中引用 system-info.md - 在
migrate-custom-code之前运行——迁移检查取决于是否了解目标版本