Webiny-only. Run all checks required before packages are ready for publish: deps, build, lint, format, tests.
Webiny-only skill. Run all checks required before packages are ready for publish.
rg "^\s*(it|test|it\.each|test\.each)\s*\(" packages/<name>/__tests__ -t ts --count-matches | awk -F: '{s+=$2} END {print s}'shards = ceil(count / 32). If shards is 1, no --shard flag needed./dev/null or pipe through tail as needed.yarn > /dev/null 2>&1
webiny packageyarn webiny-scripts generate-webiny-package
yarn webiny sync-dependencies
Verify packages/cli/files/duplicates.json is an empty array ([]). If it contains entries, there are duplicate dependency versions that must be resolved before continuing.
node scripts/generateTsConfigsInPackages.js
node scripts/checkPackageNodeModules.js
yarn adio
Must output "All dependencies in order!" to pass.
yarn format:fix > /dev/null 2>&1
This auto-fixes formatting issues. No manual intervention needed.
yarn eslint
This only checks — it does not auto-fix. If eslint reports errors, fix them manually, then restart from step 1.
yarn build --no-cache 2>&1 | tail -10
node scripts/checkDistPaths.js
Verifies no src/ paths remain in built output.
Run yarn test for each package below, sequentially. Count active tests first and shard at 32.
Packages that need yarn test:
apiapi-acoapi-audit-logsapi-coreapi-file-managerapi-file-manager-acoapi-headless-cmsapi-headless-cms-acoapi-headless-cms-bulk-actionsapi-headless-cms-ddbapi-headless-cms-import-exportapi-headless-cms-schedulerapi-headless-cms-tasksapi-headless-cms-workflowsapi-mailerapi-record-lockingapi-schedulerapi-sync-systemapi-website-builderapi-website-builder-schedulerapi-websocketsapi-workflowsapp-admincognitodb-dynamodbformhandlerhandler-awshandler-graphqllexical-converterpluginsreact-compositionreact-propertiesreact-rich-text-lexical-renderertasksutils# 1. Count active tests
count=$(rg "^\s*(it|test|it\.each|test\.each)\s*\(" packages/<name>/__tests__ -t ts --count-matches | awk -F: '{s+=$2} END {print s}')
shards=$(( (count + 31) / 32 ))
# 2a. If shards <= 1, run without sharding
yarn test packages/<name> 2>&1 | grep "Test Files"
# 2b. If shards > 1, run each shard sequentially
yarn test packages/<name> --shard=1/$shards 2>&1 | grep "Test Files"
yarn test packages/<name> --shard=2/$shards 2>&1 | grep "Test Files"
# ... etc
Run yarn test:os for each package below, sequentially. Count active tests first and shard at 32.
Packages that need BOTH yarn test (step 11) AND yarn test:os:
api-acoapi-audit-logsapi-file-managerapi-file-manager-acoapi-headless-cmsapi-headless-cms-acoapi-headless-cms-bulk-actionsapi-headless-cms-import-exportapi-mailerapi-schedulerapi-workflowstasksPackages that need ONLY yarn test:os (not in step 11):
api-dynamodb-to-elasticsearchapi-elasticsearch-tasksapi-headless-cms-ddb-esapi-headless-cms-es-tasksapi-opensearchyarn test:os packages/<name> 2>&1 | grep "Test Files"
git status
Report any unexpected uncommitted changes from the steps above.
If the lists seem stale, re-derive them:
# All testable packages (have vitest.config.ts)
find packages -maxdepth 2 -name "vitest.config.ts" | sed 's|packages/||;s|/vitest.config.ts||' | sort
# Packages with ddb-os support
grep -rl "ddb-os" --include="ci.config.json" packages/ | sed 's|packages/||;s|/ci.config.json||' | sort
# Check if a package has standalone ddb tests too
grep -o '"ddb"' packages/<name>/ci.config.json