leerness 1.9.85 → 1.9.87

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,49 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.87 — 2026-05-20
4
+
5
+ **`session-workflow.md` 템플릿에 1.9.69~86 누적 신규 기능 안내 추가** (init 가이드 정확성).
6
+
7
+ ### Updated
8
+ - `init` 시 생성되는 `.harness/session-workflow.md` 템플릿 갱신:
9
+ - `📊 빠른 체크리스트` — `leerness health` / `.env` ↔ `.env.example` / `LEERNESS_AUTO_SECURITY_FIX` 라인 추가.
10
+ - 안내 라인 7개 추가:
11
+ - 1.9.69+ handoff history hit
12
+ - 1.9.76+ handoff 보안 요약
13
+ - 1.9.80+ CRITICAL + 자동 회복
14
+ - 1.9.81+ 통합 헤드라인
15
+ - 1.9.85+ `leerness health` 종합 점검
16
+ - 1.9.78/82+ drift `--auto-fix` 보안 회복
17
+ - 1.9.86+ MCP **18 도구** 목록
18
+ - AI 에이전트가 `init` 직후 곧바로 최신 워크플로 인지 가능.
19
+
20
+ ### Verified
21
+ - stress-v33 — session-workflow.md 안내 포함 확인 + 누적 회귀.
22
+ - e2e 219/219 PASS 유지.
23
+
24
+ ---
25
+
26
+ ## 1.9.86 — 2026-05-20
27
+
28
+ **MCP server 18번째 도구 `leerness_health` 추가** (1.9.85 health 외부 AI 노출).
29
+
30
+ ### Added — MCP 18번째 도구
31
+ - `leerness_health` — 1.9.85 종합 헬스 체크를 외부 AI에 노출.
32
+ - inputSchema: `{ path: string, strict: boolean }`
33
+ - 응답: `health --json` 결과 (drift + security + skills + usage + tasks + issues)
34
+ - 외부 AI가 워크스페이스 상태 한 번에 인지.
35
+ - MCP server 도구 카운트: **17 → 18**.
36
+
37
+ ### Use Case
38
+ - Claude Code / Cursor가 사용자 워크스페이스에서 작업 시작 시 → `leerness_health` 호출 → drift/보안/skill/MCP 상태 즉시 파악 → 적절한 행동 결정.
39
+ - "이 워크스페이스 보안 안전한가?" "어떤 skill 있나?" "MCP 호출 패턴은?" 한 호출로 답변.
40
+
41
+ ### Verified
42
+ - stress-v32 — MCP 18 도구 + health 호출 + JSON 응답 + 누적 회귀.
43
+ - e2e 219/219 PASS 유지.
44
+
45
+ ---
46
+
3
47
  ## 1.9.85 — 2026-05-20
4
48
 
5
49
  **`leerness health` 새 명령** — 종합 헬스 체크 (drift + 보안 + skill + MCP + 누적 통계).
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > **AI 코딩 에이전트의 거짓 완료·중복·망각·충돌을 막아주는 검수·기억·협업 CLI 하네스.**
4
4
 
5
- [![npm](https://img.shields.io/badge/npm-leerness-blue)](https://www.npmjs.com/package/leerness) [![version](https://img.shields.io/badge/version-1.9.85-green)]() [![tests](https://img.shields.io/badge/e2e-219%2F219-success)]() [![license](https://img.shields.io/badge/license-MIT-lightgrey)]()
5
+ [![npm](https://img.shields.io/badge/npm-leerness-blue)](https://www.npmjs.com/package/leerness) [![version](https://img.shields.io/badge/version-1.9.87-green)]() [![tests](https://img.shields.io/badge/e2e-219%2F219-success)]() [![license](https://img.shields.io/badge/license-MIT-lightgrey)]()
6
6
 
7
7
  ```
8
8
  ╔══════════════════════════════════════════════════════════════╗
@@ -12,7 +12,7 @@
12
12
  ║ ██║ ██╔══╝ ██╔══╝ ██╔══██╗██║╚██╗██║██╔══╝ ╚════██║ ║
13
13
  ║ ███████╗███████╗███████╗██║ ██║██║ ╚████║███████╗███████║ ║
14
14
  ║ ╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝╚══════╝ ║
15
- ║ v1.9.85 AI Agent Reliability Harness ║
15
+ ║ v1.9.87 AI Agent Reliability Harness ║
16
16
  ║ verify · remember · orchestrate · audit · prevent drift ║
17
17
  ╚══════════════════════════════════════════════════════════════╝
18
18
  ```
@@ -433,6 +433,8 @@ npm test # = node ./scripts/e2e.js
433
433
 
434
434
  ## 변경 이력 (최근)
435
435
 
436
+ - **1.9.87** — **`session-workflow.md` 템플릿 갱신** — 1.9.69~86 누적 신규 기능 안내 추가 (handoff history hit / 보안 요약 / CRITICAL / 헤드라인 / health / drift --auto-fix 보안 / MCP 18 도구). init 가이드 정확성 보장.
437
+ - **1.9.86** — **MCP server 18번째 도구 `leerness_health`** — 1.9.85 health 종합 헬스 체크를 외부 AI에 노출. drift + 보안 + skill + MCP + tasks 한 호출.
436
438
  - **1.9.85** — **`leerness health` 새 명령** — drift + 보안 + skill + MCP + 누적 통계 종합 헬스 체크. `--json` / `--strict` 옵션.
437
439
  - **1.9.84** — **MCP server 17번째 도구 `leerness_skill_list`** — 외부 AI에 skill 카탈로그 (id/이름/출처/능력/사용 횟수) 조회 노출. `skill list --json` 옵션도 함께 추가.
438
440
  - **1.9.83** — **MCP server 16번째 도구 `leerness_skill_match`** — 1.9.45/50/68 skill match를 외부 AI에 노출. rolling history 자동 누적.
package/bin/harness.js CHANGED
@@ -6,7 +6,7 @@ const path = require('path');
6
6
  const cp = require('child_process');
7
7
  const readline = require('readline');
8
8
 
9
- const VERSION = '1.9.85';
9
+ const VERSION = '1.9.87';
10
10
  const MARK = '<!-- leerness:managed -->';
11
11
  const README_START = '<!-- leerness:project-readme:start -->';
12
12
  const README_END = '<!-- leerness:project-readme:end -->';
@@ -291,6 +291,13 @@ leerness audit . --fix # 누락 메타 자동 보강
291
291
  - 1.9.56+ handoff가 매 세션 시작 시 **과거 lessons 자동 재상기** (현재 task 키워드 기준).
292
292
  - 1.9.67+ handoff가 현재 task와 매칭되는 **설치된 skill을 자동 추천** (jaccard 기반, default ON, \`--no-skill-suggest\`로 끄기).
293
293
  - 1.9.67+ lessons 인덱스에 \`task-log.md\` 실패 라인까지 포함 → 회수 범위 확장.
294
+ - 1.9.69+ handoff가 \`skill-suggestions.md\` rolling history (과거 같은 키워드 매칭 결과)도 자동 노출.
295
+ - 1.9.76+ handoff에 보안 요약 1~2 line 자동 (\`.env\` ↔ \`.env.example\` 동기화 + \`.gitignore\` 시크릿 누락).
296
+ - 1.9.80+ \`.env\` 가 \`.gitignore\` 에 누락 시 🚨 CRITICAL + \`LEERNESS_AUTO_SECURITY_FIX=1\` 환경변수 시 \`audit --fix\` 자동 실행.
297
+ - 1.9.81+ handoff Date/Project 직후 통합 헤드라인 한 줄 (drift / 보안 / MCP / skill query / 설치 skill 수).
298
+ - 1.9.85+ \`leerness health\` 한 줄로 종합 점검 (drift + 보안 + skills + usage + tasks).
299
+ - 1.9.78/82+ \`leerness drift check --auto-fix\` 가 보안 신호 발견 시 \`audit --fix\` 자동 실행 → 재검사.
300
+ - 1.9.86+ MCP server **18 도구** (handoff/drift/audit/verify_claim/contract/agents/reuse/whats_new/usage_stats/session_close/skill_suggest/lessons/task_export/env_check/brainstorm/skill_match/skill_list/health).
294
301
 
295
302
  ---
296
303
 
@@ -300,8 +307,11 @@ leerness audit . --fix # 누락 메타 자동 보강
300
307
  - [ ] plan/progress-tracker에 이번 라운드 task 등록됨 (또는 task sync)
301
308
  - [ ] 모든 done 항목에 evidence 첨부됨 (verify-claim PASS)
302
309
  - [ ] sub-agent 사용 시 contract verify PASS
303
- - [ ] drift 점수 ≤ 30 (attention 이하)
310
+ - [ ] drift 점수 ≤ 30 (attention 이하) — \`leerness drift check\` (1.9.78: 5신호 + 보안)
304
311
  - [ ] session close 호출됨
312
+ - [ ] (1.9.85+) \`leerness health\`로 종합 점검 — drift + 보안 + skill + MCP + tasks
313
+ - [ ] (1.9.75/76+) \`.env\` 사용 중이면 \`.gitignore\` 시크릿 패턴 OK + \`.env.example\` 동기화
314
+ - [ ] (1.9.80+) 보안 critical 시 \`LEERNESS_AUTO_SECURITY_FIX=1\` 또는 \`audit --fix\`로 자동 회복
305
315
 
306
316
  ## Anti-pattern (drift 신호)
307
317
 
@@ -3398,7 +3408,7 @@ function _banner(opts = {}) {
3398
3408
  lines.push('');
3399
3409
  for (const ln of lines) log(ln);
3400
3410
  if (opts.quickStart) {
3401
- log(C.bold(C.cyan(' ✨ 빠른 시작 (1.9.85+ 워크플로)')));
3411
+ log(C.bold(C.cyan(' ✨ 빠른 시작 (1.9.87+ 워크플로)')));
3402
3412
  log(' ' + C.green('npx leerness@latest init .') + C.dim(' # 신규 프로젝트 + 외부 AI CLI 설정'));
3403
3413
  log(' ' + C.green('npx leerness handoff .') + C.dim(' # 컨텍스트 + lessons + 매칭 skill + 이전 history hit (1.9.69)'));
3404
3414
  log(' ' + C.green('npx leerness skill match "<query>"') + C.dim(' # 매칭 skill + rolling history 자동 누적 (1.9.68)'));
@@ -3408,7 +3418,7 @@ function _banner(opts = {}) {
3408
3418
  log(' ' + C.green('npx leerness session close .') + C.dim(' # 마감 + 다음 라운드 추천 (default)'));
3409
3419
  log('');
3410
3420
  log(C.bold(C.cyan(' 🤖 메인 에이전트 (Claude/Cursor/Copilot)용')));
3411
- log(' ' + C.green('npx leerness mcp serve') + C.dim(' # MCP 서버 — 17 도구 (skill_list 포함, 1.9.84)'));
3421
+ log(' ' + C.green('npx leerness mcp serve') + C.dim(' # MCP 서버 — 18 도구 (health 포함, 1.9.86)'));
3412
3422
  log(' ' + C.green('npx leerness agents bench "<task>"') + C.dim(' # 3 CLI 동시 비교'));
3413
3423
  log('');
3414
3424
  }
@@ -7352,7 +7362,8 @@ function mcpServeCmd(root) {
7352
7362
  { name: 'leerness_env_check', description: '1.9.71/73 — .env vs .env.example 동기화 검사 (보안: 키만, 값 미노출). exit 1 if 누락 키 있음', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } },
7353
7363
  { name: 'leerness_brainstorm', description: '1.9.16/72/77 — 누적 컨텍스트(decisions+skills+tasks+rules+evidence+lessons+skillHistory+taskLogFails) 자원 회수. 외부 AI가 새 작업 시작 전 호출', inputSchema: { type: 'object', properties: { topic: { type: 'string' }, path: { type: 'string' }, allApps: { type: 'boolean' } }, required: ['topic'] } },
7354
7364
  { name: 'leerness_skill_match', description: '1.9.45/50/83 — 사용자 task 키워드에 매칭되는 설치된 skill 추천 (jaccard 또는 embedding). 1.9.68 rolling history 자동 누적', inputSchema: { type: 'object', properties: { query: { type: 'string' }, path: { type: 'string' }, useEmbedding: { type: 'boolean' } }, required: ['query'] } },
7355
- { name: 'leerness_skill_list', description: '1.9.84 — 워크스페이스에 설치된 skill 목록 + 사용 횟수 + 출처 (catalog/user). 외부 AI가 사용 가능한 skill 조회', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } }
7365
+ { name: 'leerness_skill_list', description: '1.9.84 — 워크스페이스에 설치된 skill 목록 + 사용 횟수 + 출처 (catalog/user). 외부 AI가 사용 가능한 skill 조회', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } },
7366
+ { name: 'leerness_health', description: '1.9.85/86 — 종합 헬스 체크 (drift + 보안 + skills + MCP + tasks + issues 배열). 외부 AI가 워크스페이스 상태 한 번에 확인', inputSchema: { type: 'object', properties: { path: { type: 'string' }, strict: { type: 'boolean' } } } }
7356
7367
  ];
7357
7368
 
7358
7369
  function send(obj) {
@@ -7401,6 +7412,7 @@ function mcpServeCmd(root) {
7401
7412
  case 'leerness_brainstorm': cliArgs = ['brainstorm', args.topic || '', '--path', targetPath, '--json', ...(args.allApps ? ['--all-apps'] : [])]; break;
7402
7413
  case 'leerness_skill_match': cliArgs = ['skill', 'match', args.query || '', '--path', targetPath, '--json', ...(args.useEmbedding ? ['--embedding'] : [])]; break;
7403
7414
  case 'leerness_skill_list': cliArgs = ['skill', 'list', targetPath, '--json']; break;
7415
+ case 'leerness_health': cliArgs = ['health', targetPath, '--json', ...(args.strict ? ['--strict'] : [])]; break;
7404
7416
  default:
7405
7417
  return send({ jsonrpc: '2.0', id, error: { code: -32601, message: `Unknown tool: ${name}` } });
7406
7418
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "leerness",
3
- "version": "1.9.85",
3
+ "version": "1.9.87",
4
4
  "description": "Leerness: 비파괴 마이그레이션, 자동 버전 감지·업데이트, 계획/진행/핸드오프 자동화, 게으름·시크릿·인코딩 자동 가드, Claude Code 슬래시 통합을 갖춘 한국어 우선 AI 개발 하네스.",
5
5
  "keywords": [
6
6
  "leerness",