@web42/w42 0.1.4 → 0.1.9
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/LICENSE.md +116 -0
- package/README.md +75 -47
- package/dist/commands/send.js +107 -33
- package/dist/commands/serve.js +54 -117
- package/dist/index.js +0 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +12 -13
- package/dist/generated/embedded-skills.d.ts +0 -9
- package/dist/generated/embedded-skills.js +0 -40
- package/skills/web42-publish-prep/SKILL.md +0 -181
- package/skills/web42-publish-prep/_meta.json +0 -17
- package/skills/web42-publish-prep/assets/readme-template.md +0 -61
- package/skills/web42-publish-prep/references/file-hygiene.md +0 -109
- package/skills/web42-publish-prep/references/manifest-fields.md +0 -142
- package/skills/web42-publish-prep/references/marketplace-config.md +0 -99
- package/skills/web42-publish-prep/references/resources-guide.md +0 -136
- package/skills/web42-publish-prep/references/web42-folder.md +0 -120
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
# {Agent Name}
|
|
2
|
-
|
|
3
|
-
<!--
|
|
4
|
-
This is a starting point, not a form. Rewrite it, restructure it, make it yours.
|
|
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.
|
|
9
|
-
-->
|
|
10
|
-
|
|
11
|
-
{A bold opening line. What changes for the user when they have you? Don't describe yourself — describe the outcome.}
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## What I Do
|
|
16
|
-
|
|
17
|
-
{2–3 sentences, max. What's your superpower? Write this like you're explaining to a friend, not a spec sheet.}
|
|
18
|
-
|
|
19
|
-
## Try Me
|
|
20
|
-
|
|
21
|
-
{3–5 concrete scenarios. Not features — experiences. Make the reader feel what it's like to work with you.}
|
|
22
|
-
|
|
23
|
-
- **"Draft my weekly standup notes from yesterday's git commits and Slack threads."**
|
|
24
|
-
- **"Summarize this 40-page PDF into a one-page brief I can send to my team."**
|
|
25
|
-
- **"Monitor my inbox and ping me only when something actually matters."**
|
|
26
|
-
|
|
27
|
-
<!-- Replace these with real scenarios that match what you actually do. -->
|
|
28
|
-
|
|
29
|
-
## Install
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
web42 openclaw install @{author}/{name}
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
{One sentence on what happens after install. Does the agent need a restart? A quick config? A first conversation?}
|
|
36
|
-
|
|
37
|
-
## Configuration
|
|
38
|
-
|
|
39
|
-
{List any API keys, tokens, or setup the user needs to provide. Be specific about where to find each one.}
|
|
40
|
-
|
|
41
|
-
| Variable | What It Is | Where to Get It |
|
|
42
|
-
|----------|-----------|-----------------|
|
|
43
|
-
| `EXAMPLE_API_KEY` | Access token for Example API | [Example Dashboard > Settings > API](https://example.com/settings) |
|
|
44
|
-
|
|
45
|
-
<!-- Remove this section entirely if the agent needs no configuration. -->
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
<!--
|
|
50
|
-
Optional sections you might add:
|
|
51
|
-
- "How I Work" (high-level, no secrets — just enough to build trust)
|
|
52
|
-
- "Limitations" (honesty builds credibility)
|
|
53
|
-
- "Changelog" (what's new in this version)
|
|
54
|
-
- "Credits" (shoutouts, inspirations)
|
|
55
|
-
|
|
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.
|
|
61
|
-
-->
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
# File Hygiene Checklist
|
|
2
|
-
|
|
3
|
-
Before packing, audit the workspace for files that should not ship to buyers. The CLI's pack command automatically excludes some patterns, but manual review catches everything else.
|
|
4
|
-
|
|
5
|
-
## Automatically Excluded by the CLI
|
|
6
|
-
|
|
7
|
-
These patterns are hardcoded in the pack command and will never appear in the `.web42/dist/` artifact:
|
|
8
|
-
|
|
9
|
-
| Pattern | Reason |
|
|
10
|
-
|---------|--------|
|
|
11
|
-
| `auth-profiles.json` | Platform authentication credentials |
|
|
12
|
-
| `MEMORY.md` | Creator's long-term memory — personal context |
|
|
13
|
-
| `memory/**` | Daily memory logs — personal context |
|
|
14
|
-
| `sessions/**` | Session history — personal context |
|
|
15
|
-
| `.git/**` | Version control internals |
|
|
16
|
-
| `node_modules/**` | Dependencies (not portable) |
|
|
17
|
-
| `.DS_Store` | macOS filesystem metadata |
|
|
18
|
-
| `*.log` | Log files |
|
|
19
|
-
| `openclaw.json` | Platform config (contains agent bindings, channel secrets) |
|
|
20
|
-
| `.openclaw/credentials/**` | Platform credentials |
|
|
21
|
-
| `.web42/**` | Metadata folder (marketplace config, sync state, pack output) |
|
|
22
|
-
| `.web42ignore` | Pack ignore config (meta, not content) |
|
|
23
|
-
| `manifest.json` | Shipped separately as structured data |
|
|
24
|
-
| `USER.md` | Always rewritten with a blank template on install |
|
|
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
|
-
|
|
41
|
-
## Files to Flag for Manual Review
|
|
42
|
-
|
|
43
|
-
These are NOT auto-excluded but often contain content that should not ship:
|
|
44
|
-
|
|
45
|
-
### Personal Data
|
|
46
|
-
|
|
47
|
-
- **`HEARTBEAT.md`** — If it contains creator-specific tasks, reminders, or routines. Reset to the scaffold default (empty with comments) unless the tasks are part of the agent's intended behavior.
|
|
48
|
-
- **`SOUL.md`** — If it references the creator by name, contains personal preferences, or has inside jokes. Generalize to describe the agent's intended persona, not the creator's personality.
|
|
49
|
-
- **`IDENTITY.md`** — If it contains the creator's chosen name/emoji/avatar. The buyer's agent should form its own identity. Reset to the scaffold template or write a persona description that fits the agent's purpose.
|
|
50
|
-
- **`TOOLS.md`** — If it contains the creator's SSH hosts, camera names, device nicknames, etc. Reset to the scaffold template with example placeholders.
|
|
51
|
-
|
|
52
|
-
### Secrets and Credentials
|
|
53
|
-
|
|
54
|
-
- **`.env` / `.env.local`** — Should never be in the workspace root. If present, flag immediately.
|
|
55
|
-
- **`.web42.config.json`** — Contains config variable values from the creator's install. Must not ship.
|
|
56
|
-
- **Hardcoded API keys in skill files** — The CLI strips known patterns (`sk-...`, `ghp_...`, bearer tokens), but custom keys may slip through. Grep for suspicious patterns: long hex/base64 strings, `token`, `secret`, `password`, `apikey`.
|
|
57
|
-
|
|
58
|
-
### Development Artifacts
|
|
59
|
-
|
|
60
|
-
- **`.vscode/` / `.cursor/` / `.idea/`** — IDE configuration. Not relevant to buyers.
|
|
61
|
-
- **`__pycache__/` / `*.pyc`** — Python bytecode.
|
|
62
|
-
- **`Thumbs.db`** — Windows thumbnail cache.
|
|
63
|
-
- **`*.bak` / `*.swp` / `*.tmp`** — Editor backup/swap files.
|
|
64
|
-
- **`test/` / `tests/` / `__tests__/`** — Test files, unless they are part of the agent's functionality.
|
|
65
|
-
- **Build outputs** — `dist/`, `build/`, `out/` directories.
|
|
66
|
-
|
|
67
|
-
### Large or Binary Files
|
|
68
|
-
|
|
69
|
-
- The pack command skips files larger than 1 MB.
|
|
70
|
-
- Binary files (images, compiled executables) are skipped automatically (UTF-8 decode failure).
|
|
71
|
-
- If the agent needs images (e.g., for the README cover), host them externally or manage them as resources in `.web42/resources/`.
|
|
72
|
-
|
|
73
|
-
## Using `.web42ignore`
|
|
74
|
-
|
|
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.
|
|
76
|
-
|
|
77
|
-
```
|
|
78
|
-
# Exclude test fixtures
|
|
79
|
-
tests/**
|
|
80
|
-
fixtures/**
|
|
81
|
-
|
|
82
|
-
# Exclude draft documents
|
|
83
|
-
drafts/**
|
|
84
|
-
|
|
85
|
-
# Exclude local scripts not part of the agent
|
|
86
|
-
scripts/local-*.sh
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
The `.web42ignore` file itself is automatically excluded from the packed artifact.
|
|
90
|
-
|
|
91
|
-
## Verification
|
|
92
|
-
|
|
93
|
-
After auditing, always run:
|
|
94
|
-
|
|
95
|
-
```
|
|
96
|
-
web42 pack --dry-run
|
|
97
|
-
```
|
|
98
|
-
|
|
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:
|
|
106
|
-
|
|
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
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
# manifest.json Field Reference
|
|
2
|
-
|
|
3
|
-
The manifest describes your agent package. Format version is always `"agentpkg/1"`.
|
|
4
|
-
|
|
5
|
-
## Required Fields
|
|
6
|
-
|
|
7
|
-
### `name` (string)
|
|
8
|
-
|
|
9
|
-
The package identifier. Appears in install commands and URLs.
|
|
10
|
-
|
|
11
|
-
- **Constraints:** 1–100 characters. Lowercase alphanumeric with hyphens only. Must start with a letter or number. Regex: `^[a-z0-9][a-z0-9-]*$`
|
|
12
|
-
- **Good:** `support-bot`, `code-reviewer`, `daily-digest`
|
|
13
|
-
- **Bad:** `My_Agent`, `Support Bot`, `-agent`
|
|
14
|
-
- **Guidance:** Pick something short, memorable, and descriptive of what the agent does. This becomes the slug in `@author/name`.
|
|
15
|
-
|
|
16
|
-
### `description` (string)
|
|
17
|
-
|
|
18
|
-
A short pitch for the agent. Shown in search results and the marketplace listing.
|
|
19
|
-
|
|
20
|
-
- **Constraints:** 1–500 characters.
|
|
21
|
-
- **Good:** "Drafts weekly team reports from your CRM data and posts them to Slack every Monday."
|
|
22
|
-
- **Bad:** "An AI agent." / "This agent uses GPT-4 to process natural language queries against a database."
|
|
23
|
-
- **Guidance:** Lead with the benefit to the user. What problem disappears? Avoid technical jargon about how it works internally.
|
|
24
|
-
|
|
25
|
-
### `version` (string)
|
|
26
|
-
|
|
27
|
-
Semantic version of the package.
|
|
28
|
-
|
|
29
|
-
- **Constraints:** Must match `MAJOR.MINOR.PATCH` (e.g., `1.0.0`).
|
|
30
|
-
- **Guidance:** Start at `1.0.0` for first publish. Bump `PATCH` for fixes, `MINOR` for new capabilities, `MAJOR` for breaking changes to config or behavior.
|
|
31
|
-
|
|
32
|
-
### `author` (string)
|
|
33
|
-
|
|
34
|
-
Your Web42 username. Set automatically by `web42 init` from your auth credentials.
|
|
35
|
-
|
|
36
|
-
- **Constraints:** Non-empty string.
|
|
37
|
-
- **Guidance:** Don't edit manually — it's populated from `web42 auth whoami`.
|
|
38
|
-
|
|
39
|
-
## Optional Fields
|
|
40
|
-
|
|
41
|
-
### `platform` (string)
|
|
42
|
-
|
|
43
|
-
Target agent platform.
|
|
44
|
-
|
|
45
|
-
- **Values:** Currently only `"openclaw"`.
|
|
46
|
-
- **Guidance:** Set during `web42 init` based on the platform prompt.
|
|
47
|
-
|
|
48
|
-
### `skills` (array)
|
|
49
|
-
|
|
50
|
-
List of skills the agent provides. Each entry has `name` (string) and `description` (string).
|
|
51
|
-
|
|
52
|
-
- **Auto-detected** from `skills/*/SKILL.md` during init and pack.
|
|
53
|
-
- **Guidance:** Don't edit manually. Add skills by creating `skills/<name>/SKILL.md` in your workspace. Internal skills (with `internal: true` in frontmatter) are automatically excluded.
|
|
54
|
-
|
|
55
|
-
### `plugins` (string array)
|
|
56
|
-
|
|
57
|
-
Reserved for future use.
|
|
58
|
-
|
|
59
|
-
- **Default:** `[]`
|
|
60
|
-
- **Guidance:** Leave empty for now.
|
|
61
|
-
|
|
62
|
-
### `modelPreferences` (object)
|
|
63
|
-
|
|
64
|
-
Preferred LLM models for this agent.
|
|
65
|
-
|
|
66
|
-
- **Fields:** `primary` (string, optional), `fallback` (string, optional)
|
|
67
|
-
- **Example:** `{ "primary": "claude-sonnet-4-20250514" }`
|
|
68
|
-
- **Guidance:** Set `primary` to the model the agent is designed and tested for. The `fallback` is used if the primary is unavailable. During install, the CLI will prompt buyers for the corresponding provider API key.
|
|
69
|
-
|
|
70
|
-
### `tags` (string array)
|
|
71
|
-
|
|
72
|
-
Searchable labels for marketplace discoverability.
|
|
73
|
-
|
|
74
|
-
- **Default:** `[]`
|
|
75
|
-
- **Good:** `["support", "crm", "slack", "weekly-reports"]`
|
|
76
|
-
- **Bad:** `["ai", "agent", "good"]` (too generic)
|
|
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`.
|
|
79
|
-
|
|
80
|
-
### `coverImage` (string)
|
|
81
|
-
|
|
82
|
-
Path to a cover image file, relative to workspace root.
|
|
83
|
-
|
|
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`.
|
|
86
|
-
|
|
87
|
-
### `demoVideoUrl` (string)
|
|
88
|
-
|
|
89
|
-
URL to a demo video.
|
|
90
|
-
|
|
91
|
-
- **Constraints:** Must be a valid URL.
|
|
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`.
|
|
94
|
-
|
|
95
|
-
### `configVariables` (array)
|
|
96
|
-
|
|
97
|
-
Secrets and configuration values that buyers provide during install.
|
|
98
|
-
|
|
99
|
-
- **Each entry:** `{ key, label, description?, required, default? }`
|
|
100
|
-
- `key` — Environment variable name (e.g., `SLACK_BOT_TOKEN`)
|
|
101
|
-
- `label` — Human-readable name shown in the install prompt (e.g., "Slack Bot Token")
|
|
102
|
-
- `description` — Optional help text explaining where to find this value
|
|
103
|
-
- `required` — Whether install should block without it
|
|
104
|
-
- `default` — Optional default value
|
|
105
|
-
- **Auto-detected** from skill files during pack (secrets are stripped and replaced with placeholders).
|
|
106
|
-
- **Guidance:** For each config variable, make the `label` and `description` crystal clear. A buyer who has never seen your agent should understand exactly what to provide and where to get it.
|
|
107
|
-
|
|
108
|
-
## Example Manifest
|
|
109
|
-
|
|
110
|
-
```json
|
|
111
|
-
{
|
|
112
|
-
"format": "agentpkg/1",
|
|
113
|
-
"platform": "openclaw",
|
|
114
|
-
"name": "weekly-digest",
|
|
115
|
-
"description": "Summarizes your team's CRM activity and posts a digest to Slack every Monday morning.",
|
|
116
|
-
"version": "1.0.0",
|
|
117
|
-
"author": "alice",
|
|
118
|
-
"skills": [
|
|
119
|
-
{ "name": "crm-reader", "description": "Query CRM data for weekly activity" },
|
|
120
|
-
{ "name": "slack-poster", "description": "Post formatted messages to Slack channels" }
|
|
121
|
-
],
|
|
122
|
-
"plugins": [],
|
|
123
|
-
"modelPreferences": { "primary": "claude-sonnet-4-20250514" },
|
|
124
|
-
"tags": ["crm", "slack", "weekly-reports", "productivity"],
|
|
125
|
-
"coverImage": "assets/cover.png",
|
|
126
|
-
"demoVideoUrl": "https://www.youtube.com/watch?v=example",
|
|
127
|
-
"configVariables": [
|
|
128
|
-
{
|
|
129
|
-
"key": "CRM_API_KEY",
|
|
130
|
-
"label": "CRM API Key",
|
|
131
|
-
"description": "Found in your CRM dashboard under Settings > API",
|
|
132
|
-
"required": true
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
"key": "SLACK_BOT_TOKEN",
|
|
136
|
-
"label": "Slack Bot Token",
|
|
137
|
-
"description": "Create a Slack app at api.slack.com and copy the Bot User OAuth Token",
|
|
138
|
-
"required": true
|
|
139
|
-
}
|
|
140
|
-
]
|
|
141
|
-
}
|
|
142
|
-
```
|
|
@@ -1,99 +0,0 @@
|
|
|
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`.
|
|
@@ -1,136 +0,0 @@
|
|
|
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
|
-
```
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
# The `.web42/` Folder
|
|
2
|
-
|
|
3
|
-
The `.web42/` directory in your agent workspace is the metadata and sync hub for the Web42 marketplace. It is created automatically by `web42 init`.
|
|
4
|
-
|
|
5
|
-
## Structure
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
.web42/
|
|
9
|
-
├── marketplace.json # Pricing, license, tags
|
|
10
|
-
├── resources.json # Metadata for resource files
|
|
11
|
-
├── sync.json # Sync state (auto-managed, do not edit)
|
|
12
|
-
├── avatar.png # Agent profile image (optional)
|
|
13
|
-
├── resources/ # Screenshots, videos, documents
|
|
14
|
-
│ ├── screenshot-1.png
|
|
15
|
-
│ └── demo.mp4
|
|
16
|
-
└── dist/ # Pack output (auto-generated by web42 pack)
|
|
17
|
-
├── AGENTS.md
|
|
18
|
-
├── IDENTITY.md
|
|
19
|
-
├── manifest.json
|
|
20
|
-
└── ...
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## Files You Edit
|
|
24
|
-
|
|
25
|
-
### `marketplace.json`
|
|
26
|
-
|
|
27
|
-
Controls pricing, licensing, and discoverability on the marketplace.
|
|
28
|
-
|
|
29
|
-
- Created by `web42 init` with defaults.
|
|
30
|
-
- Edit manually or with agent assistance.
|
|
31
|
-
- Synced to/from the remote on push/pull.
|
|
32
|
-
- See `references/marketplace-config.md` for the full field reference.
|
|
33
|
-
|
|
34
|
-
### `resources.json`
|
|
35
|
-
|
|
36
|
-
Describes the resource files (screenshots, videos, documents) in the `resources/` subdirectory.
|
|
37
|
-
|
|
38
|
-
- JSON array of `ResourceMeta` objects.
|
|
39
|
-
- Each entry maps a file in `resources/` to a title, description, type, and display order.
|
|
40
|
-
- See `references/resources-guide.md` for the schema and guidance.
|
|
41
|
-
|
|
42
|
-
### `avatar.{png,jpg,jpeg,webp,svg}`
|
|
43
|
-
|
|
44
|
-
The agent's profile image, shown on the marketplace listing and search results.
|
|
45
|
-
|
|
46
|
-
- Only one avatar file should exist (the CLI picks the first match by extension priority: png, jpg, jpeg, webp, svg).
|
|
47
|
-
- Recommended: 400x400 or larger, square aspect ratio.
|
|
48
|
-
- Uploaded to the server on `web42 push`.
|
|
49
|
-
|
|
50
|
-
### `resources/`
|
|
51
|
-
|
|
52
|
-
Directory containing the actual resource files referenced by `resources.json`.
|
|
53
|
-
|
|
54
|
-
- Drop images, videos, or PDFs here.
|
|
55
|
-
- Filenames must match the `file` field in `resources.json`.
|
|
56
|
-
|
|
57
|
-
## Files You Should NOT Edit
|
|
58
|
-
|
|
59
|
-
### `sync.json`
|
|
60
|
-
|
|
61
|
-
Tracks the sync state between your local workspace and the remote database.
|
|
62
|
-
|
|
63
|
-
```json
|
|
64
|
-
{
|
|
65
|
-
"agent_id": "0c4cc49e-...",
|
|
66
|
-
"last_remote_hash": "7b1d3ecf...",
|
|
67
|
-
"last_local_hash": "d9a10b8a...",
|
|
68
|
-
"synced_at": "2026-03-17T03:54:46.124Z"
|
|
69
|
-
}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
- **Auto-managed** by `web42 push`, `web42 pull`, and `web42 sync`.
|
|
73
|
-
- Editing this file manually will break change detection.
|
|
74
|
-
- Safe to delete if you want to force a full re-sync (next push/pull will recreate it).
|
|
75
|
-
|
|
76
|
-
### `dist/`
|
|
77
|
-
|
|
78
|
-
The pack output directory, generated by `web42 pack` or automatically during `web42 push`.
|
|
79
|
-
|
|
80
|
-
- Contains the processed, distributable version of your agent files.
|
|
81
|
-
- **Auto-generated** — do not edit files here directly.
|
|
82
|
-
- Excluded from the pack itself (no recursion).
|
|
83
|
-
|
|
84
|
-
## Git Integration
|
|
85
|
-
|
|
86
|
-
Add `.web42/sync.json` and `.web42/dist/` to `.gitignore` since they are auto-generated:
|
|
87
|
-
|
|
88
|
-
```gitignore
|
|
89
|
-
.web42/sync.json
|
|
90
|
-
.web42/dist/
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Keep these in version control:
|
|
94
|
-
|
|
95
|
-
- `.web42/marketplace.json`
|
|
96
|
-
- `.web42/resources.json`
|
|
97
|
-
- `.web42/avatar.*`
|
|
98
|
-
- `.web42/resources/`
|
|
99
|
-
|
|
100
|
-
## `.web42ignore` (Workspace Root)
|
|
101
|
-
|
|
102
|
-
Not inside `.web42/` — lives at the workspace root alongside `manifest.json`.
|
|
103
|
-
|
|
104
|
-
- Created by `web42 init` with sensible defaults (IDE dirs, env files, test folders, drafts).
|
|
105
|
-
- Glob patterns, one per line. Lines starting with `#` are comments.
|
|
106
|
-
- Controls which files are excluded when running `web42 pack` or `web42 push`.
|
|
107
|
-
- Use `web42 pack --dry-run` to verify what gets included/excluded.
|
|
108
|
-
- See `references/file-hygiene.md` for full details.
|
|
109
|
-
|
|
110
|
-
Keep `.web42ignore` in version control so the ignore rules travel with the project.
|
|
111
|
-
|
|
112
|
-
## Sync Lifecycle
|
|
113
|
-
|
|
114
|
-
```
|
|
115
|
-
web42 init → Creates .web42/, marketplace.json, resources.json, .web42ignore
|
|
116
|
-
web42 pack → Generates .web42/dist/ from workspace files (respects .web42ignore)
|
|
117
|
-
web42 push → Sends snapshot (manifest + README + marketplace + files + avatar + resources) to remote
|
|
118
|
-
web42 pull → Fetches remote snapshot, writes to local files
|
|
119
|
-
web42 sync → Shows local vs remote hash comparison without changing anything
|
|
120
|
-
```
|