@penpair/web 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -29
- package/docs/getting-started.md +2 -0
- package/docs/releasing.md +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
</p>
|
|
20
20
|
|
|
21
21
|
<p align="center">
|
|
22
|
+
<a href="#start-here-the-setup-guide"><strong>Start here</strong></a> ·
|
|
22
23
|
<a href="#why-penpair">Why</a> ·
|
|
23
24
|
<a href="#quick-start">Quick start</a> ·
|
|
24
25
|
<a href="#web-or-docker">Web or Docker</a> ·
|
|
25
|
-
<a href="#add-penpair-to-your-repo">Add to your repo</a> ·
|
|
26
26
|
<a href="#packages">Packages</a> ·
|
|
27
27
|
<a href="#use-it-with-marwes">Marwes</a> ·
|
|
28
28
|
<a href="#check-each-page-with-reflection">Reflection</a> ·
|
|
@@ -40,6 +40,36 @@ penpair makes a Penpot design file the **source of truth** for your project's UI
|
|
|
40
40
|
| **Know it** | The rules and the quirks of the tool ship with the code as skills your agent follows. |
|
|
41
41
|
| **Extend it** | Plug in your component library, your checks and your own snippets. The core stays neutral. |
|
|
42
42
|
|
|
43
|
+
## Start here: the setup guide
|
|
44
|
+
|
|
45
|
+
The easiest way in is to let your AI assistant walk you through it. **[penpair-setup-guide](https://github.com/niklas-westman/penpair/blob/main/skills/penpair-setup-guide/SKILL.md)** is a skill for Claude Code, Codex and GitHub Copilot that guides you from nothing to a first design, one step at a time:
|
|
46
|
+
|
|
47
|
+
1. checks Node and your project,
|
|
48
|
+
2. asks whether Penpot runs **on the web** (recommended) or **in Docker** on your computer,
|
|
49
|
+
3. helps you get a Penpot account and a design file,
|
|
50
|
+
4. installs penpair and connects the Penpot plugin,
|
|
51
|
+
5. shows you **where your MCP link goes**, without the key ever passing through the chat, and verifies it all with `doctor`,
|
|
52
|
+
6. asks whether you want **Marwes UI** tokens in Penpot,
|
|
53
|
+
7. installs the rules your assistant follows,
|
|
54
|
+
8. and ends with a **test POC** on its own page, so you see what it can do.
|
|
55
|
+
|
|
56
|
+
**No install needed:** in your project's folder, tell your assistant:
|
|
57
|
+
|
|
58
|
+
> Read https://raw.githubusercontent.com/niklas-westman/penpair/main/skills/penpair-setup-guide/SKILL.md and follow it to set up penpair in this project.
|
|
59
|
+
|
|
60
|
+
**Or install it as a skill** in your project, so it is there next time (also the way to go if your assistant cannot open web pages):
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Claude Code
|
|
64
|
+
mkdir -p .claude/skills/penpair-setup-guide && curl -fsSL https://raw.githubusercontent.com/niklas-westman/penpair/main/skills/penpair-setup-guide/SKILL.md -o .claude/skills/penpair-setup-guide/SKILL.md
|
|
65
|
+
# Codex
|
|
66
|
+
mkdir -p .agents/skills/penpair-setup-guide && curl -fsSL https://raw.githubusercontent.com/niklas-westman/penpair/main/skills/penpair-setup-guide/SKILL.md -o .agents/skills/penpair-setup-guide/SKILL.md
|
|
67
|
+
# GitHub Copilot
|
|
68
|
+
mkdir -p .github/skills/penpair-setup-guide && curl -fsSL https://raw.githubusercontent.com/niklas-westman/penpair/main/skills/penpair-setup-guide/SKILL.md -o .github/skills/penpair-setup-guide/SKILL.md
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Then ask: *"set up penpair"*. Prefer to do it yourself? Read on: [Quick start](#quick-start).
|
|
72
|
+
|
|
43
73
|
## Why penpair
|
|
44
74
|
|
|
45
75
|
An AI assistant can already reach Penpot through its MCP server: it gets one tool that runs code inside your open file. That is power without hands-on knowledge, and designing a whole page that way fails in small, expensive ways. penpair is what makes it dependable, so you can prompt for a page and get a page.
|
|
@@ -70,7 +100,7 @@ penpair does not design for you, and it has no "make me a page" button. It makes
|
|
|
70
100
|
|
|
71
101
|
## Quick start
|
|
72
102
|
|
|
73
|
-
> **New here, or not a terminal person?**
|
|
103
|
+
> **New here, or not a terminal person?** Let your assistant guide you with the [setup guide](#start-here-the-setup-guide), or follow the step-by-step guide with the browser steps: **[Getting started →](https://github.com/niklas-westman/penpair/blob/main/docs/getting-started.md)**
|
|
74
104
|
|
|
75
105
|
You need [Node.js](https://nodejs.org) 22 or later and a terminal. In your project's folder:
|
|
76
106
|
|
|
@@ -90,6 +120,15 @@ It asks where your Penpot is and does the rest, saying in plain words what it is
|
|
|
90
120
|
|
|
91
121
|
Run it again any time; it continues where it stopped. `npx @penpair/web doctor` tells you what works, what does not and what to do about it.
|
|
92
122
|
|
|
123
|
+
Then commit what it made (never `.env.local`; it is already git-ignored):
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
git add penpair.config.json .gitignore .skills .agents .claude
|
|
127
|
+
git commit -m "Add penpair"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Each teammate runs their own `npx @penpair/web connect`: the key belongs to a person, not to the repo. To pin penpair for the team, add it as a dev dependency (`npm i -D @penpair/web`, or `@penpair/docker`; one of the two, not both); the command is then `npx penpair …`. To write your own Penpot operations, use the library from the same package: `import { defineSnippet } from "@penpair/web"`.
|
|
131
|
+
|
|
93
132
|
## Web or Docker
|
|
94
133
|
|
|
95
134
|
Two ways to run Penpot, one way to connect. Pick one; you can switch later.
|
|
@@ -104,31 +143,15 @@ Two ways to run Penpot, one way to connect. Pick one; you can switch later.
|
|
|
104
143
|
|
|
105
144
|
The full comparison, what is checked and how to switch: **[Web or Docker →](https://github.com/niklas-westman/penpair/blob/main/packages/core/skills/penpair-setup/references/web-or-docker.md)**
|
|
106
145
|
|
|
107
|
-
## Add penpair to your repo
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
cd your-project
|
|
111
|
-
npx @penpair/web setup # asks: web or this computer
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
Then commit what it made (not `.env.local`; it is already in `.gitignore`):
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
git add penpair.config.json .gitignore .skills .agents .claude
|
|
118
|
-
git commit -m "Add penpair"
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
Everyone who works with the assistant does their own `npx @penpair/web connect`: the key belongs to a person, not to the repo. To pin penpair for the team, add it as a dev dependency: `npm i -D @penpair/web` (or `@penpair/docker` for Penpot in Docker; install one of the two, not both). The command is then `npx penpair …`. To write your own Penpot operations, use the library from the same package: `import { defineSnippet } from "@penpair/web"` (the library alone is `@penpair/core`).
|
|
122
|
-
|
|
123
146
|
## Packages
|
|
124
147
|
|
|
125
148
|
| Package | What it is | Status |
|
|
126
149
|
| --- | --- | --- |
|
|
127
|
-
| [`@penpair/web`](https://www.npmjs.com/package/@penpair/web) | The `penpair` command for Penpot on the web. Includes everything in the core |
|
|
128
|
-
| [`@penpair/docker`](https://www.npmjs.com/package/@penpair/docker) | The same command, plus Penpot in Docker on your computer: `up`, `down`, `backup`, `restore`. Includes everything in the core |
|
|
129
|
-
| [`@penpair/core`](https://www.npmjs.com/package/@penpair/core) | The library and engine, with the skills. No command of its own; the two above are built on it |
|
|
150
|
+
| [`@penpair/web`](https://www.npmjs.com/package/@penpair/web) | The `penpair` command for Penpot on the web. Includes everything in the core | Published |
|
|
151
|
+
| [`@penpair/docker`](https://www.npmjs.com/package/@penpair/docker) | The same command, plus Penpot in Docker on your computer: `up`, `down`, `backup`, `restore`. Includes everything in the core | Published |
|
|
152
|
+
| [`@penpair/core`](https://www.npmjs.com/package/@penpair/core) | The library and engine, with the skills. No command of its own; the two above are built on it | Published |
|
|
130
153
|
| `penpair` | The short name for `@penpair/web`, so that `npx penpair setup` works | Waiting for npm to allow the name (it is blocked as too close to an unrelated package). Until then use `npx @penpair/web`. |
|
|
131
|
-
| [`@penpair/marwes-ui`](https://www.npmjs.com/package/@penpair/marwes-ui) | The adapter for the Marwes UI component library: Marwes tokens (and your theme) in Penpot, with drift checks |
|
|
154
|
+
| [`@penpair/marwes-ui`](https://www.npmjs.com/package/@penpair/marwes-ui) | The adapter for the Marwes UI component library: Marwes tokens (and your theme) in Penpot, with drift checks | Published: tokens now, components planned. See below |
|
|
132
155
|
| `@penpair/reflection-check` | The link to Reflection's `reflection-check`, as its own package (today `penpair baselines` does it) | Planned |
|
|
133
156
|
|
|
134
157
|
You install **one** command package, `@penpair/web` or `@penpair/docker`; the core comes with it.
|
|
@@ -187,12 +210,12 @@ One thing to know before you rely on it: the percentage is not a verdict. A corr
|
|
|
187
210
|
|
|
188
211
|
## For an AI agent
|
|
189
212
|
|
|
190
|
-
|
|
213
|
+
Guiding a person through a first setup? Follow [penpair-setup-guide](https://github.com/niklas-westman/penpair/blob/main/skills/penpair-setup-guide/SKILL.md). Repairing a project that is already set up? Follow [penpair-setup](https://github.com/niklas-westman/penpair/blob/main/packages/core/skills/penpair-setup/SKILL.md). Either way:
|
|
191
214
|
|
|
192
|
-
-
|
|
193
|
-
- Web is the default;
|
|
194
|
-
- **The personal MCP key never goes through you.** The person pastes it
|
|
195
|
-
- Done means `doctor` reports `ok: true` and "editor and plugin" connected. Then `
|
|
215
|
+
- `npx @penpair/web doctor --json` says where things stand; every failing check carries a `remedy`.
|
|
216
|
+
- Web is the default; Docker only when the person asks for offline work or local data.
|
|
217
|
+
- **The personal MCP key never goes through you.** The person pastes it into `npx @penpair/web connect` (a hidden prompt), or pipes it from their clipboard.
|
|
218
|
+
- Done means `doctor` reports `ok: true` and "editor and plugin" connected. Then `skills install` gives you the rules for working in Penpot (`penpair-design`) and for judging a screen (`design-judgment`).
|
|
196
219
|
|
|
197
220
|
## Commands
|
|
198
221
|
|
|
@@ -213,11 +236,12 @@ If you were told to set penpair up, read [the setup skill](https://github.com/ni
|
|
|
213
236
|
|
|
214
237
|
- Penpot's plugin needs the **editor tab open and visible** while the assistant works, so penpair cannot run unattended overnight. It acts on one Penpot at a time, on the page you have open.
|
|
215
238
|
- Checked against Penpot 2.18.3 (Docker) and the hosted Penpot 2.18.4: the same tools and limits, and a full deep check on both ([compatibility](https://github.com/niklas-westman/penpair/blob/main/docs/compatibility.md)). Not proven yet: a large file with a shared library on the hosted service, paid plans, two editors in one file, and a full `.penpot` export and import round trip.
|
|
216
|
-
- penpair is early (0.1.
|
|
239
|
+
- penpair is early (0.1.x). Expect rough edges and quick fixes. The plan and the open questions are in [PLAN.md](https://github.com/niklas-westman/penpair/blob/main/PLAN.md).
|
|
217
240
|
|
|
218
241
|
## Documentation
|
|
219
242
|
|
|
220
|
-
- [
|
|
243
|
+
- [Setup guide skill](https://github.com/niklas-westman/penpair/blob/main/skills/penpair-setup-guide/SKILL.md): your assistant walks you through the whole setup
|
|
244
|
+
- [Getting started](https://github.com/niklas-westman/penpair/blob/main/docs/getting-started.md): step by step by hand, for designers and for whoever sets it up
|
|
221
245
|
- [Guide](https://github.com/niklas-westman/penpair/blob/main/docs/guide.md): extension points, instances, commands
|
|
222
246
|
- [Marwes tokens](https://github.com/niklas-westman/penpair/blob/main/docs/marwes-tokens.md): Marwes tokens in Penpot and drift checks
|
|
223
247
|
- [Compatibility](https://github.com/niklas-westman/penpair/blob/main/docs/compatibility.md): what was checked on which Penpot
|
package/docs/getting-started.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Draft. Written for someone who has not used a terminal much. The steps marked **(not tried yet)** come from Penpot's help pages, not from a run; the first person to follow this guide on a clean machine should mark what differs.
|
|
4
4
|
|
|
5
|
+
**Easiest:** let your AI assistant (Claude Code, Codex or GitHub Copilot) walk you through it with the [setup guide skill](https://github.com/niklas-westman/penpair/blob/main/skills/penpair-setup-guide/SKILL.md). This page is the same path by hand.
|
|
6
|
+
|
|
5
7
|
The normal way is to use Penpot on the web (or your team's own Penpot) and connect the AI assistant to it. Nothing runs on your computer except penpair. If you want your own copy of Penpot on your computer instead, see "Alternative: run Penpot on your own computer" at the end.
|
|
6
8
|
|
|
7
9
|
There are two roles. You may be both.
|
package/docs/releasing.md
CHANGED
|
@@ -22,7 +22,7 @@ Publishing cannot be undone: a version, once published, cannot be replaced. Chec
|
|
|
22
22
|
pnpm bump patch # or minor, major, or an exact x.y.z: every package and version.ts move together
|
|
23
23
|
# add a section to CHANGELOG.md
|
|
24
24
|
pnpm check # typecheck, tests, build and the version check
|
|
25
|
-
git commit -am "Release 0.1.
|
|
25
|
+
git commit -am "Release 0.1.3" && git push
|
|
26
26
|
|
|
27
27
|
pnpm release # dry run: checks everything, prints the plan, publishes nothing
|
|
28
28
|
pnpm release --publish # the real thing; npm asks for your one-time code (or add --otp <code>)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@penpair/web",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "The penpair command for Penpot on the web (design.penpot.app or your team's own): guided setup, a safe write protocol, skills for AI agents. Includes everything in @penpair/core.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"access": "public"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@penpair/core": "0.1.
|
|
50
|
+
"@penpair/core": "0.1.3"
|
|
51
51
|
},
|
|
52
52
|
"scripts": {
|
|
53
53
|
"build": "tsc -p tsconfig.json",
|