Claude Code 플러그인: 텍스트 요청을 인터랙티브 HTML 데모 및 Tableau .twbx로 변환
요약
Claude Code 플러그인이 텍스트 요청을 인터랙티브 HTML 데모와 Tableau `.twbx` 파일로 변환하는 기능을 제공합니다. 기존의 거대한 단일 스킬 구조를 8개의 독립적인 스킬로 분해하여, 단계별 토큰 사용량을 극적으로 줄이고 비용 효율성을 높였습니다. 이 플러그인은 일반적인 `SKILL.md` 파일 형태로 포팅이 용이하며, Claude Code의 플러그인 시스템을 활용합니다.
핵심 포인트
- 단일 스킬을 8개 독립 스킬로 분해하여 토큰 사용량 절감
- 단계별 대화와 디스크 파일을 통한 작업 인계 방식 채택
- Claude Pro 등 저가 라이선스에서도 실용적인 워크플로우 구현 가능
- 각 스킬이 일반 `SKILL.md` 파일이라 포팅성이 높음
Claude Code 플러그인은 자유 형식의 대시보드 요청을 인터랙티브 HTML 데모와 Replace-Data-Source 준비가 된 Tableau .twbx 파일로 변환합니다. 이는 **8개의 개별 작업(single-job skills)**과 라우터(router)를 통해 분할된 안내 및 승인 기반 워크플로우를 거칩니다.
원래 버전은 단일의 거대한 스킬(/tableau-dashboard-creator)이었으며, 이 스킬은 전체 워크플로우—모든 단계의 지침, 참조, 코드 조각—를 하나의 긴 대화에 로드했습니다. 이는 비용이 많이 듭니다: 컨텍스트가 단계별로 증가하며, 소규모 요금제에서는 워크북에 도달하기도 전에 예산이 바닥납니다.
이 플러그인은 그 거대한 스킬을 8개의 독립적인 스킬로 분해했습니다. 각 스킬은 자체적인 새로운 대화에서 실행되며, 다음 스킬에게는 디스크의 파일을 통해 작업을 인계합니다. 단일 스킬도 전체 워크플로우를 로드하지 않고—오직 자신만의 계약(contract) 조각만 로드합니다. 그 결과 단계별 토큰 사용량이 극적으로 낮아져서, 전체 파이프라인을 높은 등급뿐만 아니라 $20 Claude Pro 라이선스에서도 실행하는 것이 실용적입니다.
이식성(Portability). 각 스킬은 일반적인 SKILL.md 파일이므로, 이 콘텐츠는 스킬 파일을 읽는 Cursor, Codex 또는 다른 에이전트 도구로도 포팅할 수 있습니다. 여기에 문서화된 설치 및 호출 방법은 Claude Code의 플러그인 시스템에만 국한됩니다.
| 요구 사항 | 상세 내용 |
|---|---|
| Claude Code | 이 플러그인은 Claude Code의 플러그인 시스템( /plugin install, 네임스페이스 스킬)을 대상으로 합니다. |
| Python 3.9+ | 헬퍼 스크립트는 내장된 제네릭 어노테이션 (dict[str, ...] )을 사용하므로 3.9 이상이 필요합니다. |
| Python 종속성 | pip install -r "${CLAUDE_PLUGIN_ROOT}/requirements.txt" ( /plugin install 실행 후에는 클론할 필요가 없으므로, 플러그인 루트 경로만 해결되면 됩니다.) — python-dotenv와 requests (published-datasource 경로에서만), lxml (워크북 XSD 유효성 검사). 9개 스킬 중 7개는 표준 라이브러리만 사용하므로 위 종속성이 필요하지 않습니다. |
| Tableau Desktop | 생성된 .twbx 워크북을 열 때만 필요합니다. |
이 저장소를 플러그인 마켓플레이스에 추가한 다음, 플러그인을 설치하세요. GitHub에서 바로 작동하며 클론할 필요가 없고 업데이트도 자동으로 가져옵니다:
/plugin marketplace add https://github.com/laviDrori0702/tableau-dashboard-creator-skill.git
/plugin install tableau-dashboard-plugin@dashboard-creation-tool
owner/repo 방식이 아닌 HTTPS URL (위와 같이)을 사용하세요.
SSH를 통해 간소화된(shorthand) 클론 방식을 사용하면 GitHub SSH 키가 설정되어 있지 않으면 실패합니다. (로컬에서 클론한 경우, 대신 마켓플레이스에 체크아웃 경로를 지정하세요: /plugin marketplace add ./path/to/tableau-dashboard-creator-skill)
플러그인 자체를 수정(hacking)하려면 현재 세션에만 로드하세요:
git clone https://github.com/laviDrori0702/tableau-dashboard-creator-skill.git
cd tableau-dashboard-creator-skill
claude --plugin-dir .
플러그인 스킬은 플러그인 이름으로 네임스페이스(namespaced)됩니다. /tableau-init을 입력하면 아무것도 찾지 못합니다. 실제 명령어는 다음과 같습니다:
/tableau-dashboard-plugin:tableau-init
/tableau-dashboard-plugin:tableau-route ←
| # | 스킬 (`/tableau-dashboard-plugin:…`) | 기능 설명 | 읽기 → 쓰기 | 건너뛰기 가능 여부 |
|---|---|---|---|---|
| 1 | `tableau-init` | 프로젝트의 기본 구조를 잡고, 목표 Tableau 버전을 기록합니다. | — → `STATE.md` + `scaffold/` 데모 예제 | 아니요 |
| 2 | `tableau-intake` | 자유 형식의 요청을 PRD(제품 요구사항 정의서)로 구조화합니다. | `DASHBOARD-REQUEST.md` / 붙여넣은 텍스트 → `PRD.md` | 예 |
| 3 | `tableau-data` | 데이터를 확보하고 프로파일링합니다. | `data/*.csv` (또는 VDS를 통한 게시된 데이터셋) → `DATA-MODEL.md` + `data/*.csv` | 아니요 |
| 4 | `tableau-brand` | 브랜딩에서 디자인 토큰을 추출합니다. | `branding/` → `DESIGN-TOKENS.md` | 예 |
| 5 | `tableau-plan` | 청사진: 화면 크기, 슬롯, 핵심 성과 지표(KPI), 차트, 필터, 상호작용(안정 ID)을 설계합니다. | `DATA-MODEL.md` (+ `PRD.md` , `DESIGN-TOKENS.md` ) → `DASHBOARD-PLAN.md` | 아니요 |
| 6 | `tableau-mock` | 실제 샘플 데이터로 인터랙티브 HTML 데모를 생성합니다. | `DASHBOARD-PLAN.md` , `data/*.csv` → `mock-version/v_N/mock.html` | 아니요 |
| 7 | `tableau-spec` | 모든 목업 요소를 구체적인 Tableau 구성 요소에 매핑합니다. | `mock.html` , `DASHBOARD-PLAN.md` → `mock-version/v_N/IMPLEMENTATION-SPEC.md` | 아니요 |
| 8 | `tableau-build` (실험적) | 버전 인식 및 XSD 검증이 완료된 워크북을 생성합니다. | `IMPLEMENTATION-SPEC.md` , `DATA-MODEL.md` , `data/*.csv` → `mock-version/v_N/dashboard.twbx` | 아니요 |
compass는 단계가 아니라 나침반입니다: 이는 `tableau-route`를 읽고 다음으로 실행할 단일 스킬을 보고합니다. 오직 추천만 할 뿐, 다른 스킬은 절대 대신 실행하지 않습니다.
상태 — 8단계는 실험적이며, 버그 리포트를 환영합니다. 모든 여덟 단계는 기능이 완성되었습니다: `tableau-build`는 빌드 매니페스트를 파생하고 검증한 다음, 전체 워크북(데이터 소스 - CSV가 `.twbx`에 패키징된 라이브 데이터 포함)을 조립합니다.
워크시트(shelves, encodings 및 marks 포함), 15가지 차트 패턴에 걸친 워크북의 영역 트리(approved mock의 지오메트리 기준), 필터/하이라이트/매개변수 액션, 계산된 필드, 그리고 워크시트 서식까지 — 이 모든 것이 세 가지 검증기(semantic, XSD 스키마 및 spec 준수)를 거쳐 패키징되기 전에 통제됩니다. 이것은 실험적입니다. 왜냐하면 이러한 검증기들이 Tableau의 것이 아니기 때문입니다. 개별 구성 요소들은 Tableau Desktop 2025.1로 저장된 워크북을 기준으로 인증되지만, 생성된 워크북이 실제 분석가들이 요청할 수 있는 모든 대시보드 범위에 걸쳐 아직 입증되지는 않았습니다. Tableau의 XML은 용서가 없으며 조용히 실패합니다: 워크북은 모든 검증기를 통과하더라도 열 때 여전히 조용히 재작성되거나 거부될 수 있습니다 — 따라서 충실도에 대한 유일한 권위는 Desktop 자체입니다. 생성된 워크북에서 Tableau Desktop이 오류를 보고하거나, 뷰가 명세된 목업(mock)과 다르게 렌더링되는 경우, 오류 텍스트와 함께 이슈를 열어주십시오. 각 리포트는 일회성 패치가 아니라 빌더의 템플릿에 영구적인 수정 사항이 되므로, 이후 생성되는 모든 워크북을 개선합니다. `build-manifest.json`
생성한 것을 나타냅니다. 한 가지 미래 지향적인 참고 사항: Tableau는 명세로부터 워크북을 생성하는 네이티브 기능을 발표했습니다. 이것이 출시되면 병렬 생성기를 유지하기보다는 빌드 단계로 통합할 계획이므로, 8단계의 정확한 형태가 변경될 수 있습니다.
건너뛸 수 있는 단계(`intake`, `brand`)는 스캐폴딩된 프로젝트에서 합리적인 폴백(원시 요청 텍스트; 중립적 스타일링)을 가진 기획으로 바로 이동할 수 있게 해줍니다.
어떤 기능도 전체 워크플로우를 로드하지 않습니다. 그들은 모두 프로젝트 루트의 파일들, 즉 — 프로젝트 매니페스트(`STATE.md`)에 의해 생성되고 모든 후속 기능에 의해 업데이트되는 `tableau-init`을 통해 완전히 조정됩니다. 메타데이터(대상 Tableau 버전, `data_mode`, `current_version`)와 각 단계별 상태(`pending`, `approved`, `skipped`, `stale`)를 가진 Steps 테이블을 포함합니다.**인계 아티팩트는** (`UPPER-KEBAB.md`, `PRD.md`, `DATA-MODEL.md`, `DESIGN-TOKENS.md`)
,
`DASHBOARD-PLAN.md`
,
`IMPLEMENTATION-SPEC.md`
)
**사용자 입력은 소문자로 처리됩니다** (`branding/`
,
`data/`
,
`datasources.json`
,
`.env`
,
`DASHBOARD-REQUEST.md`
).
대소문자는 의도된 것입니다.**모든 스킬이 준수하는 세 가지 규칙:**
* **순서 (ordering):** 특정 단계는 필요한 모든 읽기(read) 프로듀서가 해결되고 해당 아티팩트가 존재할 때까지 실행을 거부합니다.
* **신선도 (staleness):** 단계를 다시 실행하면 모든 하위(`approved`) 단계가 `stale` 상태로 변경됩니다.
* **버전 관리 (versioning):** 최상위 (`*.md`) 인계(handoff) 파일은 제자리에서 덮어쓰기 되지만, 결과물 (`mock.html`
,
`IMPLEMENTATION-SPEC.md`
,
`dashboard.twbx`
)은 `mock-version/v_N/` 아래에 존재하며, 모두 해당 모크(mock)의 버전에 고정됩니다.
전체 단계 그래프는 `CONTRACT.md`가 진실의 원천입니다. 여기에는 `STATE.md` 스키마, 아티팩트 명명 규칙, 그리고 순서/신선도/버전 관리 규칙이 포함되어 있습니다. 각 `SKILL.md`는 자신의 부분만을 재진술합니다. 만약 스킬과 계약(contract) 내용이 불일치하면, 계약의 내용이 우선합니다.
먼저 `tableau-init`을 실행하세요. 그러면 복사하여 편집할 수 있는 예제 폴더인 `scaffold/`가 생성됩니다. 그런 다음 프로젝트 루트에 다음 항목들을 제공하세요:
**요청 (Request):** `DASHBOARD-REQUEST.md`를 사용하거나, `tableau-intake`을 실행할 때 요청 내용을 텍스트로 붙여넣으세요.
**데이터 (Data) (택일):**
* **CSV (기본값, 자격 증명 불필요):** 파일을 `data/*.csv`에 드롭하세요.
* **게시된 데이터 소스 (Published datasource):** `datasources.json`과 `.env` (`TABLEAU_SERVER`
,
`TABLEAU_SITE`
,
`TABLEAU_PAT_NAME`
,
`TABLEAU_PAT_SECRET`
, …)를 제공하세요. `tableau-data`가 이를 VizQL 데이터 서비스로 샘플링하여 `data/*.csv`에 저장합니다. 정확한 필드는 `skills/tableau-data/SKILL.md`와 `CONTRACT.md` §3.2를 참조하세요.
**브랜딩 (Branding) (선택 사항):** `branding/` 폴더 (`branding.md` 사양 및/또는 조직용 템플릿인 `template.twb`, 로고/아이콘)을 사용합니다. 이를 건너뛰면 `tableau-brand`가 짧은 인터뷰를 실행하거나 중립적인 스타일로 대체됩니다.
tableau-dashboard-plugin/
├── .claude-plugin/
│ ├── plugin.json # 플러그인 매니페스트
...
만약 이전의 단일 스킬을 사용했다면: 이제 워크플로우는 이 플러그인에 존재합니다. 위에서 설치하고, `/tableau-dashboard-plugin:tableau-init`부터 시작하는 네임스페이스된 스킬들로 구동하세요.
그리고 `/tableau-dashboard-plugin:tableau-route`를 사용하여 다음 단계를 파악할 수 있습니다. v1 모놀리스는 참조용으로 `skill/tableau-dashboard-creator/` 아래에 보존되어 있으며, 더 이상 권장되는 경로는 아니므로 새로운 기능이 추가되지 않습니다.
`demo/` 폴더는 모든 8단계를 거친 영업 성과 프로젝트이며, 분석가의 폴더가 파이프라인 완료 후 어떤 모습인지 정확히 보여줍니다. 이는 입력/출력 분할이 아닌 **단일 프로젝트 루트**입니다:
demo/
├── STATE.md # 매니페스트: 메타데이터 + 승인된 모든 8단계
├── DASHBOARD-REQUEST.md # 분석가 입력: 자유 형식 요청
...
거기 있는 모든 파일은 해당 스킬의 실제 흐름에 의해 생성되었으므로, 각 아티팩트의 정확한 형태를 참조하는 역할을 합니다. `CONTRACT.md`는 규범적인 사양으로 유지됩니다.
*모의 단계(mock step)는 Tableau 작업이 시작되기 전에 대시보드의 인터랙티브 HTML 미리보기를 생성합니다.*
**Tableau 2026.1 이전에는 모서리 둥글기(rounded corners)가 없습니다.** `border-radius`는 2026.1 이상에서만 렌더링되므로, 구형 버전을 대상으로 할 경우 차이가 발생하지 않도록 모의 사각형 코너를 유지해야 합니다.**박스 그림자(box shadows)**—Tableau에서는 기본적으로 지원되지 않습니다.**컨테이너 계층 구조(Container hierarchy)**는 Tableau의 영역 모델(zone model)을 따라야 합니다 (layout-basic → layout-flow → sheets).**이미지와 독립형 범례는 수동으로 추가해야 합니다**—`tableau-build`는 승인된 크기와 위치에 상자를 예약하지만 비워두고, 빌드 시 이름으로 경고합니다. 따라서 그림이나 범례는 Tableau Desktop에서 직접 배치해야 합니다. 차트 자체의 색상 범례는 정상적으로 생성됩니다.**폴백 기반 선택 사항은 공개됩니다**—스킬이 누락된 입력값에 대해 Tableau 기본값을 사용할 경우 이를 명시합니다.**빌드당 하나의 대시보드(One dashboard per build)**—`tableau-build`는 단일 대시보드를 내보냅니다. 계획에서는 여러 `view` 탭을 선언할 수 있으며 (모의 단계에서 미리보기 가능), 다중 대시보드 생성은 별도의 변경 사항입니다. 에이전트 `spec` 경로에서는 다중 뷰 계획이 `[BLOCKED]`됩니다.
미리보기 가능), 다중 대시보드 생성은 별도의 변경 사항입니다. 에이전트 `spec` 경로에서는 다중 뷰 계획이 [BLOCKED]됩니다.
up front; use the human route, or wait for multi-dashboard support.— 워크북은 패키징되기 전에 세 개의 유효성 검사기(validators)를 통과하지만, 이 유효성 검사기는 Tableau가 아닙니다. 따라서 게시하기 전에 반드시 생성된 워크북을 Tableau Desktop에서 열어 목업(mock)과 비교 검토하고, Desktop이 거부하거나 다시 그린 부분이 있다면 알려주십시오 (위의 상태 참고).`tableau-build`
is experimental
See CONTRIBUTING.md for reporting issues, suggesting features, and submitting pull requests.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기