leerness 1.36.183 → 1.36.185

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.36.185 — 2026-09-04
4
+
5
+ - T-0165/T-0166/T-0167/T-0171/T-0172: adds honest provider-capacity observation, exact-file TTL leases, strict Role/Agent/Routing v2 schemas, a fail-closed legacy role-store loader, and availability-aware role fallback with revision-bound execution provenance. Compatibility fields remain explicit, high-risk reviewer independence requires concrete model identities, corrupt state is preserved without provider execution, and all new surfaces are covered by adversarial regression probes.
6
+
7
+ ## 1.36.184 — 2026-09-01
8
+
9
+ - T-0164: English-mode mode output now emits zero Hangul across stored, environment, and explicit locale paths, including pre-dispatch and stale-version diagnostics, while preserving Korean and locale-independent JSON contracts. Lock-time manifest rereads fail closed on corruption and normalize concurrent valid mode values before writing, with deterministic real-EEXIST regressions; the 39-command leakage ratchet tightens exactly from 30 to 27 lines.
10
+
3
11
  ## 1.36.183 — 2026-08-31
4
12
 
5
13
  - T-0163: English skill list now emits zero Hangul across stored, environment, and explicit locale paths while preserving Korean bytes and locale-independent JSON values. Adversarial external-skill metadata and injective ID rendering are covered, and the 39-command leakage ratchet tightens exactly from 34 to 30 lines.
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 leerness contributors
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 leerness contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.ko.md CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  > **어떤 언어, 어떤 AI 에이전트로 작업하든 — "증거 없이는 끝났다고 말할 수 없게" 만드는 AI 코딩 운영 레이어.** 코드를 대신 쓰는 도구가 아니라, AI 에이전트의 **기억·인수인계·검증·감사·보안 가드**를 프로젝트에 영속화하는 CLI + MCP 서버입니다.
15
15
 
16
- [![npm](https://img.shields.io/npm/v/leerness)](https://www.npmjs.com/package/leerness) · ![MCP tools](https://img.shields.io/badge/MCP--tools-89-blue) · **런타임 의존성 0** · **install-script 0** · offline-first · Node ≥ 18 · MIT
16
+ [![npm](https://img.shields.io/npm/v/leerness)](https://www.npmjs.com/package/leerness) · ![MCP tools](https://img.shields.io/badge/MCP--tools-98-blue) · **런타임 의존성 0** · **install-script 0** · offline-first · Node ≥ 18 · MIT
17
17
 
18
18
  ---
19
19
 
@@ -25,7 +25,7 @@ AI 코딩 에이전트(Claude Code, Cursor, Codex, Aider, Goose 등)는 코드
25
25
  2. **거짓 완료를 선언합니다** — 증거(파일·테스트·로그) 없이 "완료했습니다"라고 말합니다.
26
26
  3. **표준이 없습니다** — 여러 에이전트 간 인수인계, 보안/인코딩 점검, 드리프트 관리가 제각각입니다.
27
27
 
28
- leerness는 이 문제들을 해결하는 **외부 운영 substrate**입니다. 어떤 에이전트 위에도 얹어, 프로젝트의 상태를 `.leerness/` 파일로 영속화하고 CLI · MCP 도구로 노출합니다. **leerness 자체는 LLM을 호출하거나 코드를 실행하지 않습니다.**
28
+ leerness는 이 문제들을 해결하는 **외부 운영 substrate**입니다. 어떤 에이전트 위에도 얹어, 프로젝트의 상태를 `.leerness/` 파일로 영속화하고 CLI · MCP 도구로 노출합니다. 기본 상태에서는 외부 모델을 임의 호출하지 않습니다. 다만 사용자가 `agents multi --execute`, `agents bench` 같은 실행 명령을 명시하면 opt-in 된 외부 CLI를 시작하고 실제 실행 결과를 원장에 기록할 수 있습니다.
29
29
 
30
30
  ---
31
31
 
@@ -111,10 +111,10 @@ leerness verify-claim T-0001 --require-evidence
111
111
  - **메모리**: `task` · `plan` · `decision` · `lesson` · `rule` · `feature` · `memory status/search`
112
112
  - **인수인계/세션**: `handoff` · `session close` · `pulse` · `health`
113
113
  - **검증/감사**: `check` · `gate` · `audit` · `drift check` · `lazy detect` · `scan secrets` · `encoding check` · `verify-code` · `verify-claim` · `contract verify`
114
- - **외부 에이전트**: `agents list/check/dispatch` · `provider` · `roles` · `adapter`
114
+ - **외부 에이전트**: `agents list/check/quota/resolve/fallback/availability/record/history/dispatch` · `provider` · `roles` · `adapter`
115
115
  - **운영/확장**: `release` · `migrate` · `team` · `install-safety` · `route` · `review`(페르소나)
116
116
  - **브리지(opt-in)**: `web`(playwright) · `pc`(robotjs) · `lsp`
117
- - **MCP**: `mcp serve` — stdio JSON-RPC 서버로 80+ 도구 노출 (verify-claim --all 일괄 검증 포함, 1.33.3)
117
+ - **MCP**: `mcp serve` — stdio JSON-RPC 서버로 98개 도구 노출 (verify-claim --all 일괄 검증 포함)
118
118
 
119
119
  전체 명령은 `leerness commands` 또는 `leerness --help` 로 확인하세요.
120
120
 
@@ -140,15 +140,22 @@ leerness contract verify spec.md src/api.js # 명세 함수/필드 누락 → ex
140
140
  leerness verify-claim T-0001 --require-evidence
141
141
  ```
142
142
 
143
- **다중 에이전트 조율**
143
+ **역할 우선 다중 에이전트 조율**
144
144
  ```bash
145
- leerness agents list # 설치된 외부 AI CLI 가용성
146
- leerness agents dispatch "코드 리뷰" --to codex # 실행 명령 생성(직접 실행은 사용자/메인 에이전트)
145
+ leerness roles set coder --provider codex --model gpt-model-id \
146
+ --candidate claude:claude-model-id --policy balanced
147
+ leerness roles validate --json
148
+ leerness agents resolve "API 구현" --role coder --json
149
+ leerness agents fallback provider "API 구현" --role coder \
150
+ --provider claude --model claude-model-id --approved-by owner --json
151
+ leerness agents history --json
147
152
  ```
148
153
 
154
+ 역할은 유지하고 Provider/모델만 교체합니다. 해석 결과는 설치·활성화·인증·모델 권한·쿼터·도달성·정책을 별도 축으로 공개하며, 폴백을 묵시적으로 실행하지 않습니다. 적용할 선택은 해석 당시 role-store와 availability revision에 묶입니다. 고위험 대체는 가시적인 승인자가 필요하고, 감지된 고위험 등급을 낮추려면 `--approved-by`와 `--reason`이 모두 필요하며, 고위험 검수는 구체적인 모델 ID에서 서로 다른 family를 입증할 때만 선택할 수 있습니다. `dispatch`와 `fallback`은 기본적으로 명령 준비·선택 기록만 하므로 `executed:false`입니다. 역할 없는 `agents multi --execute`와 `agents bench`는 opt-in 외부 CLI를 시작해 결과를 기록할 수 있지만, provider 기본 모델 fan-out으로 하나의 역할/모델 계약을 입증할 수 없으므로 `--role`을 거부합니다.
155
+
149
156
  **MCP (외부 AI 에이전트에 도구로 노출)**
150
157
  ```bash
151
- leerness mcp serve # JSON-RPC over stdio, 80+ 도구
158
+ leerness mcp serve # JSON-RPC over stdio, 98개 도구
152
159
  ```
153
160
 
154
161
  ---
package/README.md CHANGED
@@ -12,7 +12,7 @@
12
12
  > **The AI-coding operations layer that makes "done" require evidence — for any language, any AI agent.**
13
13
  > leerness does not write code. It gives your AI agent persistent memory, verified completion, and clean handoffs — stored inside your repo as plain files, exposed via CLI + MCP.
14
14
 
15
- [![npm](https://img.shields.io/npm/v/leerness)](https://www.npmjs.com/package/leerness) · ![MCP tools](https://img.shields.io/badge/MCP--tools-89-blue) · **0 runtime deps** · **0 install scripts** · offline-first · Node ≥ 18 · MIT
15
+ [![npm](https://img.shields.io/npm/v/leerness)](https://www.npmjs.com/package/leerness) · ![MCP tools](https://img.shields.io/badge/MCP--tools-98-blue) · **0 runtime deps** · **0 install scripts** · offline-first · Node ≥ 18 · MIT
16
16
 
17
17
  **🇰🇷 한국어 전문: [README.ko.md](./README.ko.md)**
18
18
 
@@ -55,7 +55,7 @@ You never have to type a command yourself. Paste this into Claude Code, Cursor,
55
55
 
56
56
  The agent installs and operates it for you — `leerness init` also writes the instructions into CLAUDE.md / AGENTS.md so future sessions pick them up automatically.
57
57
 
58
- Prefer pure natural language? leerness ships an **MCP server with 80+ tools** (`leerness mcp serve`). Connect it once to Claude Desktop / Claude Code and just ask: *"what was I working on?"*, *"did the AI actually finish T-0001?"*
58
+ Prefer pure natural language? leerness ships an **MCP server with 98 tools** (`leerness mcp serve`). Connect it once to Claude Desktop / Claude Code and just ask: *"what was I working on?"*, *"did the AI actually finish T-0001?"*
59
59
 
60
60
  ---
61
61
 
@@ -73,6 +73,24 @@ Built-in harnesses remember what the AI **said**. leerness verifies what the AI
73
73
 
74
74
  ---
75
75
 
76
+ ## Role-first model routing and fallback
77
+
78
+ Roles remain stable while providers and models are replaceable execution resources. Configure a role with a primary executor, ordered candidates, and a fallback policy, then resolve the current task against separate installation, opt-in, authentication, entitlement, quota, reachability, and policy signals:
79
+
80
+ ```bash
81
+ leerness roles set coder --provider codex --model gpt-model-id \
82
+ --candidate claude:claude-model-id --policy balanced
83
+ leerness roles validate --json
84
+ leerness agents resolve "implement the API" --role coder --json
85
+ leerness agents fallback provider "implement the API" --role coder \
86
+ --provider claude --model claude-model-id --approved-by owner --json
87
+ leerness agents history --json
88
+ ```
89
+
90
+ Resolution never silently executes a fallback. Each applied choice is bound to the role-store and availability revisions it inspected. High-risk substitutions require a visible approver, lowering detected high risk requires both `--approved-by` and `--reason`, and high-risk review is selectable only when different families can be inferred from concrete model IDs. `dispatch` and `fallback` normally prepare or record a choice with `executed:false`. Role-free `agents multi --execute` and `agents bench` can spawn opted-in external CLIs and record their outcomes; both reject `--role` because provider-default fan-out cannot prove one role/model contract.
91
+
92
+ ---
93
+
76
94
  ## Make it enforced, not optional
77
95
 
78
96
  By default leerness is **cooperative**: your AI agent runs the commands because CLAUDE.md / AGENTS.md tell it to. A determined agent could skip them. To turn the guideline into a guardrail:
@@ -138,7 +156,7 @@ MIT
138
156
  <!-- leerness:project-readme:start -->
139
157
  ## Leerness Project Harness
140
158
 
141
- 이 프로젝트는 Leerness v1.36.183 하네스를 사용합니다. AI 에이전트는 작업 전 `leerness handoff`로 컨텍스트를 적재하고, 작업 후 `leerness check`/`leerness audit`/`leerness session close`를 수행해야 합니다.
159
+ 이 프로젝트는 Leerness v1.36.185 하네스를 사용합니다. AI 에이전트는 작업 전 `leerness handoff`로 컨텍스트를 적재하고, 작업 후 `leerness check`/`leerness audit`/`leerness session close`를 수행해야 합니다.
142
160
 
143
161
  ### 정체성 — AI 에이전트 운영 레이어 (UR-0030)
144
162
 
@@ -192,7 +210,7 @@ leerness memory restore decision <date|title>
192
210
 
193
211
  ### MCP server (외부 AI 통합)
194
212
 
195
- Leerness v1.36.183는 stdio JSON-RPC MCP server를 내장합니다 — Claude Code · Cursor · Codex CLI 등 외부 AI에 **89개 도구**를 노출:
213
+ Leerness v1.36.185는 stdio JSON-RPC MCP server를 내장합니다 — Claude Code · Cursor · Codex CLI 등 외부 AI에 **98개 도구**를 노출:
196
214
 
197
215
  ```jsonc
198
216
  // 카테고리별
@@ -205,7 +223,7 @@ Leerness v1.36.183는 stdio JSON-RPC MCP server를 내장합니다 — Claude Co
205
223
  // • Workflow: session_close / agents_list / task_export / env_check / usage_stats / reuse_map / whats_new
206
224
 
207
225
  // MCP server 실행: leerness mcp serve
208
- // tools/list 응답: 89 도구
226
+ // tools/list 응답: 98 도구
209
227
  ```
210
228
 
211
229
  ### Autonomous mode (자율 모드)
@@ -213,7 +231,7 @@ Leerness v1.36.183는 stdio JSON-RPC MCP server를 내장합니다 — Claude Co
213
231
  `<<autonomous-loop-dynamic>>` 신호만 보내면 AI가:
214
232
  1) 다음 라운드 후보 선정 → 2) 코드 변경 → 3) 회귀 테스트 갱신 → 4) 전체 e2e 스위트 통과 → 5) npm publish + git tag → 6) main push → 7) session close → 8) 다음 라운드 예약.
215
233
 
216
- 현재 누적: **v1.9.x → 1.36.183 릴리스 태그 이력** (수백 라운드) · _reports/는 비공개 보존.
234
+ 현재 누적: **v1.9.x → 1.36.185 릴리스 태그 이력** (수백 라운드) · _reports/는 비공개 보존.
217
235
 
218
236
  ### 성능 가이드
219
237
 
@@ -251,5 +269,5 @@ leerness release pack --close --auto-main-push
251
269
  - `.leerness/session-handoff.md`: 다음 세션 인수인계 (자동 작성)
252
270
  - `.leerness/lessons.md` / `decisions.md` / `rules.md`: 영구 메모리 (5 surface)
253
271
 
254
- Last synced by Leerness v1.36.183: 2026-08-31
272
+ Last synced by Leerness v1.36.185: 2026-09-05
255
273
  <!-- leerness:project-readme:end -->
package/SECURITY.md CHANGED
@@ -1,66 +1,66 @@
1
- # Security & Transparency / 보안·투명성
2
-
3
- > `leerness capabilities` 로 언제든 아래 표면을 CLI 에서 확인할 수 있습니다 (`--json` 지원).
4
- > Run `leerness capabilities` anytime to view this surface from the CLI (`--json` supported).
5
-
6
- leerness 는 **권한이 큰 CLI 하네스**입니다 (child_process · git · 외부 AI CLI · 자동화 브리지 · hook 설치). 신뢰를 위해 **할 수 있는 전부와 각 항목의 끄는 법(opt-out)** 을 공개합니다.
7
-
8
- leerness is a **powerful CLI harness** (child_process, git, external AI CLIs, automation bridges, hook install). For trust, we disclose **everything it can do and how to opt out of each**.
9
-
10
- ## 설계 원칙 / Design principles
11
-
12
- - **런타임 의존성 0** — `npm audit` 취약점 0. / Zero runtime dependencies.
13
- - **postinstall 없음** — 설치만으로 코드가 실행되지 않음. / No postinstall scripts.
14
- - **변경 전 자동 백업** — 모든 메타파일 변경 전 `.leerness/archive/` 에 백업. / Auto-backup before any change.
15
- - **동의 없는 자동 호출 금지** — 사용자 동의 없이 외부 LLM/API/CLI 를 자동 호출하지 않음. / Never auto-calls external LLMs/APIs/CLIs without consent.
16
-
17
- ## 권한 표면 / Capability surface
18
-
19
- | 영역 / Area | 위험 / Risk | 설명 / What | opt-out |
20
- |---|---|---|---|
21
- | filesystem | 🟢 low | `.leerness/` 메타파일 생성·갱신, 변경 전 백업. 소스코드 직접 수정 안 함. | 핵심 동작 (백업으로 보호) |
22
- | network | 🟢 low | `update --check` 의 npm 최신 버전 비교만. 외부 URL 자동 fetch 안 함. | `LEERNESS_OFFLINE=1` |
23
- | childProcess | 🟡 medium | git(명시 명령 시), `npm test`(verify-code), 외부 CLI `--version` 감지. | verify 계열 한정 · 외부 CLI 는 opt-in |
24
- | externalAgents | 🟡 medium | `agents dispatch/multi` — 기본은 명령 텍스트만 생성, `multi --execute` 시 실제 spawn. | `LEERNESS_ENABLE_*` 미설정 시 비활성 (기본 off) |
25
- | automationBridges | 🔴 high | `web`(playwright)/`pc`(robotjs)/`lsp`(typescript) — opt-in 의존성. `pc` 는 마우스/키보드 제어. | 의존성 미설치 시 비활성 (기본 off) |
26
- | claudeHook | 🟢 low | `init` 시 `.claude/settings.local.json` 에 SessionStart hook(`update --check`) 설치. | `leerness init . --no-auto-update` |
27
-
28
- ## ⚠ 주의해서 쓸 명령 / Use with caution
29
-
30
- 회사·운영 코드에서는 아래 명령을 먼저 검토하세요. / Review these before using on company/production code.
31
-
32
- | 명령 / Command | 동작 / Action |
33
- |---|---|
34
- | `init` | `.leerness/` 50+ 파일 + `.claude` hook 생성 (변경 전 백업) |
35
- | `update --yes` | 자동 마이그레이션 — 메타파일 갱신 |
36
- | `agents multi --execute` | 외부 AI CLI 실제 spawn (병렬) |
37
- | `release publish` / `sync-main` | git push + npm publish + GitHub release |
38
- | `pc <click|type>` | 마우스/키보드 제어 (robotjs, full 권한) |
39
- | `web <...>` | 헤드리스 브라우저 자동화 (playwright) |
40
- | `setup-agents` | 외부 CLI 활성화 + 자동 설치 시도 |
41
-
42
- ## 권장 도입 방식 / Recommended adoption
43
-
44
- 전역 자동 적용보다, 먼저 한 프로젝트에서 확인 후 커밋하세요.
45
- Prefer per-project trial over global auto-adoption.
46
-
47
- ```bash
48
- npx leerness@latest init . --yes --language ko # 또는 --language en
49
- git diff && git status # 생성 파일 검토 후 커밋
50
- leerness capabilities # 권한 표면 확인
51
- ```
52
-
53
- ## 취약점 보고 / Reporting
54
-
55
- 보안 취약점은 **공개 이슈로 올리지 마세요** — 공개 이슈는 내용이 모두에게 노출됩니다.
56
- **Do NOT open a public issue for security vulnerabilities** — public issues are visible to everyone.
57
-
58
- 대신 아래 **비공개 채널** 중 하나로 알려주세요 / Use one of these **private** channels instead:
59
-
60
- 1. **GitHub Private Vulnerability Reporting** (권장 / preferred):
61
- https://github.com/gugu9999gu/leerness/security/advisories/new
62
- — GitHub 의 비공개 보안 권고 폼. 저장소 Security 탭 → "Report a vulnerability".
63
- 2. **보안 이메일 / Security email**: adstore3869@gmail.com (제목에 `[leerness security]` 표기 / prefix the subject with `[leerness security]`)
64
-
65
- 48 시간 내 접수 확인을 목표로 합니다. 수정 전까지 세부 내용은 공개하지 말아 주세요 (책임 있는 공개).
66
- We aim to acknowledge within 48 hours. Please keep details private until a fix ships (responsible disclosure).
1
+ # Security & Transparency / 보안·투명성
2
+
3
+ > `leerness capabilities` 로 언제든 아래 표면을 CLI 에서 확인할 수 있습니다 (`--json` 지원).
4
+ > Run `leerness capabilities` anytime to view this surface from the CLI (`--json` supported).
5
+
6
+ leerness 는 **권한이 큰 CLI 하네스**입니다 (child_process · git · 외부 AI CLI · 자동화 브리지 · hook 설치). 신뢰를 위해 **할 수 있는 전부와 각 항목의 끄는 법(opt-out)** 을 공개합니다.
7
+
8
+ leerness is a **powerful CLI harness** (child_process, git, external AI CLIs, automation bridges, hook install). For trust, we disclose **everything it can do and how to opt out of each**.
9
+
10
+ ## 설계 원칙 / Design principles
11
+
12
+ - **런타임 의존성 0** — `npm audit` 취약점 0. / Zero runtime dependencies.
13
+ - **postinstall 없음** — 설치만으로 코드가 실행되지 않음. / No postinstall scripts.
14
+ - **변경 전 자동 백업** — 모든 메타파일 변경 전 `.leerness/archive/` 에 백업. / Auto-backup before any change.
15
+ - **동의 없는 자동 호출 금지** — 사용자 동의 없이 외부 LLM/API/CLI 를 자동 호출하지 않음. / Never auto-calls external LLMs/APIs/CLIs without consent.
16
+
17
+ ## 권한 표면 / Capability surface
18
+
19
+ | 영역 / Area | 위험 / Risk | 설명 / What | opt-out |
20
+ |---|---|---|---|
21
+ | filesystem | 🟢 low | `.leerness/` 메타파일 생성·갱신, 변경 전 백업. 소스코드 직접 수정 안 함. | 핵심 동작 (백업으로 보호) |
22
+ | network | 🟢 low | `update --check` 의 npm 최신 버전 비교만. 외부 URL 자동 fetch 안 함. | `LEERNESS_OFFLINE=1` |
23
+ | childProcess | 🟡 medium | git(명시 명령 시), `npm test`(verify-code), 외부 CLI `--version` 감지. | verify 계열 한정 · 외부 CLI 는 opt-in |
24
+ | externalAgents | 🟡 medium | `agents dispatch/multi` — 기본은 명령 텍스트만 생성, `multi --execute` 시 실제 spawn. | `LEERNESS_ENABLE_*` 미설정 시 비활성 (기본 off) |
25
+ | automationBridges | 🔴 high | `web`(playwright)/`pc`(robotjs)/`lsp`(typescript) — opt-in 의존성. `pc` 는 마우스/키보드 제어. | 의존성 미설치 시 비활성 (기본 off) |
26
+ | claudeHook | 🟢 low | `init` 시 `.claude/settings.local.json` 에 SessionStart hook(`update --check`) 설치. | `leerness init . --no-auto-update` |
27
+
28
+ ## ⚠ 주의해서 쓸 명령 / Use with caution
29
+
30
+ 회사·운영 코드에서는 아래 명령을 먼저 검토하세요. / Review these before using on company/production code.
31
+
32
+ | 명령 / Command | 동작 / Action |
33
+ |---|---|
34
+ | `init` | `.leerness/` 50+ 파일 + `.claude` hook 생성 (변경 전 백업) |
35
+ | `update --yes` | 자동 마이그레이션 — 메타파일 갱신 |
36
+ | `agents multi --execute` | 외부 AI CLI 실제 spawn (병렬) |
37
+ | `release publish` / `sync-main` | git push + npm publish + GitHub release |
38
+ | `pc <click|type>` | 마우스/키보드 제어 (robotjs, full 권한) |
39
+ | `web <...>` | 헤드리스 브라우저 자동화 (playwright) |
40
+ | `setup-agents` | 외부 CLI 활성화 + 자동 설치 시도 |
41
+
42
+ ## 권장 도입 방식 / Recommended adoption
43
+
44
+ 전역 자동 적용보다, 먼저 한 프로젝트에서 확인 후 커밋하세요.
45
+ Prefer per-project trial over global auto-adoption.
46
+
47
+ ```bash
48
+ npx leerness@latest init . --yes --language ko # 또는 --language en
49
+ git diff && git status # 생성 파일 검토 후 커밋
50
+ leerness capabilities # 권한 표면 확인
51
+ ```
52
+
53
+ ## 취약점 보고 / Reporting
54
+
55
+ 보안 취약점은 **공개 이슈로 올리지 마세요** — 공개 이슈는 내용이 모두에게 노출됩니다.
56
+ **Do NOT open a public issue for security vulnerabilities** — public issues are visible to everyone.
57
+
58
+ 대신 아래 **비공개 채널** 중 하나로 알려주세요 / Use one of these **private** channels instead:
59
+
60
+ 1. **GitHub Private Vulnerability Reporting** (권장 / preferred):
61
+ https://github.com/gugu9999gu/leerness/security/advisories/new
62
+ — GitHub 의 비공개 보안 권고 폼. 저장소 Security 탭 → "Report a vulnerability".
63
+ 2. **보안 이메일 / Security email**: adstore3869@gmail.com (제목에 `[leerness security]` 표기 / prefix the subject with `[leerness security]`)
64
+
65
+ 48 시간 내 접수 확인을 목표로 합니다. 수정 전까지 세부 내용은 공개하지 말아 주세요 (책임 있는 공개).
66
+ We aim to acknowledge within 48 hours. Please keep details private until a fix ships (responsible disclosure).