visual-plan
BuilderIO/skills
텍스트 계획을 다이어그램, 코드 스니펫, 코딩 에이전트용 검토 영역이 포함된 대화형 시각적 문서로 변환하세요.
...모든 것을 확장하십시오에이전트 네이티브 플랜
에이전트 네이티브 플랜은 에이전트 코딩을 위한 구조화된 시각적 계획 모드입니다. 평소 마크다운으로 작성하던 계획을, 편집 가능한 블록(인라인 다이어그램, 코드 스니펫, 미해결 질문, 그리고 선택 사항인 상단 시각적 검토 영역(와이어프레임 캔버스, 라이브 프로토타입, 또는 탭으로 구분된 둘 다))이 혼합된, 한눈에 파악하기 쉬운 문서로 구성하십시오. 아키텍처 및 백엔드 계획은 문서 형태로만 유지되며, UI 및 제품 계획은 상단 캔버스/프로토타입으로 시작합니다(‘시각적 표면 선택’ 섹션이 이 규칙을 관장합니다).
/visual-plan 는 패키지화된 명령어이자 주요 진입점입니다. 작업에서 검토
모드를 선택하세요: 작업이 주로 제품 UI이고 검토가
화면부터 시작되어야 할 때는 ‘UI 우선’, 검토가
기능성 라이브 프로토타입부터 시작되어야 할 때는 ‘프로토타입 우선’, 검토에 완전한 충실도의 브랜드
화면이 필요할 때는 ‘디자인 우선’, 또는 사용자가 계획 수립 전에
명시적으로 설문지를 원할 때는 ‘시각적 파악’을 선택하세요. Codex, Claude Code, Markdown 또는 붙여넣기된 계획이 이미 존재하는 경우,
/visual-plan 해당 소스 계획을 출발점으로 사용하여 처음부터 다시 시작하는 대신 이를 바탕으로 검토
화면을 구축합니다.
사용 시점
계획이 채팅 문단보다 검토 가능한 산출물로 더 적합할 때는 언제든지 시각적 계획을 작성하거나 수정하십시오. 여기에는 상태가 포함된 단일 UI 화면, 소규모 워크플로우, 제품 변경 전후 비교, 또는 합의가 필요한 컴포넌트/API/데이터 구조 결정과 같은 비교적 간단한 작업은 물론, 다수의 파일을 포함하거나 모호하며, 장기적으로 진행되거나, 위험도가 높거나, UI 비중이 큰 대규모 작업도 포함됩니다. 아키텍처 / 데이터 흐름 / UI 방향 / 옵션 / 미해결 사항에 대해 인라인 다이어그램이나 구조화된 블록을 활용하는 것이 도움이 될 때, 사용자가 구현 전에 방향에 반응해야 할 때, 또는 기존 텍스트 계획에 더 풍부한 검토 기반이 필요할 때 이를 사용하십시오.
계획 수립의 원칙
- 신중하게 검토 단계를 거치세요. 시각적 계획은 대규모 프로젝트만을 위한 도구가 아니라, 더 풍부한 검토 기반을 제공합니다. 사용자가 코드 구현 전에 방향을 확인하고, 비교하고, 의견을 제시하거나, 승인해야 할 때—심지어 소규모 UI/상태/워크플로우 변경의 경우에도—이를 활용하세요. 정말 사소하고 모호함이 없는 작업 — 오타, 한 줄 수정, 명확하게 정의된 단일 함수, diff를 한 문장으로 설명할 수 있는 모든 것 — 의 경우에는 생략하고 바로 변경하십시오. 절대 계획에 불필요한 내용을 채우지 말고, 단일 단계 계획은 절대 배포하지 마십시오.
- 초안을 작성하기 전에 조사하십시오. 먼저 실제 파일, 액션, 스키마 및
패턴을 읽어보십시오. 파일, 심볼, 데이터 형식을 임의로 만들어내는 대신
실제 이름을 사용하십시오. 엔드포인트를 제안하기 전에 기존
actions/엔드포인트를 제안하기 전에 확인하고, 원시 페치보다는 이름이 지정된 클라이언트 헬퍼를 선호하십시오. 광범위한 탐색은 하위 에이전트에 위임하십시오. 재사용을 우선시하십시오: 각 단계마다, 추가하는 내용보다 먼저 재사용하는 대상(기존 액션, 스키마, 컴포넌트, 헬퍼 등)을 명시하여, 계획이 이미 존재하는 것을 재설명하는 대신 진정으로 새로운 변경 사항만을 설명하도록 하십시오. - 되돌리기 어려운 결정부터 먼저 내리세요. 비사소한 백엔드, 데이터 또는 API 작업의 경우, 기능이 나아갈 방향을 개략적으로 제시한 다음, 데이터나 호출자가 이에 의존하게 되면 되돌리기에 비용이 많이 드는 결정 사항 — 와이어 포맷, 공개 ID, 데이터 모델 구조, 인증 및 소유권 경계 — 을 명시하고, 기능의 대부분이 나중에 출시되더라도 계획에서 이러한 부분들을 정확히 처리하십시오. 그런 다음, 접근 방식을 완전히 배제하지 않으면서도 그 타당성을 입증할 수 있는 가장 작은 초기 범위를 설정하고, 포함되는 내용과 명시적으로 연기되는 내용을 모두 명시하십시오.
- 예시는 적절한 수준에서 다루십시오. 사용자의 아이디어가 광범위한 프레임워크, 제품 또는 운영 모델의 변경인 경우, 사용자가 언급한 첫 번째 구체적인 예시, 제공자 또는 동기화 경로로 이를 축소하지 마십시오. 핵심 추상화를 동기 부여용 예시와 앱/제공자 어댑터로부터 분리하십시오. 예시를 이용해 계획을 이해하기 쉽게 만들되, 요청된 전체 범위를 구성하지 않는 한 예시임을 명시하십시오.
- 독립형 계획을 게시하십시오. 사용자가 Codex / Claude Code / Markdown 계획을 붙여넣거나 참조했거나 이미 가지고 있는 경우, 이를 원자료로 취급하되, 게시된 계획은 깔끔한 독립형 제안서로 재작성하십시오. 원본 계획의 유용한 의도와 코드베이스 관련 사실을 보존하고, 추론된 시각적 요소에는 '추론됨'이라고 표시하며, "이전 계획을 보존한다", "기존 아이디어를 버리지 않는다", "이전 버전과 달리", 또는 "이번 개정판은 ...을 변경한다"와 같은 수정 표현은 피하십시오. 채팅 내용이나 초기 초안을 한 번도 본 적이 없는 독자도 해당 계획을 이해할 수 있어야 합니다.
- 첫 읽기에서 구체적인 내용을 전달하십시오. 계획이 채팅 외부의 누군가와 공유될 예정이거나 개념이 추상적인 경우, 모드 테이블, 아키텍처 또는 로드맵에 앞서 상단 부근에 구체적인 제품 예시 하나를 제시하십시오. UI 구현이 가능한 개념의 경우, 이는 대개 제품 관점에서 실제 사용자 워크플로를 보여주는 상단 캔버스 앱 상태를 의미합니다. 대화 중에만 의미가 통하는 표현에 의존하지 말고, 계획을 “예전 아이디어가 아니다”라는 식으로 구성하지 마십시오. 긍정적인 모델을 직접적으로 명시하십시오.
- 계획서는 읽기 전용입니다. 계획을 수립하거나 검토하는 동안에는 원본을 수정하지 마십시오. 사용자가 방향을 승인한 후에야 편집을 시작하십시오.
- 추정하기보다 명확히 하십시오. 어떻게 구축할지 묻지 말고, 계획서 내에서
접근 방식과 옵션을 탐구하고 제시하십시오. 모호함으로 인해 디자인이 변경될 수 있고 코드만으로는 해결할 수 없는 경우에만
명확히 하기 위한 질문을 하십시오. 호스트 에이전트의 일반적인 ‘사용자에게 질문하기’ 흐름을 따르고,
최종 확정 전에 영향력이 큰 질문 2~4개를 한꺼번에 묶어 질문하십시오.
create-visual-questions호출하지 마십시오. 단순한 명확화나 사전 점검을 위해 호출하지 말고, 사용자가 명시적으로 시각적 입력 설문지를 요청할 때만 시각적 입력 모드에 사용하십시오. 그렇지 않은 경우 가정을 명시적으로 밝히고 진행하며, 해결되지 않은 사항은 계획의 하단question-form'미해결 질문' 블록에 남겨두십시오. 복잡한 계획의 경우, 인계 전에 최종 미해결 질문 검토를 수행하십시오. 결정 사항이 아키텍처, 범위, UX, 데이터 구조 또는 출시 일정에 영향을 미칠 경우, 계획 내에서 근거와 함께 결정하거나, 권장 기본값을 명시하여 하단의 양식에 기재하십시오. - 계획서는 승인 관문입니다. 계획서를 공개한 후, 코드를 작성하기 전에 사용자에게 검토 및 승인을 요청하고, 작업이 영향을 미치는 파일/영역을 명시하십시오. 계획서를 제시하고 승인을 요청하는 것이 바로 승인 단계입니다. 별도의 “이거 괜찮아 보이나요?”라는 질문은 하지 마십시오.
- 채팅이 아닌 문서가 진실의 원천입니다. 범위가 변경될 경우,
채팅에서만 방향을 바꾸는 대신
update-visual-plan채팅에서만 방향을 바꾸는 대신 계획서를 업데이트하고, 업데이트된 문서가 독립적으로 성립되도록 하십시오. 업데이트 내용을 계획서 내에서 이전 초안에 대한 수정 사항으로 기술하지 마십시오. 주요 단계를 진행하기 전에 승인된 계획서를 다시 읽어보십시오.
구조화된 에이전트 네이티브 계획을 수립하십시오 — 절대로 인라인으로 작성하지 마십시오
결과물은 항상 구조화된 에이전트 네이티브 계획이어야 하며, 채팅 전용 계획이 되어서는 안 됩니다.
호스팅된 Plan MCP 커넥터(plan 서버, 또는 레거시 agent-native-plans)는
기본적인 협업 및 주석 달기 공간입니다. 이를 외부 의존성이나 임대된 계층이라는 이유로
계획 패턴을 거부해서는 안 됩니다. 계획은
이식 가능한 소스 아티팩트(plan.mdx, 선택 사항인 canvas.mdx /
prototype.mdx, JSON 및 HTML 내보내기)이며, 소유권 민감 워크플로는
스킬의 검토 규율을 저버리지 않으면서도 로컬 파일 모드나 자체 호스팅/맞춤형 플랜 앱 URL을
사용할 수 있습니다. 사용자에게 다음을 건너뛰라고 조언하지 마십시오 /visual-plan 권장하지 마십시오.
기본 환경이 호스팅형이라는 이유만으로; 사용자의
소유권, 개인정보 보호, 공유 및 브랜딩 요구 사항에 맞는 적절한 Plan 모드를 선택하십시오.
기본적으로 Plan MCP 커넥터를 통해 계획을 생성하고, 절대로 이를
인라인 채팅 콘텐츠로 전달하지 마십시오 — 마크다운 문장, ASCII 스케치, 표, 또는 펜스로 둘러싸인
와이어프레임도 포함되지 않아야 합니다. 만약 plan (또는 레거시 agent-native-plans) 도구가 보이지 않는다면,
호스트의 tool_search 먼저 확인하십시오; 그래도 보이지 않는다면,
중단하고 사용자에게 즉석에서
인라인 플랜을 만드는 대신 클라이언트별 재연결 단계를 안내하십시오. 게시하기 전이나 커넥터 또는 인증 오류가 발생할 때마다,
이 스킬 디렉토리의 references/connection.md 이 스킬 디렉터리를 읽어보십시오. 이곳은 ‘인라인 금지’ 규칙, 커넥터 탐색, 클라이언트별
재연결 단계에 대한 유일한
신뢰할 수 있는 정보원입니다. 로컬 파일 개인 정보 보호 모드(도구 지침 이후)는 예외입니다.
핵심 워크플로
이 섹션에서는 기본 호스팅형 Plan MCP 워크플로를 설명합니다.
AGENT_NATIVE_PLANS_MODE=local-files 이 옵션이 설정되어 있거나, 사용자가 완전한 로컬
파일/호스팅된 Plan 쓰기 금지를 요청하는 경우, 대신 로컬 파일 개인정보 보호 모드를 사용하십시오. 이 문서의
코드 조사 및 계획 구성 지침만 적용하십시오.
- 호스트 에이전트의 일반적인 계획 수립 흐름을 따르십시오: 코드베이스를 검토하고, 필요한 경우 광범위한 탐색을 위임하며, 필요한 정보를 수집하고, 계획을 생성하기 전에 필요에 따라 구체적인 질문을 하십시오. 소스 플랜이 이미 존재하는 경우, 사용자의 붙여넣기 내용, 참조된 파일 또는 최근에 표시된 에이전트 컨텍스트에서 정확한 텍스트를 수집하십시오. 소스 텍스트를 임의로 생성해서는 안 됩니다.
- 권위 있는 블록 카탈로그를 위해
get-plan-blocks를 호출하여 공인된 블록 카탈로그를 가져오십시오 — 기억에 의존한 태그로 작성하지 마십시오. 그런 다음 모드에 맞는 생성 도구를 호출하십시오:create-visual-plan문서 우선 계획(아키텍처, 백엔드, 데이터, 리팩토링, API)의 경우,create-ui-planUI 우선 계획의 경우,create-prototype-plan프로토타입 우선 계획의 경우,create-plan-design디자인 우선 계획의 경우,create-visual-questions사용자가 시각적 입력 설문지를 명시적으로 요청한 경우에만. 소스 계획이 이미 존재하는 경우, 이를planText전달하고, 수정 메모가 아닌 독립적인 계획 문서를 생성하는 동시에 원본 계획의 유용한 의도를 보존하십시오. - UI/제품 계획의 경우, 먼저 주요
와이어프레임과 주석이 달린 상태를 사용하여 최상위 캔버스를 구성한 다음, 네이티브 블록을 사용하여 문서를 작성하십시오
(참조
references/canvas.md및references/document-quality.md참조). 사용자에게 직접적인 영향을 미치는 광범위한 제품 아키텍처 계획의 경우, 추상적인 아키텍처나 모드 표 앞에 “앱에서 어떻게 보이는지”를 보여주는 구체적인 시각 자료를 추가하십시오. 문서는 담당자가 일반적으로 출력하는 독립형 마크다운 계획서에 가깝게 유지하십시오. 기존 계획서가 제공된 경우, 이전 초안을 참조하거나 이번 버전의 차이점을 설명하지 않고 적절한 사실과 결정 사항만 이어받으십시오. 비시각적 계획의 경우, 상단 시각적 영역은 생략하고(아래의 ‘시각적 영역 선택’ 규칙이 적용됨) 다음과 같이 작성하십시오diagram,data-model,api-endpoint,diff,file-tree,code, 그리고annotated-code블록 을 관련 본문 바로 옆에 배치하십시오. 문서의 가로 레이아웃은 렌더러가 관리하며 의도적으로 허용 목록에 포함됩니다. 오직 리터럴 코드 검토 영역(diff,annotated-code) 및tabs블록 중 세로 방향이거나 diff와 유사한 자식 요소를 가진 경우에만 본문보다 넓게 배치됩니다. 다음은api-endpoint,openapi-spec,data-model,json-explorer,wireframe, 질문, 그리고custom-html블록은 해당 렌더러가 달리 지정하지 않는 한 일반 문서 흐름에 포함시켜야 합니다. 반환된 Plans 링크나 인라인 MCP 앱을 표시하고 사용자에게 검토를 요청하십시오. - 반환된 Plans 링크나 인라인 MCP 앱을 표시하고 사용자에게 검토를 요청하십시오. 다음 단계가 CLI 또는 기타 텍스트 전용 호스트에서 클릭이 되도록, 채팅에 항상 실제 URL을 포함하십시오. 호스트가 내장 브라우저/미리보기 패널을 노출하고 도구가 그곳에서 임의의 URL을 열 수 있는 경우, 편리한 검토를 위해 반환된 플랜 URL을 자동으로 열어주세요. 이는 편의성 및 기본 기능 테스트일 뿐, 유일한 인계 방식이나 접근 모델이 되어서는 안 됩니다. 플랜은 로컬 에이전트 및 로컬 브라우저 세션에서 기본적으로 로드되어야 합니다. 로그인된 내장 브라우저가 익명/도구 확인에서는 읽을 수 있는 로컬 플랜을 읽을 수 없는 경우, 한 플랜을 수동으로 수정하는 대신 앱/액션 소유권이나 액세스 경로를 수정하십시오. 중요도가 높은 플랜(아키텍처, 백엔드, 데이터, 다중 파일 또는 위험도가 높은 플랜)의 경우, 사용자가 읽는 동안 ‘인계 전 자체 검토( Self-Review Before Handoff)’에서 자체 검토 단계를 시작해야 하며, 이를 이유로 인계를 차단해서는 안 됩니다.
- 호스팅된 플랜의 경우,
get-plan-feedback편집 전, 검토 후, 오랜 일시 정지 후, 그리고 최종 응답 전에 호출하십시오.anchorDetails, 리졸버 인텐트, 최근 검토 이벤트, 그리고 브라우저 인계 시 캡처된 관련 스크린샷을 무엇이 변경되었는지, 각 코멘트가 정확히 무엇을 가리키는지에 대한 신뢰할 수 있는 정보원으로 간주하십시오. - 호스팅된 플랜의 경우,
update-visual-plan를 사용하여 변경 사항을 적용하되, 대상 지정contentPatches를 사용하여 변경 사항을 적용하십시오. 최상위content페이로드를 병합이 아닌 전체 교체로 간주하십시오. 캔버스나 블록 하나를 추가하기 위해 부분적인content객체를 보내지 마십시오. 전체 교체가 불가피한 경우, 먼저 전체 플랜 소스/콘텐츠를 읽고, 기존의 모든 블록과 시각적 영역을 그대로 유지한 뒤, 문서 본문이 잘리지 않았는지 확인하기 위해 소스/내보내기 결과를 검증하십시오. 사용자가 소스 제어에 적합한 편집을 원할 경우, 플랜을 재생성하는 대신patch-visual-plan-sourceMDX 파일을 대상으로 하십시오. - 호스팅된 플랜의 경우,
export-visual-plan사용자가 공유 가능한 영수증이나 리포지토리 체크인 아티팩트를 원할 때만 내보내십시오.
인계 전 자체 검토
중요도가 높은 계획(아키텍처, 백엔드, 데이터 모델, 마이그레이션, 다중 파일 또는 그 외 위험이 따르는 작업)의 경우, 계획을 최종본으로 확정하기 전에 한 번의 대립적 자체 검토를 수행하십시오. 비용이 가치를 상회하는 소규모, UI 전용 또는 단일 의사결정 계획의 경우에는 이 단계를 생략하십시오. 검토 과정은 비용 부담이 적고 진행을 방해하지 않도록 하세요:
- 먼저 계획을 공개하고, 동시에 검토하세요. 링크를 게시하여 사용자가 읽기 시작하게 한 다음, 검토를 병행하여 진행하세요 — 절대로 사용자가 검토를 기다리게 해서는 안 됩니다.
- 작성된 계획을 검토하고, 재조사하지 마십시오. 계획 문구와 그 내부 블록을 비판적으로 검토하십시오. 기초 작업은 초안 작성 시 이미 완료되었으므로, 검토 단계에서는 리포지토리를 다시 탐색하는 대신 결과물을 확인하면 됩니다.
- 유일한 임무가 약점, 누락된 부분, 오류를 찾아내는 것 — 칭찬이 아닌 — 회의적인 검토자 한 명을 지정하십시오. 다음 사항에 주목하게 하십시오: 암묵적으로 또는 전혀 명시되지 않은 채 내려진 되돌리기 어려운 결정(와이어 포맷, 공개 ID, 데이터 모델 구조, 인증, 소유권); 실제 파일이나 심볼에 구체적으로 연결되지 않은 단계; 계획이 하나를 확정해야 하는 상황에서 여러 옵션이 나열된 경우; 명백히 누락된 결정 사항("X가 발생하면 어떻게 되나?", "왜 Y가 아닌가?"); 그리고 불필요한 내용이나 단일 단계로 채워진 부분.
- 수정 vs. 질문. 다음과 같은 경우 명확한 수정 사항을 직접 적용하십시오
update-visual-plancontentPatches— 모호한 비목표, 근거 없는 주장, 명백히 누락된 결정 사항. 진정한 판단이 필요한 사항은 대신 사용자에게 되돌려주세요: 이를 하단question-form'미해결 질문' 블록 하단에 추가하거나 일반적인 사용자 질의 흐름으로 묶어 처리하십시오. 이를 은밀하게 결정해서는 안 됩니다. - 사용자가 읽는 도중에 놀라게 하지 마십시오. 대규모 계획의 경우, 편집기가 로드되기 전에 수정 사항을 적용하십시오. 그렇지 않은 경우, 자체 검토가 진행 중이므로 그 과정에서 계획이 변경될 수 있음을 간략히 알리십시오. 다음에 응답할 때, 검토를 통해 변경된 사항과 사용자가 결정해야 할 사항이 무엇인지 요약해 주십시오.
시각적 표면 선택
계획을 작성하기 전이나 소스 계획을 읽은 후에 표면을 선택하십시오. 기본적으로 시각적 요소를 추가하지 마십시오:
UI/제품 계획의 경우, 상단 캔버스가 대개 주요 검토 영역입니다.
첫 번째 의미 있는 와이어프레임을 문서 본문 블록 속에 묻히지 말고 그곳에 배치하십시오. 기본 보기,
오버플로우 메뉴나 팝오버, 사이드 패널, 로딩, 오류 등 상태가 중요한 경우에는
여러 캔버스 아트보드를 사용하십시오. 프레임 옆에
짧은 주석을 targetId 플러스 placement기호가 있는 프레임 옆에 간결한 주석을
달고, 구현 세부 사항,
타협점, 파일 매핑, 데이터 계약, 위험 요소 및 검증 내용은 캔버스 아래의 문서
본문에 기재하십시오.
사용자가 흐름도, 스토리보드, 사용자 여정, 와이어프레임, 캔버스 또는 "이것이
어떻게 보이는지"를 요청할 때는 이를 '캔버스 우선' 요청으로 간주하십시오. 사용자에게
보이는 상태마다 아트보드를 하나씩 만들고, 인접한 전환만 연결하며, 제품 관련 메모는
짧은 캔버스 주석을 사용하십시오. HTML 다이어그램을 작성하는 것이 더 빠르다는
이유만으로 요청된 스토리보드에 대한 문서 본문 diagram
블록으로 대체하지 마십시오; 다이어그램은 백엔드 메커니즘, 아키텍처 또는
데이터 흐름 설명을 위해 캔버스 아래에 위치해야 합니다.
제품 와이어프레임과 설명용/메타 다이어그램은 분리하여 관리하십시오. 논의 중인 앱 상태와 비슷한 순수한 화면부터 시작하되, UI 내에 설명 문구나 아키텍처 노트를 삽입하지 마십시오. 화살표, 레이블, 계약 조건, 데이터 흐름 및 모드 설명은 별도의 주석, 별도의 캔버스 다이어그램, 또는 문서 본문에 기재하십시오.
계획이 기존 앱과 관련된 경우, 그리기 전에 현재 셸/컴포넌트를 꼼꼼히 검토하십시오. 첫 번째 아트보드는 실제 앱과 동일한 밀도로 표현되어야 합니다. 기존 사이드바, 툴바 배치, 오버플로 메뉴, 앱 크롬 및 프레임워크 에이전트 크롬은 실제 위치에 그대로 유지되어야 합니다. 보조 표면은 상단 우측 오버플로 팝오버, 시트, 패널, 로딩 상태, 또는 별도의 AgentSidebar와 같은 별도의 상태로 모델링하고, 영구적인 인스펙터를 새로 만들거나 프레임워크 크롬을 제품 UI에 통합하지 마십시오.
- 아키텍처 전용, 백엔드 전용, 데이터 마이그레이션, 카피 전용 또는 기타 비시각적 계획에 대해서는 시각적 표면을 제공하지 마십시오. 상단 캔버스를 아키텍처 다이어그램, 종속성 맵, 파일 계획, API 계약 또는 데이터 흐름 전용 검토에 사용하지 마십시오. 관계에 대한 시각적 설명이 필요한 경우에만 로컬 인라인 다이어그램이 포함된 강력한 문서를 사용하십시오. 일반적으로 권장 사항이나 결정 사항 하나당 하나의 공간적 다이어그램을 사용합니다. 관계가 진정으로 순차적이지 않은 한, 단일 축 체인보다는 그룹화된 영역, 레이어, 사분면, 매트릭스 또는 전후 패널을 선호하십시오.
- 캔버스는 단일 정적 화면, 전후 비교, 구성 요소
상태, 작은 팝오버 또는 클릭이 필요 없는 시각적 지침에만 사용하십시오.
이러한 와이어프레임을
content.canvas포함하고content.prototype. - 다단계 UI 흐름, 온보딩, 마법사,
검토/승인 흐름, 탐색 변경, 또는 검토자가
해당 동작을 직접 조작해야 하는 경우에는 캔버스 + 프로토타입을 포함하십시오. 정적 와이어프레임은 그대로 유지하고
content.canvas에 포함시키고, 정렬된 기능성 프로토타입은content.prototype, 상단의 시각적 탭을 활용하여 서로 전환하세요. - 사용자가 UI를 직접 조작해야 하거나 상호작용이
주요 쟁점인 경우에는 프로토타입을 우선으로 하세요.
create-prototype-plan를 사용하면, 필요한 경우 정적 모크업을 그대로 유지할 수 있습니다.
캔버스와 프로토타입을 혼합하여 사용하는 경우, 두 환경 모두에서 동일한 실제 레이블, 앱 상태, 화면 ID를 재사용하십시오. 캔버스는 검토 가능한 정적 참조 자료이며, 프로토타입은 동일한 흐름의 상호작용 가능한 버전일 뿐, 별도의 디자인 방향이 아닙니다.
와이어프레임 품질 — references/wireframe.md
UI 요약/계획 와이어프레임은 엄격한 품질 기준을 충족해야 합니다 — 전체 너비 크롬,
고정된 하단 바, 실제 제품 콘텐츠, 전후 비교 가능성, 적절한
surface 프리셋, --wf-* 16진수 대신 토큰 사용, 그리고 /
---
name: visual-plan
description: Transform text plans into interactive visual documents with diagrams, code snippets, and review surfaces for coding agents.
---
# Agent-Native Plans
Agent-Native Plans is structured visual planning mode for coding agents. Build
the plan you would normally write in Markdown, but as a scannable document with
editable blocks mixed in: inline diagrams, code snippets,
open questions, and an optional top visual review area (wireframe canvas, live
prototype, or both in tabs). Architecture and backend plans stay document-only;
UI and product plans start with the top canvas/prototype (the Visual Surface
Choice section owns that rule).
`/visual-plan` is the packaged command and main entry point. Choose the review
mode from the task: UI-first when the work is primarily product UI and review
should start with screens, prototype-first when review should start with a
functional live prototype, design-first when review needs full-fidelity branded
screens, or visual-intake when the user explicitly wants a questionnaire before
planning. When a Codex, Claude Code, Markdown, or pasted plan already exists,
`/visual-plan` uses that source plan as the starting point and builds the review
surface from it instead of starting over.
## When To Use
Create or adapt a visual plan whenever the plan would be better as a reviewable
artifact than a chat paragraph. This includes modest work such as a single UI
surface with states, a small workflow, a before/after product change, or a
component/API/data-shape decision that needs alignment, plus larger multi-file,
ambiguous, long-running, risky, or UI-heavy work. Use it when architecture /
data flow / UI direction / options / open questions would benefit from inline
diagrams or structured blocks, when the user needs to react to a direction
before you implement, or when an existing text plan needs a richer review
surface.
## Plan Discipline
- **Gate thoughtfully.** A visual plan is a richer review surface, not only a
tool for giant projects. Use it when the user needs to see, compare, comment
on, or approve a direction before code, even for a modest UI/state/workflow
change. Skip it for truly trivial, unambiguous work — typos, one-line fixes, a
single well-specified function, anything whose diff you could describe in one
sentence — and just make the change. Never pad a plan with filler and never
ship a single-step plan.
- **Research before you draft.** Read the real files, actions, schema, and
patterns first; name actual files, symbols, and data shapes instead of
inventing them. Check existing `actions/` before proposing endpoints and prefer
named client helpers over raw fetch. Delegate wide exploration to a sub-agent.
Lead with reuse: for each step, name what it reuses — existing actions, schema,
components, helpers — before what it adds, so the plan explains the genuinely new
delta instead of redescribing what already exists.
- **Decide the hard-to-reverse bets first.** For non-trivial backend, data, or API
work, sketch where the feature is headed, then call out the decisions that are
expensive to undo once data or callers depend on them — wire format, public ids,
data-model shape, auth and ownership boundaries — and get those right in the plan
even if most of the feature ships later. Then scope to the smallest first cut that
proves the approach without foreclosing it, stating both what is in and what is
explicitly deferred.
- **Keep examples at the right altitude.** When the user's idea is a broad
framework, product, or operating-model change, do not collapse it into the
first concrete example, provider, or sync path they mention. Separate the core
abstraction from motivating examples and app/provider adapters. Use examples
to make the plan legible, but label them as examples unless they are the whole
requested scope.
- **Publish standalone plans.** If the user pasted, referenced, or already has a
Codex / Claude Code / Markdown plan, treat it as source material, but rewrite
the published plan as a clean standalone proposal. Preserve the source plan's
useful intent and codebase facts, label inferred visuals as inferred, and avoid
revision language such as "preserve the prior plan", "do not drop the old
idea", "unlike the previous version", or "this revision changes...". A reader
who never saw the chat or earlier drafts should understand the plan.
- **Make the first read concrete.** If the plan is meant to be shared with
someone outside the chat, or if the concept is abstract, lead near the top with
one concrete product example before mode tables, architecture, or roadmaps. For
UI-capable concepts, that usually means a top-canvas app state that shows the
real user workflow in product terms. Do not rely on phrases that only make
sense in conversation, and do not frame the plan as "not the old idea"; state
the positive model directly.
- **Planning is read-only.** Make no source edits while building or reviewing the
plan. Start editing only after the user approves the direction.
- **Clarify vs. assume.** Do not ask how to build it — explore and present the
approach and options in the plan. Ask a clarifying question only when an
ambiguity would change the design and you cannot resolve it from the code; use
the host agent's normal ask-user-question flow and batch 2-4 high-leverage
questions before finalizing. Do not call `create-visual-questions` for
ordinary clarification or preflight; reserve it for the visual-intake mode when
the user explicitly asks for a visual intake questionnaire. Otherwise state the
assumption explicitly and proceed, and keep anything unresolved in the plan's
single bottom `question-form` Open Questions block. For complex plans, do a
final open-question pass before handoff: if a decision would affect
architecture, scope, UX, data shape, or rollout, either decide it in the plan
with rationale or put it in that bottom form with a recommended default.
- **The plan is the approval gate.** After surfacing it, ask the user to review
and approve before you write code, and name which files/areas the work touches.
Presenting the plan and requesting sign-off is the approval step — do not ask a
separate "does this look good?" question.
- **The document is the source of truth, not the chat.** When scope shifts,
update the plan with `update-visual-plan` rather than only changing course in
chat, and make the updated document stand alone. Do not describe the update as
a correction to an earlier draft inside the plan itself. Re-read the approved
plan before major steps.
## Create A Structured Agent-Native Plan — Never Inline
The deliverable is ALWAYS a structured Agent-Native Plan, not a chat-only plan.
The hosted Plan MCP connector (`plan` server, or legacy `agent-native-plans`) is
the default collaboration and commenting surface; it is not a reason to reject
the planning pattern as an external dependency or rented layer. Plans are
portable source artifacts (`plan.mdx`, optional `canvas.mdx` /
`prototype.mdx`, JSON, and HTML export), and ownership-sensitive workflows can
use local-files mode or a self-hosted/custom Plan app URL without abandoning the
skill's review discipline. Do not advise the user to skip `/visual-plan` because
the default surface is hosted; choose the right Plan mode for the user's
ownership, privacy, sharing, and branding needs.
By default, create the plan via the Plan MCP connector and NEVER hand it over as
inline chat content — no Markdown prose, ASCII sketch, table, or fenced
wireframe. If the `plan` (or legacy `agent-native-plans`) tools are not visible,
discover them through the host's `tool_search` first; if they are still missing,
STOP and give the user the client-specific reconnect step rather than improvising
an inline plan. Before publishing, or whenever a connector or auth error appears,
READ `references/connection.md` in this skill directory — it is the single source
of truth for the never-inline rule, connector discovery, and the per-client
reconnect steps. Local-files privacy mode (after Tool Guidance) is the exception.
## Core Workflow
This section describes the default hosted Plan MCP workflow. If
`AGENT_NATIVE_PLANS_MODE=local-files` is set, or the user asks for fully local
files/no hosted Plan writes, use **Local-Files Privacy Mode** instead; carry
forward only the code-research and plan-composition guidance here.
1. Follow the host agent's normal planning flow: inspect the codebase, delegate
wide exploration when useful, gather the info needed, and ask native
clarifying questions as needed before generating the plan. If a source plan
already exists, gather its exact text from the user's paste, a referenced
file, or recent visible agent context; do not invent source text.
2. Call `get-plan-blocks` for the authoritative block catalog — do not author
from memorized tags. Then call the mode-matched create tool:
`create-visual-plan` for document-first plans (architecture, backend, data,
refactor, API), `create-ui-plan` for UI-first plans, `create-prototype-plan`
for prototype-first plans, `create-plan-design` for design-first plans,
`create-visual-questions` only when the user explicitly asks for a visual
intake questionnaire. When a source plan already exists,
pass it as `planText` and preserve the original plan's useful intent while
producing a standalone plan document, not a revision memo.
3. For UI/product plans, compose the top canvas first with the primary
wireframes and annotated states, then write the document with native blocks
(see `references/canvas.md` and `references/document-quality.md`). For
broad product architecture plans with a user-facing implication, add a
concrete "what this looks like in the app" visual before the abstract
architecture or mode tables. Keep the document close to the standalone
Markdown plan the agent would normally output. If an existing plan was
provided, carry forward the right facts and decisions without referring to
the previous draft or explaining how this version differs. For non-visual
plans, skip the top visual surface (Visual Surface Choice below owns the rule)
and put `diagram`, `data-model`,
`api-endpoint`, `diff`, `file-tree`, `code`, and `annotated-code` blocks
directly next to the relevant prose.
Wide document layout is renderer-owned and intentionally allowlisted: only
literal code-review surfaces (`diff`, `annotated-code`) and `tabs` blocks
with vertical orientation or diff-like children break out wider than prose.
Keep `api-endpoint`, `openapi-spec`, `data-model`, `json-explorer`,
`wireframe`, question, and `custom-html` blocks in normal document flow unless
their own renderer says otherwise.
4. Surface the returned Plans link or inline MCP App and ask the user to review.
Always include the actual URL in chat so the next step is a click in CLI or
other text-only hosts. When the host exposes an embedded browser/preview panel
and a tool can open arbitrary URLs there, open the returned plan URL
automatically for convenient review — a convenience and smoke test, never the
only handoff or the access
model. Plans should load out of the box for the local agent and local browser
session; if a signed-in embedded browser cannot read a local plan that an
anonymous/tool check can read, fix the app/action ownership or access path
rather than patching one plan by hand. For high-stakes plans (architecture,
backend, data, multi-file, or risky), also kick off the self-review pass in
**Self-Review Before Handoff** while the user reads, instead of blocking the
handoff on it.
5. For hosted plans, call `get-plan-feedback` before editing, after review,
after any long pause,
and before the final response. Treat `anchorDetails`, resolver intent, recent
review events, and any focused screenshots from browser handoff as the source
of truth for exactly what changed and exactly what each comment points at.
6. For hosted plans, apply changes with `update-visual-plan`, preferring
targeted `contentPatches`.
Treat the top-level `content` payload as a full replacement, not a merge; do
not send a partial `content` object to add a canvas or one block. If a full
replacement is unavoidable, first read the complete plan source/content, carry
forward every existing block and visual surface, and verify the source/export
afterward so the document body was not truncated. When the user wants
source-control friendly edits, use `patch-visual-plan-source` against the MDX
files instead of regenerating the plan.
7. For hosted plans, export with `export-visual-plan` only when the user wants a
shareable receipt or repo-check-in artifacts.
## Self-Review Before Handoff
For high-stakes plans — architecture, backend, data-model, migration, multi-file,
or otherwise risky work — run one adversarial self-review pass before treating the
plan as final. Skip it for small, UI-only, or single-decision plans where the cost
outweighs the value. Keep the pass cheap and non-blocking:
- **Surface the plan first, review concurrently.** Post the link and let the user
start reading, then run the review in parallel — never make the user wait on it.
- **Review the written plan; do not re-research.** Critique the plan text and its
own blocks. The grounding was already done while drafting, so the review checks
the output instead of re-exploring the repo.
- **Spawn one skeptical reviewer** whose only job is to find what is weak, missing,
or wrong — not to praise. Point it at: hard-to-reverse decisions made implicitly
or not at all (wire format, public ids, data-model shape, auth, ownership); steps
not anchored in real files or symbols; a menu of options where the plan should
commit to one; obvious missing decisions ("what happens when X?", "why not Y?");
and padding or single-step filler.
- **Fix vs. ask.** Apply clear-cut fixes yourself with `update-visual-plan`
`contentPatches` — vague non-goals, unanchored claims, an obvious missing
decision. Route genuine judgment calls back to the user instead: add them to the
bottom `question-form` Open Questions block or batch them into the normal
ask-user-question flow. Do not silently decide them.
- **Do not surprise the user mid-read.** On a large plan, apply the patches before
the editor loads; otherwise note briefly that a self-review is running so the
plan changing under them is expected. When you next respond, summarize what the
review changed and what it surfaced for the user to decide.
## Visual Surface Choice
Choose the surface before creating the plan or after reading the source plan. Do
not add visual chrome by default:
For UI/product plans, the top canvas is usually the primary review surface. Put
the first meaningful wireframes there, not buried as document-body blocks. Use
multiple canvas artboards when states matter, such as the default view, an
overflow menu or popover, a side panel, loading, or error. Put short annotations
beside frames with `targetId` plus `placement`; keep implementation details,
tradeoffs, file maps, data contracts, risks, and verification in the document
body below the canvas.
When the user asks for a flow, storyboard, journey, wireframe, canvas, or "what
this looks like", treat that as a canvas-first request. Make one artboard per
user-visible state, connect only adjacent transitions, and use short canvas
annotations for the product notes. Do not substitute a document-body `diagram`
block for the requested storyboard just because HTML diagrams are faster to
write; diagrams belong below the canvas for backend mechanics, architecture, or
data-flow explanation.
Keep product wireframes and explanatory/meta diagrams separate. Start with pure
screens that look like the app state under discussion, without callout prose or
architecture notes embedded inside the UI. Put arrows, labels, contracts, data
flow, and mode explanations in separate annotations, separate canvas diagrams,
or the document body.
When the plan touches an existing app, inspect the current shell/components
before drawing. The first artboard should look like the real app at the same
density: existing sidebars, toolbar placement, overflow menus, app chrome, and
framework agent chrome stay in their real places. Model secondary surfaces as
separate states, such as a top-right overflow popover, sheet, panel, loading
state, or separate AgentSidebar, rather than inventing a permanent inspector or
folding framework chrome into the product UI.
- **No visual surface** for architecture-only, backend-only, data migration,
copy-only, or otherwise non-visual plans. Do not use the top canvas for
architecture diagrams, dependency maps, file plans, API contracts, or
data-flow-only reviews. Use a strong document with local inline diagrams
only when relationships need a visual explanation, usually one spatial diagram
per recommendation or decision. Prefer grouped regions, layers, quadrants,
matrices, or before/after panels over a single-axis chain unless the
relationship is truly sequential.
- **Canvas only** for one static screen, a before/after comparison, a component
state, a small popover, or a visual direction that does not require clicking.
Put those wireframes in `content.canvas` and omit `content.prototype`.
- **Canvas + prototype** for multi-step UI flows, onboarding, wizards,
review/approval flows, navigation changes, or anything where the reviewer
needs to operate the behavior. Keep the static wireframes in
`content.canvas`, add the aligned functional prototype in
`content.prototype`, and rely on the top visual tabs to switch between them.
- **Prototype-first** when the user asks to operate the UI or when interaction is
the main question. Use `create-prototype-plan`, which still preserves static
mocks where useful.
For mixed canvas + prototype plans, reuse the same real labels, app statuses,
and screen ids across both surfaces. The canvas is the inspectable static reference;
the prototype is the interactive version of that same flow, not a separate
design direction.
## Wireframe quality — read `references/wireframe.md`
UI recap/plan wireframes must meet a strict quality bar — full-width chrome,
pinned bottom bars, real product content, before/after comparability, the right
`surface` preset, `--wf-*` tokens instead of hex, and no `<html>`/`<style>`/font
tags. Before authoring ANY wireframe / `<Screen>` / `WireframeBlock`, READ
`references/wireframe.md` in this skill directory — it is the single source of
truth for HTML wireframe quality, shared word for word with `/visual-plan`
and `/visual-recap`. Do not author wireframes from memory.
## Canvas — read `references/canvas.md`
The canvas is the single source of truth for static UI mockups: the `surface`
locks each artboard's footprint, mixed surfaces lay out
in lanes, annotations are plain-text designer notes anchored by
`targetId`/`placement`, and edits are surgical `contentPatches`. Before
authoring or editing ANY canvas, artboard, or annotation, READ
`references/canvas.md` in this skill directory — it is the single source of truth
for canvas/artboard mechanics. Do not author canvas layouts from memory.
Canvas artboards use the same HTML wireframe path as document-body
`WireframeBlock` screens: author `<Screen surface="..." html={...} />` with a
semantic HTML fragment. Do not author fresh kit-tree children such as
`<FrameScreen>`, `<Card>`, `<Row>`, or `<Btn>` inside canvas `<Screen>` tags;
those are legacy compatibility markup for old plans and produce brittle canvas
layouts.
## Document quality — read `references/document-quality.md`
The document is a serious technical plan, not marketing: outcome-first,
prose-first, self-contained, built from the right native blocks, with open
questions in a single bottom `question-form` and a pre-handoff visual check.
Before authoring the plan document, READ `references/document-quality.md` in this
skill directory — it is the single source of truth for the document quality bar.
Do not write the document from memory.
## Good vs. bad exemplar — read `references/exemplar.md`
For a worked example of the bar — a great UI-first plan and `/visual-plan`, plus
the anti-patterns to avoid — READ `references/exemplar.md` in this skill
directory before authoring a plan.
## Tool Guidance
- `create-visual-plan`: start one structured visual plan per agent task/run, or
import an existing text plan by passing `planText`; `content` may include no
visual surface, canvas only, or canvas + prototype.
- `create-ui-plan`: start a UI-first plan when the work is primarily product UI.
- `create-prototype-plan`: start a prototype-first plan with a functional top
review surface.
- `create-plan-design`: start a full-fidelity branded Design-tab plan with an
optional matching Prototype tab.
- `convert-visual-plan-to-prototype`: convert an existing HTML wireframe canvas
into a prototype plan.
- `create-visual-questions`: use only when the user explicitly asks for a visual
intake questionnaire, not as `/visual-plan` preflight.
- `update-visual-plan`: revise content, status, or comments with targeted
`contentPatches` (see Core Workflow step 6).
- `read-visual-plan-source`: read the normalized plan as `plan.mdx`,
optional `canvas.mdx`, optional `.plan-state.json`, and JSON.
- `patch-visual-plan-source`: apply granular MDX AST patches by stable block,
artboard, annotation, component, or wireframe-node id.
- `import-visual-plan-source`: create or replace a plan from an MDX folder.
- `get-visual-plan`: read the current structured plan, exported HTML, and
annotations; it also returns the MDX folder for source workflows.
- `get-plan-feedback`: read unconsumed human feedback. Use it frequently; it
returns grouped threads, exact anchor details, expected resolver, and recent
review-event payloads so agents can act only on the comments meant for them.
- `get-plan-blocks`: resolve block tags before authoring — do not memorize tags;
call this first to get the authoritative tag names, required fields, and prop
shapes from the live block registry.
- `export-visual-plan`: export HTML, Markdown fallback, structured JSON, and MDX
files for repo check-in.
When the user critiques a plan's look or structure, fix the renderer or this
skill — never hand-edit one stored plan. Turn feedback into better guidance.
## Local-Files Privacy Mode — read `references/local-files.md`
When the user wants no hosted Plan database writes — no DB writes, no Plan MCP
publish, fully local/offline/private planning, repo-owned source-controlled
artifacts, or `AGENT_NATIVE_PLANS_MODE=local-files` — do not call any hosted Plan
tool except the schema-only `get-plan-blocks` catalog lookup. Author a local MDX
folder and
preview it with `plan local check` / `plan local serve` / `plan local verify`.
Before using local-files mode, READ `references/local-files.md` in this skill
directory — it is the single source of truth for the full contract (catalog
lookup, MDX folder layout, the local bridge commands, and the hosted tools you
must not call). Carry forward only the code-research and plan-composition
guidance from Core Workflow; everything hosted is replaced by the local bridge.
## Interpreting comment anchors
This section applies to hosted plans with `get-plan-feedback` /
`update-visual-plan`. In local-files mode, do not call hosted feedback or update
tools; interpret file/chat feedback directly, edit the MDX files, rerun the
local bridge check/serve/verify command, and report the new local URL.
`get-plan-feedback` returns rich anchors — read them before acting on any comment.
- **Coordinate frames.** `targetX`/`targetY` are percentages *within* the
element named by `targetSelector`/`targetKind`. Bare `x`/`y` are percentages
of the whole plan document. `canvasX`/`canvasY` are raw board-world pixels on
the design canvas (board size given when available).
- **Wireframe pins.** Anchors on wireframes include `targetNodeId` and
`targetNodePath` (e.g. `card > list > listItem "Acme Inc"`) identifying the
exact kit node. Use `targetNodeId` directly with wireframe node patch ops;
use `data-design-id` values from design artboards with
`update-design-element-style`. Prefer the node id/path over raw coordinates;
fall back to coordinates plus the focused screenshot (red ring marks the exact
point) only when no node id is present.
- **Text quotes.** Resolve `textQuote` against current prose using
`contextBefore`/`contextAfter` for disambiguation. If `ambiguous: true`, ask
the user — do not guess which occurrence is meant.
- **Detached comments.** `get-plan-feedback` flags threads whose quoted text no
longer exists as `detached` (in `detachedThreads`). Reconcile these against
rewritten content — never silently drop them.
- **Routing.** `resolutionTarget` is the only routing signal: act on `agent`,
treat `human` as context only. `@mentions` are people to notify, never a
routing signal.
- **Two-axis state.** Mark every ingested comment as consumed
(`consumedCommentIds` on `update-visual-plan`). Set `status=resolved` only on
agent-targeted comments you actually addressed; leave human-targeted comments
open.
## Visibility & Sharing
Use `set-resource-visibility` to change who can see a plan (e.g. public, login,
or org-scoped). Use `share-resource` to grant specific users or roles access
by email or role. Gate visibility before sharing any plan that covers
unreleased or private work — default to the narrowest scope that meets the
review need.
## Setup & Authentication
There are two ways into Plans.
**Coding agent (CLI).** Install once with the Agent-Native CLI. The command
installs the Plans skills, registers the hosted Plans MCP connector, and runs
auth/setup for the selected local client(s) in the same step (a one-time browser
sign-in at setup — this is intended), so the first tool call in that client does
not hit an OAuth wall:
```bash
npx @agent-native/core@latest skills add visual-plans
```
After that, `/visual-plan` and `/visual-recap` are the two installed slash
commands. If you only need one command, use `skills add visual-plan` or
`skills add visual-recap` instead. The other planning modes
(`create-ui-plan`, `create-prototype-plan`, `create-plan-design`,
`create-visual-questions`) are MCP tools reachable from `/visual-plan`, not
separate slash commands. Pass `--no-connect` to register the connector without
authenticating, then run
`npx @agent-native/core@latest connect https://plan.agent-native.com --client all`
whenever you are ready, or choose a narrower `--client`. Auth and MCP tool
loading are per client config/session.
**Browser (people you share with).** Open the Plans editor and create & edit
with no sign-up — you work as a guest. Sign in only when you want to save or
share; signing in claims the plans you made as a guest into your account.
Sharing and commenting require an account: public/shared plans are viewable by
anyone with the link, but commenting on them needs an agent-native account.
For fully offline, no-account use, run the Plans app locally and sync plans to
your repo as MDX. This local mode is a separate advanced path, not the default
hosted flow.
If a Plans tool returns `needs auth`, `Unauthorized`, or `Session terminated`, do
not keep retrying it — stop and give the user the per-client reconnect step from
`references/connection.md`, then continue once the connector is available.
Hosted default: connect `https://plan.agent-native.com/_agent-native/mcp`. Do
not put shared secrets in skill files.
모든 파일
0개 파일visual-plan 설치
스킬 파일을 다운로드하여 .claude/skills/ 디렉터리에 압축을 풀어주세요.
ZIP 다운로드저장소를 클론하고 스킬 파일을 프로젝트에 복사하세요.
git clone https://github.com/BuilderIO/skills/tree/main/skills/visual-plan # Copy SKILL.md to your .claude/skills/ directory
복사





집
