본문으로 건너뛰기
ElastiCORE 3.0 은 릴리스 후보(RC)입니다: Maven Central 의 3.0.261022-rc1. 2.2 라인 프로젝트는 2.2 문서를 보세요.
버전: 3.0

훅

훅은 편집과 Gradle 실행마다 bash(hooks/elasticore-hook.sh)로 돌고 Claude Code 에 JSON 으로 답합니다. 편집 도구(Edit, Write, MultiEdit)와 Bash·PowerShell 명령 - 실패한 명령 포함 - 그리고 Claude 가 끝내려는 순간을 봅니다.

언제무슨 일이
Claude 가 편집 도구로 생성 파일을 고침 - 첫 줄 //ecd:, // Initially generated by ElastiCORE; 줄 없음, 보존 블록 없음거절하고, 그 변경이 어디에 속하는지 알려 줌. 보존 블록 하나를 통째로 더하는 것(// !---------- ... // ------------!)은 통과
ElastiCORE 가 생성할 때마다 다시 쓰는 파일을 고침 - blueprint/schema.yml, 복사된 가이드, 기본 i18n/<도메인>-messages.properties, 생성된 orm.xml거절
보존 블록이 있는 생성 파일을 고침허용, 다시 생성해도 블록만 남는다고 알려 줌
-Pforce 로 Gradle 을 실행하거나 다른 방식으로 그 속성을 설정 (-P force, ORG_GRADLE_PROJECT_force ...)거절: 손 수정을 덮어씀. 사용자가 정함
src/main/resources/blueprint/<도메인>/ 의 모델을 바꿈끝내기 전에 ./gradlew compileJava 를 돌리고 경고를 고치라고 알림. elasticore { } 블록이 없는 빌드면 2.x 생성기가 권한·생명주기·파생 값을 무시한다는 것도
Gradle 빌드(성공이든 실패든)가 DSL 검증 경고, 읽지 못한 YAML 파일, 손댄 생성 파일을 출력그 뜻과 할 일을 알려 줌
성공한 빌드가 생성·컴파일하지 않은 DSL 변경을 둔 채 끝내려 함한 번 되돌려 빌드하게 함. 백그라운드 빌드, 중간에 끊기거나 걸러진 출력, 생성만 한 빌드는 세지 않음

중요한 세부​

  • -Pforce 는 "-Pforce", -P force, --project-prop force, -Dorg.gradle.project.force, ORG_GRADLE_PROJECT_force= 로, & ".\gradlew.bat", cmd /c, bash -c, env, time 을 거쳐도 알아봅니다. 명령을 셸처럼 읽으므로 -Pforce 를 언급한 커밋 메시지는 거절하지 않습니다.
  • "컴파일했다" 는 컴파일했다는 뜻입니다: 생성만(elcore3, elcore3ts, 컴파일 태스크를 -x 로 뺀 빌드)으로는 DSL 변경이 끝나지 않고, 한 Gradle 실행은 실패하고 다른 것은 성공한 명령도 마찬가지입니다.
  • 모델 파일은 ElastiCORE 마법사가 맨 위에 # Generated by ElastiCORE Framework 를 썼어도 늘 고칠 수 있습니다.
  • 긴 출력: 성공한 명령의 전체 출력은 Claude Code 가 저장한 파일에서 읽습니다. 실패한 명령은 Claude Code 가 처음 10,000자만 넘기므로, 아주 큰 프로젝트에서는 경고가 훅이 보는 범위 밖일 수 있습니다.
  • 다른 방법(셸의 스크립트)으로 한 편집은 막지 못합니다. 스킬이 Claude 에게 그렇게 하지 말라고 합니다.
  • opencode 에서는 키트의 플러그인이 같은 스크립트를 돌립니다: 거절은 도구 오류가 되고, 알림은 도구의 출력에 붙고, 컴파일 안 된 DSL 변경을 둔 채 쉬는 세션은 한 번 되돌려집니다.

프로젝트에서 끄기​

.claude/settings.local.json
{ "env": { "ELASTICORE_ALLOW_GENERATED_EDITS": "1" } }

ELASTICORE_ALLOW_FORCE=1 은 -Pforce 를 허용합니다. Windows 에서는 훅에 Git for Windows(Git Bash)가 필요합니다 - 없으면 설치하거나 플러그인을 끕니다.

훅 스크립트는 변경마다 Linux, macOS(자체 /bin/bash 3.2 포함), Windows 에서, Claude Code 가 실제로 보내는 JSON 으로 테스트합니다(tests/hooks/test-hooks.sh).