qr-code-generator
Generate QR codes via the web UI or REST API. Supports URL, WiFi, vCard, and plain text. Outputs SVG and PNG. Includes logo embedding and bulk CSV generation.
Best use case
qr-code-generator is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Generate QR codes via the web UI or REST API. Supports URL, WiFi, vCard, and plain text. Outputs SVG and PNG. Includes logo embedding and bulk CSV generation.
Teams using qr-code-generator should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/qr-code-generator/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How qr-code-generator Compares
| Feature / Agent | qr-code-generator | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Generate QR codes via the web UI or REST API. Supports URL, WiFi, vCard, and plain text. Outputs SVG and PNG. Includes logo embedding and bulk CSV generation.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# qr-code-generator Skill
## When to use
Use this skill when you need to:
- Generate a QR code for a URL, WiFi network, contact card, or arbitrary text
- Embed a brand logo into a QR code
- Generate dozens or hundreds of QR codes from a CSV in one batch
- Download QR codes as SVG (for print) or PNG (for digital)
- Integrate QR generation into a pipeline via the REST API
## Prerequisites
Server running at `http://localhost:3000`. Start with:
```
pnpm --filter server dev
```
Or via Docker:
```
docker compose up -d
```
Health check:
```
curl http://localhost:3000/api/health
```
## Quick start
Generate a URL QR code (SVG):
```bash
curl -s -X POST http://localhost:3000/api/generate \
-H 'Content-Type: application/json' \
-d '{"type":"url","data":{"url":"https://example.com"},"format":"svg"}' \
| jq -r '.svg' > qrcode.svg
```
## Usage patterns
### URL QR code
```bash
curl -s -X POST http://localhost:3000/api/generate \
-H 'Content-Type: application/json' \
-d '{
"type": "url",
"data": { "url": "https://example.com" },
"style": {
"fgColor": "#000000",
"bgColor": "#ffffff",
"errorCorrection": "M",
"margin": 4,
"width": 400
},
"format": "svg"
}' | jq -r '.svg' > url.svg
```
### WiFi QR code
```bash
curl -s -X POST http://localhost:3000/api/generate \
-H 'Content-Type: application/json' \
-d '{
"type": "wifi",
"data": {
"ssid": "OfficeNetwork",
"password": "supersecret",
"security": "WPA",
"hidden": false
},
"format": "svg"
}' | jq -r '.svg' > wifi.svg
```
Encoded string produced: `WIFI:T:WPA;S:OfficeNetwork;P:supersecret;H:false;;`
### vCard QR code
```bash
curl -s -X POST http://localhost:3000/api/generate \
-H 'Content-Type: application/json' \
-d '{
"type": "vcard",
"data": {
"firstName": "Jane",
"lastName": "Smith",
"org": "Acme Corp",
"title": "Product Manager",
"phone": "+1-555-0100",
"email": "jane@acme.com",
"url": "https://acme.com"
},
"style": { "errorCorrection": "Q" },
"format": "svg"
}' | jq -r '.svg' > vcard.svg
```
### PNG output
```bash
curl -s -X POST http://localhost:3000/api/generate \
-H 'Content-Type: application/json' \
-d '{
"type": "url",
"data": { "url": "https://example.com" },
"style": { "width": 512 },
"format": "png"
}' | jq -r '.dataUrl' | sed 's/data:image\/png;base64,//' | base64 -d > qrcode.png
```
### Logo embedding
```bash
LOGO_B64=$(base64 -i logo.png)
curl -s -X POST http://localhost:3000/api/generate \
-H 'Content-Type: application/json' \
-d "{
\"type\": \"url\",
\"data\": { \"url\": \"https://example.com\" },
\"style\": { \"errorCorrection\": \"H\" },
\"logo\": \"data:image/png;base64,$LOGO_B64\",
\"format\": \"svg\"
}" | jq -r '.svg' > branded.svg
```
Logo is auto-centered at 20% of QR width. Error correction is forced to H when a logo is present.
### Bulk generation from CSV
```bash
# codes.csv:
# data,filename,fgColor
# https://example.com,homepage,#000000
# https://example.com/about,about,#1d4ed8
curl -X POST http://localhost:3000/api/bulk \
-F "csv=@codes.csv" \
--output qrcodes.zip
unzip qrcodes.zip -d ./qrcodes/
```
### Bulk generation from JSON
```bash
curl -X POST http://localhost:3000/api/bulk \
-H 'Content-Type: application/json' \
-d '{
"codes": [
{"data": "https://a.com", "filename": "a"},
{"data": "https://b.com", "filename": "b", "fgColor": "#1d4ed8"}
],
"format": "svg"
}' --output qrcodes.zip
```
## API reference
| Method | Path | Description |
|---|---|---|
| POST | /api/generate | Generate a single QR code |
| POST | /api/bulk | Batch generate from CSV or JSON array, returns ZIP |
| GET | /api/templates | List saved style templates |
| POST | /api/templates | Save a style template |
| DELETE | /api/templates/:id | Delete a template |
| GET | /api/health | Server health check |
### POST /api/generate request body
| Field | Type | Default | Description |
|---|---|---|---|
| type | string | required | url, text, wifi, vcard |
| data | object | required | Type-specific payload |
| style.fgColor | string | #000000 | Foreground hex color |
| style.bgColor | string | #ffffff | Background hex color |
| style.errorCorrection | string | M | L, M, Q, or H |
| style.margin | number | 4 | Quiet zone in modules |
| style.width | number | 400 | Output size in pixels |
| logo | string|null | null | Base64 data URL of logo image |
| format | string | svg | svg or png |
### POST /api/generate response
| Field | Type | Description |
|---|---|---|
| svg | string | SVG markup (format=svg only) |
| dataUrl | string | data:image/... base64 URL |
| size | number | Rendered pixel size |
## Error correction guide
| Level | Recovery | When to use |
|---|---|---|
| L | 7% | Clean print environments, smallest code |
| M | 15% | Default, general purpose |
| Q | 25% | Outdoor/industrial, long URLs |
| H | 30% | Required when embedding a logo |
## Behavior notes
- Logo embedding always upgrades error correction to H, regardless of the style setting
- Transparent background is only supported in SVG output; PNG always has a background
- Bulk endpoint rejects requests over MAX_BULK_CODES (default 500)
- All hex colors must be in #rrggbb format
- vCard data over ~300 characters: use error correction Q or H for reliability
- History is stored in browser localStorage only; the server is stateless
## Troubleshooting
**QR code does not scan**
- Check foreground/background contrast (minimum 4:1 ratio recommended)
- With logo: ensure error correction is H and logo size is below 30%
- Inverted codes (light on dark) may not scan on all devices
**Bulk job returns 400**
- CSV has more than MAX_BULK_CODES rows
- Required columns `data` and `filename` are missing
**Logo not appearing in SVG**
- Logo must be provided as a base64 data URL (data:image/png;base64,... or data:image/svg+xml;base64,...)
- Maximum logo size: 500 KB before encodingRelated Skills
Skill: Invoice Generator Core
## Purpose
password-generator
Use the password-generator app to generate secure passwords, passphrases, and PINs in the browser.
nginx-config-generator
Generate production-ready nginx configuration files for reverse proxy, SSL, rate limiting, and caching setups. Use when you need an nginx config for a web application, API, static site, or reverse proxy. Triggers include "nginx config", "nginx configuration", "nginx setup", "reverse proxy config", "SSL nginx", "nginx rate limiting", or any request involving nginx web server configuration.
expense-report-generator
Manage expenses and generate PDF reports using the expense-report-generator app.
Skill: Uptime Monitoring
## Overview
Skill: Status Page
## Overview
Skill: unit-conversion
## Overview
Skill: recipe-scaler
## Overview
reading-list
Operate the reading-list API to save, manage, tag, search, and export articles.
email-digest
Configure, test, and troubleshoot the reading-list daily email digest delivered via nodemailer.
websocket-realtime
Use the WebSocket connection in poll-builder to receive live vote updates. Use when you need to stream real-time poll results, monitor a poll for new votes, or build a live dashboard. Triggers include "live results", "real-time updates", "stream votes", "watch poll", or "WebSocket".
poll-builder
Self-hosted poll creation tool with real-time results. Use when you need to create a poll, check vote counts, close a poll, export results, or get the shareable link for a poll. Triggers include "create poll", "vote", "poll results", "survey", "collect votes", "share poll", or any task involving polling or voting.