mcpField
R
release-smoke-test

release-smoke-test

github.com/alvinunrealテスト・品質9.8k42 回インストール2 日前に更新
リポジトリ

release-smoke-test について

release-smoke-testは、npm公開前にoh-my-opencode-slimのリリース候補を検証するスキルです。一時的なアプリでパッケージ済みtarballをテストし、成果物、環境、結果、制限事項を記録します。

主な機能

  1. 01候補版のビルドとパッケージ化
  2. 02一時アプリへのtarballのインストール
  3. 03隔離されたOpenCode環境の設定
  4. 04プラグインの読み込み元とデバッグログの確認
  5. 05検証内容と制限事項の記録

活用シーン

  1. 01npm公開前の候補版検証
  2. 02パッケージ済み成果物でのクラッシュ再現確認
  3. 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 やソースツリーではなく、パッケージ化したアーティファクトをテストしてください。

基本的なワークフロー

  1. リリース準備用のブランチまたはコミットから始めます。
  2. 候補をビルドしてパッケージ化します。
  3. 一時的なアプリに tarball をインストールします。
  4. インストールした node_modules/oh-my-opencode-slim/dist/index.js を参照する、分離された OpenCode 設定を作成します。
  5. 分離スモークテストを行う場合は、opencode debug config を実行し、plugin_origins に意図したプラグインだけが含まれていることを確認します。
  6. 非純粋な opencode run --print-logs --log-level DEBUG を実行します。
  7. 分離されたログ内で元のクラッシュシグネチャを検索します。
  8. 正確なアーティファクト、モデル、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:

コメント