Flow validate
This skill should be used when the user asks to 'validate a flow', 'check my flow', 'lint this flow', 'is this flow correct', 'flow errors', 'flow warnings', or wants to analyze a prompt-language flow for issues before executing it.From its SKILL.md
npx -y skills add 45ck/prompt-language --skill flow-validateAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.3 KB, as published. Nobody here has run it
Flow Validate
Parse, lint, and score a prompt-language flow to find issues before execution.
What to do
-
Determine the flow source:
- If the user provided a file path argument, read that file
- If the user pasted flow text inline, use that
- Otherwise, look for
example.flowor any.flowfile in the current directory
-
Run the validation script:
node <plugin-dir>/skills/flow-validate/validate.mjs [file-or-stdin]Or pipe flow text to it:
echo '<flow text>' | node <plugin-dir>/skills/flow-validate/validate.mjsWhere
<plugin-dir>is the directory containing this skill (find it viaGlobforskills/flow-validate/validate.mjs). -
Report the results to the user:
- Parse warnings: syntax issues found during parsing
- Lint warnings: anti-patterns detected (empty bodies, break outside loop, unresolved variables, etc.)
- Complexity score: 1-5 rating with explanation
- Summary: overall pass/fail assessment
-
If there are warnings, suggest specific fixes for each one.
Complexity Scale
- 1 (Trivial): Linear flow, 3 or fewer nodes, no control flow
- 2 (Simple): Up to 5 nodes or 1 control flow construct, shallow nesting
- 3 (Moderate): Up to 10 nodes, nesting depth up to 2, or 2-3 control flows
- 4 (Complex): More than 10 nodes, depth 3+, or 4+ control flows
- 5 (Very complex): Deep nesting combined with many control flows and gates
Common Warnings
- Empty body: A loop, if, try, or spawn block has no nodes inside it
- Break/continue outside loop:
breakorcontinueused outside a while/until/retry/foreach - Retry without run:
retryblock has norunnode -- retry re-loops on command_failed - Unresolved variable:
${varName}referenced but never defined by alet/varnode - Infinite loop risk: Loop condition depends on a predicate (like
command_failed) but body has norunnode - Missing goal: No
Goal:line found - Empty flow: No nodes defined in the
flow:block
Review Prioritization
When many warnings exist, report in this priority order:
- Parse blockers (flow cannot be executed safely)
- Control-flow safety issues (infinite loop risk, invalid break/continue)
- Semantic issues (unresolved interpolation, retry-without-run)
- Complexity/readability concerns
Suggested Fix Strategy
- First make the flow executable (parse/lint blockers).
- Then reduce control-flow risk.
- Then simplify complexity (collapse unnecessary phases, remove short-distance variables).
Output Format
Parse:pass/fail + countLint:pass/fail + countComplexity:score + short rationaleTop 3 fixes:concrete edits with expected impact
Edge Cases
- If multiple
.flowfiles exist and no argument is given, ask which file to validate. - If no flow source is discoverable, report exactly what was searched.
- If validation script path is missing, report plugin installation mismatch instead of guessing.