wealthbox-cli 1.4.0__tar.gz → 1.5.1__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 (132) hide show
  1. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/.codex-plugin/plugin.json +1 -1
  2. wealthbox_cli-1.5.1/PKG-INFO +209 -0
  3. wealthbox_cli-1.5.1/README.md +168 -0
  4. {wealthbox_cli-1.4.0/src/wealthbox_tools/skills → wealthbox_cli-1.5.1/codex-skill}/wealthbox-crm/SKILL.md +5 -1
  5. {wealthbox_cli-1.4.0/plugins/wealthbox-crm/skills → wealthbox_cli-1.5.1/codex-skill}/wealthbox-crm/references/contacts.md +4 -2
  6. {wealthbox_cli-1.4.0/src/wealthbox_tools/skills → wealthbox_cli-1.5.1/codex-skill}/wealthbox-crm/references/tasks.md +4 -2
  7. wealthbox_cli-1.5.1/codex-skill/wealthbox-crm/references/workflows.md +145 -0
  8. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/plugins/wealthbox-crm/.claude-plugin/plugin.json +1 -1
  9. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/plugins/wealthbox-crm/skills/wealthbox-crm/SKILL.md +5 -1
  10. {wealthbox_cli-1.4.0/src/wealthbox_tools → wealthbox_cli-1.5.1/plugins/wealthbox-crm}/skills/wealthbox-crm/references/contacts.md +4 -2
  11. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/plugins/wealthbox-crm/skills/wealthbox-crm/references/tasks.md +8 -3
  12. wealthbox_cli-1.5.1/plugins/wealthbox-crm/skills/wealthbox-crm/references/workflows.md +145 -0
  13. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/pyproject.toml +1 -1
  14. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/_skill_bootstrap.py +5 -2
  15. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/_util.py +17 -0
  16. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/contacts.py +50 -3
  17. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/main.py +9 -0
  18. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/tasks.py +38 -2
  19. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/workflows.py +53 -3
  20. {wealthbox_cli-1.4.0/codex-skill → wealthbox_cli-1.5.1/src/wealthbox_tools/skills}/wealthbox-crm/SKILL.md +5 -1
  21. {wealthbox_cli-1.4.0/codex-skill → wealthbox_cli-1.5.1/src/wealthbox_tools/skills}/wealthbox-crm/references/contacts.md +4 -2
  22. {wealthbox_cli-1.4.0/codex-skill → wealthbox_cli-1.5.1/src/wealthbox_tools/skills}/wealthbox-crm/references/tasks.md +8 -3
  23. wealthbox_cli-1.5.1/src/wealthbox_tools/skills/wealthbox-crm/references/workflows.md +145 -0
  24. wealthbox_cli-1.4.0/PKG-INFO +0 -285
  25. wealthbox_cli-1.4.0/README.md +0 -244
  26. wealthbox_cli-1.4.0/codex-skill/wealthbox-crm/references/workflows.md +0 -90
  27. wealthbox_cli-1.4.0/plugins/wealthbox-crm/skills/wealthbox-crm/references/workflows.md +0 -90
  28. wealthbox_cli-1.4.0/src/wealthbox_tools/skills/wealthbox-crm/references/workflows.md +0 -90
  29. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/.claude-plugin/marketplace.json +0 -0
  30. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/.env.example +0 -0
  31. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/.github/workflows/ci.yml +0 -0
  32. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/.github/workflows/docs.yml +0 -0
  33. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/.gitignore +0 -0
  34. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/CONTRIBUTING.md +0 -0
  35. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/LICENSE +0 -0
  36. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/SECURITY.md +0 -0
  37. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/codex-skill/wealthbox-crm/bootstrap.md +0 -0
  38. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/codex-skill/wealthbox-crm/firm-examples/contacts.md +0 -0
  39. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/codex-skill/wealthbox-crm/firm-examples/events.md +0 -0
  40. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/codex-skill/wealthbox-crm/firm-examples/notes.md +0 -0
  41. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/codex-skill/wealthbox-crm/firm-examples/opportunities.md +0 -0
  42. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/codex-skill/wealthbox-crm/firm-examples/projects.md +0 -0
  43. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/codex-skill/wealthbox-crm/firm-examples/tasks.md +0 -0
  44. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/codex-skill/wealthbox-crm/firm-examples/workflows.md +0 -0
  45. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/codex-skill/wealthbox-crm/references/events.md +0 -0
  46. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/codex-skill/wealthbox-crm/references/households.md +0 -0
  47. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/codex-skill/wealthbox-crm/references/lookups.md +0 -0
  48. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/codex-skill/wealthbox-crm/references/notes.md +0 -0
  49. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/codex-skill/wealthbox-crm/references/opportunities.md +0 -0
  50. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/codex-skill/wealthbox-crm/references/projects.md +0 -0
  51. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/docs/changelog.md +0 -0
  52. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/docs/cli-reference.md +0 -0
  53. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/docs/getting-started.md +0 -0
  54. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/docs/index.md +0 -0
  55. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/docs/overrides/main.html +0 -0
  56. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/docs/promotion.md +0 -0
  57. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/mkdocs.yml +0 -0
  58. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/plugins/wealthbox-crm/skills/wealthbox-crm/bootstrap.md +0 -0
  59. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/contacts.md +0 -0
  60. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/events.md +0 -0
  61. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/notes.md +0 -0
  62. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/opportunities.md +0 -0
  63. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/projects.md +0 -0
  64. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/tasks.md +0 -0
  65. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/plugins/wealthbox-crm/skills/wealthbox-crm/firm-examples/workflows.md +0 -0
  66. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/plugins/wealthbox-crm/skills/wealthbox-crm/references/events.md +0 -0
  67. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/plugins/wealthbox-crm/skills/wealthbox-crm/references/households.md +0 -0
  68. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/plugins/wealthbox-crm/skills/wealthbox-crm/references/lookups.md +0 -0
  69. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/plugins/wealthbox-crm/skills/wealthbox-crm/references/notes.md +0 -0
  70. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/plugins/wealthbox-crm/skills/wealthbox-crm/references/opportunities.md +0 -0
  71. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/plugins/wealthbox-crm/skills/wealthbox-crm/references/projects.md +0 -0
  72. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/__init__.py +0 -0
  73. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/__init__.py +0 -0
  74. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/_config.py +0 -0
  75. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/_skill_paths.py +0 -0
  76. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/_skill_platforms.py +0 -0
  77. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/activity.py +0 -0
  78. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/categories.py +0 -0
  79. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/config.py +0 -0
  80. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/doctor.py +0 -0
  81. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/events.py +0 -0
  82. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/households.py +0 -0
  83. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/me.py +0 -0
  84. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/notes.py +0 -0
  85. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/opportunities.py +0 -0
  86. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/projects.py +0 -0
  87. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/skills.py +0 -0
  88. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/cli/users.py +0 -0
  89. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/client/__init__.py +0 -0
  90. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/client/activity.py +0 -0
  91. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/client/base.py +0 -0
  92. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/client/categories.py +0 -0
  93. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/client/comments.py +0 -0
  94. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/client/contacts.py +0 -0
  95. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/client/events.py +0 -0
  96. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/client/households.py +0 -0
  97. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/client/me.py +0 -0
  98. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/client/notes.py +0 -0
  99. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/client/opportunities.py +0 -0
  100. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/client/projects.py +0 -0
  101. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/client/tasks.py +0 -0
  102. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/client/users.py +0 -0
  103. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/client/workflows.py +0 -0
  104. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/models/__init__.py +0 -0
  105. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/models/activity.py +0 -0
  106. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/models/comments.py +0 -0
  107. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/models/common.py +0 -0
  108. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/models/contacts.py +0 -0
  109. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/models/custom_fields.py +0 -0
  110. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/models/enums.py +0 -0
  111. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/models/events.py +0 -0
  112. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/models/households.py +0 -0
  113. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/models/notes.py +0 -0
  114. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/models/opportunities.py +0 -0
  115. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/models/projects.py +0 -0
  116. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/models/tasks.py +0 -0
  117. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/models/workflows.py +0 -0
  118. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/py.typed +0 -0
  119. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/skills/wealthbox-crm/bootstrap.md +0 -0
  120. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/contacts.md +0 -0
  121. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/events.md +0 -0
  122. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/notes.md +0 -0
  123. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/opportunities.md +0 -0
  124. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/projects.md +0 -0
  125. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/tasks.md +0 -0
  126. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/workflows.md +0 -0
  127. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/skills/wealthbox-crm/references/events.md +0 -0
  128. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/skills/wealthbox-crm/references/households.md +0 -0
  129. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/skills/wealthbox-crm/references/lookups.md +0 -0
  130. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/skills/wealthbox-crm/references/notes.md +0 -0
  131. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/skills/wealthbox-crm/references/opportunities.md +0 -0
  132. {wealthbox_cli-1.4.0 → wealthbox_cli-1.5.1}/src/wealthbox_tools/skills/wealthbox-crm/references/projects.md +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "wealthbox-crm",
3
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.4.0",
4
+ "version": "1.5.0",
5
5
  "author": "Kadin Bullock",
6
6
  "homepage": "https://github.com/massive-value/wealthbox-cli",
7
7
  "repository": "https://github.com/massive-value/wealthbox-cli",
@@ -0,0 +1,209 @@
1
+ Metadata-Version: 2.4
2
+ Name: wealthbox-cli
3
+ Version: 1.5.1
4
+ Summary: CLI and client library for the Wealthbox CRM API
5
+ Project-URL: Homepage, https://github.com/massive-value/wealthbox-cli
6
+ Project-URL: Documentation, https://massive-value.github.io/wealthbox-cli/
7
+ Project-URL: Repository, https://github.com/massive-value/wealthbox-cli
8
+ Project-URL: Issues, https://github.com/massive-value/wealthbox-cli/issues
9
+ Project-URL: Changelog, https://github.com/massive-value/wealthbox-cli/blob/main/CHANGELOG.md
10
+ Author: Kadin Bullock
11
+ License: Apache-2.0
12
+ License-File: LICENSE
13
+ Keywords: api,cli,client-management,command-line,contacts,crm,financial-advisor,fintech,wealth-management,wealthbox
14
+ Classifier: Development Status :: 5 - Production/Stable
15
+ Classifier: Environment :: Console
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Intended Audience :: Financial and Insurance Industry
18
+ Classifier: License :: OSI Approved :: Apache Software License
19
+ Classifier: Natural Language :: English
20
+ Classifier: Operating System :: OS Independent
21
+ Classifier: Programming Language :: Python :: 3
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Programming Language :: Python :: 3.13
25
+ Classifier: Topic :: Office/Business
26
+ Classifier: Topic :: Office/Business :: Financial
27
+ Classifier: Typing :: Typed
28
+ Requires-Python: >=3.11
29
+ Requires-Dist: httpx<1.0,>=0.27
30
+ Requires-Dist: pydantic<3.0,>=2.0
31
+ Requires-Dist: python-dotenv<2.0,>=1.0
32
+ Requires-Dist: tabulate<1.0,>=0.9
33
+ Requires-Dist: typer<1.0,>=0.12
34
+ Provides-Extra: dev
35
+ Requires-Dist: mypy>=1.10; extra == 'dev'
36
+ Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
37
+ Requires-Dist: pytest>=8.0; extra == 'dev'
38
+ Requires-Dist: respx>=0.21; extra == 'dev'
39
+ Requires-Dist: ruff>=0.4; extra == 'dev'
40
+ Description-Content-Type: text/markdown
41
+
42
+ # Wealthbox CLI
43
+
44
+ **Run your Wealthbox CRM through Claude or ChatGPT.** Tell your AI agent *"add a contact for Jane Doe, send her our welcome packet, and put a follow-up on my calendar for next Tuesday"* — and it just happens. No coding, no Python, no terminal commands to memorize.
45
+
46
+ [![PyPI](https://img.shields.io/pypi/v/wealthbox-cli)](https://pypi.org/project/wealthbox-cli/) [![Downloads](https://img.shields.io/pypi/dm/wealthbox-cli)](https://pypi.org/project/wealthbox-cli/) [![CI](https://img.shields.io/github/actions/workflow/status/massive-value/wealthbox-cli/ci.yml?label=CI)](https://github.com/massive-value/wealthbox-cli/actions/workflows/ci.yml) [![License: Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
47
+
48
+ > Unofficial, community-built. Not affiliated with or endorsed by Wealthbox.
49
+
50
+ ------------------------------------------------------------------------
51
+
52
+ ## Install (60 seconds, no Python required)
53
+
54
+ | Platform | Paste this into your terminal |
55
+ |---|---|
56
+ | **Mac / Linux** | `curl -LsSf https://raw.githubusercontent.com/massive-value/wealthbox-cli/main/scripts/install.sh \| bash` |
57
+ | **Windows** (PowerShell) | `irm https://raw.githubusercontent.com/massive-value/wealthbox-cli/main/scripts/install.ps1 \| iex` |
58
+
59
+ The installer:
60
+ 1. Sets up the tools it needs (Python, etc. — handled automatically).
61
+ 2. Asks for your **Wealthbox API token**. *Where to find it:* in Wealthbox, click your initials in the top right → **Settings** → **API Access** → **Create Access Token**. Paste the token when prompted.
62
+ 3. Installs the AI agent skill into [Claude Code](https://claude.ai/download) (and Codex, if you have it).
63
+
64
+ That's it. Open Claude Code and try one of the prompts below.
65
+
66
+ ------------------------------------------------------------------------
67
+
68
+ ## Try this in Claude Code
69
+
70
+ ```
71
+ "Show me my contacts created this week."
72
+
73
+ "Add Jane Doe as a new prospect — she came in as a referral from Bob Smith."
74
+
75
+ "Pull up the Smith household, add a task for me to call them on Monday."
76
+
77
+ "Find notes from my meeting with the Joneses last month and summarize the action items."
78
+
79
+ "Schedule an annual review with Mary Chen for the second Tuesday of next month."
80
+ ```
81
+
82
+ The first time you ask the agent to do something, it'll walk you through a short Q&A about your firm's conventions (default contact types, naming patterns, common workflows). After that, it just works.
83
+
84
+ If you're new to Claude Code itself, [download it here](https://claude.ai/download) — it's free for personal use.
85
+
86
+ ------------------------------------------------------------------------
87
+
88
+ ## What it covers
89
+
90
+ Full read/write access for **contacts** (people, households, organizations, trusts), **tasks**, **events**, **notes**, **opportunities**, **projects**, and **workflows**. Read access for users, activity, and your firm's category lookups.
91
+
92
+ Anything you can do in Wealthbox manually, the agent can do for you — usually in one sentence.
93
+
94
+ ------------------------------------------------------------------------
95
+
96
+ ## How it works
97
+
98
+ Your AI agent uses a small command-line tool called `wbox` to talk to the [Wealthbox CRM API](https://dev.wealthbox.com). The skill that ships with this repo teaches the agent two things:
99
+
100
+ 1. **Your firm's conventions** — the agent walks you through a one-time Q&A on first use ("what's your default contact type for new prospects? what's your household naming convention?"), then remembers your answers. Stored locally on your machine, never sent to a server.
101
+ 2. **The right command for each request** — translating "add Jane as a prospect" into the correct API call, handling required fields, validating dropdowns against your firm's actual categories.
102
+
103
+ You stay in control: the agent shows you what it's about to do before it does it.
104
+
105
+ ------------------------------------------------------------------------
106
+
107
+ ## Already a Claude Code user?
108
+
109
+ You can install the skill directly from the plugin marketplace inside Claude Code:
110
+
111
+ ```
112
+ /plugin marketplace add massive-value/wealthbox-cli
113
+ /plugin install wealthbox-crm@massive-value
114
+ ```
115
+
116
+ The plugin auto-updates daily. Firm data lives at `~/.config/wbox/firm/` (Mac/Linux) or `%APPDATA%\wbox\firm\` (Windows) and survives plugin updates. Run `wbox doctor` to see your install status anytime.
117
+
118
+ ------------------------------------------------------------------------
119
+
120
+ ## For developers and power users
121
+
122
+ <details>
123
+ <summary><b>Direct CLI use, scripting, automation</b></summary>
124
+
125
+ ```bash
126
+ pip install wealthbox-cli
127
+ wbox config set-token
128
+
129
+ # List contacts as a table
130
+ wbox contacts list --format table
131
+
132
+ # Create a contact
133
+ wbox contacts add person --first-name Jane --last-name Doe --contact-type Client
134
+
135
+ # Export tasks to CSV
136
+ wbox tasks list --format csv > tasks.csv
137
+
138
+ # Add a meeting note linked to a contact
139
+ wbox notes add "Discussed retirement plan" --contact 12345
140
+ ```
141
+
142
+ Full command reference: [CLI Reference](https://massive-value.github.io/wealthbox-cli/cli-reference/). Output formats: `json` (default), `table`, `csv`, `tsv`. Date format: ISO 8601 (`2026-05-01T10:00:00-07:00`). See [Getting Started](https://massive-value.github.io/wealthbox-cli/getting-started/) for pipx, env-var auth, and project-scoped installs.
143
+ </details>
144
+
145
+ <details>
146
+ <summary><b>Manage skill installs (legacy / Codex / project scope)</b></summary>
147
+
148
+ ```bash
149
+ wbox skills install # interactive picker — Claude Code, Codex, project scope
150
+ wbox skills bootstrap # populate firm data from your Wealthbox account
151
+ wbox skills refresh # re-fetch generated firm data (categories, users, custom fields)
152
+ wbox skills upgrade # update the bundled SKILL.md / references in every install
153
+ wbox skills firm-path # print the canonical firm data directory
154
+ wbox skills uninstall # remove the skill template (firm data is preserved)
155
+ wbox doctor # comprehensive health check
156
+ ```
157
+
158
+ The marketplace plugin path (above) is recommended for Claude Code. The legacy `wbox skills install` path remains for Codex users (until OpenAI's marketplace lands), project-scoped installs, or air-gapped setups without the `claude` CLI.
159
+ </details>
160
+
161
+ <details>
162
+ <summary><b>Architecture and contributing</b></summary>
163
+
164
+ ```
165
+ src/wealthbox_tools/
166
+ cli/ # Typer commands
167
+ client/ # Async HTTP client built from mixins
168
+ models/ # Pydantic v2 input validation
169
+ ```
170
+
171
+ Built with [Typer](https://typer.tiangolo.com/), [httpx](https://www.python-httpx.org/), and [Pydantic v2](https://docs.pydantic.dev/).
172
+
173
+ ```bash
174
+ git clone https://github.com/massive-value/wealthbox-cli
175
+ cd wealthbox-cli
176
+ python -m venv .venv
177
+ # Activate: source .venv/bin/activate (Mac/Linux) | .venv\Scripts\Activate.ps1 (Windows)
178
+ pip install -e ".[dev]"
179
+ pytest
180
+ ```
181
+
182
+ See [CONTRIBUTING.md](CONTRIBUTING.md) and [CLAUDE.md](CLAUDE.md) for the architecture guide and conventions.
183
+ </details>
184
+
185
+ <details>
186
+ <summary><b>Troubleshooting</b></summary>
187
+
188
+ - **401 Unauthorized** — token expired or wrong. Run `wbox config show` to see the masked token, `wbox config set-token` to update.
189
+ - **Windows: "execution policy" error during install** — the installer offers to fix this for you. If you skipped it, run `Set-ExecutionPolicy RemoteSigned -Scope CurrentUser` and re-run the installer.
190
+ - **Linux: command not found after install** — open a new terminal, or run `source ~/.local/bin/env` in your current shell.
191
+ - **Date format errors** — Wealthbox needs ISO 8601: `"2026-05-01T10:00:00-07:00"` for datetimes, `"YYYY-MM-DD"` for date-only fields.
192
+ - **Writes succeed but nothing changes** — some category-constrained fields silently no-op on bad values. Check valid values with `wbox categories <type>`.
193
+
194
+ For anything else, open an issue at [github.com/massive-value/wealthbox-cli/issues](https://github.com/massive-value/wealthbox-cli/issues).
195
+ </details>
196
+
197
+ ------------------------------------------------------------------------
198
+
199
+ ## Links
200
+
201
+ [Documentation](https://massive-value.github.io/wealthbox-cli/) · [Changelog](https://massive-value.github.io/wealthbox-cli/changelog/) · [PyPI](https://pypi.org/project/wealthbox-cli/) · [Wealthbox CRM](https://www.wealthbox.com/) · [Wealthbox API](https://dev.wealthbox.com)
202
+
203
+ ## Disclaimer
204
+
205
+ This is an **unofficial, community-built** tool. It is not affiliated with, endorsed by, or supported by Wealthbox or its parent company. "Wealthbox" is a trademark of its respective owner. Use of this tool is subject to the [Wealthbox API Terms of Service](https://dev.wealthbox.com).
206
+
207
+ ## License
208
+
209
+ Apache 2.0 — see [LICENSE](LICENSE).
@@ -0,0 +1,168 @@
1
+ # Wealthbox CLI
2
+
3
+ **Run your Wealthbox CRM through Claude or ChatGPT.** Tell your AI agent *"add a contact for Jane Doe, send her our welcome packet, and put a follow-up on my calendar for next Tuesday"* — and it just happens. No coding, no Python, no terminal commands to memorize.
4
+
5
+ [![PyPI](https://img.shields.io/pypi/v/wealthbox-cli)](https://pypi.org/project/wealthbox-cli/) [![Downloads](https://img.shields.io/pypi/dm/wealthbox-cli)](https://pypi.org/project/wealthbox-cli/) [![CI](https://img.shields.io/github/actions/workflow/status/massive-value/wealthbox-cli/ci.yml?label=CI)](https://github.com/massive-value/wealthbox-cli/actions/workflows/ci.yml) [![License: Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
6
+
7
+ > Unofficial, community-built. Not affiliated with or endorsed by Wealthbox.
8
+
9
+ ------------------------------------------------------------------------
10
+
11
+ ## Install (60 seconds, no Python required)
12
+
13
+ | Platform | Paste this into your terminal |
14
+ |---|---|
15
+ | **Mac / Linux** | `curl -LsSf https://raw.githubusercontent.com/massive-value/wealthbox-cli/main/scripts/install.sh \| bash` |
16
+ | **Windows** (PowerShell) | `irm https://raw.githubusercontent.com/massive-value/wealthbox-cli/main/scripts/install.ps1 \| iex` |
17
+
18
+ The installer:
19
+ 1. Sets up the tools it needs (Python, etc. — handled automatically).
20
+ 2. Asks for your **Wealthbox API token**. *Where to find it:* in Wealthbox, click your initials in the top right → **Settings** → **API Access** → **Create Access Token**. Paste the token when prompted.
21
+ 3. Installs the AI agent skill into [Claude Code](https://claude.ai/download) (and Codex, if you have it).
22
+
23
+ That's it. Open Claude Code and try one of the prompts below.
24
+
25
+ ------------------------------------------------------------------------
26
+
27
+ ## Try this in Claude Code
28
+
29
+ ```
30
+ "Show me my contacts created this week."
31
+
32
+ "Add Jane Doe as a new prospect — she came in as a referral from Bob Smith."
33
+
34
+ "Pull up the Smith household, add a task for me to call them on Monday."
35
+
36
+ "Find notes from my meeting with the Joneses last month and summarize the action items."
37
+
38
+ "Schedule an annual review with Mary Chen for the second Tuesday of next month."
39
+ ```
40
+
41
+ The first time you ask the agent to do something, it'll walk you through a short Q&A about your firm's conventions (default contact types, naming patterns, common workflows). After that, it just works.
42
+
43
+ If you're new to Claude Code itself, [download it here](https://claude.ai/download) — it's free for personal use.
44
+
45
+ ------------------------------------------------------------------------
46
+
47
+ ## What it covers
48
+
49
+ Full read/write access for **contacts** (people, households, organizations, trusts), **tasks**, **events**, **notes**, **opportunities**, **projects**, and **workflows**. Read access for users, activity, and your firm's category lookups.
50
+
51
+ Anything you can do in Wealthbox manually, the agent can do for you — usually in one sentence.
52
+
53
+ ------------------------------------------------------------------------
54
+
55
+ ## How it works
56
+
57
+ Your AI agent uses a small command-line tool called `wbox` to talk to the [Wealthbox CRM API](https://dev.wealthbox.com). The skill that ships with this repo teaches the agent two things:
58
+
59
+ 1. **Your firm's conventions** — the agent walks you through a one-time Q&A on first use ("what's your default contact type for new prospects? what's your household naming convention?"), then remembers your answers. Stored locally on your machine, never sent to a server.
60
+ 2. **The right command for each request** — translating "add Jane as a prospect" into the correct API call, handling required fields, validating dropdowns against your firm's actual categories.
61
+
62
+ You stay in control: the agent shows you what it's about to do before it does it.
63
+
64
+ ------------------------------------------------------------------------
65
+
66
+ ## Already a Claude Code user?
67
+
68
+ You can install the skill directly from the plugin marketplace inside Claude Code:
69
+
70
+ ```
71
+ /plugin marketplace add massive-value/wealthbox-cli
72
+ /plugin install wealthbox-crm@massive-value
73
+ ```
74
+
75
+ The plugin auto-updates daily. Firm data lives at `~/.config/wbox/firm/` (Mac/Linux) or `%APPDATA%\wbox\firm\` (Windows) and survives plugin updates. Run `wbox doctor` to see your install status anytime.
76
+
77
+ ------------------------------------------------------------------------
78
+
79
+ ## For developers and power users
80
+
81
+ <details>
82
+ <summary><b>Direct CLI use, scripting, automation</b></summary>
83
+
84
+ ```bash
85
+ pip install wealthbox-cli
86
+ wbox config set-token
87
+
88
+ # List contacts as a table
89
+ wbox contacts list --format table
90
+
91
+ # Create a contact
92
+ wbox contacts add person --first-name Jane --last-name Doe --contact-type Client
93
+
94
+ # Export tasks to CSV
95
+ wbox tasks list --format csv > tasks.csv
96
+
97
+ # Add a meeting note linked to a contact
98
+ wbox notes add "Discussed retirement plan" --contact 12345
99
+ ```
100
+
101
+ Full command reference: [CLI Reference](https://massive-value.github.io/wealthbox-cli/cli-reference/). Output formats: `json` (default), `table`, `csv`, `tsv`. Date format: ISO 8601 (`2026-05-01T10:00:00-07:00`). See [Getting Started](https://massive-value.github.io/wealthbox-cli/getting-started/) for pipx, env-var auth, and project-scoped installs.
102
+ </details>
103
+
104
+ <details>
105
+ <summary><b>Manage skill installs (legacy / Codex / project scope)</b></summary>
106
+
107
+ ```bash
108
+ wbox skills install # interactive picker — Claude Code, Codex, project scope
109
+ wbox skills bootstrap # populate firm data from your Wealthbox account
110
+ wbox skills refresh # re-fetch generated firm data (categories, users, custom fields)
111
+ wbox skills upgrade # update the bundled SKILL.md / references in every install
112
+ wbox skills firm-path # print the canonical firm data directory
113
+ wbox skills uninstall # remove the skill template (firm data is preserved)
114
+ wbox doctor # comprehensive health check
115
+ ```
116
+
117
+ The marketplace plugin path (above) is recommended for Claude Code. The legacy `wbox skills install` path remains for Codex users (until OpenAI's marketplace lands), project-scoped installs, or air-gapped setups without the `claude` CLI.
118
+ </details>
119
+
120
+ <details>
121
+ <summary><b>Architecture and contributing</b></summary>
122
+
123
+ ```
124
+ src/wealthbox_tools/
125
+ cli/ # Typer commands
126
+ client/ # Async HTTP client built from mixins
127
+ models/ # Pydantic v2 input validation
128
+ ```
129
+
130
+ Built with [Typer](https://typer.tiangolo.com/), [httpx](https://www.python-httpx.org/), and [Pydantic v2](https://docs.pydantic.dev/).
131
+
132
+ ```bash
133
+ git clone https://github.com/massive-value/wealthbox-cli
134
+ cd wealthbox-cli
135
+ python -m venv .venv
136
+ # Activate: source .venv/bin/activate (Mac/Linux) | .venv\Scripts\Activate.ps1 (Windows)
137
+ pip install -e ".[dev]"
138
+ pytest
139
+ ```
140
+
141
+ See [CONTRIBUTING.md](CONTRIBUTING.md) and [CLAUDE.md](CLAUDE.md) for the architecture guide and conventions.
142
+ </details>
143
+
144
+ <details>
145
+ <summary><b>Troubleshooting</b></summary>
146
+
147
+ - **401 Unauthorized** — token expired or wrong. Run `wbox config show` to see the masked token, `wbox config set-token` to update.
148
+ - **Windows: "execution policy" error during install** — the installer offers to fix this for you. If you skipped it, run `Set-ExecutionPolicy RemoteSigned -Scope CurrentUser` and re-run the installer.
149
+ - **Linux: command not found after install** — open a new terminal, or run `source ~/.local/bin/env` in your current shell.
150
+ - **Date format errors** — Wealthbox needs ISO 8601: `"2026-05-01T10:00:00-07:00"` for datetimes, `"YYYY-MM-DD"` for date-only fields.
151
+ - **Writes succeed but nothing changes** — some category-constrained fields silently no-op on bad values. Check valid values with `wbox categories <type>`.
152
+
153
+ For anything else, open an issue at [github.com/massive-value/wealthbox-cli/issues](https://github.com/massive-value/wealthbox-cli/issues).
154
+ </details>
155
+
156
+ ------------------------------------------------------------------------
157
+
158
+ ## Links
159
+
160
+ [Documentation](https://massive-value.github.io/wealthbox-cli/) · [Changelog](https://massive-value.github.io/wealthbox-cli/changelog/) · [PyPI](https://pypi.org/project/wealthbox-cli/) · [Wealthbox CRM](https://www.wealthbox.com/) · [Wealthbox API](https://dev.wealthbox.com)
161
+
162
+ ## Disclaimer
163
+
164
+ This is an **unofficial, community-built** tool. It is not affiliated with, endorsed by, or supported by Wealthbox or its parent company. "Wealthbox" is a trademark of its respective owner. Use of this tool is subject to the [Wealthbox API Terms of Service](https://dev.wealthbox.com).
165
+
166
+ ## License
167
+
168
+ Apache 2.0 — see [LICENSE](LICENSE).
@@ -82,7 +82,7 @@ Verify with: `wbox me`
82
82
  | List/get/add/update events | events | `wbox events {list\|get\|add\|update\|delete} ...` |
83
83
  | Opportunities | opportunities | `wbox opportunities {list\|get\|add\|update\|delete} ...` |
84
84
  | Projects | projects | `wbox projects {list\|get\|add\|update} ...` |
85
- | Workflows | workflows | `wbox workflows {list\|get\|add\|complete-step\|revert-step} ...` |
85
+ | Workflows | workflows | `wbox workflows {list\|get\|next\|add\|complete-step\|revert-step} ...` |
86
86
  | Household members | households | `wbox households {add-member\|remove-member} ...` |
87
87
  | Categories/tags | lookups | `wbox categories ...` or `wbox <resource> categories` |
88
88
  | Users | lookups | `wbox users list` |
@@ -111,6 +111,10 @@ When `<firm>/workflows.md` defines named workflows (e.g., "onboarding", "meeting
111
111
  - Default to `--format json` for single records, `--format table` for lists
112
112
  - If the user asks to "show" or "display", use `--format table`
113
113
  - If the user is piping or scripting, use `--format json`
114
+ - **Token efficiency:** for any read where the html duplicates aren't needed
115
+ (almost always), pass `--brief` (or set `WBOX_BRIEF=1`). It strips every
116
+ `*_html` field recursively from the JSON output. Wealthbox returns html
117
+ 3-5x larger than the plain text counterpart.
114
118
 
115
119
  ## Common Recipes
116
120
 
@@ -36,7 +36,7 @@ wbox contacts <ID>
36
36
  wbox contacts get <ID>
37
37
  ```
38
38
 
39
- Returns full contact record including comments (use `--no-comments` to omit).
39
+ Returns the full contact record. Contacts do not carry comments in Wealthbox — to read comments, fetch the related task, note, event, opportunity, project, or workflow with its `get` command (those default to including comments and accept `--no-comments` to suppress).
40
40
 
41
41
  ## Create Contact
42
42
 
@@ -69,6 +69,7 @@ wbox contacts add person [OPTIONS]
69
69
  | `--email-type` | STR | Work, Personal, etc. |
70
70
  | `--phone` | STR | Phone number |
71
71
  | `--phone-type` | STR | Work, Mobile, etc. |
72
+ | `--tags` | STR | Comma-separated tag names (e.g. "VIP,Q1-Outreach"). New tags are auto-created. |
72
73
  | `--more-fields` | JSON | Additional fields as JSON object |
73
74
  | `--format` | json\|table\|csv\|tsv | Output format |
74
75
 
@@ -76,7 +77,7 @@ wbox contacts add person [OPTIONS]
76
77
  ```bash
77
78
  wbox contacts add household --name <NAME> [OPTIONS]
78
79
  ```
79
- `--name` is required. Supports: `--contact-type`, `--contact-source`, `--active/--inactive`, `--assigned-to`, `--email`, `--email-type`, `--more-fields`, `--format`.
80
+ `--name` is required. Supports: `--contact-type`, `--contact-source`, `--active/--inactive`, `--assigned-to`, `--email`, `--email-type`, `--tags`, `--more-fields`, `--format`.
80
81
 
81
82
  ### Organization
82
83
  ```bash
@@ -110,6 +111,7 @@ Only pass the fields you want to change:
110
111
  | `--contact-source` | STR | Source |
111
112
  | `--active` / `--inactive` | flag | Active status |
112
113
  | `--assigned-to` | INT | Reassign to user ID |
114
+ | `--tags` | STR | Comma-separated tag names. Replaces all tags — include existing ones to keep. |
113
115
  | `--json` | STR | Full JSON for nested/complex fields |
114
116
  | `--format` | json\|table\|csv\|tsv | Output format |
115
117
 
@@ -44,7 +44,7 @@ wbox tasks add <NAME> [OPTIONS]
44
44
  |------|------|-------------|
45
45
  | `<NAME>` | positional | Task name (required) |
46
46
  | `--due-date` | STR | Due date (XOR with --frame) |
47
- | `--frame` | today\|tomorrow\|this-week\|next-week\|this-month\|next-month\|... | Relative due date (XOR with --due-date) |
47
+ | `--frame` | today\|tomorrow\|this-week\|next-week\|future\|specific | Relative due date (XOR with --due-date). Both kebab-case (`next-week`) and snake_case (`next_week`) are accepted. |
48
48
  | `--priority` | Low\|Medium\|High | Priority level |
49
49
  | `--category` | STR | Task category by name or ID (e.g. "Follow-up"). See `wbox categories task-categories`. |
50
50
  | `--description` | STR | Task description |
@@ -57,6 +57,8 @@ wbox tasks add <NAME> [OPTIONS]
57
57
 
58
58
  **Note:** `--due-date` and `--frame` are mutually exclusive. Use `--frame` for relative dates.
59
59
 
60
+ **Note (Wealthbox quirk):** `--frame next_week` resolves on the API side to the Monday of the calendar week *after* today. **If today is Sunday, `next_week` is tomorrow** (Monday) — only one day away, not seven. Wealthbox treats Sunday as the last day of the current week. If precise control matters (e.g. an advisor said "next week" expecting 7+ days out), use `--due-date YYYY-MM-DDTHH:MM:SS-07:00` with an explicit date instead of `--frame`.
61
+
60
62
  ## Update Task
61
63
 
62
64
  ```bash
@@ -67,7 +69,7 @@ wbox tasks update <ID> [OPTIONS]
67
69
  |------|------|-------------|
68
70
  | `--name` | STR | Rename |
69
71
  | `--due-date` | STR | Change due date |
70
- | `--frame` | STR | Change relative due date |
72
+ | `--frame` | STR | Change relative due date. Accepts kebab-case (`next-week`) or snake_case (`next_week`); see Note above re: Sunday boundary. |
71
73
  | `--priority` | Low\|Medium\|High | Change priority |
72
74
  | `--category` | STR | Task category by name or ID. See `wbox categories task-categories`. |
73
75
  | `--assigned-to` | INT | Reassign |
@@ -0,0 +1,145 @@
1
+ # Workflows
2
+
3
+ Template-based process tracking. Created from templates, progressed by completing/reverting steps.
4
+
5
+ ## List Workflows
6
+
7
+ ```bash
8
+ wbox workflows list [OPTIONS]
9
+ ```
10
+
11
+ | Flag | Type | Description |
12
+ |------|------|-------------|
13
+ | `--resource-id` | INT | Filter by linked resource ID |
14
+ | `--resource-type` | Contact\|Project | Type of linked resource |
15
+ | `--status` | active\|completed\|scheduled | Filter by status |
16
+ | `--updated-since` | ISO datetime | Modified after |
17
+ | `--updated-before` | ISO datetime | Modified before |
18
+ | `--page` | INT | Page number |
19
+ | `--per-page` | INT | Results per page |
20
+ | `--verbose`, `-v` | flag | Show all fields |
21
+ | `--format` | json\|table\|csv\|tsv | Output format |
22
+
23
+ ## Get Workflow
24
+
25
+ ```bash
26
+ wbox workflows <ID>
27
+ wbox workflows get <ID>
28
+ ```
29
+
30
+ Supports `--no-comments`, `--verbose`, `--format`. Default output omits the
31
+ redundant `workflow_template` block (fetch separately via `templates list`);
32
+ pass `--verbose` to include it.
33
+
34
+ ## Next Step
35
+
36
+ ```bash
37
+ wbox workflows next <ID>
38
+ ```
39
+
40
+ Returns the active step (or `{"completed": true, "completed_at": ...}` if the
41
+ workflow is done). Cheaper than parsing the full `get` response when you only
42
+ need to know "what's next."
43
+
44
+ ## Create Workflow
45
+
46
+ ```bash
47
+ wbox workflows add [OPTIONS]
48
+ ```
49
+
50
+ | Flag | Type | Description |
51
+ |------|------|-------------|
52
+ | `--template` | INT | Workflow template ID (required) |
53
+ | `--label` | STR | Label/name for this instance |
54
+ | `--contact` | INT | Link to contact |
55
+ | `--project` | INT | Link to project |
56
+ | `--opportunity` | INT | Link to opportunity |
57
+ | `--visible-to` | STR | Visibility |
58
+ | `--starts-at` | STR | Start date |
59
+ | `--more-fields` | JSON | Additional fields |
60
+ | `--format` | json\|table\|csv\|tsv | Output format |
61
+
62
+ **Note:** Use `wbox workflows templates list` to find available template IDs.
63
+
64
+ ## Complete Step
65
+
66
+ ```bash
67
+ wbox workflows complete-step <WORKFLOW_ID> <STEP_ID> [OPTIONS]
68
+ ```
69
+
70
+ | Flag | Type | Description |
71
+ |------|------|-------------|
72
+ | `--outcome-id` | INT | Outcome selection |
73
+ | `--due-date` | STR | For restarting a step |
74
+ | `--due-date-set` | flag | Whether restarted step has due date |
75
+ | `--no-advance-hint` | flag | Skip the post-complete workflow fetch + stderr summary |
76
+ | `--format` | json\|table\|csv\|tsv | Output format |
77
+
78
+ After a successful complete-step, the CLI fetches the workflow and prints a
79
+ one-line summary to **stderr** describing the new active step (or that the
80
+ workflow completed). Stdout stays the raw API response. Wealthbox's complete-step
81
+ response itself does not say which outcome was selected, so this hint is the
82
+ fastest way to confirm branching took effect.
83
+
84
+ ## Revert Step
85
+
86
+ ```bash
87
+ wbox workflows revert-step <WORKFLOW_ID> <STEP_ID> [OPTIONS]
88
+ ```
89
+
90
+ ## List Templates
91
+
92
+ ```bash
93
+ wbox workflows templates list [OPTIONS]
94
+ ```
95
+
96
+ Same filter flags as workflow list.
97
+
98
+ ## Examples
99
+
100
+ ```bash
101
+ # List available templates
102
+ wbox workflows templates list --format table
103
+
104
+ # Start onboarding workflow for a contact
105
+ wbox workflows add --template 123 --contact 67890 --label "Smith Onboarding"
106
+
107
+ # Complete a workflow step
108
+ wbox workflows complete-step 111 222
109
+
110
+ # Just tell me what's next
111
+ wbox workflows next 111
112
+ ```
113
+
114
+ ## Quirks (verified against the live API)
115
+
116
+ - **`completed_at` — not `active_step` — is the truth signal.** When a workflow
117
+ completes, Wealthbox does not clear the `active_step` field — it keeps
118
+ pointing at the final completed step. To detect completion, check that
119
+ `completed_at` is non-empty. `wbox workflows next` already handles this.
120
+ - **`due_date` is materialized at step *activation*, not workflow creation.**
121
+ Steps further down the chain return `due_date: ""` until they become the
122
+ active step. Empty string ≠ "no due date scheduled" — it just means "not yet
123
+ reached."
124
+ - **Empty strings, not nulls, for unset datetimes.** `completed_at: ""`,
125
+ `due_date: ""`. If you ever add a Pydantic output model with
126
+ `datetime | None`, you must coerce empty strings to None.
127
+ - **`complete-step` response doesn't surface the selected outcome.** It returns
128
+ the step with *all* of its possible outcomes attached, identical shape to the
129
+ pre-completion read. To verify branching worked, re-fetch the workflow and
130
+ inspect the new `active_step` (or just rely on the CLI's stderr advance hint).
131
+ - **Skipped steps stay `pending`.** When an outcome jumps over intermediate
132
+ steps, those steps are NOT marked skipped or completed — they have empty
133
+ `completed_at` and `due_date`, indistinguishable from steps that simply
134
+ haven't been reached. Outcome-driven workflows can revisit earlier steps, so
135
+ "later step is completed" doesn't reliably imply "earlier step was skipped."
136
+ - **`revert-step` preserves `due_date`.** Reverting only clears `completed_at`
137
+ and `completer_id`; the previously materialized `due_date` is kept.
138
+ - **Workflows attach to either the household or any member.** When looking up a
139
+ client's workflows, check both the household contact and each member contact —
140
+ Wealthbox does not roll member workflows up to the household.
141
+ - **Instance `name` is lower-cased relative to template `name`.** Template
142
+ "Auto Trade Enrollment" becomes instance "Auto trade enrollment". Cosmetic.
143
+ - **`workflow_template` is included on every workflow list/get response.** It's
144
+ the full template (every step + html descriptions). The CLI strips it from
145
+ default output to save tokens; pass `--verbose` to include it.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "wealthbox-crm",
3
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.4.0",
4
+ "version": "1.5.0",
5
5
  "author": {
6
6
  "name": "Kadin Bullock"
7
7
  },
@@ -82,7 +82,7 @@ Verify with: `wbox me`
82
82
  | List/get/add/update events | events | `wbox events {list\|get\|add\|update\|delete} ...` |
83
83
  | Opportunities | opportunities | `wbox opportunities {list\|get\|add\|update\|delete} ...` |
84
84
  | Projects | projects | `wbox projects {list\|get\|add\|update} ...` |
85
- | Workflows | workflows | `wbox workflows {list\|get\|add\|complete-step\|revert-step} ...` |
85
+ | Workflows | workflows | `wbox workflows {list\|get\|next\|add\|complete-step\|revert-step} ...` |
86
86
  | Household members | households | `wbox households {add-member\|remove-member} ...` |
87
87
  | Categories/tags | lookups | `wbox categories ...` or `wbox <resource> categories` |
88
88
  | Users | lookups | `wbox users list` |
@@ -111,6 +111,10 @@ When `<firm>/workflows.md` defines named workflows (e.g., "onboarding", "meeting
111
111
  - Default to `--format json` for single records, `--format table` for lists
112
112
  - If the user asks to "show" or "display", use `--format table`
113
113
  - If the user is piping or scripting, use `--format json`
114
+ - **Token efficiency:** for any read where the html duplicates aren't needed
115
+ (almost always), pass `--brief` (or set `WBOX_BRIEF=1`). It strips every
116
+ `*_html` field recursively from the JSON output. Wealthbox returns html
117
+ 3-5x larger than the plain text counterpart.
114
118
 
115
119
  ## Common Recipes
116
120