بنقرة واحدة
add-ecosystem-ci
Add a new ecosystem-ci test case for testing real-world projects against vite-plus
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Add a new ecosystem-ci test case for testing real-world projects against vite-plus
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
Bump vite-task git dependency to the latest main commit. Use when you need to update the vite-task git-dependency crates (vite_task, fspy, pty_terminal_test, and friends; the authoritative set lives in Cargo.toml) in vite-plus.
Run the standard vite-plus release process end-to-end as the release manager. Covers preparing the release PR, syncing the NAPI binding version, writing the categorized changelog, smoke-testing via a preview build, handling release-branch CI failures, merging, and post-release verification and announcements. Use when asked to cut, prepare, or manage a vite-plus release (e.g. "release v0.2.3", "act as release manager").
Compare tsdown CLI options with vp pack and sync any new or removed options. Use when tsdown is upgraded or when you need to check for CLI option drift between tsdown and vp pack.
Drive and capture vp's interactive (clack) prompts in a tmux session to manually verify interactive UX and catch spinner-over-prompt bugs. Use when asked to test/verify/capture an interactive vp command's prompts (vp migrate, vp create, ...), reproduce a prompt-rendering bug, or show the real interactive CLI output for a PR.
Verify a preview (registry bridge) build of vite-plus against a real project before release — run `vp migrate` from the preview commit against a local project, deps resolved through the registry bridge. Use when asked to verify/e2e-test a preview or pkg-pr-new build against a project, "test PR
Guide for writing subprocess execution code using the vite_command crate
استنادا إلى تصنيف SOC المهني
| name | add-ecosystem-ci |
| description | Add a new ecosystem-ci test case for testing real-world projects against vite-plus |
| allowed-tools | Bash, Read, Edit, Write, WebFetch, AskUserQuestion |
Add a new ecosystem-ci test case following this process:
Ask the user for the GitHub repository URL if not provided as argument: $ARGUMENTS
Use GitHub CLI to get repository info:
gh api repos/OWNER/REPO --jq '.default_branch'
gh api repos/OWNER/REPO/commits/BRANCH --jq '.sha'
Fetch the repository's root to check if the main package.json is in a subdirectory (like web/, app/, frontend/).
Check the project's root package.json for vite-plus in dependencies or devDependencies. If the project already uses vite-plus, set forceFreshMigration: true in repo.json. This tells patch-project.ts to set VP_FORCE_MIGRATE=1 so vp migrate forces full dependency rewriting instead of skipping with "already using Vite+".
Fetch the project's GitHub workflow files to detect available commands:
# List workflow files
gh api repos/OWNER/REPO/contents/.github/workflows --jq '.[].name'
# Fetch workflow content (for each .yml/.yaml file)
gh api repos/OWNER/REPO/contents/.github/workflows/ci.yml --jq '.content' | base64 -d
Look for common patterns in workflow files:
pnpm run <command> / npm run <command> / yarn <command>lint, build, test, type-check, typecheck, format, format:checkvp equivalents: vp run lint, vp run build, etc.Present the auto-detected configuration and ask user to confirm or modify:
Add to ecosystem-ci/repo.json:
{
"project-name": {
"repository": "https://github.com/owner/repo.git",
"branch": "main",
"hash": "full-commit-sha",
"directory": "web", // only if subdirectory is needed
"forceFreshMigration": true // only if project already uses vite-plus
}
}
Add to .github/workflows/e2e-test.yml matrix:
- name: project-name
node-version: 24
directory: web # only if subdirectory is needed
command: |
vp run lint
vp run build
Always rebuild tgz packages from latest source to avoid using stale cached versions:
# Rebuild the global CLI first (includes Rust binary + NAPI binding)
pnpm bootstrap-cli
# Pack fresh tgz files into tmp/tgz/
rm -rf tmp/tgz && mkdir -p tmp/tgz
cd packages/core && pnpm pack --pack-destination ../../tmp/tgz && cd ../..
cd packages/test && pnpm pack --pack-destination ../../tmp/tgz && cd ../..
cd packages/cli && pnpm pack --pack-destination ../../tmp/tgz && cd ../..
ls -la tmp/tgz
node ecosystem-ci/clone.ts project-name
# Run from the ecosystem-ci temp directory
cd $(node -e "const os=require('os'); console.log(os.tmpdir() + '/vite-plus-ecosystem-ci')")
# Migrate the project (uses tgz files from tmp/tgz/)
node /path/to/vite-plus/ecosystem-ci/patch-project.ts project-name
# Run the configured commands
cd project-name
vp run build
Add OS exclusion to .github/workflows/e2e-test.yml (if not running on both):
For ubuntu-only:
exclude:
- os: windows-latest
project:
name: project-name
For windows-only:
exclude:
- os: ubuntu-latest
project:
name: project-name
directory field is optional - only add it if the package.json is not in the project rootdirectory is specified in repo.json, it must also be specified in the workflow matrixpatch-project.ts automatically handles running vp migrate in the correct directoryforceFreshMigration is required for projects that already have vite-plus in their package.json — it sets VP_FORCE_MIGRATE=1 so vp migrate forces full dependency rewriting instead of skippingexclude section in the workflow matrix