better-icons 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "name": "better-icons",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "MCP server for searching and retrieving icons from 200+ icon libraries powered by Iconify",
5
5
  "author": "bekacru",
6
6
  "license": "MIT",
7
7
  "type": "module",
8
- "main": "dist/cli.js",
8
+ "main": "dist/index.js",
9
9
  "bin": {
10
- "better-icons": "./dist/cli.js"
10
+ "better-icons": "./dist/index.js"
11
11
  },
12
12
  "files": [
13
- "dist",
14
- "better-icons"
13
+ "dist"
15
14
  ],
16
15
  "scripts": {
17
- "build": "bun build ./cli.ts --outdir dist --target node --minify",
18
- "start": "bun run index.ts",
16
+ "build": "bun build ./src/index.ts --outdir dist --target node --minify",
17
+ "dev": "bun run src/index.ts",
18
+ "test": "bun test",
19
19
  "prepublishOnly": "bun run build"
20
20
  },
21
21
  "keywords": [
@@ -33,7 +33,10 @@
33
33
  "url": "https://github.com/bekacru/better-icons"
34
34
  },
35
35
  "dependencies": {
36
- "@modelcontextprotocol/sdk": "^1.0.0"
36
+ "@clack/prompts": "^0.7.0",
37
+ "@modelcontextprotocol/sdk": "^1.25.3",
38
+ "chalk": "^5.3.0",
39
+ "commander": "^12.0.0"
37
40
  },
38
41
  "devDependencies": {
39
42
  "@types/bun": "latest"
@@ -1,149 +0,0 @@
1
- ---
2
- name: better-icons-best-practices
3
- description: Skill for integrating Better Icons
4
- ---
5
- ## Overview
6
-
7
- Use the `better-icons` MCP server for all icon needs. Do NOT use `lucide-react`, `@heroicons/react`, `react-icons`, or any other icon library.
8
-
9
- ## How to Get Icons
10
-
11
- 1. **Search for icons** using the `search_icons` tool
12
- 2. **Get the SVG** using the `get_icon` tool
13
- 3. **Add to the project's `icons.tsx` file** (create if it doesn't exist)
14
-
15
- ## React Projects - Icon Pattern
16
-
17
- ### File Structure
18
-
19
- All icons should be in a single `icons.tsx` file (typically at `src/components/icons.tsx` or `components/icons.tsx`).
20
-
21
- ### Icons File Format
22
-
23
- ```tsx
24
- import { SVGProps } from "react";
25
-
26
- type IconProps = SVGProps<SVGSVGElement>;
27
-
28
- export const Icons = {
29
- // Example icons - add more as needed
30
- home: (props: IconProps) => (
31
- <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24" {...props}>
32
- <path fill="currentColor" d="M10 20v-6h4v6h5v-8h3L12 3L2 12h3v8z"/>
33
- </svg>
34
- ),
35
-
36
- arrowRight: (props: IconProps) => (
37
- <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24" {...props}>
38
- <path fill="currentColor" d="M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"/>
39
- </svg>
40
- ),
41
-
42
- // Add more icons here...
43
- } as const;
44
-
45
- export type IconName = keyof typeof Icons;
46
- ```
47
-
48
- ### Usage in Components
49
-
50
- ```tsx
51
- import { Icons } from "@/components/icons";
52
-
53
- // Basic usage
54
- <Icons.home />
55
-
56
- // With props
57
- <Icons.arrowRight className="w-5 h-5 text-blue-500" />
58
-
59
- // With click handler
60
- <button onClick={handleClick}>
61
- <Icons.settings className="w-4 h-4" />
62
- Settings
63
- </button>
64
- ```
65
-
66
- ## Workflow for Adding Icons
67
-
68
- ### Step 1: Check if icon exists
69
-
70
- Before adding a new icon, check the existing `icons.tsx` file. If an icon with the same purpose exists, use it.
71
-
72
- ### Step 2: Search for the icon
73
-
74
- Use the `search_icons` tool:
75
- ```
76
- search_icons({ query: "settings", prefix: "lucide", limit: 5 })
77
- ```
78
-
79
- Prefer these collections (in order):
80
- 1. `lucide` - Clean, consistent outline icons
81
- 2. `tabler` - Similar style to lucide
82
- 3. `mdi` - Comprehensive, good for filled icons
83
- 4. `heroicons` - Tailwind-style icons
84
-
85
- ### Step 3: Get the SVG
86
-
87
- Use the `get_icon` tool:
88
- ```
89
- get_icon({ icon_id: "lucide:settings" })
90
- ```
91
-
92
- ### Step 4: Add to icons.tsx
93
-
94
- Convert the SVG to the Icons pattern:
95
-
96
- ```tsx
97
- // From get_icon response:
98
- // <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24">...</svg>
99
-
100
- // Add to Icons object:
101
- settings: (props: IconProps) => (
102
- <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24" {...props}>
103
- {/* SVG content */}
104
- </svg>
105
- ),
106
- ```
107
-
108
- ### Step 5: Use in component
109
-
110
- ```tsx
111
- <Icons.settings className="w-5 h-5" />
112
- ```
113
-
114
- ## Icon Naming Conventions
115
-
116
- - Use camelCase: `arrowRight`, `chevronDown`, `userPlus`
117
- - Be descriptive: `checkCircle` not `check2`
118
- - Match purpose: `close` for X icons, `menu` for hamburger
119
- - Avoid prefixes: `settings` not `iconSettings`
120
-
121
- ## Common Icons Reference
122
-
123
- | Purpose | Icon Name | Search Term |
124
- |---------|-----------|-------------|
125
- | Navigation | `menu`, `close`, `arrowLeft`, `arrowRight` | menu, x, arrow |
126
- | Actions | `plus`, `minus`, `edit`, `trash`, `save` | plus, edit, trash |
127
- | Status | `check`, `x`, `alertCircle`, `info` | check, alert, info |
128
- | User | `user`, `users`, `userPlus` | user |
129
- | Media | `play`, `pause`, `volume`, `image` | play, volume |
130
- | Files | `file`, `folder`, `download`, `upload` | file, download |
131
- | Communication | `mail`, `message`, `phone`, `bell` | mail, message |
132
- | UI | `search`, `filter`, `settings`, `more` | search, settings |
133
-
134
- ## DO NOT
135
-
136
- - ❌ Install `lucide-react`, `react-icons`, `@heroicons/react`, etc.
137
- - ❌ Import icons from external packages
138
- - ❌ Create separate files for each icon
139
- - ❌ Use icon fonts (Font Awesome CDN, etc.)
140
- - ❌ Inline SVGs directly in components (put them in icons.tsx)
141
-
142
- ## DO
143
-
144
- - ✅ Use the `better-icons` MCP tools to find icons
145
- - ✅ Maintain a single `icons.tsx` file
146
- - ✅ Reuse existing icons when possible
147
- - ✅ Use consistent naming conventions
148
- - ✅ Pass className for sizing/coloring
149
- - ✅ Use `currentColor` for fill/stroke (inherits text color)