flow-crm

Interact with FlowDeck CRM API (clients, deals, proposals, receivables, expenses, contacts). Use for all CRM operations via the FlowDeck REST API through Supabase Edge Functions.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "flow-crm" with this command: npx skills add flow-crm

FlowDeck CRM API

Interact with the FlowDeck CRM module via the REST API gateway (base URL: https://<supabase_url>/functions/v1/api-gateway).

Usage

Run the script using the absolute path (do NOT cd to the skill directory):

uv run ~/.codex/skills/flow-crm/scripts/flow_api.py <action> <resource> [options]

Important: Always run from the user's current working directory so any output files are saved where the user is working.

Actions

ActionDescriptionExample
listList resources (paginated)uv run ... list clients --limit 50
getGet single resourceuv run ... get clients --id <uuid>
createCreate resourceuv run ... create clients --data '{"name":"Acme"}'
updateUpdate resourceuv run ... update clients --id <uuid> --data '{"name":"Acme Inc"}'
deleteDelete resourceuv run ... delete clients --id <uuid>

Client Creation Workflow (mandatory)

When creating a client (create clients), the API only requires name. However, you MUST proactively ask the user about every available field BEFORE calling the API. Collect as much data as possible, then build the payload. Even if the user skips many fields, you must have asked.

Ask about these fields (use the Portuguese/Portuñol terms the user will recognize):

  1. Tipoclient, supplier, or both (default: client)
  2. Empresa — Company name
  3. Email — Main contact email
  4. Email financeiro — Finance department email (finance_email)
  5. Telefone — Phone number
  6. CPF/CNPJ — Document (Brazilian tax ID)
  7. Website — Company website
  8. Endereço — Physical address
  9. País — Country (country)
  10. Código IBGE da cidadecity_ibge_code
  11. Statusactive, inactive, or lead (default: active)
  12. Observações — Notes

Present these as a single structured block of questions (not one-by-one), e.g:

Antes de criar o cliente, preciso preencher algumas informações. Me diga o que souber:

  • Tipo: [client/supplier/both]
  • Empresa:
  • Email:
  • Email financeiro:
  • Telefone:
  • CPF/CNPJ:
  • Website:
  • Endereço:
  • País:
  • Código IBGE:
  • Observações:

(Pule os que não souber.)

If the user responds with partial data, use what they gave and leave the rest blank — but never skip asking first. Then build the --data JSON with all collected fields and create the client.

CRM Resources

ResourceEndpointNotes
clients/clientsClients & suppliers (finance_parties)
contacts/projects/{id}/contactsProject-scoped contacts
deals/dealsCRM opportunities (crm_deals)
proposals/proposalsCommercial proposals
receivables/receivablesAccounts receivable
expenses/expensesExpenses

Filters for list

Common query parameters (supported varies by resource):

  • --limit N (default 50, max 200)
  • --offset N (default 0)
  • --status — filter by status enum
  • --type — filter by type (clients: client/supplier/both)
  • --stage — filter by deal stage (deals: lead/qualified/proposal/negotiation/won/lost)
  • --party-id — filter by client/supplier (party UUID)
  • --project-id — parent project ID for scoped resources (contacts, cycles, tasks)
  • --priority — filter task priority
  • --cycle-id — filter tasks by cycle
  • --assignee-id — filter tasks by assignee
  • --due-date-from / --due-date-to — date range for receivables
  • --date-from / --date-to — date range for expenses

Status/Stage Enums

Clients (PartyStatus)

active, inactive, lead

Deals (CrmDealStage)

lead -> qualified -> proposal -> negotiation -> won / lost

Proposals (CrmProposalStatus)

draft -> sent -> viewed -> accepted / rejected / expired

Receivables (ReceivableStatus)

pending, paid, partial, overdue, cancelled

Expenses (ExpenseStatus)

pending, paid, partial

API Key

The script checks for API key in this order:

  1. --api-key argument (use if user provided key in chat)
  2. FLOWDECK_API_KEY environment variable

If neither is available, the script exits with an error message.

API Key + Base URL Environment Variables

  • FLOWDECK_API_KEY — Bearer API key
  • FLOWDECK_BASE_URL — API base URL (default: https://mycivgjuujlnyoycuwrz.supabase.co/functions/v1/api-gateway)

Preflight + Common Failures

  • Preflight:
    • command -v uv (must exist)
    • test -n "$FLOWDECK_API_KEY" (or pass --api-key)
  • Common failures:
    • Error: No API key provided. → set FLOWDECK_API_KEY or pass --api-key
    • HTTP 401 → invalid/revoked key
    • HTTP 404 → resource not found or doesn't belong to workspace
    • "quota/permission/403" → wrong key, no access, or quota exceeded

Examples

List active clients:

uv run ~/.codex/skills/flow-crm/scripts/flow_api.py list clients --status active --limit 20

Create a deal:

uv run ~/.codex/skills/flow-crm/scripts/flow_api.py create deals \
  --data '{"title":"Website Redesign","client_id":"<uuid>","value":50000,"stage":"lead"}'

Create a proposal:

uv run ~/.codex/skills/flow-crm/scripts/flow_api.py create proposals \
  --data '{"title":"Proposta — Website Redesign","client_id":"<uuid>","deal_id":"<uuid>","currency":"BRL"}'

Update a deal stage to won:

uv run ~/.codex/skills/flow-crm/scripts/flow_api.py update deals \
  --id <uuid> --data '{"stage":"won"}'

List overdue receivables for a client:

uv run ~/.codex/skills/flow-crm/scripts/flow_api.py list receivables \
  --status overdue --party-id <uuid>

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

Spicy Ai Video

Turn a 60-second talking head clip into 1080p high-energy edited videos just by typing what you need. Whether it's turning bland footage into visually intens...

Registry SourceRecently Updated
Coding

Video Maker Fast

Get polished MP4 videos ready to post, without touching a single slider. Upload your video clips (MP4, MOV, AVI, WebM, up to 500MB), say something like "trim...

Registry SourceRecently Updated
Coding

Generation Generator

generate text prompts or clips into AI generated videos with this skill. Works with MP4, MOV, PNG, JPG files up to 500MB. marketers, content creators, social...

Registry SourceRecently Updated
Coding

Editor On Android

Get edited MP4 clips ready to post, without touching a single slider. Upload your video clips (MP4, MOV, AVI, WebM, up to 500MB), say something like "trim th...

Registry SourceRecently Updated