Agent Skillsalvinunreal/oh-my-opencode-slim › release-smoke-test

release-smoke-test

GitHub

用于在发布前验证 oh-my-opencode-slim 插件候选版本的冒烟测试技能。通过构建打包、隔离安装和运行调试,确保插件无崩溃且兼容正确。

.agents/skills/release-smoke-test/SKILL.md alvinunreal/oh-my-opencode-slim

Trigger Scenarios

验证 npm 发布前的插件候选版本 检查崩溃修复或回归问题

Install

npx skills add alvinunreal/oh-my-opencode-slim --skill release-smoke-test -g -y
More Options

Non-standard path

npx skills add https://github.com/alvinunreal/oh-my-opencode-slim/tree/master/.agents/skills/release-smoke-test -g -y

Use without installing

npx skills use alvinunreal/oh-my-opencode-slim@release-smoke-test

指定 Agent (Claude Code)

npx skills add alvinunreal/oh-my-opencode-slim --skill release-smoke-test -a claude-code -g -y

安装 repo 全部 skill

npx skills add alvinunreal/oh-my-opencode-slim --all -g -y

预览 repo 内 skill

npx skills add alvinunreal/oh-my-opencode-slim --list

SKILL.md

Frontmatter
{
    "name": "release-smoke-test",
    "description": "Test an oh-my-opencode-slim release candidate or bugfix before publishing. Use when validating a packed plugin artifact, release branch, crash fix, OpenCode runtime compatibility, or model-specific smoke test such as OpenCode 1.17.11 message transform regressions."
}

Release Smoke Test

Use this skill to validate an oh-my-opencode-slim release candidate before public npm publish. Test the packed artifact, not @latest and not the source tree.

Core Workflow

  1. Start from the release-prep branch or commit.
  2. Build and pack the candidate.
  3. Install the tarball into a throwaway app.
  4. Create an isolated OpenCode config pointing at the installed node_modules/oh-my-opencode-slim/dist/index.js.
  5. Run opencode debug config and verify plugin_origins contains only the intended plugin when doing an isolation smoke.
  6. Run non-pure opencode run --print-logs --log-level DEBUG.
  7. Search isolated logs for the original crash signature.
  8. Record exact artifact, model, OpenCode version, command shape, result, and limitations on the release issue or PR.

Pack Candidate

Use a temp directory so release validation never depends on the local package cache.

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"

Install the 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"

Isolated Config

Write the minimal OpenCode config:

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

Use env -i for the cleanest smoke. This strips host OPENCODE_*, ORCA_*, and project overlay variables that can silently add plugins or provider aliases.

env -i PATH="$PATH" HOME="$SMOKE/home" XDG_CONFIG_HOME="$SMOKE/xdg" \
  opencode debug config

Confirm:

  • plugin_origins has exactly one entry.
  • That entry points to the temp app's packed dist/index.js.
  • The model is the one intended for the smoke.

If OpenCode needs provider aliases from the host environment, run a second non-isolated model-specific smoke and clearly label it as weaker isolation.

Runtime Smoke

Run the actual prompt with timeout:

env -i PATH="$PATH" HOME="$SMOKE/home" XDG_CONFIG_HOME="$SMOKE/xdg" \
  timeout 120 \
  opencode run --print-logs --log-level DEBUG "Say OK only."

Expected result:

OK

Search logs for the bug signature. For the OpenCode 1.17.11 malformed-message crash, use:

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

No matches should appear.

OpenAI / Host-Provider Smoke

If the fully isolated environment cannot resolve OpenAI provider aliases, run a separate host-provider smoke while keeping the plugin path pointed at the tarball install.

mkdir -p "$SMOKE/config"
cat > "$SMOKE/config/opencode.json" <<EOF
{
  "model": "openai/gpt-5.6-fast",
  "plugin": [
    "file://$SMOKE/app/node_modules/oh-my-opencode-slim/dist/index.js"
  ],
  "agent": {
    "orchestrator": {
      "model": "openai/gpt-5.6-fast"
    }
  }
}
EOF

OPENCODE_CONFIG_DIR="$SMOKE/config" \
  timeout 120 \
  opencode run --print-logs --log-level DEBUG "Say OK only."

Report this as a host-provider smoke because existing project, user, or Orca OpenCode config may still merge in. Use opencode debug config to disclose what else loaded.

Reporting Template

## 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:

Version History

  • 34bffad Current 2026-08-20 11:44

Same Skill Collection

.agents/skills/cli-review/SKILL.md
src/skills/clonedeps/SKILL.md
src/skills/codemap/SKILL.md
src/skills/deepwork/SKILL.md
src/skills/oh-my-opencode-slim/SKILL.md
src/skills/reflect/SKILL.md
src/skills/simplify/SKILL.md
src/skills/verification-planning/SKILL.md
src/skills/worktrees/SKILL.md
src/skills/loop-engineering/SKILL.md

Metadata

Files
0
Version
34bffad
Hash
3e6b3f1e
Indexed
2026-08-20 11:44

- 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-24 19:51
浙ICP备14020137号-1 $방문자$