{"id":13654,"plugin_id":"plugins_6aa0b89dcfc88191ba9971f2d7182516","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:07:52.899Z","digest":"11cd751a956f76a942a6215d07bee7be225543b3efafcc47e7144d9167f4ab91","against":null,"payload":{"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"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}