@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 CHANGED
@@ -2,27 +2,29 @@
2
2
 
3
3
  **Design intelligence for coding agents, and it grows with you.**
4
4
 
5
- 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 learns your taste as you go, so your product starts looking like yours, not like everyone else's AI UI.
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
- > **Status:** private preview, invite-only.
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
- ![Tracewell, request tracing for small engineering teams](media/palate/tracewell.jpg)
15
+ ![Tracewell, request tracing for small engineering teams](https://palate.sh/readme/tracewell.jpg)
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
- ![Mabel's Bakehouse, a neighbourhood bakery](media/palate/mabels-bakehouse.jpg)
18
+ ![Mabel's Bakehouse, a neighbourhood bakery](https://palate.sh/readme/mabels-bakehouse.jpg)
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
- ![Open Shelf, a nonprofit tool library](media/palate/open-shelf.jpg)
21
+ ![Open Shelf, a nonprofit tool library](https://palate.sh/readme/open-shelf.jpg)
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
- ![Kiln, a membership and firing-schedule app for pottery studios](media/palate/kiln.jpg)
24
+ ![Kiln, a membership and firing-schedule app for pottery studios](https://palate.sh/readme/kiln.jpg)
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
- ![Mira Okafor, a documentary wedding photographer](media/palate/mira-okafor.jpg)
27
+ ![Mira Okafor, a documentary wedding photographer](https://palate.sh/readme/mira-okafor.jpg)
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`). Until palate is on npm, replace `npx @palate/cli` with the local path shown in [docs/INSTALL.md](docs/INSTALL.md).
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/INSTALL.md#the-guard)):
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/INSTALL.md).
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/ARCHITECTURE.md): the pieces, the full flow, what runs where, and how palate grows with each user.
135
- - [docs/INSPIRATION.md](docs/INSPIRATION.md): the research behind designing from references.
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.1",
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
  }
@@ -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") {