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, Core, and Tests package structure.From its SKILL.md
npx -y skills add mumez/smalltalk-dev-plugin --skill st-setup-projectAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 2 commands, including `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` and 1 more.
SKILL.md
3.3 KB, 760 tokens by cl100k_base, as published. Nobody here has run it
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)
What ships with it: 1 file
3.1 KB alongside SKILL.md
references/
- setup-script.md3.1 KB