{"_id":"@aliksir/neko-harness-doctor","_rev":"10-4c16bdd65a86aa1b934eac4210796b41","name":"@aliksir/neko-harness-doctor","dist-tags":{"latest":"0.4.0"},"versions":{"0.2.0":{"name":"@aliksir/neko-harness-doctor","version":"0.2.0","keywords":["claude","claude-code","harness","audit","diagnostic","anti-pattern","prompt-caching","kv-cache","cli"],"author":{"name":"aliksir"},"license":"MIT","_id":"@aliksir/neko-harness-doctor@0.2.0","maintainers":[{"name":"aliksir","email":"hide.kiyohara@gmail.com"}],"homepage":"https://github.com/aliksir/neko-harness-doctor#readme","bugs":{"url":"https://github.com/aliksir/neko-harness-doctor/issues"},"bin":{"neko-harness-doctor":"bin/neko-harness-doctor"},"dist":{"shasum":"06116c539f1397df5ce343eb462c8a43eb68e8ef","tarball":"https://registry.npmjs.org/@aliksir/neko-harness-doctor/-/neko-harness-doctor-0.2.0.tgz","fileCount":23,"integrity":"sha512-eIGHpPFXx0nWipNOvsTjKV5IDfCYCoZxomBzkszGZd3WtvkBQxEQetHaVebRYGRnZSjhxYhG+AKBgEI6rAx+YA==","signatures":[{"sig":"MEQCIBd8n0xDXQkfY+AnDrxQJ3H0cOLgN2vwNJtUWVqZ97ArAiBIrd/oLnfZvdDLw+wKSd+BxV+PKqVFSLO2i9RgcnhXQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97818},"type":"module","engines":{"node":">=18"},"exports":{"./grading":"./src/grading.mjs","./indicators":"./src/indicators/index.mjs","./fix-strategies":"./src/fix-strategies.mjs"},"gitHead":"68de310f4e45af6534f7896e4e66d08e554d4af0","scripts":{"lint":"echo \"Lint pending (Phase D)\" && exit 0","test":"node --test test/test.mjs","audit":"node src/audit.mjs","start":"node src/audit.mjs"},"_npmUser":{"name":"aliksir","email":"hide.kiyohara@gmail.com"},"deprecated":"bin entry stripped at publish — upgrade to 0.2.2+","repository":{"url":"git+https://github.com/aliksir/neko-harness-doctor.git","type":"git"},"_npmVersion":"11.8.0","description":"Diagnose Claude Code harness (CLAUDE.md, settings.json, .mcp.json, hooks, skills, memory, MCP, workflow) against 25 anti-pattern indicators. Outputs S-E grade and prioritized Quick Wins with interactive fix proposals.","directories":{},"_nodeVersion":"24.13.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/neko-harness-doctor_0.2.0_1775919615374_0.7592555967526937","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@aliksir/neko-harness-doctor","version":"0.2.1","keywords":["claude","claude-code","harness","audit","diagnostic","anti-pattern","prompt-caching","kv-cache","cli"],"author":{"name":"aliksir"},"license":"MIT","_id":"@aliksir/neko-harness-doctor@0.2.1","maintainers":[{"name":"aliksir","email":"hide.kiyohara@gmail.com"}],"homepage":"https://github.com/aliksir/neko-harness-doctor#readme","bugs":{"url":"https://github.com/aliksir/neko-harness-doctor/issues"},"bin":{"neko-harness-doctor":"bin/neko-harness-doctor"},"dist":{"shasum":"9b4ca88afc7147d5f95f1084a137c523302a2711","tarball":"https://registry.npmjs.org/@aliksir/neko-harness-doctor/-/neko-harness-doctor-0.2.1.tgz","fileCount":23,"integrity":"sha512-3tE7m7HKAZ7VNMGoDt2BENla4x/CoctuHd3s7RwtPatqa2ubvnioICHFj7QTquVrnNcgOfXWthalM1FzOaIw5Q==","signatures":[{"sig":"MEQCIGkkbyvpWof+49IT6Fy5QwwTlLl3m4n2KL2Fp5k7He2uAiA2iGgGAfFz6FDPv3uVPvHu4NFdJi/NxZcAXacQDYdXXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98219},"type":"module","engines":{"node":">=18"},"exports":{"./grading":"./src/grading.mjs","./indicators":"./src/indicators/index.mjs","./fix-strategies":"./src/fix-strategies.mjs"},"gitHead":"08fa29ac1022bb71b8db42ee350f50c4dbaf4e35","scripts":{"lint":"echo \"Lint pending (Phase D)\" && exit 0","test":"node --test test/test.mjs","audit":"node src/audit.mjs","start":"node src/audit.mjs"},"_npmUser":{"name":"aliksir","email":"hide.kiyohara@gmail.com"},"deprecated":"Windows ESM bug (ERR_UNSUPPORTED_ESM_URL_SCHEME) — upgrade to 0.2.2+","repository":{"url":"git+https://github.com/aliksir/neko-harness-doctor.git","type":"git"},"_npmVersion":"11.8.0","description":"Diagnose Claude Code harness (CLAUDE.md, settings.json, .mcp.json, hooks, skills, memory, MCP, workflow) against 25 anti-pattern indicators. Outputs S-E grade and prioritized Quick Wins with interactive fix proposals.","directories":{},"_nodeVersion":"24.13.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/neko-harness-doctor_0.2.1_1775920632916_0.5765355046373304","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@aliksir/neko-harness-doctor","version":"0.2.2","keywords":["claude","claude-code","harness","audit","diagnostic","anti-pattern","prompt-caching","kv-cache","cli"],"author":{"name":"aliksir"},"license":"MIT","_id":"@aliksir/neko-harness-doctor@0.2.2","maintainers":[{"name":"aliksir","email":"hide.kiyohara@gmail.com"}],"homepage":"https://github.com/aliksir/neko-harness-doctor#readme","bugs":{"url":"https://github.com/aliksir/neko-harness-doctor/issues"},"bin":{"neko-harness-doctor":"bin/neko-harness-doctor"},"dist":{"shasum":"22bac6b9fffdb5487d312501932e5af9ba5d357d","tarball":"https://registry.npmjs.org/@aliksir/neko-harness-doctor/-/neko-harness-doctor-0.2.2.tgz","fileCount":23,"integrity":"sha512-u/Ne5MLihECMcEHJPfZSjlDmKd7vJyrbKny7Zv37ytbB/mp+8O3ytCrximKduPT47avF6aEcxOZ9xg4GOmidDg==","signatures":[{"sig":"MEQCIEWZsz6E64jtA7n80OnhmuTI81xz4BvemGFt7FkkLsWIAiBHStTQv8hBCts/XYrkNeuUdytlArcw0TPvrH7duNiKvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99178},"type":"module","engines":{"node":">=18"},"exports":{"./grading":"./src/grading.mjs","./indicators":"./src/indicators/index.mjs","./fix-strategies":"./src/fix-strategies.mjs"},"gitHead":"97c26ee87f7359f2fa23590d06ee340a05a968f7","scripts":{"lint":"echo \"Lint pending (Phase D)\" && exit 0","test":"node --test test/test.mjs","audit":"node src/audit.mjs","start":"node src/audit.mjs"},"_npmUser":{"name":"aliksir","email":"hide.kiyohara@gmail.com"},"deprecated":"~/ tilde and workspace default improvements — upgrade to 0.2.3+","repository":{"url":"git+https://github.com/aliksir/neko-harness-doctor.git","type":"git"},"_npmVersion":"11.8.0","description":"Diagnose Claude Code harness (CLAUDE.md, settings.json, .mcp.json, hooks, skills, memory, MCP, workflow) against 25 anti-pattern indicators. Outputs S-E grade and prioritized Quick Wins with interactive fix proposals.","directories":{},"_nodeVersion":"24.13.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/neko-harness-doctor_0.2.2_1775920954398_0.3700934522368913","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@aliksir/neko-harness-doctor","version":"0.2.3","keywords":["claude","claude-code","harness","audit","diagnostic","anti-pattern","prompt-caching","kv-cache","cli"],"author":{"name":"aliksir"},"license":"MIT","_id":"@aliksir/neko-harness-doctor@0.2.3","maintainers":[{"name":"aliksir","email":"hide.kiyohara@gmail.com"}],"homepage":"https://github.com/aliksir/neko-harness-doctor#readme","bugs":{"url":"https://github.com/aliksir/neko-harness-doctor/issues"},"bin":{"neko-harness-doctor":"bin/neko-harness-doctor"},"dist":{"shasum":"4cff36b50112ded3e04bd7732cd88cf228fe7a33","tarball":"https://registry.npmjs.org/@aliksir/neko-harness-doctor/-/neko-harness-doctor-0.2.3.tgz","fileCount":23,"integrity":"sha512-6VfTQwFT6qIThM3ZooLRILhNLoaiWkSdniTA+hqKEwsbffGdBBz2gqlnGirgil215E9tg/SDe2KOB9e6APFeLA==","signatures":[{"sig":"MEUCIQDqWG5/VSio8IkUAoHO6zQh2S9MMSWSa9MpVMBj0jZP0QIgazmBdT4eMBi+IP2H3V8XSX7XcG0R5PvZdFZIxRu7VhI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103099},"type":"module","engines":{"node":">=18"},"exports":{"./grading":"./src/grading.mjs","./indicators":"./src/indicators/index.mjs","./fix-strategies":"./src/fix-strategies.mjs"},"gitHead":"efcdaedfd682bd25c2f9f7e57b42d7d5b07c6457","scripts":{"lint":"echo \"Lint pending (Phase D)\" && exit 0","test":"node --test test/test.mjs","audit":"node src/audit.mjs","start":"node src/audit.mjs"},"_npmUser":{"name":"aliksir","email":"hide.kiyohara@gmail.com"},"repository":{"url":"git+https://github.com/aliksir/neko-harness-doctor.git","type":"git"},"_npmVersion":"11.8.0","description":"Diagnose Claude Code harness (CLAUDE.md, settings.json, .mcp.json, hooks, skills, memory, MCP, workflow) against 25 anti-pattern indicators. Outputs S-E grade and prioritized Quick Wins with interactive fix proposals.","directories":{},"_nodeVersion":"24.13.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/neko-harness-doctor_0.2.3_1775921537381_0.8996111830693703","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aliksir/neko-harness-doctor","version":"0.3.0","keywords":["claude","claude-code","harness","audit","diagnostic","anti-pattern","prompt-caching","kv-cache","cli"],"author":{"name":"aliksir"},"license":"MIT","_id":"@aliksir/neko-harness-doctor@0.3.0","maintainers":[{"name":"aliksir","email":"hide.kiyohara@gmail.com"}],"homepage":"https://github.com/aliksir/neko-harness-doctor#readme","bugs":{"url":"https://github.com/aliksir/neko-harness-doctor/issues"},"bin":{"neko-harness-doctor":"bin/neko-harness-doctor"},"dist":{"shasum":"dd57428f98428576cb64202f1211e348d0711811","tarball":"https://registry.npmjs.org/@aliksir/neko-harness-doctor/-/neko-harness-doctor-0.3.0.tgz","fileCount":25,"integrity":"sha512-o7k0TU4327puMh29khLZb1oPKh+Y/Io+as30JCYgs48iJwlQ0ZxKen7XRADHlOgbljXY37QG+UfHamc69Schsg==","signatures":[{"sig":"MEYCIQCNraVqf7wVcvoRjR4U1fRNvRZ1VLhZmwRj/hqKpNa1aQIhAM5J9bD0BXjtEZ0ibe1J1CxJ1NMGk8/IByjHwe3xmWwq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114406},"type":"module","engines":{"node":">=18"},"exports":{"./grading":"./src/grading.mjs","./indicators":"./src/indicators/index.mjs","./fix-strategies":"./src/fix-strategies.mjs"},"gitHead":"d23faf447aa21e2cbbed1a729f01b1f4896a06b3","scripts":{"lint":"echo \"Lint pending (Phase D)\" && exit 0","test":"node --test test/test.mjs","audit":"node src/audit.mjs","start":"node src/audit.mjs"},"_npmUser":{"name":"aliksir","email":"hide.kiyohara@gmail.com"},"repository":{"url":"git+https://github.com/aliksir/neko-harness-doctor.git","type":"git"},"_npmVersion":"11.8.0","description":"Diagnose Claude Code harness (CLAUDE.md, settings.json, .mcp.json, hooks, skills, memory, MCP, workflow) against 26 anti-pattern indicators. Outputs S-E grade and prioritized Quick Wins with interactive fix proposals.","directories":{},"_nodeVersion":"24.13.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/neko-harness-doctor_0.3.0_1776433720616_0.9314144821332913","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@aliksir/neko-harness-doctor","version":"0.3.1","keywords":["claude","claude-code","harness","audit","diagnostic","anti-pattern","prompt-caching","kv-cache","cli"],"author":{"name":"aliksir"},"license":"MIT","_id":"@aliksir/neko-harness-doctor@0.3.1","maintainers":[{"name":"aliksir","email":"hide.kiyohara@gmail.com"}],"homepage":"https://github.com/aliksir/neko-harness-doctor#readme","bugs":{"url":"https://github.com/aliksir/neko-harness-doctor/issues"},"bin":{"neko-harness-doctor":"bin/neko-harness-doctor"},"dist":{"shasum":"b428de01272b3415185f07cdcdd8a32342540471","tarball":"https://registry.npmjs.org/@aliksir/neko-harness-doctor/-/neko-harness-doctor-0.3.1.tgz","fileCount":25,"integrity":"sha512-62NNvt3oykpcET2oCuCJJWbCmaIr+Ff9ZwctxD00N5mR8UkYU+1mqBdVttTcrBEcjndzbB60JKioeMMD2hQt6g==","signatures":[{"sig":"MEQCIC8UVx2flzs+BeY/tideu6uQ1/qE+o4zIiciCKXRXWosAiAbX/9p8lYxAfFY9/4Zud23exZALLRb44WyM/sSh6o0/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116232},"type":"module","engines":{"node":">=18"},"exports":{"./grading":"./src/grading.mjs","./indicators":"./src/indicators/index.mjs","./fix-strategies":"./src/fix-strategies.mjs"},"gitHead":"41f7f7be81caf81cd42b853508952c02d50d577c","scripts":{"lint":"echo \"Lint pending (Phase D)\" && exit 0","test":"node --test test/test.mjs","audit":"node src/audit.mjs","start":"node src/audit.mjs"},"_npmUser":{"name":"aliksir","email":"hide.kiyohara@gmail.com"},"repository":{"url":"git+https://github.com/aliksir/neko-harness-doctor.git","type":"git"},"_npmVersion":"11.8.0","description":"Diagnose Claude Code harness (CLAUDE.md, settings.json, .mcp.json, hooks, skills, memory, MCP, workflow) against 26 anti-pattern indicators. Outputs S-E grade and prioritized Quick Wins with interactive fix proposals.","directories":{},"_nodeVersion":"24.13.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/neko-harness-doctor_0.3.1_1776511859658_0.5930200036930742","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@aliksir/neko-harness-doctor","version":"0.4.0","description":"Diagnose Claude Code harness (CLAUDE.md, settings.json, .mcp.json, hooks, skills, memory, MCP, workflow) against 33 anti-pattern indicators. Outputs S-E grade and prioritized Quick Wins with interactive fix proposals.","type":"module","bin":{"neko-harness-doctor":"bin/neko-harness-doctor"},"exports":{"./indicators":"./src/indicators/index.mjs","./grading":"./src/grading.mjs","./fix-strategies":"./src/fix-strategies.mjs"},"scripts":{"start":"node src/audit.mjs","audit":"node src/audit.mjs","test":"node --test test/test.mjs","lint":"echo \"Lint pending (Phase D)\" && exit 0"},"keywords":["claude","claude-code","harness","audit","diagnostic","anti-pattern","prompt-caching","kv-cache","cli"],"author":{"name":"aliksir"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/aliksir/neko-harness-doctor.git"},"homepage":"https://github.com/aliksir/neko-harness-doctor#readme","bugs":{"url":"https://github.com/aliksir/neko-harness-doctor/issues"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"gitHead":"b9ce3b3be68a780c29428ada662137e2f05a17bd","_id":"@aliksir/neko-harness-doctor@0.4.0","_nodeVersion":"24.13.1","_npmVersion":"11.8.0","dist":{"integrity":"sha512-7Q8PSpadT5V+gmNW7UHpHVXtoUFOCYWAXiFN0AJwwgqi7MHSHUqArTZ+pk9BxXwlag9KU3w2Bob81p7S38QeMQ==","shasum":"fbe0cdd242e25c31c7a8970dd5df6fb8e64d6a3e","tarball":"https://registry.npmjs.org/@aliksir/neko-harness-doctor/-/neko-harness-doctor-0.4.0.tgz","fileCount":25,"unpackedSize":135470,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFxFiz0KydMFKF8bq1lQZZMzUPCvz+BejX83isYhZBT4AiEAkOByjrRNk1331FAj+Bt6sCzyNRC5tyYAq84kDlYCPhg="}]},"_npmUser":{"name":"aliksir","email":"hide.kiyohara@gmail.com"},"directories":{},"maintainers":[{"name":"aliksir","email":"hide.kiyohara@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/neko-harness-doctor_0.4.0_1779593146925_0.90031598268806"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-11T15:00:15.264Z","modified":"2026-05-24T03:25:47.178Z","0.2.0":"2026-04-11T15:00:15.515Z","0.2.1":"2026-04-11T15:17:13.065Z","0.2.2":"2026-04-11T15:22:34.532Z","0.2.3":"2026-04-11T15:32:17.526Z","0.3.0":"2026-04-17T13:48:40.809Z","0.3.1":"2026-04-18T11:30:59.796Z","0.4.0":"2026-05-24T03:25:47.062Z"},"bugs":{"url":"https://github.com/aliksir/neko-harness-doctor/issues"},"author":{"name":"aliksir"},"license":"MIT","homepage":"https://github.com/aliksir/neko-harness-doctor#readme","keywords":["claude","claude-code","harness","audit","diagnostic","anti-pattern","prompt-caching","kv-cache","cli"],"repository":{"type":"git","url":"git+https://github.com/aliksir/neko-harness-doctor.git"},"description":"Diagnose Claude Code harness (CLAUDE.md, settings.json, .mcp.json, hooks, skills, memory, MCP, workflow) against 33 anti-pattern indicators. Outputs S-E grade and prioritized Quick Wins with interactive fix proposals.","maintainers":[{"name":"aliksir","email":"hide.kiyohara@gmail.com"}],"readme":"# neko-harness-doctor\n\n> Claude Code のハーネスを 25 のアンチパターン指標で自動診断する、無料・オープンソースの CLI ツール\n\n[English README](./README.en.md) | 日本語\n\n![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)\n![Node.js 18+](https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg)\n![Dependencies: 0](https://img.shields.io/badge/dependencies-0-blue.svg)\n\n## これは何\n\nあなたの Claude Code 環境（`CLAUDE.md` / `settings.json` / `.mcp.json` / `hooks/` / `skills/` / `memory/` / `MCP` / `workflow`）を **25 のアンチパターン指標** で自動診断し、**S〜E のグレード** と **優先順位付き Quick Wins（改善提案）** を出力します。\n\n## なぜ必要か\n\nClaude Code の出力品質がセッションごとにバラつく原因の多くは **ハーネス設計の構造的欠陥** にあります:\n\n- `CLAUDE.md` が肥大化して KV-Cache 効率が悪化している\n- 重要なルールが中盤に埋もれていて Claude が読み落とす（Lost in the Middle）\n- `bypassPermissions` が有効になっていて気付かないうちに危険操作が実行されている\n- Skill の description が短すぎて Claude が正しく選択できない\n- MCP サーバーのバージョンが固定されていない\n\nこれらは個別に手で確認すると膨大な作業ですが、このツール1本で5〜15秒で全部チェックできます。\n\n## 特徴\n\n- **25 アンチパターン指標**: 7 カテゴリを横断診断（CLAUDE.md構造 / settings / hooks / skills / memory / MCP / workflow）\n- **S〜E グレード評価**: ハイブリッド方式（PASS率 + Critical即降格、最大3段）\n- **Quick Wins**: 優先順位付き改善提案（デフォルト上位5件）\n- **対話的修正フロー**: `--fix-mode propose` で修正提案を JSON 出力。Claude Code 側で承認→ Edit tool で適用する透明なワークフロー\n- **Read-only**: CLI 本体は診断対象を**一切変更しません**。修正は常にユーザー承認後\n- **機械判定優先**: LLM 不使用、grep / AST / JSON 解析で**決定性**を保証\n- **i18n**: 日本語デフォルト、`--lang en` で英語切替\n- **依存ゼロ**: Node.js 18+ のみ、`npm install` 後すぐ実行可能\n\n## インストール\n\n### npm（推奨 — CLI 単体）\n\n```bash\nnpm install -g @aliksir/neko-harness-doctor\n```\n\n### Claude Code プラグインとして\n\nこのリポジトリは Claude Code プラグインとしても動作します。プラグインとして有効化すると:\n\n- `bin/neko-harness-doctor` が Bash ツールの PATH に自動追加される（ベアコマンドで呼べる）\n- バンドルされたスキルが `/neko-harness-doctor` スラッシュコマンドと「ハーネス診断して」などの自然言語トリガーに応答する\n- Claude が自動的に診断 → Quick Wins 提示 → 対話的修正フローを実行できる\n\n**マーケットプレイス（申請中）**:\n\n```bash\n# 承認後に利用可能\nclaude plugin install neko-harness-doctor\n```\n\n**ローカルテスト（申請前/自分でビルドしたい場合）**:\n\n```bash\ngit clone https://github.com/aliksir/neko-harness-doctor.git\nclaude --plugin-dir ./neko-harness-doctor\n# セッション内で /neko-harness-doctor が使えるようになる\n```\n\nプラグイン構造:\n\n```\nneko-harness-doctor/\n├── .claude-plugin/plugin.json      # マニフェスト\n├── bin/neko-harness-doctor         # プラグイン有効時 PATH に追加\n├── skills/neko-harness-doctor/\n│   └── SKILL.md                    # Claude auto-trigger + /name ショートカット\n└── src/                            # 25 指標ロジック本体\n```\n\n### GitHub clone（生のスクリプト実行）\n\n```bash\ngit clone https://github.com/aliksir/neko-harness-doctor.git\ncd neko-harness-doctor\nnode bin/neko-harness-doctor --help\n```\n\n## クイックスタート\n\n```bash\n# ~/.claude/ を診断\nneko-harness-doctor\n\n# 特定のディレクトリを診断\nneko-harness-doctor --target ~/.claude --workspace ~/work/myproject\n\n# カテゴリ絞り込み\nneko-harness-doctor --category claude-md\n\n# JSON 出力\nneko-harness-doctor --format json\n\n# 英語切替\nneko-harness-doctor --lang en\n\n# 修正提案モード（Claude Code から呼ぶとき）\nneko-harness-doctor --fix-mode propose --format json\n```\n\n## 出力例\n\n```markdown\n# neko-harness-doctor 診断結果\n\n- **対象**: ~/.claude\n- **総合グレード**: C (基本 B から Critical 1件で 1段降格)\n- **PASS率**: 17/25 (68.0%)\n- **Critical違反**: 1\n- **実行時刻**: 2026-04-11T21:48:00.000Z\n\n## カテゴリ別スコア\n\n| カテゴリ | PASS/指標 | Critical | Major | Minor |\n|---|---|---|---|---|\n| CLAUDE.md構造 | 2/5 | 1 | 1 | 1 |\n| settings.json | 4/4 | 0 | 0 | 0 |\n| Hooks | 1/3 | 0 | 2 | 0 |\n| Skills | 1/4 | 0 | 2 | 1 |\n| Memory | 3/3 | 0 | 0 | 0 |\n| MCP | 3/3 | 0 | 0 | 0 |\n| Workflow | 3/3 | 0 | 0 | 0 |\n\n## 検出された問題\n\n### [CRITICAL] IND-03: critical-rules-not-in-first-third\n- **検出箇所**: ~/.claude/CLAUDE.md\n- **違反**: Earliest critical-rule heading at position=80.2% (outside first third)\n- **出典**: Liu et al. 2023 \"Lost in the Middle\" (arXiv:2307.03172)\n- **修正例**: Move critical rules to the first third (position 0 to 0.3) to avoid Lost-in-the-Middle\n- **自動修正**: 手動のみ\n\n## Quick Wins（優先順位）\n\n1. **[CRITICAL]** IND-03 critical-rules-not-in-first-third — Move critical rules to the first third\n2. **[MAJOR]** IND-05 volatile-elements-not-at-tail — Consolidate volatile elements at the tail\n3. **[MAJOR]** IND-10 hook-missing-error-handling — Add try/catch to all hook scripts\n...\n```\n\n## 対話的修正フロー（Claude Code 連携）\n\n`--fix-mode propose` を使うと、修正提案を JSON で出力できます。Claude Code はこれを読んで、ユーザーに承認を求めた上で `Edit` tool を使って修正を適用します:\n\n```json\n[\n  {\n    \"indicator\": \"IND-06\",\n    \"autoFixable\": true,\n    \"fixStrategy\": \"remove-bypass-permissions\",\n    \"severity\": \"critical\",\n    \"target\": \"/path/to/settings.json\",\n    \"description\": \"\\\"bypassPermissions\\\": true is set\",\n    \"evidence\": \"Principle of least privilege\",\n    \"diff\": {\n      \"before\": \"{ \\\"bypassPermissions\\\": true, ... }\",\n      \"after\": \"{ ... }\"\n    }\n  },\n  {\n    \"indicator\": \"IND-03\",\n    \"autoFixable\": false,\n    \"severity\": \"critical\",\n    \"target\": \"/path/to/CLAUDE.md\",\n    \"description\": \"...\",\n    \"manualSteps\": [\n      \"Move critical rules to the first third (position 0 to 0.3)\",\n      \"Review CLAUDE.md and refactor per the remediation guidance.\"\n    ]\n  }\n]\n```\n\n**原則**: CLI は提案のみ。実際の修正はユーザー承認後に Claude Code が `Edit` tool で行うため、完全に透明で差分プレビュー可能です。\n\n## 25 指標の一覧\n\n| カテゴリ | 指標数 | 主な内容 |\n|---|---|---|\n| CLAUDE.md構造 | 5 | 行数肥大化 / プレフィックス不安定 / Lost in the Middle / 重複セクション / 時変要素の末尾配置 |\n| settings.json | 4 | bypassPermissions / auto-accept全許可 / permissions過剰 / hooks未設定 |\n| Hooks | 3 | エラーハンドリング欠落 / 副作用リスク / PostToolUse乱用 |\n| Skills | 4 | description不十分 / trigger曖昧 / risk未設定 / namespace衝突 |\n| Memory | 3 | MEMORY.md肥大化 / lesson散逸 / ポインタ切れ |\n| MCP | 3 | バージョン固定なし / 説明文不十分 / サプライチェーン未検証 |\n| Workflow | 3 | ゲート定義不在 / 計画書運用不備 / review-protocol不在 |\n\n詳細は [docs/indicators.md](./docs/indicators.md) を参照。\n\n## グレード仕様\n\n基本グレードは PASS 率で決定、Critical 違反 1 件につき 1 段階降格（最大3段）。\n\n| グレード | PASS率 |\n|---|---|\n| S | ≥ 90% |\n| A | ≥ 75% |\n| B | ≥ 60% |\n| C | ≥ 45% |\n| D | ≥ 30% |\n| E | < 30% |\n\n詳細は [docs/grading.md](./docs/grading.md) を参照。\n\n## 設定ファイル\n\n`~/.neko-harness-doctor/config.json` で MCP publisher allowlist 等を拡張できます:\n\n```json\n{\n  \"mcp\": {\n    \"publisherAllowlist\": [\n      \"@anthropic-ai\",\n      \"@my-org\",\n      \"@trusted-vendor\"\n    ]\n  }\n}\n```\n\n詳細は [docs/configuration.md](./docs/configuration.md) を参照。\n\n## オプション一覧\n\n```\n--target <path>       診断対象ディレクトリ（デフォルト: ~/.claude/）\n--workspace <path>    plans/checklist/rules等を探す作業ディレクトリ\n--format <fmt>        出力形式 json|markdown（デフォルト: markdown）\n--category <name>     特定カテゴリのみ診断\n--severity <level>    最小Severity critical|major|minor（デフォルト: minor）\n--top <n>             Quick Wins の上位件数（デフォルト: 5）\n--fix-mode <mode>     修正提案モード: off|propose（デフォルト: off）\n--lang <lang>         出力言語 ja|en（デフォルト: ja）\n--quiet               違反のみ表示\n--help                ヘルプ表示\n\n環境変数:\n  NEKO_HARNESS_WORKSPACE  --workspace のフォールバック\n\n終了コード:\n  0 - 診断完了\n  1 - 診断対象が見つからない\n  2 - 内部エラー\n```\n\n## 既存の類似ツールとの違い\n\n| ツール | 守備範囲 | neko-harness-doctor との関係 |\n|---|---|---|\n| `skill-security-check` | Skill 単体のセキュリティ監査 | 補完（本ツールは Skill 構造の横断監査のみ） |\n| `cc-skill-security-review` | コード変更のセキュリティレビュー | 補完（本ツールは実装済み設定の監査） |\n| `analyze-permissions` | settings.json 権限分析 | 補完（本ツールはさらに広い8領域を横断診断） |\n\n## FAQ\n\n**Q: LLM を呼び出しますか？**\nA: いいえ。全て grep / AST / JSON 解析で決定的に判定します。同じ入力なら常に同じ出力です。CI 統合に最適。\n\n**Q: ファイルを書き換えますか？**\nA: **CLI 本体は一切書き換えません**。修正は `--fix-mode propose` で提案 JSON を出力するところまで。実際の適用は Claude Code が `Edit` tool で行います（ユーザー承認後）。\n\n**Q: 依存パッケージは？**\nA: runtime 依存ゼロ。Node.js 18+ の stdlib のみで動作します。\n\n**Q: 指標を追加・カスタマイズできますか？**\nA: v0.2.0 時点ではビルトイン 25 指標のみ。ユーザー定義指標は将来検討。publisher allowlist 等の閾値は `~/.neko-harness-doctor/config.json` で拡張可能。\n\n## ライセンス\n\n[MIT](./LICENSE)\n\n## Acknowledgments\n\n- **Liu et al. 2023** \"Lost in the Middle\" (arXiv:2307.03172) — IND-03 の根拠\n- **Anthropic Prompt Caching Guide** — IND-01/02/05 の根拠\n- **OpenSSF Secure Supply Chain Best Practices** — IND-20/22 の根拠\n- **IEEE peer review standard / Four Eyes Principle** — IND-25 の根拠\n\n## ロードマップ\n\n- [x] **v0.1.0** — 25指標初版、i18n、fix-mode=propose\n- [x] **v0.2.0** — shell hook 対応（IND-10）、`hd-ignore` インライン除外、外部スキル除外（`--skip-external`）、CRLF パースバグ修正、CI/テストスイート\n- [ ] **v0.3.0** — ESLint 導入、ユーザー定義指標、MCPツール説明文の実測（起動時動的取得）\n- [ ] **v0.4.0** — IND-22 の postinstall 実測統合\n- [ ] **v1.0.0** — 安定版リリース\n","readmeFilename":"README.md"}