Sep 14, 2026

Keep Your Agent on Idiomatic Synalinks with One Skill

A 906-star repo shipping a single skill that keeps language models from mixing Keras, LangChain, and DSPy syntax when they write Synalinks code.

#tutorial#ai-agents#python#data-science

Synalinks is a Keras-inspired, neuro-symbolic AI framework. Ask a raw language model to write Synalinks code and, per the repo's README, it tends to mix Keras, LangChain, and DSPy syntax — producing plausible-looking but broken code. This repo fixes that with one skill that constrains the agent to idiomatic Synalinks usage.

Why This Skill Matters

The repo (SynaLinks/synalinks-skills, 906 stars in the latest leaderboard snapshot) deliberately ships a single skill, synalinks, that covers the whole framework. The agent auto-activates it from the SKILL.md description — nothing to select manually. The SKILL.md is a scannable overview organized into one section per slice of the framework, and each section points to a runnable script (with its captured run log) plus a deep-dive reference doc. Eleven sections run from Core (DataModel, Field, JSON operators) through Programs (four building APIs: Functional, Sequential, Subclassing, Mixed), Control flow (Decision, Branch, parallel branches), Agents, Knowledge (DuckDB-backed KnowledgeBase, RAG), Training, Rewards (including LMAsJudge), and Optimizers to Providers and Datasets.

The skill rides the open Agent Skills format (SKILL.md), so, as the README puts it, one skill works in every agent that supports it, unmodified — Claude Code, Codex, OpenCode, pi, and others, with no per-agent variants.

Installation

The README recommends the official skills CLI. The natural place is the project where you write Synalinks code — which is also the CLI's default scope:

# From your project root
npx skills add SynaLinks/synalinks-skills --skill synalinks

Each agent reads the skill from its own directory (for Claude Code, <repo>/.claude/skills/). Add --global to install to the user-level directory instead, or --list to inspect the repo without installing. Commit the generated skills-lock.json so teammates and CI resolve the same skill content.

Real Workflow: Build a Program Without Syntax Drift

  1. Install the skill in the Synalinks project (command above), then verify: npx skills list — or run the /skills slash command in Claude Code. The synalinks skill should appear.
  2. Ask for the program in plain language. The agent auto-activates the skill and follows the section it needs — Programs for the build API, Modules for generators like ChainOfThought and SelfCritique, Control flow for branching.
  3. When something looks off, check the skill's own evidence: each scripts/ example carries a docstring stating its Usage: and Run log:, and references/ holds the captured run logs — you can diff what the agent wrote against a verified run.
Build a Synalinks program that generates an answer, critiques it with
SelfCritique, and branches on the result, then save it.

Updates and Pinning

The skill is not semver-versioned — it tracks the repo's main branch, so "latest" always means current main. Update with npx skills update synalinks; the CLI recomputes the content hash and reinstalls only if it changed. The lockfile pins each skill to a source repo plus a SHA-256 content hash; npx skills update advances the recorded hash, and npx skills experimental_install restores the pinned state instead.

Tips

  • Install per-project (the CLI default) — the guidance lands exactly where you write Synalinks code.
  • Target a specific agent with -a codex, -a opencode, or -a pi; the CLI supports 70+ agents.
  • For Claude.ai or Claude Desktop, build a .skill archive manually: clone the repo, cd synalinks-skills/skills, zip -r ../synalinks.skill synalinks, then upload it via the skill menu.
  • The skill is Apache 2.0, like the Synalinks framework itself.

When Not to Use This

If you are not writing Synalinks code, the skill has nothing for you — it is framework-specific by design. And the Claude.ai/Desktop path is a manual archive upload, not a CLI install: updates there mean regenerating and re-uploading the archive by hand.


See the leaderboard for more skills.