Skip to content
Back to skills

Design

ASecurity

cli-jaw Design workspace: create, preview, run, and export design pages from the right sidebar. Covers panel UX, direct-write workflow, artifact lifecycle, wireframe generation, design system, and Open Design adapter.

  • 4 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 5, 2026
designapi

Works with

  • cli
  • api

Security analysis

A100/100

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

Scanned September 5, 2026

npx -y skills add lidge-jun/cli-jaw-skills --skill design --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Design?

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

Security grade badge for Design
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/lidge-jun-design/badge)](https://www.skillsdirectory.com/skills/lidge-jun-design)

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: design
description: "cli-jaw Design workspace: create, preview, run, and export design pages from the right sidebar. Covers panel UX, direct-write workflow, artifact lifecycle, wireframe generation, design system, and Open Design adapter."
metadata:
  {
    "openclaw":
      {
        "emoji": "🎨",
        "requires": { "bins": ["cli-jaw"] },
      },
  }
---

# Design Workspace

cli-jaw Design workspace skill. Design tab은 오른쪽 sidebar에서 Files, Diff,
Browser와 동급인 launcher/tab이다.

## Prerequisites

- `cli-jaw serve` running (UI preview, API routes).
- `jaw design` CLI commands (file-first, server fallback).

## Modular References

| File | When to Read | What It Covers |
|------|-------------|----------------|
| `references/panel-structure.md` | Design tab UI 구현 | Claude Design style toolbar + viewport, page selector dropdown |
| `references/page-lifecycle.md` | page CRUD, storage | create/list/show/path/edit, dashboard store layout, project-key |
| `references/direct-write.md` | agent artifact 수정 | safety boundary, file states, watcher, rescan, concurrent access |
| `references/run-and-preview.md` | design run, preview | run state machine, preview sandbox URL, snapshot/restore |
| `references/export-handoff.md` | export, sidebar handoff | export to project, Diff/Browser tab handoff, conflict policy |
| `references/wireframe-guide.md` | 와이어프레임 생성 | artifact 구조, template/catalog, design system reference |
| `references/api-and-cli.md` | API route, CLI command | full route list, jaw design CLI summary, file-first pattern |
| `references/open-design-adapter.md` | Open Design 연동 (v2+) | adapter status/list/import, vendor 안함, optional |

## Core Rules

### Panel Structure (Claude Design style)

```text
toolbar:
  left: reveal pageDir / export / reload from disk
  center: page selector dropdown ("ChatCLI Wireframes · 2 pages")
  right: zoom / annotate / edit / share with agent

body:
  full viewport preview (iframe or raw HTML)
```

3-column 분할, Canvas/Source/History 탭, run composer 없음.
상세: `references/panel-structure.md`.

### Safety Boundary

- 권한 단위: selected `pageDir` 하나.
- dashboard store root 전체 노출 안 함.
- projectDir은 export 때만 touch.
- `realpath` confinement, symlink reject (v1).
- artifact write allowlist: `artifact.html`, `prompt.md`, `page.json`, `assets/*`.
- 상세: `references/direct-write.md`.

### Concurrent Access

50개 managed instance (포트 3457~3506)가 같은 dashboard design store를 공유한다.
Notes식 `baseRevision` 409 conflict 패턴. 상세: `references/direct-write.md`.

### Right Sidebar Integration

- Design은 multi-instance kind (Files/Browser처럼 여러 tab 가능).
- Launcher click: 첫 번째 열린 Design tab focus. 없으면 create.
- per-tab state: `{ pageId?: string; zoom?: number }`.
- 상세: `references/panel-structure.md`.

### v1 Scope

page CRUD + preview + direct-write 감지 + run (Design tab Run button -> selected
instance agent -> artifact 생성) + export 전부 v1에 포함.

## Shipped v1 Surface (2026-07-04)

### CLI (file-first; the store on disk is the source of truth)

```text
jaw design list [--json]                     # pages across projects
jaw design create --title <t> [--json]       # new page (project key snapshot at create)
jaw design show <page-id> [--json]           # page.json summary
jaw design path <page-id> [--json]           # pageDir / artifact / prompt local paths
jaw design rescan [<page-id>] [--json]       # re-read disk state into page.json
jaw design edit <page-id> [--editor ...]     # open pageDir in an editor
jaw design export <page-id> [--overwrite]    # copy artifact into the project dir
jaw design files read <page-id> <relpath>
jaw design files write <page-id> <relpath> --stdin
jaw design snapshots <page-id> list|restore <snapshot-id>
jaw design catalog list [--json]
```

There is NO `jaw design run` in v1. Run is the Design tab toolbar button: it
takes a server-side before-snapshot (hard gate), then enqueues a generation
prompt into the CURRENTLY SELECTED instance's queue.

### Agent contract for a "Design run request" message

When you receive a chat message titled `Design run request`:

1. Read the Brief first (`prompt.md` path given in the message) — it holds the
   page requirements.
2. Your ONLY write target is the given pageDir. Write `artifact.html` in place
   (direct file write or `jaw design files write <page-id> artifact.html --stdin`).
   Allowlist: `artifact.html`, `prompt.md`, `page.json`, `assets/*`.
3. Preview is CSP-locked (`script-src 'none'`): produce STATIC, self-contained
   HTML/CSS. No `<script>`, no external CDN references — inline styles/SVG only.
4. Do not write anywhere else; do not export unless asked. The user reviews the
   result live in the Manager Design tab (watcher/Reload picks it up).
5. A before-snapshot was already taken server-side; restore points live under
   the page `snapshots/` directory (keep-last-20).

### Invariants

- `page.json` is the source of truth; concurrent writers use `baseRevision`
  and get 409 on conflict — rescan, merge, retry.
- HTTP mutator routes (`POST/PATCH/PUT` under `/api/dashboard/design`) require
  the Electron desktop identity header. Agents do NOT call mutator routes —
  use the file-first CLI/direct writes above.
- `realpath` confinement + symlink reject inside pageDir.

Files in this skill

  • SKILL.md5.3 KB
  • references/api-and-cli.md2.3 KB
  • references/direct-write.md1.6 KB
  • references/export-handoff.md748 B
  • references/open-design-adapter.md447 B
  • references/page-lifecycle.md1 KB
  • references/panel-structure.md1.2 KB
  • references/run-and-preview.md1.3 KB
  • references/wireframe-guide.md858 B

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…