← TableauCONTENT HISTORY

Update to Tableau

Snapshot Sep 30, 2026 · 23:07 UTC · version 2.0.4

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "tableau-workbook-authoring",
  "description": "Create, edit, copy, or republish a Tableau workbook by editing TWB XML and publishing it through Tableau MCP. Use for create, build, edit, modify, copy, republish, or add-chart requests. Do not use for read-only analysis or for just opening/showing an existing view (tableau-content-viewer).",
  "included_files": [
    {
      "relative_path": "references/catalog-templates.md",
      "size_in_bytes": 12570
    },
    {
      "relative_path": "references/field-edits.md",
      "size_in_bytes": 10873
    },
    {
      "relative_path": "references/new-workbook.md",
      "size_in_bytes": 1309
    },
    {
      "relative_path": "references/package-and-upload-fallbacks.md",
      "size_in_bytes": 1722
    },
    {
      "relative_path": "references/xml-troubleshooting.md",
      "size_in_bytes": 2127
    },
    {
      "relative_path": "resources/catalog-overrides.json",
      "size_in_bytes": 598
    },
    {
      "relative_path": "resources/catalog.json",
      "size_in_bytes": 270828
    },
    {
      "relative_path": "resources/examples/calculated-field.json",
      "size_in_bytes": 1168
    },
    {
      "relative_path": "resources/examples/column-instance-naming.json",
      "size_in_bytes": 2198
    },
    {
      "relative_path": "resources/examples/dashboard-tiled.json",
      "size_in_bytes": 3152
    },
    {
      "relative_path": "resources/examples/dashboard-validation-grid.json",
      "size_in_bytes": 5655
    },
    {
      "relative_path": "resources/examples/dual-axis.json",
      "size_in_bytes": 2334
    },
    {
      "relative_path": "resources/examples/encoding-pane-level.json",
      "size_in_bytes": 1638
    },
    {
      "relative_path": "resources/examples/filter-categorical.json",
      "size_in_bytes": 1460
    },
    {
      "relative_path": "resources/examples/filter-relative-date.json",
      "size_in_bytes": 2655
    },
    {
      "relative_path": "resources/examples/lod-fixed.json",
      "size_in_bytes": 1995
    },
    {
      "relative_path": "resources/examples/mark-encoding.json",
      "size_in_bytes": 2134
    },
    {
      "relative_path": "resources/examples/parameter.json",
      "size_in_bytes": 2752
    },
    {
      "relative_path": "resources/examples/reference-line.json",
      "size_in_bytes": 1868
    },
    {
      "relative_path": "resources/examples/sort.json",
      "size_in_bytes": 1127
    },
    {
      "relative_path": "resources/examples/table-calc.json",
      "size_in_bytes": 2222
    },
    {
      "relative_path": "resources/examples/topn-table-calc-filter.json",
      "size_in_bytes": 4302
    },
    {
      "relative_path": "resources/examples/worksheet-bar-chart.json",
      "size_in_bytes": 2745
    },
    {
      "relative_path": "resources/provenance.json",
      "size_in_bytes": 656
    },
    {
      "relative_path": "resources/references/corpus.json",
      "size_in_bytes": 177777
    },
    {
      "relative_path": "resources/references/tableau-desktop-commands-reference.json",
      "size_in_bytes": 956236
    },
    {
      "relative_path": "resources/references/twb-example-index.json",
      "size_in_bytes": 941891
    },
    {
      "relative_path": "resources/references/workbook-schema-reference.json",
      "size_in_bytes": 212146
    },
    {
      "relative_path": "resources/schemas/2018_1/twb_2018.1.0.xsd",
      "size_in_bytes": 294283
    },
    {
      "relative_path": "resources/schemas/2018_2/twb_2018.2.0.xsd",
      "size_in_bytes": 293037
    },
    {
      "relative_path": "resources/schemas/2018_3/twb_2018.3.0.xsd",
      "size_in_bytes": 293834
    },
    {
      "relative_path": "resources/schemas/2019_1/twb_2019.1.0.xsd",
      "size_in_bytes": 294329
    },
    {
      "relative_path": "resources/schemas/2019_2/twb_2019.2.0.xsd",
      "size_in_bytes": 295171
    },
    {
      "relative_path": "resources/schemas/2019_3/twb_2019.3.0.xsd",
      "size_in_bytes": 295661
    },
    {
      "relative_path": "resources/schemas/2019_4/twb_2019.4.0.xsd",
      "size_in_bytes": 296006
    },
    {
      "relative_path": "resources/schemas/2020_1/twb_2020.1.0.xsd",
      "size_in_bytes": 296344
    },
    {
      "relative_path": "resources/schemas/2020_2/twb_2020.2.0.xsd",
      "size_in_bytes": 296786
    },
    {
      "relative_path": "resources/schemas/2020_3/twb_2020.3.0.xsd",
      "size_in_bytes": 297333
    },
    {
      "relative_path": "resources/schemas/2020_4/twb_2020.4.0.xsd",
      "size_in_bytes": 298441
    },
    {
      "relative_path": "resources/schemas/2021_1/twb_2021.1.0.xsd",
      "size_in_bytes": 298441
    },
    {
      "relative_path": "resources/schemas/2021_2/twb_2021.2.0.xsd",
      "size_in_bytes": 298498
    },
    {
      "relative_path": "resources/schemas/2021_3/twb_2021.3.0.xsd",
      "size_in_bytes": 298575
    },
    {
      "relative_path": "resources/schemas/2021_4/twb_2021.4.0.xsd",
      "size_in_bytes": 298618
    },
    {
      "relative_path": "resources/schemas/2022_1/twb_2022.1.0.xsd",
      "size_in_bytes": 298878
    },
    {
      "relative_path": "resources/schemas/2022_2/twb_2022.2.0.xsd",
      "size_in_bytes": 298878
    },
    {
      "relative_path": "resources/schemas/2022_3/twb_2022.3.0.xsd",
      "size_in_bytes": 301496
    },
    {
      "relative_path": "resources/schemas/2022_4/twb_2022.4.0.xsd",
      "size_in_bytes": 301707
    },
    {
      "relative_path": "resources/schemas/2023_1/twb_2023.1.0.xsd",
      "size_in_bytes": 301854
    },
    {
      "relative_path": "resources/schemas/2023_2/twb_2023.2.0.xsd",
      "size_in_bytes": 302048
    },
    {
      "relative_path": "resources/schemas/2023_3/twb_2023.3.0.xsd",
      "size_in_bytes": 302131
    },
    {
      "relative_path": "resources/schemas/2024_1/twb_2024.1.0.xsd",
      "size_in_bytes": 302131
    },
    {
      "relative_path": "resources/schemas/2024_2/twb_2024.2.0.xsd",
      "size_in_bytes": 307971
    },
    {
      "relative_path": "resources/schemas/2024_3/twb_2024.3.0.xsd",
      "size_in_bytes": 308049
    },
    {
      "relative_path": "resources/schemas/2025_1/twb_2025.1.0.xsd",
      "size_in_bytes": 308105
    },
    {
      "relative_path": "resources/schemas/2025_2/twb_2025.2.0.xsd",
      "size_in_bytes": 308437
    },
    {
      "relative_path": "resources/schemas/2025_3/twb_2025.3.0.xsd",
      "size_in_bytes": 309143
    },
    {
      "relative_path": "resources/schemas/2026_1/twb_2026.1.0.xsd",
      "size_in_bytes": 297129
    },
    {
      "relative_path": "resources/schemas/2026_2/twb_2026.2.0.xsd",
      "size_in_bytes": 306943
    },
    {
      "relative_path": "resources/starters/minimal-workbook.twb",
      "size_in_bytes": 385
    },
    {
      "relative_path": "resources/templates/executable/box-plot-chart.tbm",
      "size_in_bytes": 2767
    },
    {
      "relative_path": "resources/templates/executable/bullet-variance-chart.tbm",
      "size_in_bytes": 2577
    },
    {
      "relative_path": "resources/templates/executable/change-over-time-area-chart.tbm",
      "size_in_bytes": 2273
    },
    {
      "relative_path": "resources/templates/executable/change-over-time-calendar-heatmap.tbm",
      "size_in_bytes": 2656
    },
    {
      "relative_path": "resources/templates/executable/change-over-time-stacked-area-chart.tbm",
      "size_in_bytes": 2282
    },
    {
      "relative_path": "resources/templates/executable/correlation-bubble-chart.tbm",
      "size_in_bytes": 2877
    },
    {
      "relative_path": "resources/templates/executable/correlation-dual-axis-chart.tbm",
      "size_in_bytes": 3489
    },
    {
      "relative_path": "resources/templates/executable/distribution-bar-code-chart.tbm",
      "size_in_bytes": 2928
    },
    {
      "relative_path": "resources/templates/executable/funnel-chart.tbm",
      "size_in_bytes": 2135
    },
    {
      "relative_path": "resources/templates/executable/gantt-task-rollup-chart.tbm",
      "size_in_bytes": 2519
    },
    {
      "relative_path": "resources/templates/executable/gantt-timeline-chart.tbm",
      "size_in_bytes": 2522
    },
    {
      "relative_path": "resources/templates/executable/insights__bar_chart.tbm",
      "size_in_bytes": 3842
    },
    {
      "relative_path": "resources/templates/executable/insights__line_chart.tbm",
      "size_in_bytes": 3394
    },
    {
      "relative_path": "resources/templates/executable/kpi-text.tbm",
      "size_in_bytes": 2143
    },
    {
      "relative_path": "resources/templates/executable/magnitude-paired-bar.tbm",
      "size_in_bytes": 2959
    },
    {
      "relative_path": "resources/templates/executable/magnitude-paired-column-chart.tbm",
      "size_in_bytes": 2968
    },
    {
      "relative_path": "resources/templates/executable/magnitude-simple-bar.tbm",
      "size_in_bytes": 2538
    },
    {
      "relative_path": "resources/templates/executable/part-to-whole-pie-chart.tbm",
      "size_in_bytes": 2245
    },
    {
      "relative_path": "resources/templates/executable/part-to-whole-stacked-bar-chart.tbm",
      "size_in_bytes": 2896
    },
    {
      "relative_path": "resources/templates/executable/part-to-whole-treemap-chart.tbm",
      "size_in_bytes": 2640
    },
    {
      "relative_path": "resources/templates/executable/quota-attainment-bullet.tbm",
      "size_in_bytes": 2579
    },
    {
      "relative_path": "resources/templates/executable/ranking-dot-strip-plot.tbm",
      "size_in_bytes": 4381
    },
    {
      "relative_path": "resources/templates/executable/ranking-ordered-bar.tbm",
      "size_in_bytes": 2634
    },
    {
      "relative_path": "resources/templates/executable/ranking-ordered-column.tbm",
      "size_in_bytes": 2546
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__area__emphasize-total-change-more-than-parts.tbm",
      "size_in_bytes": 269906
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__calendar-heatmap__reveal-daily-weekly-seasonal-patterns.tbm",
      "size_in_bytes": 271582
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__candlestick__show-open-high-low-close-activity.tbm",
      "size_in_bytes": 32985
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__circle-timeline__show-sized-events-across-time-and-categories.tbm",
      "size_in_bytes": 275918
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__column__show-one-series-changing-across-periods.tbm",
      "size_in_bytes": 72770
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__connected-scatter__trace-two-metrics-evolving-together.tbm",
      "size_in_bytes": 58123
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__dual-line__compare-two-time-series-directly.tbm",
      "size_in_bytes": 275949
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__fan__show-forecast-uncertainty-widening-over-time.tbm",
      "size_in_bytes": 270278
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__gantt__show-start-duration-and-overlap-of-tasks.tbm",
      "size_in_bytes": 275291
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__line-plus-area__combine-trend-line-with-filled-volume.tbm",
      "size_in_bytes": 275244
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__line-plus-column__pair-volume-columns-with-a-rate-line.tbm",
      "size_in_bytes": 64245
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__line__default-time-series-trend.tbm",
      "size_in_bytes": 269174
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__multi-line__compare-many-series-with-optional-highlight.tbm",
      "size_in_bytes": 270571
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__ohlc__show-open-close-and-high-low-ranges.tbm",
      "size_in_bytes": 21779
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__priestley-timeline__show-date-and-duration-of-intervals.tbm",
      "size_in_bytes": 15412
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__seismogram__show-high-variance-series-as-mirrored-spikes.tbm",
      "size_in_bytes": 273320
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__stacked-area__show-composition-changing-over-time.tbm",
      "size_in_bytes": 267878
    },
    {
      "relative_path": "resources/templates/reference/change-over-time__steamgraph__show-organic-stacked-flows-over-time.tbm",
      "size_in_bytes": 273185
    },
    {
      "relative_path": "resources/templates/reference/connected-scatterplot.tbm",
      "size_in_bytes": 2836
    },
    {
      "relative_path": "resources/templates/reference/control-chart-xmr.tbm",
      "size_in_bytes": 4547
    },
    {
      "relative_path": "resources/templates/reference/correlation-highlight-table.tbm",
      "size_in_bytes": 6468
    },
    {
      "relative_path": "resources/templates/reference/correlation-scatter-plot-chart.tbm",
      "size_in_bytes": 3805
    },
    {
      "relative_path": "resources/templates/reference/correlation__bubble-scatter__relate-two-measures-and-encode-a-third-by-size.tbm",
      "size_in_bytes": 60179
    },
    {
      "relative_path": "resources/templates/reference/correlation__category-heatmap__show-patterns-across-two-categorical-axes.tbm",
      "size_in_bytes": 17005
    },
    {
      "relative_path": "resources/templates/reference/correlation__connected-scatter__show-how-two-metrics-move-together-over-time.tbm",
      "size_in_bytes": 36522
    },
    {
      "relative_path": "resources/templates/reference/correlation__line-plus-column__relate-an-amount-series-to-a-rate-series.tbm",
      "size_in_bytes": 73802
    },
    {
      "relative_path": "resources/templates/reference/correlation__radar-profile__compare-multivariate-profiles.tbm",
      "size_in_bytes": 41761
    },
    {
      "relative_path": "resources/templates/reference/correlation__scatter__relate-two-continuous-measures.tbm",
      "size_in_bytes": 59319
    },
    {
      "relative_path": "resources/templates/reference/correlation__xy-heatmap__show-patterns-between-two-category-dimensions.tbm",
      "size_in_bytes": 16180
    },
    {
      "relative_path": "resources/templates/reference/deviation-arrow.tbm",
      "size_in_bytes": 4385
    },
    {
      "relative_path": "resources/templates/reference/deviation-diverging-bar.tbm",
      "size_in_bytes": 3316
    },
    {
      "relative_path": "resources/templates/reference/deviation-gain-loss-chart.tbm",
      "size_in_bytes": 9856
    },
    {
      "relative_path": "resources/templates/reference/deviation-spine-chart.tbm",
      "size_in_bytes": 6114
    },
    {
      "relative_path": "resources/templates/reference/deviation__barbell__compare-two-values-per-category.tbm",
      "size_in_bytes": 274663
    },
    {
      "relative_path": "resources/templates/reference/deviation__bullet__track-actual-vs-target-and-performance-bands.tbm",
      "size_in_bytes": 274700
    },
    {
      "relative_path": "resources/templates/reference/deviation__diverging-bar__show-positive-and-negative-vs-baseline.tbm",
      "size_in_bytes": 275525
    },
    {
      "relative_path": "resources/templates/reference/deviation__diverging-stacked-bar__show-sentiment-or-likert-breakdown.tbm",
      "size_in_bytes": 36042
    },
    {
      "relative_path": "resources/templates/reference/deviation__spine__split-one-measure-into-two-opposing-parts.tbm",
      "size_in_bytes": 42570
    },
    {
      "relative_path": "resources/templates/reference/deviation__surplus-deficit-area__show-above-below-baseline-over-time.tbm",
      "size_in_bytes": 273677
    },
    {
      "relative_path": "resources/templates/reference/distribution-histogram.tbm",
      "size_in_bytes": 2324
    },
    {
      "relative_path": "resources/templates/reference/distribution__barcode__show-all-values-as-marks-on-a-strip.tbm",
      "size_in_bytes": 270381
    },
    {
      "relative_path": "resources/templates/reference/distribution__beeswarm__show-each-point-without-overlap-hiding-density.tbm",
      "size_in_bytes": 37036
    },
    {
      "relative_path": "resources/templates/reference/distribution__boxplot__summarize-median-spread-and-outliers-by-category.tbm",
      "size_in_bytes": 271287
    },
    {
      "relative_path": "resources/templates/reference/distribution__cumulative-curve__show-inequality-or-cumulative-share.tbm",
      "size_in_bytes": 277155
    },
    {
      "relative_path": "resources/templates/reference/distribution__dot-plot__show-min-max-or-range-across-categories.tbm",
      "size_in_bytes": 272643
    },
    {
      "relative_path": "resources/templates/reference/distribution__histogram__show-shape-and-frequency-of-a-measure.tbm",
      "size_in_bytes": 19030
    },
    {
      "relative_path": "resources/templates/reference/distribution__population-pyramid__compare-mirrored-group-distributions.tbm",
      "size_in_bytes": 20413
    },
    {
      "relative_path": "resources/templates/reference/distribution__violin__show-full-density-shape-beyond-simple-summary.tbm",
      "size_in_bytes": 34826
    },
    {
      "relative_path": "resources/templates/reference/flow__chord__show-two-way-flows-in-a-matrix.tbm",
      "size_in_bytes": 34592
    },
    {
      "relative_path": "resources/templates/reference/flow__network__show-relationship-strength-among-nodes.tbm",
      "size_in_bytes": 28540
    },
    {
      "relative_path": "resources/templates/reference/flow__sankey__trace-volume-through-multi-stage-paths.tbm",
      "size_in_bytes": 278172
    },
    {
      "relative_path": "resources/templates/reference/flow__waterfall__sequence-budget-or-process-steps-with-plus-minus.tbm",
      "size_in_bytes": 16005
    },
    {
      "relative_path": "resources/templates/reference/gantt-chart.tbm",
      "size_in_bytes": 6328
    },
    {
      "relative_path": "resources/templates/reference/magnitude__bubble-pack__compare-part-sizes-without-axes.tbm",
      "size_in_bytes": 270635
    },
    {
      "relative_path": "resources/templates/reference/magnitude__column__compare-sizes-from-zero.tbm",
      "size_in_bytes": 273216
    },
    {
      "relative_path": "resources/templates/reference/magnitude__horizontal-bar__compare-discrete-categories-from-zero.tbm",
      "size_in_bytes": 273600
    },
    {
      "relative_path": "resources/templates/reference/magnitude__lollipop__emphasize-values-over-bar-ink.tbm",
      "size_in_bytes": 272900
    },
    {
      "relative_path": "resources/templates/reference/magnitude__paired-bar__compare-two-series-across-categories.tbm",
      "size_in_bytes": 272886
    },
    {
      "relative_path": "resources/templates/reference/magnitude__paired-column__compare-two-series-across-categories.tbm",
      "size_in_bytes": 272745
    },
    {
      "relative_path": "resources/templates/reference/magnitude__parallel-coordinates__compare-entities-across-many-variables.tbm",
      "size_in_bytes": 53549
    },
    {
      "relative_path": "resources/templates/reference/magnitude__pictogram__count-with-repeated-icons-whole-numbers-only.tbm",
      "size_in_bytes": 32029
    },
    {
      "relative_path": "resources/templates/reference/magnitude__proportional-symbol__show-size-when-fine-differences-do-not-matter.tbm",
      "size_in_bytes": 60602
    },
    {
      "relative_path": "resources/templates/reference/magnitude__radar__compare-many-variables-for-one-or-few-entities.tbm",
      "size_in_bytes": 48996
    },
    {
      "relative_path": "resources/templates/reference/magnitude__radial-bar__show-circular-relative-bars-or-progress.tbm",
      "size_in_bytes": 34241
    },
    {
      "relative_path": "resources/templates/reference/pareto-chart.tbm",
      "size_in_bytes": 5567
    },
    {
      "relative_path": "resources/templates/reference/part-to-whole-proportional-stacked-bar.tbm",
      "size_in_bytes": 3600
    },
    {
      "relative_path": "resources/templates/reference/part-to-whole-waterfall.tbm",
      "size_in_bytes": 5614
    },
    {
      "relative_path": "resources/templates/reference/part-to-whole__arc__schematic-hierarchical-breakdown-use-sparingly.tbm",
      "size_in_bytes": 278656
    },
    {
      "relative_path": "resources/templates/reference/part-to-whole__donut__show-parts-with-center-space-for-total.tbm",
      "size_in_bytes": 274616
    },
    {
      "relative_path": "resources/templates/reference/part-to-whole__funnel__show-stage-dropoff-through-a-process.tbm",
      "size_in_bytes": 18626
    },
    {
      "relative_path": "resources/templates/reference/part-to-whole__marimekko__encode-share-with-both-width-and-height.tbm",
      "size_in_bytes": 273415
    },
    {
      "relative_path": "resources/templates/reference/part-to-whole__pie__simple-few-part-composition.tbm",
      "size_in_bytes": 270850
    },
    {
      "relative_path": "resources/templates/reference/part-to-whole__polar-area__compare-parts-on-a-radial-axis.tbm",
      "size_in_bytes": 37687
    },
    {
      "relative_path": "resources/templates/reference/part-to-whole__proportional-stacked-bar__show-size-and-share-together.tbm",
      "size_in_bytes": 73862
    },
    {
      "relative_path": "resources/templates/reference/part-to-whole__stacked-column__compare-composition-across-categories.tbm",
      "size_in_bytes": 271176
    },
    {
      "relative_path": "resources/templates/reference/part-to-whole__sunburst__show-nested-hierarchy-as-rings.tbm",
      "size_in_bytes": 277750
    },
    {
      "relative_path": "resources/templates/reference/part-to-whole__treemap__show-hierarchical-sizes-in-nested-rectangles.tbm",
      "size_in_bytes": 270537
    },
    {
      "relative_path": "resources/templates/reference/part-to-whole__unit-grid__show-percentages-as-filled-cells.tbm",
      "size_in_bytes": 282927
    },
    {
      "relative_path": "resources/templates/reference/part-to-whole__venn__schematic-overlap-between-sets.tbm",
      "size_in_bytes": 278593
    },
    {
      "relative_path": "resources/templates/reference/part-to-whole__waterfall__bridge-start-to-end-with-plus-minus-steps.tbm",
      "size_in_bytes": 21868
    },
    {
      "relative_path": "resources/templates/reference/ranking-bump-chart.tbm",
      "size_in_bytes": 8613
    },
    {
      "relative_path": "resources/templates/reference/ranking__bump__track-rank-changes-across-many-periods.tbm",
      "size_in_bytes": 277597
    },
    {
      "relative_path": "resources/templates/reference/ranking__dot-strip__space-efficient-ranks-across-many-categories.tbm",
      "size_in_bytes": 74892
    },
    {
      "relative_path": "resources/templates/reference/ranking__lollipop__rank-and-highlight-values-with-less-ink.tbm",
      "size_in_bytes": 273623
    },
    {
      "relative_path": "resources/templates/reference/ranking__ordered-bar__show-order-when-rank-matters-more-than-value.tbm",
      "size_in_bytes": 273527
    },
    {
      "relative_path": "resources/templates/reference/ranking__ordered-column__show-order-when-rank-matters-more-than-value.tbm",
      "size_in_bytes": 273590
    },
    {
      "relative_path": "resources/templates/reference/ranking__ordered-proportional-symbol__rank-with-large-value-spreads.tbm",
      "size_in_bytes": 272034
    },
    {
      "relative_path": "resources/templates/reference/ranking__slope-rank__show-rank-swaps-between-two-periods.tbm",
      "size_in_bytes": 279531
    },
    {
      "relative_path": "resources/templates/reference/ranking__slope__compare-rank-or-value-change-between-two-points.tbm",
      "size_in_bytes": 278713
    },
    {
      "relative_path": "resources/templates/reference/sankey-viz-extension.tbm",
      "size_in_bytes": 18166
    },
    {
      "relative_path": "resources/templates/reference/slope-chart.tbm",
      "size_in_bytes": 3623
    },
    {
      "relative_path": "resources/templates/reference/spatial-choropleth-map.tbm",
      "size_in_bytes": 5589
    },
    {
      "relative_path": "resources/templates/reference/spatial-symbol-map-latlon.tbm",
      "size_in_bytes": 3671
    },
    {
      "relative_path": "resources/templates/reference/spatial-symbol-map.tbm",
      "size_in_bytes": 3707
    },
    {
      "relative_path": "resources/templates/reference/spatial__cartogram__resize-regions-by-a-value.tbm",
      "size_in_bytes": 33935
    },
    {
      "relative_path": "resources/templates/reference/spatial__choropleth__map-rates-or-ratios-by-region.tbm",
      "size_in_bytes": 274568
    },
    {
      "relative_path": "resources/templates/reference/spatial__contour__show-equal-value-bands-across-geography.tbm",
      "size_in_bytes": 18522
    },
    {
      "relative_path": "resources/templates/reference/spatial__density-map__show-intensity-hotspots-not-tied-to-admin-units.tbm",
      "size_in_bytes": 43142
    },
    {
      "relative_path": "resources/templates/reference/spatial__dot-density__plot-individual-locations-or-events.tbm",
      "size_in_bytes": 43313
    },
    {
      "relative_path": "resources/templates/reference/spatial__equalized-cartogram__give-each-region-equal-shape-weight.tbm",
      "size_in_bytes": 22519
    },
    {
      "relative_path": "resources/templates/reference/spatial__flow-map__show-movement-between-places.tbm",
      "size_in_bytes": 37351
    },
    {
      "relative_path": "resources/templates/reference/spatial__grid-heatmap__map-intensity-on-a-grid-not-admin-boundaries.tbm",
      "size_in_bytes": 14531
    },
    {
      "relative_path": "resources/templates/reference/spatial__hexbin-map__aggregate-geography-into-equal-hex-cells.tbm",
      "size_in_bytes": 16794
    },
    {
      "relative_path": "resources/templates/reference/spatial__proportional-symbol-map__map-totals-with-sized-marks-not-rates.tbm",
      "size_in_bytes": 56406
    },
    {
      "relative_path": "resources/templates/reference/spatial__scaled-cartogram__distort-geography-so-area-encodes-value.tbm",
      "size_in_bytes": 21773
    },
    {
      "relative_path": "resources/templates/reference/spatial__spike-map__show-magnitude-at-locations-with-height.tbm",
      "size_in_bytes": 57495
    },
    {
      "relative_path": "resources/templates/reference/spatial__symbol-map__place-sized-marks-at-coordinates.tbm",
      "size_in_bytes": 273978
    },
    {
      "relative_path": "resources/templates/reference/trend-line-chart.tbm",
      "size_in_bytes": 2834
    },
    {
      "relative_path": "resources/templates/reference/ww-floating-bars.tbm",
      "size_in_bytes": 3971
    },
    {
      "relative_path": "resources/templates/reference/ww-ou-arrow.tbm",
      "size_in_bytes": 20411
    },
    {
      "relative_path": "resources/templates/reference/ww-ou-diff.tbm",
      "size_in_bytes": 17071
    },
    {
      "relative_path": "scripts/bootstrap_python.sh",
      "size_in_bytes": 557
    },
    {
      "relative_path": "scripts/requirements.txt",
      "size_in_bytes": 10
    },
    {
      "relative_path": "scripts/run_validator.sh",
      "size_in_bytes": 356
    },
    {
      "relative_path": "scripts/tableau_resources.py",
      "size_in_bytes": 121460
    },
    {
      "relative_path": "scripts/validate_workbook.py",
      "size_in_bytes": 31703
    }
  ],
  "skill_md_contents": "---\nname: tableau-workbook-authoring\ndescription: Create, edit, copy, or republish a Tableau workbook by editing TWB XML and publishing it through Tableau MCP. Use for create, build, edit, modify, copy, republish, or add-chart requests. Do not use for read-only analysis or for just opening/showing an existing view (tableau-content-viewer).\n---\n\n# Purpose\n\nBuild or edit a Tableau workbook — from the bundled chart catalog when the request matches it, otherwise by hand-editing TWB XML — validate, publish through Tableau MCP, and render the result.  \n\n## Resolve the requested Tableau object\n\nResolve the object the user named before resolving its containing workbook.\n\n- “Dashboard” always means a Tableau `view`. Search with\n  `filter: { contentTypes: [\"view\"] }`.\n- After resolving the dashboard view, use its metadata to identify the parent\n  workbook, then download that workbook for editing.\n- Search with `contentTypes: [\"workbook\"]` only when the user explicitly names\n  a workbook or when no dashboard/view was specified.\n- Never substitute a workbook search for a dashboard search.\n\n## Canonical Tableau MCP tools\n\nCall these tool IDs directly when they are available. Do not scan or print the\nfull tool catalog merely to rediscover their names or schemas.\n\n- Workbook search:\n  `mcp__tableau__search_content`\n  with `{ terms, filter: { contentTypes: [\"workbook\"] }, limit }`\n- View / Dashboard search:\n  `mcp__tableau__search_content`\n  with `{ terms, filter: { contentTypes: [\"view\"] }, limit }`\n- Exact project lookup:\n  `mcp__tableau__list_projects`\n  with `{ filter: \"name:eq:<project-name>\", limit }`\n- Workbook download:\n  `mcp__tableau__download_workbook`\n  with `{ workbookId, includeExtract: true }`\n- Workbook publish:\n  `mcp__tableau__publish_workbook`\n  with `{ name, projectId, workbookFilePath, overwrite }`\n- Staged-upload fallback:\n  `mcp__tableau__request_workbook_upload`\n- Workbook metadata:\n  `mcp__tableau__get_workbook`\n- View metadata:\n  `mcp__tableau__get_view`\n- Static view render:\n  `mcp__tableau__get_view_image`\n  with `{ viewId, format: \"PNG\", width, height }`\n\nIf a directly named tool is not callable, perform one focused availability\nlookup for that tool only. Do not enumerate the entire Tableau or global tool\ncatalog.\n\n# Routing\n\n- Follow-up edit on a workbook already resolved this task → the fast path below.\n- Building or adding a chart:\n  1. First run:\n     `python3 scripts/tableau_resources.py list --tier executable --query \"<intent>\"`\n  2. If the result is empty, immediately follow the hand-edit path below. Do not read `references/catalog-templates.md`.\n  3. If a match is returned, read [`references/catalog-templates.md`](references/catalog-templates.md), inspect the match, and use `instantiate` for a new workbook or `inject` for an existing one.\n- Adding a breakdown/color split, or a filter, to an existing worksheet (not a whole new chart) → read [`references/field-edits.md`](references/field-edits.md) and use `add-encoding`/`add-filter`. Run `inspect-workbook` first if the field names the user gave aren't confirmed against the workbook yet.\n- No catalog match, and no field-level match above, or a genuinely custom construct neither covers → hand-edit the TWB XML per the steps below.\n- First edit/republish of an existing workbook this task → resolve it with `search-content` (`filter: { contentTypes: [\"workbook\"] }`; see [`../../references/search.md`](../../references/search.md) for disambiguating multiple matches), then `download-workbook`.\n- Brand-new workbook with no starting point and no catalog match → read [`references/new-workbook.md`](references/new-workbook.md) first.\n`request-workbook-upload`, `publish-workbook`, `download-workbook`, and interactive rendering may be feature-gated — report a missing tool rather than retrying it.\n\n## Fast path for follow-up edits\n\nReuse the extracted TWB/TWBX, published workbook ID, project ID, name, and view URL from this task. Make the smallest targeted XML edit, validate once, and republish with whichever transport already worked (`overwrite: true` for the same workbook, `false` for a new copy). Don't re-search, re-download, or re-inspect the whole workbook unless the current artifact is missing or stale.\n\n## Existing workbook, first pass this task\n\n1. Resolve the workbook (and destination project, if named) — reuse LUIDs already known this task; otherwise `search-content` (see [`../../references/search.md`](../../references/search.md) for disambiguating multiple matches). Resolve independent lookups in parallel when supported.\n2. `download-workbook` with `includeExtract: true` unless this is pure inspection that won't be republished. Unzip a TWBX and edit the root TWB.\n3. Add or change content: prefer `inject` against a catalog match (see Routing and [`references/catalog-templates.md`](references/catalog-templates.md)); otherwise hand-edit only the affected worksheet/dashboard and its `<datasource-dependencies>`, matching adjacent XML conventions. **Skip this step** for a plain copy/republish/move with no requested content change.\n4. Validate and publish (below).\n5. Render the result — see [`../../references/rendering.md`](../../references/rendering.md).\n\nIf the downloaded package looks incomplete or a dependency is missing, read [`references/package-and-upload-fallbacks.md`](references/package-and-upload-fallbacks.md). For a new XML construct or a validation failure, read [`references/xml-troubleshooting.md`](references/xml-troubleshooting.md).\n\n## Validate and publish\n\nSkip local validation for unmodified content (plain copy/republish/move) — it's already known-valid. A workbook produced by `instantiate`/`inject` is already validated by that command itself — re-running the standalone validator on it is redundant but harmless. For a hand-edited TWB, after the edit:\n\n```bash\nsh \"$PLUGIN_ROOT/skills/tableau-workbook-authoring/scripts/run_validator.sh\" path/to/workbook.twb\n```\n\nThe session-start hook prepares the validator environment and installs `lxml` from `skills/tableau-workbook-authoring/scripts/requirements.txt`. If the environment is missing, run `bootstrap_python.sh` from that same directory before running the validator.\n\nFor TWBX, run `unzip -t` after rebuilding it. Publish with `publish-workbook`, using `workbookFilePath` when the runtime can pass a local path, otherwise `request-workbook-upload` first and pass its `workbookUploadId`. A TWB is validated inline (`status: 'invalid'` with structured `errors`/`warnings`); a TWBX is validated by Tableau during publish itself, so a failure there surfaces as a publish error instead of a findings list.\n\nIf validation fails, fix the reported lines/elements and retry once; stop after 10 cycles and report the remaining errors.\n\nRecord the workbook/project LUIDs, URL, and local artifact paths so a follow-up can use the fast path.\n\n# Requirements\n\n- Keep worksheet, dashboard, datasource, and zone names unique and consistent.\n- Prefer fields already declared in the TWB's `<column>` metadata over inspecting the extract or datasource metadata; `inspect-workbook` (see `references/field-edits.md`) reads exactly that metadata.\n- Don't invent field names, roles, or numbers not backed by inspected metadata.\n- Don't force-fit a catalog template onto a chart it doesn't match — fall back to hand-editing instead of stretching the closest template.\n- If the `download-workbook` tool returns a temporary URL, download the file locally\n\n# References\n\n- [`../../references/search.md`](../../references/search.md) — resolving a name/keyword to a workbook and disambiguating multiple matches.\n- [`references/catalog-templates.md`](references/catalog-templates.md) — chart catalog: discover, inspect, and render bundled templates via `scripts/tableau_resources.py`.\n- [`references/field-edits.md`](references/field-edits.md) — add a breakdown/color split or a filter to an existing worksheet via `inspect-workbook`/`add-encoding`/`add-filter`.\n- [`references/new-workbook.md`](references/new-workbook.md) — brand-new workbook, no starting point, no catalog match.\n- [`references/package-and-upload-fallbacks.md`](references/package-and-upload-fallbacks.md) — incomplete TWBX package or staged-upload fallback.\n- [`references/xml-troubleshooting.md`](references/xml-troubleshooting.md) — new XML construct or validation failure.\n- [`../../references/rendering.md`](../../references/rendering.md) — render the published/target view.\n"
}

SHA-256: 11cd751a956f76a942a6215d07bee7be225543b3efafcc47e7144d9167f4ab91