Agents & OrchestrationSûr100100/100
Aggregation (TanStack)
Aggregate TanStack Table columns independently of grouping, including grand totals, caller-selected row totals, multiple keyed aggregations, custom context-based definitions, grouped merges, manual values, and worker constraints.
ou envoie-le directement à ton agent.
Installer dans ton projet
$ curl -fsSL https://arboristhree.xyz/cli/install-skill.mjs -o /tmp/arboris-install-skill.mjs && node /tmp/arboris-install-skill.mjs aggregation__tanstack-table__packages-table-core-skills-d0819d19bcb0TanStack
TanStack/table
Contenu à copier
---
name: aggregation
description: >
Aggregate TanStack Table columns independently of grouping, including grand totals, caller-selected row totals, multiple keyed aggregations, custom context-based definitions, grouped merges, manual values, and worker constraints.
metadata:
origin: TanStack
{ type: sub-skill, library: '@tanstack/table-core', library_version: '9.2.4' }
requires: ['core', 'table-features']
sources:
- 'TanStack/table:docs/guide/aggregation.md'
- 'TanStack/table:docs/framework/react/guide/aggregation.md'
- 'TanStack/table:packages/table-core/src/features/row-aggregation'
- 'TanStack/table:examples/react/aggregation'
- 'TanStack/table:examples/react/grouped-aggregation'
---
This skill builds on `core` and `table-features`. Aggregation is independent
from grouping: use it alone for totals, or combine it with the `grouping` skill
for synthetic grouped rows.
## Setup
<!-- skill-snippet:check -->
```ts
import {
rowAggregationFeature,
aggregationFn_mean,
aggregationFn_sum,
tableFeatures,
} from '@tanstack/table-core'
export const features = tableFeatures({
rowAggregationFeature,
aggregationFns: {
mean: aggregationFn_mean,
sum: aggregationFn_sum,
},
})
```
## Core Patterns
### Grand total and selected row scopes
```ts
const grandTotal = salaryColumn.getAggregationValue()
const filteredTotal = salaryColumn.getAggregationValue({
rows: table.getFilteredRowModel().rows,
})
const childTotal = salaryColumn.getAggregationValue({
rows: table.getCoreRowModel().rows,
maxDepth: 1,
})
```
The default uses the pre-grouped row model. Explicit rows can come from any row
model or caller-selected subset. `maxAggregationDepth` defaults to `0`, which
selects the supplied roots; `1` selects direct sub-rows, and `Infinity` selects
terminal rows. Branches that end early contribute their deepest available row.
Default calls are cached; explicit-row calls intentionally are not because array
identity and contents are caller-owned. `table.getMaxSubRowDepth()` returns the
deepest structural depth in the core row model.
### Multiple aggregations
```ts
columnHelper.accessor('salary', {
aggregationFn: ['mean', { id: 'range', aggregationFn: 'extent' }],
})
const value = salaryColumn.getAggregationValue<{
mean: number
range: [number, number]
}>()
```
A scalar option returns a scalar. An array returns a keyed object. Named
functions use their registry name; descriptors provide a stable `id`, which is
required for inline definitions in an array.
### Custom definitions
```ts
const weightedMean = constructAggregationFn({
aggregate: ({ rows, getValue }) => {
const total = rows.reduce((sum, row) => sum + Number(getValue(row)), 0)
return rows.length ? total / rows.length : undefined
},
})
```
The context provides depth-selected `rows`, `maxDepth`, `getValue`, `column`,
`columnId`, `table`, and optional grouped-only `groupingRow` and `subRows`.
Every aggregation configured on a column receives the same row frontier. Add
`merge({ subRowResults, subRows, ...context })` when nested groups can more
efficiently combine already-computed sub-row results; otherwise the engine calls
`aggregate` with both row sets. `subRowResults[i]` corresponds to `subRows[i]`.
### Manual or remote values
Set a column definition's `getAggregationValue(context)` to return `{ value }`
for requests handled by a server or another execution environment. Returning
`undefined` falls back to the local definition. `manualAggregation: true`
disables that local fallback.
## Common Mistakes
### [HIGH] Adding grouping for a grand total
Wrong: registering `columnGroupingFeature` solely to total a column.
Correct: register `rowAggregationFeature` and call
`column.getAggregationValue()`. Grouping is only required for grouped rows.
### [HIGH] Passing a scope label and rows
There is no scope option. Call `getAggregationValue()` for the cached default,
or pass a single options object containing rows from the desired row model and
`maxDepth` when the desired frontier is below those rows.
### [HIGH] Reusing the legacy callable signature
Wrong: `(columnId, leafRows, childRows) => result`.
Correct: `constructAggregationFn({ aggregate: ({ rows, subRows, getValue }) => result })`.
### [MEDIUM] Assuming arbitrary totals run in the worker
The experimental worker computes grouped row-model aggregates. Public
`getAggregationValue(options?)` totals execute on the main thread, and custom
grouped results sent by the worker must be structured-cloneable.
## API Discovery
Inspect `node_modules/@tanstack/table-core/dist/features/row-aggregation/` and the
Aggregation Guide. Use `Column_RowAggregation`, `AggregationFnDef`,
`AggregationContext`, and `AggregationResult` for the typed public surface.Colle ce Markdown dans ton agent ou utilise les boutons ci-dessus pour l’écrire dans ton projet.
Ce que fait Aggregation (TanStack)
Applique les pratiques du skill aggregation__tanstack-table__packages-table-core-skills-d0819d19bcb0.
Comment utiliser Aggregation (TanStack)
1
Copie le prompt
Un clic copie le prompt packagé (ou l'envoie à ton agent).
2
L'agent installe le skill
Il ajoute le SKILL.md et ses ressources à ton projet.
3
Activation automatique
Le skill s'active dès que le contexte correspond.
Déclencheurs pour Aggregation (TanStack)
Dis simplement à ton agent quelque chose comme :
Applique le skill aggregation__tanstack-table__packages-table-core-skills-d0819d19bcb0 à cette tâche
Utilise aggregation__tanstack-table__packages-table-core-skills-d0819d19bcb0 pour améliorer cette implémentation
Passe en revue ce sujet avec aggregation__tanstack-table__packages-table-core-skills-d0819d19bcb0
Skills liés à Aggregation (TanStack)
Acceleration (Microsoft)
Compare synthetic acceleration options and clearly separate scenario value from forecast commitments.Account Overview (Microsoft)
Create a synthetic Acme account overview and identify evidence that merits seller attention.Acroform Writer (Microsoft)
Use this skill whenever the user wants values written INTO an existing PDF form that lives in the connected SharePoint knowledge source — filling out, completing, populating, or submitting a fillable PDF (application, intake sheet, contract, government form) from data they supply, a spreadsheet row, or the conversation. Triggers include "fill out the job application form", "complete the intake form for [person]", "populate our standard NDA template", and "make this ready to send / non-editable" (flatten). The source form should be found via knowledge search; only ask the user to upload it if knowledge search turns up nothing plausible. different task), and do NOT use it on scanned/image-only PDFs that have no real fillable fields — those need OCR or manual overlay instead, which this skill explicitly detects and reports rather than silently failing.