wealthbox-cli 1.1.5__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.
Files changed (129) hide show
  1. wealthbox_cli-1.2.0/.claude-plugin/marketplace.json +25 -0
  2. wealthbox_cli-1.2.0/.codex-plugin/plugin.json +16 -0
  3. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/PKG-INFO +57 -15
  4. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/README.md +56 -14
  5. {wealthbox_cli-1.1.5/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/SKILL.md +33 -9
  6. wealthbox_cli-1.2.0/codex-skill/wealthbox-crm/bootstrap.md +127 -0
  7. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/docs/changelog.md +38 -0
  8. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/docs/getting-started.md +17 -1
  9. wealthbox_cli-1.2.0/plugins/wealthbox-crm/.claude-plugin/plugin.json +17 -0
  10. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/SKILL.md +156 -0
  11. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/bootstrap.md +127 -0
  12. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/contacts.md +21 -0
  13. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/events.md +9 -0
  14. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/notes.md +5 -0
  15. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/opportunities.md +12 -0
  16. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/projects.md +5 -0
  17. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/tasks.md +14 -0
  18. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/workflows.md +31 -0
  19. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/contacts.md +153 -0
  20. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/events.md +88 -0
  21. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/households.md +40 -0
  22. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/lookups.md +78 -0
  23. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/notes.md +67 -0
  24. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/opportunities.md +87 -0
  25. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/projects.md +60 -0
  26. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/tasks.md +101 -0
  27. wealthbox_cli-1.2.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/workflows.md +90 -0
  28. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/pyproject.toml +1 -1
  29. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/_skill_bootstrap.py +140 -40
  30. wealthbox_cli-1.2.0/src/wealthbox_tools/cli/_skill_paths.py +34 -0
  31. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/_skill_platforms.py +1 -16
  32. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/skills.py +130 -204
  33. wealthbox_cli-1.2.0/src/wealthbox_tools/client/categories.py +30 -0
  34. wealthbox_cli-1.2.0/src/wealthbox_tools/client/users.py +28 -0
  35. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/SKILL.md +156 -0
  36. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/bootstrap.md +127 -0
  37. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/contacts.md +21 -0
  38. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/events.md +9 -0
  39. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/notes.md +5 -0
  40. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/opportunities.md +12 -0
  41. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/projects.md +5 -0
  42. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/tasks.md +14 -0
  43. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/workflows.md +31 -0
  44. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/contacts.md +153 -0
  45. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/events.md +88 -0
  46. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/households.md +40 -0
  47. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/lookups.md +78 -0
  48. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/notes.md +67 -0
  49. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/opportunities.md +87 -0
  50. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/projects.md +60 -0
  51. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/tasks.md +101 -0
  52. wealthbox_cli-1.2.0/src/wealthbox_tools/skills/wealthbox-crm/references/workflows.md +90 -0
  53. wealthbox_cli-1.1.5/src/wealthbox_tools/client/categories.py +0 -14
  54. wealthbox_cli-1.1.5/src/wealthbox_tools/client/users.py +0 -14
  55. wealthbox_cli-1.1.5/src/wealthbox_tools/skills/wealthbox-crm/bootstrap.md +0 -100
  56. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/.env.example +0 -0
  57. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/.github/workflows/ci.yml +0 -0
  58. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/.github/workflows/docs.yml +0 -0
  59. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/.gitignore +0 -0
  60. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/CONTRIBUTING.md +0 -0
  61. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/LICENSE +0 -0
  62. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/SECURITY.md +0 -0
  63. {wealthbox_cli-1.1.5/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/firm-examples/contacts.md +0 -0
  64. {wealthbox_cli-1.1.5/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/firm-examples/events.md +0 -0
  65. {wealthbox_cli-1.1.5/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/firm-examples/notes.md +0 -0
  66. {wealthbox_cli-1.1.5/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/firm-examples/opportunities.md +0 -0
  67. {wealthbox_cli-1.1.5/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/firm-examples/projects.md +0 -0
  68. {wealthbox_cli-1.1.5/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/firm-examples/tasks.md +0 -0
  69. {wealthbox_cli-1.1.5/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/firm-examples/workflows.md +0 -0
  70. {wealthbox_cli-1.1.5/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/contacts.md +0 -0
  71. {wealthbox_cli-1.1.5/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/events.md +0 -0
  72. {wealthbox_cli-1.1.5/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/households.md +0 -0
  73. {wealthbox_cli-1.1.5/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/lookups.md +0 -0
  74. {wealthbox_cli-1.1.5/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/notes.md +0 -0
  75. {wealthbox_cli-1.1.5/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/opportunities.md +0 -0
  76. {wealthbox_cli-1.1.5/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/projects.md +0 -0
  77. {wealthbox_cli-1.1.5/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/tasks.md +0 -0
  78. {wealthbox_cli-1.1.5/src/wealthbox_tools/skills → wealthbox_cli-1.2.0/codex-skill}/wealthbox-crm/references/workflows.md +0 -0
  79. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/docs/cli-reference.md +0 -0
  80. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/docs/index.md +0 -0
  81. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/docs/overrides/main.html +0 -0
  82. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/docs/promotion.md +0 -0
  83. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/mkdocs.yml +0 -0
  84. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/__init__.py +0 -0
  85. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/__init__.py +0 -0
  86. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/_config.py +0 -0
  87. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/_util.py +0 -0
  88. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/activity.py +0 -0
  89. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/categories.py +0 -0
  90. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/config.py +0 -0
  91. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/contacts.py +0 -0
  92. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/events.py +0 -0
  93. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/households.py +0 -0
  94. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/main.py +0 -0
  95. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/me.py +0 -0
  96. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/notes.py +0 -0
  97. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/opportunities.py +0 -0
  98. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/projects.py +0 -0
  99. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/tasks.py +0 -0
  100. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/users.py +0 -0
  101. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/cli/workflows.py +0 -0
  102. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/__init__.py +0 -0
  103. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/activity.py +0 -0
  104. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/base.py +0 -0
  105. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/comments.py +0 -0
  106. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/contacts.py +0 -0
  107. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/events.py +0 -0
  108. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/households.py +0 -0
  109. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/me.py +0 -0
  110. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/notes.py +0 -0
  111. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/opportunities.py +0 -0
  112. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/projects.py +0 -0
  113. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/tasks.py +0 -0
  114. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/client/workflows.py +0 -0
  115. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/__init__.py +0 -0
  116. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/activity.py +0 -0
  117. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/comments.py +0 -0
  118. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/common.py +0 -0
  119. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/contacts.py +0 -0
  120. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/custom_fields.py +0 -0
  121. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/enums.py +0 -0
  122. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/events.py +0 -0
  123. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/households.py +0 -0
  124. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/notes.py +0 -0
  125. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/opportunities.py +0 -0
  126. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/projects.py +0 -0
  127. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/tasks.py +0 -0
  128. {wealthbox_cli-1.1.5 → wealthbox_cli-1.2.0}/src/wealthbox_tools/models/workflows.py +0 -0
  129. {wealthbox_cli-1.1.5 → 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.1.5
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,19 +147,51 @@ The skill translates your intent into the correct `wbox` commands, handles flag
136
147
 
137
148
  ### Install
138
149
 
139
- One command, same on every OS:
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 both
170
+ wbox skills install # interactive: pick Claude Code (user/project), Codex, or all
145
171
  ```
146
172
 
147
- The installer asks which platforms to target, copies the skill into the right directory (`~/.claude/skills/` for Claude Code, `~/.codex/skills/` for Codex — with `SKILL.md` renamed to `AGENTS.md` automatically), and offers to bootstrap your firm's customizations from the Wealthbox API.
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.
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
+
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`.
148
180
 
149
- ### First agent run bootstraps itself
181
+ ### First agent run captures firm conventions
150
182
 
151
- The first time an agent invokes the skill, it walks you through populating firm-specific conventions — category values, custom fields, users, defaults, required fields, household naming, named workflows. No further CLI commands needed. After that first run, the bootstrap artifacts self-delete from the skill.
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.
152
195
 
153
196
  ### Refresh after firm changes
154
197
 
@@ -158,21 +201,20 @@ If your firm adds or renames category values, custom fields, or users:
158
201
  wbox skills refresh
159
202
  ```
160
203
 
161
- This updates the generated half of the skill's firm files; hand-edited policy is preserved.
204
+ This updates the generated half (categories, custom-fields, users); hand-edited policy is preserved.
162
205
 
163
206
  ### Other commands
164
207
 
165
208
  ```bash
166
- wbox skills list # show where the skill is installed + last bootstrap time
167
- wbox skills doctor # diagnose install state + token
168
- wbox skills sync # copy firm/ from one install to others (Claude Code <-> Codex)
169
- wbox skills upgrade # refresh template files (SKILL.md, references/, ...) preserving firm/
170
- 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
171
215
  ```
172
216
 
173
- 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 without touching your firm-specific data in `firm/`. Each install records the template's CLI version in `_meta.json`, so the agent can detect drift and prompt you to upgrade when needed.
174
-
175
- `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.
176
218
 
177
219
  ### Works with other agents too
178
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,19 +106,51 @@ The skill translates your intent into the correct `wbox` commands, handles flag
95
106
 
96
107
  ### Install
97
108
 
98
- One command, same on every OS:
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 both
129
+ wbox skills install # interactive: pick Claude Code (user/project), Codex, or all
104
130
  ```
105
131
 
106
- The installer asks which platforms to target, copies the skill into the right directory (`~/.claude/skills/` for Claude Code, `~/.codex/skills/` for Codex — with `SKILL.md` renamed to `AGENTS.md` automatically), and offers to bootstrap your firm's customizations from the Wealthbox API.
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.
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
+
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`.
107
139
 
108
- ### First agent run bootstraps itself
140
+ ### First agent run captures firm conventions
109
141
 
110
- The first time an agent invokes the skill, it walks you through populating firm-specific conventions — category values, custom fields, users, defaults, required fields, household naming, named workflows. No further CLI commands needed. After that first run, the bootstrap artifacts self-delete from the skill.
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.
111
154
 
112
155
  ### Refresh after firm changes
113
156
 
@@ -117,21 +160,20 @@ If your firm adds or renames category values, custom fields, or users:
117
160
  wbox skills refresh
118
161
  ```
119
162
 
120
- This updates the generated half of the skill's firm files; hand-edited policy is preserved.
163
+ This updates the generated half (categories, custom-fields, users); hand-edited policy is preserved.
121
164
 
122
165
  ### Other commands
123
166
 
124
167
  ```bash
125
- wbox skills list # show where the skill is installed + last bootstrap time
126
- wbox skills doctor # diagnose install state + token
127
- wbox skills sync # copy firm/ from one install to others (Claude Code <-> Codex)
128
- wbox skills upgrade # refresh template files (SKILL.md, references/, ...) preserving firm/
129
- 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
130
174
  ```
131
175
 
132
- 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 without touching your firm-specific data in `firm/`. Each install records the template's CLI version in `_meta.json`, so the agent can detect drift and prompt you to upgrade when needed.
133
-
134
- `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.
135
177
 
136
178
  ### Works with other agents too
137
179
 
@@ -8,16 +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 `_meta.json` in this skill's directory does **not** contain a `firm`
14
- section, the firm has not been onboarded yet on this machine. Before
15
- handling the 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 bootstrap will populate `_meta.json.firm` so this check passes
20
- on subsequent runs.
32
+ 3. The final step writes `<firm>/_meta.json.onboarded_at`, which makes
33
+ this check pass on subsequent runs.
34
+
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`.
21
39
 
22
40
  ## Staleness Check
23
41
 
@@ -39,7 +57,13 @@ across every installed platform while preserving `firm/`.
39
57
 
40
58
  ## Prerequisites
41
59
 
42
- - `wbox` CLI installed (`pip install wealthbox-cli`)
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
+ ```
43
67
  - Token configured via one of: `wbox config set-token`, `WEALTHBOX_TOKEN` env var, or `.env` file
44
68
 
45
69
  Verify with: `wbox me`
@@ -69,15 +93,15 @@ Verify with: `wbox me`
69
93
 
70
94
  1. **Parse intent** — identify which resource(s) and action(s) the user needs
71
95
  2. **Load reference** — read ONLY the relevant `references/<resource>.md` file(s) from this skill's directory
72
- 3. **Check firm config** — read `firm/<resource>.md` for the resource(s) you're touching. Also read `firm/categories.md` and `firm/custom-fields.md` when you need valid values for category-constrained flags (avoid repeat API probes).
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).
73
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.
74
98
  5. **Execute** — run the `wbox` command(s) via Bash
75
99
  6. **Report** — show the result. For create/update, confirm what was created with the record ID.
76
100
 
77
101
  ## Multi-Step Workflows
78
102
 
79
- When `firm/workflows.md` defines named workflows (e.g., "onboarding", "meeting followup"):
80
- 1. Read the workflow definition from `firm/workflows.md`
103
+ When `<firm>/workflows.md` defines named workflows (e.g., "onboarding", "meeting followup"):
104
+ 1. Read the workflow definition from `<firm>/workflows.md`
81
105
  2. Load all referenced resource reference files
82
106
  3. Walk through each step, gathering input as needed
83
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,44 @@ 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
+
34
+ ## [1.1.6](https://github.com/massive-value/wealthbox-cli/releases/tag/v1.1.6) — 2026-05-01
35
+
36
+ ### Fixed
37
+ - `wbox skills bootstrap` and `wbox skills refresh` now paginate every API call. Previously they fetched a single page (default `per_page=25`) for each category type, custom-field document type, and the user list, silently truncating any workspace with more than 25 entries per group. Generated `firm/categories.md`, `firm/custom-fields.md`, and `firm/users.md` are now complete.
38
+ - The codex skill installs as `SKILL.md`, not `AGENTS.md`. Codex uses `SKILL.md` for skills (same as Claude Code); `AGENTS.md` is the project-level instructions file (the codex equivalent of `CLAUDE.md`) and was never the right name for a skill. **Migration:** if you installed the skill under codex on 1.1.5 or earlier, reinstall with `wbox skills install --platform codex --force` to drop the stale `AGENTS.md`.
39
+ - The skill's First Run check now keys on `firm.onboarded_at` instead of the mere presence of a `firm` section. Previously, running `wbox skills bootstrap` populated the `firm` section, which made the agent skip the qualitative Q&A in `bootstrap.md` on first invocation. The CLI bootstrap is the *quantitative* half (categories, custom fields, users); the *qualitative* half (firm defaults, naming conventions, named workflows) happens at first agent invocation, and the agent now stamps `firm.onboarded_at` when it finishes.
40
+
41
+ ### Added
42
+ - `wbox skills mark-onboarded` — stamps `firm.onboarded_at` in the skill's `_meta.json`. The agent invokes this as the last step of `bootstrap.md`; users typically don't need to run it manually.
43
+ - `wbox skills list` and `wbox skills doctor` now report onboarded status (`bootstrapped (qualitative pending)` vs `onboarded`).
44
+
45
+ ---
46
+
9
47
  ## [1.1.5](https://github.com/massive-value/wealthbox-cli/releases/tag/v1.1.5) — 2026-05-01
10
48
 
11
49
  ### 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
- ### From PyPI (recommended)
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
+ }