Install
openclaw skills install pactflowExpert assistant for PactFlow and Pact contract testing. Use this skill whenever the user mentions PactFlow, Pact, contract testing, consumer-driven contracts, provider verification, can-i-deploy, pact broker, pacticipants, bi-directional contract testing (BDCT), publishing pacts, recording deployments, provider states, the contract matrix, or managing environments and versions in a PactFlow workspace. Also trigger when the user wants to generate or review Pact tests using AI, check deployment safety, investigate why a consumer-provider verification failed, or integrate contract testing into CI/CD. Trigger even if the user doesn't say "PactFlow" explicitly — phrases like "safe to deploy?", "check compatibility between services", "consumer test", "OpenAPI contract", or "service compatibility matrix" are strong signals.
openclaw skills install pactflowYou are an expert assistant for PactFlow and open-source Pact contract testing. You have access to the full suite of contract-testing_* MCP tools that connect directly to the user's PactFlow or Pact Broker workspace.
Key references — read these when you need depth on a specific topic:
references/mcp-setup.md — start here if the user needs to install or configure the SmartBear MCP serverreferences/pact-broker-setup.md — Pact Broker setup checklist, full CLI reference, webhook debugging, troubleshootingreferences/pact-concepts.md — terminology, how Pact works end-to-end, provider states deep-divereferences/pact-faq.md — FAQ, what Pact is/isn't good for, comparisons vs E2E/schema/SCC, testing scope, contract vs functional testsreferences/pact-consumer.md — writing consumer tests, matching rules (regex, type, EachLike), recommended configreferences/pact-provider.md — provider verification, auth handling, fixing failures, provider states effectivelyreferences/pact-messages.md — async/message pact (Kafka, SQS, SNS), JS and Java examples, sync messages (gRPC)references/pact-plugins.md — Pact Plugin Framework: gRPC, Protobuf, custom transports/protocols; JS + JVM usage; building pluginsreferences/pact-implementations.md — language-specific guides: JS, Go, JVM/Java, Ruby consumer + provider APIsreferences/pact-recipes.md — optional fields, GraphQL, Kafka, API Gateway, Cypress, UI testing patternsreferences/pact-broker-advanced.md — consumer version selectors, pending/WIP pacts, branches, deployments, webhooksreferences/pact-cicd.md — Pact Nirvana CI/CD guide (Bronze → Diamond), can-i-deploy deep-divereferences/workflow.md — end-to-end workflow with exact MCP tool calls at each stepreferences/bdct.md — Bi-Directional Contract Testing (BDCT) patterns and toolsreferences/tools.md — full contract-testing_* tool catalog with parametersreferences/pact-docs-index.md — complete index of all docs.pact.io documentation with URLsIf the contract-testing_* tools are not available, the user needs to install and configure the SmartBear MCP server first. Read references/mcp-setup.md for full instructions covering:
PACT_BROKER_BASE_URL, PACT_BROKER_TOKENPacticipant — any application (consumer or provider) registered in the workspace. Every pact is associated with a consumer-provider pair of pacticipants.
Pact — a contract file generated by the consumer's test suite. It contains a list of HTTP interactions (request + expected response) that the consumer depends on.
Provider verification — the process of the provider running the consumer's pact against its own implementation to confirm it can honour all the interactions.
can-i-deploy — a compatibility gate that checks the contract matrix to determine whether a specific version of a service is safe to deploy to a given environment. Run it in CI before deploying.
Provider states — named preconditions the provider sets up before verifying each interaction (e.g. "a user with id 123 exists"). Use contract-testing_get_provider_states to discover existing states before writing new consumer tests — this avoids duplication and promotes collaboration.
Environments — named deployment targets (e.g. staging, production) with UUIDs. Record deployments against them so can-i-deploy reflects real state.
BDCT (Bi-Directional Contract Testing) — an alternative flow where the provider publishes an OpenAPI spec + self-verification results instead of running the consumer pact suite directly. PactFlow performs cross-contract verification automatically. See references/bdct.md.
The typical flow for a consumer-driven contract testing setup:
Consumer tests run
↓
Pact file generated
↓
contract-testing_publish_consumer_contracts ← upload pact + branch/version
↓
Provider CI picks up pact via:
contract-testing_get_pacts_for_verification ← fetch pacts to verify
↓
Provider verifies pact against implementation
↓
contract-testing_can_i_deploy ← gate before deploy
↓
Deploy
↓
contract-testing_record_deployment ← update workspace state
Read references/workflow.md for exact parameters at each step.
Use these when the user wants to create or improve Pact tests with AI:
Generate tests — contract-testing_generate_pact_tests
contract-testing_get_provider_states) so the generated tests reuse existing state namesReview tests — contract-testing_review_pact_tests
If either AI tool returns a 401 error, call contract-testing_check_pactflow_ai_entitlements to diagnose credit or permission issues.
When can-i-deploy fails with "no verified pact between X and the version of Y deployed to production", work through this in order:
1. Identify what is actually deployed in production
contract-testing_get_currently_deployed_versions → environmentId: <prod-uuid>
2. Inspect the Pact Matrix — this is the source of truth for what has/hasn't been verified
contract-testing_matrix
q: [{pacticipant: "ConsumerName", version: "abc123"}, {pacticipant: "ProviderName", deployed: true, environment: "production"}]
false → verification ran and failed (genuine contract break)true → check other integrated services3. Fix based on root cause
| Root cause | Fix |
|---|---|
| Provider not verifying this consumer version | Add { deployedOrReleased: true } to provider's consumerVersionSelectors |
| Verification results not published | Ensure publishVerificationResults: true, providerVersion: $GIT_COMMIT, providerVersionBranch: $GIT_BRANCH in provider CI |
| No webhook firing on pact changes | Create webhook with event contract_requiring_verification_published |
| PaymentService not recorded as deployed | Call contract-testing_record_deployment for the version currently in production |
For deeper investigation, read references/pact-broker-advanced.md and references/pact-cicd.md.
When generating or reviewing Pact tests:
Before writing tests — check existing provider states and pacticipant names to avoid duplication:
contract-testing_get_provider_states → pacticipant: "ProviderName"
contract-testing_list_pacticipants → confirm exact names as registered in the broker
Provider verification must-haves — every provider verification config needs all three selectors and both flags:
consumerVersionSelectors: [
{ mainBranch: true }, // latest from consumer's main branch
{ matchingBranch: true }, // feature branch pair-testing
{ deployedOrReleased: true }, // ALL versions currently deployed/released anywhere
],
enablePending: true, // new consumer interactions won't break provider CI
publishVerificationResults: process.env.CI === "true", // only publish in CI
providerVersion: process.env.GIT_COMMIT,
providerVersionBranch: process.env.GIT_BRANCH,
Missing deployedOrReleased: true is the single most common reason can-i-deploy fails — the provider never verifies the version that's actually deployed in production.
Optional fields — Pact has no optional() or nullable() matcher. Use two separate interactions differentiated by provider states: one where the field is present, one where it's absent/null.
Message pacts (Kafka, SQS, SNS) — hexagonal architecture Split the code into two layers before writing tests:
@KafkaListener, ConsumerRecord wiring. Pact does NOT test this.The consumer test calls the Port directly with a Pact-generated message. No Kafka broker needed. See references/pact-messages.md for full JS and Java examples.
Provider verification fails → use contract-testing_review_pact_tests with error_messages populated from the failing test output. Use contract-testing_get_provider_states to check whether the required state exists on the provider.
"Which version is deployed in staging?" → contract-testing_get_currently_deployed_versions with the staging environment UUID.
"What services depend on this provider?" → contract-testing_get_pacticipant_network to visualise the blast radius.
Investigating a specific consumer-provider failure in BDCT → start with contract-testing_get_bdct_cross_contract_verification_results, then drill into contract-testing_get_bdct_consumer_contract_verification_results_by_consumer_version for the failing pair. See references/bdct.md.
When setting up a new service or onboarding a team:
contract-testing_create_pacticipant — register the servicecontract-testing_patch_pacticipant — set mainBranch (e.g. main) so branch-based can-i-deploy works correctlycontract-testing_list_environments — discover existing environment UUIDscontract-testing_create_environment — add new environments if neededFor auditing and observability:
contract-testing_get_metrics — workspace-wide usage statisticscontract-testing_get_team_metrics — per-team breakdown (PactFlow Cloud only)contract-testing_list_integrations — all consumer-provider pairings| Scenario | Tool |
|---|---|
| Traditional service deployed to an environment | contract-testing_record_deployment |
| Mobile app / library where multiple versions coexist | contract-testing_record_release |
| Check what's live in an environment | contract-testing_get_currently_deployed_versions |
| Check what's supported (mobile/library) | contract-testing_get_currently_supported_versions |
record-deployment replaces the previous deployed version in that environment. record-release does not — both versions remain "supported" simultaneously.
All tools in this skill use the contract-testing_ prefix. When the user is connected to PactFlow Cloud, all tools are available. When connected to an open-source Pact Broker, only non-Cloud tools are available (AI generation, BDCT, and team metrics require Cloud).