기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
SKILL.md 표시 중
SKILL.md
소스 지침 · 읽기 전용 미리보기
name
preflight
description
Webiny-only. Run all checks required before packages are ready for publish: deps, build, lint, format, tests.
# Preflight
Webiny-only skill. Run all checks required before packages are ready for publish.
## Important
- Run steps in order.
- If any step fails, diagnose and fix the issue, then restart from step 1.
- Never run tests in parallel. Run each package sequentially.
- Before running tests for each package, count active test cases and shard at 32 tests per shard.
- To count active tests: `rg "^\s*(it|test|it\.each|test\.each)\s*\(" packages/<name>/__tests__ -t ts --count-matches | awk -F: '{s+=$2} END {print s}'`
- Calculate shards: `shards = ceil(count / 32)`. If shards is 1, no `--shard` flag needed.
- Suppress noisy output: redirect stdout to `/dev/null` or pipe through `tail` as needed.
## Steps
### 1. Install dependencies
```bash
yarn > /dev/null 2>&1
```
### 2. Generate `webiny` package
```bash
yarn webiny-scripts generate-webiny-package
```
### 3. Sync dependency versions
```bash
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.
### 4. Generate tsconfig files
```bash
node scripts/generateTsConfigsInPackages.js
```
### 5. Check package node_modules
```bash
node scripts/checkPackageNodeModules.js
```
### 6. Verify package.json dependencies match source imports
```bash
yarn adio
```
Must output "All dependencies in order!" to pass.
### 7. Format code
```bash
yarn format:fix > /dev/null 2>&1
```
This auto-fixes formatting issues. No manual intervention needed.
### 8. Lint
```bash
yarn eslint
```
This only checks — it does not auto-fix. If eslint reports errors, fix them manually, then restart from step 1.
### 9. Full clean build
```bash
yarn build --no-cache 2>&1 | tail -10
```
### 10. Check dist paths
```bash
node scripts/checkDistPaths.js
```
Verifies no `src/` paths remain in built output.
### 11. Run DDB tests
Run `yarn test` for each package below, sequentially. Count active tests first and shard at 32.
**Packages that need `yarn test`:**
- `api`
- `api-aco`
- `api-audit-logs`
- `api-core`
- `api-file-manager`
- `api-file-manager-aco`
- `api-headless-cms`
- `api-headless-cms-aco`
- `api-headless-cms-bulk-actions`
- `api-headless-cms-ddb`
- `api-headless-cms-import-export`
- `api-headless-cms-scheduler`
- `api-headless-cms-tasks`
- `api-headless-cms-workflows`
- `api-mailer`
- `api-record-locking`
- `api-scheduler`
- `api-sync-system`
- `api-website-builder`
- `api-website-builder-scheduler`
- `api-websockets`
- `api-workflows`
- `app-admin`
- `cognito`
- `db-dynamodb`
- `form`
- `handler`
- `handler-aws`
- `api-graphql`
- `lexical-converter`
- `plugins`
- `react-composition`
- `react-properties`
- `react-rich-text-lexical-renderer`
- `tasks`
- `utils`
```bash
# 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
```
### 12. Run OpenSearch tests
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-aco`
- `api-audit-logs`
- `api-file-manager`
- `api-file-manager-aco`
- `api-headless-cms`
- `api-headless-cms-aco`
- `api-headless-cms-bulk-actions`
- `api-headless-cms-import-export`
- `api-mailer`
- `api-scheduler`
- `api-workflows`
- `tasks`
**Packages that need ONLY `yarn test:os` (not in step 11):**
- `api-dynamodb-to-elasticsearch`
- `api-elasticsearch-tasks`
- `api-headless-cms-ddb-es`
- `api-headless-cms-es-tasks`
- `api-opensearch`
```bash
yarn test:os packages/<name> 2>&1 | grep "Test Files"
```
### 13. Check for uncommitted changes
```bash
git status
```
Report any unexpected uncommitted changes from the steps above.
## Keeping the package lists up to date
If the lists seem stale, re-derive them:
```bash
# 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
```
Follow https://skillsmp.com/skill-install/prompt.md to install only the Agent Skill at https://github.com/webiny/webiny-js/tree/next/.claude/skills/preflight.