@booklib/skills 1.3.0 → 1.3.2

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 (176) hide show
  1. package/CONTRIBUTING.md +2 -2
  2. package/README.md +35 -33
  3. package/bin/skills.js +1 -1
  4. package/package.json +11 -4
  5. /package/{animation-at-work → skills/animation-at-work}/SKILL.md +0 -0
  6. /package/{animation-at-work → skills/animation-at-work}/assets/example_asset.txt +0 -0
  7. /package/{animation-at-work → skills/animation-at-work}/evals/evals.json +0 -0
  8. /package/{animation-at-work → skills/animation-at-work}/examples/after.md +0 -0
  9. /package/{animation-at-work → skills/animation-at-work}/examples/before.md +0 -0
  10. /package/{animation-at-work → skills/animation-at-work}/references/api_reference.md +0 -0
  11. /package/{animation-at-work → skills/animation-at-work}/references/review-checklist.md +0 -0
  12. /package/{animation-at-work → skills/animation-at-work}/scripts/audit_animations.py +0 -0
  13. /package/{animation-at-work → skills/animation-at-work}/scripts/example.py +0 -0
  14. /package/{clean-code-reviewer → skills/clean-code-reviewer}/SKILL.md +0 -0
  15. /package/{clean-code-reviewer → skills/clean-code-reviewer}/evals/evals.json +0 -0
  16. /package/{clean-code-reviewer → skills/clean-code-reviewer}/examples/after.md +0 -0
  17. /package/{clean-code-reviewer → skills/clean-code-reviewer}/examples/before.md +0 -0
  18. /package/{clean-code-reviewer → skills/clean-code-reviewer}/references/api_reference.md +0 -0
  19. /package/{clean-code-reviewer → skills/clean-code-reviewer}/references/practices-catalog.md +0 -0
  20. /package/{clean-code-reviewer → skills/clean-code-reviewer}/references/review-checklist.md +0 -0
  21. /package/{clean-code-reviewer → skills/clean-code-reviewer}/scripts/pre-review.py +0 -0
  22. /package/{data-intensive-patterns → skills/data-intensive-patterns}/SKILL.md +0 -0
  23. /package/{data-intensive-patterns → skills/data-intensive-patterns}/assets/example_asset.txt +0 -0
  24. /package/{data-intensive-patterns → skills/data-intensive-patterns}/evals/evals.json +0 -0
  25. /package/{data-intensive-patterns → skills/data-intensive-patterns}/examples/after.md +0 -0
  26. /package/{data-intensive-patterns → skills/data-intensive-patterns}/examples/before.md +0 -0
  27. /package/{data-intensive-patterns → skills/data-intensive-patterns}/references/api_reference.md +0 -0
  28. /package/{data-intensive-patterns → skills/data-intensive-patterns}/references/patterns-catalog.md +0 -0
  29. /package/{data-intensive-patterns → skills/data-intensive-patterns}/references/review-checklist.md +0 -0
  30. /package/{data-intensive-patterns → skills/data-intensive-patterns}/scripts/adr.py +0 -0
  31. /package/{data-intensive-patterns → skills/data-intensive-patterns}/scripts/example.py +0 -0
  32. /package/{data-pipelines → skills/data-pipelines}/SKILL.md +0 -0
  33. /package/{data-pipelines → skills/data-pipelines}/assets/example_asset.txt +0 -0
  34. /package/{data-pipelines → skills/data-pipelines}/evals/evals.json +0 -0
  35. /package/{data-pipelines → skills/data-pipelines}/examples/after.md +0 -0
  36. /package/{data-pipelines → skills/data-pipelines}/examples/before.md +0 -0
  37. /package/{data-pipelines → skills/data-pipelines}/references/api_reference.md +0 -0
  38. /package/{data-pipelines → skills/data-pipelines}/references/review-checklist.md +0 -0
  39. /package/{data-pipelines → skills/data-pipelines}/scripts/example.py +0 -0
  40. /package/{data-pipelines → skills/data-pipelines}/scripts/new_pipeline.py +0 -0
  41. /package/{design-patterns → skills/design-patterns}/SKILL.md +0 -0
  42. /package/{design-patterns → skills/design-patterns}/assets/example_asset.txt +0 -0
  43. /package/{design-patterns → skills/design-patterns}/evals/evals.json +0 -0
  44. /package/{design-patterns → skills/design-patterns}/examples/after.md +0 -0
  45. /package/{design-patterns → skills/design-patterns}/examples/before.md +0 -0
  46. /package/{design-patterns → skills/design-patterns}/references/api_reference.md +0 -0
  47. /package/{design-patterns → skills/design-patterns}/references/patterns-catalog.md +0 -0
  48. /package/{design-patterns → skills/design-patterns}/references/review-checklist.md +0 -0
  49. /package/{design-patterns → skills/design-patterns}/scripts/example.py +0 -0
  50. /package/{design-patterns → skills/design-patterns}/scripts/scaffold.py +0 -0
  51. /package/{domain-driven-design → skills/domain-driven-design}/SKILL.md +0 -0
  52. /package/{domain-driven-design → skills/domain-driven-design}/assets/example_asset.txt +0 -0
  53. /package/{domain-driven-design → skills/domain-driven-design}/evals/evals.json +0 -0
  54. /package/{domain-driven-design → skills/domain-driven-design}/examples/after.md +0 -0
  55. /package/{domain-driven-design → skills/domain-driven-design}/examples/before.md +0 -0
  56. /package/{domain-driven-design → skills/domain-driven-design}/references/api_reference.md +0 -0
  57. /package/{domain-driven-design → skills/domain-driven-design}/references/patterns-catalog.md +0 -0
  58. /package/{domain-driven-design → skills/domain-driven-design}/references/review-checklist.md +0 -0
  59. /package/{domain-driven-design → skills/domain-driven-design}/scripts/example.py +0 -0
  60. /package/{domain-driven-design → skills/domain-driven-design}/scripts/scaffold.py +0 -0
  61. /package/{effective-java → skills/effective-java}/SKILL.md +0 -0
  62. /package/{effective-java → skills/effective-java}/assets/example_asset.txt +0 -0
  63. /package/{effective-java → skills/effective-java}/evals/evals.json +0 -0
  64. /package/{effective-java → skills/effective-java}/examples/after.md +0 -0
  65. /package/{effective-java → skills/effective-java}/examples/before.md +0 -0
  66. /package/{effective-java → skills/effective-java}/references/api_reference.md +0 -0
  67. /package/{effective-java → skills/effective-java}/references/items-catalog.md +0 -0
  68. /package/{effective-java → skills/effective-java}/references/review-checklist.md +0 -0
  69. /package/{effective-java → skills/effective-java}/scripts/checkstyle_setup.py +0 -0
  70. /package/{effective-java → skills/effective-java}/scripts/example.py +0 -0
  71. /package/{effective-kotlin → skills/effective-kotlin}/SKILL.md +0 -0
  72. /package/{effective-kotlin → skills/effective-kotlin}/assets/example_asset.txt +0 -0
  73. /package/{effective-kotlin → skills/effective-kotlin}/evals/evals.json +0 -0
  74. /package/{effective-kotlin → skills/effective-kotlin}/examples/after.md +0 -0
  75. /package/{effective-kotlin → skills/effective-kotlin}/examples/before.md +0 -0
  76. /package/{effective-kotlin → skills/effective-kotlin}/references/api_reference.md +0 -0
  77. /package/{effective-kotlin → skills/effective-kotlin}/references/practices-catalog.md +0 -0
  78. /package/{effective-kotlin → skills/effective-kotlin}/references/review-checklist.md +0 -0
  79. /package/{effective-kotlin → skills/effective-kotlin}/scripts/example.py +0 -0
  80. /package/{effective-python → skills/effective-python}/SKILL.md +0 -0
  81. /package/{effective-python → skills/effective-python}/evals/evals.json +0 -0
  82. /package/{effective-python → skills/effective-python}/examples/after.md +0 -0
  83. /package/{effective-python → skills/effective-python}/examples/before.md +0 -0
  84. /package/{effective-python → skills/effective-python}/ref-01-pythonic-thinking.md +0 -0
  85. /package/{effective-python → skills/effective-python}/ref-02-lists-and-dicts.md +0 -0
  86. /package/{effective-python → skills/effective-python}/ref-03-functions.md +0 -0
  87. /package/{effective-python → skills/effective-python}/ref-04-comprehensions-generators.md +0 -0
  88. /package/{effective-python → skills/effective-python}/ref-05-classes-interfaces.md +0 -0
  89. /package/{effective-python → skills/effective-python}/ref-06-metaclasses-attributes.md +0 -0
  90. /package/{effective-python → skills/effective-python}/ref-07-concurrency.md +0 -0
  91. /package/{effective-python → skills/effective-python}/ref-08-robustness-performance.md +0 -0
  92. /package/{effective-python → skills/effective-python}/ref-09-testing-debugging.md +0 -0
  93. /package/{effective-python → skills/effective-python}/ref-10-collaboration.md +0 -0
  94. /package/{effective-python → skills/effective-python}/references/api_reference.md +0 -0
  95. /package/{effective-python → skills/effective-python}/references/practices-catalog.md +0 -0
  96. /package/{effective-python → skills/effective-python}/references/review-checklist.md +0 -0
  97. /package/{effective-python → skills/effective-python}/scripts/lint.py +0 -0
  98. /package/{kotlin-in-action → skills/kotlin-in-action}/SKILL.md +0 -0
  99. /package/{kotlin-in-action → skills/kotlin-in-action}/assets/example_asset.txt +0 -0
  100. /package/{kotlin-in-action → skills/kotlin-in-action}/evals/evals.json +0 -0
  101. /package/{kotlin-in-action → skills/kotlin-in-action}/examples/after.md +0 -0
  102. /package/{kotlin-in-action → skills/kotlin-in-action}/examples/before.md +0 -0
  103. /package/{kotlin-in-action → skills/kotlin-in-action}/references/api_reference.md +0 -0
  104. /package/{kotlin-in-action → skills/kotlin-in-action}/references/practices-catalog.md +0 -0
  105. /package/{kotlin-in-action → skills/kotlin-in-action}/references/review-checklist.md +0 -0
  106. /package/{kotlin-in-action → skills/kotlin-in-action}/scripts/example.py +0 -0
  107. /package/{kotlin-in-action → skills/kotlin-in-action}/scripts/setup_detekt.py +0 -0
  108. /package/{lean-startup → skills/lean-startup}/SKILL.md +0 -0
  109. /package/{lean-startup → skills/lean-startup}/assets/example_asset.txt +0 -0
  110. /package/{lean-startup → skills/lean-startup}/evals/evals.json +0 -0
  111. /package/{lean-startup → skills/lean-startup}/examples/after.md +0 -0
  112. /package/{lean-startup → skills/lean-startup}/examples/before.md +0 -0
  113. /package/{lean-startup → skills/lean-startup}/references/api_reference.md +0 -0
  114. /package/{lean-startup → skills/lean-startup}/references/review-checklist.md +0 -0
  115. /package/{lean-startup → skills/lean-startup}/scripts/example.py +0 -0
  116. /package/{lean-startup → skills/lean-startup}/scripts/new_experiment.py +0 -0
  117. /package/{microservices-patterns → skills/microservices-patterns}/SKILL.md +0 -0
  118. /package/{microservices-patterns → skills/microservices-patterns}/evals/evals.json +0 -0
  119. /package/{microservices-patterns → skills/microservices-patterns}/examples/after.md +0 -0
  120. /package/{microservices-patterns → skills/microservices-patterns}/examples/before.md +0 -0
  121. /package/{microservices-patterns → skills/microservices-patterns}/references/patterns-catalog.md +0 -0
  122. /package/{microservices-patterns → skills/microservices-patterns}/references/review-checklist.md +0 -0
  123. /package/{microservices-patterns → skills/microservices-patterns}/scripts/new_service.py +0 -0
  124. /package/{refactoring-ui → skills/refactoring-ui}/SKILL.md +0 -0
  125. /package/{refactoring-ui → skills/refactoring-ui}/assets/example_asset.txt +0 -0
  126. /package/{refactoring-ui → skills/refactoring-ui}/evals/evals.json +0 -0
  127. /package/{refactoring-ui → skills/refactoring-ui}/examples/after.md +0 -0
  128. /package/{refactoring-ui → skills/refactoring-ui}/examples/before.md +0 -0
  129. /package/{refactoring-ui → skills/refactoring-ui}/references/api_reference.md +0 -0
  130. /package/{refactoring-ui → skills/refactoring-ui}/references/review-checklist.md +0 -0
  131. /package/{refactoring-ui → skills/refactoring-ui}/scripts/audit_css.py +0 -0
  132. /package/{refactoring-ui → skills/refactoring-ui}/scripts/example.py +0 -0
  133. /package/{skill-router → skills/skill-router}/SKILL.md +0 -0
  134. /package/{skill-router → skills/skill-router}/evals/evals.json +0 -0
  135. /package/{skill-router → skills/skill-router}/examples/after.md +0 -0
  136. /package/{skill-router → skills/skill-router}/examples/before.md +0 -0
  137. /package/{skill-router → skills/skill-router}/references/api_reference.md +0 -0
  138. /package/{skill-router → skills/skill-router}/references/routing-heuristics.md +0 -0
  139. /package/{skill-router → skills/skill-router}/references/skill-catalog.md +0 -0
  140. /package/{skill-router → skills/skill-router}/scripts/route.py +0 -0
  141. /package/{storytelling-with-data → skills/storytelling-with-data}/SKILL.md +0 -0
  142. /package/{storytelling-with-data → skills/storytelling-with-data}/assets/example_asset.txt +0 -0
  143. /package/{storytelling-with-data → skills/storytelling-with-data}/evals/evals.json +0 -0
  144. /package/{storytelling-with-data → skills/storytelling-with-data}/examples/after.md +0 -0
  145. /package/{storytelling-with-data → skills/storytelling-with-data}/examples/before.md +0 -0
  146. /package/{storytelling-with-data → skills/storytelling-with-data}/references/api_reference.md +0 -0
  147. /package/{storytelling-with-data → skills/storytelling-with-data}/references/review-checklist.md +0 -0
  148. /package/{storytelling-with-data → skills/storytelling-with-data}/scripts/chart_review.py +0 -0
  149. /package/{storytelling-with-data → skills/storytelling-with-data}/scripts/example.py +0 -0
  150. /package/{system-design-interview → skills/system-design-interview}/SKILL.md +0 -0
  151. /package/{system-design-interview → skills/system-design-interview}/assets/example_asset.txt +0 -0
  152. /package/{system-design-interview → skills/system-design-interview}/evals/evals.json +0 -0
  153. /package/{system-design-interview → skills/system-design-interview}/examples/after.md +0 -0
  154. /package/{system-design-interview → skills/system-design-interview}/examples/before.md +0 -0
  155. /package/{system-design-interview → skills/system-design-interview}/references/api_reference.md +0 -0
  156. /package/{system-design-interview → skills/system-design-interview}/references/review-checklist.md +0 -0
  157. /package/{system-design-interview → skills/system-design-interview}/scripts/example.py +0 -0
  158. /package/{system-design-interview → skills/system-design-interview}/scripts/new_design.py +0 -0
  159. /package/{using-asyncio-python → skills/using-asyncio-python}/SKILL.md +0 -0
  160. /package/{using-asyncio-python → skills/using-asyncio-python}/assets/example_asset.txt +0 -0
  161. /package/{using-asyncio-python → skills/using-asyncio-python}/evals/evals.json +0 -0
  162. /package/{using-asyncio-python → skills/using-asyncio-python}/examples/after.md +0 -0
  163. /package/{using-asyncio-python → skills/using-asyncio-python}/examples/before.md +0 -0
  164. /package/{using-asyncio-python → skills/using-asyncio-python}/references/api_reference.md +0 -0
  165. /package/{using-asyncio-python → skills/using-asyncio-python}/references/review-checklist.md +0 -0
  166. /package/{using-asyncio-python → skills/using-asyncio-python}/scripts/check_blocking.py +0 -0
  167. /package/{using-asyncio-python → skills/using-asyncio-python}/scripts/example.py +0 -0
  168. /package/{web-scraping-python → skills/web-scraping-python}/SKILL.md +0 -0
  169. /package/{web-scraping-python → skills/web-scraping-python}/assets/example_asset.txt +0 -0
  170. /package/{web-scraping-python → skills/web-scraping-python}/evals/evals.json +0 -0
  171. /package/{web-scraping-python → skills/web-scraping-python}/examples/after.md +0 -0
  172. /package/{web-scraping-python → skills/web-scraping-python}/examples/before.md +0 -0
  173. /package/{web-scraping-python → skills/web-scraping-python}/references/api_reference.md +0 -0
  174. /package/{web-scraping-python → skills/web-scraping-python}/references/review-checklist.md +0 -0
  175. /package/{web-scraping-python → skills/web-scraping-python}/scripts/example.py +0 -0
  176. /package/{web-scraping-python → skills/web-scraping-python}/scripts/new_scraper.py +0 -0
package/CONTRIBUTING.md CHANGED
@@ -14,7 +14,7 @@ A skill is worth adding when the source book:
14
14
  ### 1. Create the folder
15
15
 
16
16
  ```
17
- skill-name/
17
+ skills/skill-name/
18
18
  ├── SKILL.md # Required
19
19
  ├── examples/
20
20
  │ ├── before.md # Code or artifact before applying the skill
@@ -100,7 +100,7 @@ Aim for 3–5 evals per skill covering:
100
100
  ```bash
101
101
  git checkout -b skill/book-name
102
102
  # add your skill folder
103
- git add skill-name/
103
+ git add skills/skill-name/
104
104
  git commit -m "feat: add skill-name skill"
105
105
  gh pr create --title "feat: add skill-name" --body "..."
106
106
  ```
package/README.md CHANGED
@@ -10,18 +10,20 @@ Each skill is a self-contained folder with a `SKILL.md` file containing instruct
10
10
  skills/
11
11
  ├── README.md
12
12
  ├── LICENSE
13
- ├── clean-code-reviewer/ # Code review using Clean Code principles
14
- │ ├── SKILL.md
15
- └── evals/
16
- └── evals.json
17
- ├── [future-skill]/
18
- │ ├── SKILL.md
19
- │ ├── scripts/ # Executable code (Python/Bash)
20
- │ ├── references/ # Documentation loaded into context as needed
21
- │ ├── assets/ # Templates, icons, fonts
22
- └── evals/ # Test cases for the skill
23
- ├── evals.json
24
- └── files/ # Input files for evals
13
+ ├── skills/
14
+ │ ├── clean-code-reviewer/ # Code review using Clean Code principles
15
+ │ ├── SKILL.md
16
+ └── evals/
17
+ │ │ └── evals.json
18
+ │ ├── [future-skill]/
19
+ ├── SKILL.md
20
+ ├── scripts/ # Executable code (Python/Bash)
21
+ ├── references/ # Documentation loaded into context as needed
22
+ │ ├── assets/ # Templates, icons, fonts
23
+ │ └── evals/ # Test cases for the skill
24
+ ├── evals.json
25
+ │ │ └── files/ # Input files for evals
26
+ │ └── ...
25
27
  └── ...
26
28
  ```
27
29
 
@@ -75,13 +77,13 @@ Skills are installed to `.claude/skills/` in your project (or `~/.claude/skills/
75
77
 
76
78
  ```bash
77
79
  # Clone and copy a skill directly
78
- git clone https://github.com/ZLStas/skills.git
79
- cp -r skills/effective-kotlin /path/to/project/.claude/skills/
80
+ git clone https://github.com/booklib-ai/skills.git
81
+ cp -r skills/skills/effective-kotlin /path/to/project/.claude/skills/
80
82
  ```
81
83
 
82
84
  ## Automatic Skill Routing
83
85
 
84
- You don't need to know which skill to apply — the **[skill-router](./skill-router/)** meta-skill does it for you.
86
+ You don't need to know which skill to apply — the **[skill-router](./skills/skill-router/)** meta-skill does it for you.
85
87
 
86
88
  When an AI agent receives a task, it can invoke `skill-router` first to identify the 1–2 most relevant skills based on the file, language, domain, and work type. The router then returns a ranked recommendation with rationale, so the right expertise is applied automatically.
87
89
 
@@ -100,24 +102,24 @@ This means skills compose: `skill-router` acts as an orchestrator that picks the
100
102
 
101
103
  | Skill | Description |
102
104
  |-------|-------------|
103
- | [animation-at-work](./animation-at-work/) | Apply web animation principles from Rachel Nabors' *Animation at Work* — human perception of motion, 12 principles of animation, and performance |
104
- | [clean-code-reviewer](./clean-code-reviewer/) | Reviews code against Robert C. Martin's *Clean Code* principles with heuristic codes (C1–C5, G1–G36, N1–N7, T1–T9) |
105
- | [data-intensive-patterns](./data-intensive-patterns/) | Patterns for reliable, scalable, and maintainable systems from Martin Kleppmann's *Designing Data-Intensive Applications* — storage engines, replication, partitioning, and transactions |
106
- | [data-pipelines](./data-pipelines/) | Data pipeline practices from James Densmore's *Data Pipelines Pocket Reference* — ingestion, streaming, transformation, and orchestration |
107
- | [design-patterns](./design-patterns/) | Apply and review GoF design patterns from *Head First Design Patterns* — creational, structural, and behavioral patterns |
108
- | [domain-driven-design](./domain-driven-design/) | Design and review software using patterns from Eric Evans' *Domain-Driven Design* — tactical and strategic patterns, and Ubiquitous Language |
109
- | [effective-python](./effective-python/) | Python best practices from Brett Slatkin's *Effective Python* (2nd Edition) — Pythonic thinking, functions, classes, concurrency, and testing |
110
- | [effective-java](./effective-java/) | Java best practices from Joshua Bloch's *Effective Java* (3rd Edition) — object creation, generics, enums, lambdas, and concurrency |
111
- | [effective-kotlin](./effective-kotlin/) | Best practices from Marcin Moskała's *Effective Kotlin* (2nd Ed) — safety, readability, reusability, and abstraction |
112
- | [kotlin-in-action](./kotlin-in-action/) | Practices from *Kotlin in Action* (2nd Ed) — functions, classes, lambdas, nullability, and coroutines |
113
- | [lean-startup](./lean-startup/) | Practices from Eric Ries' *The Lean Startup* — MVP testing, validated learning, Build-Measure-Learn loop, and pivots |
114
- | [microservices-patterns](./microservices-patterns/) | Expert guidance on microservices patterns from Chris Richardson's *Microservices Patterns* — decomposition, sagas, API gateways, event sourcing, CQRS, and service mesh |
115
- | [refactoring-ui](./refactoring-ui/) | UI design principles from *Refactoring UI* by Adam Wathan & Steve Schoger — visual hierarchy, layout, typography, and color |
116
- | [skill-router](./skill-router/) | **Meta-skill.** Automatically selects the 1–2 most relevant skills for a given file, PR, or task — routes by language, domain, and work type with conflict resolution. Use this when the right skill isn't obvious, or let the AI invoke it automatically before applying any skill |
117
- | [storytelling-with-data](./storytelling-with-data/) | Data visualization and storytelling from Cole Nussbaumer Knaflic's *Storytelling with Data* — effective visuals, decluttering, and narrative structure |
118
- | [system-design-interview](./system-design-interview/) | System design principles from Alex Xu's *System Design Interview* — scaling, estimation, and real-world system designs |
119
- | [using-asyncio-python](./using-asyncio-python/) | Asyncio practices from Caleb Hattingh's *Using Asyncio in Python* — coroutines, event loop, tasks, and signal handling |
120
- | [web-scraping-python](./web-scraping-python/) | Web scraping practices from Ryan Mitchell's *Web Scraping with Python* — BeautifulSoup, Scrapy, and data storage |
105
+ | [animation-at-work](./skills/animation-at-work/) | Apply web animation principles from Rachel Nabors' *Animation at Work* — human perception of motion, 12 principles of animation, and performance |
106
+ | [clean-code-reviewer](./skills/clean-code-reviewer/) | Reviews code against Robert C. Martin's *Clean Code* principles with heuristic codes (C1–C5, G1–G36, N1–N7, T1–T9) |
107
+ | [data-intensive-patterns](./skills/data-intensive-patterns/) | Patterns for reliable, scalable, and maintainable systems from Martin Kleppmann's *Designing Data-Intensive Applications* — storage engines, replication, partitioning, and transactions |
108
+ | [data-pipelines](./skills/data-pipelines/) | Data pipeline practices from James Densmore's *Data Pipelines Pocket Reference* — ingestion, streaming, transformation, and orchestration |
109
+ | [design-patterns](./skills/design-patterns/) | Apply and review GoF design patterns from *Head First Design Patterns* — creational, structural, and behavioral patterns |
110
+ | [domain-driven-design](./skills/domain-driven-design/) | Design and review software using patterns from Eric Evans' *Domain-Driven Design* — tactical and strategic patterns, and Ubiquitous Language |
111
+ | [effective-python](./skills/effective-python/) | Python best practices from Brett Slatkin's *Effective Python* (2nd Edition) — Pythonic thinking, functions, classes, concurrency, and testing |
112
+ | [effective-java](./skills/effective-java/) | Java best practices from Joshua Bloch's *Effective Java* (3rd Edition) — object creation, generics, enums, lambdas, and concurrency |
113
+ | [effective-kotlin](./skills/effective-kotlin/) | Best practices from Marcin Moskała's *Effective Kotlin* (2nd Ed) — safety, readability, reusability, and abstraction |
114
+ | [kotlin-in-action](./skills/kotlin-in-action/) | Practices from *Kotlin in Action* (2nd Ed) — functions, classes, lambdas, nullability, and coroutines |
115
+ | [lean-startup](./skills/lean-startup/) | Practices from Eric Ries' *The Lean Startup* — MVP testing, validated learning, Build-Measure-Learn loop, and pivots |
116
+ | [microservices-patterns](./skills/microservices-patterns/) | Expert guidance on microservices patterns from Chris Richardson's *Microservices Patterns* — decomposition, sagas, API gateways, event sourcing, CQRS, and service mesh |
117
+ | [refactoring-ui](./skills/refactoring-ui/) | UI design principles from *Refactoring UI* by Adam Wathan & Steve Schoger — visual hierarchy, layout, typography, and color |
118
+ | [skill-router](./skills/skill-router/) | **Meta-skill.** Automatically selects the 1–2 most relevant skills for a given file, PR, or task — routes by language, domain, and work type with conflict resolution. Use this when the right skill isn't obvious, or let the AI invoke it automatically before applying any skill |
119
+ | [storytelling-with-data](./skills/storytelling-with-data/) | Data visualization and storytelling from Cole Nussbaumer Knaflic's *Storytelling with Data* — effective visuals, decluttering, and narrative structure |
120
+ | [system-design-interview](./skills/system-design-interview/) | System design principles from Alex Xu's *System Design Interview* — scaling, estimation, and real-world system designs |
121
+ | [using-asyncio-python](./skills/using-asyncio-python/) | Asyncio practices from Caleb Hattingh's *Using Asyncio in Python* — coroutines, event loop, tasks, and signal handling |
122
+ | [web-scraping-python](./skills/web-scraping-python/) | Web scraping practices from Ryan Mitchell's *Web Scraping with Python* — BeautifulSoup, Scrapy, and data storage |
121
123
 
122
124
  ## License
123
125
 
package/bin/skills.js CHANGED
@@ -7,7 +7,7 @@ const https = require('https');
7
7
 
8
8
  const args = process.argv.slice(2);
9
9
  const command = args[0];
10
- const skillsRoot = path.join(__dirname, '..');
10
+ const skillsRoot = path.join(__dirname, '..', 'skills');
11
11
 
12
12
  // ─── ANSI helpers ─────────────────────────────────────────────────────────────
13
13
  const c = {
package/package.json CHANGED
@@ -1,15 +1,22 @@
1
1
  {
2
2
  "name": "@booklib/skills",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "Book knowledge distilled into structured AI skills for Claude Code and other AI assistants",
5
5
  "bin": {
6
- "skills": "./bin/skills.js"
6
+ "skills": "bin/skills.js"
7
7
  },
8
- "keywords": ["claude", "claude-code", "ai", "skills", "agent-skills"],
8
+ "keywords": [
9
+ "claude",
10
+ "claude-code",
11
+ "ai",
12
+ "skills",
13
+ "agent-skills"
14
+ ],
9
15
  "license": "MIT",
16
+ "homepage": "https://github.com/booklib-ai/skills#readme",
10
17
  "repository": {
11
18
  "type": "git",
12
- "url": "https://github.com/agent-skills/skills.git"
19
+ "url": "git+https://github.com/booklib-ai/skills.git"
13
20
  },
14
21
  "engines": {
15
22
  "node": ">=16"
File without changes
File without changes