Back to Workshops
Workshop Free

Skills.md from Scratch: Build a Skill-Driven Coding Agent

January 16, 2026 Alexey Grigorev
ai-agents llm-engineering agent-systems tooling-architecture

A newer, combined version of this workshop is available: Coding Agent with Skills.

We start from the coding agent in the prerequisite workshop. We turn it into a general-purpose coding agent with two reusable behavior layers: skills and slash commands. The agent loads a skill when your request matches its description. You invoke a command with a leading slash, and the system renders it into a prompt before the agent acts.

Links

External resources for this workshop:

The agent you will build

By the end you'll have built a system that looks like this:

flowchart LR USER["User"] RUNNER["ToyAIKit runner OpenAI Responses"] LLM["OpenAI model"] CODETOOLS["Coding tools read, write, tree, bash, search"] SKILLTOOL["skill(name) tool"] LOADER["SkillLoader"] SKILLS["skills/*/SKILL.md scripts and templates"] COMMANDS["commands/*.md"] COMMANDTOOL["execute_command(name, args)"] USER -->|plain request| RUNNER USER -->|/command| RUNNER RUNNER --> LLM RUNNER --> CODETOOLS RUNNER --> SKILLTOOL SKILLTOOL --> LOADER LOADER --> SKILLS RUNNER --> COMMANDTOOL COMMANDTOOL --> COMMANDS

The project stays small enough to understand in a notebook, but it mirrors the pieces used by real coding agents. The coding tools let the model read, write, search, and run commands. The skill loader turns SKILL.md files with YAML frontmatter into tool-loadable instructions. The command loader turns markdown files like review.md or test.md into reusable prompt templates.