mcpField
B
bootstrap-system-context

bootstrap-system-context

github.com/arc-mcpAgent 工作流239253 次安装2 天前更新
代码仓库

关于 bootstrap-system-context

bootstrap-system-context 会探测 SAP 系统,并将系统标识、组件、功能可用性、RAP 约束和当前 lint 预设写入本地文件。它适用于不熟悉或升级后的系统,为后续编码提供具体环境信息;不会读取源代码或更改系统配置。

主要功能

  1. 01读取系统标识和已安装组件
  2. 02探测功能可用性
  3. 03整理 RAP 约束摘要
  4. 04记录当前 lint 预设和 ABAP 方言
  5. 05将结果写入 system-info.md

适用场景

  1. 01在不熟悉的 SAP 系统上开始编码前做准备
  2. 02系统升级后刷新环境信息
  3. 03开发前检查 RAP 和 UI5 是否可用
  4. 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 之前运行——迁移检查取决于是否了解目标版本

评论

支持 Markdown