작성용 프롬프트는 PROMPT.md를 참고하시고, 실제 설치 및 AI 적용 방법은 하단의 "AI 어시스턴트 활용 방법"을 참고해주시기 바랍니다.
Rhymix CMS(PHP 기반 콘텐츠 관리 시스템)의 구조와 확장 메커니즘을 한국어로 정리한 문서 모음이다. 신규 기여자가 저장소를 빠르게 파악할 수 있도록 작성했다.
LLM 어시스턴트가 이 저장소에서 작업한다면
llms.txt부터 읽는다. 그쪽은 진입 순서·명명 규칙·작성 규약을 압축한 LLM 전용 진입 문서다.
XpressEngine(XE) 1.8을 fork해 발전시킨 한국 커뮤니티 CMS다. 라이선스는 GPL v2+이며 PHP 7.4 이상에서 동작한다. 현재 버전은 common/constants.php:6의 RX_VERSION 상수에서 확인할 수 있다.
가장 큰 구조적 특징은 두 개의 클래스 계층이 공존한다는 점이다.
- 레거시 XE 시스템 —
classes/하위의 namespace 없는 전역 클래스 (Context,ModuleHandler,ModuleObject,FileHandler등). - 신형 Rhymix 프레임워크 —
common/framework/하위Rhymix\Framework\*namespace (Cache,DB,Storage,Template,Session등).
두 시스템은 common/autoload.php의 커스텀 autoloader로 통합되며, 대부분의 레거시 클래스는 신형 framework 클래스의 얇은 wrapper다.
| 문서 | 내용 |
|---|---|
| 01-overview.md | Rhymix 개요, XE 관계, 핵심 디자인 원칙 |
| 02-infrastructure.md | PHP 요구사항, 드라이버, 웹서버 설정 |
| 03-directory-structure.md | 저장소 트리, 디렉토리 역할 |
| 문서 | 내용 |
|---|---|
| 04-bootstrap-and-request-lifecycle.md | index.php ~ Context::close() 흐름 |
| 05-context.md | Context 클래스 API 일람 |
| 06-module-handler-lifecycle.md | ModuleHandler/ModuleObject 라이프사이클 |
| 07-router.md | Rhymix\Framework\Router 라우팅 엔진 |
| 08-display-and-response.md | DisplayHandler와 응답 포맷 |
| 09-templates-and-skins.md | 템플릿 v1/v2 엔진과 스킨 |
| 문서 | 내용 |
|---|---|
| 10-framework.md | Rhymix\Framework\* 클래스 인덱스 |
| 11-legacy-classes.md | classes/* 레거시 클래스 인덱스 |
| 12-helpers-and-globals.md | 전역 함수, 상수, $GLOBALS |
| 문서 | 내용 |
|---|---|
| 13-event-and-trigger-system.md | 트리거/애드온/eventHandler |
| 14-database-and-queries.md | DB 추상화, XML 쿼리 |
| 15-session-and-auth.md | Session, 로그인, CSRF |
| 16-i18n-and-lang.md | 다국어 시스템 |
| 17-cache-and-queue.md | 캐시와 큐 |
| 18-mail-sms-push.md | 메일/SMS/푸시 추상화 |
| 19-security.md | CSRF/XSS/파일 업로드/IP 차단 |
| 20-storage-and-files.md | 파일 스토리지 |
| 21-cli-and-scripts.md | CLI 모드, cron, 정리 스크립트 |
| 22-multi-site-and-domain.md | 다중 사이트 지원 |
| 23-mobile-detection.md | 모바일 감지 |
| 24-debug-and-logging.md | 디버그/로깅 |
| 25-config-system.md | 설정 시스템 |
| 26-namespaces-and-autoload.md | autoloader 4단계 분기 |
| 문서 | 내용 |
|---|---|
| 27-extension-points/module.md | 모듈 작성법 |
| 27-extension-points/addon.md | 애드온 작성법 |
| 27-extension-points/layout.md | 레이아웃 작성법 |
| 27-extension-points/module-skin.md | 모듈 스킨 작성법 |
| 27-extension-points/widget.md | 위젯 작성법 |
| 27-extension-points/widgetstyle.md | 위젯스타일 작성법 |
| 27-extension-points/editor-component.md | 에디터 컴포넌트 작성법 |
- 28-modules/ — 코어 32개 모듈
- 29-addons/ — 코어 6개 애드온
- 30-widgets/ — 코어 6개 위젯
- 31-widgetstyles/ — 코어 위젯스타일
- 32-layouts/ — 코어 레이아웃 (PC + 모바일)
- 33-editor-components/ — 코어 에디터 컴포넌트
- 34-external-libraries.md — Composer 패키지와 JS 라이브러리
| 문서 | 내용 |
|---|---|
| 35-testing-and-ci.md | Codeception, GitHub Actions |
| 만들고 싶은 것 | 가야 할 문서 |
|---|---|
| 새 모듈 | 27-extension-points/module.md |
| 새 애드온 (요청 hook) | 27-extension-points/addon.md |
| 새 위젯 | 27-extension-points/widget.md |
| 새 레이아웃 (테마) | 27-extension-points/layout.md |
| 모듈에 새 스킨 | 27-extension-points/module-skin.md |
| 위젯 데코레이터 | 27-extension-points/widgetstyle.md |
| 에디터에 새 컴포넌트 | 27-extension-points/editor-component.md |
| 새 메일/SMS/푸시 드라이버 | 18-mail-sms-push.md |
| 새 캐시/큐 드라이버 | 17-cache-and-queue.md |
| 새 CLI 스크립트 | 21-cli-and-scripts.md |
| 기존 액션을 hook | 13-event-and-trigger-system.md |
이 저장소는 Rhymix 본체의 docs/ 디렉토리에 놓이도록 설계되어 있다. 본체 루트(보통 index.php가 있는 디렉토리) 안에 docs/로 배치한 뒤, 사용하는 AI 어시스턴트의 규칙/컨텍스트 파일에서 docs/llms.txt를 가장 먼저 읽도록 지시하면 된다. llms.txt는 도구 중립적인 llmstxt.org 표준을 따르므로 어떤 어시스턴트든 동일하게 활용할 수 있다.
Rhymix 본체가 아직 없다면 먼저:
git clone https://github.com/rhymix/rhymix.git
가장 안전하고 편하다. 본체 저장소 히스토리에는 어떤 변경도 남지 않으므로, 본체에 PR을 보내거나 upstream을 따라가도 충돌이 생기지 않는다.
# Rhymix 본체 루트에서
git clone https://github.com/zodkr/rx-docs.git docs
# 본체에 docs/가 untracked로 잡히지 않도록 무시 처리 (한 번만)
echo '/docs/' >> .gitignore업데이트:
cd docs && git pull제거:
rm -rf docs본체를 자신의 fork로 관리하고 docs를 특정 커밋에 고정해 팀원들과 일관된 버전을 공유하고 싶다면 submodule이 적합하다. 단, .gitmodules 파일이 본체 fork에 커밋된다는 점에 유의한다(upstream rhymix/rhymix에 PR을 보낼 때는 이 변경을 포함하지 않아야 한다).
# 본체 루트에서
git submodule add https://github.com/zodkr/rx-docs.git docs
git commit -m "chore: add docs submodule"이미 submodule이 설정된 저장소를 새로 클론할 때:
git clone --recurse-submodules <본체 저장소 URL>
# 또는 이미 클론했다면
git submodule update --init --recursive업데이트(최신 커밋으로 이동 후 본체에 커밋):
git submodule update --remote docs
git add docs && git commit -m "chore: bump docs submodule"각 도구는 본체 루트에 놓인 규칙 파일을 자동으로 읽는다. 그 파일 안에 "코드 탐색 전에 docs/llms.txt를 먼저 읽어라" 한 줄만 명시하면 어떤 어시스턴트든 이 문서를 컨텍스트로 활용한다.
| 도구 | 본체 루트에 둘 파일 | 비고 |
|---|---|---|
| Claude Code | CLAUDE.md |
Rhymix 본체에 이미 포함되어 있음. 추가 설정 불필요 |
| OpenAI Codex / 일반 OSS 에이전트 | AGENTS.md |
점차 표준화되는 도구 중립 규약 |
| Cursor | .cursor/rules/rhymix.mdc (또는 구형 .cursorrules) |
rule 파일에 docs/llms.txt 우선 참조 명시 |
| Windsurf | .windsurfrules |
동일 |
| GitHub Copilot | .github/copilot-instructions.md |
저장소 단위 instructions |
| Gemini Code Assist | GEMINI.md |
워크스페이스 컨텍스트 |
| Cline / Roo Code | .clinerules |
동일 |
위 목록에 없는 도구라도 대부분 "프로젝트 규칙(rules)" 또는 "시스템 프롬프트"를 지정하는 기능이 있으므로, 거기서 docs/llms.txt를 가리키면 된다.
- 공식 사이트: https://rhymix.org
- 공식 매뉴얼: https://rhymix.org/manual
- 코딩 규칙: https://rhymix.org/manual/contrib/coding-standards
- 이슈/PR: https://github.com/rhymix/rhymix (PR base 브랜치는
master) - 보안 보고:
devops@rhymix.org(GitHub 이슈가 아님)