SuperAPI AI Directory

my-townhall-agency

Office & productivity

View repository

Updated 10-15 21:38

About this skill

My Townhall Agency

A 4-Agent pipeline for producing townhall materials. When the user provides just the deck ID and topic, the four agents run sequentially and slides are inserted into Google Slides.


Team Composition

Agent Role Input → Output
🔍 Researcher Data collection & analysis Context sources → townhall/DATA.md
📝 Summarizer PPT structure design DATA.md → townhall/OUTLINE.md
🎨 Designer Apps Script code generation OUTLINE.md → townhall/slides.gs
💻 Developer Insert slides into the actual deck slides.gs → Google Slides (Chrome automation)

Preparation Before Execution

When the skill is triggered:

  1. Confirm with the user:

    • 덱 ID: Google Slides file ID to insert into (from the URL, the part after /d/ )
    • Topic: Which section slides to create (e.g., "Financial Status", "Corporate Operations", "Annual Goals")
    • Data source: Where to pull data from (context sync files, direct input, etc.)
  2. townhall/ If the folder does not exist, create it

  3. Check existing context files:

    • .claude/skills/my-context-sync/sync/ Latest file
    • agent/projects/finance/ files
    • agent/projects/ar_automation/memory/financial_state.md

Execution Flow

[입력] 덱 ID + 주제 + 데이터 소스
    ↓
[1단계] 리서처 에이전트 → DATA.md 생성
    ↓
[DATA 검증] 필수 섹션 확인 → 실패 시 재실행 (1회)
    ↓
[2단계] 요약가 에이전트 → OUTLINE.md 생성
    ↓
[OUTLINE 검증] 슬라이드 수 확인 (최소 1장) → 실패 시 재실행 (1회)
    ↓
[3단계] 디자이너 에이전트 → slides.gs 생성
    ↓
[코드 검증] 파일 존재 + addSlides 함수 포함 여부 확인
    ↓
[4단계] 개발자 (오케스트레이터) → Chrome 자동화로 실행
    ↓
[최종 보고] 슬라이드 추가 완료 + 덱 URL 출력

How to Run Each Agent

🔍 Step 1: Researcher Agent

Task(
  description="리서처: 타운홀 데이터 수집",
  prompt="""
너는 EO Studio 재무·운영 데이터 리서처다.
아래 주제에 맞는 데이터를 수집·정리해서 townhall/DATA.md를 작성하라.

주제: {topic}
데이터 소스:
- .claude/skills/my-context-sync/sync/ 폴더의 최신 컨텍스트 싱크 파일
- agent/projects/ar_automation/memory/financial_state.md (존재 시)
- agent/projects/finance/ 폴더 (존재 시)
- CLAUDE.md의 현재 진행 상태 섹션

DATA.md 형식:
# 타운홀 데이터: {topic}
수집일: {날짜}

## 핵심 수치
- 항목별 수치를 bullet로 정리 (단위 포함)

## 세부 내역
- 카테고리별 상세 데이터

## 현황 및 이슈
- 진행 중인 항목
- 블로커 또는 주요 이슈

## 파이프라인 / 전망
- 예정된 항목, 목표 수치

수집한 모든 관련 데이터를 townhall/DATA.md에 저장하라.
""",
  subagent_type="general-purpose"
)

📝 Step 2: Summarizer Agent

Task(
  description="요약가: 슬라이드 구조 설계",
  prompt="""
너는 EO Studio 타운홀 슬라이드 기획자다.
townhall/DATA.md를 읽고, 발표용 슬라이드 구조를 설계해서 townhall/OUTLINE.md를 작성하라.

규칙:
- 슬라이드는 2~4장으로 구성 (너무 많으면 전달력 저하)
- 각 슬라이드는 하나의 핵심 메시지만 전달
- 수치는 임팩트 있게 배치 (가장 큰 숫자를 헤드라인으로)
- 한국어와 영어를 적절히 혼용 (레이블은 영어, 내용은 한국어)

OUTLINE.md 형식:
# 타운홀 슬라이드 구조: {topic}

## SLIDE 1: {슬라이드 제목}
- 헤드라인 수치: (가장 강조할 숫자)
- 서브 타이틀: (한 줄 설명)
- 좌측 블록:
  - 제목:
  - 항목들: (리스트)
- 우측 블록:
  - 제목:
  - 항목들: (리스트)
- 하단 메시지: (핵심 takeaway 한 줄)

## SLIDE 2: {슬라이드 제목}
(동일 형식)

## 디자인 가이드
- 배경: 블랙 (#0D0D0D)
- 강조색: EO 옐로우 (#E8FF47)
- 폰트 색: 흰색, 회색 (#888888)
- 레이아웃: 좌우 분할 또는 카드형

완성된 OUTLINE을 townhall/OUTLINE.md에 저장하라.
""",
  subagent_type="general-purpose"
)

🎨 Step 3: Designer Agent

Task(
  description="디자이너: Apps Script 코드 생성",
  prompt="""
너는 Google Apps Script 전문 개발자다.
townhall/OUTLINE.md를 읽고, 기존 Google Slides 덱에 슬라이드를 추가하는 Apps Script 코드를 작성하라.

덱 ID: {deck_id}

반드시 지켜야 할 규칙:
1. SlidesApp.openById(DECK_ID)로 기존 덱 열기 (create 절대 금지)
2. presentation.appendSlide()로 슬라이드 추가
3. SlidesApp.getUi()는 사용 금지 (에러 발생)
4. Logger.log()로 완료 메시지와 URL 출력
5. 함수명은 반드시 addSlides()로 통일

색상 팔레트 (반드시 사용):
- BLACK: "#0D0D0D"
- WHITE: "#FFFFFF"
- GRAY_DARK: "#1E1E1E"
- GRAY_MID: "#2E2E2E"
- ACCENT: "#E8FF47" (EO 시그니처 옐로우)
- TEXT_MUTED: "#888888"
- GREEN: "#4CAF50"

유틸 함수 패턴 (반드시 포함):
function addText(slide, text, x, y, w, h, opts) { ... }
function addRect(slide, x, y, w, h, color, opacity) { ... }
function addLine(slide, x, y, length, color) { ... }

슬라이드 사이즈: W=720, H=405 (16:9 기준 pt)

각 슬라이드 상단 공통 헤더:
- 좌: "FINANCE · {날짜}" (9pt, TEXT_MUTED)
- 우: "{날짜}" (9pt, TEXT_MUTED, right-align)
- 구분선: addLine(slide, 40, 46, W-80, GRAY_MID)

OUTLINE.md의 내용을 정확히 코드로 구현하라.
완성된 코드를 townhall/slides.gs 파일로 저장하라.
""",
  subagent_type="general-purpose"
)

💻 Step 4: Developer (executed directly by the orchestrator)

Step 4 requires Chrome automation, so the orchestrator (main Claude) executes it directly.

Execution order:

  1. townhall/slides.gs Read the file
  2. Open the Apps Script editor in Chrome (work account)
  3. Insert the code into the Monaco editor
  4. Save → addSlides Select function → Run
  5. Check the execution log → capture the completion message
  6. Go to the deck and screenshot the result

Validation Logic

DATA validation

townhall/DATA.mdRead and check:

  • 핵심 수치 Whether the section exists
  • Whether actual numeric data (numbers) is included

OUTLINE validation

townhall/OUTLINE.mdRead and check:

  • SLIDE Keyword appears at least once
  • 헤드라인 or 블록 Whether the section exists

Code validation

townhall/slides.gsRead and check:

  • addSlides Whether the function exists
  • openById Whether it is used (if create is used, regenerate)
  • getUi Whether it is unused

Final Report Format

✅ 타운홀 슬라이드 생성 완료!

📁 생성 파일:
  townhall/DATA.md     — 수집 데이터
  townhall/OUTLINE.md  — 슬라이드 구조
  townhall/slides.gs   — Apps Script 코드

🖼️ 추가된 슬라이드: N장
🔗 덱 URL: https://docs.google.com/presentation/d/{DECK_ID}/edit

Usage Examples

  • "재무 현황 타운홀 슬라이드 만들어줘" → /townhall trigger
  • "이번 달 타운홀 에이전시로 만들어줘"
  • "법인 운영 현황 슬라이드 에이전시팀으로 추가해줘"

Precautions

  • Communication between agents is via filesonly through (DATA.md → OUTLINE.md → slides.gs)
  • Step 4 (developer) is executed directly by the orchestrator via Chrome automation
  • slides.gs에 getUi()if present, runtime error → rerun designer agent
  • Running the same deck multiple times accumulates slides → confirm with the user before running
  • townhall/ folder is created in the working root (C:\Users\ash\ash\)