@web42/cli 0.1.6 → 0.1.8

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,6 +1,6 @@
1
1
  ---
2
2
  name: web42-publish-prep
3
- description: "This skill should be used when the user asks to 'prepare my agent for Web42', 'publish to Web42', 'set up web42 CLI', 'create a manifest', 'write an agent README', 'clean up files before pushing', 'init web42', or needs help packaging an agent project for the Web42 marketplace. Guides the full lifecycle from init through push-ready state."
3
+ description: "This skill should be used when the user asks to 'prepare my agent for Web42', 'publish to Web42', 'set up web42 CLI', 'create a manifest', 'write an agent README', 'set up marketplace pricing', 'add screenshots', 'clean up files before pushing', 'init web42', or needs help packaging an agent project for the Web42 marketplace. Guides the full lifecycle from init through push-ready state, including marketplace configuration, visual assets, and sync."
4
4
  internal: true
5
5
  metadata:
6
6
  clawdbot:
@@ -12,7 +12,7 @@ metadata:
12
12
 
13
13
  # Web42 Publish Prep
14
14
 
15
- Prepare an agent project for publishing to the Web42 marketplace. This skill covers the full lifecycle: initializing the project, populating the manifest, writing a compelling README, and auditing workspace files so only the right content ships to users.
15
+ Prepare an agent project for publishing to the Web42 marketplace. This skill covers the full lifecycle: initializing the project, populating the manifest, configuring marketplace settings (pricing, license, tags), preparing visual assets (avatar, screenshots, demo media), writing a compelling README, auditing workspace files, and validating everything before push.
16
16
 
17
17
  ## When to Activate
18
18
 
@@ -20,7 +20,7 @@ Activate when the user wants to get their agent ready for the Web42 marketplace
20
20
 
21
21
  ## Prerequisites
22
22
 
23
- - The Web42 CLI must be installed (`npx web42-cli` or globally via `npm i -g web42-cli`).
23
+ - The Web42 CLI must be installed (`brew install web42` or via the install script).
24
24
  - The user must be authenticated (`web42 auth login`). Verify with `web42 auth whoami`.
25
25
  - The workspace must contain a supported platform config (currently OpenClaw — `openclaw.json`).
26
26
 
@@ -32,10 +32,13 @@ If any prerequisite is missing, guide the user through resolving it before proce
32
32
 
33
33
  Check whether `manifest.json` already exists in the workspace root.
34
34
 
35
- - **If missing:** Run `web42 init` interactively. The CLI prompts for platform, description, version, and detects skills from `skills/*/SKILL.md`.
35
+ - **If missing:** Run `web42 init` interactively. The CLI prompts for platform, description, version, and detects skills from `skills/*/SKILL.md`. It also scaffolds the `.web42/` metadata folder with `marketplace.json` and `resources.json`.
36
36
  - **If present:** Read and validate the existing manifest against the field reference in `references/manifest-fields.md`. Report any missing or invalid fields.
37
37
 
38
- After init, verify that the scaffolded platform files exist (`AGENTS.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`, `USER.md`). If the user already customized these, do not overwrite — just confirm they are present.
38
+ After init, verify that these exist:
39
+
40
+ 1. **Platform files:** `AGENTS.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`, `USER.md` — if the user already customized these, do not overwrite.
41
+ 2. **`.web42/` folder:** `marketplace.json`, `resources.json`, `resources/` directory. See `references/web42-folder.md` for the complete structure.
39
42
 
40
43
  ### Phase 2 — Enrich the Manifest
41
44
 
@@ -46,16 +49,55 @@ Key actions:
46
49
  1. **`name`** — Confirm it is lowercase-hyphenated and reflects the agent's purpose. Suggest alternatives if generic.
47
50
  2. **`description`** — Must be 1–500 characters. Draft a concise, benefit-oriented description that tells a potential buyer what the agent *does for them*.
48
51
  3. **`version`** — Ensure semver format (`MAJOR.MINOR.PATCH`).
49
- 4. **`tags`** — Suggest 3–6 relevant tags for discoverability.
50
- 5. **`skills`** — Auto-detected from `skills/*/SKILL.md`. If none found, ask if skills should be documented.
51
- 6. **`configVariables`** — For each detected secret/config, ensure `label` and `description` are clear enough for a buyer.
52
- 7. **`modelPreferences`** — Set `primary` to the intended model. Optionally set a `fallback`.
53
- 8. **`coverImage`** — Ask if the user has a cover image (path relative to workspace).
54
- 9. **`demoVideoUrl`** — Ask if there is a demo video URL to include.
52
+ 4. **`skills`** — Auto-detected from `skills/*/SKILL.md`. If none found, ask if skills should be documented.
53
+ 5. **`configVariables`** — For each detected secret/config, ensure `label` and `description` are clear enough for a buyer.
54
+ 6. **`modelPreferences`** — Set `primary` to the intended model. Optionally set a `fallback`.
55
55
 
56
56
  Write the updated `manifest.json` only after user confirmation.
57
57
 
58
- ### Phase 3 — Write the README
58
+ ### Phase 3 — Configure Marketplace Settings
59
+
60
+ Read `.web42/marketplace.json` and walk through each field. Consult `references/marketplace-config.md` for the full reference.
61
+
62
+ Key actions:
63
+
64
+ 1. **`price_cents`** — Ask the user about their pricing strategy. Free (`0`) or paid? For paid agents, suggest a price based on the agent's capabilities and target audience. Explain that pricing can be changed later.
65
+ 2. **`currency`** — Currently only `"usd"`. Confirm and leave as default.
66
+ 3. **`license`** — Help choose. For free agents: suggest `"MIT"` or `"Apache-2.0"`. For paid agents: suggest `"Proprietary"`. Explain the implications briefly.
67
+ 4. **`tags`** — Suggest 3–6 searchable tags. Mix category terms ("finance", "devops") with capability terms ("slack-integration", "pdf-generation"). Think about what a buyer would search for.
68
+
69
+ Write `.web42/marketplace.json` only after user confirmation.
70
+
71
+ **Important:** Visibility (`public`/`private`/`unlisted`) is managed exclusively through the Web42 dashboard, not through local files. Remind the user that the agent starts private and they should toggle visibility on the dashboard when ready to launch.
72
+
73
+ ### Phase 4 — Prepare Visual Assets
74
+
75
+ Visual assets are what make a marketplace listing stand out. Walk through each:
76
+
77
+ #### Avatar
78
+
79
+ Check if `.web42/avatar.{png,jpg,webp,svg}` exists.
80
+
81
+ - If missing, ask the user if they want to provide or generate one.
82
+ - **Recommended:** 400x400 or larger, square, PNG or WebP.
83
+ - The avatar appears on the marketplace listing, search results, and the agent's profile.
84
+ - If the user wants to generate one, help create a prompt that captures the agent's personality and purpose.
85
+
86
+ #### Resources (Screenshots, Videos, Documents)
87
+
88
+ Check `.web42/resources.json` and `.web42/resources/`. Consult `references/resources-guide.md`.
89
+
90
+ - **Screenshots** — The single most impactful asset. Ask the user to capture 2–4 screenshots showing the agent in action. Recommend 1200x800 or 1600x900 (landscape).
91
+ - **Demo video** — A 1–3 minute recording showing the agent's core workflow. Dramatically improves conversion. Can be a screen recording with voiceover.
92
+ - **Documents** — Optional setup guides or architecture overviews as PDF.
93
+
94
+ For each resource:
95
+
96
+ 1. Help the user save files to `.web42/resources/`.
97
+ 2. Create or update `.web42/resources.json` with metadata (`file`, `title`, `description`, `type`, `sort_order`).
98
+ 3. Put the strongest visual first (`sort_order: 0`).
99
+
100
+ ### Phase 5 — Write the README
59
101
 
60
102
  The README is the storefront — the agent's pitch deck. Read `assets/readme-template.md` for inspiration, then write a README that lets the agent's personality shine.
61
103
 
@@ -63,14 +105,14 @@ Principles:
63
105
 
64
106
  - **Lead with outcomes, not internals.** Paint the picture of life *with* this agent.
65
107
  - **Show personality.** Write in the agent's own voice — confident, creative, even playful.
66
- - **Use rich media.** GIFs, demo videos, screenshots, embedded links. The marketplace renders full Markdown.
108
+ - **Use rich media.** Reference screenshots from `.web42/resources/`, embed demo videos, include links. The marketplace renders full Markdown.
67
109
  - **Give concrete scenarios.** "Ask me to..." or "Imagine you need to..." — make it visceral.
68
110
  - **Include practical info** (install command, required config) but don't let it dominate.
69
111
  - **Don't reveal the recipe.** Focus on outcomes, not system prompts or internal file structures.
70
112
 
71
113
  Write to `README.md` at workspace root. If one already exists, show a diff and ask before overwriting.
72
114
 
73
- ### Phase 4 — Audit Workspace Files
115
+ ### Phase 6 — Audit Workspace Files
74
116
 
75
117
  Before packing, scan the workspace for files that should not ship to buyers. Consult `references/file-hygiene.md` for the full checklist.
76
118
 
@@ -88,15 +130,28 @@ For each flagged item:
88
130
  2. Ask the user whether to remove, reset to scaffold default, or keep it.
89
131
  3. If unsure, recommend `web42 pack --dry-run` to preview the bundle.
90
132
 
91
- ### Phase 5 — Validate and Preview
133
+ ### Phase 7 — Validate, Pack, and Sync
92
134
 
93
- Run `web42 pack --dry-run` to show exactly what files will be included. Review together:
135
+ Run `web42 pack --dry-run` to show exactly what files will be included in `.web42/dist/`. Review together:
94
136
 
95
137
  - Confirm file count and total size are reasonable.
96
138
  - Verify no secrets leaked (the CLI strips known patterns, but manual review catches edge cases).
97
- - Ensure `README.md` is present (push reads it from workspace root).
139
+ - Ensure `README.md` is present.
140
+ - Ensure `.web42/marketplace.json` has pricing, license, and tags set.
141
+ - Ensure at least one screenshot or resource exists in `.web42/resources/`.
142
+
143
+ When clean, the user can publish:
144
+
145
+ 1. **`web42 push`** — Packs (if needed), pushes the full snapshot (manifest, README, marketplace config, files, avatar, resources) to the remote.
146
+ 2. **`web42 sync`** — Check sync status at any time to see if local and remote are aligned.
147
+ 3. **Dashboard** — Remind the user to visit `web42.ai` to set visibility to `public` or `unlisted` when ready.
148
+
149
+ After the first push, subsequent changes follow the sync workflow:
98
150
 
99
- When clean, inform the user they can publish with `web42 push`. The agent is created **private** by default — remind them to toggle visibility on the marketplace when ready.
151
+ - Edit locally `web42 push` to sync up
152
+ - Edit on dashboard → `web42 pull` to sync down
153
+ - `web42 sync` to check status without changing anything
154
+ - `--force` flag on push/pull to override when both sides have changed
100
155
 
101
156
  ## CLI Quick Reference
102
157
 
@@ -104,16 +159,22 @@ When clean, inform the user they can publish with `web42 push`. The agent is cre
104
159
  |---------|---------|
105
160
  | `web42 auth login` | Authenticate via GitHub OAuth |
106
161
  | `web42 auth whoami` | Check current auth status |
107
- | `web42 init` | Scaffold `manifest.json` + platform files |
162
+ | `web42 init` | Scaffold `manifest.json` + `.web42/` metadata folder |
108
163
  | `web42 pack --dry-run` | Preview packaged files without writing |
109
- | `web42 pack` | Bundle into `.web42/` directory |
110
- | `web42 push` | Pack (if needed) and upload to marketplace |
111
- | `web42 pull` | Fetch latest published files back locally |
164
+ | `web42 pack` | Bundle workspace into `.web42/dist/` |
165
+ | `web42 push` | Pack (if needed) and sync everything to the marketplace |
166
+ | `web42 push --force` | Push even if no local changes detected |
167
+ | `web42 pull` | Fetch latest state from the marketplace to local files |
168
+ | `web42 pull --force` | Pull even if no remote changes detected |
169
+ | `web42 sync` | Show sync status (local vs remote hash comparison) |
112
170
 
113
171
  ## Resources
114
172
 
115
173
  ### References
116
- - **`references/manifest-fields.md`** — Complete manifest.json field reference with types, constraints, and guidance.
174
+ - **`references/web42-folder.md`** — Complete `.web42/` folder structure reference.
175
+ - **`references/manifest-fields.md`** — `manifest.json` field reference with types, constraints, and guidance.
176
+ - **`references/marketplace-config.md`** — `.web42/marketplace.json` field reference with pricing and license guidance.
177
+ - **`references/resources-guide.md`** — Resource types, schema, dimensions, and best practices for screenshots/videos/docs.
117
178
  - **`references/file-hygiene.md`** — Checklist of files and patterns to audit before packing.
118
179
 
119
180
  ### Assets
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "web42-publish-prep",
3
3
  "tagline": "Prepare your agent for the Web42 marketplace",
4
- "description": "Guides agents through the full publish lifecycle: init, manifest enrichment, README writing, file auditing, and validation before pushing to the Web42 marketplace.",
4
+ "description": "Guides agents through the full publish lifecycle: init, manifest enrichment, marketplace configuration (pricing, license, tags), visual assets (avatar, screenshots, demo media), README writing, file auditing, and two-way sync with the Web42 marketplace.",
5
5
  "category": "development",
6
- "tags": ["web42", "marketplace", "publishing", "cli", "agent-packaging"],
7
- "version": "1.0.0",
6
+ "tags": ["web42", "marketplace", "publishing", "cli", "agent-packaging", "sync"],
7
+ "version": "2.0.0",
8
8
  "license": "MIT",
9
9
  "pricing": "free",
10
10
  "support_url": "https://github.com/web42-ai/web42-marketplace/issues",
@@ -3,13 +3,13 @@
3
3
  <!--
4
4
  This is a starting point, not a form. Rewrite it, restructure it, make it yours.
5
5
  The marketplace renders full Markdown — use it. GIFs, videos, screenshots, emoji, whatever tells your story.
6
+
7
+ Screenshots and demo media are managed in .web42/resources/ and appear automatically on the listing.
8
+ The README is for the narrative — let the resources handle the visuals.
6
9
  -->
7
10
 
8
11
  {A bold opening line. What changes for the user when they have you? Don't describe yourself — describe the outcome.}
9
12
 
10
- <!-- Optional: embed a GIF or demo video here -->
11
- <!-- ![Demo](https://your-demo-url.gif) -->
12
-
13
13
  ---
14
14
 
15
15
  ## What I Do
@@ -26,7 +26,7 @@
26
26
 
27
27
  <!-- Replace these with real scenarios that match what you actually do. -->
28
28
 
29
- ## Quickstart
29
+ ## Install
30
30
 
31
31
  ```bash
32
32
  web42 openclaw install @{author}/{name}
@@ -40,7 +40,7 @@ web42 openclaw install @{author}/{name}
40
40
 
41
41
  | Variable | What It Is | Where to Get It |
42
42
  |----------|-----------|-----------------|
43
- | `EXAMPLE_API_KEY` | Access token for Example API | [Example Dashboard Settings API](https://example.com/settings) |
43
+ | `EXAMPLE_API_KEY` | Access token for Example API | [Example Dashboard > Settings > API](https://example.com/settings) |
44
44
 
45
45
  <!-- Remove this section entirely if the agent needs no configuration. -->
46
46
 
@@ -54,4 +54,8 @@ web42 openclaw install @{author}/{name}
54
54
  - "Credits" (shoutouts, inspirations)
55
55
 
56
56
  Or make up your own sections. There are no rules here.
57
+
58
+ Tip: Your screenshots and demo video in .web42/resources/ will appear
59
+ on the marketplace listing alongside this README. Focus the README on
60
+ the story and let the media speak for the visual side.
57
61
  -->
@@ -4,7 +4,7 @@ Before packing, audit the workspace for files that should not ship to buyers. Th
4
4
 
5
5
  ## Automatically Excluded by the CLI
6
6
 
7
- These patterns are hardcoded in the pack command and will never appear in the `.web42/` artifact:
7
+ These patterns are hardcoded in the pack command and will never appear in the `.web42/dist/` artifact:
8
8
 
9
9
  | Pattern | Reason |
10
10
  |---------|--------|
@@ -18,11 +18,26 @@ These patterns are hardcoded in the pack command and will never appear in the `.
18
18
  | `*.log` | Log files |
19
19
  | `openclaw.json` | Platform config (contains agent bindings, channel secrets) |
20
20
  | `.openclaw/credentials/**` | Platform credentials |
21
- | `.web42/**` | Previous pack artifacts |
21
+ | `.web42/**` | Metadata folder (marketplace config, sync state, pack output) |
22
22
  | `.web42ignore` | Pack ignore config (meta, not content) |
23
23
  | `manifest.json` | Shipped separately as structured data |
24
24
  | `USER.md` | Always rewritten with a blank template on install |
25
25
 
26
+ ## `.web42/` Metadata Files (Not Packed)
27
+
28
+ The `.web42/` folder contains metadata and assets that are synced separately — they are NOT included in the packed agent files:
29
+
30
+ | File | Purpose | Editable? |
31
+ |------|---------|-----------|
32
+ | `marketplace.json` | Pricing, license, tags | Yes |
33
+ | `resources.json` | Resource file metadata | Yes |
34
+ | `avatar.*` | Agent profile image | Yes |
35
+ | `resources/` | Screenshots, videos, documents | Yes |
36
+ | `sync.json` | Sync state tracking | No — auto-managed |
37
+ | `dist/` | Pack output | No — auto-generated |
38
+
39
+ **`sync.json`** should never be edited manually. Doing so will break change detection between local and remote. It is safe to delete if you want to force a full re-sync.
40
+
26
41
  ## Files to Flag for Manual Review
27
42
 
28
43
  These are NOT auto-excluded but often contain content that should not ship:
@@ -53,11 +68,11 @@ These are NOT auto-excluded but often contain content that should not ship:
53
68
 
54
69
  - The pack command skips files larger than 1 MB.
55
70
  - Binary files (images, compiled executables) are skipped automatically (UTF-8 decode failure).
56
- - If the agent needs images (e.g., for the README cover), use `coverImage` in the manifest or host them externally.
71
+ - If the agent needs images (e.g., for the README cover), host them externally or manage them as resources in `.web42/resources/`.
57
72
 
58
73
  ## Using `.web42ignore`
59
74
 
60
- Create a `.web42ignore` file in the workspace root to exclude additional patterns. Syntax follows `.gitignore`:
75
+ `web42 init` scaffolds a default `.web42ignore` with sensible patterns (IDE folders, env files, test dirs, drafts). Edit it to match your workspace. Syntax: glob patterns, one per line — lines starting with `#` are comments.
61
76
 
62
77
  ```
63
78
  # Exclude test fixtures
@@ -71,7 +86,7 @@ drafts/**
71
86
  scripts/local-*.sh
72
87
  ```
73
88
 
74
- The `.web42ignore` file itself is automatically excluded from the artifact.
89
+ The `.web42ignore` file itself is automatically excluded from the packed artifact.
75
90
 
76
91
  ## Verification
77
92
 
@@ -81,8 +96,14 @@ After auditing, always run:
81
96
  web42 pack --dry-run
82
97
  ```
83
98
 
84
- This prints every file that would be included. Review the list for:
99
+ This prints:
100
+
101
+ 1. **User ignore patterns** loaded from `.web42ignore` (shown with ✕ prefix)
102
+ 2. **Every file** that would be included, with sizes
103
+ 3. **File and config variable counts**
104
+
105
+ Review the output for:
85
106
 
86
- 1. **Unexpected files** — anything you don't recognize or didn't intend to ship
87
- 2. **File count** — a typical agent has 5–30 files. Hundreds of files suggests something is wrong.
88
- 3. **Sensitive content** — spot-check a few files for leaked secrets or personal data
107
+ - **Unexpected files** — anything you don't recognize or didn't intend to ship
108
+ - **File count** — a typical agent has 5–30 files. Hundreds of files suggests missing ignore patterns.
109
+ - **Sensitive content** — spot-check a few files for leaked secrets or personal data
@@ -75,12 +75,14 @@ Searchable labels for marketplace discoverability.
75
75
  - **Good:** `["support", "crm", "slack", "weekly-reports"]`
76
76
  - **Bad:** `["ai", "agent", "good"]` (too generic)
77
77
  - **Guidance:** 3–6 tags. Think about what a buyer would search for. Mix category terms ("support", "finance") with capability terms ("slack-integration", "pdf-generation").
78
+ - **Note:** Tags are also specified in `.web42/marketplace.json`. The marketplace.json tags are the canonical source that gets synced to the remote. If tags exist in both files, the marketplace.json values take precedence during sync. See `references/marketplace-config.md`.
78
79
 
79
80
  ### `coverImage` (string)
80
81
 
81
82
  Path to a cover image file, relative to workspace root.
82
83
 
83
- - **Guidance:** Optional but recommended. A good cover image dramatically improves click-through on the marketplace. Use a 1200x630 or 1200x1200 image.
84
+ - **Guidance:** Optional. A good cover image dramatically improves click-through on the marketplace. Use a 1200x630 or 1200x1200 image.
85
+ - **Note:** For the marketplace listing, the primary visual asset is now the agent avatar at `.web42/avatar.*` and resources in `.web42/resources/`. The `coverImage` manifest field is still supported for backward compatibility but resources are the preferred approach. See `references/resources-guide.md`.
84
86
 
85
87
  ### `demoVideoUrl` (string)
86
88
 
@@ -88,6 +90,7 @@ URL to a demo video.
88
90
 
89
91
  - **Constraints:** Must be a valid URL.
90
92
  - **Guidance:** A 1–3 minute video showing the agent in action converts far better than text alone. Host on YouTube, Loom, or similar.
93
+ - **Note:** Demo videos can also be managed as resources in `.web42/resources/` with type `"video"`. Resources are uploaded directly to the marketplace. Use `demoVideoUrl` for externally hosted videos (YouTube, Loom) or `.web42/resources/` for self-hosted files. See `references/resources-guide.md`.
91
94
 
92
95
  ### `configVariables` (array)
93
96
 
@@ -0,0 +1,99 @@
1
+ # Marketplace Configuration Reference
2
+
3
+ The file `.web42/marketplace.json` controls how your agent appears and is sold on the Web42 marketplace. It is created automatically by `web42 init` with sensible defaults.
4
+
5
+ ## File Location
6
+
7
+ ```
8
+ .web42/marketplace.json
9
+ ```
10
+
11
+ ## Fields
12
+
13
+ ### `price_cents` (number)
14
+
15
+ The price in cents. `0` means free.
16
+
17
+ - **Default:** `0`
18
+ - **Examples:** `0` (free), `500` ($5.00), `2999` ($29.99), `10000` ($100.00)
19
+ - **Guidance:**
20
+ - Free agents get more installs but less revenue. Consider free for simple utilities, paid for specialized workflows.
21
+ - Look at comparable agents on the marketplace for pricing cues.
22
+ - $5–$15 is a sweet spot for productivity agents. $20–$50 for specialized professional tools.
23
+ - You can always start free and add pricing later.
24
+
25
+ ### `currency` (string)
26
+
27
+ ISO 4217 currency code.
28
+
29
+ - **Default:** `"usd"`
30
+ - **Values:** Currently only `"usd"` is supported.
31
+
32
+ ### `license` (string | null)
33
+
34
+ The license under which the agent is distributed. `null` means no license specified.
35
+
36
+ - **Default:** `null`
37
+ - **Supported values:**
38
+
39
+ | License | Summary | Best For |
40
+ |---------|---------|----------|
41
+ | `"MIT"` | Permissive. Buyers can do almost anything. | Open tools, community agents |
42
+ | `"Apache-2.0"` | Permissive + patent grant. | Enterprise-friendly tools |
43
+ | `"GPL-3.0"` | Copyleft. Derivatives must also be GPL. | Agents you want to stay open |
44
+ | `"BSD-3-Clause"` | Permissive, similar to MIT. | Academic or research agents |
45
+ | `"Proprietary"` | All rights reserved. No redistribution. | Commercial/paid agents |
46
+ | `"Custom"` | Custom terms defined elsewhere. | Unique licensing needs |
47
+
48
+ - **Guidance:**
49
+ - For **free agents** intended as community contributions: `MIT` or `Apache-2.0`.
50
+ - For **paid agents**: `Proprietary` is the standard choice — buyers get usage rights but cannot redistribute.
51
+ - If unsure, `MIT` for free and `Proprietary` for paid is a safe default.
52
+
53
+ ### `tags` (string array)
54
+
55
+ Searchable labels for marketplace discoverability. These are the canonical tags shown on the marketplace listing.
56
+
57
+ - **Default:** `[]`
58
+ - **Constraints:** Each tag should be lowercase, hyphenated for multi-word.
59
+ - **Good:** `["crm", "slack-integration", "weekly-reports", "productivity"]`
60
+ - **Bad:** `["ai", "agent", "good", "cool"]` (too generic)
61
+ - **Guidance:**
62
+ - Use 3–6 tags.
63
+ - Mix **category terms** ("finance", "devops", "support") with **capability terms** ("pdf-generation", "slack-integration", "email-monitoring").
64
+ - Think about what a buyer would search for to find your agent.
65
+ - Tags also appear in the manifest — the marketplace.json tags are the canonical source that gets synced to the remote.
66
+
67
+ ## Visibility (Dashboard Only)
68
+
69
+ Agent visibility is **not** controlled through local files. It is managed exclusively through the Web42 dashboard at `web42.ai`.
70
+
71
+ The visibility lifecycle:
72
+
73
+ 1. **`private`** (default) — Only you can see it. Use this while developing and preparing.
74
+ 2. **`unlisted`** — Accessible via direct link but not in search/browse. Good for beta testers or early feedback.
75
+ 3. **`public`** — Visible to everyone on the marketplace. Set this when you're ready to launch.
76
+
77
+ Remind the user to visit the dashboard to toggle visibility when the agent is ready.
78
+
79
+ ## Example File
80
+
81
+ ```json
82
+ {
83
+ "price_cents": 999,
84
+ "currency": "usd",
85
+ "license": "Proprietary",
86
+ "tags": [
87
+ "crm",
88
+ "slack-integration",
89
+ "weekly-reports",
90
+ "productivity"
91
+ ]
92
+ }
93
+ ```
94
+
95
+ ## Sync Behavior
96
+
97
+ When you run `web42 push`, the contents of `.web42/marketplace.json` are included in the sync snapshot and written to the remote database. When you run `web42 pull`, remote marketplace settings (except visibility) are written back to this file.
98
+
99
+ Changes made on the dashboard (e.g., editing tags or price via the web UI) will be reflected locally on the next `web42 pull`.
@@ -0,0 +1,136 @@
1
+ # Resources Guide
2
+
3
+ Resources are the visual media and documents that accompany your agent's marketplace listing: screenshots, demo videos, architecture diagrams, PDF guides, etc. They make listings dramatically more compelling.
4
+
5
+ ## File Locations
6
+
7
+ ```
8
+ .web42/resources.json # Metadata describing each resource
9
+ .web42/resources/ # The actual resource files
10
+ screenshot-dashboard.png
11
+ demo-recording.mp4
12
+ setup-guide.pdf
13
+ ```
14
+
15
+ ## `resources.json` Schema
16
+
17
+ The file is a JSON array of `ResourceMeta` objects:
18
+
19
+ ```json
20
+ [
21
+ {
22
+ "file": "screenshot-dashboard.png",
23
+ "title": "Dashboard Overview",
24
+ "description": "The main dashboard showing weekly report generation",
25
+ "type": "image",
26
+ "sort_order": 0
27
+ },
28
+ {
29
+ "file": "demo-recording.mp4",
30
+ "title": "3-Minute Demo",
31
+ "description": "Watch the agent draft a report from CRM data in real time",
32
+ "type": "video",
33
+ "sort_order": 1
34
+ }
35
+ ]
36
+ ```
37
+
38
+ ### Fields
39
+
40
+ | Field | Type | Required | Description |
41
+ |-------|------|----------|-------------|
42
+ | `file` | string | Yes | Filename in `.web42/resources/` |
43
+ | `title` | string | Yes | Display title on the marketplace listing |
44
+ | `description` | string | No | Optional caption or context |
45
+ | `type` | `"image"` \| `"video"` \| `"document"` | Yes | Determines how the marketplace renders it |
46
+ | `sort_order` | number | Yes | Display order (0 = first) |
47
+
48
+ ## Resource Types
49
+
50
+ ### Images
51
+
52
+ Screenshots, diagrams, architecture overviews, result samples.
53
+
54
+ - **Recommended:** 1200x800 or 1600x900 (16:9 landscape)
55
+ - **Formats:** PNG, JPEG, WebP
56
+ - **Max size:** 5 MB per file
57
+ - **Tips:**
58
+ - Lead with your best screenshot — it appears first in the gallery.
59
+ - Show the agent *in action*, not just a static interface.
60
+ - Annotate screenshots with callouts if key features are not obvious.
61
+ - Dark-mode and light-mode variants both work well.
62
+
63
+ ### Videos
64
+
65
+ Demo recordings, walkthroughs, setup tutorials.
66
+
67
+ - **Recommended:** 1–3 minutes for demos, under 60 seconds for teasers
68
+ - **Formats:** MP4, WebM
69
+ - **Max size:** 50 MB per file (for local storage; consider hosting large videos externally)
70
+ - **Tips:**
71
+ - Start with the outcome, not the setup. Show the result in the first 10 seconds.
72
+ - Screen recordings with voiceover convert better than silent ones.
73
+ - For large video files, consider hosting on YouTube/Loom and linking via `demoVideoUrl` in the manifest instead.
74
+
75
+ ### Documents
76
+
77
+ PDF guides, setup instructions, architecture docs.
78
+
79
+ - **Formats:** PDF
80
+ - **Max size:** 10 MB per file
81
+ - **Tips:**
82
+ - Use for detailed setup guides that are too long for the README.
83
+ - A 1-page "quick start" PDF is a nice touch for complex agents.
84
+
85
+ ## How Resources Appear on the Marketplace
86
+
87
+ Resources are displayed on the agent's detail page:
88
+
89
+ - **Images** show as a scrollable gallery below the agent header.
90
+ - **Videos** embed with a play button.
91
+ - **Documents** appear as downloadable links.
92
+
93
+ The `sort_order` controls the display sequence across all types.
94
+
95
+ ## Sync Behavior
96
+
97
+ When you run `web42 push`, the CLI:
98
+
99
+ 1. Reads `.web42/resources.json` for metadata.
100
+ 2. Uploads each file from `.web42/resources/` to the server.
101
+ 3. Creates the corresponding `agent_resources` rows in the database.
102
+
103
+ When you run `web42 pull`, the CLI writes `.web42/resources.json` with metadata from the remote. Resource files themselves are not downloaded back (they are referenced by URL in the snapshot).
104
+
105
+ ## Example Workflow
106
+
107
+ 1. Take screenshots of your agent in action.
108
+ 2. Save them to `.web42/resources/`.
109
+ 3. Create or update `.web42/resources.json` with metadata for each file.
110
+ 4. Run `web42 push` — the resources upload alongside everything else.
111
+
112
+ ```json
113
+ [
114
+ {
115
+ "file": "slack-report.png",
116
+ "title": "Weekly Report in Slack",
117
+ "description": "Automated report posted to #team-updates every Monday",
118
+ "type": "image",
119
+ "sort_order": 0
120
+ },
121
+ {
122
+ "file": "crm-dashboard.png",
123
+ "title": "CRM Data View",
124
+ "description": "The agent reads from your CRM and extracts key metrics",
125
+ "type": "image",
126
+ "sort_order": 1
127
+ },
128
+ {
129
+ "file": "setup-guide.pdf",
130
+ "title": "Setup Guide",
131
+ "description": "Step-by-step guide for connecting your CRM and Slack",
132
+ "type": "document",
133
+ "sort_order": 2
134
+ }
135
+ ]
136
+ ```