Sync skills from GitHub
Use GitHub Actions to publish skills whenever their source changes onmain.
The repository remains the source of truth, while Atlan records the repository,
commit, and path for each published version. The workflow below is a copyable
CI script. It does not depend on a published Atlan GitHub Action.
Before you start
You need a GitHub repository with Actions enabled, an Atlan workspace ID, and a dedicated Atlan API key whose identity can publish to that workspace. Each skill must be a direct child of one repository directory and include a case-sensitiveSKILL.md file:
1. Declare what to publish
Create.atlan/package.json at the repository root:
The manifest rejects unknown fields. In particular, use
directory and
skills; publishConfig.paths is not supported.
2. Add the API key to GitHub
In the GitHub repository, open Settings → Secrets and variables → Actions and create this repository secret:
Never add the API key to
.atlan/package.json, the workflow file, logs, or
screenshots. The identity behind the key must be a member of every destination
workspace declared in the manifest.
3. Add the workflow
Create.github/workflows/atlan-skill-sync.yml:
skills/** when the manifest uses another directory. Keep
fetch-depth: 0: the CLI needs complete history to record the first and most
recent source commits accurately.
The script downloads the installer before it runs it. Review any change to that
installer origin as a CI dependency change; do not replace it with a
curl | sh pipeline. The API key remains only in the GitHub secret.
What the workflow does
- Validates
.atlan/package.jsonand the allowed publish branch. - Finds skill folders under
publishConfig.directory. - Publishes skills changed since the push’s base commit. A first push, an unresolvable base commit, or an all-zero base publishes every declared skill.
- Creates a skill for a new repository path or appends a version when the Registry already has that repository and path.
- Skips unchanged content, waits for the Registry security scan, and fails the job when the scan blocks a skill.
Verify the first sync
Commit the manifest and workflow tomain. Confirm that the Sync skills to
Atlan workflow completes, the skills appear in the intended workspace, and a
skill profile shows its repository, commit, and path.
If a scan remains pending after 60 seconds, the CLI prints follow-up skill get
and skill runs commands. Use those commands to confirm the final scan state
before treating a skill as available.
Optional workflow controls
Add one of these arguments to theargs array only when the override is
reviewed for that run:
--prune archives artifacts, so enable it only after confirming the expected
removed skill directories. It preserves versions and traces.
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.
Troubleshooting
unknown field "paths" — replace publishConfig.paths with the supported
directory and skills fields.
This checkout is shallow — set fetch-depth: 0 on actions/checkout.
No such resource, or it is not visible to you — confirm the workspace ID
and that the identity behind ATLANAI_TOKEN can publish there.
Publishing is restricted to main — merge the change to the manifest’s
configured branch.