release-smoke-test について
release-smoke-testは、npm公開前にoh-my-opencode-slimのリリース候補を検証するスキルです。一時的なアプリでパッケージ済みtarballをテストし、成果物、環境、結果、制限事項を記録します。
主な機能
- 01候補版のビルドとパッケージ化
- 02一時アプリへのtarballのインストール
- 03隔離されたOpenCode環境の設定
- 04プラグインの読み込み元とデバッグログの確認
- 05検証内容と制限事項の記録
活用シーン
- 01npm公開前の候補版検証
- 02パッケージ済み成果物でのクラッシュ再現確認
- 03隔離テストとホストプロバイダーテスト結果の区別
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alvinunreal/ oh-my-opencode-slim --skill release-smoke-testインストール後、Claude Code で/release-smoke-testを入力して読み込まれたか確認します。
詳細
リリーススモークテスト
このスキルを使って、oh-my-opencode-slim のリリース候補を公開 npm への公開前に検証します。@latest やソースツリーではなく、パッケージ化したアーティファクトをテストしてください。
基本的なワークフロー
- リリース準備用のブランチまたはコミットから始めます。
- 候補をビルドしてパッケージ化します。
- 一時的なアプリに tarball をインストールします。
- インストールした
node_modules/oh-my-opencode-slim/dist/index.jsを参照する、分離された OpenCode 設定を作成します。 - 分離スモークテストを行う場合は、
opencode debug configを実行し、plugin_originsに意図したプラグインだけが含まれていることを確認します。 - 非純粋な
opencode run --print-logs --log-level DEBUGを実行します。 - 分離されたログ内で元のクラッシュシグネチャを検索します。
- 正確なアーティファクト、モデル、OpenCode のバージョン、コマンドの形式、結果、制限事項を、リリースの issue または PR に記録します。
候補をパッケージ化する
リリース検証がローカルのパッケージキャッシュに依存しないよう、一時ディレクトリを使用します。
SMOKE=/tmp/oh-my-opencode-slim-release-smoke
rm -rf "$SMOKE"
mkdir -p "$SMOKE/pkg" "$SMOKE/app" "$SMOKE/home" "$SMOKE/xdg/opencode" "$SMOKE/run"
bun run build
npm pack --pack-destination "$SMOKE/pkg"
tarball をインストールします。
cd "$SMOKE/app"
bun init -y
bun add "$SMOKE/pkg"/oh-my-opencode-slim-*.tgz
node -p "require('./node_modules/oh-my-opencode-slim/package.json').version"
分離された設定
最小限の OpenCode 設定を記述します。
cat > "$SMOKE/xdg/opencode/opencode.json" <<EOF
{
"model": "opencode/deepseek-v4-flash-free",
"plugin": [
"file://$SMOKE/app/node_modules/oh-my-opencode-slim/dist/index.js"
],
"agent": {
"orchestrator": {
"model": "opencode/deepseek-v4-flash-free"
}
}
}
EOF
最もクリーンなスモークテストには env -i を使用します。これにより、ホストの OPENCODE_*、ORCA_*、プロジェクトのオーバーレイ変数が除去されます。これらの変数は、プラグインやプロバイダーエイリアスを気付かないうちに追加することがあります。
env -i PATH="$PATH" HOME="$SMOKE/home" XDG_CONFIG_HOME="$SMOKE/xdg" \
opencode debug config
以下を確認します。
plugin_originsにエントリーが 1 つだけ含まれていること。- そのエントリーが一時アプリのパッケージ化された
dist/index.jsを参照していること。 - モデルがスモークテストで意図したものと一致していること。
OpenCode がホスト環境のプロバイダーエイリアスを必要とする場合は、2 回目のモデル固有の非分離スモークテストを実行し、分離性が弱いことを明記してください。
実行時スモークテスト
実際のプロンプトをタイムアウト付きで実行します。
env -i PATH="$PATH" HOME="$SMOKE/home" XDG_CONFIG_HOME="$SMOKE/xdg" \
timeout 120 \
opencode run --print-logs --log-level DEBUG "Say OK only."
期待される結果:
OK
ログからバグのシグネチャを検索します。OpenCode 1.17.11 の不正形式メッセージによるクラッシュの場合は、次を使用します。
rg "message\\.info\\.role|undefined is not an object|Cannot read properties of undefined|TypeError" \
"$SMOKE/home/.local/share/opencode/log" -n 2>/dev/null || true
一致するものがないことを確認してください。
OpenAI/ホストプロバイダーのスモークテスト
完全に分離された環境で OpenAI プロバイダーエイリアスを解決できない場合は、プラグインのパスを tarball のインストール先に向けたまま、別途ホストプロバイダーのスモークテストを実行します。
mkdir -p "$SMOKE/config"
cat > "$SMOKE/config/opencode.json" <<EOF
{
"model": "openai/gpt-6-sol-fast",
"plugin": [
"file://$SMOKE/app/node_modules/oh-my-opencode-slim/dist/index.js"
],
"agent": {
"orchestrator": {
"model": "openai/gpt-6-sol-fast"
}
}
}
EOF
OPENCODE_CONFIG_DIR="$SMOKE/config" \
timeout 120 \
opencode run --print-logs --log-level DEBUG "Say OK only."
既存のプロジェクト、ユーザー、または Orca の OpenCode 設定が引き続きマージされる可能性があるため、これをホストプロバイダーのスモークテストとして報告してください。ほかに何が読み込まれたかを明らかにするため、opencode debug config を使用します。
報告テンプレート
## Release-candidate smoke validation
- Commit under test:
- Tarball:
- Installed package version:
- OpenCode version:
- Config isolation: sanitized `env -i` / host-provider
- Plugin origin:
- Model:
- Command:
- Result:
- Crash signature search:
- Limitations: