Skip to main content
ClaudeWave
Skill128 repo starsupdated 2mo ago

generate-qr-code-natively

This Claude Code skill generates QR codes entirely offline using either Bash (qrencode) or Node.js (qrcode package) without external API calls. Use it when users request QR code creation from text, URLs, or payloads, particularly in privacy-sensitive workflows or automation pipelines that must avoid external dependencies. The skill supports PNG, SVG, and terminal output formats with configurable error correction levels and sizing options.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/besoeasy/open-skills /tmp/generate-qr-code-natively && cp -r /tmp/generate-qr-code-natively/skills/generate-qr-code-natively ~/.claude/skills/generate-qr-code-natively
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# Generate QR Code Natively

Create QR codes fully offline on the local machine (no third-party QR API calls).

## When to use
- User asks to generate a QR code from text, URL, wallet address, or payload
- Privacy-sensitive workflows where data should stay local
- Fast automation pipelines that should not depend on external services

## Required tools / APIs
- No external API required
- Bash CLI option: `qrencode`
- Node.js option: `qrcode` package

Install options:

```bash
# Ubuntu/Debian
sudo apt-get update && sudo apt-get install -y qrencode

# Node.js
npm install qrcode
```

## Skills

### generate_qr_with_bash

Generate PNG and terminal QR directly from shell.

```bash
# Encode text into PNG
DATA="https://example.com/report?id=123"
qrencode -o qrcode.png -s 8 -m 2 "$DATA"

# Print QR in terminal (UTF-8 block mode)
qrencode -t UTF8 "$DATA"

# SVG output
qrencode -t SVG -o qrcode.svg "$DATA"
```

### generate_qr_with_nodejs

```javascript
import QRCode from 'qrcode';

const data = process.argv[2] || 'https://example.com';

async function main() {
  await QRCode.toFile('qrcode.png', data, {
    errorCorrectionLevel: 'M',
    margin: 2,
    width: 512
  });

  const svg = await QRCode.toString(data, { type: 'svg', margin: 2 });
  await import('node:fs/promises').then(fs => fs.writeFile('qrcode.svg', svg));

  const terminal = await QRCode.toString(data, { type: 'terminal' });
  console.log(terminal);
  console.log('Saved: qrcode.png, qrcode.svg');
}

main().catch(err => {
  console.error('QR generation failed:', err.message);
  process.exit(1);
});
```

Run:
```bash
node generate-qr.js "https://example.com/invoice/abc"
```

## Agent prompt
```text
You are generating QR codes locally without calling external QR APIs.
Use Bash (qrencode) for quick CLI generation or Node.js (qrcode package) for programmatic control.
Return:
1) command/code used,
2) output filenames (png/svg),
3) brief validation note (e.g., "scan test recommended").
If dependency is missing, provide the install command and retry.
```

## Best practices
- Keep payload concise for better scan reliability
- Use at least error correction level `M` for general use
- Export PNG for compatibility and SVG for scalable print/web usage
- Validate with a scanner after generation

## Troubleshooting
- `qrencode: command not found` → install `qrencode` via package manager
- Node import error → ensure `npm install qrcode` completed
- Dense/unclear QR image → increase image size/box size and reduce payload length

## See also
- [pdf-manipulation.md](pdf-manipulation.md) — combine generated QR images into documents