wealthbox-cli 1.1.6__tar.gz → 1.2.0__tar.gz
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.
- wealthbox_cli-1.2.0/.claude-plugin/marketplace.json +25 -0
- wealthbox_cli-1.2.0/.codex-plugin/plugin.json +16 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/PKG-INFO +53 -14
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/README.md +52 -13
- {wealthbox_cli-1.1.6/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/SKILL.md +31 -13
- wealthbox_cli-1.2.0/codex-skill/wealthbox-crm/bootstrap.md +127 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/docs/changelog.md +25 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/docs/getting-started.md +17 -1
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/.claude-plugin/plugin.json +17 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/SKILL.md +156 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/bootstrap.md +127 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/contacts.md +21 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/events.md +9 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/notes.md +5 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/opportunities.md +12 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/projects.md +5 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/tasks.md +14 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/workflows.md +31 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/contacts.md +153 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/events.md +88 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/households.md +40 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/lookups.md +78 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/notes.md +67 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/opportunities.md +87 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/projects.md +60 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/tasks.md +101 -0
- wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/workflows.md +90 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/pyproject.toml +1 -1
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/_skill_bootstrap.py +129 -53
- wealthbox_cli-1.2.0/src/wealthbox_tools/cli/_skill_paths.py +34 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/cli/skills.py +395 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/SKILL.md +156 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/bootstrap.md +127 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/contacts.md +21 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/events.md +9 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/notes.md +5 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/opportunities.md +12 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/projects.md +5 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/tasks.md +14 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/workflows.md +31 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/contacts.md +153 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/events.md +88 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/households.md +40 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/lookups.md +78 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/notes.md +67 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/opportunities.md +87 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/projects.md +60 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/tasks.md +101 -0
- wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/workflows.md +90 -0
- wealthbox_cli-1.1.6/src/wealthbox_tools/cli/skills.py +0 -513
- wealthbox_cli-1.1.6/src/wealthbox_tools/skills/wealthbox-crm/bootstrap.md +0 -119
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/.env.example +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/.github/workflows/ci.yml +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/.github/workflows/docs.yml +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/.gitignore +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/CONTRIBUTING.md +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/LICENSE +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/SECURITY.md +0 -0
- {wealthbox_cli-1.1.6/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/firm-examples/contacts.md +0 -0
- {wealthbox_cli-1.1.6/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/firm-examples/events.md +0 -0
- {wealthbox_cli-1.1.6/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/firm-examples/notes.md +0 -0
- {wealthbox_cli-1.1.6/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/firm-examples/opportunities.md +0 -0
- {wealthbox_cli-1.1.6/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/firm-examples/projects.md +0 -0
- {wealthbox_cli-1.1.6/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/firm-examples/tasks.md +0 -0
- {wealthbox_cli-1.1.6/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/firm-examples/workflows.md +0 -0
- {wealthbox_cli-1.1.6/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/contacts.md +0 -0
- {wealthbox_cli-1.1.6/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/events.md +0 -0
- {wealthbox_cli-1.1.6/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/households.md +0 -0
- {wealthbox_cli-1.1.6/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/lookups.md +0 -0
- {wealthbox_cli-1.1.6/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/notes.md +0 -0
- {wealthbox_cli-1.1.6/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/opportunities.md +0 -0
- {wealthbox_cli-1.1.6/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/projects.md +0 -0
- {wealthbox_cli-1.1.6/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/tasks.md +0 -0
- {wealthbox_cli-1.1.6/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/workflows.md +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/docs/cli-reference.md +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/docs/index.md +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/docs/overrides/main.html +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/docs/promotion.md +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/mkdocs.yml +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/__init__.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/__init__.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/_config.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/_skill_platforms.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/_util.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/activity.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/categories.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/config.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/contacts.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/events.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/households.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/main.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/me.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/notes.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/opportunities.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/projects.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/tasks.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/users.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/workflows.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/__init__.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/activity.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/base.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/categories.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/comments.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/contacts.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/events.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/households.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/me.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/notes.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/opportunities.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/projects.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/tasks.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/users.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/workflows.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/__init__.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/activity.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/comments.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/common.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/contacts.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/custom_fields.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/enums.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/events.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/households.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/notes.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/opportunities.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/projects.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/tasks.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/workflows.py +0 -0
- {wealthbox_cli-1.1.6 → wealthbox_cli-1.2.0}/src/wealthbox_tools/py.typed +0 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://code.claude.com/schemas/marketplace.json",
|
|
3
|
+
"name": "massive-value",
|
|
4
|
+
"description": "Marketplace for the Wealthbox CRM agent skill (and future Wealthbox-related plugins).",
|
|
5
|
+
"owner": {
|
|
6
|
+
"name": "Kadin Bullock"
|
|
7
|
+
},
|
|
8
|
+
"plugins": [
|
|
9
|
+
{
|
|
10
|
+
"name": "wealthbox-crm",
|
|
11
|
+
"source": "./plugins/wealthbox-crm",
|
|
12
|
+
"description": "Wealthbox CRM agent skill — natural-language CRM automation backed by the `wbox` CLI.",
|
|
13
|
+
"version": "1.2.0",
|
|
14
|
+
"category": "productivity",
|
|
15
|
+
"tags": [
|
|
16
|
+
"wealthbox",
|
|
17
|
+
"crm",
|
|
18
|
+
"financial-advisor"
|
|
19
|
+
],
|
|
20
|
+
"homepage": "https://github.com/massive-value/wealthbox-cli",
|
|
21
|
+
"repository": "https://github.com/massive-value/wealthbox-cli",
|
|
22
|
+
"license": "Apache-2.0"
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "wealthbox-crm",
|
|
3
|
+
"description": "Wealthbox CRM agent skill — drive contacts, tasks, notes, events, and households via natural language. Bundles SKILL.md, references, and firm-bootstrap workflow. Requires the `wbox` CLI (auto-install instructions in SKILL.md).",
|
|
4
|
+
"version": "1.2.0",
|
|
5
|
+
"author": "Kadin Bullock",
|
|
6
|
+
"homepage": "https://github.com/massive-value/wealthbox-cli",
|
|
7
|
+
"repository": "https://github.com/massive-value/wealthbox-cli",
|
|
8
|
+
"license": "Apache-2.0",
|
|
9
|
+
"skills": "./codex-skill",
|
|
10
|
+
"keywords": [
|
|
11
|
+
"wealthbox",
|
|
12
|
+
"crm",
|
|
13
|
+
"financial-advisor",
|
|
14
|
+
"wealth-management"
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wealthbox-cli
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: CLI and client library for the Wealthbox CRM API
|
|
5
5
|
Project-URL: Homepage, https://github.com/massive-value/wealthbox-cli
|
|
6
6
|
Project-URL: Documentation, https://massive-value.github.io/wealthbox-cli/
|
|
@@ -70,6 +70,17 @@ Description-Content-Type: text/markdown
|
|
|
70
70
|
|
|
71
71
|
## Quick Start
|
|
72
72
|
|
|
73
|
+
**No Python? No problem.** One-line installer (works on a fresh machine):
|
|
74
|
+
|
|
75
|
+
| Platform | Command |
|
|
76
|
+
|----------|---------|
|
|
77
|
+
| macOS / Linux | `curl -LsSf https://raw.githubusercontent.com/massive-value/wealthbox-cli/main/scripts/install.sh \| bash` |
|
|
78
|
+
| Windows (PowerShell) | `irm https://raw.githubusercontent.com/massive-value/wealthbox-cli/main/scripts/install.ps1 \| iex` |
|
|
79
|
+
|
|
80
|
+
The installer pulls in [uv](https://github.com/astral-sh/uv) (which provisions Python automatically), installs `wbox`, prompts for your Wealthbox API token, and offers to install the AI agent skill.
|
|
81
|
+
|
|
82
|
+
Already have Python? You can install directly:
|
|
83
|
+
|
|
73
84
|
```bash
|
|
74
85
|
pip install wealthbox-cli
|
|
75
86
|
wbox config set-token # paste your Wealthbox API token (masked)
|
|
@@ -136,21 +147,51 @@ The skill translates your intent into the correct `wbox` commands, handles flag
|
|
|
136
147
|
|
|
137
148
|
### Install
|
|
138
149
|
|
|
139
|
-
|
|
150
|
+
Two ways depending on which agent you use:
|
|
151
|
+
|
|
152
|
+
#### Option A — Claude Code plugin marketplace (recommended for Claude Code users)
|
|
153
|
+
|
|
154
|
+
Inside Claude Code:
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
/plugin marketplace add massive-value/wealthbox-cli
|
|
158
|
+
/plugin install wealthbox-crm@massive-value
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
The plugin auto-updates daily. The skill is installed under `~/.claude/plugins/cache/`. Firm data is stored at the canonical machine-level path (`~/.config/wbox/firm/` or `%APPDATA%\wbox\firm\`) — see [Where firm data lives](#where-firm-data-lives) below — and survives plugin auto-updates.
|
|
162
|
+
|
|
163
|
+
The `wbox` CLI is still required as the execution engine. The bundled SKILL.md tells the agent to install it via the Phase 1 bootstrap if missing.
|
|
164
|
+
|
|
165
|
+
#### Option B — `wbox skills install` (Claude Code, Codex, or local project scope)
|
|
140
166
|
|
|
141
167
|
```bash
|
|
142
168
|
pip install wealthbox-cli
|
|
143
169
|
wbox config set-token # paste your Wealthbox API token
|
|
144
|
-
wbox skills install # interactive: pick Claude Code, Codex, or
|
|
170
|
+
wbox skills install # interactive: pick Claude Code (user/project), Codex, or all
|
|
145
171
|
```
|
|
146
172
|
|
|
147
173
|
The installer asks which platforms to target, copies the skill into the right directory (`~/.claude/skills/` for Claude Code, `~/.codex/skills/` for Codex — both use `SKILL.md`), and offers to bootstrap your firm's customizations from the Wealthbox API.
|
|
148
174
|
|
|
175
|
+
#### Option C — Codex marketplace (when the openai/skills PR lands)
|
|
176
|
+
|
|
177
|
+
Pending submission to [openai/skills](https://github.com/openai/skills) (status tracked in CHANGELOG). Until then, use Option B for Codex.
|
|
178
|
+
|
|
149
179
|
> **Upgrading from < 1.1.6?** Earlier versions installed the codex skill as `AGENTS.md`. That was wrong — codex uses `SKILL.md` for skills (and `AGENTS.md` only as the project-level instructions file, in place of `CLAUDE.md`). If your codex install still has `AGENTS.md`, reinstall with `wbox skills install --platform codex --force`.
|
|
150
180
|
|
|
151
181
|
### First agent run captures firm conventions
|
|
152
182
|
|
|
153
|
-
`wbox skills bootstrap` populates the API-derived files (categories, custom fields, users) — that's the *quantitative* half. The *qualitative* half (firm defaults, naming conventions, named workflows, required fields) happens the first time an agent invokes the skill: it walks you through the questions in `bootstrap.md` and stamps `
|
|
183
|
+
`wbox skills bootstrap` populates the API-derived files (categories, custom fields, users) — that's the *quantitative* half. The *qualitative* half (firm defaults, naming conventions, named workflows, required fields) happens the first time an agent invokes the skill: it walks you through the questions in `bootstrap.md` and stamps `onboarded_at` in the canonical firm `_meta.json` when done. On subsequent runs the bootstrap path is skipped automatically.
|
|
184
|
+
|
|
185
|
+
### Where firm data lives
|
|
186
|
+
|
|
187
|
+
Firm data is stored at one canonical machine-level path — **not** inside each skill install. This way it survives plugin auto-updates, skill template upgrades, and works the same across Claude Code, Codex, or any other host:
|
|
188
|
+
|
|
189
|
+
| Platform | Firm data path |
|
|
190
|
+
|----------|----------------|
|
|
191
|
+
| macOS / Linux | `~/.config/wbox/firm/` |
|
|
192
|
+
| Windows | `%APPDATA%\wbox\firm\` |
|
|
193
|
+
|
|
194
|
+
Run `wbox skills firm-path` to print the resolved path. The bundled SKILL.md tells the agent to call this command and read firm files from that directory.
|
|
154
195
|
|
|
155
196
|
### Refresh after firm changes
|
|
156
197
|
|
|
@@ -160,22 +201,20 @@ If your firm adds or renames category values, custom fields, or users:
|
|
|
160
201
|
wbox skills refresh
|
|
161
202
|
```
|
|
162
203
|
|
|
163
|
-
This updates the generated half
|
|
204
|
+
This updates the generated half (categories, custom-fields, users); hand-edited policy is preserved.
|
|
164
205
|
|
|
165
206
|
### Other commands
|
|
166
207
|
|
|
167
208
|
```bash
|
|
168
|
-
wbox skills list # show
|
|
169
|
-
wbox skills doctor # diagnose install state + token
|
|
170
|
-
wbox skills
|
|
171
|
-
wbox skills upgrade # refresh template files
|
|
172
|
-
wbox skills mark-onboarded # stamp
|
|
173
|
-
wbox skills uninstall # remove the skill
|
|
209
|
+
wbox skills list # show install state per platform + canonical firm path
|
|
210
|
+
wbox skills doctor # diagnose install state + token + firm state
|
|
211
|
+
wbox skills firm-path # print canonical firm directory (for the agent)
|
|
212
|
+
wbox skills upgrade # refresh template files in every install; firm data is unaffected
|
|
213
|
+
wbox skills mark-onboarded # stamp onboarded_at in firm meta (the agent calls this for you)
|
|
214
|
+
wbox skills uninstall # remove the skill template; firm data is preserved
|
|
174
215
|
```
|
|
175
216
|
|
|
176
|
-
When the CLI ships a newer template (improved SKILL.md, new reference docs, etc.), `wbox skills upgrade` re-copies the bundled template into every installed platform
|
|
177
|
-
|
|
178
|
-
`wbox skills sync` is useful if you maintain firm conventions in one platform's install (e.g., your Claude Code user scope) and want the same `firm/` files mirrored to Codex or to a project-scoped `.claude/skills/` folder. The command runs as a wizard by default; pass `--source`, `--target`, and `--yes` for non-interactive use.
|
|
217
|
+
When the CLI ships a newer template (improved SKILL.md, new reference docs, etc.), `wbox skills upgrade` re-copies the bundled template into every installed platform. Firm data lives outside the skill dir, so it's untouched. Each install records the template's CLI version in its own `_meta.json`, so the agent can detect drift and prompt you to upgrade when needed.
|
|
179
218
|
|
|
180
219
|
### Works with other agents too
|
|
181
220
|
|
|
@@ -29,6 +29,17 @@
|
|
|
29
29
|
|
|
30
30
|
## Quick Start
|
|
31
31
|
|
|
32
|
+
**No Python? No problem.** One-line installer (works on a fresh machine):
|
|
33
|
+
|
|
34
|
+
| Platform | Command |
|
|
35
|
+
|----------|---------|
|
|
36
|
+
| macOS / Linux | `curl -LsSf https://raw.githubusercontent.com/massive-value/wealthbox-cli/main/scripts/install.sh \| bash` |
|
|
37
|
+
| Windows (PowerShell) | `irm https://raw.githubusercontent.com/massive-value/wealthbox-cli/main/scripts/install.ps1 \| iex` |
|
|
38
|
+
|
|
39
|
+
The installer pulls in [uv](https://github.com/astral-sh/uv) (which provisions Python automatically), installs `wbox`, prompts for your Wealthbox API token, and offers to install the AI agent skill.
|
|
40
|
+
|
|
41
|
+
Already have Python? You can install directly:
|
|
42
|
+
|
|
32
43
|
```bash
|
|
33
44
|
pip install wealthbox-cli
|
|
34
45
|
wbox config set-token # paste your Wealthbox API token (masked)
|
|
@@ -95,21 +106,51 @@ The skill translates your intent into the correct `wbox` commands, handles flag
|
|
|
95
106
|
|
|
96
107
|
### Install
|
|
97
108
|
|
|
98
|
-
|
|
109
|
+
Two ways depending on which agent you use:
|
|
110
|
+
|
|
111
|
+
#### Option A — Claude Code plugin marketplace (recommended for Claude Code users)
|
|
112
|
+
|
|
113
|
+
Inside Claude Code:
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
/plugin marketplace add massive-value/wealthbox-cli
|
|
117
|
+
/plugin install wealthbox-crm@massive-value
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
The plugin auto-updates daily. The skill is installed under `~/.claude/plugins/cache/`. Firm data is stored at the canonical machine-level path (`~/.config/wbox/firm/` or `%APPDATA%\wbox\firm\`) — see [Where firm data lives](#where-firm-data-lives) below — and survives plugin auto-updates.
|
|
121
|
+
|
|
122
|
+
The `wbox` CLI is still required as the execution engine. The bundled SKILL.md tells the agent to install it via the Phase 1 bootstrap if missing.
|
|
123
|
+
|
|
124
|
+
#### Option B — `wbox skills install` (Claude Code, Codex, or local project scope)
|
|
99
125
|
|
|
100
126
|
```bash
|
|
101
127
|
pip install wealthbox-cli
|
|
102
128
|
wbox config set-token # paste your Wealthbox API token
|
|
103
|
-
wbox skills install # interactive: pick Claude Code, Codex, or
|
|
129
|
+
wbox skills install # interactive: pick Claude Code (user/project), Codex, or all
|
|
104
130
|
```
|
|
105
131
|
|
|
106
132
|
The installer asks which platforms to target, copies the skill into the right directory (`~/.claude/skills/` for Claude Code, `~/.codex/skills/` for Codex — both use `SKILL.md`), and offers to bootstrap your firm's customizations from the Wealthbox API.
|
|
107
133
|
|
|
134
|
+
#### Option C — Codex marketplace (when the openai/skills PR lands)
|
|
135
|
+
|
|
136
|
+
Pending submission to [openai/skills](https://github.com/openai/skills) (status tracked in CHANGELOG). Until then, use Option B for Codex.
|
|
137
|
+
|
|
108
138
|
> **Upgrading from < 1.1.6?** Earlier versions installed the codex skill as `AGENTS.md`. That was wrong — codex uses `SKILL.md` for skills (and `AGENTS.md` only as the project-level instructions file, in place of `CLAUDE.md`). If your codex install still has `AGENTS.md`, reinstall with `wbox skills install --platform codex --force`.
|
|
109
139
|
|
|
110
140
|
### First agent run captures firm conventions
|
|
111
141
|
|
|
112
|
-
`wbox skills bootstrap` populates the API-derived files (categories, custom fields, users) — that's the *quantitative* half. The *qualitative* half (firm defaults, naming conventions, named workflows, required fields) happens the first time an agent invokes the skill: it walks you through the questions in `bootstrap.md` and stamps `
|
|
142
|
+
`wbox skills bootstrap` populates the API-derived files (categories, custom fields, users) — that's the *quantitative* half. The *qualitative* half (firm defaults, naming conventions, named workflows, required fields) happens the first time an agent invokes the skill: it walks you through the questions in `bootstrap.md` and stamps `onboarded_at` in the canonical firm `_meta.json` when done. On subsequent runs the bootstrap path is skipped automatically.
|
|
143
|
+
|
|
144
|
+
### Where firm data lives
|
|
145
|
+
|
|
146
|
+
Firm data is stored at one canonical machine-level path — **not** inside each skill install. This way it survives plugin auto-updates, skill template upgrades, and works the same across Claude Code, Codex, or any other host:
|
|
147
|
+
|
|
148
|
+
| Platform | Firm data path |
|
|
149
|
+
|----------|----------------|
|
|
150
|
+
| macOS / Linux | `~/.config/wbox/firm/` |
|
|
151
|
+
| Windows | `%APPDATA%\wbox\firm\` |
|
|
152
|
+
|
|
153
|
+
Run `wbox skills firm-path` to print the resolved path. The bundled SKILL.md tells the agent to call this command and read firm files from that directory.
|
|
113
154
|
|
|
114
155
|
### Refresh after firm changes
|
|
115
156
|
|
|
@@ -119,22 +160,20 @@ If your firm adds or renames category values, custom fields, or users:
|
|
|
119
160
|
wbox skills refresh
|
|
120
161
|
```
|
|
121
162
|
|
|
122
|
-
This updates the generated half
|
|
163
|
+
This updates the generated half (categories, custom-fields, users); hand-edited policy is preserved.
|
|
123
164
|
|
|
124
165
|
### Other commands
|
|
125
166
|
|
|
126
167
|
```bash
|
|
127
|
-
wbox skills list # show
|
|
128
|
-
wbox skills doctor # diagnose install state + token
|
|
129
|
-
wbox skills
|
|
130
|
-
wbox skills upgrade # refresh template files
|
|
131
|
-
wbox skills mark-onboarded # stamp
|
|
132
|
-
wbox skills uninstall # remove the skill
|
|
168
|
+
wbox skills list # show install state per platform + canonical firm path
|
|
169
|
+
wbox skills doctor # diagnose install state + token + firm state
|
|
170
|
+
wbox skills firm-path # print canonical firm directory (for the agent)
|
|
171
|
+
wbox skills upgrade # refresh template files in every install; firm data is unaffected
|
|
172
|
+
wbox skills mark-onboarded # stamp onboarded_at in firm meta (the agent calls this for you)
|
|
173
|
+
wbox skills uninstall # remove the skill template; firm data is preserved
|
|
133
174
|
```
|
|
134
175
|
|
|
135
|
-
When the CLI ships a newer template (improved SKILL.md, new reference docs, etc.), `wbox skills upgrade` re-copies the bundled template into every installed platform
|
|
136
|
-
|
|
137
|
-
`wbox skills sync` is useful if you maintain firm conventions in one platform's install (e.g., your Claude Code user scope) and want the same `firm/` files mirrored to Codex or to a project-scoped `.claude/skills/` folder. The command runs as a wizard by default; pass `--source`, `--target`, and `--yes` for non-interactive use.
|
|
176
|
+
When the CLI ships a newer template (improved SKILL.md, new reference docs, etc.), `wbox skills upgrade` re-copies the bundled template into every installed platform. Firm data lives outside the skill dir, so it's untouched. Each install records the template's CLI version in its own `_meta.json`, so the agent can detect drift and prompt you to upgrade when needed.
|
|
138
177
|
|
|
139
178
|
### Works with other agents too
|
|
140
179
|
|
|
@@ -8,22 +8,34 @@ description: Use when the user wants to interact with Wealthbox CRM — creating
|
|
|
8
8
|
Execute Wealthbox CRM operations via the `wbox` CLI. Supports contacts, tasks, notes, events,
|
|
9
9
|
opportunities, projects, workflows, households, and read-only lookups (categories, users, activity, me).
|
|
10
10
|
|
|
11
|
+
## Firm Configuration Path
|
|
12
|
+
|
|
13
|
+
Firm-specific data (categories, custom-fields, users, hand-edited
|
|
14
|
+
policy, identity, onboarded marker) lives at one canonical path per
|
|
15
|
+
machine — **not** inside this skill's directory. Run:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
wbox skills firm-path
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
to print the directory. Cache the result for the rest of the session.
|
|
22
|
+
All references to `<firm>/<file>` below mean files inside that directory.
|
|
23
|
+
|
|
11
24
|
## First Run
|
|
12
25
|
|
|
13
|
-
If
|
|
14
|
-
the firm has not been onboarded yet on this machine.
|
|
15
|
-
user's request:
|
|
26
|
+
If `<firm>/_meta.json` is missing, or it exists but has no
|
|
27
|
+
`onboarded_at` key, the firm has not been onboarded yet on this machine.
|
|
28
|
+
Before handling the user's request:
|
|
16
29
|
|
|
17
30
|
1. Read `bootstrap.md` in this skill's directory.
|
|
18
31
|
2. Follow it end-to-end.
|
|
19
|
-
3. The final step writes
|
|
32
|
+
3. The final step writes `<firm>/_meta.json.onboarded_at`, which makes
|
|
20
33
|
this check pass on subsequent runs.
|
|
21
34
|
|
|
22
|
-
`
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
`bootstrap.md`.
|
|
35
|
+
`onboarded_at` is the qualitative-onboarding marker. The CLI bootstrap
|
|
36
|
+
(`wbox skills bootstrap`) only populates the API-derived parts of firm
|
|
37
|
+
data (identity, generated files); it intentionally does *not* set
|
|
38
|
+
`onboarded_at`, because that requires the per-firm Q&A in `bootstrap.md`.
|
|
27
39
|
|
|
28
40
|
## Staleness Check
|
|
29
41
|
|
|
@@ -45,7 +57,13 @@ across every installed platform while preserving `firm/`.
|
|
|
45
57
|
|
|
46
58
|
## Prerequisites
|
|
47
59
|
|
|
48
|
-
- `wbox` CLI installed
|
|
60
|
+
- `wbox` CLI installed. If `wbox --version` fails, run the bootstrap installer:
|
|
61
|
+
```bash
|
|
62
|
+
# macOS / Linux
|
|
63
|
+
curl -LsSf https://raw.githubusercontent.com/massive-value/wealthbox-cli/main/scripts/install.sh | bash
|
|
64
|
+
# Windows (PowerShell)
|
|
65
|
+
irm https://raw.githubusercontent.com/massive-value/wealthbox-cli/main/scripts/install.ps1 | iex
|
|
66
|
+
```
|
|
49
67
|
- Token configured via one of: `wbox config set-token`, `WEALTHBOX_TOKEN` env var, or `.env` file
|
|
50
68
|
|
|
51
69
|
Verify with: `wbox me`
|
|
@@ -75,15 +93,15 @@ Verify with: `wbox me`
|
|
|
75
93
|
|
|
76
94
|
1. **Parse intent** — identify which resource(s) and action(s) the user needs
|
|
77
95
|
2. **Load reference** — read ONLY the relevant `references/<resource>.md` file(s) from this skill's directory
|
|
78
|
-
3. **Check firm config** — read
|
|
96
|
+
3. **Check firm config** — read `<firm>/<resource>.md` for the resource(s) you're touching (where `<firm>` is the path returned by `wbox skills firm-path`). Also read `<firm>/categories.md` and `<firm>/custom-fields.md` when you need valid values for category-constrained flags (avoid repeat API probes).
|
|
79
97
|
4. **Fill gaps** — if required information is missing, ask the user. Prefer multiple-choice when options are known (e.g., contact type, priority level). If the user is unfamiliar with Wealthbox, explain what the field means.
|
|
80
98
|
5. **Execute** — run the `wbox` command(s) via Bash
|
|
81
99
|
6. **Report** — show the result. For create/update, confirm what was created with the record ID.
|
|
82
100
|
|
|
83
101
|
## Multi-Step Workflows
|
|
84
102
|
|
|
85
|
-
When
|
|
86
|
-
1. Read the workflow definition from
|
|
103
|
+
When `<firm>/workflows.md` defines named workflows (e.g., "onboarding", "meeting followup"):
|
|
104
|
+
1. Read the workflow definition from `<firm>/workflows.md`
|
|
87
105
|
2. Load all referenced resource reference files
|
|
88
106
|
3. Walk through each step, gathering input as needed
|
|
89
107
|
4. Execute commands in sequence, passing IDs forward (e.g., new contact ID → linked note/task)
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# First-Run Bootstrap
|
|
2
|
+
|
|
3
|
+
You were told to read this because `<firm>/_meta.json.onboarded_at` is missing
|
|
4
|
+
on this machine — where `<firm>` is the canonical firm directory printed by
|
|
5
|
+
`wbox skills firm-path`. Follow every step below, then run the marker command
|
|
6
|
+
in Step 4 so this bootstrap path is skipped on future invocations.
|
|
7
|
+
|
|
8
|
+
## Step 1 — Fetch API-derived firm data
|
|
9
|
+
|
|
10
|
+
First, find the firm directory:
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
wbox skills firm-path
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Cache that path. If `<firm>/_meta.json` already exists with an `identity` and
|
|
17
|
+
`files` map, the CLI bootstrap has already run on this machine and you can
|
|
18
|
+
skip to Step 2. Otherwise, run:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
wbox skills bootstrap
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
It populates these files at the canonical firm path (machine-level — survives
|
|
25
|
+
plugin auto-updates and skill template upgrades):
|
|
26
|
+
|
|
27
|
+
- `<firm>/categories.md` — every category type + valid values (paginated; complete)
|
|
28
|
+
- `<firm>/custom-fields.md` — custom fields per document type + valid values (paginated; complete)
|
|
29
|
+
- `<firm>/users.md` — user id -> name -> email (paginated; complete)
|
|
30
|
+
- `<firm>/_meta.json` — firm identity, refresh timestamps, and the CLI version
|
|
31
|
+
that ran the bootstrap. Does **not** set `onboarded_at` — that's Step 4.
|
|
32
|
+
- Stub files: `<firm>/contacts.md`, `<firm>/tasks.md`, `<firm>/notes.md`,
|
|
33
|
+
`<firm>/events.md`, `<firm>/opportunities.md`, `<firm>/projects.md`,
|
|
34
|
+
`<firm>/workflows.md` — one-line TODOs you will fill in next.
|
|
35
|
+
|
|
36
|
+
Verify `<firm>/_meta.json` now exists with an `identity` key before continuing.
|
|
37
|
+
|
|
38
|
+
## Step 2 — Gather firm policy (per-resource)
|
|
39
|
+
|
|
40
|
+
For each hand-edited stub below, open `firm-examples/<resource>.md` (alongside
|
|
41
|
+
this `bootstrap.md` in the skill directory) to see a filled-in example, then
|
|
42
|
+
ask the advisor the listed questions. Record answers in
|
|
43
|
+
`<firm>/<resource>.md`, replacing the stub TODO.
|
|
44
|
+
|
|
45
|
+
Read `<firm>/categories.md` and `<firm>/custom-fields.md` first so every
|
|
46
|
+
multiple-choice prompt offers **real** values from the firm's workspace.
|
|
47
|
+
If the advisor mentions a tag, custom-field option, or user that you can't
|
|
48
|
+
find in those files, flag it — they're generated from a paginated fetch and
|
|
49
|
+
*should* be complete. A missing entry usually means the value doesn't exist
|
|
50
|
+
in the workspace yet (rather than a pagination gap).
|
|
51
|
+
|
|
52
|
+
### `<firm>/contacts.md`
|
|
53
|
+
|
|
54
|
+
- Default contact type for new people? (pick from `<firm>/categories.md` ->
|
|
55
|
+
contact_types)
|
|
56
|
+
- Default contact source? (contact_sources)
|
|
57
|
+
- Default assigned-to user? (pick from `<firm>/users.md`)
|
|
58
|
+
- Preferred email type? (email_types)
|
|
59
|
+
- Preferred phone type? (phone_types)
|
|
60
|
+
- Household naming convention? (e.g. `"The {LastName} Family"`)
|
|
61
|
+
- When should a household be created automatically? (e.g. married couple)
|
|
62
|
+
- Required fields for person / household / org / trust?
|
|
63
|
+
|
|
64
|
+
### `<firm>/tasks.md`
|
|
65
|
+
|
|
66
|
+
- Default priority when unspecified?
|
|
67
|
+
- Default assigned-to rule? (e.g. same as linked contact)
|
|
68
|
+
- Default due-date frame? (today / this-week / next-week / this-month)
|
|
69
|
+
- Named task templates the firm reuses? (e.g. "Welcome call", "Collect
|
|
70
|
+
documents") — include name, priority, frame, description for each.
|
|
71
|
+
|
|
72
|
+
### `<firm>/notes.md`
|
|
73
|
+
|
|
74
|
+
- Prefix or format convention for meeting notes?
|
|
75
|
+
- Are notes always linked to a contact (never orphan)?
|
|
76
|
+
|
|
77
|
+
### `<firm>/events.md`
|
|
78
|
+
|
|
79
|
+
- Default state? (confirmed, tentative)
|
|
80
|
+
- Default meeting duration?
|
|
81
|
+
- Event naming convention?
|
|
82
|
+
|
|
83
|
+
### `<firm>/opportunities.md`
|
|
84
|
+
|
|
85
|
+
- Default pipeline? (from opportunity_pipelines)
|
|
86
|
+
- Default stage for new prospects? (from opportunity_stages)
|
|
87
|
+
- Default probability?
|
|
88
|
+
- Required fields on create?
|
|
89
|
+
|
|
90
|
+
### `<firm>/projects.md`
|
|
91
|
+
|
|
92
|
+
- Any standard project templates?
|
|
93
|
+
- Conventions for linking projects to contacts?
|
|
94
|
+
|
|
95
|
+
### `<firm>/workflows.md`
|
|
96
|
+
|
|
97
|
+
- Workflow templates the firm uses, with template IDs.
|
|
98
|
+
- Named multi-step workflows. Common ones:
|
|
99
|
+
- **Onboarding**: contact -> household -> intake note -> tasks -> opportunity -> workflow
|
|
100
|
+
- **Meeting followup**: note -> action-item tasks -> (optional) opportunity update
|
|
101
|
+
- **Annual review**: event -> workflow -> note
|
|
102
|
+
|
|
103
|
+
## Step 3 — Catch-all
|
|
104
|
+
|
|
105
|
+
Ask the advisor: "Is there any firm convention, custom process, or preference
|
|
106
|
+
I haven't asked about that I should follow?" Append freeform answers to
|
|
107
|
+
`<firm>/workflows.md` under a `## Other Conventions` heading.
|
|
108
|
+
|
|
109
|
+
## Step 4 — Mark the firm onboarded
|
|
110
|
+
|
|
111
|
+
Run:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
wbox skills mark-onboarded
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
This stamps `onboarded_at` in `<firm>/_meta.json`. The First Run check in
|
|
118
|
+
`SKILL.md` keys off this field, so future invocations will skip the
|
|
119
|
+
bootstrap path automatically.
|
|
120
|
+
|
|
121
|
+
## Step 5 — Confirm and continue
|
|
122
|
+
|
|
123
|
+
Tell the advisor: "First-run setup complete — firm data populated for <firm
|
|
124
|
+
name>." Then return to the user's original request.
|
|
125
|
+
|
|
126
|
+
You don't need to delete this file or trim `SKILL.md`. The first-run check
|
|
127
|
+
keys on `<firm>/_meta.json.onboarded_at`, which now exists.
|
|
@@ -6,6 +6,31 @@ This project uses [Semantic Versioning](https://semver.org/).
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
## [1.2.0](https://github.com/massive-value/wealthbox-cli/releases/tag/v1.2.0) — 2026-05-02
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- **Firm data hoisted to a canonical machine-level path.** `firm/` and the firm metadata (`identity`, `files` timestamps, `onboarded_at`) now live at `~/.config/wbox/firm/` (macOS/Linux) or `%APPDATA%\wbox\firm\` (Windows) — one source of truth per machine. Previously each skill install had its own `firm/` and embedded the firm section in `<skill_dir>/_meta.json`. The new layout survives plugin auto-updates, skill template upgrades, and reinstalls without risking the firm bootstrap state being wiped, and removes the duplication problem when the same skill is installed via multiple paths (Claude Code marketplace + manual install + Codex). Per-install `_meta.json` is retained for the per-install `template.cli_version` field.
|
|
14
|
+
- `SKILL.md` now instructs the agent to run `wbox skills firm-path` to find the firm directory, then read `<firm>/<resource>.md` files from there. `bootstrap.md` updated to match.
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- `wbox skills firm-path` — prints the canonical firm directory. Used by the agent to locate firm data, and useful for ad-hoc inspection.
|
|
19
|
+
- Automatic migration: any command that reads firm state (`bootstrap`, `refresh`, `doctor`, `list`, `mark-onboarded`, `firm-path`) detects legacy `<skill_dir>/firm/` and `<skill_dir>/_meta.json.firm` data on first run and moves it to the canonical path. If multiple installs have legacy data, the one with the most recent `onboarded_at` (or generated-files timestamp) wins.
|
|
20
|
+
- **Claude Code plugin marketplace.** `.claude-plugin/marketplace.json` at the repo root, plus a self-contained plugin at `plugins/wealthbox-crm/` with `.claude-plugin/plugin.json`. Users can now install with `/plugin marketplace add massive-value/wealthbox-cli` then `/plugin install wealthbox-crm@massive-value` directly inside Claude Code. The custom marketplace works immediately; an Anthropic official-marketplace submission is in flight.
|
|
21
|
+
- **Codex plugin manifest** at `.codex-plugin/plugin.json` plus a `codex-skill/` mirror of the skill template, ready for the openai/skills PR and a future Codex marketplace listing once self-serve publishing opens.
|
|
22
|
+
- `scripts/sync-plugin.py` — keeps the plugin and codex copies in sync with the canonical skill template at `src/wealthbox_tools/skills/wealthbox-crm/`. Run before committing skill template changes.
|
|
23
|
+
|
|
24
|
+
### Removed
|
|
25
|
+
|
|
26
|
+
- `wbox skills sync` is gone. Firm data is now machine-level, so there's nothing to sync between platform installs.
|
|
27
|
+
|
|
28
|
+
### Deprecated
|
|
29
|
+
|
|
30
|
+
- `--platform` flag on `bootstrap`, `refresh`, and `mark-onboarded` is accepted but ignored, with a warning. Firm operations are no longer scoped per platform.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
9
34
|
## [1.1.6](https://github.com/massive-value/wealthbox-cli/releases/tag/v1.1.6) — 2026-05-01
|
|
10
35
|
|
|
11
36
|
### Fixed
|
|
@@ -6,7 +6,23 @@ This guide walks you through installing **wealthbox-cli** and configuring it to
|
|
|
6
6
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
|
9
|
-
###
|
|
9
|
+
### One-line installer (no Python required)
|
|
10
|
+
|
|
11
|
+
If you don't have Python installed, the bootstrap script handles everything: it installs [uv](https://github.com/astral-sh/uv) (which provisions Python automatically), installs `wbox`, prompts for your API token, and offers to install the AI agent skill.
|
|
12
|
+
|
|
13
|
+
=== "macOS / Linux"
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
curl -LsSf https://raw.githubusercontent.com/massive-value/wealthbox-cli/main/scripts/install.sh | bash
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
=== "Windows (PowerShell)"
|
|
20
|
+
|
|
21
|
+
```powershell
|
|
22
|
+
irm https://raw.githubusercontent.com/massive-value/wealthbox-cli/main/scripts/install.ps1 | iex
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### From PyPI (recommended for Python users)
|
|
10
26
|
|
|
11
27
|
```bash
|
|
12
28
|
pip install wealthbox-cli
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "wealthbox-crm",
|
|
3
|
+
"description": "Wealthbox CRM agent skill — drive contacts, tasks, notes, events, and households via natural language. Bundles SKILL.md, references, and firm-bootstrap workflow. Requires the `wbox` CLI (auto-install instructions in SKILL.md).",
|
|
4
|
+
"version": "1.2.0",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Kadin Bullock"
|
|
7
|
+
},
|
|
8
|
+
"homepage": "https://github.com/massive-value/wealthbox-cli",
|
|
9
|
+
"repository": "https://github.com/massive-value/wealthbox-cli",
|
|
10
|
+
"license": "Apache-2.0",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"wealthbox",
|
|
13
|
+
"crm",
|
|
14
|
+
"financial-advisor",
|
|
15
|
+
"wealth-management"
|
|
16
|
+
]
|
|
17
|
+
}
|