Skip to main content
Publishing from a Git pipeline instead of your own machine means every change is validated on the pull request, and merging is what pushes the connector to a project. It also gives you one API key per environment rather than one on each developer’s laptop.
CI/CD workflow: Edit YAML → Validate → Push → GitHub Actions → StackOne Projects (dev/staging/prod)
The pipeline is yours to shape:
  • Single project: push to one project from any branch
  • Multi-environment: route branches to separate projects, such as develop to dev and main to production
  • Custom: your own branch strategy and approval gates

Repository structure

Organize the repository however suits your team. What matters is that the connector directories keep the layout described in File Structure, so validate and push can be pointed at a single parent directory:

Add your API key as a secret

In the repository, go to Settings → Secrets and variables → Actions and add the API key for the project you’re publishing to: The key needs the connectors:write scope to push. See API Keys for generating one.

Create the workflow file

Create .github/workflows/deploy.yml. Both examples validate on pull requests and publish only on a push to a release branch:
stackone agent sync --check compares the .claude/skills/ and CLAUDE.md guide committed in the repository against the ones bundled with the installed CLI, and exits non-zero if they differ. It needs no credentials.
Because the workflow installs the latest CLI, a new CLI release that ships updated skills will fail this step until someone runs stackone agent sync and commits the result. Pin the CLI version in the workflow if you’d rather choose when that happens.

Test after deploying

A published connector needs a linked account before you can call anything against it:
1

Enable the connector

Turn your custom connector on in the project’s connector profiles, and enable the actions you want exposed.

Managing Connectors

Connector profiles, authentication, and scoping.
2

Link an account

Create a linked account through the Hub or the API.
3

Run it

Select the account in the Playground and try the actions in natural language, or run one directly:
The profile’s API key needs the credentials:read scope to use a linked account’s stored credentials.
4

Iterate

Push updates as you refine the connector. Existing linked accounts are unaffected until you move them, which is covered in Connector Versioning.

Common errors

  • Check YAML indentation, which must be 2 spaces rather than tabs
  • Partial files start with -, not actions:
  • Every $ref matches an actual file name, which matters on case-sensitive CI runners even when it works on macOS
  • Run stackone validate connectors/ locally against the same parent directory the workflow uses
  • The secret name in the workflow matches the one in repository settings
  • The API key carries the connectors:write scope
  • The key belongs to the project you intended to publish to, not another environment
  • The file sits in .github/workflows/
  • Branch names in on.push.branches match your actual branches
  • The paths filter covers the files you changed. Editing only a workflow or README will not match connectors/**

Next steps

Build Workflow

The build and debug loop that comes before publishing.

Connector Versioning

Release new versions without breaking existing linked accounts.

StackOne CLI

Full reference for validate, run, and push.