@v0 Action tag. The Action verifies its
pinned installer, then runs the current CLI from Atlan’s signed release channel.
Its cli-version output records the installed CLI build for troubleshooting.
Before you start
You need:- a GitHub repository with Actions enabled
- a protected publish branch, normally
main - an Atlan workspace ID
- a dedicated Atlan API key that can publish to that workspace
- one or more repository directories containing skill packages
SKILL.md file:
Keep configuration responsibilities separate
1. Find the destination workspace
Sign in with the identity you will use to configure SkillSync, then list the workspaces it can see:workspace_... ID. Verify the selected
workspace and your effective role before adding it to the repository:
publishConfig.workspaces list in
.atlan/package.json.
These commands are read-only. The API key used by GitHub must independently
have permission to publish to every selected workspace.
In GitHub, protect the same branch named in the workflow. Require reviewed pull
requests and prevent direct pushes. Protect changes to
.github/workflows/** and .atlan/package.json through the repository’s normal
code-ownership process.
2. Declare what to publish
Create.atlan/package.json at the repository root. This manifest lists the
destination workspace and every repository-relative skill root:
Every direct child of a configured root is a skill package and must contain a
case-sensitive
SKILL.md file. Skill names must be unique across all roots.
For example:
.atlan/package.json is repository configuration. It must not contain a
credential or a branch setting. Keep skills.paths and the GitHub workflow path
filters aligned. When a repository uses different skill roots, update the path
filters to match those roots and retain .atlan/package.json as a trigger.
3. Add the publish credential
In GitHub, open Settings → Secrets and variables → Actions and create a repository secret:
To get the key in Agent Registry:
- Open Settings, then select API keys.
- Open Workspace-scoped API keys and create a new API key, or select an existing key to use.
- Grant the key access to every workspace listed in
.atlan/package.json. When creating a key, select the required workspace; for an existing key, add the required workspace access before using it. - Copy the API key value and save it as the
ATLANAI_TOKENGitHub secret.
.atlan/package.json, workflow inputs, logs, or
screenshots. Use one credential per repository rather than a personal key or a
key shared by unrelated repositories.
A GitHub Environment is optional. The standard setup uses the repository secret
without an Environment.
To add an Environment approval gate:
- Create an Environment such as
atlan-publishin the repository settings. - Store
ATLANAI_TOKENas an Environment secret instead of a repository secret. - Configure its required reviewers and allowed deployment branches.
- Bind the publish job to it:
environment setting does not
gate the workflow or expose its Environment secret to the job.
4. Publish from the GitHub-controlled branch
Create.github/workflows/atlan-skill-sync.yml:
fetch-depth: 0 is required. The CLI uses complete history for source
provenance, contributor details, rename tracking, and change detection.
Replace main in on.push.branches with the exact branch that your GitHub
branch protection protects. This workflow setting, not the manifest, controls
which pushes can publish. Use @v0 to receive compatible Action updates. Do
not use @main in a consumer workflow.
The Action downloads the installer only from its fixed Atlan endpoint, rejects
redirects, and gives the installer no publishing credential. The CLI receives
ATLANAI_TOKEN only after installation completes.
5. Add pull request preflight
Keep preflight separate from publishing. It must not check out or execute pull request code, and it must not receiveATLANAI_TOKEN.
Create .github/workflows/atlan-skill-preflight.yml:
pull_request_target so GitHub loads the trusted workflow
from the base branch. It does not need a checkout step. Do not add the publish
credential or a step that executes pull request files.
The first pull request that introduces this workflow cannot test its new
preflight definition. Merge the workflow, then open a second pull request that
adds or changes a skill.
6. Review the preflight report
When a pull request opens or receives a new commit, preflight creates or updates one comment. The report shows:- eligible skill counts split into added, updated, and removed
- up to five affected
SKILL.mdpaths and their line changes - the expected Registry action after merge
- front matter, name, description, title, section, and word-count checks
- advisory quality and safety signals
- the current base configuration and any proposed configuration change
SKILL.md when that definition still exists in
the pull request head. Review the complete pull request diff before merging.
Preflight is read-only. It does not publish, run the Registry security scan,
check out pull request code, or receive an Atlan credential. Proposed manifest
changes appear in the report but do not control its behavior until they merge.
The Action inspects at most 200 changed files and reads at most five eligible
skill bodies per run. It never copies a skill body into the comment.
With prune: "false" in the publish workflow, a removed count means the skill
was removed from the configured Git source. It does not archive the skill in
Atlan.
7. Merge and verify publishing
After review, merge the pull request into the configured publish branch. Open the Sync skills to Atlan workflow run and confirm that it:- installs the verified current CLI release
- validates
.atlan/package.jsonand discovers every declared skill - uses the push event’s prior commit to select changed skills, falling back to the complete declared set when that commit cannot be resolved
- registers or reuses the repository artifact once in the first configured workspace when the checkout has a usable remote, then passes its repository ID to every skill publish
- creates a skill or appends a version for changed content and skips unchanged packages
- waits up to 60 seconds for each Registry security scan
- fails on publishing errors or a blocked scan; an unsettled scan prints follow-up commands and leaves the skill unavailable without failing the run
Run the same publish locally
.atlan/package.json is required for skill publish. For one local skill
without a repository manifest, use Publish skills with the CLI.
The GitHub workflow owns branch policy. Do not add a branch setting to the
manifest or expect local skill publish to infer one.
Troubleshooting
Preflight did not run from the workflow in my pull request
pull_request_target uses the workflow from the base branch. Merge the trusted
workflow first, then open or update a skill pull request.
Repository checkout is shallow
Keepfetch-depth: 0 on actions/checkout in the publish workflow.
Publishing cannot find the workspace
Confirm the workspace ID and check that the identity behindATLANAI_TOKEN can
publish there. The Registry returns a generic not-found response when a resource
is absent or not visible to the caller.