| name | skill-script-path-safety |
| description | Skillの利用時に scripts の相対パス解決ミスを防ぐための実行手順。相対パス、cwd、No such file or directory、./scripts、scripts/ が出る文脈では必ずこのSkillを使って、Skill Base Directory基準で絶対パス実行に正規化する。 |
Skill Script Path Safety
目的
Skill内の scripts/ を実行するときに、カレントディレクトリ基準で誤って解決して失敗する問題を防ぐ。
適用タイミング
- Skillを利用していて
scripts/... が登場したとき
./scripts/... を実行しようとしているとき
No such file or directory が出たとき
- パス基準が曖昧なとき
必須ルール
- Skill内の相対パスは
cwd ではなく Skill Base Directory 基準で解決する。
- 実行時は必ず絶対パスを使う。
workdir は対象プロジェクト操作用であり、Skillスクリプトの場所解決には使わない。
- 実行前に対象スクリプトの存在を確認する。
実行手順
- Skillロード結果から
Base directory for this skill を特定する。
- Skillに書かれた
scripts/foo.sh や scripts/foo.py を <BASE>/scripts/foo.sh のように正規化する。
- Read または Glob で
<BASE>/scripts/... の存在確認を行う。
- Bash では絶対パスを指定して実行する。
具体例
前提:
cwd: /Users/me/project-a
- Skill Base Directory:
/Users/me/.config/opencode/skills/my-skill
- 実行対象:
scripts/check.sh
Before (失敗しやすい):
./scripts/check.sh
この場合は /Users/me/project-a/scripts/check.sh を参照してしまう。
After (正しい):
bash "/Users/me/.config/opencode/skills/my-skill/scripts/check.sh"
cwd がどこでも同じ結果になる。
入出力サンプル
入力:
scripts/collect.py を実行して
出力(実行フロー):
- Base directory を取得する。
scripts/collect.py を /abs/path/to/skill/scripts/collect.py に正規化する。
- 存在確認後、
python "/abs/path/to/skill/scripts/collect.py" で実行する。
NG / OK パターン
- NG:
./scripts/foo.sh
- NG:
python scripts/foo.py
- OK:
bash "/abs/path/to/skill/scripts/foo.sh"
- OK:
python "/abs/path/to/skill/scripts/foo.py"
失敗時のリカバリ
- Base directory が分からない場合は Skill を再ロードして
Base directory for this skill を確認する。
- 正規化後の絶対パスをそのままユーザーに提示し、どのパスを参照したかを明示する。