Markdown은 20년이나 됐고 AI용이 아니었습니다. 하지만 이제는 다릅니다.
Markdown is 20 years old. It was never meant for AI. Until now.
핵심 요약
정적인 Markdown 파일을 AI가 실행하고 제어할 수 있는 살아있는 문서로 변환해 주는 MarkdownAI를 소개합니다.
- MarkdownAI 도입 — 파일 상단에 한 줄만 추가하면 정적 문서를 동적 환경으로 변환함.
- 지시어 활용 — @include, @if, @phase 등 다양한 지시어를 통해 AI의 동작을 제어함.
- 실시간 적응 — Claude가 파일을 여는 순간의 조건에 따라 문서 내용과 출력이 실시간으로 변경됨.
- 워크플로우 유지 — 기존 .md 파일 형식을 그대로 사용하면서 AI와의 상호작용 기능만 확장함.
요즘 우리는 AI를 사용할 때 워크플로우의 모든 것에 md 파일을 사용합니다. 원래 텍스트를 다른 형식으로 변환하기 위해 만들어진 정적 파일들이죠. 완전히 정적인 상태입니다. 우리는 md 파일을 다루는 방식을 완전히 바꿀 무언가를 만들었습니다. 그래서 MarkdownAI를 작성했습니다. 모든 것이 .md 파일 위에서 실행되므로 작업 방식을 바꿀 필요가 없습니다. 하지만 MarkdownAI는 정적 파일 대신 AI의 동작을 실행하고 제어할 수 있는 살아있는 문서로 바꿔줍니다. md 파일은 Claude가 파일을 여는 순간의 조건에 따라 말 그대로 다른 문서가 될 수 있습니다. 다른 브랜치, 다른 출력. 다른 환경, 다른 섹션. 기존 문서가 없거나, 전체 단계가 제거되기도 합니다. 파일은 더 이상 존재하지 않는 현실을 설명하는 대신, 현재의 현실에 적응합니다.
MarkdownAI는 모든 .md 파일 상단에 한 줄을 추가하여 살아있는 문서로 만듭니다.
MarkdownAI Directives
MarkdownAI에서 사용할 수 있는 모든 지시어를 카테고리별로 정리했습니다.
Document Structure
|지시어|목적|
|:-|:-|
|@markdownai|문서 헤더 - MarkdownAI 런타임 활성화|
|@include|지시어 위치에 파일 내용 삽입|
|@import|내용을 렌더링하지 않고 정의(매크로, 연결) 가져오기|
|@define / @end|명명된 매크로 선언|
|@call|매크로 호출|
|@phase / @end|워크플로우 단계 선언|
|@if / @end|조건부 블록|
|@section|명명된 섹션 경계|
|@chunk-boundary|렌더링을 위한 명시적 청크 분할 지점|
Variables & Environment
|지시어|목적|
|:-|:-|
|@env|환경 변수 확인|
Data Sources
|지시어|목적|
|:-|:-|
|@connect|명명된 데이터 소스 연결 등록|
|@db|데이터베이스 쿼리 실행|
|@http|HTTP 엔드포인트에서 데이터 가져오기|
|@query|등록된 데이터 소스 쿼리|
|@read|원시 파일 내용 읽기|
|@list|디렉토리 내용 나열|
|@tree|디렉토리 트리 출력|
|@date|현재 날짜/시간|
|@count|소스 내 항목 수 계산|
Processing & Output
|지시어|목적|
|:-|:-|
|@pipe|변환을 통해 출력 체인 연결|
|@render|특정 형식으로 출력 렌더링|
|@graph|시각화 생성|
|@header|문서 수준 메타데이터 헤더|
Annotations & Constraints
|지시어|목적|
|:-|:-|
|@constraint|기계가 읽을 수 있는 규칙 또는 제약 조건|
|@define-concept|어휘 정렬 - 용어를 정확한 정의에 바인딩|
|@prompt|문서를 읽는 AI를 위한 내장 지침|
|@note|사람이 읽을 수 있는 주석(AI 형식에서는 렌더링되지 않음)|
Caching
|지시어|목적|
|:-|:-|
|@cache|지시어 출력 캐싱(데이터 소스 지시어 옵션)|
Phase Events
|지시어|목적|
|:-|:-|
|@on complete ->|단계가 완료될 때 실행할 작업 선언(@phase 블록 내부에서만 유효)|

