st-setup-project
Pharo project boilerplate creator. Use when the user asks to create a new Pharo/Smalltalk project from scratch, when project structure is missing (no src/ directory or .project file), when the user wants to start a new Smalltalk development project, or when setting up BaselineOf,
What it does
Set Up Pharo Project Boilerplate
Create a complete Pharo project structure with BaselineOf, Core package, and Tests package.
When to Use This Skill
- User asks to "create a new project", "start a Smalltalk project", or "set up project structure"
- No
src/directory or.projectfile exists in the current directory - User provides a project name and wants to begin development
Project Name Rules
- PascalCase required: Must start with uppercase, alphanumeric only
- Valid:
MyProject,RedisClient,JSONParser - Invalid:
my-project,my_project,myProject
If no name provided: Ask with AskUserQuestion: "What is your project name? (Use PascalCase like MyProject)"
Pre-flight Checks
1. Validate PascalCase:
if [[ ! "$PROJECT_NAME" =~ ^[A-Z][a-zA-Z0-9]*$ ]]; then
echo "Error: Project name must be in PascalCase (e.g., MyProject, RedisClient)"
exit 1
fi
2. Check for existing project:
if [ -d "src" ] && [ "$(find src -mindepth 1 -maxdepth 1 -type d 2>/dev/null | wc -l)" -gt 0 ]; then
echo "Error: Project already exists (src/ directory contains packages)"
exit 1
fi
Created Structure
MyProject/
├── .project # srcDirectory: 'src'
└── src/
├── .properties # format: tonel
├── BaselineOfMyProject/
│ ├── package.st
│ └── BaselineOfMyProject.class.st
├── MyProject-Core/
│ └── package.st
└── MyProject-Tests/
└── package.st
Implementation
Run the setup script with the validated project name. See Complete Setup Script for the full bash implementation.
Key files created:
.project (Pharo STON format with single quotes):
{
'srcDirectory' : 'src'
}
src/.properties (Tonel format declaration):
{
#format : #tonel
}
BaselineOf class defines package dependencies and groups:
Coregroup:ProjectName-CoreTestsgroup:ProjectName-Tests(requires Core)allgroup: Core + Testsdefaultgroup: Core only
After Setup
Show the user what was created and next steps:
✓ Pharo project 'ProjectName' created successfully!
Next steps:
1. Use /st-init to verify Pharo connection and start development
2. Start adding classes to ProjectName-Core
3. Write tests in ProjectName-Tests
Then suggest using the smalltalk-dev:st-init skill to start the development session.
Error Handling
| Situation | Action |
|---|---|
| Invalid project name | Show error with PascalCase example, stop |
| Project already exists | Stop immediately, suggest this is for new projects |
| File system errors | Let bash errors propagate naturally (set -e) |
Related Skills
smalltalk-dev:st-init— Start development session after project is createdsmalltalk-dev:smalltalk-developer— Development workflow (Edit → Import → Test)
Capabilities
Install
Quality
deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 13 github stars · SKILL.md body (2,912 chars)