Add campaign call-sheet workflows#57
Merged
Merged
Conversation
…n trio)
## What ships
WORKFLOWS.md — normative triage table at repo root. Maps every supported
MCP workflow to its assets + CI-verified tests. Backed by a tiny audit
(packages/mcp/test/audit/workflows.test.ts, ~120 lines) that asserts
every backtick'd leadbay_* identifier resolves to a real tool/prompt/skill
and every test path exists. The Tests column is load-bearing — a row
claims "covered" only if a real test backs it.
Five new composites under packages/core/src/composite/ close #3630 US1
and US3 with no backend changes (all wrap existing endpoints):
- leadbay_tour_plan — mixed-mode itinerary (Monitor + Discover on one
map for "I'm visiting <city> in N days").
- leadbay_create_campaign — POST /campaigns.
- leadbay_add_leads_to_campaign — POST /campaigns/{id}/leads.
- leadbay_list_campaigns — GET /campaigns with roll-up stats.
- leadbay_campaign_progression — GET /campaigns/{id}/leads, surfaces
per-lead progress + cross-campaign affiliation overlap.
Two new prompts (+ auto-emitted skills):
- leadbay_plan_tour_in_city — US1 orchestrator end-to-end (tour_plan →
map render → outreach drafts → optional persist as a tour campaign).
- leadbay_setup_team_prospecting — US3 orchestrator (refine_prompt →
create_lens → pull_leads → validate → create_campaign per partition).
Honest about the creator-scoped campaign visibility gap (a true
backend limitation, not an MCP omission).
## Key discovery
Live-probed the campaigns API; the apiJson serializer in Server.kt uses
JsonNamingStrategy.SnakeCase, so POST bodies need snake_case keys
(lead_ids, not leadIds). Documented in .context/campaigns-probe/API.md.
A new smoke test (test/smoke/live-campaigns.test.ts) exercises the full
create → add lead → progression → cleanup flow against the real US
backend (gated on LEADBAY_TEST_TOKEN).
## Verification
- pnpm -r typecheck: 5/5 packages green
- pnpm -r test: 485 tests pass (core 260 / leadclaw 12 / mcp 197 /
promptforge 16)
- Live smoke (US account): 5/5 pass, test account left clean
- WORKFLOWS audit catches identifier rot — proven by two real defects
it caught during development (followup_check_in misclassified as
prompt vs. skill; proposed-tool names wrongly backtick'd).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a WORKFLOWS.md inventory and exposes campaign/tour MCP workflows: tour planning, campaign creation/listing/progression, add-leads, and a call-sheet composite with phones, LinkedIn, and map-ready payloads.
Registers new prompts and Claude Code skills for field tours, team prospecting, and working a campaign, including readiness-first routing and outreach dictation guidance.
Extends routing/output-schema audits, prompt/eval coverage, and live smoke/unit tests; also corrects campaign contacted summaries to use outreach signals instead of contact coverage.
Verified with
pnpm -r typecheck,pnpm -r test, andpnpm build.