snap-analyzer

Scans a codebase and writes a snap-analysis.json packaging specification for snapcraft.

7|Updated Apr 30, 2026
One-click install
npx skills add https://github.com/rascheel/scheel-skills --skill snap-analyzer-rascheel
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: snap-analyzer
Source: https://github.com/rascheel/scheel-skills/tree/main/snap-analyzer
Command: npx skills add https://github.com/rascheel/scheel-skills --skill snap-analyzer-rascheel

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Packaging an application as a snap requires knowing its language, build system, entry points, system resource usage, interfaces, hooks, and confinement needs — information that is tedious and error-prone to gather manually from a codebase. ## Core Features & Use Cases - Systematic Codebase Scanning: Works through a structured checklist covering language/runtime, build system, entry points, daemons, GUI, network, filesystem, hardware, D-Bus, and audio usage. - Packaging Decisions: Selects the snapcraft plugin, determines strict vs classic confinement (with store-review caveats), maps system resources to snap interfaces with auto-connect status, and identifies required lifecycle hooks and layouts. - Structured Output: Writes a schema-versioned snap-analysis.json to /tmp that the snap-packager skill consumes to generate snapcraft.yaml. - Use Case: Point it at a Go daemon project and receive a complete packaging specification including the go plugin, network-bind plug, daemon mode, and an install hook for config seeding. ## Quick Start Analyze this project directory and produce the snap packaging specification file for it.

Frequently Asked Questions about snap-analyzer

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I analyze a codebase for snap packaging requirements?

Run the analysis on the project directory; it inspects files like go.mod, package.json, CMakeLists.txt, systemd units, and source imports to detect language, build system, entry points, and system resource usage. The findings are written to /tmp/snap-analysis-<dirname>.json.

What snapcraft plugin should I use for my project?

The plugin is chosen from detected build files: go.mod maps to the go plugin, package.json to npm, Cargo.toml to rust, CMakeLists.txt to cmake, and so on. Non-standard builds use the nil plugin with explicit override-build commands.

When should a snap use classic confinement instead of strict?

Classic confinement is only for apps that must exec arbitrary host binaries unknown at packaging time, such as shells, IDEs, compilers, and CI runners. It requires Snap Store manual review and does not work on Ubuntu Core, so strict with interfaces is the default.

Does the analyzer generate snapcraft.yaml directly?

No. It only writes the snap-analysis.json specification file. Generating snap/snapcraft.yaml, lifecycle hooks, and the packaging guide is the responsibility of the separate snap-packager skill.

How are snap interfaces selected for an application?

Each system resource found in the code (network sockets, devices, D-Bus services, audio, filesystem paths) is matched against an interface catalog that records the interface name, which apps need it, and whether it auto-connects or requires a manual snap connect.