1panel-app-builder
Builds and manages local apps for the 1Panel platform.
Install
mkdir -p .claude/skills/1panel-app-builder && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/18060" && unzip -o skill.zip -d .claude/skills/1panel-app-builder && rm skill.zipInstalls to .claude/skills/1panel-app-builder
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Use when packaging Docker deployments as 1Panel local app store apps, including GitHub projects, docker-compose.yml files, docker run commands, app metadata, version directories, icons, README files, and 1Panel validation.Key capabilities
- →Package Docker deployments as 1Panel local app store apps
- →Convert GitHub projects to 1Panel app packages
- →Transform `docker-compose.yml` files into 1Panel app structures
- →Convert `docker run` commands to 1Panel app packages
- →Fix 1Panel app metadata and port variables
- →Validate app packages before commit
How it works
This skill builds or reviews 1Panel local app store packages by converting Docker deployment configurations into a structured directory format with metadata and validation.
Inputs & outputs
When to use 1panel-app-builder
- →Package docker app
- →Create 1Panel app store manifest
- →Validate app structure
- →Convert docker-compose to 1Panel app
About this skill
1Panel App Builder
Build or review 1Panel local app store packages from Docker deployments.
When To Use
Use this skill when the user asks to:
- Add or package a 1Panel local app store app.
- Convert a GitHub project,
docker-compose.yml, ordocker runcommand intoapps/<app-key>/. - Fix 1Panel app metadata, port variables, compose files, README files, icons, or version directories.
- Validate an app package before commit.
For detailed real app examples, read references/1panel-examples.md only when needed.
Required Shape
apps/<app-key>/
├── data.yml
├── logo.png
├── README.md
├── README_en.md
└── <version>/
├── data.yml
├── docker-compose.yml
└── data/
Some apps also include latest/. When both latest/ and a concrete version exist, latest/ must use image tag latest, and the concrete version directory should use the pinned tag.
Workflow
- Inspect the source deployment.
- GitHub: inspect README/deploy docs and registry image; the generator checks common compose paths before README
docker runfallback. - Compose: parse services, image tags, ports, volumes, environment, dependencies.
- Docker run: parse image,
--name,-p/--publish,-v/--volume,-e/--env, and--env-file.
- GitHub: inspect README/deploy docs and registry image; the generator checks common compose paths before README
- Choose a stable app key.
- Lowercase, hyphenated, directory-safe.
additionalProperties.keymust match the directory name.
- Generate or edit app files.
- Prefer
latest/plus a concrete version when a concrete image tag is known. - Preserve source volumes and environment unless they conflict with 1Panel conventions.
- Prefer
- Resolve a real icon.
- Do not create placeholders.
- Use
--icon-mode skipfor drafts,cache-onlyfor offline work, andrequiredwhen an icon is mandatory.
- Validate before delivery.
- Run
skills/scripts/validate-app.sh ./apps/<app-key>. - For Skill script changes, run
skills/tests/run_all.sh.
- Run
1Panel Rules
container_nameshould be${CONTAINER_NAME}.- Services should use
restart: always. - Use external
1panel-network. - Port mappings should use
PANEL_APP_PORT_*variables defined in the versiondata.yml. - Persistent mounts should prefer relative
./data/...paths. - Add
labels: createdBy: "Apps". - Keep metadata tags aligned with top-level
data.yaml.
Preferred port variables:
PANEL_APP_PORT_HTTP
PANEL_APP_PORT_HTTPS
PANEL_APP_PORT_API
PANEL_APP_PORT_ADMIN
PANEL_APP_PORT_PROXY
PANEL_APP_PORT_PROXY_HTTP
PANEL_APP_PORT_PROXY_HTTPS
PANEL_APP_PORT_DB
PANEL_APP_PORT_SSH
PANEL_APP_PORT_S3
PANEL_APP_PORT_SYNC
Scripts
Run from /root/github/1Panel-Appstore/skills unless noted.
Generate a draft:
./scripts/generate-app.sh --app-key my-app --name MyApp --version 1.2.3 --icon-mode skip ./docker-compose.yml
Useful generation options:
--output <dir> Output base directory. Default: ./apps
--app-key <key> Override app directory key.
--name <name> Override display name.
--service <name> Select the main service from a multi-service compose file.
--version <tag> Override concrete version and image tag.
--icon-mode <mode> auto|required|skip|cache-only
--icon-url <url> Download icon from a known URL.
--force Allow overwriting an existing generated directory.
--dry-run Print parsed values without writing files.
--check-deps Check required local tools.
Download an icon:
./scripts/download-icon.sh --mode cache-only redis ./logo.png
./scripts/download-icon.sh --mode required --url https://example.com/logo.png myapp ./logo.png
Validate an app:
./scripts/validate-app.sh ../apps/<app-key>
Validate Skill tooling:
./tests/run_all.sh
Icon Policy
Icon lookup order:
- Known explicit URL (
--icon-url). - Local cache under
skills/.cache/icons. - Dashboard Icons.
- Simple Icons.
- selfh.st Icons.
Missing icons are acceptable for drafts only. For final app delivery, leave logo.png absent and tell the user what is missing instead of inventing an inaccurate image.
Validation Gate
Before considering an app ready:
- Run
./scripts/validate-app.sh ../apps/<app-key>. - Confirm
latest/uses:latest. - Confirm concrete version directories use matching image tags or document the exception.
- Confirm every compose
PANEL_APP_PORT_*variable exists in the versiondata.yml. - Inspect generated README and metadata manually; the generator is a starting point, not an authority.
Common Mistakes
- Keeping a placeholder
logo.png. - Using a host absolute volume path when
./data/...would work. - Forgetting to define a port variable used by
docker-compose.yml. - Letting
additionalProperties.keydrift from the app directory name. - Treating generated metadata, descriptions, tags, and architectures as final without review.
When not to use it
- →When needing to create placeholder `logo.png` files
- →When using host absolute volume paths instead of relative `./data/...` paths
- →When `additionalProperties.key` does not match the app directory name
Limitations
- →Requires adherence to 1Panel rules for container names, restart policies, and network usage.
- →Icon policy dictates specific lookup order and disallows placeholders for final delivery.
How it compares
This skill automates the process of packaging Docker applications for the 1Panel app store, ensuring adherence to specific structural and metadata requirements, unlike manual file creation.
Compared to similar skills
1panel-app-builder side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| 1panel-app-builder (this skill) | 0 | 19d | Review | Intermediate |
| deployment-engineer | 4 | 3mo | No flags | Advanced |
| devops | 2 | 6mo | Review | Intermediate |
| ecs | 2 | 2mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
deployment-engineer
sickn33
Expert deployment engineer specializing in modern CI/CD pipelines, GitOps workflows, and advanced deployment automation. Masters GitHub Actions, ArgoCD/Flux, progressive delivery, container security, and platform engineering. Handles zero-downtime deployments, security scanning, and developer experience optimization. Use PROACTIVELY for CI/CD design, GitOps implementation, or deployment automation.
devops
mrgoonie
Deploy to Cloudflare (Workers, R2, D1), Docker, GCP (Cloud Run, GKE), Kubernetes (kubectl, Helm). Use for serverless, containers, CI/CD, GitOps, security audit.
ecs
itsmostafa
AWS ECS container orchestration for running Docker containers. Use when deploying containerized applications, configuring task definitions, setting up services, managing clusters, or troubleshooting container issues.
exa-deploy-integration
jeremylongshore
Deploy Exa integrations to Vercel, Fly.io, and Cloud Run platforms. Use when deploying Exa-powered applications to production, configuring platform-specific secrets, or setting up deployment pipelines. Trigger with phrases like "deploy exa", "exa Vercel", "exa production deploy", "exa Cloud Run", "exa Fly.io".
local-environment
polarsource
Local development environment management for Polar using Docker
openevidence-deploy-integration
jeremylongshore
Deploy OpenEvidence integrations to healthcare production environments. Use when deploying to production, setting up staging environments, or configuring cloud deployments for clinical AI applications. Trigger with phrases like "deploy openevidence", "openevidence staging", "openevidence production deploy", "release openevidence".