name: ‘step-01-preflight’ description: ‘Verify prerequisites and gather project context’ nextStepFile: ‘{skill-root}/steps-c/step-02-select-framework.md’
Verify the project is ready for framework scaffolding and gather key context.
{communication_language}CRITICAL: Follow this sequence exactly. Do not skip, reorder, or improvise.
Read config.test_stack_type from {config_source}.
Auto-Detection Algorithm (when test_stack_type is "auto" or not configured):
{project-root} for project manifests:
package.json with react/vue/angular/next dependencies, playwright.config.*, vite.config.*, webpack.config.*pyproject.toml, pom.xml/build.gradle, go.mod, *.csproj/*.sln, Gemfile, Cargo.tomlfullstack; only frontend = frontend; only backend = backendtest_stack_type config value overrides auto-detectiontest_stack_type is not in config, treat as "auto" (preserves current frontend behavior for existing installs)Store result as {detected_stack} = frontend | backend | fullstack
If {detected_stack} is frontend or fullstack:
package.json exists in project rootplaywright.config.*, cypress.config.*, cypress.json)If {detected_stack} is backend or fullstack:
pyproject.toml, pom.xml, build.gradle, go.mod, *.csproj, Gemfile, Cargo.toml)No existing test framework config that conflicts (e.g., conftest.py with full pytest suite, src/test/ with JUnit suite)
Architecture/stack context available (project type, bundler, dependencies)
If any fail, HALT and report the missing requirement.
If {detected_stack} is frontend or fullstack:
package.json to identify framework, bundler, dependenciesIf {detected_stack} is backend or fullstack:
Read the relevant project manifest (pyproject.toml, pom.xml, go.mod, *.csproj, Gemfile, Cargo.toml) to identify language, framework, and dependencies
Check for architecture docs (architecture.md, tech-spec*.md) if available
Note auth requirements and APIs (if documented)
Summarize:
Save this step’s accumulated work to {outputFile}.
{outputFile} does not exist (first save), create it with YAML frontmatter: ---
stepsCompleted: ['step-01-preflight']
lastStep: 'step-01-preflight'
lastSaved: '{date}'
---
Then write this step’s output below the frontmatter.
{outputFile} already exists, update:
'step-01-preflight' to stepsCompleted array (only if not already present)lastStep: 'step-01-preflight'lastSaved: '{date}'Load next step: {nextStepFile}