01
When it runs
Automatically, when Claude is about to write a file matching specs/**/*.spec.md, or when you explicitly ask it to open a review. You don't invoke it directly.
↳ flowrail-design-review spec specs/password-reset.spec.md threats 4 (2 high, 2 med) review dr_7f3a9e2c approved argon2@^0.40, jose@^5.9 channels api.stripe.com
flowrail_design_review
{
"spec_path": "specs/password-reset.spec.md",
"spec_content": "# Password reset flow\n\n...",
"repo_signals": {
"language": "typescript",
"package_manager": "npm",
"existing_deps": ["express", "pg"]
}
}{
"design_review_id": "dr_7f3a9e2c",
"threats": [{ "category": "...", "severity": "...", "summary": "..." }],
"approved_dependencies": [{ "name": "...", "version_spec": "..." }],
"channel_allowlist": ["api.example.com"]
}02
Side effect
Writes .flowrail/context.json with active_design_review_id. Server-side, emits design_review_completed scoped to your workspace. Spec text is hashed (spec_content_sha256) and discarded.