What earns a workflow a card
A picture of an agentic workflow is a good place to start adapting one to your own needs. So a listing here has one job — show you the shape, honestly. Every word on a card is computed from the artifact. None of it is taken from what the file, its repository, or its published index says about itself.
Sibling page: plugin and skill listing criteria. Different artifacts, different checks, same floor.
A listing is a recipe, not a file
609 agentic workflows survive the checks below. They do not make 609 cards. They make 299 — because 50.9% of them are the same idea drawn differently.
A recipe is the tuple of things that determine what a workflow is: its kind, its model, its memory, its tool set, its vector store, its embeddings, its chains, and its trigger. Two workflows with the same recipe are two people solving the same problem with the same parts. Sixteen of them, in one case — laid out sixteen different ways, under sixteen different names, 268 of the 609 carrying no name at all.
The four checks
Check 1 — Parse and identify. Read the file, identify which tool wrote it, and record the adapter and version that read it. A file no adapter claims is recorded as unread rather than guessed at. Nothing is executed at any point; the artifact is read, never run.
Check 2 — Wiring integrity. Resolve both endpoints of every declared connection against the node table and record how many resolve. This is the check that decides whether a listing is possible, and it is the one nothing else in this ecosystem performs.
Check 3 — Anatomy. Classify the resolved graph by what it actually contains: model, memory, tool set, vector store, embeddings, output parser, and the ordinary services it touches. The kind — retrieval agent, tool agent, chat agent, chain — falls out of that classification rather than being asserted.
Check 4 — Recipe assignment. Hash the artifact four ways — raw bytes, canonical form, wiring, recipe — and place it in the directory relative to what is already listed. New recipe, new card. Everything else attaches to an existing one.
What gets in
Each candidate runs the ladder below, cheapest test first, and stops at the first hit.
The two hash steps do almost nothing inside a single repository that has already been deduplicated upstream — 2.7% and 3.6% here. Across mirrors they do the heavy lifting, because a canonical hash survives a reformat between forks where a raw file hash does not.
Verdicts
| Verdict | What it means |
|---|---|
| LISTED | The graph resolves, the anatomy classifies, and the recipe is new to the directory. It gets a card, and the card names the file it was derived from. |
| VARIANT | The graph resolves but the recipe already exists. It attaches to that card and contributes to its file count, its wiring count, and its variance summary. It is not discarded, because what differs between members of a recipe is frequently the most useful thing about them. |
| NOT-ASSESSED | The file parses but the graph does not resolve — connections absent, or endpoints that name nodes the file does not contain. Never listed, never counted as a pass, never silently dropped. The reason is recorded. |
| EXCLUDED | A byte-identical or canonically identical copy of something already read. Discarded before any further check runs. |
Variants attach; they are not thrown away. If fifteen members of a recipe handle a failure branch and one does not, collapsing to a single representative and discarding the rest erases the only interesting thing in the group. The card keeps the summary of what differs — how many distinct wirings, what range of node counts, which services appear across members — and drops only the duplicate payloads.
What a card is allowed to say
Everything above the rule on a card is computed from the graph: the pattern string, the kind, the model, the memory, the tool set, the store, the node counts. Everything below it is quoted, attributed, and marked unverified.
name field are three claims about an artifact. This directory reads the artifact.What is not assessed
A card tells you the shape of a workflow. It does not tell you whether the workflow is any good, and nothing here should be read as saying so.
The behavioural gate that would close the last two has not been built. Until it is, the fields it would fill stay absent rather than being filled with a default that reads like a finding.
What you can take away
Each card offers a canonical JSON description of the workflow — its steps, its edges, and a provenance block naming the file it came from, the executable-versus-annotation split, and the unverified name claim — alongside a prompt written to hand that shape to a coding agent.
The canonical form is deliberately not an n8n file. n8n is a good notation for an agentic workflow and a poor runtime for one, and the point of a starter is the shape, not the vendor. Converters back out to specific tools are intended and do not exist yet. When one ships it will be named here, and until then this sentence is the whole status.
Where the listings come from
Everything currently listed is read from Zie619/n8n-workflows at commit c4885eee (2025-08-05) — last commit where the connection graph resolves — and cross-checked against an uncorrupted public mirror, Danitilahun/n8n-workflow-templates. The comparison with that repository’s current HEAD is the reason the wiring check exists at all.
| at c4885eee | at HEAD (2026-06-24) | |
|---|---|---|
| workflows with a readable graph | 2,000 of 2,055 | 4 of 2,061 |
| connection endpoints that resolve | 21,488 of 21,557 | 19 of 27,544 |
| LLM and agent nodes present | 3,957 | 1 |
Two further properties of this corpus are worth stating because they bear on what any listing built from it can honestly claim. 53 files ship a node array and no connections object whatsoever — those are not workflows and are recorded as not-assessed. And 25.2% of all nodes in the corpus are sticky notes and no-ops, which is why node counts on a card separate executable nodes from annotation rather than reporting one number that flatters the artifact.
The numbers, and where they come from
| Level | Key | Distinct | Collapsed |
|---|---|---|---|
| file | sha256 of bytes | 1,999 | 2.7% |
| canonical | strip id, position, webhookId, credentials, timestamps; sort keys | 1,981 | 3.6% |
| wiring | node-type multiset + edge set, annotation nodes removed | 1,694 | 15.3% of 2,000 |
| Kind | Workflows | Recipes |
|---|---|---|
| chain | 205 | 83 |
| chat agent | 174 | 82 |
| tool agent | 144 | 75 |
| RAG agent | 86 | 59 |
data/workflows/corpus.ts, which is regenerated from the artifacts by scripts/gen-workflow-corpus.py. None of them is typed into this file by hand. A page whose entire argument is “we publish what the artifacts show” should read the artifacts, and the counts on it should go stale only when the corpus does.Corpus generated 2026-08-21. A number here that a re-read of the artifacts does not reproduce is a defect — report it and it gets corrected in public, with the correction kept.