Help us improve
Share bugs, ideas, or general feedback.
npx claudepluginhub unicorn-plugins/abra --plugin abraHow this skill is triggered — by the user, by Claude, or both
Slash command
/abra:prototypeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
[PROTOTYPE 스킬 활성화]
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
[PROTOTYPE 스킬 활성화]
DSL을 Dify에 Import → Publish → Run → Export하여 프로토타이핑을 수행함. 에러 발생 시 DSL 수정 → 재검증 → 재시도 루프를 자동 실행하여 검증 완료된 DSL을 확보함.
다음 키워드 감지 시 또는 /abra:prototype 호출 시:
AGENTS.md 파일에서 ## 환경변수섹션의 환경변수 로딩. 로딩 실패 시 사용자에게 /abra:setup을 먼저 수행하라고 안내하고 종료.
AI_RUNTIME 자동 감지 및 업데이트:
{ABRA_PLUGIN_DIR}/resources/guides/call-subagent.md의 "0. AI_RUNTIME 자동 감지" 규칙에 따라 현재 런타임을 감지하고 AGENTS.md의 AI_RUNTIME 값을 업데이트.
| 에이전트 | FQN |
|---|---|
| dsl-architect | abra:dsl-architect:dsl-architect |
| prototype-runner | abra:prototype-runner:prototype-runner |
{ABRA_PLUGIN_DIR}/resources/guides/combine-prompt.md에 따라 AGENT.md + agentcard.yaml + tools.yaml 합치기Agent(subagent_type=FQN, model=tier_mapping 결과, prompt=조립된 프롬프트) 호출{ABRA_PLUGIN_DIR}/gateway/runtime-mapping.yaml 참조워크플로우 단계에 Agent: {agent-name}이 명시된 경우,
메인 에이전트는 해당 단계를 직접 수행하지 않고, {ABRA_PLUGIN_DIR}/resources/guides/call-subagent.md에 따라 서브 에이젼트 호출
{PROJECT_DIR}/AGENTS.md에 각 Phase 완료 시 저장. 최종 완료 시 'Done'으로 표기.
## 워크플로우 진행상황
- {skill-name}: Phase3
진행상황 정보가 있는 경우 마지막 완료 단계 이후부터 자동 재개
사용자 입력과 파일 존재 여부를 조합하여 실행 모드를 결정함.
A) 개선 요청 모드: 프롬프트에 "프로토타입 개선: {설명}" 또는 "워크플로우 개선: {설명}" 패턴 존재
B) DSL 없음: DSL 파일 미존재 → dsl-generate 스킬로 위임
C) 일반 실행: DSL 파일 있음 + 개선 요청 없음 → Phase 1 진행
validate_dsl 통과){output_dir}/{app-name}_v{MAX}.dsl.yaml (버전 파일 없으면 {output_dir}/{app-name}.dsl.yaml)"프로토타입 개선:" 또는 "워크플로우 개선:" 이후 텍스트 추출"프로토타입 에러:" 또는 "워크플로우 에러:" 이후 텍스트 추출
※ Prefix가 없는 경우 요청 의도를 식별하여 개선요청이나 에러수정 요청으로 판단되면 사용자에게 확인하고 진행validate_dsl로 반드시 검증{output_dir}/{app-name}.wip.dsl.yaml로 저장{output_dir}/{app-name}_v*.dsl.yaml 스캔으로 다음 버전 번호 결정{app-name}_v{N}.dsl.yaml 형태로 저장{output_dir}/{app-name}.wip.dsl.yaml (존재하면 최우선){output_dir}/{app-name}_v{MAX}.dsl.yaml (버전 파일 있는 경우){output_dir}/{app-name}.dsl.yaml (원본)gateway/.venv{output_dir}/{app-name}_v*.dsl.yaml 파일 목록 스캔하여 MAX 버전 추출{output_dir}/{app-name}_v{MAX+1}.dsl.yaml (버전 파일 없으면 _v1){output_dir}/{app-name}.wip.dsl.yaml 파일이 존재하면 삭제에러 수정 루프:
import → publish → [에러?] → DSL 수정 → validate_dsl → update → 재게시
↓
run → [에러?] → DSL 수정 → validate_dsl → update → 재실행
↓
[성공] → export → 완료
검증된 DSL 파일 확인, 실행 결과 사용자 보고:
{app-name}_v{N}.dsl.yamlv1 ~ v{N} (output_dir 내 파일 기준)완료 메시지 필수 포함 내용:
# Dify Workflow 테스트 방법
- 브라우저에서 http://localhost 접속 후 로그인
- 자동으로 생성된 워크플로우 클릭
- 우측 상단의 '미리보기'클릭하여 테스트
# Playwright MCP를 이용하여 AI 직접 테스트 요청
※ 주의: Playwright MCP는 스크린샷 이미지를 캡처해서 수행하므로 토큰 소비 많음(낮은 모델 사용, 사용자가 일부 액션 직접 수행)
- 아래 프롬프트로 요청
> Playwright MCP로 Dify UI를 접근하여 id: {본인id}, pw: {본인pw}로 로그인
- 사용자가 테스트 할 워크플로우 선택하고 '미리보기' 클릭해줌
- 테스트 요청
> DSL 파일을 읽어 테스트 계획을 세우고 테스트하세요.
- 에러 발생 시 수정 요청
> 프로토타입 에러: {에러 내용}
# 개선사항 요청 또는 에러 수정 요청
Dify에서 워크플로우를 실행해보신 후 개선 또는 에러 수정이 필요하면 아래 형식으로 입력하세요.
> 프로토타입 개선: [개선사항 설명]
> 프로토타입 에러: [에러내용 설명]
예시:
- 프로토타입 개선: 프롬프트 템플릿 한국어로 변경
- 프로토타입 에러: 테스트 중 에러 발생 - 에러메시지 xxxx
완료 보장 규칙:
요구사항 변형 금지:
run 성공 확인 + export 파일 존재 확인.
완료 시 임시 파일 없음. {app-name}.wip.dsl.yaml은 export 성공 후 삭제함.
| # | 규칙 |
|---|---|
| 1 | import 전 반드시 validate_dsl로 사전 검증을 수행한다 |
| 2 | publish/run 에러 시 DSL 수정 → validate_dsl → update 루프를 실행한다 |
| 3 | 성공 시 export로 검증된 최종 DSL을 확보한다 |
| 4 | run이 100% 정상 실행될 때까지 에러 수정 루프를 반복한다 |
| 5 | export 전 output_dir 내 버전 파일 스캔 후 다음 버전 번호를 결정한다 |
| 6 | export 파일명은 반드시 {app-name}_v{N}.dsl.yaml 형태로 저장한다 |
| # | 금지 사항 |
|---|---|
| 1 | DSL 구조를 대규모로 변경하지 않는다 (대규모 변경 시 dsl-architect로 핸드오프) |
| 2 | 원래 요구사항(시나리오)을 사용자 확인 없이 변형하지 않는다 |
| 3 | 사용자에게 직접 질문하지 않는다 (에이전트 내에서) |
| 4 | 개선 요청 시 시나리오의 핵심 목적을 변경하지 않는다 (Phase 0.5 dsl-architect 포함) |
{app-name}_v{N}.dsl.yaml 형태로 존재하는가