CI/CD Pipeline Integration
This page describes how teams typically wirefastskill into automation: detect changes, package ZIPs, and optionally publish to a registry. Publishing requires a FastSkill build compiled with the registry-publish feature.
What you can automate
- Automatic Change Detection: Detect which skills have changed using git diff or file hashing
- Version Bumping: Automatically increment semantic versions (major, minor, patch)
- Artifact Creation: Package skills into ZIP files with metadata and checksums
- Optional Registry Publishing: Send packaged artifacts to a registry API or local handoff directory
- Registry Index Management: Maintain a registry index for skill distribution in operator builds
Change Detection Strategies
Git-based Detection
Use git diff to detect changed skill directories. Common in hosted git runners:- Fast and efficient
- Works well in CI/CD environments
- Can compare any two git references (commits, tags, branches)
- GitHub Actions workflows
- GitLab CI pipelines
- Any git-based CI/CD system
Hash-based Detection
Use file hashing to detect changes when you prefer not to rely on git metadata:- Works without git repository
- Detects any file changes
- Maintains build cache for efficiency
- Sandboxes without full git history
- Incremental packaging on a workstation
Version Bumping Strategies
Explicit Bump Type
Specify the bump type explicitly:Auto-detect Bump Type
Let FastSkill determine the bump type (currently defaults to patch):Complete Workflow Examples
Local packaging loop
Example: hosted runner (outline)
- Check out your repository with enough history for
fastskill package --git-diff <from> <to>. - Install the
fastskillbinary using the same method you use on laptops. Use an operator build withregistry-publishif the job publishes artifacts. - Restore secrets for registries (
FASTSKILL_API_URL, tokens, cloud credentials) as environment variables. - Run
fastskill package …thenfastskill publish …with the flags from package and publish.
Other runners
GitLab CI, Jenkins, Buildkite, and others follow the same outline: putfastskill on PATH, check out sources, run package, then run publish only in jobs that use a registry-publish build. Copy the CLI arguments from fastskill package --help and fastskill publish --help rather than relying on historical workflow snippets.
Configuration Best Practices
Environment Variables
Store sensitive credentials as environment variables or secrets:Configuration Files
Use.fastskill/publish.toml for non-sensitive configuration:
Build Cache
The build cache (.fastskill/build-cache.json) can be persisted between pipeline runs if you want faster packaging. Treat it as a machine-local artifact: refresh or delete it when packaging results look wrong.
Troubleshooting
No Skills Detected
If no skills are detected for packaging:- Check that skills directory exists and contains
SKILL.mdfiles - Verify git diff is working:
git diff HEAD~1 HEAD --name-only - Check build cache for stale entries
- Use
--forceto package all skills regardless of changes
Version Bumping Issues
If version bumping fails:- Ensure
skill-project.tomlexists or can be created - Check that version format is valid semver (e.g., “1.2.3”)
- Verify write permissions for
skill-project.toml
Blob Storage Upload Failures
If uploads fail:- Verify credentials are correct
- Check network connectivity to storage endpoint
- Ensure bucket/container exists and is accessible
- Verify IAM permissions for S3 buckets
Registry Index Issues
If registry index operations fail:- Ensure git repository is accessible
- Check git credentials and permissions
- Verify registry path exists and is writable
- Ensure blob base URL is correct
See Also
- Package Command
- Publish Command - optional
registry-publishbuilds only - Blob Storage Guide