Scan to Skill
Install skills from QR codes in one flow: decode -> parse slug -> install -> verify.
Trigger
When a user sends an image and asks to install from QR:
- Detect image attachment in the current message.
- Run
scripts/install_from_qr.py <image>(dry run by default). - Show the decoded text and parsed slug to the user.
- Prompt the user: "Decoded skill:
<slug>. Do you want me to install it?" - If the user confirms, run
scripts/install_from_qr.py <image> --confirmto execute the install. - Show the install result and suggest next steps.
Workflow
- Get QR input image
- Use uploaded image, screenshot, or camera snapshot.
- Decode QR content
- Prefer
scripts/install_from_qr.py --decode-only <image>.
- Prefer
- Parse install target
- Accept:
- direct slug (
skill-feed) - ClawHub URL (
https://clawhub.ai/<owner>/<slug>orhttps://clawhub.ai/<slug>) - install command text (
clawhub install <slug>)
- direct slug (
- Accept:
- Install with ClawHub CLI
- Run install command generated by script.
- Verify installation
- Check with
clawhub list.
- Check with
Commands
- Decode only (no install attempt):
python3 scripts/install_from_qr.py --decode-only <image_path>
- Dry run (decode + show install command, but do not install):
python3 scripts/install_from_qr.py <image_path>
- Install after user confirms:
python3 scripts/install_from_qr.py <image_path> --confirm
- Install to custom dir:
python3 scripts/install_from_qr.py <image_path> --confirm --dir skills
Safety
- The script defaults to dry run. Install only executes when
--confirmis explicitly passed. - The agent must never pass
--confirmwithout the user's explicit approval. - Only accept URLs from verified ClawHub domains (
clawhub.ai,clawhub.comand theirwww.variants). - URLs from non-ClawHub domains are rejected by the script (exit code 4).
- Plain slugs and
clawhub installcommands are accepted as trusted sources. - For any slug the user hasn't seen before, recommend checking the skill page on ClawHub before installing.
Output format
- Decoded QR:
<raw_text> - Parsed slug:
<slug> - Install command:
<command> - Result: success/failure + reason
- Next step: open skill page or run quick test
References
- Parsing rules and examples:
references/slug-parsing.md