@palate/cli 0.0.1 → 0.0.2
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 +14 -12
- package/package.json +3 -2
- package/scripts/pack-assets.mjs +10 -0
package/README.md
CHANGED
|
@@ -2,27 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
**Design intelligence for coding agents, and it grows with you.**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**[palate.sh](https://palate.sh)** · [Join the waitlist](https://palate.sh) · [Docs](https://palate.sh/docs) · [npm](https://www.npmjs.com/package/@palate/cli)
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
AI gets a screen most of the way. palate does the last 20%: the research, the plan, the craft in every section, the states nobody remembers, and an honest check by judges who didn't build it. It works inside the agent you already use (Claude Code, Codex, Cursor) as an MCP server, in your own codebase, with your own components and data. And it keeps your taste: what you agree with becomes a rule you keep, checked on every build, so your product starts looking like yours, not like everyone else's AI UI.
|
|
8
|
+
|
|
9
|
+
> **Status:** private preview, invite-only. Join the waitlist at [palate.sh](https://palate.sh); invites go out in small batches, designers first.
|
|
8
10
|
|
|
9
11
|
## Five products, five looks
|
|
10
12
|
|
|
11
13
|
AI-built pages look alike because every model falls back on the same defaults. These are five fictional briefs from palate's benchmark, each built from scratch by an agent using palate, with no human edits. palate researched each category, planned a look of its own, and refused plans that repeated its recent pages.
|
|
12
14
|
|
|
13
|
-

|
|
14
16
|
<sub>**Tracewell**, request tracing for small teams. The slow request is drawn as an engineering drawing on drafting film, with a parts list of every span.</sub>
|
|
15
17
|
|
|
16
|
-

|
|
17
19
|
<sub>**Mabel's Bakehouse**, a bakery in Leith. A paper-bag white page printed in two riso inks; the picture is a public-domain engraving reprinted in the bakery's colours.</sub>
|
|
18
20
|
|
|
19
|
-

|
|
20
22
|
<sub>**Open Shelf**, a nonprofit tool library. The most borrowed tools hang on a rail, each with its shelf tag: "on the shelf" or "out, back Fri".</sub>
|
|
21
23
|
|
|
22
|
-

|
|
23
25
|
<sub>**Kiln**, software for pottery studios. Type a piece's tag and its journey through the kilns lights up, then the member gets the "it's ready" text.</sub>
|
|
24
26
|
|
|
25
|
-

|
|
26
28
|
<sub>**Mira Okafor**, a documentary wedding photographer. Full-bleed black and white with the headline over the picture; public-domain prints stand in for her work and are credited as stand-ins.</sub>
|
|
27
29
|
|
|
28
30
|
---
|
|
@@ -62,7 +64,7 @@ What we learned building it: taste is stable but depends on the job. The founder
|
|
|
62
64
|
|
|
63
65
|
palate runs locally: Node 22+, and Chrome or Edge for screenshots.
|
|
64
66
|
|
|
65
|
-
**Free, no code needed:** the checks and the finishing pass on screens you already have. The guard, copy check, `palate check`, shoot, finish (states, details, motion), the quality gate, open-licence imagery and brand icons. **Invite-only:** building from your taste (build briefs, blueprints, research, directions, variants), pointing at what's wrong in your running app, critique and fixes, and the rules palate learns. What the free commands record stays in `~/.palate` and is there when you activate. Activate once per machine with the code from your invite (`npx @palate/cli activate palate-XXXX-XXXX-XXXX`).
|
|
67
|
+
**Free, no code needed:** the checks and the finishing pass on screens you already have. The guard, copy check, `palate check`, shoot, finish (states, details, motion), the quality gate, open-licence imagery and brand icons. **Invite-only:** building from your taste (build briefs, blueprints, research, directions, variants), pointing at what's wrong in your running app, critique and fixes, and the rules palate learns. What the free commands record stays in `~/.palate` and is there when you activate. No code yet? Join the waitlist at [palate.sh](https://palate.sh). Activate once per machine with the code from your invite (`npx @palate/cli activate palate-XXXX-XXXX-XXXX`).
|
|
66
68
|
|
|
67
69
|
**Claude Code**
|
|
68
70
|
|
|
@@ -70,7 +72,7 @@ palate runs locally: Node 22+, and Chrome or Edge for screenshots.
|
|
|
70
72
|
claude mcp add palate -- npx @palate/cli mcp
|
|
71
73
|
```
|
|
72
74
|
|
|
73
|
-
To have your agent check its UI work before calling it done, add the guard (a stop hook for Claude Code, Codex, Cursor, Gemini CLI and Copilot, or a git pre-commit check for any agent; see [docs/INSTALL.md](docs
|
|
75
|
+
To have your agent check its UI work before calling it done, add the guard (a stop hook for Claude Code, Codex, Cursor, Gemini CLI and Copilot, or a git pre-commit check for any agent; see [docs/INSTALL.md](https://palate.sh/docs)):
|
|
74
76
|
|
|
75
77
|
```bash
|
|
76
78
|
npx @palate/cli guard --install
|
|
@@ -98,7 +100,7 @@ args = ["@palate/cli", "mcp"]
|
|
|
98
100
|
npx skills add jakubkrehel/skills
|
|
99
101
|
```
|
|
100
102
|
|
|
101
|
-
Full setup, including running from source, is in [docs/INSTALL.md](docs
|
|
103
|
+
Full setup, including running from source, is in [docs/INSTALL.md](https://palate.sh/docs).
|
|
102
104
|
|
|
103
105
|
## Your references and your taste
|
|
104
106
|
|
|
@@ -131,8 +133,8 @@ palate mcp run as an MCP server
|
|
|
131
133
|
|
|
132
134
|
## How it's built
|
|
133
135
|
|
|
134
|
-
- [docs/ARCHITECTURE.md](docs
|
|
135
|
-
- [docs/INSPIRATION.md](docs
|
|
136
|
+
- [docs/ARCHITECTURE.md](https://palate.sh/docs): the pieces, the full flow, what runs where, and how palate grows with each user.
|
|
137
|
+
- [docs/INSPIRATION.md](https://palate.sh/docs): the research behind designing from references.
|
|
136
138
|
- [PLAN.md](PLAN.md): the roadmap and the evidence so far.
|
|
137
139
|
|
|
138
140
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@palate/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "Design intelligence for AI coding agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -34,5 +34,6 @@
|
|
|
34
34
|
},
|
|
35
35
|
"publishConfig": {
|
|
36
36
|
"access": "public"
|
|
37
|
-
}
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://palate.sh"
|
|
38
39
|
}
|
package/scripts/pack-assets.mjs
CHANGED
|
@@ -28,6 +28,14 @@ export function dropCopyleftReferences(refDir) {
|
|
|
28
28
|
return out.length;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
// The repo is private, so the README that npm shows can't use repo-relative links: images point at the copies on
|
|
32
|
+
// palate.sh (palate-site/public/readme) and the docs at palate.sh/docs.
|
|
33
|
+
export function publicReadme(md) {
|
|
34
|
+
return md
|
|
35
|
+
.replace(/\]\(media\/palate\/([\w-]+\.jpg)\)/g, "](https://palate.sh/readme/$1)")
|
|
36
|
+
.replace(/\]\(docs\/[\w-]+\.md(#[\w-]+)?\)/g, "](https://palate.sh/docs)");
|
|
37
|
+
}
|
|
38
|
+
|
|
31
39
|
const mode = process.argv[2];
|
|
32
40
|
if (mode === "in") {
|
|
33
41
|
for (const a of ASSETS) {
|
|
@@ -37,6 +45,8 @@ if (mode === "in") {
|
|
|
37
45
|
fs.rmSync(dst, { recursive: true, force: true });
|
|
38
46
|
fs.cpSync(src, dst, { recursive: true, filter: (p) => !SKIP.test(path.relative(src, p)) });
|
|
39
47
|
}
|
|
48
|
+
const readme = path.join(PKG, "README.md");
|
|
49
|
+
fs.writeFileSync(readme, publicReadme(fs.readFileSync(readme, "utf8")));
|
|
40
50
|
const dropped = dropCopyleftReferences(path.join(PKG, "kb", "references"));
|
|
41
51
|
console.log(`pack-assets: copied ${ASSETS.map((a) => a.to).join(", ")} into the package${dropped ? `; left out ${dropped} copyleft reference screenshots` : ""}`);
|
|
42
52
|
} else if (mode === "out") {
|