Rebuild Vibeflow as an n8n safety gate

This commit is contained in:
Felipe Domingues 2026-07-22 11:43:41 -03:00
parent 79fc67166a
commit febec32131
101 changed files with 2405 additions and 3557 deletions

View file

@ -0,0 +1,40 @@
---
name: vibeflow
description: Audit and repair exported n8n workflow JSON with deterministic safety and contract checks. Use when reviewing AI-generated or customer-facing n8n workflows before deployment, investigating Vibeflow VF000-VF009 findings, adding kill switches or human handoffs, checking secrets, retries, and webhook exposure, or preparing workflow changes for CI and pull requests.
---
# Vibeflow
Use the CLI as the source of truth. Do not infer that a workflow is safe from its README, prompt, or visual layout.
## Workflow
1. Locate the exported workflow JSON. Never inspect or mutate a live production workflow unless the user explicitly requests it.
2. Run Vibeflow from a repository checkout:
```bash
node bin/vibeflow.mjs check path/to/workflow.json
```
For a released version without a checkout:
```bash
npx --yes github:domfelipe/vibeflow-n8n#v0.8.0 check path/to/workflow.json
```
3. Read [references/policies.md](references/policies.md) when interpreting or repairing a finding.
4. Fix errors before warnings. Preserve credential references, expressions, node IDs, and unrelated workflow behavior.
5. Re-run the check after every repair. Stop only when blocking findings are gone or explicitly waived in `.vibeflow.json` with a documented reason.
6. Report changed nodes, remaining warnings, and what still needs runtime validation in n8n.
## Safety boundaries
- Never copy literal credentials into a workflow to silence `VF001`.
- Never disable `VF006` for customer-facing agents without explicit user approval; an off switch must block inference and all AI responses.
- Treat static analysis as a preflight, not proof of runtime correctness.
- Prefer fixing a shared upstream node over duplicating guards across branches.
- Keep fixes local to the exported workflow until the user authorizes deployment.
## Output
Return the CLI result, the smallest safe repair, and any unresolved runtime check. Use SARIF for GitHub code scanning and JSON for automation.

View file

@ -0,0 +1,4 @@
interface:
display_name: "Vibeflow"
short_description: "Safety checks for AI-generated n8n workflows"
default_prompt: "Use $vibeflow to audit this n8n workflow and fix blocking findings."

View file

@ -0,0 +1,16 @@
# Vibeflow policy reference
| ID | Default | Meaning | Minimum repair |
|---|---|---|---|
| VF000 | error | Invalid workflow export | Export valid n8n JSON with a `nodes` array. |
| VF001 | error | Literal secret in parameters | Use n8n credentials, a vault, or an environment expression. |
| VF002 | error | Host-level node | Remove it or explicitly approve the node type in policy. |
| VF003 | warning | Webhook without supported auth and a credential reference | Add header/basic/JWT auth backed by an n8n credential. |
| VF004 | warning | External action without a connected failure path | Connect a `continueErrorOutput` branch or configure `settings.errorWorkflow`. |
| VF005 | warning | Inbound side effects without an atomic deduplication gate | Use a claim that emits no item for duplicates, such as `INSERT ... ON CONFLICT DO NOTHING ... RETURNING`, on every path. |
| VF006 | error | An AI entry path bypasses the structural kill switch | Put a real IF/Switch/Code gate that reads agent status on every entry path. |
| VF007 | warning | AI Agent without a reachable external handoff action | Add a downstream ticket, chat, email, or equivalent human escalation action. |
| VF008 | warning | Missing or excessive execution timeout | Set the workflow timeout between 1 and 3600 seconds. |
| VF009 | warning | Unsafe retry policy | Add idempotency, bound attempts, and configure backoff. |
Configuration changes severity or domain vocabulary; it does not prove the suppressed risk is safe. Keep waivers visible in `.vibeflow.json` and explain them in the pull request.