natureco-cli 5.18.2 → 5.19.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.
- package/package.json +1 -1
- package/skills/airunway-aks-setup/SKILL.md +73 -0
- package/skills/algorithmic-art/SKILL.md +405 -0
- package/skills/appinsights-instrumentation/SKILL.md +76 -0
- package/skills/azure-ai/SKILL.md +71 -0
- package/skills/azure-aigateway/SKILL.md +129 -0
- package/skills/azure-cloud-migrate/SKILL.md +52 -0
- package/skills/azure-compliance/SKILL.md +108 -0
- package/skills/azure-compute/SKILL.md +46 -0
- package/skills/azure-cost/SKILL.md +45 -0
- package/skills/azure-deploy/SKILL.md +97 -0
- package/skills/azure-diagnostics/SKILL.md +151 -0
- package/skills/azure-enterprise-infra-planner/SKILL.md +54 -0
- package/skills/azure-hosted-copilot-sdk/SKILL.md +89 -0
- package/skills/azure-kubernetes/SKILL.md +153 -0
- package/skills/azure-kusto/SKILL.md +231 -0
- package/skills/azure-messaging/SKILL.md +57 -0
- package/skills/azure-prepare/SKILL.md +165 -0
- package/skills/azure-quotas/SKILL.md +276 -0
- package/skills/azure-rbac/SKILL.md +17 -0
- package/skills/azure-reliability/SKILL.md +387 -0
- package/skills/azure-resource-lookup/SKILL.md +108 -0
- package/skills/azure-resource-visualizer/SKILL.md +183 -0
- package/skills/azure-storage/SKILL.md +100 -0
- package/skills/azure-upgrade/SKILL.md +91 -0
- package/skills/azure-validate/SKILL.md +72 -0
- package/skills/brainstorming/SKILL.md +159 -0
- package/skills/brand-guidelines/SKILL.md +73 -0
- package/skills/brandkit/SKILL.md +798 -0
- package/skills/brutalist-skill/SKILL.md +92 -0
- package/skills/canvas-design/SKILL.md +130 -0
- package/skills/cavecrew/SKILL.md +82 -0
- package/skills/caveman-commit/SKILL.md +65 -0
- package/skills/caveman-help/SKILL.md +63 -0
- package/skills/caveman-review/SKILL.md +55 -0
- package/skills/caveman-stats/SKILL.md +10 -0
- package/skills/claude-api/SKILL.md +356 -0
- package/skills/composition-patterns/SKILL.md +89 -0
- package/skills/decision-mapping/SKILL.md +84 -0
- package/skills/deploy-to-vercel/SKILL.md +296 -0
- package/skills/design-an-interface/SKILL.md +94 -0
- package/skills/design-doc-mermaid/SKILL.md +498 -0
- package/skills/develop-userscripts/SKILL.md +84 -0
- package/skills/doc-coauthoring/SKILL.md +375 -0
- package/skills/documentation/SKILL.md +109 -0
- package/skills/docx/SKILL.md +590 -0
- package/skills/edit-article/SKILL.md +15 -0
- package/skills/entra-agent-id/SKILL.md +356 -0
- package/skills/entra-app-registration/SKILL.md +191 -0
- package/skills/faceless-explainer/SKILL.md +202 -0
- package/skills/fastify/SKILL.md +75 -0
- package/skills/general-video/SKILL.md +143 -0
- package/skills/git-guardrails-claude-code/SKILL.md +95 -0
- package/skills/github-actions-docs/SKILL.md +98 -0
- package/skills/gpt-tasteskill/SKILL.md +74 -0
- package/skills/grill-me/SKILL.md +7 -0
- package/skills/grilling/SKILL.md +10 -0
- package/skills/handoff/SKILL.md +16 -0
- package/skills/hyperframes/SKILL.md +152 -0
- package/skills/hyperframes-animation/SKILL.md +82 -0
- package/skills/hyperframes-cli/SKILL.md +109 -0
- package/skills/hyperframes-core/SKILL.md +78 -0
- package/skills/hyperframes-creative/SKILL.md +68 -0
- package/skills/hyperframes-media/SKILL.md +97 -0
- package/skills/image-to-code-skill/SKILL.md +1228 -0
- package/skills/imagegen-frontend-mobile/SKILL.md +1465 -0
- package/skills/imagegen-frontend-web/SKILL.md +987 -0
- package/skills/implement/SKILL.md +15 -0
- package/skills/init/SKILL.md +91 -0
- package/skills/internal-comms/SKILL.md +32 -0
- package/skills/lark-approval/SKILL.md +56 -0
- package/skills/lark-base/SKILL.md +157 -0
- package/skills/lark-doc/SKILL.md +81 -0
- package/skills/lark-shared/SKILL.md +168 -0
- package/skills/lark-workflow-meeting-summary/SKILL.md +122 -0
- package/skills/linting-neostandard-eslint9/SKILL.md +64 -0
- package/skills/loop-me/SKILL.md +32 -0
- package/skills/microsoft-foundry/SKILL.md +262 -0
- package/skills/migrate-to-shoehorn/SKILL.md +118 -0
- package/skills/minimalist-skill/SKILL.md +85 -0
- package/skills/motion-graphics/SKILL.md +170 -0
- package/skills/music-to-video/SKILL.md +197 -0
- package/skills/node/SKILL.md +94 -0
- package/skills/nodejs-core/SKILL.md +156 -0
- package/skills/oauth/SKILL.md +186 -0
- package/skills/obsidian-vault/SKILL.md +59 -0
- package/skills/octocat/SKILL.md +93 -0
- package/skills/openclaw-secure-linux-cloud/SKILL.md +157 -0
- package/skills/opensource-guide-coach/SKILL.md +218 -0
- package/skills/output-skill/SKILL.md +49 -0
- package/skills/pdf/SKILL.md +314 -0
- package/skills/pptx/SKILL.md +232 -0
- package/skills/pr-to-video/SKILL.md +235 -0
- package/skills/product-launch-video/SKILL.md +205 -0
- package/skills/python-appservice-deploy/SKILL.md +36 -0
- package/skills/qa/SKILL.md +130 -0
- package/skills/react-best-practices/SKILL.md +149 -0
- package/skills/react-native-skills/SKILL.md +121 -0
- package/skills/react-view-transitions/SKILL.md +320 -0
- package/skills/readme-i18n/SKILL.md +176 -0
- package/skills/redesign-skill/SKILL.md +178 -0
- package/skills/remotion/SKILL.md +364 -0
- package/skills/request-refactor-plan/SKILL.md +68 -0
- package/skills/resolving-merge-conflicts/SKILL.md +14 -0
- package/skills/running-claude-code-via-litellm-copilot/SKILL.md +263 -0
- package/skills/scaffold-exercises/SKILL.md +106 -0
- package/skills/secure-linux-web-hosting/SKILL.md +162 -0
- package/skills/setup-pre-commit/SKILL.md +91 -0
- package/skills/shadcn/SKILL.md +267 -0
- package/skills/simple/SKILL.md +52 -0
- package/skills/skill-creator/SKILL.md +485 -0
- package/skills/skill-optimizer/SKILL.md +47 -0
- package/skills/skills-cli/SKILL.md +281 -0
- package/skills/slack-gif-creator/SKILL.md +254 -0
- package/skills/snipgrapher/SKILL.md +58 -0
- package/skills/soft-skill/SKILL.md +98 -0
- package/skills/stitch-skill/SKILL.md +184 -0
- package/skills/supabase/SKILL.md +135 -0
- package/skills/supabase-postgres-best-practices/SKILL.md +64 -0
- package/skills/systematic-debugging/SKILL.md +296 -0
- package/skills/talking-head-recut/SKILL.md +1191 -0
- package/skills/taste-skill/SKILL.md +1206 -0
- package/skills/taste-skill-v1/SKILL.md +226 -0
- package/skills/tdd/SKILL.md +108 -0
- package/skills/teach/SKILL.md +140 -0
- package/skills/test-driven-development/SKILL.md +371 -0
- package/skills/theme-factory/SKILL.md +59 -0
- package/skills/to-prd/SKILL.md +75 -0
- package/skills/typescript-magician/SKILL.md +117 -0
- package/skills/tzst/SKILL.md +68 -0
- package/skills/ubiquitous-language/SKILL.md +93 -0
- package/skills/use-my-browser/SKILL.md +110 -0
- package/skills/using-superpowers/SKILL.md +121 -0
- package/skills/vercel-cli-with-tokens/SKILL.md +353 -0
- package/skills/vercel-optimize/SKILL.md +322 -0
- package/skills/viral-instagram-reels/SKILL.md +180 -0
- package/skills/viral-short-form/SKILL.md +147 -0
- package/skills/viral-short-form-ideas/SKILL.md +184 -0
- package/skills/viral-tiktok-content/SKILL.md +180 -0
- package/skills/web-artifacts-builder/SKILL.md +74 -0
- package/skills/web-design-guidelines/SKILL.md +39 -0
- package/skills/webapp-testing/SKILL.md +96 -0
- package/skills/website-to-video/SKILL.md +145 -0
- package/skills/writing-beats/SKILL.md +67 -0
- package/skills/writing-fragments/SKILL.md +79 -0
- package/skills/writing-great-skills/SKILL.md +82 -0
- package/skills/writing-guidelines/SKILL.md +39 -0
- package/skills/writing-plans/SKILL.md +174 -0
- package/skills/writing-shape/SKILL.md +79 -0
- package/skills/xdrop/SKILL.md +78 -0
- package/skills/xget/SKILL.md +87 -0
- package/skills/xlsx/SKILL.md +292 -0
- package/src/tools/browser_use.js +2 -1
- package/src/tools/skills_download.js +217 -0
- package/src/utils/tools.js +2 -2
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skills-cli
|
|
3
|
+
description: Use when users ask to discover, install, list, check, update, remove, back up, restore, sync, or initialize Agent Skills, mention `bunx skills`, `npx skills`, `skills.sh`, or `skills-lock.json`, ask "find a skill for X", or want help extending agent capabilities with installable skills.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use this skill to help users work with the open Agent Skills ecosystem through the `skills` CLI.
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
The `skills` CLI is the package manager for installable Agent Skills. Use it to discover skills, install them with the right flags, and manage them after installation.
|
|
11
|
+
|
|
12
|
+
Examples below use `bunx skills`, but `npx skills` is the same workflow if Bun is not available in the user's environment.
|
|
13
|
+
|
|
14
|
+
Always prefer the current CLI syntax:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
bunx skills add <source> --skill <name>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Do not use older `owner/repo@skill-name` examples.
|
|
21
|
+
|
|
22
|
+
## When to Use
|
|
23
|
+
|
|
24
|
+
Use this skill when the user:
|
|
25
|
+
|
|
26
|
+
- asks "find a skill for X", "is there a skill for X", or "how do I do X" and X sounds like a reusable workflow
|
|
27
|
+
- asks "can you do X" and X sounds like a specialized capability that may already exist as a skill
|
|
28
|
+
- wants help with `bunx skills`, `npx skills`, `skills.sh`, skill package installation, or `skills-lock.json`
|
|
29
|
+
- wants to install a skill for a specific agent such as Codex or OpenCode
|
|
30
|
+
- wants to list, check, update, remove, restore, sync, back up, or initialize installed skills
|
|
31
|
+
- wants help searching for workflows, tools, templates, or domain-specific capabilities such as design, testing, deployment, documentation, or code review
|
|
32
|
+
|
|
33
|
+
Do not use this skill when the user already has a local skill and wants help writing or improving its contents. In that case, use a skill-authoring workflow instead.
|
|
34
|
+
|
|
35
|
+
## Discovery Workflow
|
|
36
|
+
|
|
37
|
+
When a user needs a skill, follow this sequence:
|
|
38
|
+
|
|
39
|
+
1. Identify the domain and task.
|
|
40
|
+
Examples: React performance, PR review, changelog generation, PDF extraction.
|
|
41
|
+
Also judge whether the task is common enough that a reusable skill is likely to exist.
|
|
42
|
+
2. Check [skills.sh](https://skills.sh/) first.
|
|
43
|
+
Prefer well-known, well-installed skills when the domain is already covered there.
|
|
44
|
+
3. If the leaderboard does not clearly answer the need, search with:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
bunx skills find <query>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
1. Verify quality before recommending anything:
|
|
51
|
+
- install count: prefer skills with 1K+ installs and be cautious with anything under 100
|
|
52
|
+
- source reputation: prefer official or well-established maintainers such as `openai`, `anthropics`, `microsoft`, or similarly trusted publishers
|
|
53
|
+
- repository quality: check the source repository and treat skills from repos with fewer than 100 stars skeptically
|
|
54
|
+
2. Present the options clearly.
|
|
55
|
+
Include the skill name, what it helps with, the install count and source, why it looks trustworthy, the install command, and a link to learn more on `skills.sh`.
|
|
56
|
+
3. Offer installation help if the user wants to proceed.
|
|
57
|
+
4. If nothing fits, say so directly, help with the task using your general capabilities, and mention that the user can create their own package with `bunx skills init`.
|
|
58
|
+
|
|
59
|
+
## Installation Quick Reference
|
|
60
|
+
|
|
61
|
+
### Common sources
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# GitHub shorthand
|
|
65
|
+
bunx skills add xixu-me/skills
|
|
66
|
+
|
|
67
|
+
# Full GitHub URL
|
|
68
|
+
bunx skills add https://github.com/xixu-me/skills
|
|
69
|
+
|
|
70
|
+
# Direct path to one skill inside a repo
|
|
71
|
+
bunx skills add https://github.com/xixu-me/skills/tree/main/skills/skills-cli
|
|
72
|
+
|
|
73
|
+
# GitLab URL
|
|
74
|
+
bunx skills add https://gitlab.com/org/repo
|
|
75
|
+
|
|
76
|
+
# Any git URL
|
|
77
|
+
bunx skills add git@github.com:owner/repo.git
|
|
78
|
+
|
|
79
|
+
# Local package path
|
|
80
|
+
bunx skills add ./my-local-skills
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Common install patterns
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# List skills in a package without installing
|
|
87
|
+
bunx skills add <source> --list
|
|
88
|
+
|
|
89
|
+
# Install one skill
|
|
90
|
+
bunx skills add <source> --skill skills-cli
|
|
91
|
+
|
|
92
|
+
# Install multiple skills
|
|
93
|
+
bunx skills add <source> --skill pr-review --skill commit
|
|
94
|
+
|
|
95
|
+
# Install globally
|
|
96
|
+
bunx skills add <source> --skill skills-cli -g -y
|
|
97
|
+
|
|
98
|
+
# Install to a specific agent
|
|
99
|
+
bunx skills add <source> --skill skills-cli -a codex -y
|
|
100
|
+
|
|
101
|
+
# Install all skills to all agents
|
|
102
|
+
bunx skills add <source> --all
|
|
103
|
+
|
|
104
|
+
# Install all skills to one agent
|
|
105
|
+
bunx skills add <source> --skill '*' -a codex -y
|
|
106
|
+
|
|
107
|
+
# Copy files instead of symlinking
|
|
108
|
+
bunx skills add <source> --skill skills-cli -a codex --copy -y
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Installation methods
|
|
112
|
+
|
|
113
|
+
When the user is choosing how to install:
|
|
114
|
+
|
|
115
|
+
- symlink is the default and usually the best choice because updates stay centralized
|
|
116
|
+
- `--copy` creates independent copies and is the fallback when symlinks are unsupported or inconvenient
|
|
117
|
+
|
|
118
|
+
If the user only asks to install a skill, prefer the default symlink workflow unless they mention CI packaging, portability, filesystem restrictions, or explicitly ask for copies.
|
|
119
|
+
|
|
120
|
+
### Important flags
|
|
121
|
+
|
|
122
|
+
| Flag | Use |
|
|
123
|
+
| --------------------- | ---------------------------------------------- |
|
|
124
|
+
| `--skill <name>` | install one or more named skills |
|
|
125
|
+
| `-a, --agent <agent>` | target specific agents such as `codex` |
|
|
126
|
+
| `-g, --global` | install at user scope instead of project scope |
|
|
127
|
+
| `-y, --yes` | skip prompts |
|
|
128
|
+
| `--list` | list available skills in a package |
|
|
129
|
+
| `--copy` | copy instead of symlink |
|
|
130
|
+
| `--all` | shorthand for all skills to all agents |
|
|
131
|
+
|
|
132
|
+
## Managing Installed Skills
|
|
133
|
+
|
|
134
|
+
Use these commands for ongoing maintenance:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
# List installed skills
|
|
138
|
+
bunx skills ls
|
|
139
|
+
bunx skills ls -g
|
|
140
|
+
bunx skills ls -a codex
|
|
141
|
+
bunx skills ls --json
|
|
142
|
+
|
|
143
|
+
# Check for updates
|
|
144
|
+
bunx skills check
|
|
145
|
+
|
|
146
|
+
# Update installed skills
|
|
147
|
+
bunx skills update
|
|
148
|
+
|
|
149
|
+
# Remove installed skills
|
|
150
|
+
bunx skills remove my-skill
|
|
151
|
+
bunx skills remove my-skill -a codex
|
|
152
|
+
bunx skills remove -g my-skill
|
|
153
|
+
bunx skills remove --all
|
|
154
|
+
|
|
155
|
+
# Initialize a new skill package
|
|
156
|
+
bunx skills init
|
|
157
|
+
bunx skills init my-skill
|
|
158
|
+
|
|
159
|
+
# Restore from skills-lock.json
|
|
160
|
+
bunx skills experimental_install
|
|
161
|
+
|
|
162
|
+
# Sync node_modules skills into agent directories
|
|
163
|
+
bunx skills experimental_sync
|
|
164
|
+
bunx skills experimental_sync -a codex -y
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
When the user asks to initialize a skill, explain whether they want:
|
|
168
|
+
|
|
169
|
+
- `bunx skills init` to create `SKILL.md` in the current directory
|
|
170
|
+
- `bunx skills init <name>` to create a new subdirectory containing `SKILL.md`
|
|
171
|
+
|
|
172
|
+
## Related Tool: Skills Vault
|
|
173
|
+
|
|
174
|
+
If the user wants declarative backup and restore of installed skills across machines or teams, use [Skills Vault](https://github.com/xixu-me/skills-vault).
|
|
175
|
+
|
|
176
|
+
Skills Vault is a separate CLI companion for the `skills` ecosystem. It is not a `skills add` installable skill source. Use it when the user wants to snapshot installed skills into a manifest, preview restore commands, or reproduce the same setup elsewhere.
|
|
177
|
+
|
|
178
|
+
Common companion commands:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
# Back up installed skills into skvlt.yaml
|
|
182
|
+
bunx skvlt backup
|
|
183
|
+
|
|
184
|
+
# Preview a restore
|
|
185
|
+
bunx skvlt restore --dry-run
|
|
186
|
+
|
|
187
|
+
# Restore everything from the manifest
|
|
188
|
+
bunx skvlt restore --all
|
|
189
|
+
|
|
190
|
+
# Diagnose the local environment
|
|
191
|
+
bunx skvlt doctor
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Prefer this tool over `skills experimental_*` when the user explicitly wants a portable manifest workflow, cross-machine backup and restore, or team-sharing of installed skill setups.
|
|
195
|
+
|
|
196
|
+
## Recommendation Format
|
|
197
|
+
|
|
198
|
+
When recommending a skill, keep the answer concrete and installable.
|
|
199
|
+
|
|
200
|
+
Use a structure like this:
|
|
201
|
+
|
|
202
|
+
```text
|
|
203
|
+
I found a skill that should fit.
|
|
204
|
+
|
|
205
|
+
Skill: <skill-name>
|
|
206
|
+
Why it matches: <one sentence>
|
|
207
|
+
Source: <owner/repo or URL>
|
|
208
|
+
Quality check: <install count / source reputation / repository confidence note>
|
|
209
|
+
Install:
|
|
210
|
+
bunx skills add <source> --skill <skill-name> [optional flags]
|
|
211
|
+
Learn more: https://skills.sh/<publisher>/<package>/<skill-name>
|
|
212
|
+
|
|
213
|
+
If you want, I can install it for <agent-or-scope>.
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
If the user mentions a target agent or scope, include it in the command. Examples:
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
bunx skills add <source> --skill <skill-name> -a codex -y
|
|
220
|
+
bunx skills add <source> --skill <skill-name> -g -y
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Example:
|
|
224
|
+
|
|
225
|
+
```text
|
|
226
|
+
I found a skill that might help.
|
|
227
|
+
|
|
228
|
+
Skill: screenshot
|
|
229
|
+
Why it matches: it focuses on OS-level desktop and window screenshot capture.
|
|
230
|
+
Source: openai/skills
|
|
231
|
+
Quality check: high install volume, trusted publisher, and a widely used source repository.
|
|
232
|
+
Install:
|
|
233
|
+
bunx skills add openai/skills --skill screenshot
|
|
234
|
+
Learn more: https://skills.sh/openai/skills/screenshot
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## Common Skill Categories
|
|
238
|
+
|
|
239
|
+
When the user's wording is vague, map it to likely categories:
|
|
240
|
+
|
|
241
|
+
| Category | Example queries |
|
|
242
|
+
| --------------- | -------------------------------------------------- |
|
|
243
|
+
| Web Development | `react`, `nextjs`, `typescript`, `css`, `tailwind` |
|
|
244
|
+
| Testing | `testing`, `jest`, `playwright`, `e2e` |
|
|
245
|
+
| DevOps | `deploy`, `docker`, `kubernetes`, `ci-cd` |
|
|
246
|
+
| Documentation | `docs`, `readme`, `changelog`, `api-docs` |
|
|
247
|
+
| Code Quality | `review`, `lint`, `refactor`, `best-practices` |
|
|
248
|
+
| Design | `ui`, `ux`, `design-system`, `accessibility` |
|
|
249
|
+
| Productivity | `workflow`, `automation`, `git` |
|
|
250
|
+
|
|
251
|
+
## Search Tips
|
|
252
|
+
|
|
253
|
+
- Use specific keywords. `react testing` is better than just `testing`.
|
|
254
|
+
- Try alternative terms. If `deploy` fails, try `deployment` or `ci-cd`.
|
|
255
|
+
- Check popular sources first. Many strong skills come from established publishers.
|
|
256
|
+
- If the first search is too broad, narrow by domain plus task.
|
|
257
|
+
|
|
258
|
+
## Common Mistakes
|
|
259
|
+
|
|
260
|
+
- Recommending a skill from search results without checking whether it looks established.
|
|
261
|
+
- Forgetting to specify `-a <agent>` when the user asked for one particular agent.
|
|
262
|
+
- Treating `bunx skills find --help` like a real help command. Use `bunx skills --help` for command help instead.
|
|
263
|
+
- Assuming no skill exists after one weak search term. Try a more specific or adjacent query first.
|
|
264
|
+
|
|
265
|
+
## Troubleshooting
|
|
266
|
+
|
|
267
|
+
If the user hits an error or confusing result:
|
|
268
|
+
|
|
269
|
+
- "No skills found" - suggest a better query, check [skills.sh](https://skills.sh/), or help directly and mention `bunx skills init`
|
|
270
|
+
- interactive prompts in automation or CI - add `-y`
|
|
271
|
+
- wrong installation scope - switch between project install and `-g`
|
|
272
|
+
- symlink issues - retry with `--copy`
|
|
273
|
+
- uncertainty about available package contents - run `bunx skills add <source> --list`
|
|
274
|
+
- uncertainty about installed state - run `bunx skills ls` or `bunx skills ls --json`
|
|
275
|
+
- portable backup or restore across machines - mention [Skills Vault](https://github.com/xixu-me/skills-vault) and its `backup` / `restore --dry-run` workflow
|
|
276
|
+
|
|
277
|
+
When you are unsure about exact flags, use:
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
bunx skills --help
|
|
281
|
+
```
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: slack-gif-creator
|
|
3
|
+
description: Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like "make me a GIF of X doing Y for Slack."
|
|
4
|
+
license: Complete terms in LICENSE.txt
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Slack GIF Creator
|
|
8
|
+
|
|
9
|
+
A toolkit providing utilities and knowledge for creating animated GIFs optimized for Slack.
|
|
10
|
+
|
|
11
|
+
## Slack Requirements
|
|
12
|
+
|
|
13
|
+
**Dimensions:**
|
|
14
|
+
- Emoji GIFs: 128x128 (recommended)
|
|
15
|
+
- Message GIFs: 480x480
|
|
16
|
+
|
|
17
|
+
**Parameters:**
|
|
18
|
+
- FPS: 10-30 (lower is smaller file size)
|
|
19
|
+
- Colors: 48-128 (fewer = smaller file size)
|
|
20
|
+
- Duration: Keep under 3 seconds for emoji GIFs
|
|
21
|
+
|
|
22
|
+
## Core Workflow
|
|
23
|
+
|
|
24
|
+
```python
|
|
25
|
+
from core.gif_builder import GIFBuilder
|
|
26
|
+
from PIL import Image, ImageDraw
|
|
27
|
+
|
|
28
|
+
# 1. Create builder
|
|
29
|
+
builder = GIFBuilder(width=128, height=128, fps=10)
|
|
30
|
+
|
|
31
|
+
# 2. Generate frames
|
|
32
|
+
for i in range(12):
|
|
33
|
+
frame = Image.new('RGB', (128, 128), (240, 248, 255))
|
|
34
|
+
draw = ImageDraw.Draw(frame)
|
|
35
|
+
|
|
36
|
+
# Draw your animation using PIL primitives
|
|
37
|
+
# (circles, polygons, lines, etc.)
|
|
38
|
+
|
|
39
|
+
builder.add_frame(frame)
|
|
40
|
+
|
|
41
|
+
# 3. Save with optimization
|
|
42
|
+
builder.save('output.gif', num_colors=48, optimize_for_emoji=True)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Drawing Graphics
|
|
46
|
+
|
|
47
|
+
### Working with User-Uploaded Images
|
|
48
|
+
If a user uploads an image, consider whether they want to:
|
|
49
|
+
- **Use it directly** (e.g., "animate this", "split this into frames")
|
|
50
|
+
- **Use it as inspiration** (e.g., "make something like this")
|
|
51
|
+
|
|
52
|
+
Load and work with images using PIL:
|
|
53
|
+
```python
|
|
54
|
+
from PIL import Image
|
|
55
|
+
|
|
56
|
+
uploaded = Image.open('file.png')
|
|
57
|
+
# Use directly, or just as reference for colors/style
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Drawing from Scratch
|
|
61
|
+
When drawing graphics from scratch, use PIL ImageDraw primitives:
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
from PIL import ImageDraw
|
|
65
|
+
|
|
66
|
+
draw = ImageDraw.Draw(frame)
|
|
67
|
+
|
|
68
|
+
# Circles/ovals
|
|
69
|
+
draw.ellipse([x1, y1, x2, y2], fill=(r, g, b), outline=(r, g, b), width=3)
|
|
70
|
+
|
|
71
|
+
# Stars, triangles, any polygon
|
|
72
|
+
points = [(x1, y1), (x2, y2), (x3, y3), ...]
|
|
73
|
+
draw.polygon(points, fill=(r, g, b), outline=(r, g, b), width=3)
|
|
74
|
+
|
|
75
|
+
# Lines
|
|
76
|
+
draw.line([(x1, y1), (x2, y2)], fill=(r, g, b), width=5)
|
|
77
|
+
|
|
78
|
+
# Rectangles
|
|
79
|
+
draw.rectangle([x1, y1, x2, y2], fill=(r, g, b), outline=(r, g, b), width=3)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Don't use:** Emoji fonts (unreliable across platforms) or assume pre-packaged graphics exist in this skill.
|
|
83
|
+
|
|
84
|
+
### Making Graphics Look Good
|
|
85
|
+
|
|
86
|
+
Graphics should look polished and creative, not basic. Here's how:
|
|
87
|
+
|
|
88
|
+
**Use thicker lines** - Always set `width=2` or higher for outlines and lines. Thin lines (width=1) look choppy and amateurish.
|
|
89
|
+
|
|
90
|
+
**Add visual depth**:
|
|
91
|
+
- Use gradients for backgrounds (`create_gradient_background`)
|
|
92
|
+
- Layer multiple shapes for complexity (e.g., a star with a smaller star inside)
|
|
93
|
+
|
|
94
|
+
**Make shapes more interesting**:
|
|
95
|
+
- Don't just draw a plain circle - add highlights, rings, or patterns
|
|
96
|
+
- Stars can have glows (draw larger, semi-transparent versions behind)
|
|
97
|
+
- Combine multiple shapes (stars + sparkles, circles + rings)
|
|
98
|
+
|
|
99
|
+
**Pay attention to colors**:
|
|
100
|
+
- Use vibrant, complementary colors
|
|
101
|
+
- Add contrast (dark outlines on light shapes, light outlines on dark shapes)
|
|
102
|
+
- Consider the overall composition
|
|
103
|
+
|
|
104
|
+
**For complex shapes** (hearts, snowflakes, etc.):
|
|
105
|
+
- Use combinations of polygons and ellipses
|
|
106
|
+
- Calculate points carefully for symmetry
|
|
107
|
+
- Add details (a heart can have a highlight curve, snowflakes have intricate branches)
|
|
108
|
+
|
|
109
|
+
Be creative and detailed! A good Slack GIF should look polished, not like placeholder graphics.
|
|
110
|
+
|
|
111
|
+
## Available Utilities
|
|
112
|
+
|
|
113
|
+
### GIFBuilder (`core.gif_builder`)
|
|
114
|
+
Assembles frames and optimizes for Slack:
|
|
115
|
+
```python
|
|
116
|
+
builder = GIFBuilder(width=128, height=128, fps=10)
|
|
117
|
+
builder.add_frame(frame) # Add PIL Image
|
|
118
|
+
builder.add_frames(frames) # Add list of frames
|
|
119
|
+
builder.save('out.gif', num_colors=48, optimize_for_emoji=True, remove_duplicates=True)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Validators (`core.validators`)
|
|
123
|
+
Check if GIF meets Slack requirements:
|
|
124
|
+
```python
|
|
125
|
+
from core.validators import validate_gif, is_slack_ready
|
|
126
|
+
|
|
127
|
+
# Detailed validation
|
|
128
|
+
passes, info = validate_gif('my.gif', is_emoji=True, verbose=True)
|
|
129
|
+
|
|
130
|
+
# Quick check
|
|
131
|
+
if is_slack_ready('my.gif'):
|
|
132
|
+
print("Ready!")
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Easing Functions (`core.easing`)
|
|
136
|
+
Smooth motion instead of linear:
|
|
137
|
+
```python
|
|
138
|
+
from core.easing import interpolate
|
|
139
|
+
|
|
140
|
+
# Progress from 0.0 to 1.0
|
|
141
|
+
t = i / (num_frames - 1)
|
|
142
|
+
|
|
143
|
+
# Apply easing
|
|
144
|
+
y = interpolate(start=0, end=400, t=t, easing='ease_out')
|
|
145
|
+
|
|
146
|
+
# Available: linear, ease_in, ease_out, ease_in_out,
|
|
147
|
+
# bounce_out, elastic_out, back_out
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Frame Helpers (`core.frame_composer`)
|
|
151
|
+
Convenience functions for common needs:
|
|
152
|
+
```python
|
|
153
|
+
from core.frame_composer import (
|
|
154
|
+
create_blank_frame, # Solid color background
|
|
155
|
+
create_gradient_background, # Vertical gradient
|
|
156
|
+
draw_circle, # Helper for circles
|
|
157
|
+
draw_text, # Simple text rendering
|
|
158
|
+
draw_star # 5-pointed star
|
|
159
|
+
)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Animation Concepts
|
|
163
|
+
|
|
164
|
+
### Shake/Vibrate
|
|
165
|
+
Offset object position with oscillation:
|
|
166
|
+
- Use `math.sin()` or `math.cos()` with frame index
|
|
167
|
+
- Add small random variations for natural feel
|
|
168
|
+
- Apply to x and/or y position
|
|
169
|
+
|
|
170
|
+
### Pulse/Heartbeat
|
|
171
|
+
Scale object size rhythmically:
|
|
172
|
+
- Use `math.sin(t * frequency * 2 * math.pi)` for smooth pulse
|
|
173
|
+
- For heartbeat: two quick pulses then pause (adjust sine wave)
|
|
174
|
+
- Scale between 0.8 and 1.2 of base size
|
|
175
|
+
|
|
176
|
+
### Bounce
|
|
177
|
+
Object falls and bounces:
|
|
178
|
+
- Use `interpolate()` with `easing='bounce_out'` for landing
|
|
179
|
+
- Use `easing='ease_in'` for falling (accelerating)
|
|
180
|
+
- Apply gravity by increasing y velocity each frame
|
|
181
|
+
|
|
182
|
+
### Spin/Rotate
|
|
183
|
+
Rotate object around center:
|
|
184
|
+
- PIL: `image.rotate(angle, resample=Image.BICUBIC)`
|
|
185
|
+
- For wobble: use sine wave for angle instead of linear
|
|
186
|
+
|
|
187
|
+
### Fade In/Out
|
|
188
|
+
Gradually appear or disappear:
|
|
189
|
+
- Create RGBA image, adjust alpha channel
|
|
190
|
+
- Or use `Image.blend(image1, image2, alpha)`
|
|
191
|
+
- Fade in: alpha from 0 to 1
|
|
192
|
+
- Fade out: alpha from 1 to 0
|
|
193
|
+
|
|
194
|
+
### Slide
|
|
195
|
+
Move object from off-screen to position:
|
|
196
|
+
- Start position: outside frame bounds
|
|
197
|
+
- End position: target location
|
|
198
|
+
- Use `interpolate()` with `easing='ease_out'` for smooth stop
|
|
199
|
+
- For overshoot: use `easing='back_out'`
|
|
200
|
+
|
|
201
|
+
### Zoom
|
|
202
|
+
Scale and position for zoom effect:
|
|
203
|
+
- Zoom in: scale from 0.1 to 2.0, crop center
|
|
204
|
+
- Zoom out: scale from 2.0 to 1.0
|
|
205
|
+
- Can add motion blur for drama (PIL filter)
|
|
206
|
+
|
|
207
|
+
### Explode/Particle Burst
|
|
208
|
+
Create particles radiating outward:
|
|
209
|
+
- Generate particles with random angles and velocities
|
|
210
|
+
- Update each particle: `x += vx`, `y += vy`
|
|
211
|
+
- Add gravity: `vy += gravity_constant`
|
|
212
|
+
- Fade out particles over time (reduce alpha)
|
|
213
|
+
|
|
214
|
+
## Optimization Strategies
|
|
215
|
+
|
|
216
|
+
Only when asked to make the file size smaller, implement a few of the following methods:
|
|
217
|
+
|
|
218
|
+
1. **Fewer frames** - Lower FPS (10 instead of 20) or shorter duration
|
|
219
|
+
2. **Fewer colors** - `num_colors=48` instead of 128
|
|
220
|
+
3. **Smaller dimensions** - 128x128 instead of 480x480
|
|
221
|
+
4. **Remove duplicates** - `remove_duplicates=True` in save()
|
|
222
|
+
5. **Emoji mode** - `optimize_for_emoji=True` auto-optimizes
|
|
223
|
+
|
|
224
|
+
```python
|
|
225
|
+
# Maximum optimization for emoji
|
|
226
|
+
builder.save(
|
|
227
|
+
'emoji.gif',
|
|
228
|
+
num_colors=48,
|
|
229
|
+
optimize_for_emoji=True,
|
|
230
|
+
remove_duplicates=True
|
|
231
|
+
)
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Philosophy
|
|
235
|
+
|
|
236
|
+
This skill provides:
|
|
237
|
+
- **Knowledge**: Slack's requirements and animation concepts
|
|
238
|
+
- **Utilities**: GIFBuilder, validators, easing functions
|
|
239
|
+
- **Flexibility**: Create the animation logic using PIL primitives
|
|
240
|
+
|
|
241
|
+
It does NOT provide:
|
|
242
|
+
- Rigid animation templates or pre-made functions
|
|
243
|
+
- Emoji font rendering (unreliable across platforms)
|
|
244
|
+
- A library of pre-packaged graphics built into the skill
|
|
245
|
+
|
|
246
|
+
**Note on user uploads**: This skill doesn't include pre-built graphics, but if a user uploads an image, use PIL to load and work with it - interpret based on their request whether they want it used directly or just as inspiration.
|
|
247
|
+
|
|
248
|
+
Be creative! Combine concepts (bouncing + rotating, pulsing + sliding, etc.) and use PIL's full capabilities.
|
|
249
|
+
|
|
250
|
+
## Dependencies
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
pip install pillow imageio numpy
|
|
254
|
+
```
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: snipgrapher
|
|
3
|
+
description: Configures and uses snipgrapher to generate polished code snippet images, including syntax-highlighted PNGs, SVGs, and WebP exports with custom themes, profiles, and styling options. Use when the user wants to create code screenshots, turn code into shareable images, generate pretty code snippets for docs or social posts, produce syntax-highlighted images from source files, or explicitly mentions snipgrapher. Supports single-file renders, batch jobs, watch mode, and reusable named profiles via the snipgrapher CLI or npx.
|
|
4
|
+
metadata:
|
|
5
|
+
tags: snipgrapher, snippets, images, svg, png, webp, cli
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## When to use
|
|
9
|
+
|
|
10
|
+
Use this skill when you need to:
|
|
11
|
+
- Generate image snippets from source code
|
|
12
|
+
- Configure reusable snippet rendering defaults
|
|
13
|
+
- Batch-render snippet assets for docs, social posts, or changelogs
|
|
14
|
+
- Use published `snipgrapher` from npm to generate snippet images
|
|
15
|
+
|
|
16
|
+
## Quick start
|
|
17
|
+
|
|
18
|
+
Render a single file to a PNG immediately with no config required:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npx snipgrapher render file.ts -o output.png
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
For ongoing use, initialise a project config first, then render:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npx snipgrapher init # creates snipgrapher.config.json
|
|
28
|
+
npx snipgrapher render file.ts --profile default -o output.png
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
After rendering, verify the output exists and is non-zero in size before treating the job as successful:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
ls -lh output.png # confirm file exists and size > 0
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## How to use
|
|
38
|
+
|
|
39
|
+
Read these rule files in order:
|
|
40
|
+
|
|
41
|
+
- [rules/setup-and-configuration.md](rules/setup-and-configuration.md) - Install, select executable, initialize config, and define profiles
|
|
42
|
+
- [rules/rendering-workflows.md](rules/rendering-workflows.md) - Render single snippets, batch jobs, watch mode, and output practices
|
|
43
|
+
|
|
44
|
+
## Core principles
|
|
45
|
+
|
|
46
|
+
- **Configure first**: establish a project config before repeated renders
|
|
47
|
+
- **Reproducible output**: prefer named profiles and explicit output paths
|
|
48
|
+
- **Portable commands**: use command patterns that work with installed binaries and `npx`
|
|
49
|
+
- **Automation-friendly**: rely on CLI flags/config/env precedence intentionally
|
|
50
|
+
|
|
51
|
+
## Troubleshooting common render failures
|
|
52
|
+
|
|
53
|
+
If a render fails or produces an unexpected output, check for these common causes:
|
|
54
|
+
|
|
55
|
+
- **Missing fonts**: ensure any custom font specified in the profile or config is installed on the system
|
|
56
|
+
- **Unsupported syntax**: confirm the language/extension is supported by snipgrapher; fall back to plain text highlighting if not
|
|
57
|
+
- **Empty or corrupt output**: re-run with `--verbose` (if supported) to surface error details, and verify the input file is readable and non-empty
|
|
58
|
+
- **Profile not found**: run `npx snipgrapher init` to regenerate `snipgrapher.config.json` if the config file is missing or malformed
|