@kvasar/google-stitch 0.1.20 → 0.1.22

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "openclaw-google-stitch",
3
3
  "name": "Google Stitch MCP",
4
- "version": "0.1.20",
4
+ "version": "0.1.22",
5
5
  "description": "Integrates Google Stitch MCP services into OpenClaw",
6
6
  "skills": ["skills"],
7
7
  "configSchema": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kvasar/google-stitch",
3
- "version": "0.1.20",
3
+ "version": "0.1.22",
4
4
  "description": "OpenClaw plugin for Google Stitch UI generation, screen design, variants, and design systems",
5
5
  "type": "module",
6
6
  "main": "./src/index.ts",
package/skills/SKILL.md CHANGED
@@ -167,6 +167,22 @@ Returns:
167
167
  - A visual list of generated screens in the project
168
168
  - Each screen is rendered with title, prompt, device type, dimensions, and preview image/HTML when available
169
169
 
170
+ ### Channel-specific link formatting
171
+
172
+ If the response contains URLs or downloadable resources and the channel is Telegram, always format links as clickable Markdown links.
173
+
174
+
175
+
176
+ Use this format:
177
+
178
+ [descriptive text](url)
179
+
180
+
181
+
182
+ Example:
183
+
184
+ [View screen preview](https://example.com/screen.png)
185
+
170
186
  ---
171
187
 
172
188
  ### Screen editing
@@ -324,4 +340,6 @@ Focus on:
324
340
  - realistic production UI
325
341
  - startup / enterprise SaaS design
326
342
  - scalable UX patterns
327
- - modern component systems
343
+ - modern component systems
344
+
345
+
@@ -7,7 +7,7 @@ import { Type } from "@sinclair/typebox";
7
7
  import { StitchMCPClient } from "../services/stitch-mcp-client.js";
8
8
 
9
9
  export interface CreateProjectParams {
10
- name: string;
10
+ title: string;
11
11
  }
12
12
 
13
13
  export function createProjectTool(client: StitchMCPClient) {
@@ -20,7 +20,7 @@ export function createProjectTool(client: StitchMCPClient) {
20
20
  ),
21
21
  }),
22
22
  async execute(_id: string, params: CreateProjectParams) {
23
- const result = await client.createProject(params.name);
23
+ const result = await client.createProject(params.title);
24
24
  return {
25
25
  content: [{ type: "text" as const, text: JSON.stringify(result, null, 2) }],
26
26
  };
@@ -6,6 +6,8 @@ import {
6
6
  import fs from "node:fs";
7
7
  import path from "node:path";
8
8
  import os from "node:os";
9
+ import { Type } from "@sinclair/typebox";
10
+
9
11
 
10
12
  type StitchFile = {
11
13
  name?: string;
@@ -1,7 +1,16 @@
1
+ import { Type, Static } from "@sinclair/typebox";
2
+
3
+ const ListDesignSystemsSchema = Type.Object({
4
+ projectId: Type.Optional(Type.String({ description: "Optional. Project ID. If empty, lists global design systems." })),
5
+ });
6
+
7
+ type ListDesignSystemsParams = Static<typeof ListDesignSystemsSchema>;
8
+
1
9
  export const listDesignSystemsTool = (client:any) => ({
2
10
  name: "list_design_systems",
3
- description: "list design systems",
4
- async execute(_: string, params: any) {
11
+ description: "Lists design systems accessible to the user, optionally filtered by project",
12
+ parameters: ListDesignSystemsSchema,
13
+ async execute(_: string, params: ListDesignSystemsParams) {
5
14
  return await client.request?.("list_design_systems", params);
6
15
  },
7
16
  });
@@ -2,6 +2,7 @@ import { StitchMCPClient } from "../services/stitch-mcp-client.js";
2
2
  import fs from "node:fs";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
5
+ import { Type } from "@sinclair/typebox";
5
6
 
6
7
  interface ListScreensParams {
7
8
  projectId: string;
@@ -34,6 +35,10 @@ type Screen = {
34
35
  export const listScreensTool = (client: StitchMCPClient) => ({
35
36
  name: "list_screens",
36
37
  description: "Lists all screens within a given Stitch project",
38
+ parameters: Type.Object({
39
+ projectId: Type.String({
40
+ description: "Required. Project ID (e.g., '4044680601076201931'), without `projects/` prefix."
41
+ })}),
37
42
 
38
43
  async execute(_: string, params: ListScreensParams) {
39
44
  if (!params?.projectId) {