Skip to content

Publishing

Publishing puts your team on CliqHub so anyone can install it with cliq team install hub://.... You can publish from the CLI or from the CliqHub Builder in your browser.

If you don’t need a public registry, you can also share teams via git.


You must authenticate before publishing. Browsing, searching, and installing are anonymous — no account required.

Terminal window
cliq hub login

Prompts for username and password. On success, saves a JWT token to ~/.cliqrc/settings.json.

For CI or headless environments, generate a named API token:

Terminal window
cliq hub token "my-ci-token"
API token created: my-ci-token
cliq_tok_a1b2c3d4e5f6...
Save this token — it will not be shown again.
Store via: echo '<token>' | cliq settings hub.token --stdin --global

cliq hub login automatically saves the auth token to ~/.cliqrc/settings.json. For CI/CD environments, store a named API token instead:

Terminal window
echo $CLIQHUB_TOKEN | cliq settings hub.token --stdin --global
FieldDefaultDescription
registry_urlhttps://cliqhub.ioRegistry base URL. Override for self-hosted or local development
token""Auth JWT. Managed automatically by cliq hub login. For CI, use cliq hub token

Before publishing:

  1. Authenticate — run cliq hub login (or use an API token)
  2. Own the scope — you can only publish to scopes you own (e.g. @yourname/)
  3. Version your teamteam.yml must have a valid version field
  4. Pass validation — the CLI runs strict checks before uploading

The standard workflow: edit your team locally, bump the version, publish.

Edit roles, adjust the workflow, add phases — whatever the update requires.

From inside the team’s source directory:

Terminal window
cd ~/src/cliq-teams/@yourname/my-pipeline
cliq team version patch

See Versioning for details on bump types and the opt-in --git-tag flag.

Publish takes a local filesystem path to the team directory:

Terminal window
cliq team publish ./@yourname/my-pipeline

Add a changelog message with -m:

Terminal window
cliq team publish ./@yourname/my-pipeline -m "Added security review phase"

Control visibility with --access:

Terminal window
cliq team publish ./@yourname/my-pipeline --access public # default
cliq team publish ./@yourname/my-pipeline --access private
cliq team publish ./@yourname/my-pipeline --access draft
AccessBehavior
publicListed on CliqHub and installable by anyone
privateInstallable only by scope members. Not listed publicly
draftOnly visible to you. Review before making public

The CLI checks before uploading:

  • name is fully qualified (@scope/name)
  • version is valid semver
  • description is present
  • Every phase has a corresponding role file in roles/
  • Agent definitions are valid (bundled agents have entry files, phase agent references resolve)
  • @local teams cannot be published

Preview exactly what would be published without uploading anything:

Terminal window
cliq team publish ./@yourname/my-pipeline --dry-run

The dry run performs all local validation and then checks the registry for scope access and version conflicts. Output includes a full inventory of the package:

Dry run — nothing will be published.
Package: @yourname/my-pipeline
Version: 1.3.0
Access: public
Registry: https://cliqhub.io
Files:
team.yml 1.2 KB
roles/greeter.md 834 B
roles/reviewer.md 612 B
README.md 2.1 KB
Workflow:
1. greet standard
2. review hug
3. deliver push
Agents:
greeter (agents/greeter.js)
Tags: devops, ci, testing
Total size: 4.7 KB (zipped)
✓ Package is valid and ready to publish.

If the version already exists on the registry:

✗ Version 1.3.0 already exists. Bump the version in team.yml first.

If the registry is unreachable (e.g. offline), local validation still runs:

⚠ Could not reach registry to verify version (offline?)
✓ Local validation passed. Publish when connected.

Combine with other flags — --dry-run works alongside --access and -m:

Terminal window
cliq team publish ./@yourname/my-pipeline --dry-run --access private -m "Security audit"
Validating team...
✓ Team valid
Publishing @yourname/my-pipeline v1.3.0...
✓ Published @yourname/my-pipeline v1.3.0
Changelog: Added security review phase
View: https://cliqhub.io/@yourname/my-pipeline

The CliqHub web Builder includes a publish dialog for teams built or edited in the browser.

  1. Open the Builder at cliqhub.io/builder
  2. Build or edit your team (name, phases, roles)
  3. Click Publish in the toolbar (visible when the team has a name and at least one phase)

The publish dialog shows:

  • Team name with scope (e.g. @yourname/my-pipeline v1.2.0)
  • Version — for first publishes, locked at v1.0.0 (initial release). For updates, a bump type selector (patch / minor / major) with a live preview of the next version
  • Changelog — optional text field for release notes

Click Publish to upload. On success, the dialog shows the new version number and the team’s CliqHub URL.

Your account page on cliqhub.io lists all your published teams. Each team has a Publish Update button that:

  1. Loads the latest published version into the Builder
  2. Opens the publish dialog pre-filled with the current version

This is the fastest path for quick updates — edit the roles, pick a bump type, add a changelog, publish.


Versions are immutable. If you try to publish a version that already exists:

CLI:

✗ Version 1.2.0 already exists on CliqHub.
Bump the version first: cliq team version patch

Builder: The publish dialog fetches the current version from the registry on open, so the bump selector always computes the correct next version. Conflicts only occur if two people publish simultaneously — in that case, close and reopen the dialog to pick up the new latest version.


The first time you publish a team, the version is 1.0.0. In the CLI, run cliq team version patch to add the version field before publishing. In the Builder, first publishes are automatically set to v1.0.0.

Terminal window
# New team, no version yet
cd ~/src/cliq-teams/@yourname/new-pipeline
cliq team version patch # → 1.0.0
cliq team publish . # → Published v1.0.0

For automated publishing, use an API token instead of interactive login:

Terminal window
# Generate a token (one-time)
cliq hub login
cliq hub token ci-publish
# → cliq_tok_a1b2c3...
# In CI, set the token in settings
# Then publish
cliq team publish ./@yourname/my-pipeline -m "Automated release"

Store the token via echo $TOKEN | cliq settings hub.token --stdin --global.


Teams are just directories. If you don’t need a public registry, you can share teams via git.

Create a repo with your scope directory and start creating teams directly into it:

Terminal window
mkdir -p ~/yourname-teams/@yourname

Now you can create teams directly in your scope:

Terminal window
cliq team new @yourname/blog-pipeline
cliq team copy @cliq/hello-world ./my-hello @yourname
cliq builder generate -m "Content review pipeline" --name @yourname/content-review

When you’re ready to share, push:

Terminal window
cd ~/yourname-teams
git init && git add . && git commit -m "Add blog-pipeline team"
git remote add origin [email protected]:yourname/cliq-teams.git
git push -u origin main

They clone the repo and install from the local path:

Terminal window
git clone [email protected]:yourname/cliq-teams.git ~/yourname-teams
cliq team install ~/yourname-teams/@yourname/blog-pipeline

Now cliq team list shows the team, and cliq assemble @yourname/blog-pipeline works from any project. Pull to get updates, then re-run cliq team install to pick up changes.

No special packaging — teams are just directories with a team.yml and roles/.


CommandDescription
cliq hub login [registry_url]Authenticate
cliq hub logoutClear credentials from settings
cliq hub token <name> [registry_url]Generate API token
cliq team publish <path> [registry]Publish a team
cliq team publish <path> -m <msg>Publish with changelog
cliq team publish <path> --access <level>Set visibility (public, private, draft)
cliq team publish <path> --dry-runValidate and preview without uploading
cliq team version <bump> [ref]Bump version before publishing. See Versioning