수업 #10 — 100개의 워크플로우를 버렸다
Source: bbojjak-viewer.vercel.app/lessons/lesson-10 Type: article By: 뽀짝이 / 뽀짝이의 서재 (지피터스 AI스터디) Valid as of: 2026-04-28
Key Insight
에이전트 스킬 = 폴더 하나(SKILL.md + scripts/ + references/). n8n(트리거→자동실행)과 달리 에이전트가 설명서를 읽고 판단해서 실행 — “맥락을 이해하고 예외에 대응해야 하는가?”가 스킬/n8n 선택의 핵심 질문이다.
핵심 Takeaway
- 스킬 = 폴더 하나: SKILL.md + scripts/ + references/ + .env. 에이전트가 설명서를 읽고 판단해서 실행. n8n의 “트리거→자동실행”과 달리 예외 상황에 유연 대응 (출처: “스킬이란 뭘까?” 섹션)
- SKILL.md = 설명서이자 진입점: name + description으로 스킬 식별. 세션 시작 시 모든 스킬 description 스캔. description 부정확하면 적절한 스킬이 있어도 매칭 실패 (출처: “SKILL.md” 섹션)
- references/ = “왜 이 값인지” 문서: API 키, 엔드포인트, ID 매핑 등을 설명과 함께 기록. n8n에서는 블록에 하드코딩. 스킬에서는 마크다운으로 git 관리 (출처: “references” 섹션)
- 스킬 로드 우선순위: 워크스페이스 > 공유(
~/.claude/skills/) > 번들. 공유 폴더로 여러 에이전트가 스킬 공유. n8n과 달리 폴더 복사로 이식 (출처: “스킬이 사는 곳” 섹션) - 선택 기준 = 판단 필요 여부: n8n = 단순반복·웹훅중계. 스킬 = 맥락필요·복잡예외·여러시스템. “맥락을 이해하고 예외에 대응해야 하는가?” (출처: “왜 n8n이 아니라 스킬인가?” 섹션)
상세 요약
n8n의 3가지 구조적 한계
- 수정 어려움: GUI에 로직이 흩어져 검색·diff 불가. n8n 블록 12개 = TypeScript 100줄 (동일 기능)
- 디버깅 까다로움: JSON 덩어리 로그, 블록 추적 필요. 스킬은 “line 47: fetch failed” 즉시 파악
- 문서화 없음: 시간 지나면 만든 사람도 “이거 뭐지?” 상태
스킬 구조 상세
~/.claude/skills/{이름}/
├── SKILL.md ← YAML(name, description) + 실행 절차
├── scripts/ ← 핵심 로직 (TypeScript/Python)
├── references/ ← API 정보, ID 매핑, 설명 문서
└── .env ← 환경변수
SKILL.md 프론트매터:
---
name: ai-talk-manager
description: AI토크 이벤트의 전 과정을 관리합니다.
Zoom 회의 생성, UTM 링크 단축, 베터모드 이벤트 게시, Airtable 등록을 자동화합니다.
---description이 요청-스킬 매칭의 핵심. 실제 사고: openclaw-lesson 스킬을 description에서 못 찾아 수동 발행 → 태그 누락.
스킬이 n8n보다 좋은 이유: 맥락 이해
n8n: 베터모드 게시 실패 → 처음부터 워크플로우 재실행 (Zoom, Bitly 포함)
스킬: “아, 제목 규칙이 잘못됐구나” → 게시글만 수정 재게시. Zoom, Bitly는 이미 완료됐으므로 건드리지 않음.
에이전트가 전체 맥락을 이해하므로 실패한 부분만 수정 가능.
scripts/ 활용 기준
스크립트가 필요한 경우:
- 재현 가능성 필요 (같은 스크립트 = 같은 결과)
--dry-run플래그 등 테스트 가능하게 설계- 복잡한 로직 (API 여러 개, 조건 분기 복잡)
스크립트 없이 SKILL.md만으로 가능한 경우:
- 간단한 절차 (에이전트가 직접 API 조합)
전환 결과 (9일간)
- n8n 100개 → 핵심 5개 스킬로 전환, 2개 n8n 유지, 93개 비활성 유지
- 수정 속도: 15분 → 2분
- n8n에 남긴 것: 스케줄러/웹훅 중계 (판단 불필요) + 기수별 운영 트리거 (단순 시간 기반)
연결되는 위키 페이지
- agent-skill-design — 이 소스에서 추출한 에이전트 스킬 구조 원칙
- harness-engineering — Claude Code Skills(Phase 2)와 동일한 원리; SKILL.md = 에이전트 스킬 동일 구조
- agentic-scheduling-design — n8n이 단순 반복·웹훅 중계에 적합한 이유 (Lesson 09)
- OpenClaw — 스킬 로드 우선순위를 제공하는 에이전트 런타임
- bbojjak-openclaw-agentic-architecture-lesson01 — 시리즈 Lesson 01
- bbojjak-openclaw-scheduling-design-lesson09 — 시리즈 Lesson 09 (스케줄링)
- bbojjak-openclaw-automation-layers-lesson11 — 시리즈 Lesson 11 (exec·자동화 3계층·exec-approvals·Trust but verify)
- bbojjak-openclaw-subagent-orchestration-lesson12 — 시리즈 Lesson 12 (sessions_spawn·맥락의 격차·판단 최소화 원칙)
- bbojjak-openclaw-playwright-image-pipeline-lesson13 — 시리즈 Lesson 13 (Playwright·HTML→PNG·browser 도구·디자인 시스템)
- bbojjak-openclaw-gateway-architecture-lesson14 — 시리즈 Lesson 14 (Gateway·멀티채널 라우팅·Tailscale Funnel·보안 4중 잠금)
- bbojjak-openclaw-multichannel-session-lesson15 — 시리즈 Lesson 15 특별편 (Slack 스레드·텔레그램 토픽 세션 분리·DM 함정·bindings)
- bbojjak-openclaw-token-optimization-lesson16 — 시리즈 Lesson 16 (토큰 소비처 5순위·RTK·hook vs 지침·능동적 compact·Sonnet 전환)
- bbojjak-openclaw-agent-security-lesson17 — 시리즈 Lesson 17 (프롬프트 인젝션·보안 3원칙·에이전트 분리·심층 방어)
- bbojjak-openclaw-skill-ecosystem-lesson18 — 시리즈 Lesson 18 (보안 스킬 선택 3단계·구조>스킬·즉시 학습+SSOT·오픈 생태계 신뢰 평가)
- bbojjak-openclaw-resilience-failover-lesson19 — 시리즈 Lesson 19 (Model Failover·세션 스티킨스·Agent Loop·작업별 모델 분리·34% 절감)
- bbojjak-openclaw-information-boundary-lesson20 — 시리즈 Lesson 20 (분리 이후 운영·일방향 동기화·민감정보 추출·에스컬레이션·오탐 관리)