{"id":"b7445d54-a08e-49d1-aea1-d561be284b03","shortId":"kvGHZE","kind":"skill","title":"st-setup-project","tagline":"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,","description":"# Set Up Pharo Project Boilerplate\n\nCreate a complete Pharo project structure with BaselineOf, Core package, and Tests package.\n\n## When to Use This Skill\n\n- User asks to \"create a new project\", \"start a Smalltalk project\", or \"set up project structure\"\n- No `src/` directory or `.project` file exists in the current directory\n- User provides a project name and wants to begin development\n\n## Project Name Rules\n\n- **PascalCase required**: Must start with uppercase, alphanumeric only\n- Valid: `MyProject`, `RedisClient`, `JSONParser`\n- Invalid: `my-project`, `my_project`, `myProject`\n\n**If no name provided**: Ask with `AskUserQuestion`: \"What is your project name? (Use PascalCase like MyProject)\"\n\n## Pre-flight Checks\n\n**1. Validate PascalCase:**\n```bash\nif [[ ! \"$PROJECT_NAME\" =~ ^[A-Z][a-zA-Z0-9]*$ ]]; then\n  echo \"Error: Project name must be in PascalCase (e.g., MyProject, RedisClient)\"\n  exit 1\nfi\n```\n\n**2. Check for existing project:**\n```bash\nif [ -d \"src\" ] && [ \"$(find src -mindepth 1 -maxdepth 1 -type d 2>/dev/null | wc -l)\" -gt 0 ]; then\n  echo \"Error: Project already exists (src/ directory contains packages)\"\n  exit 1\nfi\n```\n\n## Created Structure\n\n```\nMyProject/\n├── .project                          # srcDirectory: 'src'\n└── src/\n    ├── .properties                   # format: tonel\n    ├── BaselineOfMyProject/\n    │   ├── package.st\n    │   └── BaselineOfMyProject.class.st\n    ├── MyProject-Core/\n    │   └── package.st\n    └── MyProject-Tests/\n        └── package.st\n```\n\n## Implementation\n\nRun the setup script with the validated project name. See [Complete Setup Script](references/setup-script.md) for the full bash implementation.\n\n**Key files created:**\n\n**.project** (Pharo STON format with single quotes):\n```\n{\n\t'srcDirectory' : 'src'\n}\n```\n\n**src/.properties** (Tonel format declaration):\n```\n{\n\t#format : #tonel\n}\n```\n\n**BaselineOf class** defines package dependencies and groups:\n- `Core` group: `ProjectName-Core`\n- `Tests` group: `ProjectName-Tests` (requires Core)\n- `all` group: Core + Tests\n- `default` group: Core only\n\n## After Setup\n\nShow the user what was created and next steps:\n\n```\n✓ Pharo project 'ProjectName' created successfully!\n\nNext steps:\n  1. Use /st-init to verify Pharo connection and start development\n  2. Start adding classes to ProjectName-Core\n  3. Write tests in ProjectName-Tests\n```\n\nThen suggest using the `smalltalk-dev:st-init` skill to start the development session.\n\n## Error Handling\n\n| Situation | Action |\n|-----------|--------|\n| Invalid project name | Show error with PascalCase example, stop |\n| Project already exists | Stop immediately, suggest this is for new projects |\n| File system errors | Let bash errors propagate naturally (`set -e`) |\n\n## Related Skills\n\n- `smalltalk-dev:st-init` — Start development session after project is created\n- `smalltalk-dev:smalltalk-developer` — Development workflow (Edit → Import → Test)","tags":["setup","project","smalltalk","dev","plugin","mumez","agent-skills","agents","claude-code","marketplace","mcp","pharo-smalltalk"],"capabilities":["skill","source-mumez","skill-st-setup-project","topic-agent-skills","topic-agents","topic-claude-code","topic-marketplace","topic-mcp","topic-pharo-smalltalk","topic-plugin","topic-skills","topic-smalltalk"],"categories":["smalltalk-dev-plugin"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/mumez/smalltalk-dev-plugin/st-setup-project","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add mumez/smalltalk-dev-plugin","source_repo":"https://github.com/mumez/smalltalk-dev-plugin","install_from":"skills.sh"}},"qualityScore":"0.456","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 13 github stars · SKILL.md body (2,912 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:07:00.707Z","embedding":null,"createdAt":"2026-05-09T01:04:42.204Z","updatedAt":"2026-05-18T19:07:00.707Z","lastSeenAt":"2026-05-18T19:07:00.707Z","tsv":"'/dev/null':199 '/st-init':323 '0':203 '1':151,179,193,195,215,321 '2':181,198,331 '3':339 '9':165 'a-z':158 'a-za-z0':161 'action':365 'ad':333 'alphanumer':118 'alreadi':208,376 'ask':13,73,135 'askuserquest':137 'baselineof':48,61,276 'baselineofmyproject':227 'baselineofmyproject.class.st':229 'bash':154,186,256,390 'begin':107 'boilerpl':7,53 'check':150,182 'class':277,334 'complet':56,249 'connect':327 'contain':212 'core':62,232,283,287,294,297,301,338 'creat':15,54,75,217,260,310,317,410 'creator':8 'current':97 'd':188,197 'declar':273 'default':299 'defin':278 'depend':280 'dev':352,400,413 'develop':42,108,330,360,405,416,417 'directori':29,90,98,211 'e':395 'e.g':175 'echo':167,205 'edit':419 'error':168,206,362,370,388,391 'exampl':373 'exist':94,184,209,377 'exit':178,214 'fi':180,216 'file':32,93,259,386 'find':190 'flight':149 'format':225,264,272,274 'full':255 'group':282,284,289,296,300 'gt':202 'handl':363 'immedi':379 'implement':238,257 'import':420 'init':355,403 'invalid':124,366 'jsonpars':123 'key':258 'l':201 'let':389 'like':145 'maxdepth':194 'mindepth':192 'miss':26 'must':114,171 'my-project':125 'myproject':121,130,146,176,219,231,235 'myproject-cor':230 'myproject-test':234 'name':103,110,133,142,157,170,247,368 'natur':393 'new':17,40,77,384 'next':312,319 'packag':63,66,213,279 'package.st':228,233,237 'pascalcas':112,144,153,174,372 'pharo':5,51,57,262,314,326 'pharo/smalltalk':18 'pre':148 'pre-flight':147 'project':4,6,19,23,31,43,52,58,78,82,86,92,102,109,127,129,141,156,169,185,207,220,246,261,315,367,375,385,408 'projectnam':286,291,316,337,344 'projectname-cor':285,336 'projectname-test':290,343 'propag':392 'properti':224 'provid':100,134 'quot':267 'rediscli':122,177 'references/setup-script.md':252 'relat':396 'requir':113,293 'rule':111 'run':239 'scratch':21 'script':242,251 'see':248 'session':361,406 'set':46,49,84,394 'setup':3,241,250,304 'show':305,369 'singl':266 'situat':364 'skill':71,356,397 'skill-st-setup-project' 'smalltalk':41,81,351,399,412,415 'smalltalk-dev':350,398,411 'smalltalk-develop':414 'source-mumez' 'src':28,89,189,191,210,222,223,269 'src/.properties':270 'srcdirectori':221,268 'st':2,354,402 'st-init':353,401 'st-setup-project':1 'start':38,79,115,329,332,358,404 'step':313,320 'ston':263 'stop':374,378 'structur':24,59,87,218 'success':318 'suggest':347,380 'system':387 'test':65,236,288,292,298,341,345,421 'tonel':226,271,275 'topic-agent-skills' 'topic-agents' 'topic-claude-code' 'topic-marketplace' 'topic-mcp' 'topic-pharo-smalltalk' 'topic-plugin' 'topic-skills' 'topic-smalltalk' 'type':196 'uppercas':117 'use':9,69,143,322,348 'user':12,35,72,99,307 'valid':120,152,245 'verifi':325 'want':36,105 'wc':200 'workflow':418 'write':340 'z':160 'z0':164 'za':163","prices":[{"id":"c6ae76b1-efbb-4a5c-a415-0b224dd3e1f6","listingId":"b7445d54-a08e-49d1-aea1-d561be284b03","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"mumez","category":"smalltalk-dev-plugin","install_from":"skills.sh"},"createdAt":"2026-05-09T01:04:42.204Z"}],"sources":[{"listingId":"b7445d54-a08e-49d1-aea1-d561be284b03","source":"github","sourceId":"mumez/smalltalk-dev-plugin/st-setup-project","sourceUrl":"https://github.com/mumez/smalltalk-dev-plugin/tree/develop/skills/st-setup-project","isPrimary":false,"firstSeenAt":"2026-05-09T01:04:42.204Z","lastSeenAt":"2026-05-18T19:07:00.707Z"}],"details":{"listingId":"b7445d54-a08e-49d1-aea1-d561be284b03","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"mumez","slug":"st-setup-project","github":{"repo":"mumez/smalltalk-dev-plugin","stars":13,"topics":["agent-skills","agents","claude-code","marketplace","mcp","pharo-smalltalk","plugin","skills","smalltalk"],"license":"mit","html_url":"https://github.com/mumez/smalltalk-dev-plugin","pushed_at":"2026-05-12T05:53:28Z","description":"Claude Code plugin for AI-driven Smalltalk (Pharo) development","skill_md_sha":"2ed2495648ddc496393cd25e7053dd3efe04b20c","skill_md_path":"skills/st-setup-project/SKILL.md","default_branch":"develop","skill_tree_url":"https://github.com/mumez/smalltalk-dev-plugin/tree/develop/skills/st-setup-project"},"layout":"multi","source":"github","category":"smalltalk-dev-plugin","frontmatter":{"name":"st-setup-project","description":"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."},"skills_sh_url":"https://skills.sh/mumez/smalltalk-dev-plugin/st-setup-project"},"updatedAt":"2026-05-18T19:07:00.707Z"}}