mcpField
B
bootstrap-system-context

bootstrap-system-context

github.com/arc-mcpエージェントワークフロー239253 回インストール2 日前に更新
リポジトリ

bootstrap-system-context について

bootstrap-system-contextは、SAPシステムを調査し、システム情報、コンポーネント、機能の利用可否、RAPの制約、現在のlintプリセットをローカルファイルに記録するスキルです。不慣れなシステムやアップグレード後の開発に向けた情報を用意し、ソースコードの読み取りやシステム設定の変更は行いません。

主な機能

  1. 01システム情報とインストール済みコンポーネントを取得
  2. 02機能の利用可否を調査
  3. 03RAPの制約をまとめる
  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 システムに関する情報をアシスタントに与えます。SID、リリース、インストール済みコンポーネント、検出された機能、RAP 関連の制約、ARC-1 の有効な lint プリセットを記録したローカルの system-info.md ファイルを作成します。これにより、後続のプロンプトで制約を推測せずに済みます。

不慣れなシステムで作業する場合はセッションごとに一度実行し、システムのアップグレード後にも再度実行してください。

スマートなデフォルト設定(黙って適用し、質問しないでください)

設定デフォルト理由
出力先./system-info.mdプロジェクトルートに置く付随ファイルです
上書きファイルが存在する場合は「はい」新しいプローブ結果が正確な情報です
機能をプローブ「はい」機能フラグ(RAP、UI5、トランスポート)が後続の判断を左右します
lint プリセットを含める「はい」生成コードには Cloud とオンプレミスで異なる lint ルールが適用されます
RAP 制約のスナップショットを含める「はい」RAP スキルが既知の 7.5x の落とし穴をすぐに回避できるようになります

入力

入力は不要です。必要に応じて、次の項目を指定できます。

  • 出力先(デフォルト:./system-info.md)
  • 機能プローブをスキップ — システムが遅く、ユーザーがシステム ID 情報のみを必要としている場合

ステップ 1:システム ID 情報を読み取る

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(bool)、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 制約(例:二段階方式の推奨、strict/draft に関する注意)
  • 書き込んだファイルのパス

ファイルの全内容をチャットに出力しないでください。ユーザーはファイルを開いて確認できます。

エラー処理

エラー原因対処方法
SAPRead(type="SYSTEM") が認証エラーで失敗するユーザーに検出用の S_ADT_RES 権限がないID情報ブロックなしで続行し、SID が不明であることを出力に記載します
SAPRead(type="COMPONENTS") の結果が空、または 404 になるこのシステムではエンドポイントを利用できない「components endpoint unavailable」と記載し、プローブと lint を続行します
SAPManage(action="probe") がブロックされる(write スコープのない読み取り専用モード)安全性の設定キャッシュ済みの結果を取得するため、SAPManage(action="features") に切り替えます
SAPLint(action="list_rules") がプリセットを返さないARC-1 の lint 設定がまだ読み込まれていない「lint preset: not configured」と報告し、ファイルは書き込みます

注意事項

再実行するタイミング
  • 新しいシステム、または不慣れなシステムで作業を開始するとき
  • サポートパッケージのアップグレード後(SAP_BASIS リリースが変更されたとき)
  • 機能が追加されたとき(例:abapGit のインストール、RAP ランタイムの有効化)
  • オンプレミスから BTP に移行するとき(またはその逆)
このスキルで行わないこと
  • ソースコードは読み取りません — ID、コンポーネント、機能のみを扱います
  • パッケージの列挙は行いません — その場合は setup-abap-mirror または SAPRead(type="DEVC") を使用します
  • SAP システムレベルの設定変更は行いません — すべての呼び出しは読み取り専用です
他のスキルとの併用
  • generate-rap-service-researched の前に実行 — リサーチャーは system-info.md を使って、適切な RAP パターンを選択します
  • setup-abap-mirror の前に実行 — ミラースキルはヘッダーで system-info.md を参照します
  • migrate-custom-code の前に実行 — 移行チェックでは対象のリリースを把握している必要があります

コメント