Loading...
Loading...
mlua (MapleStory Worlds) 코드 작성/수정 시 MSW 공식 LSP 서버를 래핑한 CLI로 진단, 자동완성, 타입 조회, 정의 이동, 참조 검색, 시그니처 도움을 수행하는 스킬. MSW 프로젝트에서 .mlua 파일을 다룰 때 반드시 사용. mlua 코드를 쓸 때, MSW 스크립트를 만들 때, 메이플스토리 월드 개발 시 항상 트리거.
npx skill4agent add choigawoon/choigawoon-test-plugins test-mlua-lspservemlua-batch.jscommandmsw.mluainitializedidOpentextDocument/*mlua-lsp server --stdiolspServers.d.mluahovercompletehovercompletesignaturediagnoseerrors: 0.mlua.mluamlua-batch.jserrors > 0servebatchstopMLUA_LSP_IDLE_MINUTESRootDesk/MyDesk/Environment/NativeScripts/.d.mlua/Users/you/msw-projects/MyGame/RootDesk/MyDesk/Environment/# 파일로부터
node ~/.claude/skills/test-mlua-lsp/scripts/mlua-batch.js <project-root> queries.jsonl
# stdin에서
cat queries.jsonl | node ~/.claude/skills/test-mlua-lsp/scripts/mlua-batch.js <project-root>{"id":1,"command":"diagnose","file":"/abs/path/a.mlua"}
{"id":2,"command":"hover","file":"/abs/path/b.mlua","line":10,"col":5}
{"id":3,"command":"complete","file":"/abs/path/c.mlua","line":7,"col":12}linecolnullid| 경로 | 1쿼리 | N쿼리 (warm) |
|---|---|---|
단발 CLI ( | ~22ms | ~22ms × N (매 호출 Node + TCP) |
| ~22ms + α | ~22ms + N × daemon-RPC (p50 <5ms) |
node ~/.claude/skills/test-mlua-lsp/scripts/mlua-lsp.js <command> <project-root> <file> [line] [col]npx -y @choigawoon/mlua-lsp@0.5.0--no-daemon| 명령 | 용도 | 반환 핵심 |
|---|---|---|
| 타입/문법/미존재 멤버 에러 | |
| 해당 위치의 타입·설명 | |
| | |
| 정의 위치 이동 | |
| 사용 지점 찾기 | |
| 함수 시그니처·파라미터 | |
| 데몬 상태 | |
| 데몬 live 스냅샷 (in-flight · 완료 카운트, | |
| 머신 리더블 커맨드 카탈로그 (데몬 없이도 동작) | JSON 카탈로그 |
| 데몬 종료 | — |
| newline-JSON 프록시 (batch의 하위 계층) | stdin→stdout JSONL |
diagnosestatusdumpdescribestoplinecoldiagnosehoversignaturefound: false"Symbol not found"__SpawnService_TimerService_UserService_GameLogic_UtilLogic_MapService_HttpService_DataStorageService_InputServiceVector2Vector3QuaternionColorVector4TextComponentTransformComponentUITransformComponent.d.mlua_SpawnService:SpawnByModelId(id, name, Vector2(x,y), map)Vector2LEA-3005 InvalidArgument.mluacat <<EOF | node <plugin>/skills/test-mlua-lsp/scripts/mlua-batch.js <project-root>
{"id":"w1","command":"hover","file":"<any project .mlua>","line":1,"col":1}
{"id":"w2","command":"complete","file":"<any project .mlua>","line":1,"col":1}
EOF_SpawnServiceVector3found:false<project-root>/Environment/NativeScripts/Service/mlua-lsp.js statusworkspaceLoaded: truemlua-lsp.js stopEnvironment/*.d.mlua.mluaUIPopup.mlua| 토큰 모양 | not-found 의미 |
|---|---|
| 거의 항상 cold FP — warmup |
| 거의 항상 cold FP — warmup |
대문자 시작 빌트인 컴포넌트 ( | 거의 항상 cold FP — warmup |
사용자 정의 모듈/스크립트명 ( | 진짜 — 정의 누락 또는 오타 |
메소드/멤버 ( | warmup 후에도 남아있으면 진짜 — 진짜 API 누락 |
0. [WARMUP] 새 데몬 또는 의심 시 — 글로벌 hover 한 차례로 인덱스 깨우기
1. [PRE] batch로 hover/complete/signature 묶어서 API 확인
2. [WRITE] .mlua 작성 (여러 파일이어도 OK — 수정된 파일 경로를 머릿속에 쌓아둔다)
3. [POST] 수정된 전 파일을 한 번의 batch diagnose로 일괄 점검 → errors > 0인 파일만 수정 → 재진단 루프 → 전부 errors: 0
⚠️ diagnose 결과에 글로벌 'Symbol not found' 가 다수면 cold FP 의심 — warmup 후 재진단
4. [PLAY] (선택) msw-maker-mcp play로 실행 검증cat <<EOF | node ~/.claude/skills/test-mlua-lsp/scripts/mlua-batch.js /path/to/MyGame
{"id":1,"command":"hover","file":"/path/to/MyGame/RootDesk/MyDesk/Player.mlua","line":12,"col":18}
{"id":2,"command":"definition","file":"/path/to/MyGame/RootDesk/MyDesk/Player.mlua","line":12,"col":18}
{"id":3,"command":"references","file":"/path/to/MyGame/RootDesk/MyDesk/Player.mlua","line":12,"col":18}
EOF.mlua.mluamlua-batch.js# 예: 수정된 파일 N개를 한 번에
printf '%s\n' "${edited_files[@]}" \
| awk '{printf "{\"id\":%d,\"command\":\"diagnose\",\"file\":\"%s\"}\n", NR, $0}' \
| node /path/to/mlua-batch.js <project-root>errors > 0errors: 0mlua-lsp.js diagnoseplugin.jsonlspServers.mluamlua-lsp server --stdio