SkillEx Workflow Guide
View SourceThis document walks through the end-to-end process for keeping Claude skills organised across all Elixir repos using SkillEx. Treat it as the playbook for onboarding new repositories and for the day-to-day rituals that keep the aggregated pack healthy.
1. Prerequisites
- Elixir ≥ 1.14 (matching whichever version is used in the repos you are aggregating).
- Each source repository exposes its skill under
.claude/skills/<skill-name>/. - A shared validator/package script is available (e.g.
scripts/package_skill.py) that enforces the SKILL.md requirements. - SkillEx cloned locally or available in CI.
Optional but recommended:
- Git access to all source repositories.
- CI pipeline with permission to publish artifacts (see CI Playbook).
2. Onboard a Repository
Create or verify the skill directory
Inside the source repo:.claude/ skills/ <repo-skill>/ SKILL.md references/ scripts/Run the repo’s validator to confirm the skill passes on its own.
Add the repo to SkillEx manifest
Openmanifest.jsonand append an entry underrepositories:{ "name": "supertester", "path": "../supertester", "skills_dir": ".claude/skills" }Paths may be relative to the SkillEx project root or absolute. Commit the change.
(Optional) Stage additional metadata
If you want the manifest to record extra context (branch, git URL), note it for later. The manifest schema can evolve without breaking existing tooling—capture TODOs in issues or docs.
3. Run the Sync
Dry Run
Always start with a dry run to discover what SkillEx will attempt.
elixir scripts/sync_skills.exs \
--manifest manifest.json \
--target skills \
--package-script ../scripts/package_skill.py \
--dry-run
The script prints a JSON payload shaped like:
{
"status": "ok",
"summary": {
"planned": 2,
"copied": 0,
"validated": 0,
"errors": [],
"timestamp": "2025-10-08T12:00:00Z"
},
"target": "/path/to/skill_ex/skills"
}Review this before committing to a real sync. If status is "error" or errors is non-empty, address those issues first.
Real Run
When ready:
elixir scripts/sync_skills.exs \
--manifest manifest.json \
--target skills \
--package-script ../scripts/package_skill.py
The script will:
- Copy each skill into
skills/<repo-name>/<skill-name>/. - Validate the copied skill using the provided script.
- Update
manifest.jsonwith fresh timestamps and checksums. - Emit a zip at
dist/skills-pack-<date>.zip.
Carry out a quick sanity check:
- Confirm the copied SKILL.md matches the source.
- Open
manifest.jsonand ensure checksums changed when expected. - Inspect the output zip with
unzip -l dist/skills-pack-*.zip.
4. Typical Daily Loop
- Pull latest SkillEx.
- Update manifest or skill repos as needed.
- Run
mix testto ensure the core logic still passes. - Execute the sync script (dry-run first).
- Commit the updated manifest and any new docs or scripts.
- Push and let CI publish the new
skills-packartifact.
5. Troubleshooting
| Symptom | Likely Cause | Suggested Fix |
|---|---|---|
missing_repo error | path in manifest is wrong or repo not checked out | Check out the repo or adjust the path. |
missing_skills_dir error | Repo lacks .claude/skills | Ensure the repo exports a skill or disable the entry. |
| Validation failures | Validator exited non-zero | Run the validator manually inside the repo to diagnose. |
| Zip archive empty | Repos copied but packaging ran before files existed | Make sure validator doesn’t delete files; rerun sync. |
| Manifest not updating | Dry-run flag still enabled | Remove --dry-run for actual syncs. |
If issues persist, run the CLI with --clock to freeze timestamps and re-run tests (mix test) to reproduce failures locally.
6. Extending the System
- Repo-specific validators: Accept a map of validator commands keyed by repo name.
- Incremental sync: Skip repositories whose checksums are unchanged.
- Git metadata: Record commit SHA or tags in the manifest skill entries.
- Notifications: Hook into chat/Slack when errors occur, using the JSON CLI output.
Capture decisions in new docs or issues so the workflow remains discoverable.
Happy aggregating! If you discover improvements, update this document so the next pass is even smoother.