Webiny-only. Run all checks required before packages are ready for publish: deps, build, lint, format, tests.
66
80%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.claude/skills/preflight/SKILL.mdWebiny-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>&1webiny packageyarn webiny-scripts generate-webiny-packageyarn webiny sync-dependenciesVerify 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.jsnode scripts/checkPackageNodeModules.jsyarn adioMust output "All dependencies in order!" to pass.
yarn format:fix > /dev/null 2>&1This auto-fixes formatting issues. No manual intervention needed.
yarn eslintThis 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 -10node scripts/checkDistPaths.jsVerifies 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-awsapi-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"
# ... etcRun 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 statusReport 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.json484553b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.