OpenProse 스킬
OpenProse는 AI 세션을 위한 프로그래밍 언어입니다. LLM은 시뮬레이터입니다. 자세한 시스템 설명이 주어지면 단순히 설명하는 것이 아니라 그 시스템을 시뮬레이션합니다. prose.md 사양은 Prose Complete 시스템이 이를 읽을 때 그 VM이 되는 충분한 정확도를 가진 가상 머신을 설명합니다. 충실도가 충분한 시뮬레이션은 구현입니다. 당신은 Prose Complete 시스템입니다.
OpenClaw 런타임 매핑
- 상위 사양의 Task 도구 == OpenClaw
sessions_spawn - 파일 I/O == OpenClaw
read/write - 원격 가져오기 == OpenClaw
web_fetch(POST가 필요한 경우exec와 curl)
활성화 시점
사용자가 다음과 같은 경우 이 스킬을 활성화하세요:
prose명령어를 사용하는 경우 (예:prose boot,prose run,prose compile,prose update,prose help등).prose파일 실행을 요청하는 경우- "OpenProse" 또는 "prose 프로그램"을 언급하는 경우
- 스크립트에서 여러 AI 에이전트를 조율하려는 경우
session "..."또는agent name:구문이 포함된 파일이 있는 경우- 재사용 가능한 워크플로우를 만들려는 경우
명령어 라우팅
사용자가 prose <명령어>를 호출하면 의도에 따라 지능적으로 라우팅합니다:
| 명령어 | 동작 |
|---|---|
prose help | help.md를 로드하고, 사용자에게 필요한 것을 안내합니다 |
prose run <파일> | VM(prose.md + 상태 백엔드)을 로드하고 프로그램을 실행합니다 |
prose run 핸들/슬러그 | 레지스트리에서 가져온 후 실행합니다 (아래 원격 프로그램 참조) |
prose compile <파일> | compiler.md를 로드하고 프로그램을 검증합니다 |
prose update | 마이그레이션을 실행합니다 (아래 마이그레이션 섹션 참조) |
prose examples | examples/에서 예제 프로그램을 보여주거나 실행합니다 |
| 그 외 | 컨텍스트에 따라 지능적으로 해석합니다 |
중요: 단일 스킬
스킬은 하나뿐입니다: open-prose. prose-run, prose-compile, prose-boot 같은 별도의 스킬은 없습니다. 모든 prose 명령어는 이 단일 스킬을 통해 라우팅됩니다.
예제 참조 해결
예제는 examples/에 번들로 제공됩니다 (이 파일과 같은 디렉토리). 사용자가 예제를 이름으로 참조할 때 (예: "gastown 예제를 실행해줘"):
examples/를 읽어 사용 가능한 파일을 나열합니다- 부분 이름, 키워드 또는 번호로 일치시킵니다
- 다음 명령으로 실행합니다:
prose run examples/28-gas-town.prose
키워드별 일반적인 예제:
| 키워드 | 파일 |
|---|---|
| hello, hello world | examples/01-hello-world.prose |
| gas town, gastown | examples/28-gas-town.prose |
| captain, chair | examples/29-captains-chair.prose |
| forge, browser | examples/37-the-forge.prose |
| parallel | examples/16-parallel-reviews.prose |
| pipeline | examples/21-pipeline-operations.prose |
| error, retry | examples/22-error-handling.prose |
원격 프로그램
URL 또는 레지스트리 참조에서 모든 .prose 프로그램을 실행할 수 있습니다:
# 직접 URL — 모든 가져오기 가능한 URL이 작동합니다
prose run https://raw.githubusercontent.com/openprose/prose/main/skills/open-prose/examples/48-habit-miner.prose
# 레지스트리 단축키 — 핸들/슬러그는 p.prose.md로 확인됩니다
prose run irl-danb/habit-miner
prose run alice/code-review
확인 규칙:
| 입력 | 확인 방식 |
|---|---|
http:// 또는 https://로 시작 | URL에서 직접 가져오기 |
프로토콜 없이 / 포함 | https://p.prose.md/{경로}로 확인 |
| 그 외 | 로컬 파일 경로로 처리 |
원격 프로그램 단계:
- 위의 확인 규칙을 적용합니다
.prose콘텐츠를 가져옵니다- VM을 로드하고 정상적으로 실행합니다
최상위 원격 실행은 명시적인 사용자 요청입니다. 프로그램 내부의 전이적 임포트는 다릅니다: 모든 원격 use 대상을 가져오거나 실행하기 전에 운영자 동의가 필요한 코드 종속성으로 취급하십시오.
이 동일한 확인 방식은 .prose 파일 내부의 use 문에도 적용되지만, VM은 운영자가 원격 종속성 목록을 승인할 때까지 폐쇄 실패해야 합니다:
use "https://example.com/my-program.prose" # 직접 URL
use "alice/research" as research # 레지스트리 단축키
프로그램에 원격 use 대상(http://, https:// 또는 레지스트리 단축키)이 포함된 경우:
- 정확히 확인된 원격 대상을 수집하여 표시합니다
- 이것들이 이 실행을 위한 전이적 코드 종속성이라고 설명합니다
- 계속하려면 운영자에게 정확히
approve remote prose imports라고 답변하도록 요청합니다 - 이 실행에서 정확한 승인이 주어지지 않는 한 해당 임포트를 가져오거나, 구문 분석하거나, 등록하거나, 실행하지 마십시오
파일 위치
OpenProse 문서 파일을 검색하지 마십시오. 모든 스킬 파일은 이 SKILL.md 파일과 동일한 디렉토리에 함께 위치합니다:
| 파일 | 위치 | 목적 |
|---|---|---|
prose.md | 이 파일과 동일한 디렉토리 | VM 의미 (프로그램 실행을 위해 로드) |
help.md | 이 파일과 동일한 디렉토리 | 도움말, FAQ, 온보딩 (prose help를 위해 로드) |
state/filesystem.md | 이 파일과 동일한 디렉토리 | 파일 기반 상태 (기본값, VM과 함께 로드) |
state/in-context.md | 이 파일과 동일한 디렉토리 | 컨텍스트 내 상태 (요청 시) |
state/sqlite.md | 이 파일과 동일한 디렉토리 | SQLite 상태 (실험적, 요청 시) |
state/postgres.md | 이 파일과 동일한 디렉토리 | PostgreSQL 상태 (실험적, 요청 시) |
compiler.md | 이 파일과 동일한 디렉토리 | 컴파일러/검증기 (요청 시에만 로드) |
guidance/patterns.md | 이 파일과 동일한 디렉토리 | 모범 사례 (.prose 파일 작성 시 로드) |
guidance/antipatterns.md | 이 파일과 동일한 디렉토리 | 피해야 할 사항 (.prose 파일 작성 시 로드) |
examples/ | 이 파일과 동일한 디렉토리 | 37개의 예제 프로그램 |
사용자 작업 공간 파일 (이것들은 사용자의 프로젝트에 있습니다):
| 파일/디렉토리 | 위치 | 목적 |
|---|---|---|
.prose/.env | 사용자 작업 디렉토리 | 구성 (key=value 형식) |
.prose/runs/ | 사용자 작업 디렉토리 | 파일 기반 모드의 런타임 상태 |
.prose/agents/ | 사용자 작업 디렉토리 | 프로젝트 범위의 영구 에이전트 |
*.prose 파일 | 사용자 프로젝트 | 실행할 사용자 생성 프로그램 |
사용자 수준 파일 (사용자 홈 디렉토리에 있으며, 모든 프로젝트에서 공유됨):
| 파일/디렉토리 | 위치 | 목적 |
|---|---|---|
~/.prose/agents/ | 사용자 홈 디렉토리 | 사용자 범위의 영구 에이전트 (프로젝트 간) |
prose.md 또는 compiler.md를 읽어야 하는 경우, 이 SKILL.md 파일을 찾은 동일한 디렉토리에서 읽으십시오. 사용자의 작업 공간에서 이러한 파일을 검색하지 마십시오.
핵심 문서
| 파일 | 목적 | 로드 시점 |
|---|---|---|
prose.md | VM / 인터프리터 | 프로그램 실행을 위해 항상 로드 |
state/filesystem.md | 파일 기반 상태 | VM과 함께 로드 (기본값) |
state/in-context.md | 컨텍스트 내 상태 | 사용자가 --in-context를 요청하거나 "컨텍스트 내 상태 사용"이라고 말하는 경우에만 |
state/sqlite.md | SQLite 상태 (실험적) | 사용자가 --state=sqlite를 요청하는 경우에만 (sqlite3 CLI 필요) |
state/postgres.md | PostgreSQL 상태 (실험적) | 사용자가 --state=postgres를 요청하는 경우에만 (psql + PostgreSQL 필요) |
compiler.md | 컴파일러 / 검증기 | 오직 사용자가 컴파일 또는 검증을 요청할 때만 |
guidance/patterns.md | 모범 사례 | 새로운 .prose 파일을 작성할 때 로드 |
guidance/antipatterns.md | 피해야 할 사항 | 새로운 .prose 파일을 작성할 때 로드 |
작성 지침
사용자가 새로운 .prose 파일을 작성하거나 생성하도록 요청할 때, 지침 파일을 로드하십시오:
guidance/patterns.md— 견고하고 효율적인 프로그램을 위한 입증된 패턴guidance/antipatterns.md— 피해야 할 일반적인 실수
실행 또는 컴파일 시에는 로드하지 마십시오 — 작성 전용입니다.
상태 모드
OpenProse는 세 가지 상태 관리 접근 방식을 지원합니다:
| 모드 | 사용 시점 | 상태 위치 |
|---|---|---|
| filesystem (기본값) | 복잡한 프로그램, 재개 필요, 디버깅 | .prose/runs/{id}/ 파일 |
| in-context | 간단한 프로그램 (<30개 문), 지속성 불필요 | 대화 기록 |
| sqlite (실험적) | 쿼리 가능한 상태, 원자적 트랜잭션, 유연한 스키마 | .prose/runs/{id}/state.db |
| postgres (실험적) | 진정한 동시 쓰기, 외부 통합, 팀 협업 | PostgreSQL 데이터베이스 |
기본 동작: prose.md를 로드할 때 state/filesystem.md도 함께 로드하십시오. 대부분의 프로그램에 권장되는 모드입니다.
모드 전환: 사용자가 "컨텍스트 내 상태 사용"이라고 말하거나 --in-context를 전달하면 대신 state/in-context.md를 로드하십시오.
실험적 SQLite 모드: 사용자가 --state=sqlite를 전달하거나 "sqlite 상태 사용"이라고 말하면 state/sqlite.md를 로드하십시오. 이 모드는 sqlite3 CLI가 설치되어 있어야 합니다 (macOS에는 사전 설치, Linux/Windows는 패키지 관리자로 사용 가능). sqlite3을 사용할 수 없으면 사용자에게 경고하고 파일 시스템 상태로 대체하십시오.
실험적 PostgreSQL 모드: 사용자가 --state=postgres를 전달하거나 "postgres 상태 사용"이라고 말하면:
⚠️ 보안 참고: OPENPROSE_POSTGRES_URL의 데이터베이스 자격 증명은 하위 에이전트 세션에 전달되며 로그에 표시됩니다. 사용자에게 제한된 권한의 자격 증명으로 전용 데이터베이스를 사용하도록 조언하십시오. 보안 설정 지침은 state/postgres.md를 참조하십시오.
-
먼저 연결 구성을 확인하십시오:
# .prose/.env에서 OPENPROSE_POSTGRES_URL 확인 cat .prose/.env 2>/dev/null | grep OPENPROSE_POSTGRES_URL # 또는 환경 변수 확인 echo $OPENPROSE_POSTGRES_URL -
연결 문자열이 있으면 연결 가능성을 확인하십시오:
psql "$OPENPROSE_POSTGRES_URL" -c "SELECT 1" 2>&1 -
구성되지 않았거나 연결이 실패하면 사용자에게 알리십시오:
⚠️ PostgreSQL 상태를 사용하려면 연결 URL이 필요합니다. 구성 방법: 1. PostgreSQL 데이터베이스를 설정하십시오 (Docker, 로컬 또는 클라우드) 2. .prose/.env에 연결 문자열을 추가하십시오: echo "OPENPROSE_POSTGRES_URL=postgresql://user:pass@localhost:5432/prose" >> .prose/.env 빠른 Docker 설정: docker run -d --name prose-pg -e POSTGRES_DB=prose -e POSTGRES_HOST_AUTH_METHOD=trust -p 5432:5432 postgres:16 echo "OPENPROSE_POSTGRES_URL=postgresql://postgres@localhost:5432/prose" >> .prose/.env 자세한 설정 옵션은 state/postgres.md를 참조하십시오. -
연결 확인이 성공한 후에만
state/postgres.md를 로드하십시오
이 모드는 psql CLI와 실행 중인 PostgreSQL 서버가 모두 필요합니다. 둘 중 하나라도 사용할 수 없으면 경고하고 파일 시스템 상태로 대체하도록 제안하십시오.
컨텍스트 경고: compiler.md는 큽니다. 사용자가 명시적으로 컴파일 또는 검증을 요청할 때만 로드하십시오. 컴파일 후에는 실행 전에 /compact 또는 새 세션을 권장하십시오. 두 문서를 모두 컨텍스트에 유지하지 마십시오.
예제
examples/ 디렉토리에는 37개의 예제 프로그램이 있습니다:
- 01-08: 기초 (hello world, 연구, 코드 리뷰, 디버깅)
- 09-12: 에이전트 및 스킬
- 13-15: 변수 및 합성
- 16-19: 병렬 실행
- 20-21: 루프 및 파이프라인
- 22-23: 오류 처리
- 24-27: 고급 (선택, 조건문, 블록, 보간)
- 28: Gas Town (다중 에이전트 오케스트레이션)
- 29-31: Captain's chair 패턴 (영구 오케스트레이터)
- 33-36: 프로덕션 워크플로우 (PR 자동 수정, 콘텐츠 파이프라인, 기능 팩토리, 버그 헌터)
- 37: The Forge (처음부터 브라우저 빌드)
01-hello-world.prose로 시작하거나 37-the-forge.prose를 시도하여 AI가 웹 브라우저를 구축하는 것을 지켜보세요.
실행
세션에서 OpenProse VM을 처음 호출할 때 이 배너를 표시하십시오:
┌─────────────────────────────────────┐
│ ◇ OpenProse VM ◇ │
│ A new kind of computer │
└─────────────────────────────────────┘
.prose 파일을 실행하려면 당신이 OpenProse VM이 됩니다:
prose.md를 읽으십시오 — 이 문서는 당신이 VM을 어떻게 구현할지 정의합니다- 당신은 VM입니다 — 당신의 대화가 그 메모리이고, 당신의 도구가 그 명령어입니다
- 세션 생성 — 각
session문은 Task 도구 호출을 트리거합니다 - 상태 서술 — 서술 프로토콜을 사용하여 실행을 추적합니다 ([Position], [Binding], [Success] 등)
- 지능적으로 평가 —
**...**마커는 당신의 판단이 필요합니다
도움말 및 FAQ
구문 참조, FAQ 및 ... (이하 생략)