An atelier is the private workshop or studio where a principal master and a number of assistants, students, and apprentices can work together producing fine art or visual art released under the master's name or supervision.
A personal development toolkit for AI agents - spec-driven development, code quality, deep thinking, and ecosystem patterns.
Install Atelier with a single command. It auto-detects your AI harness (Claude Code or OpenCode), configures agents, and sets up session hooks:
# Initialize atelier in your project
bunx @martinffx/atelier@latest init
# Or install everything including skills
bunx @martinffx/atelier@latest init --all
# Non-interactive mode (CI/CD)
bunx @martinffx/atelier@latest init --yesThat's it. Your project is now configured for spec-driven development.
Atelier sets up three things in your project:
Specialized knowledge modules that auto-invoke based on context. Install them via the CLI (--all flag) or separately:
npx skills add martinffx/atelierHarness-agnostic agent definitions configured with appropriate models:
| Agent | Role | Claude | OpenCode |
|---|---|---|---|
| Scout | Fast codebase reconnaissance | haiku | deepseek-v4-flash |
| Oracle | Strategic thinking, requirements, analysis | opus | kimi-k2.6 |
| Architect | DDD, system design, architecture | opus | deepseek-v4-pro |
Agents are generated into .claude/agents/ or .opencode/agents/ with harness-specific model identifiers.
Context injection that runs on every session start, clear, or compact:
- Claude Code:
hooks/atelier-session-startoutputs project context as JSON - OpenCode:
.opencode/plugins/atelier.jsprovides config and transform hooks
The spec workflow skills support beads for dependency-aware task tracking:
# Install beads (optional but recommended)
npm install -g beadsWhy beads? It provides bd ready (finds next unblocked task), bd dep add (dependency management), and bd list (progress tracking) that harness-native todos can't match.
Fallback: If beads isn't installed, skills fall back to the harness's native todo system (TodoWrite for Claude Code, built-in todos for OpenCode).
Single source of truth in .atelier/config.json:
{
"version": "1.0.0",
"harness": "claude",
"skills_source": "martinffx/atelier",
"agents": [
{ "template": "scout", "model": "haiku" },
{ "template": "oracle", "model": "opus" },
{ "template": "architect", "model": "opus" }
]
}Initialize atelier in the current project.
bunx @martinffx/atelier@latest init [options]Options:
--harness <type>- Force harness type (claudeoropencode)--all- Also install skills vianpx skills add--yes- Non-interactive mode with default models--project- Install skills in project directory (default: global)
Idempotent: Re-running init is safe. It regenerates files without deleting anything unless you switch harnesses.
Refresh hooks and agents from the latest templates without touching skills:
bunx @martinffx/atelier@latest updateRemove all atelier-generated files from the project:
bunx @martinffx/atelier@latest removeSkills remain installed. Run npx skills remove martinffx/atelier to remove them separately.
This repository includes 34 skills that enhance AI agents with specialized knowledge and workflows.
If you didn't use --all during init, install skills manually:
# Install all skills
npx skills add martinffx/atelier
# Install specific skills
npx skills add martinffx/atelier --skill typescript-drizzle-orm
npx skills add martinffx/atelier --skill python-fastapi
npx skills add martinffx/atelier --skill spec-brainstormSkills fall into four categories based on what they do:
Process-oriented skills that guide you through structured development workflows. These produce artifacts and should be followed step-by-step.
spec-brainstorm→spec.md— Discovery, requirements, architecturespec-plan→plan.json— Break spec into implementable tasksspec-implement— Execute tasks with TDDspec-finish— Validate, review, prepare for PRspec-orchestrator— Route to the right skill based on context
Analytical skills that provide patterns, principles, and deep reasoning. These adapt to your specific situation.
oracle-architect— DDD, hexagonal architecture, component designoracle-challenge— Challenge assumptions, validate decisionsoracle-doubt— Adversarial review of non-trivial decisionsoracle-grillme— Socratic interrogation of plans against domain modeloracle-security— Security architecture and threat modelingoracle-testing— Stub-driven TDD, layer boundary testingoracle-thinkdeep— Extended sequential reasoning for complex problems
Technology-specific patterns and best practices. These are like having a senior engineer for that stack.
TypeScript (8 skills)
typescript-api-design— REST conventions, error responses, paginationtypescript-fastify— Fastify + TypeBox route handlerstypescript-drizzle-orm— Type-safe SQL schemas and queriestypescript-dynamodb-toolbox— Single-table design, GSIstypescript-functional-patterns— ADTs, branded types, Option/Resulttypescript-effect-ts— Functional effects, error handling, resourcestypescript-build-tools— Bun, Vitest, Biome, Turborepotypescript-testing— Mocking, MSW, snapshot testing
Python (8 skills)
python-architecture— Functional core/shell, DDD, layered architecturepython-fastapi— Pydantic validation, dependency injection, OpenAPIpython-sqlalchemy— ORM patterns, queries, async, upsertspython-temporal— Workflow orchestration, activities, error handlingpython-modern-python— Type hints, generics, pattern matchingpython-monorepo— uv workspaces, mise task orchestrationpython-testing— Stub-driven TDD, pytest patternspython-build-tools— uv, ruff, basedpyright, pytest config
Task-specific tools you invoke when you need them.
code-commit— Generate and validate conventional commitscode-debug— Systematic debugging workflowcode-docs— README, API docs, changelog generationcode-handoff— Compact conversation into handoff documentcode-review— Multi-agent code review with specialized reviewerscode-subagents— Dispatch patterns for parallel implementation
Skills are auto-invoked based on their description when you work with relevant technologies. No commands needed—just install and AI agents will use them when appropriate.
Skills are auto-invoked based on context. When you say "create a spec for user auth", the AI matches this to spec-brainstorm and loads it automatically.
Skills are organized into four categories based on their role:
| Category | Prefix | Type | Invocation | Output | Flexibility |
|---|---|---|---|---|---|
| Workflow | spec: |
Process | User/previous skill | Artifact | Follow exactly |
| Thinking | oracle: |
Analytical | Context-driven | Guidance | Adapt to context |
| Domain Knowledge | python:, typescript: |
Technology | Context-driven | Patterns | Adapt to context |
| Utility | code: |
Task-specific | User command | Result | Use as needed |
- Workflow (
spec:) — Sequential steps that produce artifacts. Follow them in order. - Thinking (
oracle:) — Analytical capabilities that reason about your specific problem. - Domain Knowledge (
python-*,typescript-*) — Stack-specific patterns and best practices. Like having a senior engineer for that technology. - Utility (
code:) — Task-specific tools you invoke directly when needed.
graph LR
A[spec-brainstorm] -->|spec.md| B[spec-plan]
B -->|plan.json| C[spec-implement]
C --> D[spec-finish]
B -.->|design flaw| A
C -.->|missing tasks| B
C -.->|fundamental issue| A
D -.->|bugs found| C
Standard flow:
- Research - Discovery + research + architecture →
spec.md - Plan - Break into tasks →
plan.json - Implement - Execute with TDD
- Finish - Validate and review
Iteration is normal - Backflows (dotted lines) are expected when:
- Planning reveals design flaws → back to research
- Implementation finds missing tasks → update plan
- Validation finds bugs → back to implement
| User says | Skill invoked |
|---|---|
| "Create a spec for X" | spec-brainstorm |
| "What should we build" | spec-brainstorm |
| "Write a plan" | spec-plan |
| "Implement this" | spec-implement |
| "Review this code" | code-review |
| "Debug this" | code-debug |
| "How should I test this" | oracle-testing |
| "What's the architecture" | oracle-architect |
For local development with Claude Code, use the --plugin-dir flag to load skills directly:
claude --plugin-dir ./atelierRestart Claude Code after making changes to reload skills.
To work on the CLI itself:
# Build the CLI
bun run build
# Test locally
bun ./dist/atelier.js init --yesMIT Copyright (c) 2026 Martin Richards
