Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"name": "genesys-cloud-architect",
"source": "./",
"description": "Create, test, and debug Genesys Cloud Architect flows",
"version": "1.0.8"
"version": "1.0.9"
}
]
}
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "genesys-cloud-architect",
"description": "Create, test, and debug Genesys Cloud Architect flows",
"version": "1.0.8",
"version": "1.0.9",
"author": {
"name": "Lucas Woodward",
"url": "https://makingchatbots.com/"
Expand Down
14 changes: 14 additions & 0 deletions .mcp.dev.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"mcpServers": {
"genesys-cloud-architect-mcp": {
"command": "node",
"args": ["${CLAUDE_PLUGIN_ROOT}/servers/genesys-cloud-architect-mcp.js"],
"env": {
"GENESYS_REGION": "${GENESYS_REGION}",
"GENESYS_CLIENT_ID": "${GENESYS_CLIENT_ID}",
"GENESYS_CLIENT_SECRET": "${GENESYS_CLIENT_SECRET}",
"DEPLOY_SCRIPT_PATH": "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-runner.js"
}
}
}
}
2 changes: 1 addition & 1 deletion .mcp.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"env": {
"GENESYS_REGION": "${user_config.genesys_region}",
"GENESYS_CLIENT_ID": "${user_config.genesys_client_id}",
"GENESYS_CLIENT_SECRET": "${user_config.genesys_client_secret}",
"GENESYS_CLIENT_SECRET": "${user_config.genesys_client_secret}",
"DEPLOY_SCRIPT_PATH": "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-runner.js"
}
}
Expand Down
118 changes: 104 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,121 @@
# Genesys Cloud Architect Claude Code Plugin
# Claude Code Plugin: Genesys Cloud Architect

Create, debug and test Genesys Cloud Architect Flows using Claude Code.
<p align="center">
<img src="docs/assets/logo.png" width="250">
</p>

**This is under heavy development. Feedback is welcome!**
Use Claude Code to create, test, diagnose and document your Genesys Cloud's Architect flows.

This plugin allows you to:

* [Create architect flows of any type](#create-architect-flows-of-any-type)
* [Run automated tests against Digital flows](#run-automated-tests-against-digital-flows)
* [Create and test flow expressions](#create-and-test-flow-expressions)
* [Inspect and fix issues in flows](#inspect-and-fix-issues-in-flows)
* [Document flows](#document-flows)
* _and more..._

## Getting started

Follow the [installation guide](#installation), then simply tell Claude Code what you want it to do.

Below are examples of each of its capabilities:

### Create architect flows of any type

Asking Claude Code to create a flow will have it create, publish and test a flow using the [Architect Scripting SDK](https://mypurecloud.github.io/purecloud-flow-scripting-api-sdk-javascript/).

Below is an example of a simple flow, but they can be much more complex:

> Create a Bank bot flow with two intents: "Check Account Balance" (collects an 8-digit AccountNumber slot) and "Find a Branch" (collects a 5-digit ZipCode slot).
>
> The bot:
> 1. Asks "What would you like to do?"
> 2. Detects the intent
> 3. Then asks for the relevant slot
> 4. Exit the bot flow after slot collection
>
> Include 6 utterances per intent with entity-annotated examples.
> Add intent confirmation prompts like "I think you want to [intent], is that correct?"
>
> Publish the flow, and test it frequently as you build it.

Resulting in a flow:

<img src="docs/assets/flow.png" width="500">

[Read more...](https://makingchatbots.com/i/200764669/create-your-flows-with-ai)

### Run automated tests against Digital flows

The plugin allows Claude Code to run tests against Digital bot flows. This is useful when
it's developing flows, or simply to test for edge-cases in existing flows:

> Inspect the 'Bank bot' flow and run tests against it to ensure it behaves as expected.

<img src="docs/assets/running-tests.png" width="500">

### Create and test flow expressions

> My Genesys Architect flow needs to extract the 'author' from the JSON retrieved from a participant attribute below:
>
> { "newsletter": {"makingchatbots": {"author": "Lucas Woodward "}}
>
> Create an expression that returns the value of 'author'. However, if the property (or any of the parent properties) do not exist then return an empty value.
>
> Create a Digital Bot flow to test your expression against different test cases.


<img src="docs/assets/expression-result.png" width="500">

[Read more...](https://makingchatbots.com/i/200764669/create-and-test-expressions)

### Inspect and fix issues in flows

TODO Add example

### Document flows

TODO Add example

## Installation

```
# Add the marketplace
/plugin marketplace add MakingChatbots/genesys-cloud-plugins
1. Open Claude Code
2. Type the following to add the marketplace and install the plugin:
1. Add the marketplace
```
/plugin marketplace add MakingChatbots/genesys-cloud-plugins
```

# Install the plugin
/plugin install genesys-cloud-architect@makingchatbots-genesys-cloud-plugins
```
2. Install the plugin
```
/plugin install genesys-cloud-architect@makingchatbots-genesys-cloud-plugins
```
3. When asked, provide the Credentials for an OAuth Client with the following permissions:
* `Architect > Flow > *`
* `Architect > Job > *`
* `Architect > UI > *`
* `Language Understanding > NLU Domain Version > View`
* `Textbots > *`
* `Architect > Dependency Tracking > View`

## Getting Started
## Who built this?

Once you've installed the plugin you can start working with Claude Code to create your Architect flows.
This is built by [Lucas Woodward](https://makingchatbots.com/about#§who-am-i).

Try some of the following examples:
I've been building this in public - engaging with the Genesys community with each milestone. If you'd like to keep up
to date with releases then [follow me on LinkedIn](https://www.linkedin.com/in/lucas-woodward-the-dev/).

> Create a Digital Chatbot that asks the customer for their name, then welcomes them by their name.
What else I have built:

* [Genesys Cloud MCP Server](https://github.com/MakingChatbots/genesys-cloud-mcp-server)
* [Genesys Cloud n8n community node](https://github.com/MakingChatbots/n8n-nodes-genesys-cloud)
* [Genesys Cloud Chatbot Tester](https://github.com/MakingChatbots/genesys-cloud-chatbot-tester)
* _many more on [my newsletter...](https://makingchatbots.com/)_

## Development

Docs to help understand how this works, or contribute:

* [docs/development.md](docs/development.md)
* [docs/architecture.md](docs/architecture.md)
* [docs/architectural-decisions.md](docs/architectural-decisions.md)
File renamed without changes.
Binary file added docs/assets/expression-result.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/flow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/running-tests.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 16 additions & 3 deletions docs/development.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,28 @@
Test the plugin locally in the Claude Code CLI:

```shell
CLAUDE_PLUGIN_ROOT=$(pwd) claude --plugin-dir .
CLAUDE_PLUGIN_ROOT=$(pwd) claude --plugin-dir . --mcp-config ./.mcp.dev.json --debug
```

Debug the plugin:
Notable options:
* `--mcp-config ./.mcp.dev.json` - loads the MCP using a environment vars, rather than User Config keys that aren't
supported when running the plugin locally
* `--debug` - writes out logs that can be inspected if there is a problem

## Run with 1Password CLI

During development if you don't want the .env to contain secrets then 1Password's CLI can be used to
expand a placeholder:

```shell
CLAUDE_PLUGIN_ROOT=$(pwd) claude --plugin-dir . --debug
CLAUDE_PLUGIN_ROOT=$(pwd) op run --env-file='./.env' --no-masking -- claude --plugin-dir . --debug --mcp-config ./.mcp.dev.json
```

Notable options:
* `--no-masking` - By default `op run` pipes the child's stdio to redact secrets, which makes Claude think it is being
scripted. This option prevents the redaction piping.


To aid in the development of the MCP server install the MCP Server Skill:

```
Expand Down
5 changes: 2 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "genesys-cloud-architect",
"version": "1.0.8",
"version": "1.0.9",
"private": true,
"packageManager": "pnpm@11.1.3+sha512.c85357fe17ca12dd23dd7071822666dfd7e3cb76fe214e3370b5ea2fb34f2a231185509b63e717f3cd0acb38dd3f8d82bcd5e8172400ae678b70ea4fbed0896d",
"author": {
Expand All @@ -18,14 +18,13 @@
"scripts": {
"build": "pnpm run build:mcp-server && pnpm run build:deploy-runner",
"build:mcp-server": "esbuild src/mcp-server/index.ts --bundle --platform=node --target=node22 --format=cjs --minify --tree-shaking=true --define:process.env.npm_package_version=\\\"$npm_package_version\\\" --outfile=servers/genesys-cloud-architect-mcp.js",
"build:deploy-runner": "esbuild src/deploy-runner/index.ts --bundle --platform=node --target=node22 --format=cjs --outfile=bin/deploy-runner.js",
"build:deploy-runner": "esbuild src/deploy-runner/index.ts --bundle --platform=node --target=node22 --format=cjs --outfile=scripts/deploy-runner.js",
"typecheck": "tsc --noEmit",
"lint": "biome check",
"lint:fix": "biome check --write",
"format": "biome format --write",
"inspect-mcp": "pnpm dlx @modelcontextprotocol/inspector node servers/genesys-cloud-architect-mcp.js",
"mcp-server": "node --experimental-strip-types src/mcp-server/index.ts",
"mcp-server-with-op": "op run --env-file='./.env' -- node --experimental-strip-types src/mcp-server/index.ts",
"prepare": "husky"
},
"dependencies": {
Expand Down
2 changes: 1 addition & 1 deletion servers/genesys-cloud-architect-mcp.js

Large diffs are not rendered by default.

Loading