|
2 | 2 |
|
3 | 3 | [English](README.md) | 한국어 |
4 | 4 |
|
5 | | -자동 포맷팅과 LSP 진단 기능을 갖춘 AI 코딩 지원 CLI 및 Claude Code 플러그인입니다. |
| 5 | +Claude Code용 자동 포맷팅 및 LSP 진단 플러그인. AI 코딩 세션에서 실시간 타입 체크 피드백과 자동 코드 포맷팅을 제공합니다. |
6 | 6 |
|
7 | 7 | ## 주요 기능 |
8 | 8 |
|
9 | | -- **자동 포맷팅 훅** - Claude Code 편집 후 자동으로 파일 포맷팅 |
10 | | -- **LSP 진단** - AI 코딩 세션을 위한 실시간 타입 체크 피드백 |
11 | | -- **다중 언어 지원** - TypeScript, Python, Go, Rust 등 |
| 9 | +- **자동 포맷팅 훅** — Claude Code 편집 후 자동으로 파일 포맷팅 (35+ 포매터) |
| 10 | +- **LSP 진단** — 실시간 타입 에러와 경고를 Claude 컨텍스트로 피드백 |
| 11 | +- **30+ 언어 서버** — TypeScript, Python, Go, Rust, Kotlin, Dart 등 |
| 12 | +- **제로 설정** — 프로젝트 파일에서 언어 서버 자동 감지 |
12 | 13 |
|
13 | | -## 설치 |
| 14 | +## 플러그인 설치 (Claude Code) |
| 15 | + |
| 16 | +### 플러그인 설치 |
14 | 17 |
|
15 | 18 | ```bash |
16 | | -npm install -g @pleaseai/code |
17 | | -# 또는 |
18 | | -bun add -g @pleaseai/code |
| 19 | +claude plugin add --from https://github.com/pleaseai/code-intelligence |
19 | 20 | ``` |
20 | 21 |
|
21 | | -## 빠른 시작 |
22 | | - |
23 | | -### Claude Code 훅 설정 |
24 | | - |
25 | | -`.claude/settings.json`에 다음을 추가하세요: |
26 | | - |
27 | | -```json |
28 | | -{ |
29 | | - "hooks": { |
30 | | - "PostToolUse": [ |
31 | | - { |
32 | | - "matcher": "Write|Edit", |
33 | | - "hooks": [ |
34 | | - { |
35 | | - "type": "command", |
36 | | - "command": "npx @pleaseai/code format --stdin" |
37 | | - }, |
38 | | - { |
39 | | - "type": "command", |
40 | | - "command": "npx @pleaseai/code lsp --stdin" |
41 | | - } |
42 | | - ] |
43 | | - } |
44 | | - ] |
45 | | - } |
46 | | -} |
47 | | -``` |
| 22 | +`code-please` 플러그인이 설치되며 다음을 제공합니다: |
| 23 | +- Write/Edit 시 자동 포맷팅 PostToolUse 훅 |
| 24 | +- Claude 컨텍스트로 피드백되는 LSP 진단 |
48 | 25 |
|
49 | | -또는 예제 훅 파일을 복사하세요: |
| 26 | +### 언어별 LSP 플러그인 설치 |
| 27 | + |
| 28 | +필요한 언어 서버만 선택 설치하세요: |
50 | 29 |
|
51 | 30 | ```bash |
52 | | -cp node_modules/@pleaseai/code/hooks/hooks.json .claude/ |
| 31 | +# TypeScript/JavaScript |
| 32 | +claude plugin add --from https://github.com/pleaseai/code-intelligence --plugin typescript-lsp |
| 33 | + |
| 34 | +# Python |
| 35 | +claude plugin add --from https://github.com/pleaseai/code-intelligence --plugin pyright-lsp |
| 36 | + |
| 37 | +# Go |
| 38 | +claude plugin add --from https://github.com/pleaseai/code-intelligence --plugin gopls-lsp |
| 39 | + |
| 40 | +# Rust |
| 41 | +claude plugin add --from https://github.com/pleaseai/code-intelligence --plugin rust-analyzer-lsp |
53 | 42 | ``` |
54 | 43 |
|
55 | | -### CLI 사용법 |
| 44 | +### 사용 가능한 LSP 플러그인 |
| 45 | + |
| 46 | +| 플러그인 | 언어 | 서버 | |
| 47 | +|----------|------|------| |
| 48 | +| `typescript-lsp` | TypeScript/JavaScript | typescript-language-server | |
| 49 | +| `pyright-lsp` | Python | pyright | |
| 50 | +| `gopls-lsp` | Go | gopls | |
| 51 | +| `rust-analyzer-lsp` | Rust | rust-analyzer | |
| 52 | +| `kotlin-lsp` | Kotlin | JetBrains Kotlin LSP | |
| 53 | +| `dart-lsp` | Dart | dart language-server | |
| 54 | +| `vue-lsp` | Vue | @vue/language-server | |
| 55 | +| `svelte-lsp` | Svelte | svelte-language-server | |
| 56 | +| `astro-lsp` | Astro | @astrojs/language-server | |
| 57 | +| `deno-lsp` | Deno | deno lsp | |
| 58 | +| `biome-lsp` | JS/TS (린터) | biome | |
| 59 | +| `oxlint-lsp` | JS/TS (린터) | oxlint | |
| 60 | +| `eslint-lsp` | JS/TS (린터) | eslint | |
| 61 | +| `prisma-lsp` | Prisma | @prisma/language-server | |
| 62 | +| `graphql-lsp` | GraphQL | graphql-language-service-cli | |
| 63 | +| `yaml-lsp` | YAML | yaml-language-server | |
| 64 | +| `bash-lsp` | Bash/Shell | bash-language-server | |
| 65 | +| `dockerfile-lsp` | Dockerfile | dockerfile-language-server | |
| 66 | +| `php-lsp` | PHP | intelephense | |
| 67 | +| `jdtls-lsp` | Java | Eclipse JDTLS | |
| 68 | +| `clangd-lsp` | C/C++ | clangd | |
| 69 | +| `csharp-lsp` | C# | OmniSharp | |
| 70 | +| `fsharp-lsp` | F# | fsautocomplete | |
| 71 | +| `swift-lsp` | Swift | SourceKit-LSP | |
| 72 | +| `rubocop-lsp` | Ruby (린터) | rubocop | |
| 73 | +| `elixir-lsp` | Elixir | elixir-ls | |
| 74 | +| `lua-lsp` | Lua | lua-language-server | |
| 75 | +| `ocaml-lsp` | OCaml | ocaml-lsp | |
| 76 | +| `terraform-lsp` | Terraform | terraform-ls | |
| 77 | +| `texlab-lsp` | LaTeX | TexLab | |
| 78 | +| `gleam-lsp` | Gleam | gleam | |
| 79 | +| `zls-lsp` | Zig | zls | |
| 80 | + |
| 81 | +## CLI 사용법 |
56 | 82 |
|
57 | 83 | ```bash |
| 84 | +# 전역 설치 |
| 85 | +npm install -g @pleaseai/code |
| 86 | + |
58 | 87 | # 파일 포맷팅 |
59 | 88 | code format src/index.ts |
60 | 89 |
|
61 | 90 | # LSP 진단 확인 |
62 | 91 | code lsp src/index.ts |
63 | | -``` |
64 | 92 |
|
65 | | -## 설정 |
66 | | - |
67 | | -프로젝트 루트에 `dora.json` 또는 `opencode.json`을 생성하세요: |
68 | | - |
69 | | -```json |
70 | | -{ |
71 | | - "formatter": { |
72 | | - "biome": { |
73 | | - "extensions": [".ts", ".tsx", ".js", ".jsx", ".json"] |
74 | | - }, |
75 | | - "prettier": { |
76 | | - "disabled": true |
77 | | - }, |
78 | | - "custom": { |
79 | | - "command": ["my-formatter", "$FILE"], |
80 | | - "extensions": [".xyz"] |
81 | | - } |
82 | | - } |
83 | | -} |
| 93 | +# 도구 확인 및 설치 |
| 94 | +code setup |
84 | 95 | ``` |
85 | 96 |
|
86 | | -### 모든 포매터 비활성화 |
| 97 | +## 설정 |
87 | 98 |
|
88 | | -```json |
89 | | -{ |
90 | | - "formatter": false |
91 | | -} |
| 99 | +프로젝트 루트에 `.please/config.yml`을 생성하세요: |
| 100 | + |
| 101 | +```yaml |
| 102 | +# 포매터 설정 |
| 103 | +formatter: |
| 104 | + biome: |
| 105 | + command: [biome, format, --write, $FILE] |
| 106 | + extensions: [.ts, .tsx, .js, .jsx] |
| 107 | + prettier: |
| 108 | + disabled: true # 내장 포매터 비활성화 |
| 109 | + custom: |
| 110 | + command: [my-formatter, $FILE] |
| 111 | + extensions: [.xyz] |
| 112 | + |
| 113 | +# LSP 설정 |
| 114 | +lsp: |
| 115 | + typescript: |
| 116 | + enabled: true |
| 117 | + pyright: |
| 118 | + root: ./backend # 커스텀 루트 경로 |
| 119 | + vue: |
| 120 | + enabled: false # 특정 서버 비활성화 |
92 | 121 | ``` |
93 | 122 |
|
94 | | -## 지원 언어 |
95 | | - |
96 | | -### LSP 진단 |
97 | | - |
98 | | -| 언어 | 서버 | 자동 감지 기준 | |
99 | | -|-----------------------|----------------------------|----------------------------------| |
100 | | -| TypeScript/JavaScript | typescript-language-server | package.json, bun.lock | |
101 | | -| TypeScript/JavaScript | oxlint | .oxlintrc.json, package.json | |
102 | | -| Deno | deno lsp | deno.json | |
103 | | -| Python | pyright | pyproject.toml, requirements.txt | |
104 | | -| Go | gopls | go.mod | |
105 | | -| Rust | rust-analyzer | Cargo.toml | |
106 | | -| Kotlin | JetBrains Kotlin LSP | build.gradle.kts, pom.xml | |
107 | | -| Dart | dart language-server | pubspec.yaml | |
108 | | -| Prisma | @prisma/language-server | schema.prisma | |
109 | | -| Vue | @vue/language-server | package.json (vue 포함) | |
| 123 | +`formatter: false` 또는 `lsp: false`로 전체 비활성화할 수 있습니다. |
110 | 124 |
|
111 | | -### 포매터 |
| 125 | +## 내장 포매터 |
112 | 126 |
|
113 | | -biome, prettier, gofmt, mix, zig fmt, clang-format, ktlint, ruff, air (R), uv format, rubocop, standardrb, htmlbeautifier, dart, ocamlformat, terraform, latexindent, gleam, prisma |
114 | | - |
115 | | -## MCP 서버 |
116 | | - |
117 | | -(준비 중) |
| 127 | +biome, prettier, gofmt, mix (Elixir), zig fmt, clang-format, ktlint (Kotlin), ruff, air (R), uv format, rubocop, standardrb, htmlbeautifier, dart, ocamlformat, terraform, latexindent, gleam, prisma |
118 | 128 |
|
119 | 129 | ## 환경 변수 |
120 | 130 |
|
121 | | -| 변수 | 설명 | 기본값 | |
122 | | -|----------------------|-------------------|--------| |
123 | | -| `CODE_PROJECT_PATH` | 프로젝트 디렉토리 | cwd | |
124 | | -| `CLAUDE_PROJECT_DIR` | 훅 모드에서 사용 | - | |
| 131 | +| 변수 | 설명 | 기본값 | |
| 132 | +|------|------|--------| |
| 133 | +| `CODE_PROJECT_PATH` | 프로젝트 디렉토리 | cwd | |
| 134 | +| `CLAUDE_PROJECT_DIR` | 훅 모드에서 사용 | - | |
125 | 135 |
|
126 | 136 | ## 개발 |
127 | 137 |
|
128 | 138 | ```bash |
129 | | -# 의존성 설치 |
130 | | -bun install |
131 | | - |
132 | | -# 테스트 실행 |
133 | | -bun run test |
134 | | - |
135 | | -# 타입 체크 |
136 | | -bun run typecheck |
137 | | - |
138 | | -# 빌드 |
139 | | -bun run build |
| 139 | +bun install # 의존성 설치 |
| 140 | +bun run test # 테스트 실행 |
| 141 | +bun run typecheck # 타입 체크 |
| 142 | +bun run build # 빌드 |
140 | 143 | ``` |
141 | 144 |
|
142 | 145 | ## 라이선스 |
|
0 commit comments