@booklib/core 2.0.0

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.
Files changed (374) hide show
  1. package/.cursor/rules/booklib-standards.mdc +40 -0
  2. package/.gemini/context.md +372 -0
  3. package/AGENTS.md +166 -0
  4. package/CHANGELOG.md +226 -0
  5. package/CLAUDE.md +81 -0
  6. package/CODE_OF_CONDUCT.md +31 -0
  7. package/CONTRIBUTING.md +304 -0
  8. package/LICENSE +21 -0
  9. package/PLAN.md +28 -0
  10. package/README.ja.md +198 -0
  11. package/README.ko.md +198 -0
  12. package/README.md +503 -0
  13. package/README.pt-BR.md +198 -0
  14. package/README.uk.md +241 -0
  15. package/README.zh-CN.md +198 -0
  16. package/SECURITY.md +9 -0
  17. package/agents/architecture-reviewer.md +136 -0
  18. package/agents/booklib-reviewer.md +90 -0
  19. package/agents/data-reviewer.md +107 -0
  20. package/agents/jvm-reviewer.md +146 -0
  21. package/agents/python-reviewer.md +128 -0
  22. package/agents/rust-reviewer.md +115 -0
  23. package/agents/ts-reviewer.md +110 -0
  24. package/agents/ui-reviewer.md +117 -0
  25. package/assets/logo.svg +36 -0
  26. package/bin/booklib-mcp.js +304 -0
  27. package/bin/booklib.js +1705 -0
  28. package/bin/skills.cjs +1292 -0
  29. package/booklib-router.mdc +36 -0
  30. package/booklib.config.json +19 -0
  31. package/commands/animation-at-work.md +10 -0
  32. package/commands/clean-code-reviewer.md +10 -0
  33. package/commands/data-intensive-patterns.md +10 -0
  34. package/commands/data-pipelines.md +10 -0
  35. package/commands/design-patterns.md +10 -0
  36. package/commands/domain-driven-design.md +10 -0
  37. package/commands/effective-java.md +10 -0
  38. package/commands/effective-kotlin.md +10 -0
  39. package/commands/effective-python.md +10 -0
  40. package/commands/effective-typescript.md +10 -0
  41. package/commands/kotlin-in-action.md +10 -0
  42. package/commands/lean-startup.md +10 -0
  43. package/commands/microservices-patterns.md +10 -0
  44. package/commands/programming-with-rust.md +10 -0
  45. package/commands/refactoring-ui.md +10 -0
  46. package/commands/rust-in-action.md +10 -0
  47. package/commands/skill-router.md +10 -0
  48. package/commands/spring-boot-in-action.md +10 -0
  49. package/commands/storytelling-with-data.md +10 -0
  50. package/commands/system-design-interview.md +10 -0
  51. package/commands/using-asyncio-python.md +10 -0
  52. package/commands/web-scraping-python.md +10 -0
  53. package/community/registry.json +1616 -0
  54. package/hooks/hooks.json +23 -0
  55. package/hooks/posttooluse-capture.mjs +67 -0
  56. package/hooks/suggest.js +153 -0
  57. package/lib/agent-behaviors.js +40 -0
  58. package/lib/agent-detector.js +96 -0
  59. package/lib/config-loader.js +39 -0
  60. package/lib/conflict-resolver.js +148 -0
  61. package/lib/context-builder.js +574 -0
  62. package/lib/discovery-engine.js +298 -0
  63. package/lib/doctor/hook-installer.js +83 -0
  64. package/lib/doctor/usage-tracker.js +87 -0
  65. package/lib/engine/ai-features.js +253 -0
  66. package/lib/engine/auditor.js +103 -0
  67. package/lib/engine/bm25-index.js +178 -0
  68. package/lib/engine/capture.js +120 -0
  69. package/lib/engine/corrections.js +198 -0
  70. package/lib/engine/doctor.js +195 -0
  71. package/lib/engine/graph-injector.js +137 -0
  72. package/lib/engine/graph.js +161 -0
  73. package/lib/engine/handoff.js +405 -0
  74. package/lib/engine/indexer.js +242 -0
  75. package/lib/engine/parser.js +53 -0
  76. package/lib/engine/query-expander.js +42 -0
  77. package/lib/engine/reranker.js +40 -0
  78. package/lib/engine/rrf.js +59 -0
  79. package/lib/engine/scanner.js +151 -0
  80. package/lib/engine/searcher.js +139 -0
  81. package/lib/engine/session-coordinator.js +306 -0
  82. package/lib/engine/session-manager.js +429 -0
  83. package/lib/engine/synthesizer.js +70 -0
  84. package/lib/installer.js +70 -0
  85. package/lib/instinct-block.js +33 -0
  86. package/lib/mcp-config-writer.js +88 -0
  87. package/lib/paths.js +57 -0
  88. package/lib/profiles/design.md +19 -0
  89. package/lib/profiles/general.md +16 -0
  90. package/lib/profiles/research-analysis.md +22 -0
  91. package/lib/profiles/software-development.md +23 -0
  92. package/lib/profiles/writing-content.md +19 -0
  93. package/lib/project-initializer.js +916 -0
  94. package/lib/registry/skills.js +102 -0
  95. package/lib/registry-searcher.js +99 -0
  96. package/lib/rules/rules-manager.js +169 -0
  97. package/lib/skill-fetcher.js +333 -0
  98. package/lib/well-known-builder.js +70 -0
  99. package/lib/wizard/index.js +404 -0
  100. package/lib/wizard/integration-detector.js +41 -0
  101. package/lib/wizard/project-detector.js +100 -0
  102. package/lib/wizard/prompt.js +156 -0
  103. package/lib/wizard/registry-embeddings.js +107 -0
  104. package/lib/wizard/skill-recommender.js +69 -0
  105. package/llms-full.txt +254 -0
  106. package/llms.txt +70 -0
  107. package/package.json +45 -0
  108. package/research-reports/2026-04-01-current-architecture.md +160 -0
  109. package/research-reports/IDEAS.md +93 -0
  110. package/rules/common/clean-code.md +42 -0
  111. package/rules/java/effective-java.md +42 -0
  112. package/rules/kotlin/effective-kotlin.md +37 -0
  113. package/rules/python/effective-python.md +38 -0
  114. package/rules/rust/rust.md +37 -0
  115. package/rules/typescript/effective-typescript.md +42 -0
  116. package/scripts/gen-llms-full.mjs +36 -0
  117. package/scripts/gen-og.mjs +142 -0
  118. package/scripts/validate-frontmatter.js +25 -0
  119. package/skills/animation-at-work/SKILL.md +270 -0
  120. package/skills/animation-at-work/assets/example_asset.txt +1 -0
  121. package/skills/animation-at-work/evals/evals.json +44 -0
  122. package/skills/animation-at-work/evals/results.json +13 -0
  123. package/skills/animation-at-work/examples/after.md +64 -0
  124. package/skills/animation-at-work/examples/before.md +35 -0
  125. package/skills/animation-at-work/references/api_reference.md +369 -0
  126. package/skills/animation-at-work/references/review-checklist.md +79 -0
  127. package/skills/animation-at-work/scripts/audit_animations.py +295 -0
  128. package/skills/animation-at-work/scripts/example.py +1 -0
  129. package/skills/clean-code-reviewer/SKILL.md +444 -0
  130. package/skills/clean-code-reviewer/audit.json +35 -0
  131. package/skills/clean-code-reviewer/evals/evals.json +185 -0
  132. package/skills/clean-code-reviewer/evals/results.json +13 -0
  133. package/skills/clean-code-reviewer/examples/after.md +48 -0
  134. package/skills/clean-code-reviewer/examples/before.md +33 -0
  135. package/skills/clean-code-reviewer/references/api_reference.md +158 -0
  136. package/skills/clean-code-reviewer/references/practices-catalog.md +282 -0
  137. package/skills/clean-code-reviewer/references/review-checklist.md +254 -0
  138. package/skills/clean-code-reviewer/scripts/pre-review.py +206 -0
  139. package/skills/data-intensive-patterns/SKILL.md +267 -0
  140. package/skills/data-intensive-patterns/assets/example_asset.txt +1 -0
  141. package/skills/data-intensive-patterns/evals/evals.json +54 -0
  142. package/skills/data-intensive-patterns/evals/results.json +13 -0
  143. package/skills/data-intensive-patterns/examples/after.md +61 -0
  144. package/skills/data-intensive-patterns/examples/before.md +38 -0
  145. package/skills/data-intensive-patterns/references/api_reference.md +34 -0
  146. package/skills/data-intensive-patterns/references/patterns-catalog.md +551 -0
  147. package/skills/data-intensive-patterns/references/review-checklist.md +193 -0
  148. package/skills/data-intensive-patterns/scripts/adr.py +213 -0
  149. package/skills/data-intensive-patterns/scripts/example.py +1 -0
  150. package/skills/data-pipelines/SKILL.md +259 -0
  151. package/skills/data-pipelines/assets/example_asset.txt +1 -0
  152. package/skills/data-pipelines/evals/evals.json +45 -0
  153. package/skills/data-pipelines/evals/results.json +13 -0
  154. package/skills/data-pipelines/examples/after.md +97 -0
  155. package/skills/data-pipelines/examples/before.md +37 -0
  156. package/skills/data-pipelines/references/api_reference.md +301 -0
  157. package/skills/data-pipelines/references/review-checklist.md +181 -0
  158. package/skills/data-pipelines/scripts/example.py +1 -0
  159. package/skills/data-pipelines/scripts/new_pipeline.py +444 -0
  160. package/skills/design-patterns/SKILL.md +271 -0
  161. package/skills/design-patterns/assets/example_asset.txt +1 -0
  162. package/skills/design-patterns/evals/evals.json +46 -0
  163. package/skills/design-patterns/evals/results.json +13 -0
  164. package/skills/design-patterns/examples/after.md +52 -0
  165. package/skills/design-patterns/examples/before.md +29 -0
  166. package/skills/design-patterns/references/api_reference.md +1 -0
  167. package/skills/design-patterns/references/patterns-catalog.md +726 -0
  168. package/skills/design-patterns/references/review-checklist.md +173 -0
  169. package/skills/design-patterns/scripts/example.py +1 -0
  170. package/skills/design-patterns/scripts/scaffold.py +807 -0
  171. package/skills/domain-driven-design/SKILL.md +142 -0
  172. package/skills/domain-driven-design/assets/example_asset.txt +1 -0
  173. package/skills/domain-driven-design/evals/evals.json +48 -0
  174. package/skills/domain-driven-design/evals/results.json +13 -0
  175. package/skills/domain-driven-design/examples/after.md +80 -0
  176. package/skills/domain-driven-design/examples/before.md +43 -0
  177. package/skills/domain-driven-design/references/api_reference.md +1 -0
  178. package/skills/domain-driven-design/references/patterns-catalog.md +545 -0
  179. package/skills/domain-driven-design/references/review-checklist.md +158 -0
  180. package/skills/domain-driven-design/scripts/example.py +1 -0
  181. package/skills/domain-driven-design/scripts/scaffold.py +421 -0
  182. package/skills/effective-java/SKILL.md +227 -0
  183. package/skills/effective-java/assets/example_asset.txt +1 -0
  184. package/skills/effective-java/evals/evals.json +46 -0
  185. package/skills/effective-java/evals/results.json +13 -0
  186. package/skills/effective-java/examples/after.md +83 -0
  187. package/skills/effective-java/examples/before.md +37 -0
  188. package/skills/effective-java/references/api_reference.md +1 -0
  189. package/skills/effective-java/references/items-catalog.md +955 -0
  190. package/skills/effective-java/references/review-checklist.md +216 -0
  191. package/skills/effective-java/scripts/checkstyle_setup.py +211 -0
  192. package/skills/effective-java/scripts/example.py +1 -0
  193. package/skills/effective-kotlin/SKILL.md +271 -0
  194. package/skills/effective-kotlin/assets/example_asset.txt +1 -0
  195. package/skills/effective-kotlin/audit.json +29 -0
  196. package/skills/effective-kotlin/evals/evals.json +45 -0
  197. package/skills/effective-kotlin/evals/results.json +13 -0
  198. package/skills/effective-kotlin/examples/after.md +36 -0
  199. package/skills/effective-kotlin/examples/before.md +38 -0
  200. package/skills/effective-kotlin/references/api_reference.md +1 -0
  201. package/skills/effective-kotlin/references/practices-catalog.md +1228 -0
  202. package/skills/effective-kotlin/references/review-checklist.md +126 -0
  203. package/skills/effective-kotlin/scripts/example.py +1 -0
  204. package/skills/effective-python/SKILL.md +441 -0
  205. package/skills/effective-python/evals/evals.json +44 -0
  206. package/skills/effective-python/evals/results.json +13 -0
  207. package/skills/effective-python/examples/after.md +56 -0
  208. package/skills/effective-python/examples/before.md +40 -0
  209. package/skills/effective-python/ref-01-pythonic-thinking.md +202 -0
  210. package/skills/effective-python/ref-02-lists-and-dicts.md +146 -0
  211. package/skills/effective-python/ref-03-functions.md +186 -0
  212. package/skills/effective-python/ref-04-comprehensions-generators.md +211 -0
  213. package/skills/effective-python/ref-05-classes-interfaces.md +188 -0
  214. package/skills/effective-python/ref-06-metaclasses-attributes.md +209 -0
  215. package/skills/effective-python/ref-07-concurrency.md +213 -0
  216. package/skills/effective-python/ref-08-robustness-performance.md +248 -0
  217. package/skills/effective-python/ref-09-testing-debugging.md +253 -0
  218. package/skills/effective-python/ref-10-collaboration.md +175 -0
  219. package/skills/effective-python/references/api_reference.md +218 -0
  220. package/skills/effective-python/references/practices-catalog.md +483 -0
  221. package/skills/effective-python/references/review-checklist.md +190 -0
  222. package/skills/effective-python/scripts/lint.py +173 -0
  223. package/skills/effective-typescript/SKILL.md +262 -0
  224. package/skills/effective-typescript/audit.json +29 -0
  225. package/skills/effective-typescript/evals/evals.json +37 -0
  226. package/skills/effective-typescript/evals/results.json +13 -0
  227. package/skills/effective-typescript/examples/after.md +70 -0
  228. package/skills/effective-typescript/examples/before.md +47 -0
  229. package/skills/effective-typescript/references/api_reference.md +118 -0
  230. package/skills/effective-typescript/references/practices-catalog.md +371 -0
  231. package/skills/effective-typescript/scripts/review.py +169 -0
  232. package/skills/kotlin-in-action/SKILL.md +261 -0
  233. package/skills/kotlin-in-action/assets/example_asset.txt +1 -0
  234. package/skills/kotlin-in-action/evals/evals.json +43 -0
  235. package/skills/kotlin-in-action/evals/results.json +13 -0
  236. package/skills/kotlin-in-action/examples/after.md +53 -0
  237. package/skills/kotlin-in-action/examples/before.md +39 -0
  238. package/skills/kotlin-in-action/references/api_reference.md +1 -0
  239. package/skills/kotlin-in-action/references/practices-catalog.md +436 -0
  240. package/skills/kotlin-in-action/references/review-checklist.md +204 -0
  241. package/skills/kotlin-in-action/scripts/example.py +1 -0
  242. package/skills/kotlin-in-action/scripts/setup_detekt.py +224 -0
  243. package/skills/lean-startup/SKILL.md +160 -0
  244. package/skills/lean-startup/assets/example_asset.txt +1 -0
  245. package/skills/lean-startup/evals/evals.json +43 -0
  246. package/skills/lean-startup/evals/results.json +13 -0
  247. package/skills/lean-startup/examples/after.md +80 -0
  248. package/skills/lean-startup/examples/before.md +34 -0
  249. package/skills/lean-startup/references/api_reference.md +319 -0
  250. package/skills/lean-startup/references/review-checklist.md +137 -0
  251. package/skills/lean-startup/scripts/example.py +1 -0
  252. package/skills/lean-startup/scripts/new_experiment.py +286 -0
  253. package/skills/microservices-patterns/SKILL.md +384 -0
  254. package/skills/microservices-patterns/evals/evals.json +45 -0
  255. package/skills/microservices-patterns/evals/results.json +13 -0
  256. package/skills/microservices-patterns/examples/after.md +69 -0
  257. package/skills/microservices-patterns/examples/before.md +40 -0
  258. package/skills/microservices-patterns/references/patterns-catalog.md +391 -0
  259. package/skills/microservices-patterns/references/review-checklist.md +169 -0
  260. package/skills/microservices-patterns/scripts/new_service.py +583 -0
  261. package/skills/programming-with-rust/SKILL.md +209 -0
  262. package/skills/programming-with-rust/evals/evals.json +37 -0
  263. package/skills/programming-with-rust/evals/results.json +13 -0
  264. package/skills/programming-with-rust/examples/after.md +107 -0
  265. package/skills/programming-with-rust/examples/before.md +59 -0
  266. package/skills/programming-with-rust/references/api_reference.md +152 -0
  267. package/skills/programming-with-rust/references/practices-catalog.md +335 -0
  268. package/skills/programming-with-rust/scripts/review.py +142 -0
  269. package/skills/refactoring-ui/SKILL.md +362 -0
  270. package/skills/refactoring-ui/assets/example_asset.txt +1 -0
  271. package/skills/refactoring-ui/evals/evals.json +45 -0
  272. package/skills/refactoring-ui/evals/results.json +13 -0
  273. package/skills/refactoring-ui/examples/after.md +85 -0
  274. package/skills/refactoring-ui/examples/before.md +58 -0
  275. package/skills/refactoring-ui/references/api_reference.md +355 -0
  276. package/skills/refactoring-ui/references/review-checklist.md +114 -0
  277. package/skills/refactoring-ui/scripts/audit_css.py +250 -0
  278. package/skills/refactoring-ui/scripts/example.py +1 -0
  279. package/skills/rust-in-action/SKILL.md +350 -0
  280. package/skills/rust-in-action/evals/evals.json +38 -0
  281. package/skills/rust-in-action/evals/results.json +13 -0
  282. package/skills/rust-in-action/examples/after.md +156 -0
  283. package/skills/rust-in-action/examples/before.md +56 -0
  284. package/skills/rust-in-action/references/practices-catalog.md +346 -0
  285. package/skills/rust-in-action/scripts/review.py +147 -0
  286. package/skills/skill-router/SKILL.md +186 -0
  287. package/skills/skill-router/evals/evals.json +38 -0
  288. package/skills/skill-router/evals/results.json +13 -0
  289. package/skills/skill-router/examples/after.md +63 -0
  290. package/skills/skill-router/examples/before.md +39 -0
  291. package/skills/skill-router/references/api_reference.md +24 -0
  292. package/skills/skill-router/references/routing-heuristics.md +89 -0
  293. package/skills/skill-router/references/skill-catalog.md +174 -0
  294. package/skills/skill-router/scripts/route.py +266 -0
  295. package/skills/spring-boot-in-action/SKILL.md +340 -0
  296. package/skills/spring-boot-in-action/evals/evals.json +39 -0
  297. package/skills/spring-boot-in-action/evals/results.json +13 -0
  298. package/skills/spring-boot-in-action/examples/after.md +185 -0
  299. package/skills/spring-boot-in-action/examples/before.md +84 -0
  300. package/skills/spring-boot-in-action/references/practices-catalog.md +403 -0
  301. package/skills/spring-boot-in-action/scripts/review.py +184 -0
  302. package/skills/storytelling-with-data/SKILL.md +241 -0
  303. package/skills/storytelling-with-data/assets/example_asset.txt +1 -0
  304. package/skills/storytelling-with-data/evals/evals.json +47 -0
  305. package/skills/storytelling-with-data/evals/results.json +13 -0
  306. package/skills/storytelling-with-data/examples/after.md +50 -0
  307. package/skills/storytelling-with-data/examples/before.md +33 -0
  308. package/skills/storytelling-with-data/references/api_reference.md +379 -0
  309. package/skills/storytelling-with-data/references/review-checklist.md +111 -0
  310. package/skills/storytelling-with-data/scripts/chart_review.py +301 -0
  311. package/skills/storytelling-with-data/scripts/example.py +1 -0
  312. package/skills/system-design-interview/SKILL.md +233 -0
  313. package/skills/system-design-interview/assets/example_asset.txt +1 -0
  314. package/skills/system-design-interview/evals/evals.json +46 -0
  315. package/skills/system-design-interview/evals/results.json +13 -0
  316. package/skills/system-design-interview/examples/after.md +94 -0
  317. package/skills/system-design-interview/examples/before.md +27 -0
  318. package/skills/system-design-interview/references/api_reference.md +582 -0
  319. package/skills/system-design-interview/references/review-checklist.md +201 -0
  320. package/skills/system-design-interview/scripts/example.py +1 -0
  321. package/skills/system-design-interview/scripts/new_design.py +421 -0
  322. package/skills/using-asyncio-python/SKILL.md +290 -0
  323. package/skills/using-asyncio-python/assets/example_asset.txt +1 -0
  324. package/skills/using-asyncio-python/evals/evals.json +43 -0
  325. package/skills/using-asyncio-python/evals/results.json +13 -0
  326. package/skills/using-asyncio-python/examples/after.md +68 -0
  327. package/skills/using-asyncio-python/examples/before.md +39 -0
  328. package/skills/using-asyncio-python/references/api_reference.md +267 -0
  329. package/skills/using-asyncio-python/references/review-checklist.md +149 -0
  330. package/skills/using-asyncio-python/scripts/check_blocking.py +270 -0
  331. package/skills/using-asyncio-python/scripts/example.py +1 -0
  332. package/skills/web-scraping-python/SKILL.md +280 -0
  333. package/skills/web-scraping-python/assets/example_asset.txt +1 -0
  334. package/skills/web-scraping-python/evals/evals.json +46 -0
  335. package/skills/web-scraping-python/evals/results.json +13 -0
  336. package/skills/web-scraping-python/examples/after.md +109 -0
  337. package/skills/web-scraping-python/examples/before.md +40 -0
  338. package/skills/web-scraping-python/references/api_reference.md +393 -0
  339. package/skills/web-scraping-python/references/review-checklist.md +163 -0
  340. package/skills/web-scraping-python/scripts/example.py +1 -0
  341. package/skills/web-scraping-python/scripts/new_scraper.py +231 -0
  342. package/skills/writing-plans/audit.json +34 -0
  343. package/tests/agent-detector.test.js +83 -0
  344. package/tests/corrections.test.js +245 -0
  345. package/tests/doctor/hook-installer.test.js +72 -0
  346. package/tests/doctor/usage-tracker.test.js +140 -0
  347. package/tests/engine/benchmark-eval.test.js +31 -0
  348. package/tests/engine/bm25-index.test.js +85 -0
  349. package/tests/engine/capture-command.test.js +35 -0
  350. package/tests/engine/capture.test.js +17 -0
  351. package/tests/engine/graph-augmented-search.test.js +107 -0
  352. package/tests/engine/graph-injector.test.js +44 -0
  353. package/tests/engine/graph.test.js +216 -0
  354. package/tests/engine/hybrid-searcher.test.js +74 -0
  355. package/tests/engine/indexer-bm25.test.js +37 -0
  356. package/tests/engine/mcp-tools.test.js +73 -0
  357. package/tests/engine/project-initializer-mcp.test.js +99 -0
  358. package/tests/engine/query-expander.test.js +36 -0
  359. package/tests/engine/reranker.test.js +51 -0
  360. package/tests/engine/rrf.test.js +49 -0
  361. package/tests/engine/srag-prefix.test.js +47 -0
  362. package/tests/instinct-block.test.js +23 -0
  363. package/tests/mcp-config-writer.test.js +60 -0
  364. package/tests/project-initializer-new-agents.test.js +48 -0
  365. package/tests/rules/rules-manager.test.js +230 -0
  366. package/tests/well-known-builder.test.js +40 -0
  367. package/tests/wizard/integration-detector.test.js +31 -0
  368. package/tests/wizard/project-detector.test.js +51 -0
  369. package/tests/wizard/prompt-session.test.js +61 -0
  370. package/tests/wizard/prompt.test.js +16 -0
  371. package/tests/wizard/registry-embeddings.test.js +35 -0
  372. package/tests/wizard/skill-recommender.test.js +34 -0
  373. package/tests/wizard/slot-count.test.js +25 -0
  374. package/vercel.json +21 -0
package/PLAN.md ADDED
@@ -0,0 +1,28 @@
1
+ # Implementation Plan
2
+
3
+ Current version: **1.10.0**
4
+
5
+ ## Completed in 1.9.0
6
+
7
+ - `skills agents` list command
8
+ - Cursor support (`--target=cursor` / `--target=all`)
9
+ - Hooks: `hooks/suggest.js` + `hooks/hooks.json`
10
+ - README overhaul (three-tier architecture)
11
+ - AGENTS.md rewrite
12
+
13
+ ## Completed in 1.10.0
14
+
15
+ - Rules system: `rules/{language}/*.md` always-on standards files
16
+ - `skills add --rules` / `skills add --rules=<language>` installs to `.claude/rules/`
17
+ - `skills rules` list command
18
+ - `skills add --hooks` standalone flag (previously hooks only installed via `--all`)
19
+ - CONTRIBUTING.md: "Adding an Agent" section
20
+ - `--all` now also installs all rules
21
+
22
+ ## Possible next steps
23
+
24
+ - `skills add --profile=<name> --rules` to install profile + relevant rules together
25
+ - Profile-aware rules: each profile installs matching rules automatically
26
+ - `skills rules --info=<language>` for detailed view
27
+ - Rules for more languages (Go, Swift, C++)
28
+ - Agent evals system
package/README.ja.md ADDED
@@ -0,0 +1,198 @@
1
+ <p align="center">
2
+ <a href="README.md">English</a> · <a href="README.zh-CN.md">中文</a> · <a href="README.ja.md">日本語</a> · <a href="README.ko.md">한국어</a> · <a href="README.pt-BR.md">Português</a> · <a href="README.uk.md">Українська</a>
3
+ </p>
4
+
5
+ <p align="center">
6
+ <img src="assets/logo.svg" width="100" alt="booklib-ai skills"/>
7
+ </p>
8
+
9
+ <h1 align="center">booklib</h1>
10
+
11
+ <p align="center">
12
+ 定番書籍に基づいた AI エージェントスキル — Claude Code、Cursor、Copilot、Windsurf 対応。<br/>
13
+ 権威ある書籍の専門知識を、スキル・コマンド・エージェント・ルールとしてパッケージ化。
14
+ </p>
15
+
16
+ <p align="center">
17
+ <a href="https://www.npmjs.com/package/booklib"><img src="https://img.shields.io/npm/v/booklib.svg" alt="npm バージョン"/></a>
18
+ <a href="https://www.npmjs.com/package/booklib"><img src="https://img.shields.io/npm/dw/booklib.svg" alt="ダウンロード数"/></a>
19
+ <a href="https://github.com/booklib-ai/booklib/stargazers"><img src="https://img.shields.io/github/stars/booklib-ai/booklib?style=flat" alt="スター数"/></a>
20
+ <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="ライセンス"/></a>
21
+ </p>
22
+
23
+ <p align="center">
24
+ <b>22 スキル</b> &nbsp;·&nbsp; <b>8 エージェント</b> &nbsp;·&nbsp; <b>6 ルール</b> &nbsp;·&nbsp; <b>22 コマンド</b> &nbsp;·&nbsp; <b>9 プロファイル</b>
25
+ </p>
26
+
27
+ ---
28
+
29
+ ## 概要
30
+
31
+ 各スキルは、特定のプログラミング書籍の主要なプラクティスを、AI エージェントがコードに直接適用できる構造化された指示としてパッケージ化したものです。汎用的な「良いプログラマーになれ」というプロンプトではなく、*Effective Java*、*Designing Data-Intensive Applications*、*Clean Code* などの権威ある書籍に基づいた的確な専門知識を提供します。
32
+
33
+ ```bash
34
+ # すべてをグローバルにインストール
35
+ npx booklib add --all --global
36
+
37
+ # あるいはスタックに合ったものだけをインストール
38
+ npx booklib add --profile=ts --global # TypeScript
39
+ npx booklib add --profile=python --global # Python
40
+ npx booklib add --profile=rust --global # Rust
41
+ npx booklib add --profile=jvm --global # Java / Kotlin
42
+ ```
43
+
44
+ ## 4 つの層
45
+
46
+ | 層 | 数 | 有効化のタイミング | インストール先 |
47
+ |----|----|--------------------|----------------|
48
+ | **スキル** | 22 | 自動 — ファイル種別やタスクのコンテキストに応じてトリガー | `.claude/skills/` |
49
+ | **コマンド** | 22 | 明示的 — `/effective-python`、`/design-patterns` など | `.claude/commands/` |
50
+ | **エージェント** | 8 | オンデマンド — `@python-reviewer`、`@architecture-reviewer` | `.claude/agents/` |
51
+ | **ルール** | 6 | 常時 — セッションごとに自動ロード、トリガー不要 | `.claude/rules/` |
52
+
53
+ **プロファイル**は言語またはドメインごとに 4 層すべてをまとめてインストールします:
54
+
55
+ ```bash
56
+ npx booklib add --profile=python # Python スキル + コマンド + エージェント + ルール
57
+ npx booklib add --profile=ts # TypeScript
58
+ npx booklib add --profile=rust # Rust
59
+ npx booklib add --profile=jvm # Java + Kotlin + Spring Boot
60
+ npx booklib add --profile=architecture # DDD + マイクロサービス + システム設計
61
+ npx booklib add --profile=data # データパイプライン + DDIA
62
+ npx booklib add --profile=ui # Refactoring UI + アニメーション + データ可視化
63
+ npx booklib add --profile=lean # リーンスタートアップ
64
+ npx booklib add --profile=core # スキルルーター + クリーンコード — 汎用デフォルト
65
+ ```
66
+
67
+ ---
68
+
69
+ ## スキル一覧
70
+
71
+ | スキル | 書籍 | 著者 |
72
+ |--------|------|------|
73
+ | [animation-at-work](./skills/animation-at-work/) | *Animation at Work* | Rachel Nabors |
74
+ | [clean-code-reviewer](./skills/clean-code-reviewer/) | *Clean Code* | Robert C. Martin |
75
+ | [data-intensive-patterns](./skills/data-intensive-patterns/) | *Designing Data-Intensive Applications* | Martin Kleppmann |
76
+ | [data-pipelines](./skills/data-pipelines/) | *Data Pipelines Pocket Reference* | James Densmore |
77
+ | [design-patterns](./skills/design-patterns/) | *Head First Design Patterns* | Freeman & Robson |
78
+ | [domain-driven-design](./skills/domain-driven-design/) | *Domain-Driven Design* | Eric Evans |
79
+ | [effective-java](./skills/effective-java/) | *Effective Java* 第3版 | Joshua Bloch |
80
+ | [effective-kotlin](./skills/effective-kotlin/) | *Effective Kotlin* 第2版 | Marcin Moskała |
81
+ | [effective-python](./skills/effective-python/) | *Effective Python* 第3版 | Brett Slatkin |
82
+ | [effective-typescript](./skills/effective-typescript/) | *Effective TypeScript* 第2版 | Dan Vanderkam |
83
+ | [kotlin-in-action](./skills/kotlin-in-action/) | *Kotlin in Action* 第2版 | Elizarov & Isakova |
84
+ | [lean-startup](./skills/lean-startup/) | *The Lean Startup* | Eric Ries |
85
+ | [microservices-patterns](./skills/microservices-patterns/) | *Microservices Patterns* | Chris Richardson |
86
+ | [programming-with-rust](./skills/programming-with-rust/) | *Programming with Rust* | Donis Marshall |
87
+ | [refactoring-ui](./skills/refactoring-ui/) | *Refactoring UI* | Wathan & Schoger |
88
+ | [rust-in-action](./skills/rust-in-action/) | *Rust in Action* | Tim McNamara |
89
+ | [skill-router](./skills/skill-router/) | メタスキル — 最適なスキルへ自動ルーティング | booklib-ai |
90
+ | [spring-boot-in-action](./skills/spring-boot-in-action/) | *Spring Boot in Action* | Craig Walls |
91
+ | [storytelling-with-data](./skills/storytelling-with-data/) | *Storytelling with Data* | Cole Nussbaumer Knaflic |
92
+ | [system-design-interview](./skills/system-design-interview/) | *System Design Interview* | Alex Xu |
93
+ | [using-asyncio-python](./skills/using-asyncio-python/) | *Using Asyncio in Python* | Caleb Hattingh |
94
+ | [web-scraping-python](./skills/web-scraping-python/) | *Web Scraping with Python* | Ryan Mitchell |
95
+
96
+ ---
97
+
98
+ ## エージェント
99
+
100
+ 1 回の実行で複数のスキルを適用する自律的なレビュアーです。Claude Code で `@エージェント名` を使って呼び出します。
101
+
102
+ | エージェント | モデル | 適用スキル |
103
+ |--------------|--------|-----------|
104
+ | `@booklib-reviewer` | sonnet | 最適なスキルへ自動ルーティング — 迷ったらこれ |
105
+ | `@python-reviewer` | sonnet | effective-python · asyncio · web-scraping |
106
+ | `@ts-reviewer` | sonnet | effective-typescript · clean-code-reviewer |
107
+ | `@jvm-reviewer` | sonnet | effective-java · effective-kotlin · kotlin-in-action · spring-boot |
108
+ | `@rust-reviewer` | sonnet | programming-with-rust · rust-in-action |
109
+ | `@architecture-reviewer` | opus | domain-driven-design · microservices-patterns · system-design · data-intensive |
110
+ | `@data-reviewer` | sonnet | data-intensive-patterns · data-pipelines |
111
+ | `@ui-reviewer` | sonnet | refactoring-ui · storytelling-with-data · animation-at-work |
112
+
113
+ ---
114
+
115
+ ## ルール
116
+
117
+ 常時有効なコーディング規約 — `.claude/rules/` にインストールされ、トリガー条件なしに毎セッション自動ロードされます。
118
+
119
+ | ルール | 言語 | 出典 |
120
+ |--------|------|------|
121
+ | `clean-code` | 全言語 | *Clean Code* — 命名・関数・コメント・構造 |
122
+ | `effective-python` | Python | *Effective Python* — Pythonicスタイル・型・エラー処理 |
123
+ | `effective-typescript` | TypeScript | *Effective TypeScript* — 型・推論・null安全 |
124
+ | `effective-java` | Java | *Effective Java* — 生成・クラス・ジェネリクス・並行性 |
125
+ | `effective-kotlin` | Kotlin | *Effective Kotlin* — 安全性・コルーチン・コレクション |
126
+ | `rust` | Rust | *Programming with Rust* + *Rust in Action* — 所有権・エラー・慣用パターン |
127
+
128
+ ```bash
129
+ npx booklib add --rules # すべてのルールをインストール
130
+ npx booklib add --rules=python # 特定言語のルールをインストール
131
+ npx booklib add --hooks # スキル提案フックをインストール
132
+ ```
133
+
134
+ ---
135
+
136
+ ## スキルルーティング
137
+
138
+ どのスキルを使えばいいかわからない場合は、`skill-router` メタスキルが自動的に最適なものを選択します。`@booklib-reviewer` エージェントはこのロジックをエンドツーエンドでラップしています:
139
+
140
+ ```
141
+ ユーザー:"Review my order processing service"
142
+
143
+ → skill-router が選択:
144
+ 主要: domain-driven-design — ドメインモデル設計(集約・値オブジェクト)
145
+ 副次: microservices-patterns — サービス境界とサービス間通信
146
+ ```
147
+
148
+ **ベンチマーク:** [`benchmark/`](./benchmark/) には、標準的な PR レビューと skill-router による 2 スキルへのルーティングの比較が含まれています。skill-router パイプラインは約 47% 多くの固有の問題を発見しました。
149
+
150
+ ---
151
+
152
+ ## 品質評価
153
+
154
+ 各スキルは、スキルあり・なしの両条件で評価が実行され、`claude-haiku-4-5` がモデルと評価者を兼ねます。ベースラインからのデルタ(delta)が主要な指標です。
155
+
156
+ **閾値:** 通過率 ≥ 80% · delta ≥ 20pp · ベースライン < 70%
157
+
158
+ 評価実行:`ANTHROPIC_API_KEY=... npx booklib eval <スキル名>`
159
+
160
+ ---
161
+
162
+ ## リポジトリ構造
163
+
164
+ ```
165
+ booklib-ai/booklib/
166
+ ├── skills/ 22 の書籍ベーススキル(SKILL.md + サンプル + 評価)
167
+ ├── agents/ 8 つの自律レビューエージェント
168
+ ├── commands/ 22 のスラッシュコマンド(スキルごとに 1 つ)
169
+ ├── rules/ 6 つの常時有効な言語規約
170
+ ├── hooks/ Claude Code UserPromptSubmit フック
171
+ └── bin/ CLI(skills.js)
172
+ ```
173
+
174
+ ---
175
+
176
+ ## コントリビューション
177
+
178
+ 掲載すべき書籍を読んでいる方は、PR を送ってください:
179
+
180
+ ```bash
181
+ # 1. 既存スキルをテンプレートとしてコピー
182
+ cp -r skills/clean-code-reviewer skills/your-book-name
183
+
184
+ # 2. SKILL.md、examples/before.md、examples/after.md、evals/evals.json を編集
185
+
186
+ # 3. 検証
187
+ npx booklib check your-book-name
188
+ ```
189
+
190
+ エージェントの追加方法を含む完全なガイドは [CONTRIBUTING.md](./CONTRIBUTING.md) を参照してください。
191
+
192
+ **オープンリクエスト**(`good first issue` タグ付き):[The Pragmatic Programmer](https://github.com/booklib-ai/booklib/issues/2) · [Clean Architecture](https://github.com/booklib-ai/booklib/issues/3) · [A Philosophy of Software Design](https://github.com/booklib-ai/booklib/issues/4) · [Accelerate](https://github.com/booklib-ai/booklib/issues/8) · [もっと見る →](https://github.com/booklib-ai/booklib/issues?q=is%3Aopen+label%3A%22good+first+issue%22)
193
+
194
+ ---
195
+
196
+ ## ライセンス
197
+
198
+ MIT
package/README.ko.md ADDED
@@ -0,0 +1,198 @@
1
+ <p align="center">
2
+ <a href="README.md">English</a> · <a href="README.zh-CN.md">中文</a> · <a href="README.ja.md">日本語</a> · <a href="README.ko.md">한국어</a> · <a href="README.pt-BR.md">Português</a> · <a href="README.uk.md">Українська</a>
3
+ </p>
4
+
5
+ <p align="center">
6
+ <img src="assets/logo.svg" width="100" alt="booklib-ai skills"/>
7
+ </p>
8
+
9
+ <h1 align="center">booklib</h1>
10
+
11
+ <p align="center">
12
+ 정통 서적에 기반한 AI 에이전트 스킬 — Claude Code, Cursor, Copilot, Windsurf 지원.<br/>
13
+ 권위 있는 서적의 전문 지식을 스킬, 커맨드, 에이전트, 규칙으로 패키징.
14
+ </p>
15
+
16
+ <p align="center">
17
+ <a href="https://www.npmjs.com/package/booklib"><img src="https://img.shields.io/npm/v/booklib.svg" alt="npm 버전"/></a>
18
+ <a href="https://www.npmjs.com/package/booklib"><img src="https://img.shields.io/npm/dw/booklib.svg" alt="다운로드 수"/></a>
19
+ <a href="https://github.com/booklib-ai/booklib/stargazers"><img src="https://img.shields.io/github/stars/booklib-ai/booklib?style=flat" alt="스타 수"/></a>
20
+ <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="라이선스"/></a>
21
+ </p>
22
+
23
+ <p align="center">
24
+ <b>스킬 22개</b> &nbsp;·&nbsp; <b>에이전트 8개</b> &nbsp;·&nbsp; <b>규칙 6개</b> &nbsp;·&nbsp; <b>커맨드 22개</b> &nbsp;·&nbsp; <b>프로파일 9개</b>
25
+ </p>
26
+
27
+ ---
28
+
29
+ ## 소개
30
+
31
+ 각 스킬은 특정 프로그래밍 서적의 핵심 실천 방법을 AI 에이전트가 코드에 직접 적용할 수 있는 구조화된 지침으로 패키징합니다. "좋은 프로그래머가 되어라"는 막연한 프롬프트 대신, *Effective Java*, *Designing Data-Intensive Applications*, *Clean Code* 같은 권위 있는 책에서 나온 구체적인 전문 지식을 제공합니다.
32
+
33
+ ```bash
34
+ # 모든 것을 전역으로 설치
35
+ npx booklib add --all --global
36
+
37
+ # 또는 스택에 맞는 것만 설치
38
+ npx booklib add --profile=ts --global # TypeScript
39
+ npx booklib add --profile=python --global # Python
40
+ npx booklib add --profile=rust --global # Rust
41
+ npx booklib add --profile=jvm --global # Java / Kotlin
42
+ ```
43
+
44
+ ## 4가지 계층
45
+
46
+ | 계층 | 수 | 활성화 방식 | 설치 경로 |
47
+ |------|-----|------------|----------|
48
+ | **스킬** | 22 | 자동 — 파일 타입과 작업 컨텍스트에 따라 트리거 | `.claude/skills/` |
49
+ | **커맨드** | 22 | 명시적 — `/effective-python`, `/design-patterns` 등 | `.claude/commands/` |
50
+ | **에이전트** | 8 | 필요 시 — `@python-reviewer`, `@architecture-reviewer` | `.claude/agents/` |
51
+ | **규칙** | 6 | 항상 — 세션마다 자동 로드, 트리거 조건 없음 | `.claude/rules/` |
52
+
53
+ **프로파일**은 언어 또는 도메인별로 4가지 계층을 모두 묶어서 설치합니다:
54
+
55
+ ```bash
56
+ npx booklib add --profile=python # Python 스킬 + 커맨드 + 에이전트 + 규칙
57
+ npx booklib add --profile=ts # TypeScript
58
+ npx booklib add --profile=rust # Rust
59
+ npx booklib add --profile=jvm # Java + Kotlin + Spring Boot
60
+ npx booklib add --profile=architecture # DDD + 마이크로서비스 + 시스템 설계
61
+ npx booklib add --profile=data # 데이터 파이프라인 + DDIA
62
+ npx booklib add --profile=ui # Refactoring UI + 애니메이션 + 데이터 시각화
63
+ npx booklib add --profile=lean # 린 스타트업
64
+ npx booklib add --profile=core # 스킬 라우터 + 클린 코드 — 기본 추천값
65
+ ```
66
+
67
+ ---
68
+
69
+ ## 스킬 목록
70
+
71
+ | 스킬 | 도서 | 저자 |
72
+ |------|------|------|
73
+ | [animation-at-work](./skills/animation-at-work/) | *Animation at Work* | Rachel Nabors |
74
+ | [clean-code-reviewer](./skills/clean-code-reviewer/) | *Clean Code(클린 코드)* | Robert C. Martin |
75
+ | [data-intensive-patterns](./skills/data-intensive-patterns/) | *Designing Data-Intensive Applications(데이터 중심 애플리케이션 설계)* | Martin Kleppmann |
76
+ | [data-pipelines](./skills/data-pipelines/) | *Data Pipelines Pocket Reference* | James Densmore |
77
+ | [design-patterns](./skills/design-patterns/) | *Head First Design Patterns* | Freeman & Robson |
78
+ | [domain-driven-design](./skills/domain-driven-design/) | *Domain-Driven Design(도메인 주도 설계)* | Eric Evans |
79
+ | [effective-java](./skills/effective-java/) | *Effective Java* (3판) | Joshua Bloch |
80
+ | [effective-kotlin](./skills/effective-kotlin/) | *Effective Kotlin* (2판) | Marcin Moskała |
81
+ | [effective-python](./skills/effective-python/) | *Effective Python* (3판) | Brett Slatkin |
82
+ | [effective-typescript](./skills/effective-typescript/) | *Effective TypeScript* (2판) | Dan Vanderkam |
83
+ | [kotlin-in-action](./skills/kotlin-in-action/) | *Kotlin in Action* (2판) | Elizarov & Isakova |
84
+ | [lean-startup](./skills/lean-startup/) | *The Lean Startup(린 스타트업)* | Eric Ries |
85
+ | [microservices-patterns](./skills/microservices-patterns/) | *Microservices Patterns(마이크로서비스 패턴)* | Chris Richardson |
86
+ | [programming-with-rust](./skills/programming-with-rust/) | *Programming with Rust* | Donis Marshall |
87
+ | [refactoring-ui](./skills/refactoring-ui/) | *Refactoring UI* | Wathan & Schoger |
88
+ | [rust-in-action](./skills/rust-in-action/) | *Rust in Action* | Tim McNamara |
89
+ | [skill-router](./skills/skill-router/) | 메타 스킬 — 최적 스킬로 자동 라우팅 | booklib-ai |
90
+ | [spring-boot-in-action](./skills/spring-boot-in-action/) | *Spring Boot in Action* | Craig Walls |
91
+ | [storytelling-with-data](./skills/storytelling-with-data/) | *Storytelling with Data* | Cole Nussbaumer Knaflic |
92
+ | [system-design-interview](./skills/system-design-interview/) | *System Design Interview(가상 면접 사례로 배우는 대규모 시스템 설계 기초)* | Alex Xu |
93
+ | [using-asyncio-python](./skills/using-asyncio-python/) | *Using Asyncio in Python* | Caleb Hattingh |
94
+ | [web-scraping-python](./skills/web-scraping-python/) | *Web Scraping with Python* | Ryan Mitchell |
95
+
96
+ ---
97
+
98
+ ## 에이전트
99
+
100
+ 한 번의 실행으로 여러 스킬을 적용하는 자율 리뷰어입니다. Claude Code에서 `@에이전트명`으로 호출합니다.
101
+
102
+ | 에이전트 | 모델 | 적용 스킬 |
103
+ |----------|------|----------|
104
+ | `@booklib-reviewer` | sonnet | 최적 스킬로 자동 라우팅 — 모를 때 사용 |
105
+ | `@python-reviewer` | sonnet | effective-python · asyncio · web-scraping |
106
+ | `@ts-reviewer` | sonnet | effective-typescript · clean-code-reviewer |
107
+ | `@jvm-reviewer` | sonnet | effective-java · effective-kotlin · kotlin-in-action · spring-boot |
108
+ | `@rust-reviewer` | sonnet | programming-with-rust · rust-in-action |
109
+ | `@architecture-reviewer` | opus | domain-driven-design · microservices-patterns · system-design · data-intensive |
110
+ | `@data-reviewer` | sonnet | data-intensive-patterns · data-pipelines |
111
+ | `@ui-reviewer` | sonnet | refactoring-ui · storytelling-with-data · animation-at-work |
112
+
113
+ ---
114
+
115
+ ## 규칙
116
+
117
+ 항상 활성화되는 코딩 표준 — `.claude/rules/`에 설치되어 트리거 조건 없이 매 세션 자동 로드됩니다.
118
+
119
+ | 규칙 | 언어 | 출처 |
120
+ |------|------|------|
121
+ | `clean-code` | 모든 언어 | *Clean Code* — 네이밍, 함수, 주석, 구조 |
122
+ | `effective-python` | Python | *Effective Python* — Pythonic 스타일, 타입, 에러 처리 |
123
+ | `effective-typescript` | TypeScript | *Effective TypeScript* — 타입, 추론, null 안전성 |
124
+ | `effective-java` | Java | *Effective Java* — 생성, 클래스, 제네릭, 동시성 |
125
+ | `effective-kotlin` | Kotlin | *Effective Kotlin* — 안전성, 코루틴, 컬렉션 |
126
+ | `rust` | Rust | *Programming with Rust* + *Rust in Action* — 소유권, 에러, 관용 패턴 |
127
+
128
+ ```bash
129
+ npx booklib add --rules # 모든 규칙 설치
130
+ npx booklib add --rules=python # 특정 언어 규칙 설치
131
+ npx booklib add --hooks # 스킬 제안 훅 설치
132
+ ```
133
+
134
+ ---
135
+
136
+ ## 스킬 라우팅
137
+
138
+ 어떤 스킬을 써야 할지 모를 때는 `skill-router` 메타 스킬이 자동으로 최적의 스킬을 선택합니다. `@booklib-reviewer` 에이전트는 이 로직을 엔드투엔드로 래핑합니다:
139
+
140
+ ```
141
+ 사용자: "Review my order processing service"
142
+
143
+ → skill-router 선택:
144
+ 주요: domain-driven-design — 도메인 모델 설계 (애그리게이트, 값 객체)
145
+ 보조: microservices-patterns — 서비스 경계 및 서비스 간 통신
146
+ ```
147
+
148
+ **벤치마크:** [`benchmark/`](./benchmark/)에는 일반 PR 리뷰와 skill-router가 두 스킬로 라우팅한 결과의 비교가 포함되어 있습니다. skill-router 파이프라인이 약 47% 더 많은 고유 문제를 발견했습니다.
149
+
150
+ ---
151
+
152
+ ## 품질 평가
153
+
154
+ 각 스킬은 스킬 적용 시와 미적용 시 모두 평가가 실행되며, `claude-haiku-4-5`가 모델과 판정자 역할을 합니다. 베이스라인 대비 델타(delta)가 핵심 지표입니다.
155
+
156
+ **임계값:** 통과율 ≥ 80% · delta ≥ 20pp · 베이스라인 < 70%
157
+
158
+ 평가 실행: `ANTHROPIC_API_KEY=... npx booklib eval <스킬명>`
159
+
160
+ ---
161
+
162
+ ## 저장소 구조
163
+
164
+ ```
165
+ booklib-ai/booklib/
166
+ ├── skills/ 서적 기반 스킬 22개 (SKILL.md + 예제 + 평가)
167
+ ├── agents/ 자율 리뷰 에이전트 8개
168
+ ├── commands/ 슬래시 커맨드 22개 (스킬당 1개)
169
+ ├── rules/ 항상 활성화되는 언어별 규칙 6개
170
+ ├── hooks/ Claude Code UserPromptSubmit 훅
171
+ └── bin/ CLI (skills.js)
172
+ ```
173
+
174
+ ---
175
+
176
+ ## 기여하기
177
+
178
+ 여기에 포함될 만한 책을 읽었다면 PR을 보내주세요:
179
+
180
+ ```bash
181
+ # 1. 기존 스킬을 템플릿으로 복사
182
+ cp -r skills/clean-code-reviewer skills/your-book-name
183
+
184
+ # 2. SKILL.md, examples/before.md, examples/after.md, evals/evals.json 편집
185
+
186
+ # 3. 검증
187
+ npx booklib check your-book-name
188
+ ```
189
+
190
+ 에이전트 추가 방법을 포함한 전체 가이드는 [CONTRIBUTING.md](./CONTRIBUTING.md)를 참조하세요.
191
+
192
+ **오픈 요청** (`good first issue` 태그): [The Pragmatic Programmer](https://github.com/booklib-ai/booklib/issues/2) · [Clean Architecture](https://github.com/booklib-ai/booklib/issues/3) · [A Philosophy of Software Design](https://github.com/booklib-ai/booklib/issues/4) · [Accelerate](https://github.com/booklib-ai/booklib/issues/8) · [더 보기 →](https://github.com/booklib-ai/booklib/issues?q=is%3Aopen+label%3A%22good+first+issue%22)
193
+
194
+ ---
195
+
196
+ ## 라이선스
197
+
198
+ MIT