A collection of agent skills created and maintained by synit.io. Each skill packages instructions, scripts, and reference material that let an AI agent operate a specific tool or service safely and predictably.
synit.io is a German consultancy for data engineering, analytics, and AI, working with mid-market companies in the DACH region under the principle of "Owned Intelligence": the AI is the tool, the data is the plan. Focus areas include data infrastructure, machine learning for forecasting and anomaly detection, language-model automation, and system integration.
The skills in this repository grew out of that work. They are published so that other teams can reuse them with their own agents and tenants.
Each top-level directory is one skill. A skill follows the open Agent Skills format:
<skill-name>/
SKILL.md # frontmatter (name, description) plus operating instructions
scripts/ # CLI tooling the agent runs
references/ # API notes, config templates, background material
tests/ # regression tests for the scripts
agents/ # optional harness metadata, e.g. openai.yaml for Codex
Skills cover different use cases, tools, and services. They are independent of each other; install only the ones you need.
| Skill | Description |
|---|---|
| docker-agent-builder | Create, edit, migrate, repair, review, and validate Docker Agent YAML. Includes current-schema validation, semantic and secret checks, source-cache corruption checks, runtime dry-run support, and ready-to-adapt templates. |
| m42sd-skill | Operate Matrix42 Enterprise Service Management through the m42Services API: ticket, journal, user, knowledge-base, and service-catalog workflows for helpdesk agents. Includes a stateless Python CLI, guided tenant setup, and safety rules for mutations such as closing or forwarding tickets. |
| nexthink-campaign-translator | Add languages to a Nexthink campaign export JSON. The agent translates question and choice text; a Python helper writes the translation overlays, verifies that question IDs, {{placeholders}}, and the HTML structure (tags, attributes, href values) match the source, updates multiLanguageInfo, and repairs INVALID overlays. Supported languages come from a configurable allowlist. |
Every skills-compatible agent scans one or more directories for
<skill-name>/SKILL.md. Installing a skill means placing (or symlinking) the
skill folder into such a directory. You can let the skills CLI do that for
you (next section) or do it by hand (the sections after). The manual steps
assume you cloned this repository first:
git clone https://github.com/synit-io/skills.git
cd skillsSymlinking keeps the installed skill in sync with git pull; copying gives you
an isolated snapshot. Both work. Skill scripts keep credentials and tenant
config outside the skill folder (for example ~/.config/m42sd/m42_config.json,
or the path in M42_CONFIG_PATH), so reinstalling or updating a skill does not
touch them.
After installing, open the skill's SKILL.md and follow its setup section
(credentials, tenant discovery, safety rules) before the first real task.
The fastest route on any supported harness is the open-source
skills CLI behind
skills.sh. It detects the agents installed
on your machine and copies the skill into the right directory for each.
Install every skill in this repository into the current project:
npx skills add synit-io/skillsInstall one skill, for your user account, for specific agents:
npx skills add synit-io/skills --skill m42sd-skill -g -a claude-code -a codex -a opencodeList what the CLI would install without installing:
npx skills add synit-io/skills --listThe CLI copies files rather than symlinking. Re-run the same command to pull a
newer version. A m42_config.json created by an older m42sd-skill version
lives inside the installed copy (scripts/m42_config.json) and is still read
from there; move it to ~/.config/m42sd/ before reinstalling so it is not
overwritten. The CLI sends anonymous install telemetry to skills.sh; set
DISABLE_TELEMETRY=1 to opt out.
| Harness | Project-level | User-level | Invoke |
|---|---|---|---|
| Claude Code | .claude/skills/ |
~/.claude/skills/ |
/skill-name or automatic |
| Codex (CLI, IDE) | .agents/skills/ |
~/.agents/skills/ |
$skill-name, list with /skills |
| OpenCode | .opencode/skills/ (also reads .claude/skills/, .agents/skills/) |
~/.config/opencode/skills/ (also reads ~/.claude/skills/, ~/.agents/skills/) |
skill tool, automatic |
| Gemini CLI | .gemini/skills/ or .agents/skills/ |
~/.gemini/skills/ or ~/.agents/skills/ |
/skills commands, automatic |
| Cursor | .cursor/skills/ or .agents/skills/ (also reads .claude/skills/) |
~/.cursor/skills/ or ~/.agents/skills/ (also reads ~/.claude/skills/) |
/ in Agent chat, automatic |
.agents/skills/ is the cross-tool convention. One install into
~/.agents/skills/ is picked up by Codex, OpenCode, Gemini CLI, and Cursor.
Claude Code uses ~/.claude/skills/, which OpenCode and Cursor also read.
Personal install, available in every project:
mkdir -p ~/.claude/skills
ln -s "$(pwd)/m42sd-skill" ~/.claude/skills/m42sd-skillProject install, checked into a repository for the whole team:
mkdir -p .claude/skills
cp -r /path/to/skills/m42sd-skill .claude/skills/Claude Code picks up changes to SKILL.md within the running session. Invoke
with /m42sd-skill, or let Claude select the skill from its description.
Codex reads .agents/skills/ in the working directory, its parents up to the
repository root, and ~/.agents/skills/ for personal skills:
mkdir -p ~/.agents/skills
ln -s "$(pwd)/m42sd-skill" ~/.agents/skills/m42sd-skillMention a skill with $m42sd-skill, or run /skills to see what is loaded.
Restart Codex if a new skill does not show up. To disable a skill without
deleting it, add a [[skills.config]] entry in ~/.codex/config.toml.
OpenCode reads its own directories plus the Claude Code and .agents paths, so
an existing Claude Code or Codex install already works. For a dedicated install:
mkdir -p ~/.config/opencode/skills
ln -s "$(pwd)/m42sd-skill" ~/.config/opencode/skills/m42sd-skillProject-local skills go in .opencode/skills/. Skills load through the native
skill tool. Control access in opencode.json:
{
"permission": {
"skill": {
"*": "allow"
}
}
}Any tool that implements the Agent Skills format (Gemini CLI, Cursor, GitHub Copilot, Goose, OpenHands, and others listed at agentskills.io) follows the same pattern:
- Find the skill directory your harness scans. Check its documentation; most
accept
.agents/skills/in the project and~/.agents/skills/in your home directory. - Copy or symlink the skill folder there so that
<skills-dir>/<skill-name>/SKILL.mdexists. - Restart or reload the harness and confirm the skill is listed.
- Make sure the harness can run shell commands and that
python3is on the path. Check the selected skill'sSKILL.mdfor any additional Python packages (onlydocker-agent-builderneeds some).
If your harness has no skill support, paste the contents of SKILL.md into the
agent's system prompt or its AGENTS.md, keep the scripts/ and references/
folders reachable from the working directory, and give the agent shell access.
The instructions reference scripts as <skill-dir>/scripts/...; tell the agent
which directory <skill-dir> stands for.
cd /path/to/skills
git pullSymlinked installs update immediately. Copied installs need the copy step again.
Installs made with the skills CLI update by re-running the same
npx skills add command.
Skill scripts that need credentials store them in local config files with owner-only permissions, outside the skill folder and outside version control. Pass secrets through environment variables or interactive prompts, never as command-line arguments. Never commit tokens, tenant profiles, or discovery output, and never install a skill into a directory that is committed to a public repository together with its generated config. The same applies to customer data such as campaign exports and translation bundles: keep them out of the repository.
Issues and pull requests are welcome. Keep each skill self-contained, add or update its tests, and do not include tenant-specific values or secrets.
All skills in this repository are released under the MIT License.
Bundled upstream Docker material in docker-agent-builder/references/ retains
its original Apache License 2.0 text and notices
(THIRD_PARTY_NOTICES.md, docker-agent-LICENSE.txt).