视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
self-host-packager【文档与办公】Use when asked to make a project self-hostable, package an app for Docker, write a docker-compose setup, document self-hosting, or let users run my app on their own server. Produces a one-command self-host for a project: docker-compose.yml, a .env.example with a table explaining every variable, SELF_HOSTING.md covering HTTPS, backups and upgrades, an…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Self-hosters will try a project if it starts with one command and they understand where their data lives. Most self-hosting guides fail at the second day: no HTTPS, no backup story, and an upgrade that breaks the database. This skill packages a project so it starts with docker compose up -d, keeps all state in one folder, and documents HTTPS, backups and upgrades.
Ask for these if not provided:
A complete file with:
latest)depends_on with condition: service_healthy./data/ (for example ./data/db, ./data/uploads)restart: unless-stopped127.0.0.1 by default, with a comment on exposing it behind a reverse proxyIf the project has no Dockerfile, include a multi-stage Dockerfile that runs as a non-root user.
The file with safe placeholder values, then a table: | Variable | Required? | Default | What it does | Example | Secret? |
Every variable the app reads is listed. Secrets have no default and the table says how to generate one (for example openssl rand -hex 32).
Sections, in order:
.env.example to .env, fill the required values, docker compose up -d, and what to open in the browser./data/ plus .env is the complete state; gives a backup command that stops writes or uses the database's dump tool, and a restore drilldocker compose pull && docker compose up -d, and how to roll backCommands that prove a fresh install works: start, wait for health, hit the health endpoint, create one record, restart, and confirm the record survived.
docker compose up -d with a filled .env is the only start command neededlatest./data/ folder, and the docs say solatest tags. An upgrade happens by accident on the next pull.