@booklib/skills 1.3.2 → 1.5.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 (37) hide show
  1. package/AGENTS.md +108 -0
  2. package/CLAUDE.md +58 -0
  3. package/CODE_OF_CONDUCT.md +31 -0
  4. package/CONTRIBUTING.md +13 -0
  5. package/README.md +69 -45
  6. package/SECURITY.md +9 -0
  7. package/assets/logo.svg +36 -0
  8. package/demo.gif +0 -0
  9. package/demo.tape +40 -0
  10. package/docs/index.html +187 -0
  11. package/package.json +2 -2
  12. package/skills/effective-typescript/SKILL.md +166 -0
  13. package/skills/effective-typescript/evals/evals.json +36 -0
  14. package/skills/effective-typescript/examples/after.md +70 -0
  15. package/skills/effective-typescript/examples/before.md +47 -0
  16. package/skills/effective-typescript/references/api_reference.md +118 -0
  17. package/skills/effective-typescript/references/practices-catalog.md +371 -0
  18. package/skills/programming-with-rust/SKILL.md +194 -0
  19. package/skills/programming-with-rust/evals/evals.json +37 -0
  20. package/skills/programming-with-rust/examples/after.md +107 -0
  21. package/skills/programming-with-rust/examples/before.md +59 -0
  22. package/skills/programming-with-rust/references/api_reference.md +152 -0
  23. package/skills/programming-with-rust/references/practices-catalog.md +335 -0
  24. package/skills/rust-in-action/SKILL.md +290 -0
  25. package/skills/rust-in-action/evals/evals.json +38 -0
  26. package/skills/rust-in-action/examples/after.md +156 -0
  27. package/skills/rust-in-action/examples/before.md +56 -0
  28. package/skills/rust-in-action/references/practices-catalog.md +346 -0
  29. package/skills/rust-in-action/scripts/review.py +147 -0
  30. package/skills/skill-router/SKILL.md +16 -13
  31. package/skills/skill-router/references/skill-catalog.md +19 -1
  32. package/skills/spring-boot-in-action/SKILL.md +312 -0
  33. package/skills/spring-boot-in-action/evals/evals.json +39 -0
  34. package/skills/spring-boot-in-action/examples/after.md +185 -0
  35. package/skills/spring-boot-in-action/examples/before.md +84 -0
  36. package/skills/spring-boot-in-action/references/practices-catalog.md +403 -0
  37. package/skills/spring-boot-in-action/scripts/review.py +184 -0
package/AGENTS.md ADDED
@@ -0,0 +1,108 @@
1
+ # Agent Integration
2
+
3
+ How to install and use booklib-ai/skills with different AI coding assistants.
4
+
5
+ ## Claude Code
6
+
7
+ Install all skills globally:
8
+
9
+ ```bash
10
+ npx skills add booklib-ai/skills --all -g
11
+ ```
12
+
13
+ Install a single skill:
14
+
15
+ ```bash
16
+ npx skills add booklib-ai/skills --skill clean-code-reviewer
17
+ ```
18
+
19
+ Skills are placed in `~/.claude/skills/` and available in every project. Claude Code picks them up automatically based on the `description` field in each `SKILL.md`.
20
+
21
+ To invoke a skill explicitly, use a slash command:
22
+
23
+ ```
24
+ /clean-code-reviewer
25
+ ```
26
+
27
+ ## Cursor
28
+
29
+ Install skills into your project:
30
+
31
+ ```bash
32
+ npx skills add booklib-ai/skills --all
33
+ ```
34
+
35
+ Skills are placed in `.claude/skills/` in your project root. Cursor reads these when Agent mode is active.
36
+
37
+ To trigger a skill, reference it by name in your prompt:
38
+
39
+ ```
40
+ Apply the effective-python skill to refactor this module.
41
+ ```
42
+
43
+ ## GitHub Copilot (VS Code)
44
+
45
+ Install skills globally:
46
+
47
+ ```bash
48
+ npx skills add booklib-ai/skills --all -g
49
+ ```
50
+
51
+ In VS Code with Copilot Chat, skills in `~/.claude/skills/` are available as context. Reference them explicitly in chat:
52
+
53
+ ```
54
+ Using the design-patterns skill, review this class for pattern opportunities.
55
+ ```
56
+
57
+ ## Windsurf
58
+
59
+ Install skills into your project:
60
+
61
+ ```bash
62
+ npx skills add booklib-ai/skills --all
63
+ ```
64
+
65
+ Skills are placed in `.claude/skills/`. In Windsurf's Cascade mode, you can reference a skill by name in your instructions or let the `skill-router` meta-skill select the right one automatically.
66
+
67
+ ## skill-router — automatic routing
68
+
69
+ Instead of choosing a skill manually, install the `skill-router` meta-skill and let it pick:
70
+
71
+ ```bash
72
+ npx skills add booklib-ai/skills --skill skill-router -g
73
+ ```
74
+
75
+ Then prefix any task with:
76
+
77
+ ```
78
+ Route this task to the right skill, then apply it: [your request]
79
+ ```
80
+
81
+ The router returns a ranked recommendation (primary + optional secondary) and applies it.
82
+
83
+ ## Manual installation
84
+
85
+ If your agent isn't listed above, copy skills directly:
86
+
87
+ ```bash
88
+ # Single skill
89
+ cp -r skills/effective-kotlin /path/to/project/.claude/skills/
90
+
91
+ # All skills
92
+ cp -r skills/* /path/to/project/.claude/skills/
93
+ ```
94
+
95
+ Any agent that reads `.claude/skills/` will pick them up.
96
+
97
+ ## Supported agents
98
+
99
+ | Agent | Install path | Auto-trigger | Manual trigger |
100
+ |-------|-------------|--------------|----------------|
101
+ | Claude Code | `~/.claude/skills/` or `.claude/skills/` | Yes | `/skill-name` |
102
+ | Cursor | `.claude/skills/` | Partial | Reference by name |
103
+ | GitHub Copilot | `~/.claude/skills/` | No | Reference by name |
104
+ | Windsurf | `.claude/skills/` | Partial | Reference by name |
105
+
106
+ ## Requesting support for a new agent
107
+
108
+ Open an issue titled **"Agent Support: [Agent Name]"** and describe how the agent loads context files. We'll add installation instructions here.
package/CLAUDE.md ADDED
@@ -0,0 +1,58 @@
1
+ # booklib-ai/skills
2
+
3
+ 22 AI agent skills grounded in canonical programming books. Each skill packages expert practices from a specific book into reusable instructions that Claude and other AI agents can apply to code generation, code review, and design decisions.
4
+
5
+ ## Quick Install
6
+
7
+ ```bash
8
+ npx skills add booklib-ai/skills --all -g
9
+ ```
10
+
11
+ ## Available Skills
12
+
13
+ | Skill | Book |
14
+ |-------|------|
15
+ | `animation-at-work` | Animation at Work — Rachel Nabors |
16
+ | `clean-code-reviewer` | Clean Code — Robert C. Martin |
17
+ | `data-intensive-patterns` | Designing Data-Intensive Applications — Martin Kleppmann |
18
+ | `data-pipelines` | Data Pipelines Pocket Reference — James Densmore |
19
+ | `design-patterns` | Head First Design Patterns |
20
+ | `domain-driven-design` | Domain-Driven Design — Eric Evans |
21
+ | `effective-java` | Effective Java — Joshua Bloch |
22
+ | `effective-kotlin` | Effective Kotlin — Marcin Moskała |
23
+ | `effective-python` | Effective Python — Brett Slatkin |
24
+ | `effective-typescript` | Effective TypeScript — Dan Vanderkam |
25
+ | `kotlin-in-action` | Kotlin in Action |
26
+ | `programming-with-rust` | Programming with Rust — Donis Marshall |
27
+ | `rust-in-action` | Rust in Action — Tim McNamara |
28
+ | `spring-boot-in-action` | Spring Boot in Action — Craig Walls |
29
+ | `lean-startup` | The Lean Startup — Eric Ries |
30
+ | `microservices-patterns` | Microservices Patterns — Chris Richardson |
31
+ | `refactoring-ui` | Refactoring UI — Adam Wathan & Steve Schoger |
32
+ | `skill-router` | Meta-skill — routes to the right skill automatically |
33
+ | `storytelling-with-data` | Storytelling with Data — Cole Nussbaumer Knaflic |
34
+ | `system-design-interview` | System Design Interview — Alex Xu |
35
+ | `using-asyncio-python` | Using Asyncio in Python — Caleb Hattingh |
36
+ | `web-scraping-python` | Web Scraping with Python — Ryan Mitchell |
37
+
38
+ ## Project Structure
39
+
40
+ ```
41
+ skills/
42
+ ├── <skill-name>/
43
+ │ ├── SKILL.md # Required — instructions + YAML frontmatter
44
+ │ ├── examples/ # before.md and after.md
45
+ │ ├── references/ # Deep reference material
46
+ │ ├── scripts/ # Executable Python/Bash scripts
47
+ │ └── evals/ # evals.json test cases
48
+ ```
49
+
50
+ ## Contributing
51
+
52
+ See [CONTRIBUTING.md](./CONTRIBUTING.md) for how to add a new skill. Each skill must pass Bronze quality checks at minimum:
53
+
54
+ ```bash
55
+ npx @booklib/skills check <skill-name>
56
+ ```
57
+
58
+ All 22 existing skills are at Platinum (13/13 checks).
@@ -0,0 +1,31 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.
6
+
7
+ ## Our Standards
8
+
9
+ Examples of behavior that contributes to a positive environment:
10
+
11
+ * Demonstrating empathy and kindness toward other people
12
+ * Being respectful of differing opinions, viewpoints, and experiences
13
+ * Giving and gracefully accepting constructive feedback
14
+ * Accepting responsibility and apologizing to those affected by our mistakes
15
+ * Focusing on what is best for the overall community
16
+
17
+ Examples of unacceptable behavior:
18
+
19
+ * The use of sexualized language or imagery, and sexual attention or advances of any kind
20
+ * Trolling, insulting or derogatory comments, and personal or political attacks
21
+ * Public or private harassment
22
+ * Publishing others' private information without explicit permission
23
+ * Other conduct which could reasonably be considered inappropriate in a professional setting
24
+
25
+ ## Enforcement
26
+
27
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting the maintainers directly. All complaints will be reviewed and investigated promptly and fairly.
28
+
29
+ ## Attribution
30
+
31
+ This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1.
package/CONTRIBUTING.md CHANGED
@@ -117,6 +117,19 @@ PR checklist:
117
117
 
118
118
  Open an issue titled **"Skill Request: [Book Name]"** and describe why the book would make a good skill. Community members can then pick it up.
119
119
 
120
+ ## AI disclosure
121
+
122
+ If you used an AI tool to help write or review your contribution, disclose it in your PR description. This is required — not optional.
123
+
124
+ **Acceptable examples:**
125
+ - "Written primarily with Claude Code; I reviewed and tested each section manually."
126
+ - "I used Copilot for boilerplate; the examples and evals are hand-written."
127
+ - "No AI tools used."
128
+
129
+ **Not acceptable:** submitting AI-generated content without reviewing it yourself. Skills are grounded in specific books — the AI can hallucinate citations, misattribute principles, or invent heuristic codes. You are responsible for accuracy.
130
+
131
+ Trivial fixes (typos, formatting) don't need a disclosure.
132
+
120
133
  ## Questions
121
134
 
122
135
  Use [GitHub Discussions](../../discussions) for questions, ideas, and feedback.
package/README.md CHANGED
@@ -1,30 +1,41 @@
1
- # 🧠 Skills
1
+ # Skills
2
2
 
3
- Book knowledge distilled into structured AI skills — each skill packages expert practices from a specific book into a reusable prompt that AI agents can apply to code generation, code review, and design decisions.
3
+ <p align="center">
4
+ <img src="assets/logo.svg" width="120" alt="booklib-ai skills logo"/>
5
+ </p>
6
+
7
+ [![npm version](https://img.shields.io/npm/v/@booklib/skills.svg)](https://www.npmjs.com/package/@booklib/skills)
8
+ [![npm downloads](https://img.shields.io/npm/dw/@booklib/skills.svg)](https://www.npmjs.com/package/@booklib/skills)
9
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
10
+ [![GitHub stars](https://img.shields.io/github/stars/booklib-ai/skills?style=flat)](https://github.com/booklib-ai/skills/stargazers)
11
+ [![Website](https://img.shields.io/badge/website-booklib--ai.github.io%2Fskills-6366f1)](https://booklib-ai.github.io/skills/)
12
+
13
+ Book-grounded AI agent skills — each skill packages expert practices from a canonical programming book into reusable instructions that Claude and other AI agents can apply to code generation, code review, and design decisions.
14
+
15
+ ```bash
16
+ npx skills add booklib-ai/skills
17
+ ```
18
+
19
+ ![Demo](demo.gif)
4
20
 
5
21
  Each skill is a self-contained folder with a `SKILL.md` file containing instructions and metadata that AI agents use to perform specialized tasks.
6
22
 
7
23
  ## Structure
8
24
 
9
25
  ```
10
- skills/
11
- ├── README.md
12
- ├── LICENSE
26
+ booklib-ai/skills (repo root)
13
27
  ├── skills/
14
- │ ├── clean-code-reviewer/ # Code review using Clean Code principles
15
- │ │ ├── SKILL.md
28
+ │ ├── clean-code-reviewer/
29
+ │ │ ├── SKILL.md # Required
30
+ │ │ ├── examples/
31
+ │ │ ├── references/
32
+ │ │ ├── scripts/
16
33
  │ │ └── 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
- │ └── ...
27
- └── ...
34
+ │ └── [skill-name]/ # One folder per book
35
+ └── ...
36
+ ├── README.md
37
+ ├── LICENSE
38
+ └── package.json
28
39
  ```
29
40
 
30
41
  ## Skill Format
@@ -55,17 +66,27 @@ Instructions for the AI agent...
55
66
 
56
67
  ## Installation
57
68
 
58
- ### via npm (recommended)
69
+ ### via skills CLI (recommended)
59
70
 
60
71
  ```bash
61
- # Add a single skill to your current project
62
- npx @booklib/skills add effective-kotlin
72
+ # Install all skills globally
73
+ npx skills add booklib-ai/skills --all -g
74
+
75
+ # Install a specific skill
76
+ npx skills add booklib-ai/skills --skill effective-kotlin
77
+
78
+ # List available skills without installing
79
+ npx skills add booklib-ai/skills --list
80
+ ```
81
+
82
+ ### via npm
63
83
 
64
- # Add all skills to your current project
65
- npx @booklib/skills add --all
84
+ ```bash
85
+ # Install all skills globally
86
+ npx @booklib/skills add --all --global
66
87
 
67
- # Add globally (available in all projects)
68
- npx @booklib/skills add --all --globalcl
88
+ # Install a single skill
89
+ npx @booklib/skills add effective-kotlin
69
90
 
70
91
  # List available skills
71
92
  npx @booklib/skills list
@@ -76,9 +97,8 @@ Skills are installed to `.claude/skills/` in your project (or `~/.claude/skills/
76
97
  ### Manual
77
98
 
78
99
  ```bash
79
- # Clone and copy a skill directly
80
100
  git clone https://github.com/booklib-ai/skills.git
81
- cp -r skills/skills/effective-kotlin /path/to/project/.claude/skills/
101
+ cp -r booklib-ai-skills/skills/effective-kotlin /path/to/project/.claude/skills/
82
102
  ```
83
103
 
84
104
  ## Automatic Skill Routing
@@ -102,24 +122,28 @@ This means skills compose: `skill-router` acts as an orchestrator that picks the
102
122
 
103
123
  | Skill | Description |
104
124
  |-------|-------------|
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 |
125
+ | 🎬 [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 |
126
+ | 🧹 [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) |
127
+ | 🗄️ [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 |
128
+ | 🔀 [data-pipelines](./skills/data-pipelines/) | Data pipeline practices from James Densmore's *Data Pipelines Pocket Reference* — ingestion, streaming, transformation, and orchestration |
129
+ | 🏗️ [design-patterns](./skills/design-patterns/) | Apply and review GoF design patterns from *Head First Design Patterns* — creational, structural, and behavioral patterns |
130
+ | 🧩 [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 |
131
+ | [effective-java](./skills/effective-java/) | Java best practices from Joshua Bloch's *Effective Java* (3rd Edition) — object creation, generics, enums, lambdas, and concurrency |
132
+ | 🛡️ [effective-kotlin](./skills/effective-kotlin/) | Best practices from Marcin Moskała's *Effective Kotlin* (2nd Ed) — safety, readability, reusability, and abstraction |
133
+ | 🐍 [effective-python](./skills/effective-python/) | Python best practices from Brett Slatkin's *Effective Python* (2nd Edition) — Pythonic thinking, functions, classes, concurrency, and testing |
134
+ | 🔷 [effective-typescript](./skills/effective-typescript/) | TypeScript best practices from Dan Vanderkam's *Effective TypeScript*type system, type design, avoiding any, type declarations, and migration |
135
+ | 🦀 [programming-with-rust](./skills/programming-with-rust/) | Rust practices from Donis Marshall's *Programming with Rust* — ownership, borrowing, lifetimes, error handling, traits, and fearless concurrency |
136
+ | ⚙️ [rust-in-action](./skills/rust-in-action/) | Systems programming from Tim McNamara's *Rust in Action* — smart pointers, endianness, memory, file formats, TCP networking, concurrency, and OS fundamentals |
137
+ | 🌱 [spring-boot-in-action](./skills/spring-boot-in-action/) | Spring Boot best practices from Craig Walls' *Spring Boot in Action* auto-configuration, starters, externalized config, profiles, testing with MockMvc, Actuator, and deployment |
138
+ | [kotlin-in-action](./skills/kotlin-in-action/) | Practices from *Kotlin in Action* (2nd Ed) functions, classes, lambdas, nullability, and coroutines |
139
+ | 🚀 [lean-startup](./skills/lean-startup/) | Practices from Eric Ries' *The Lean Startup* — MVP testing, validated learning, Build-Measure-Learn loop, and pivots |
140
+ | 🔧 [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 |
141
+ | 🎨 [refactoring-ui](./skills/refactoring-ui/) | UI design principles from *Refactoring UI* by Adam Wathan & Steve Schoger visual hierarchy, layout, typography, and color |
142
+ | 🗺️ [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 |
143
+ | 📊 [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 |
144
+ | 🏛️ [system-design-interview](./skills/system-design-interview/) | System design principles from Alex Xu's *System Design Interview* — scaling, estimation, and real-world system designs |
145
+ | 🔄 [using-asyncio-python](./skills/using-asyncio-python/) | Asyncio practices from Caleb Hattingh's *Using Asyncio in Python* — coroutines, event loop, tasks, and signal handling |
146
+ | 🕷️ [web-scraping-python](./skills/web-scraping-python/) | Web scraping practices from Ryan Mitchell's *Web Scraping with Python* — BeautifulSoup, Scrapy, and data storage |
123
147
 
124
148
  ## License
125
149
 
package/SECURITY.md ADDED
@@ -0,0 +1,9 @@
1
+ # Security Policy
2
+
3
+ ## Reporting a Vulnerability
4
+
5
+ Skills in this repository are markdown instruction files — they contain no executable code that runs on install. However, if you discover a skill that contains malicious instructions or attempts to exfiltrate data, please report it responsibly.
6
+
7
+ **Do not open a public issue.** Instead, report security concerns via [GitHub's private vulnerability reporting](https://github.com/booklib-ai/skills/security/advisories/new).
8
+
9
+ We will respond within 48 hours and issue a fix promptly.
@@ -0,0 +1,36 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" width="400" height="400">
2
+ <!-- Background -->
3
+ <rect width="400" height="400" rx="72" fill="#0d1117"/>
4
+
5
+ <!-- Left book page -->
6
+ <path d="M88 120 L88 300 Q88 316 104 316 L192 316 L192 104 Q160 88 112 92 Q88 96 88 120Z" fill="#1f6feb"/>
7
+
8
+ <!-- Right book page -->
9
+ <path d="M208 104 L208 316 L296 316 Q312 316 312 300 L312 120 Q312 96 288 92 Q240 88 208 104Z" fill="#2d84f5"/>
10
+
11
+ <!-- Spine -->
12
+ <rect x="192" y="100" width="16" height="216" fill="#58a6ff"/>
13
+
14
+ <!-- Left page lines -->
15
+ <rect x="112" y="155" width="64" height="8" rx="4" fill="white" opacity="0.55"/>
16
+ <rect x="112" y="175" width="52" height="8" rx="4" fill="white" opacity="0.40"/>
17
+ <rect x="112" y="195" width="68" height="8" rx="4" fill="white" opacity="0.55"/>
18
+ <rect x="112" y="215" width="44" height="8" rx="4" fill="white" opacity="0.35"/>
19
+ <rect x="112" y="235" width="60" height="8" rx="4" fill="white" opacity="0.50"/>
20
+ <rect x="112" y="255" width="48" height="8" rx="4" fill="white" opacity="0.35"/>
21
+
22
+ <!-- Right page lines -->
23
+ <rect x="224" y="155" width="64" height="8" rx="4" fill="white" opacity="0.55"/>
24
+ <rect x="224" y="175" width="52" height="8" rx="4" fill="white" opacity="0.40"/>
25
+ <rect x="224" y="195" width="68" height="8" rx="4" fill="white" opacity="0.55"/>
26
+ <rect x="224" y="215" width="44" height="8" rx="4" fill="white" opacity="0.35"/>
27
+ <rect x="224" y="235" width="60" height="8" rx="4" fill="white" opacity="0.50"/>
28
+ <rect x="224" y="255" width="48" height="8" rx="4" fill="white" opacity="0.35"/>
29
+
30
+ <!-- AI sparkle (4-pointed star) -->
31
+ <path d="M316 82 L322 66 L328 82 L344 88 L328 94 L322 110 L316 94 L300 88 Z" fill="#f0883e"/>
32
+
33
+ <!-- Accent dots -->
34
+ <circle cx="348" cy="60" r="5" fill="#f0883e" opacity="0.6"/>
35
+ <circle cx="296" cy="58" r="4" fill="#f0883e" opacity="0.4"/>
36
+ </svg>
package/demo.gif ADDED
Binary file
package/demo.tape ADDED
@@ -0,0 +1,40 @@
1
+ Output demo.gif
2
+
3
+ Set Shell "bash"
4
+ Set FontSize 15
5
+ Set Width 1100
6
+ Set Height 650
7
+ Set Theme "Dracula"
8
+ Set Padding 24
9
+ Set Framerate 30
10
+ Set PlaybackSpeed 1
11
+ Env PATH "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin"
12
+
13
+ Hide
14
+ Type "cd /Users/fvst/other/fp/skills && clear"
15
+ Enter
16
+ Sleep 500ms
17
+ Show
18
+
19
+ Sleep 500ms
20
+
21
+ Type "node bin/skills.js list"
22
+ Sleep 300ms
23
+ Enter
24
+ Sleep 5s
25
+
26
+ Sleep 1500ms
27
+
28
+ Type "node bin/skills.js info clean-code-reviewer"
29
+ Sleep 300ms
30
+ Enter
31
+ Sleep 3s
32
+
33
+ Sleep 1500ms
34
+
35
+ Type "node bin/skills.js demo clean-code-reviewer"
36
+ Sleep 300ms
37
+ Enter
38
+ Sleep 5s
39
+
40
+ Sleep 3s