Skip to content

Commit 54e9c4e

Browse files
ouiliameclaude
andcommitted
docs(tables): playbook prose pass on workflow columns + restore File block links
Workflow columns, against the docs-writing playbook: killed the banned 'Term — desc' bullets in the Configure list (term + verb form), restored the one universal analog (spreadsheet macro), fixed the clipped 'On,/Off,' fragments, replaced an invented <start.companyDomain> tag with the verified description, and thinned em-dashes to four page-wide with no clustering. Also repointed [File] block mentions back to /integrations/file now that the page exists again (FileV5 is visible upstream); the Files-store links stay on /files. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent e7f242a commit 54e9c4e

3 files changed

Lines changed: 16 additions & 16 deletions

File tree

apps/docs/content/docs/en/files/generating.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ pageType: concept
77
import { Callout } from 'fumadocs-ui/components/callout'
88
import { Card, Cards } from 'fumadocs-ui/components/card'
99

10-
A generated file is an artifact a workflow run creates: a report, a CSV, a rendered audio clip. It starts as a value a block produces and becomes a workspace file when a [File](/files) block writes it to the [Files](/files) store. Once saved, it has a name, a size, and a URL, and any later run can read it back.
10+
A generated file is an artifact a workflow run creates: a report, a CSV, a rendered audio clip. It starts as a value a block produces and becomes a workspace file when a [File](/integrations/file) block writes it to the [Files](/files) store. Once saved, it has a name, a size, and a URL, and any later run can read it back.
1111

1212
Like a build pipeline that produces artifacts and stores them in an artifact repository, a workflow produces file artifacts that land in your workspace Files store, indexed by ID and shared across every workflow.
1313

@@ -27,7 +27,7 @@ A block's output is remembered under the block's name for the rest of the run, a
2727

2828
## Saving content with the File block
2929

30-
The [File](/files) block's **Write** operation creates a new workspace file. It takes two required fields: a `fileName` (like `report.md`) and the `content` string to store. It returns the saved file's details.
30+
The [File](/integrations/file) block's **Write** operation creates a new workspace file. It takes two required fields: a `fileName` (like `report.md`) and the `content` string to store. It returns the saved file's details.
3131

3232
{/* VISUAL: File Write anatomy: inputs (fileName, content, contentType?) → outputs (id, name, size, url) */}
3333

apps/docs/content/docs/en/files/using-in-workflows.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { Callout } from 'fumadocs-ui/components/callout'
88
import { Card, Cards } from 'fumadocs-ui/components/card'
99
import { WorkflowPreview, FILE_SUMMARY_WORKFLOW } from '@/components/workflow-preview'
1010

11-
A file is a document, image, spreadsheet, or PDF in your workspace. A workflow can read a file to act on its contents, pass a file to a block or tool that needs one (attach a PDF to an email, send an image to a vision model), or produce a new file and save it. The [File](/files) block is how a file enters or leaves a workflow; the work in between is done by whatever block the task calls for.
11+
A file is a document, image, spreadsheet, or PDF in your workspace. A workflow can read a file to act on its contents, pass a file to a block or tool that needs one (attach a PDF to an email, send an image to a vision model), or produce a new file and save it. The [File](/integrations/file) block is how a file enters or leaves a workflow; the work in between is done by whatever block the task calls for.
1212

1313
What you do with a file depends on the task, so this page covers the File block's operations and how a file moves between blocks rather than one fixed recipe. The example we'll use throughout reads `report.pdf`, asks an agent to summarize it, and saves the summary as `summary.md`, which exercises reading, processing, and writing in one workflow.
1414

apps/docs/content/docs/en/tables/workflow-columns.mdx

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { Image } from '@/components/ui/image'
1010

1111
A [table](/tables) is a grid of typed columns. Usually you type a column's values in. A **workflow column** is different: its values come from a [workflow](/workflows) that runs once per row. For each row, the workflow reads the columns you choose as input, runs its blocks, and writes its results back into columns on that same row.
1212

13-
This is what makes a table active. Instead of running a workflow by hand and pasting the results in, you attach the workflow to the table and it fills each row on its own.
13+
This is what makes a table active. Instead of running a workflow by hand and pasting the results in, you attach the workflow to the table and it fills each row on its own — a bit like a spreadsheet macro that runs on every row, except each step is a full workflow.
1414

1515
The running example is a table of AI startups, `ai_startup_customers`. The company is typed in; three workflow groups fill everything else:
1616

@@ -25,7 +25,7 @@ The running example is a table of AI startups, `ai_startup_customers`. The compa
2525
- **Company Info** reads the domain and fills `employee_count` and `description`.
2626
- **Lead Score Enrichment** reads the info and writes `lead_score`, `priority`, and `score_reasoning`.
2727

28-
Each group's header spans the columns it owns, every row has a run button (▷), and the toolbar shows the work in flight here, **21 running**, with **Stop all** beside it.
28+
Each group's header spans the columns it owns, every row has a run button (▷), and the toolbar shows the work in flight: here, **21 running**, with **Stop all** beside it.
2929

3030
```
3131
domain │ employee_count │ lead_score │ priority
@@ -39,9 +39,9 @@ genspark.net │ 51-250 │ 20 │ Cold
3939

4040
### Workflow group
4141

42-
A **workflow group** is the unit you configure: one workflow, plus how its inputs and outputs map to columns, plus what makes it run. One group can produce several result columns from a single run per row Lead Score Enrichment fills `lead_score`, `priority`, and `score_reasoning` together.
42+
A **workflow group** is the unit you configure: one workflow, plus how its inputs and outputs map to columns, plus what makes it run. One group can produce several result columns from a single run per row: Lead Score Enrichment fills `lead_score`, `priority`, and `score_reasoning` together.
4343

44-
Click a group's header to open **Configure workflow**. It previews the workflow it will run, and holds everything that defines the group:
44+
A group's **Configure workflow** panel holds everything that defines it, with a preview of the workflow it will run:
4545

4646
<Image
4747
src="/static/tables/workflow-columns/configure-workflow.png"
@@ -50,10 +50,10 @@ Click a group's header to open **Configure workflow**. It previews the workflow
5050
height={792}
5151
/>
5252

53-
- **Workflow** which workflow runs per row (here, *Lead Score Enrichment*).
54-
- **Add column inputs** — map columns to the workflow's inputs.
55-
- **Output columns** which workflow outputs to write back (here, 3 selected).
56-
- **Auto-run workflow** and **Run after** when rows run (below).
53+
- **Workflow** picks which workflow runs per row; here, *Lead Score Enrichment*.
54+
- **Add column inputs** maps columns to the workflow's inputs.
55+
- **Output columns** picks which workflow outputs to write back; here, 3 are selected.
56+
- **Auto-run workflow** and **Run after** control when rows run (both below).
5757

5858
### Input columns
5959

@@ -66,21 +66,21 @@ Click a group's header to open **Configure workflow**. It previews the workflow
6666
height={604}
6767
/>
6868

69-
When the group runs a row, that row's `domain` value becomes the workflow's input, read inside it as `<start.companyDomain>`. The workflow only sees the columns you mapped; the rest of the row is untouched, and inputs are read-only during the run.
69+
When the group runs a row, that row's `domain` value becomes the workflow's input, read from its [Start](/triggers/start) trigger like any other input. The workflow only sees the columns you mapped; the rest of the row is untouched, and inputs are read-only during the run.
7070

7171
### Output columns
7272

7373
**Output columns** receive the workflow's results. Each one binds a workflow output to a column name — in the panel above, the workflow's `employee count` output writes to the `employee_count_0` column and `description` writes to `description`. The workflow runs once per row; every output you selected is written to its column, and outputs you didn't select are discarded.
7474

7575
### Run after
7676

77-
**Run after** is the set of columns that must be filled before the group runs on a row. Company Info runs after `domain`: a row with an empty `domain` waits, and the moment Company Domain fills it, that row becomes eligible. Lead Score Enrichment runs after the info columns six dependencies in the panel above.
77+
**Run after** is the set of columns that must be filled before the group runs on a row. Company Info runs after `domain`: a row with an empty `domain` waits, and the moment Company Domain fills it, that row becomes eligible. Lead Score Enrichment runs after the info columns, the six dependencies in the panel above.
7878

7979
A dependency can be a typed column or another group's output column. That second case is what makes cascades work (below). At least one dependency is required when auto-run is on.
8080

8181
### Auto-run
8282

83-
**Auto-run** decides whether the group fires on its own. On, a group runs a row as soon as that row's Run-after columns are filled, no click neededthat's how 21 rows end up running at once in the example. Off, the group is manual: it runs only when you trigger it.
83+
**Auto-run** decides whether the group fires on its own. With auto-run on, a group runs a row as soon as that row's Run-after columns are filled, no click needed; that's how 21 rows end up running at once in the example. With it off, the group is manual: it runs only when you trigger it.
8484

8585
You trigger a group by hand from its column header menu:
8686

@@ -104,15 +104,15 @@ While a group works a row, its output cells show their state instead of a value:
104104
| **Cancelled** | The run was stopped before it finished. |
105105
| **Not found** | An enrichment finished but matched nothing for this row. |
106106

107-
When a value arrives, it replaces the badge, and cells that finish stay filled even while other columns on the row are still running. You can see this in the example table: most rows are fully scored while a few show **Not found** where an enrichment came up empty — and the lead scorer still ran on those rows, working with what it had.
107+
When a value arrives, it replaces the badge, and cells that finish stay filled even while other columns on the row are still running. You can see this in the example table: most rows are fully scored, while a few show **Not found** where an enrichment came up empty. The lead scorer still ran on those rows, working with what it had.
108108

109109
<Callout type="info">
110110
On error, the row stays in the **Error** state. Auto-run skips errored rows, so a failure doesn't loop. To retry, fix the input and use **Run all rows**, which re-runs regardless of the auto-run setting. A row is only ever worked by one run at a time, so re-running doesn't race.
111111
</Callout>
112112

113113
## Cascades
114114

115-
Because a group can run after another group's output column, you can chain groups across the table. The example is a three-stage **cascade**: Company Domain fills `domain` from the company name, Company Info runs after `domain` and fills the info columns, and Lead Score Enrichment runs after those and writes the score. Each row advances through the stages independentlythe moment its own Run-after columns are filled, it becomes eligible for the next group, which is why some rows in the screenshot are fully scored while others are still mid-pipeline.
115+
Because a group can run after another group's output column, you can chain groups across the table. The example is a three-stage **cascade**: Company Domain fills `domain` from the company name, Company Info runs after `domain` and fills the info columns, and Lead Score Enrichment runs after those and writes the score. Each row advances through the stages independently: the moment its own Run-after columns are filled, it becomes eligible for the next group. That's why some rows in the screenshot are fully scored while others are still mid-pipeline.
116116

117117
## When to use a workflow column
118118

0 commit comments

Comments
 (0)