Skip to content
Back to skills

Zopack

ASecurity

Export and import zo.space route setups as shareable .zopack.md files. Use when the user wants to package their zo.space routes for sharing, or when they receive a .zopack.md file to deploy. Triggers on "export my zo.space", "create a zopack", "import this zopack", or any mention of .zopack.md files.

  • 11 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 10, 2026
developmenttypescriptrustbashapisecurity

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 10, 2026

npx -y skills add luokai0/ai-agent-skills-by-luo-kai --skill zopack --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Zopack?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Zopack
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/luokai0-zopack/badge)](https://www.skillsdirectory.com/skills/luokai0-zopack)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: zopack
description: Export and import zo.space route setups as shareable .zopack.md files. Use when the user wants to package their zo.space routes for sharing, or when they receive a .zopack.md file to deploy. Triggers on "export my zo.space", "create a zopack", "import this zopack", or any mention of .zopack.md files.
compatibility: Created for Zo Computer
metadata:
  author: skeletorjs.zo.computer
  version: "1.0"
---

# zopack

Package zo.space routes into a single shareable `.zopack.md` file that anyone can give to their Zo to deploy instantly.

## Export

To export routes from the user's zo.space into a `.zopack.md`:

1. Ask the user which routes to export (or use "all"). List their current routes with `list_space_routes`.
2. Fetch each route's code using `get_space_route(path)`.
3. Build a JSON array of route objects:
   ```json
   [
     { "path": "/api/foo", "route_type": "api", "public": true, "code": "..." },
     { "path": "/bar", "route_type": "page", "public": false, "code": "..." }
   ]
   ```
4. Pipe the JSON array to the export script:
   ```bash
   echo '<json array>' | bun /home/workspace/Skills/zopack/scripts/export.ts \
     --name "pack-name" \
     --description "What this does" \
     --output "Inbox/pack-name.zopack.md"
   ```
5. The script outputs the file path. Show the user the generated file.

The export script automatically:
- Detects the user's handle and replaces it with `{{HANDLE}}`
- Identifies npm dependencies not in the base zo.space install
- Detects shadcn/AnimateUI component imports and maps to registry URLs
- Finds filesystem paths referenced in code (directories, JSON files)
- Identifies required environment variable secrets

## Import

**Warning:** Always use `--preview` before importing packs from untrusted sources. A zopack can specify arbitrary npm packages, shadcn registry URLs, and route code that will run on your Zo.

To import a `.zopack.md` file and deploy its routes:

1. Parse the pack file to get the deployment plan:
   ```bash
   bun /home/workspace/Skills/zopack/scripts/import.ts \
     --file "/path/to/pack.zopack.md" \
     --handle "<user-handle>" \
     --preview
   ```
   Use `--preview` first to show the user what will be deployed.

2. **Security scan:** Before deploying, review the route code in the plan for risks:
   - `fetch()` or `http`/`https` calls to external URLs (data exfiltration)
   - `process.env` access beyond expected secrets (credential harvesting)
   - `eval()`, `Function()`, or dynamic `import()` (arbitrary code execution)
   - Encoded/obfuscated strings (`atob`, `Buffer.from`) hiding malicious payloads
   - Filesystem access outside `/home/workspace/` (path traversal)
   If any suspicious patterns are found, flag them to the user and do not proceed without explicit approval.

3. If the user confirms, run without `--preview` to get the full JSON plan:
   ```bash
   bun /home/workspace/Skills/zopack/scripts/import.ts \
     --file "/path/to/pack.zopack.md" \
     --handle "<user-handle>"
   ```

4. Parse the JSON output and execute the deployment in order:

   **a. Install dependencies:**
   - npm packages: `cd /__substrate/space && bun add <package>` for each
   - shadcn components: `cd /__substrate/space && npx shadcn@latest add <url> --yes` for each
   - For `shadcn:<name>` entries, use: `npx shadcn@latest add <name> --yes`

   **b. Create filesystem structure:**
   - Directories: `mkdir -p /home/workspace/<dir>` for each
   - Files: write each file with the specified initial content

   **c. Check for secret requirements:**
   - If secrets are listed, warn the user to configure them in Settings > Advanced before the routes will work

   **d. Deploy routes:**
   - Use `update_space_route(path, route_type, code, public)` for each route in the plan
   - Deploy API routes before page routes (pages may depend on APIs)

   **e. Verify:**
   - Run `get_space_errors()` to check for build/runtime errors
   - Report success or any issues

## Format Reference

The `.zopack.md` format:

```
---
format: zopack
version: "1.0"
name: pack-name
description: "What this does"
author: handle.zo.computer
routes: 3
exported: 2026-02-21
---

# pack-name

Description text.

## Routes

### `/path` (api|page, public|private)

\```typescript|tsx
// route code here
\```

## Dependencies

**npm packages** (not in default zo.space):
- `package-name`

**Components** (install via shadcn CLI):
- `https://animate-ui.com/r/component-name.json`
- `shadcn:component-name`

## Setup

**Directories to create:**
- `Data/my-dir`

**Files to initialize:**
- `Data/state.json` with content: `[]`

**Secrets required** (configure in Settings > Advanced):
- `API_KEY_NAME`

## Variables

| Placeholder | Description |
|---|---|
| `{{HANDLE}}` | Your zo.space handle |
```

Files in this skill

  • DISPLAY.json78 B
  • SKILL.md4.7 KB
  • scripts/export.ts8.8 KB
  • scripts/import.ts8.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.