首页龙虾技能列表 › Shellbot Website — 技能工具

Shellbot Website — 技能工具

v1.1.0

Build, deploy, and design micro apps and websites on Cloudflare Workers. Scaffolds from templates (React Router + Hono, Next.js, Astro, Remix), deploys, sets...

0· 127·0 当前·0 累计
by @cohnen·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/18
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
medium confidence
The skill's requirements, scripts, and runtime instructions align with its stated purpose (scaffolding and managing Cloudflare Workers), but there are normal operational risks you should understand (Cloudflare token scope and running remote templates/npm scaffolding).
评估建议
This skill is coherent for building and deploying Cloudflare Workers, but before installing or running it: 1) Treat the CLOUDFLARE_API_TOKEN as a high-privilege secret — create a narrowly-scoped API token (Workers Script: Edit, D1/KV/R2/Queue edits only as needed, DNS edit only if you need domain setup). 2) Review/manage any template URL you pass (--template-url) before using it — npm create / npm install will execute code from registries or GitHub during scaffolding. 3) Run scripts locally (not...
详细分析 ▾
用途与能力
Name/description (Cloudflare Workers scaffolding, deploy, domain, resources) match the declared primary credential (CLOUDFLARE_API_TOKEN) and the included scripts (create, deploy, provision, domain, secrets, teardown). Required binaries/env are proportionate to those tasks.
指令范围
SKILL.md instructs the agent to run the provided bash scripts and use wrangler/curl to talk to api.cloudflare.com — exactly what a Cloudflare worker management tool needs. However, create-project.sh supports a --template-url and uses `npm create cloudflare` which will fetch and run code from external template repos (npm / GitHub). That is expected for scaffolding but increases the runtime attack surface (untrusted template code can execute during scaffold). The skill documents OAuth storage (~/.wrangler/config/default.toml) and uses wrangler whoami as fallback — the scripts rely on Cloudflare credentials (token or local OAuth). No instructions were found that read or exfiltrate unrelated system data or call unexpected external endpoints beyond Cloudflare and npm/template hosts.
安装机制
There is no install spec; this is instruction+script based. All code is contained in repository scripts (no remote install step in the skill package itself). The risk from installs comes from the normal operations the scripts perform (npm create, npm install) which will fetch dependencies from public registries — expected for project scaffolding.
凭证需求
The skill requests one main credential (CLOUDFLARE_API_TOKEN) and optionally an account ID — appropriate for modifying Workers, DNS, D1, KV, R2, Queues. This credential has broad power over the Cloudflare account; the skill's actions (create projects, provision resources, manage DNS/custom domains, secrets) legitimately require elevated Cloudflare scopes. Users should create a least-privilege API token with only the required scopes rather than a full global API key.
持久化与权限
always:false and the skill is user-invocable. It does not request permanent platform-level presence and does not modify other skills or global agent configuration. It may read/create files in project directories and relies on wrangler OAuth tokens if present in the user's home directory (standard behaviour).
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.1.02026/3/18

shellbot-website 1.1.0 - Added new resource provisioning scripts: provision-d1.sh, provision-kv.sh, provision-queue.sh. - Improved and refactored deployment, secret management, and status scripts. - Enhanced documentation in SKILL.md with expanded instructions and command usage. - Provided clearer authentication guidance and non-interactive/automation notes. - Expanded examples and quick start section for all supported provisioning commands.

● 无害

安装命令 点击复制

官方npx clawhub@latest install shellbot-website
镜像加速npx clawhub@latest install shellbot-website --registry https://cn.clawhub-mirror.com

技能文档

Build and deploy micro apps and websites on Cloudflare Workers with production-grade design.

Arguments

  • Command: $0 (create | deploy | domain | provision | secrets | status | teardown)
  • Arg 1: $1 (template name, resource type, domain, etc.)
  • Arg 2+: $2, $3, etc.
  • All args: $ARGUMENTS
CommandScriptExample
createscripts/create-project.sh/shellbot-website create my-app --template react-hono
deployscripts/deploy.sh/shellbot-website deploy --env production
domainscripts/setup-domain.sh/shellbot-website domain my-worker example.com
provisionscripts/provision-.sh/shellbot-website provision d1 my-db
secretsscripts/manage-secrets.sh/shellbot-website secrets put API_KEY
statusscripts/status.sh/shellbot-website status --resources
teardownscripts/teardown.sh/shellbot-website teardown my-worker

Authentication

Two authentication methods, checked in this order:

Method 1: API Token (recommended, required for agents/CI)

Set CLOUDFLARE_API_TOKEN environment variable. This is the primary method — it takes precedence over OAuth if both are present.

If any command fails with authentication errors, tell user:

Get an API token from https://dash.cloudflare.com/profile/api-tokens
Use the "Edit Cloudflare Workers" template, or create a custom token with:
  Workers Scripts: Edit
  D1: Edit
  Workers KV Storage: Edit
  Workers R2 Storage: Edit
  Zone DNS: Edit (for custom domains)
Then: export CLOUDFLARE_API_TOKEN="your-token-here"

Method 2: OAuth via wrangler login (fallback for local use)

If CLOUDFLARE_API_TOKEN is not set, attempt OAuth login:

wrangler login

This opens a browser for Cloudflare OAuth. When running in an agent context:

  • Run wrangler login — it will print an authorization URL to stdout
  • Show the URL to the user and ask them to open it in their browser
  • The user authorizes in the browser, which redirects to localhost:8976
  • Wrangler receives the callback and stores OAuth tokens in ~/.wrangler/config/default.toml

Limitation: This only works when the agent runs on the user's local machine (the OAuth callback must reach localhost:8976). It will NOT work in remote/CI environments — use API token there.

After login, verify with:

wrangler whoami

Auth check order in scripts

All scripts check CLOUDFLARE_API_TOKEN first. If not set, they check if wrangler whoami succeeds (meaning OAuth tokens exist in ~/.wrangler/config/default.toml). If neither works, they error with instructions for both methods.

Optional: Account ID

CLOUDFLARE_ACCOUNT_ID — auto-detected by wrangler. Set it to skip the account selection prompt when multiple accounts exist.

Find at: Dashboard → Overview → right sidebar → Account ID
Then: export CLOUDFLARE_ACCOUNT_ID="your-account-id"

Prerequisites

  • Node.js v20+
  • Wrangler: npm install -g wrangler or use npx wrangler

Verify setup:

wrangler whoami

Non-Interactive Design

All scripts run fully non-interactively — no prompts, no user input required. This makes them safe for agent invocation. Destructive operations require explicit --force flags instead of confirmation prompts.

Quick Start

# 1. Scaffold from template (fully non-interactive, no deploy, no git init)
bash scripts/create-project.sh my-app

# 2. Local development cd my-app && npm run dev

# 3. Deploy to Cloudflare bash scripts/deploy.sh

# 4. Add custom domain bash scripts/setup-domain.sh my-app example.com

# 5. Provision resources as needed bash scripts/provision-d1.sh my-db --binding DB bash scripts/provision-kv.sh my-cache --binding CACHE bash scripts/provision-r2.sh my-assets --binding ASSETS

Project Scaffolding

Default Templates

Short NameTemplateBest For
react-hono (default)react-router-hono-fullstack-templateFullstack apps with React Router 7 + Hono API
nextnext-starter-templateNext.js apps on CF Workers
# Primary default (React Router + Hono)
bash scripts/create-project.sh my-app

# Use Next.js instead bash scripts/create-project.sh my-app --template next

# Use any CF template by short name or full name bash scripts/create-project.sh my-app --template astro-blog bash scripts/create-project.sh my-app --template remix bash scripts/create-project.sh my-app --template vite-react

See references/cf-templates.md for the full catalog of 36+ templates.

Custom Template URL

bash scripts/create-project.sh my-app --template-url https://github.com/user/repo

Deployment

# Deploy to production
bash scripts/deploy.sh

# Deploy to specific environment bash scripts/deploy.sh --env staging bash scripts/deploy.sh --env production

# Dry run (shows what would deploy) bash scripts/deploy.sh --dry-run

# View deployments wrangler deployments list

# Rollback to previous version wrangler rollback [version-id]

The deploy.sh script pre-checks that wrangler config exists and CLOUDFLARE_API_TOKEN is set before deploying.

Custom Domains

Three approaches to connect a custom domain to a CF Worker. See references/custom-domains.md for the full guide.

1. Automated Setup (Recommended)

# Domain must already be in your CF account
bash scripts/setup-domain.sh my-worker example.com

# With specific zone ID (skips lookup) bash scripts/setup-domain.sh my-worker example.com --zone-id abc123

# Subdomain bash scripts/setup-domain.sh my-worker app.example.com

2. Via wrangler.toml Routes

[[routes]]
pattern = "example.com/"
zone_id = "your-zone-id"

3. Via Cloudflare Dashboard

Workers & Pages → your worker → Settings → Domains & Routes → Add Custom Domain.

DNS Requirements

  • Domain must be in your Cloudflare account (orange-cloud proxied)
  • SSL is automatic — no certificate management needed
  • DNS propagation takes 1-5 minutes for proxied domains

Resource Provisioning

D1 (SQL Database)

bash scripts/provision-d1.sh my-db --binding DB
# Creates database, outputs binding snippet for wrangler.toml
# Optional: --migration-file schema.sql (applies initial migration)

Common D1 operations:

wrangler d1 execute my-db --command "SELECT  FROM users"
wrangler d1 execute my-db --file schema.sql
wrangler d1 execute my-db --local --command "..."  # Local dev
wrangler d1 migrations create my-db add-users
wrangler d1 migrations apply my-db

KV (Key-Value Store)

bash scripts/provision-kv.sh my-cache --binding CACHE
# Creates namespace, outputs binding snippet

R2 (Object Storage)

bash scripts/provision-r2.sh my-assets --binding ASSETS
# Creates bucket, outputs binding snippet

Queues

bash scripts/provision-queue.sh my-queue --binding QUEUE --type producer
# Creates queue, outputs producer/consumer binding snippets

Secrets Management

# Add a secret (non-interactive)
bash scripts/manage-secrets.sh put API_KEY "sk-..."

# List secrets bash scripts/manage-secrets.sh list

# Delete a secret bash scripts/manage-secrets.sh delete API_KEY

# Bulk upload from JSON bash scripts/manage-secrets.sh bulk secrets.json

# Environment-specific bash scripts/manage-secrets.sh put API_KEY "sk-..." --env production

Configuration

Wrangler supports TOML and JSON/JSONC. If both exist, JSON takes precedence. Pick one.

Quick Reference (wrangler.toml)

name = "my-worker"
main = "src/index.ts"
compatibility_date = "2024-12-30"
compatibility_flags = ["nodejs_compat"]

[vars] API_URL = "https://api.example.com"

[[d1_databases]] binding = "DB" database_name = "my-db" database_id = "xxx"

[[kv_namespaces]] binding = "CACHE" id = "xxx"

[[r2_buckets]] binding = "ASSETS" bucket_name = "my-assets"

[env.production] vars = { API_URL = "https://api.example.com" }

[env.staging] vars = { API_URL = "https://staging-api.example.com" }

See references/wrangler-config.md for the full reference including JSONC format, static assets, and all binding types.

Frontend Design

When building the frontend, apply these principles. Each links to a deep reference guide.

Typography

See references/typography.md

Choose distinctive fonts (not Inter/Roboto). Use a modular type scale with clamp() for headings. Pair a display font with a body font. Use font-display: swap and fallback metric matching to prevent layout shift.

Color & Theme

See references/color-and-contrast.md

Use OKLCH for perceptually uniform palettes. Tint neutrals toward your brand hue. Follow the 60-30-10 rule (neutrals / secondary / accent). Avoid pure black/white. Avoid the AI palette (cyan-on-dark, purple-blue gradients).

Layout & Space

See references/spatial-design.md

Use a 4pt spacing system. Create rhythm through varied spacing. Use auto-fit grids. Avoid wrapping everything in cards. Embrace asymmetry.

Motion

See references/motion-design.md

Only animate transform and opacity. Use exponential easing (quart/quint/expo). 100-150ms for feedback, 200-300ms for state changes, 300-500ms for layout. Always support prefers-reduced-motion.

Interaction

See references/interaction-design.md

Design all 8 states (default, hover, focus, active, disabled, loading, error, success). Use :focus-visible for keyboard-only focus rings. Prefer optimistic UI and undo over confirmation dialogs.

Responsive

See references/responsive-design.md

Mobile-first with min-width queries. Use container queries for components. Detect input method (pointer: fine/coarse), not just screen size. Handle safe areas.

UX Writing

See references/ux-writing.md*

Specific verb + object for buttons. Every error message answers what/why/how-to-fix. Empty states are onboarding moments. Pick one term and stick with it.

The AI Slop Test

If someone sees this interface and immediately thinks "AI made this" — that's the problem. Avoid: cyan-on-dark, purple gradients, glassmorphism everywhere, identical card grids, gradient text, dark mode with glowing accents. Make unexpected, intentional design choices.

Context Gathering

Before doing design work, you MUST have confirmed design context:

  • Check loaded instructions for a Design Context section
  • Check .impeccable.md in project root
  • If neither exists, ask the user for: target audience, use cases, brand personality/tone

Troubleshooting

IssueSolution
"Not authenticated"Set CLOUDFLARE_API_TOKEN env var or run wrangler login
Node version errorRequires Node.js v20+
No config foundRun from project root with wrangler.toml or wrangler.jsonc
Config changes ignoredJSON takes precedence over TOML if both exist
Binding not foundCheck wrangler config bindings match code references
Custom domain not workingDomain must be proxied (orange cloud) in CF DNS
SSL pendingWait 1-5 min for automatic certificate provisioning

Scripts & References

Scripts

ScriptPurpose
scripts/create-project.shScaffold project from CF templates
scripts/deploy.shDeploy worker with pre-checks
scripts/setup-domain.shConfigure custom domain via CF API
scripts/provision-d1.shCreate D1 database + binding snippet
scripts/provision-kv.shCreate KV namespace + binding snippet
scripts/provision-r2.shCreate R2 bucket + binding snippet
scripts/provision-queue.shCreate queue + binding snippet
scripts/manage-secrets.shAdd/list/delete/bulk secrets
scripts/status.shDeployment status, resources, logs
scripts/teardown.shDelete worker + resources

References

FileTopic
references/cf-templates.mdAll 36+ CF quickstart templates
references/custom-domains.mdDomain setup, DNS, routes, SSL
references/wrangler-config.mdFull wrangler.toml/jsonc reference
references/typography.mdFont selection, scales, loading
references/color-and-contrast.mdOKLCH, palettes, dark mode
references/spatial-design.mdGrids, spacing, hierarchy
references/motion-design.mdAnimation timing, easing
references/interaction-design.mdStates, forms, focus, loading
references/responsive-design.mdMobile-first, fluid, container queries
references/ux-writing.mdLabels, errors, empty states

External Resources

数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务