- 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, sovalidate 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:
- Single project
- Multi-environment
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.
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
Validation fails in CI but passes locally
Validation fails in CI but passes locally
- Check YAML indentation, which must be 2 spaces rather than tabs
- Partial files start with
-, notactions: - Every
$refmatches 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
Push fails with an authentication error
Push fails with an authentication error
- The secret name in the workflow matches the one in repository settings
- The API key carries the
connectors:writescope - The key belongs to the project you intended to publish to, not another environment
Workflow does not trigger
Workflow does not trigger
- The file sits in
.github/workflows/ - Branch names in
on.push.branchesmatch your actual branches - The
pathsfilter covers the files you changed. Editing only a workflow or README will not matchconnectors/**
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.