End-to-end smoke test skill for DeerFlow. Guides through: 1) Pulling latest code, 2) Docker OR Local installation and deployment (user preference, default to Local if Docker network issues), 3) Service availability verification, 4) Health check, 5) Final test report. Use when the user says "run smoke test", "smoke test deployment", "verify installation", "test service availability", "end-to-end test", or similar.
This skill guides the Agent through DeerFlow's full end-to-end smoke test workflow, including code updates, deployment (supporting both Docker and local installation modes), service availability verification, and health checks.
Deployment Mode Selection
This skill supports two deployment modes:
Local installation mode (recommended, especially when network issues occur) - Run all services directly on the local machine
Docker mode - Run all services inside Docker containers
Selection strategy:
If the user explicitly asks for Docker mode, use Docker
If network issues occur (such as slow image pulls), automatically switch to local mode
Default to local mode whenever possible
Structure
smoke-test/
├── SKILL.md ← You are here - core workflow and logic
├── scripts/
│ ├── check_docker.sh ← Check the Docker environment
│ ├── check_local_env.sh ← Check local environment dependencies
│ ├── frontend_check.sh ← Frontend page smoke check
│ ├── pull_code.sh ← Pull the latest code
│ ├── deploy_docker.sh ← Docker deployment
│ ├── deploy_local.sh ← Local deployment
│ └── health_check.sh ← Service health check
├── references/
│ ├── SOP.md ← Standard operating procedure
│ └── troubleshooting.md ← Troubleshooting guide
└── templates/
├── report.local.template.md ← Local mode smoke test report template
└── report.docker.template.md ← Docker mode smoke test report template
Standard Operating Procedure (SOP)
Phase 1: Code Update Check
Confirm current directory - Verify that the current working directory is the DeerFlow project root
Check Git status - See whether there are uncommitted changes
Pull the latest code - Use git pull origin main to get the latest updates
Confirm code update - Verify that the latest code was pulled successfully
Phase 2: Deployment Mode Selection and Environment Check
Choose deployment mode:
Ask for user preference, or choose automatically based on network conditions
Default to local installation mode
Local mode environment check:
Check Node.js version - Requires 22+
Check pnpm - Package manager
Check uv - Python package manager
Check nginx - Reverse proxy
Check required ports - Confirm that ports 2026, 3000, and 8001 are not occupied
Docker mode environment check (if Docker is selected):
Check whether Docker is installed - Run docker --version
Check Docker daemon status - Run docker info
Check Docker Compose availability - Run docker compose version
Check required ports - Confirm that port 2026 is not occupied
Phase 3: Configuration Preparation
Check whether config.yaml exists
If it does not exist, run make config to generate it
If it already exists, check whether it needs an upgrade with make config-upgrade
Check the .env file
Verify that required environment variables are configured
Especially model API keys such as OPENAI_API_KEY
Phase 4: Deployment Execution
Local mode deployment:
Check dependencies - Run make check
Install dependencies - Run make install
(Optional) Pre-pull the sandbox image - If needed, run make setup-sandbox
Start services - Run make start (production mode)
Wait for startup - Give all services enough time to start completely (90-120 seconds recommended)
Docker mode deployment (if Docker is selected):
Initialize Docker environment - Run make docker-init
Start Docker services - Run make up (production mode)
Wait for startup - Give all containers enough time to start completely (60 seconds recommended)
Phase 5: Service Health Check
Local mode health check:
Check process status - Confirm that Gateway, Frontend, and Nginx processes are all running
Check frontend service - Visit http://localhost:2026 and verify that the page loads
Check API Gateway - Verify the http://localhost:2026/health endpoint
Check LangGraph-compatible API - Verify the /api/langgraph/* route exposed by Gateway
Frontend route smoke check - Run bash .agent/skills/smoke-test/scripts/frontend_check.sh to verify key routes under /workspace. The script auto-detects whether authentication is enabled and, if so, registers / logs in a smoke-test user so the real pages are verified rather than the login redirect.
Docker mode health check (when using Docker):
Check container status - Run docker ps and confirm that all containers are running
Check frontend service - Visit http://localhost:2026 and verify that the page loads
Check API Gateway - Verify the http://localhost:2026/health endpoint
Check LangGraph-compatible API - Verify the /api/langgraph/* route exposed by Gateway
Frontend route smoke check - Run bash .agent/skills/smoke-test/scripts/frontend_check.sh to verify key routes under /workspace. The script auto-detects whether authentication is enabled and, if so, registers / logs in a smoke-test user so the real pages are verified rather than the login redirect.
Optional Functional Verification
List available models - Verify that model configuration loads correctly
List available skills - Verify that the skill directory is mounted correctly
Simple chat test - Send a simple message to verify the end-to-end flow
Phase 6: Generate Test Report
Collect all test results - Summarize execution status for each phase
Record encountered issues - If anything fails, record the error details
Generate the final report - Use the template that matches the selected deployment mode to create the complete test report, including overall conclusion, detailed key test cases, and explicit frontend page / route results
Provide follow-up recommendations - Offer suggestions based on the test results
Execution Rules
Follow the sequence - Execute strictly in the order described above
Idempotency - Every step should be safe to repeat
Error handling - If a step fails, stop and report the issue, then provide troubleshooting suggestions
Detailed logging - Record the execution result and status of each step
User confirmation - Ask for confirmation before potentially risky operations such as overwriting config
Mode preference - Prefer local mode to avoid network-related issues
Template requirement - The final report must use the matching template under templates/; do not output a free-form summary instead of the template-based report
Report clarity - The execution summary must include the overall pass/fail conclusion plus per-case result explanations, and frontend smoke check results must be listed explicitly in the report
Optional phase handling - If functional verification is not executed, do not present it as a separate skipped phase in the final report
Known Acceptable Warnings
The following warnings can appear during smoke testing and do not block a successful result:
Feishu/Lark SSL errors in Gateway logs (certificate verification failure) can be ignored if that channel is not enabled
Warnings in Gateway logs about missing methods in the custom checkpointer, such as adelete_for_runs or aprune, do not affect the core functionality
The frontend_check.sh script automatically handles authentication. When auth is enabled it registers / logs in a smoke-test user (smoke-test@deerflow.dev by default) to verify the real /workspace/* pages. The registration may produce a log entry from the auth provider, which is expected and harmless.
Key Tools
Use the following tools during execution:
bash - Run shell commands
present_file - Show generated reports and important files
task_tool - Organize complex steps with subtasks when needed
Success Criteria
Smoke test pass criteria (local mode):
Latest code is pulled successfully
Local environment check passes (Node.js 22+, pnpm, uv, nginx)
Evaluate and carry out non-trivial software-system changes from first principles. Use when assessing RFCs, issues, designs, features, refactors, migrations, dependency changes, or proposed fields, events, APIs, modules, and services whose need, consumers, system fit, validation, or rollback require scrutiny. Read the actual system, identify the concrete problem and named semantic consumers, choose the smallest sufficient solution, reject pseudo-requirements and speculative abstractions, and require evidence proportional to risk. Do not use for mechanical edits, source-code explanation, or a dedicated review of an already-complete diff.
Reviews DeerFlow skill packages for readiness, triggers, safety boundaries, resources, and evidence. Invoke when users ask to audit, grade, or production-check an existing skill.
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
Use when a DeerFlow maintainer needs comment-only GitHub issue or PR handling: resolve issue/PR scopes with gh, analyze issues, post or draft issue comments, perform PR review comments, review PR or issue batches, compare competing PRs that target the same issue, give fix strategy, risk classification, and validation guidance. Intended for maintainers and trusted local agents, not general contributors.
Ensure async-path backend code that could block the asyncio event loop is protected by a teeth-verified runtime anchor in tests/blocking_io/. Use when changing backend Python under app/, packages/harness/deerflow/, or scripts/, when running a blocking-IO triage round over the whole repo, or when a reviewer/CI asks for blocking-IO coverage. Runs a deterministic scan (changed-lines or full-repo), routes each candidate, drafts/extends an anchor, and proves it fails when the blocking IO regresses.
Use this skill when the user requests to generate, create, imagine, or visualize images including characters, scenes, products, or any visual content. Supports structured prompts and reference images for guided generation.
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
Deploy applications and websites to Vercel. Use this skill when the user requests deployment actions such as "Deploy my app", "Deploy this to production", "Create a preview deployment", "Deploy and give me the link", or "Push this live". No authentication required - returns preview URL and claimable deployment link.
Use this skill when the user requests to review, analyze, critique, or summarize academic papers, research articles, preprints, or scientific publications. Supports comprehensive structured reviews covering methodology assessment, contribution evaluation, literature positioning, and constructive feedback generation. Trigger on queries involving paper URLs, uploaded PDFs, arXiv links, or requests like "review this paper", "analyze this research", "summarize this study", or "write a peer review".