Use this skill when user asks to - "with smalltalk-developer", "create a Smalltalk class", "add a method to Pharo", "write Smalltalk code", "edit Tonel files", "import package to Pharo", "run Smalltalk tests", "implement in Pharo", or describes Pharo Smalltalk development tasks. Implements the standard Edit → Import → Test workflow for AI-driven Pharo development.
/plugin marketplace add mumez/smalltalk-dev-plugin/plugin install smalltalk-dev@smalltalk-dev-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
examples/development-sessions.mdreferences/best-practices.mdreferences/tonel-format.mdImplement the standard workflow for Pharo Smalltalk development using AI editors and the Tonel file format.
The fundamental workflow for Smalltalk development consists of three steps that repeat:
Edit Tonel files directly in the AI editor. The AI editor is the single source of truth for code.
Key principle: All code changes happen in .st files, not in the Pharo image.
Tonel basics:
.st filepackage.stFor detailed Tonel syntax and examples, see Tonel Format Reference.
After editing, import the package into the running Pharo image using absolute paths:
mcp__smalltalk-interop__import_package: 'MyPackage' path: '/home/user/project/src'
Critical rules:
After import, run tests to verify changes:
mcp__smalltalk-interop__run_class_test: 'MyClassTest'
mcp__smalltalk-interop__run_package_test: 'MyPackage-Tests'
If tests fail, return to step 1, fix the Tonel file, and repeat.
Always use absolute paths for imports:
✅ /home/user/myproject/src
❌ ./src
❌ ../myproject/src
Finding the source directory:
.project file for srcDirectory fieldsrc/, repositories/<project_root>/<srcDirectory>See Best Practices Reference for details.
Check BaselineOf<ProjectName> to determine correct import order:
baseline: spec
<baseline>
spec for: #common do: [
spec
package: 'MyPackage-Core';
package: 'MyPackage-Json' with: [
spec requires: #('MyPackage-Core')
]
]
Import order: Dependencies first → MyPackage-Core → MyPackage-Json
See Best Practices: Dependencies for complete guide.
Re-import after every change - Pharo doesn't automatically reload files.
Standard sequence:
MyPackage/MyClass.stMyPackageMyPackage-Tests/MyClassTest.stMyPackage-TestsThe AI editor is the source of truth:
.st files → Import to Pharo.st filesUse export_package only for:
See Best Practices: File Editing for rationale.
1. Create src/MyPackage/MyClass.st with class definition
2. import_package: 'MyPackage' path: '/absolute/path/src'
3. run_class_test: 'MyClassTest'
1. Read existing src/MyPackage/MyClass.st
2. Add new method to file
3. import_package: 'MyPackage' path: '/absolute/path/src'
4. run_class_test: 'MyClassTest'
1. Check BaselineOf for dependency order
2. Import packages in correct sequence
3. Import test packages last
4. Run comprehensive tests
For complete examples, see Development Session Examples.
When this skill is active, automatically suggest:
Import:
mcp__smalltalk-interop__import_package: 'PackageName' path: '/absolute/path'
Test:
mcp__smalltalk-interop__run_class_test: 'TestClassName'
mcp__smalltalk-interop__run_package_test: 'PackageName-Tests'
Debug:
mcp__smalltalk-interop__eval: 'Smalltalk code here'
Validate (optional):
mcp__smalltalk-validator__validate_tonel_smalltalk_from_file: '/path/to/file.st'
/st:import PackageName /path - Import package/st:test TestClass - Run tests/st:eval code - Execute Smalltalk snippet/st:validate file.st - Validate syntax"Package not found":
package.st exists"Syntax error":
validate_tonel_smalltalk_from_file first"Dependency not found":
/st:eval to debug incrementallySee Best Practices: Error Handling for complete guide.
This skill provides focused guidance for the core workflow. For comprehensive information:
Edit .st file
↓
Import package (absolute path)
↓
Run tests
↓
Tests pass? → Done
↓
Tests fail? → Debug with /st:eval → Fix .st file → Re-import
Remember: The cycle is Edit → Import → Test. Never skip import or tests.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.