See Cinch inspect local inventory and wire skills across harnesses in milliseconds.
The AI coding assistant ecosystem is deeply fragmented. Every developer and team uses different tools:
- Claude Code stores skills in
.claude/skills/<n>/SKILL.md - Cursor & Codex standardize on
.agents/skills/<n>/SKILL.md - GitHub Copilot expects
.github/instructions/<n>.instructions.mdwith YAMLapplyTo - Gemini CLI requires commands in
.gemini/commands/<n>.tomlwith rawpromptblocks - Windsurf / Devin parses
.devin/rules/<n>.mdwith strict character limits - Cline reads
.clinerules/<n>.md - Aider ignores unconfigured files and requires entries appended to
.aider.conf.yml
Whenever you switch harnesses, try a new AI tool, or share custom workflows with your team, you're forced to manually rewrite prompt files, reformat frontmatter, and hunt down obscure config paths.
Cinch is the universal translation bridge. It scans your existing local skills and agents, translates them through native dialect adapters, and attaches them directly into any project workspace. No proprietary marketplaces, no redundant skill librariesβjust one CLI to bring your favorite skills everywhere.
Run Cinch instantly with zero installation using Astral uvx:
# Interactive wizard: discover skills and pick target harnesses
uvx cinch-initOr instantly wire your skills into multiple harnesses in a single non-interactive command:
# Translate Claude skills into Cursor, GitHub Copilot, and Gemini CLI simultaneously
uvx cinch-init --from-harness claude --harness cursor,copilot,gemini --skills humanizer --yesYou can also install Cinch globally:
# Using pipx or pip
pipx install cinch-init
# or
pip install cinch-initAuthor your workflow once in standard Markdown. Cinch translates it into each harness's native format on the fly.
---
name: humanizer
description: Convert robotic AI prose into punchy engineering writing
paths:
- "**/*.md"
---
# Humanizer Guidelines
- Cut throat-clearing openers ("Certainly! Here is...").
- Use active voice and concrete verbs.Cursor & Codex (.agents/skills/humanizer/SKILL.md)
---
name: "humanizer"
description: "Convert robotic AI prose into punchy engineering writing"
paths:
- "**/*.md"
---
# Humanizer Guidelines
- Cut throat-clearing openers ("Certainly! Here is...").
- Use active voice and concrete verbs.GitHub Copilot (.github/instructions/humanizer.instructions.md)
---
applyTo:
- "**/*.md"
description: "Convert robotic AI prose into punchy engineering writing"
---
# Humanizer Guidelines
- Cut throat-clearing openers ("Certainly! Here is...").
- Use active voice and concrete verbs.Gemini CLI (.gemini/commands/humanizer.toml)
description = "Convert robotic AI prose into punchy engineering writing"
prompt = """
# Humanizer Guidelines
- Cut throat-clearing openers ("Certainly! Here is...").
- Use active voice and concrete verbs.
"""Windsurf / Devin (.devin/rules/humanizer.md)
---
trigger: "manual"
description: "Convert robotic AI prose into punchy engineering writing"
globs:
- "**/*.md"
---
# Humanizer Guidelines
- Cut throat-clearing openers ("Certainly! Here is...").
- Use active voice and concrete verbs.Aider (.aider/humanizer.md + .aider.conf.yml merge)
File .aider/humanizer.md:
# humanizer
> Convert robotic AI prose into punchy engineering writing
# Humanizer Guidelines
- Cut throat-clearing openers ("Certainly! Here is...").
- Use active voice and concrete verbs.Merged safely into .aider.conf.yml:
read:
- ".aider/humanizer.md"Every mapping is backed by vendor documentation and verified through automated conformance tests.
| Harness | Skill Destination | Frontmatter Schema | Notes / Standards |
|---|---|---|---|
| Claude Code | .claude/skills/<n>/SKILL.md |
Verbatim passthrough | Native Anthropic skill format |
| Cursor | .agents/skills/<n>/SKILL.md |
name, description, paths |
Emerging cross-vendor .agents standard |
| Codex | .agents/skills/<n>/SKILL.md |
name, description, paths |
Supports disable-model-invocation |
| GitHub Copilot | .github/instructions/<n>.instructions.md |
applyTo, description |
Native Copilot instruction rules |
| Gemini CLI | .gemini/commands/<n>.toml |
description, prompt (TOML) |
Validated TOML prompt command schema |
| Windsurf | .devin/rules/<n>.md |
trigger, description, globs |
12,000 character limit pointer fallback |
| Cline | .clinerules/<n>.md |
paths |
Clean markdown rule injection |
| OpenCode | .opencode/commands/<n>.md |
description |
Native command configuration |
| Aider | .aider/<n>.md |
None (Markdown body) | Automatically merges read: in .aider.conf.yml |
Planned Harnesses: Grok CLI, Continue.
# 1. Discover harnesses detected on your machine
cinch harnesses
# 2. Inspect available skills, agents, commands, and hooks on disk
cinch inventory --harness claude
cinch inventory --harness cursor --purpose security
# 3. Preview how a skill translates without writing any files
cinch preview humanizer --target copilot
cinch preview security-auditor --from-dir examples/skills --target gemini
# 4. Interactive init wizard (prompts for starter skills if none on disk)
cinch init
# 5. Wire curated starter skills into multiple harnesses instantly
cinch init --starter --harness cursor,copilot,gemini --yes
# 6. Multi-target cross-harness wiring (non-interactive)
cinch init \
--from-harness claude \
--harness cursor,copilot,gemini,windsurf \
--skills humanizer,security-auditor \
--yes
# 7. Check workspace sync & wired file integrity
cinch status
# 8. Inspect workspace drift with syntax-highlighted unified diffs
cinch diff
# 9. Validate & lint SKILL.md files against dialect best practices
cinch check
cinch check examples/skills/docker-deploy
# 10. Attach from an external skills repository or checkout
cinch init --from-dir examples/skills --harness cursor,copilot --yes| Flag | Description |
|---|---|
--from-harness <id> |
Source harness to read skills from (auto-detected if only one is on disk). |
--harness <list> |
Target harness(es) to wire (comma-separated list, e.g. cursor,copilot,gemini). |
--starter |
Include curated starter skills (humanizer, security-auditor, test-writer, git-commit). |
--skills <list> |
Comma-separated list of skill names to attach. |
--agents <list> |
Comma-separated list of agent names to attach. |
--commands <list> |
Comma-separated list of commands/prompts to attach. |
--hooks <list> |
Comma-separated list of hooks (preserved only when target matches source). |
--purpose <catalog> |
Filter inventory by category: python, ml, data, web, docs, security, agents. |
--from-dir <path> |
Extra local root directory containing skills or agents to inventory. |
--dry-run |
Preview the exact files and paths without writing anything to disk. |
--yes |
Non-interactive execution (accept defaults or provided flags). |
Cinch is written in pure, dependency-light Python and designed for microsecond-scale execution. Running the included benchmark suite (benchmark/run.py):
| Operation | Throughput | Latency |
|---|---|---|
| Frontmatter Parsing | 245,000+ skills/s | 4.0 Β΅s |
| 9-Dialect Translation | 500,000+ dialects/s | 0.02 ms / skill |
| End-to-End Plan & Disk Wire | 800+ skills/s | 1.2 ms / skill |
Zero perceptible lag in your CLI or agent loops.
Cinch never performs direct, naive file copying between disparate tools. Instead, it processes assets through a clean, verifiable translation pipeline:
βββββββββββββββββββββββββββ
β Source Item on Disk β (e.g. ~/.claude/skills/humanizer/SKILL.md)
ββββββββββββββ¬βββββββββββββ
β parse_doc()
βΌ
βββββββββββββββββββββββββββ
β Canonical Doc β (Unified AST: name, description, body, paths, support)
ββββββββββββββ¬βββββββββββββ
β Adapter.render()
βΌ
βββββββββββββββββββββββββββ
β RenderedFiles β (Tailored to each target dialect + merge rules)
ββββββββββββββ¬βββββββββββββ
β apply_plan()
βΌ
βββββββββββββββββββββββββββ
β Verified Project Files β + .cinch.json execution audit manifest
βββββββββββββββββββββββββββ
- Inline by default: The skill body is written directly into the target's native file with correctly translated frontmatter.
- Pointer when limits or assets require it: If a skill exceeds documented per-file limit (e.g., Windsurf's 12,000 character rule threshold) or bundles supporting scripts (
scripts/,references/), Cinch copies the support directory to.cinch/skills/<name>/and creates a native adapter file pointing to it.
- π 100% Local-First: Runs entirely on your local machine. No telemetry, no cloud dependencies, no network requests.
- π‘οΈ Zero Destructive Overwrites: Existing hand-crafted rule files are never silently replaced (
outcome: "exists"). - π Verifiable Manifest: Every run updates
.cinch.jsonwith an exact audit trail of files written, merged, or skipped.
Contributions are warmly welcome! Whether adding an adapter for a new harness, refining prompts, or improving test fixtures:
- Read our Contributing Guide
- Check our Security Policy
- License: MIT
If Cinch saves you time wiring AI workflows, please consider giving it a β on GitHub!