{"id":49889400,"url":"https://github.com/mumez/smalltalk-dev-plugin-cursor","last_synced_at":"2026-05-15T20:09:28.951Z","repository":{"id":342819110,"uuid":"1174491018","full_name":"mumez/smalltalk-dev-plugin-cursor","owner":"mumez","description":"Cursor plugin for AI-driven Smalltalk (Pharo) development","archived":false,"fork":false,"pushed_at":"2026-03-07T14:12:51.000Z","size":104,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-07T20:30:13.576Z","etag":null,"topics":["cursor-plugin","cursor-skills","pharo-smalltalk"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mumez.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-06T14:00:53.000Z","updated_at":"2026-03-07T14:12:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mumez/smalltalk-dev-plugin-cursor","commit_stats":null,"previous_names":["mumez/smalltalk-dev-plugin-cursor"],"tags_count":null,"template":false,"template_full_name":"cursor/plugin-template","purl":"pkg:github/mumez/smalltalk-dev-plugin-cursor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mumez%2Fsmalltalk-dev-plugin-cursor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mumez%2Fsmalltalk-dev-plugin-cursor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mumez%2Fsmalltalk-dev-plugin-cursor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mumez%2Fsmalltalk-dev-plugin-cursor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mumez","download_url":"https://codeload.github.com/mumez/smalltalk-dev-plugin-cursor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mumez%2Fsmalltalk-dev-plugin-cursor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33078201,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T20:05:40.333Z","status":"ssl_error","status_checked_at":"2026-05-15T20:05:38.672Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cursor-plugin","cursor-skills","pharo-smalltalk"],"created_at":"2026-05-15T20:09:28.233Z","updated_at":"2026-05-15T20:09:28.944Z","avatar_url":"https://github.com/mumez.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# smalltalk-dev Plugin\n\n[Cursor](https://cursor.com/) plugin for AI-driven Smalltalk (Pharo) development.\n\n\u003e [Claude Code version](https://github.com/mumez/smalltalk-dev-plugin) is also available.\n\n## Overview\n\nThis plugin provides a minimal, practical toolkit for Smalltalk development using AI skills. It focuses on the essential workflow of editing Tonel files, importing them into Pharo, and running tests.\n\n## Features\n\n- **Commands**: Essential slash commands for import, test, eval, and validation\n- **Skills**: AI-powered development workflow, debugging expertise, and documentation\n- **MCP Integration**: Seamless connection to Pharo and validation servers\n- **Hooks**: Automatic suggestions after file changes\n\n## Usage\n\n### Quick Start\n\nThe easiest way to use this plugin is to use the **/st-buddy** command:\n\n```bash\n# Start Smalltalk Buddy (once per session)\n/st-buddy\n\n# Then ask questions naturally\nYou: \"I want to create a Person class with name and age\"\nAI:  I'll help you create that! [Creates Tonel files and guides you through the process]\n\nYou: \"How do I test this?\"\nAI:  Let me run the tests for you... [Executes tests and shows results]\n\nYou: \"The test failed, can you help?\"\nAI:  I'll debug this... [Investigates, identifies issue, and fixes it]\n```\n\n**/st-buddy** is your friendly development partner that:\n- Understands what you want to do and routes to the right tools\n- Guides you through development, testing, and debugging\n- Helps you learn AI-assisted Smalltalk development\n- Works naturally through conversation\n\n### Development Workflow\n\n1. **Run /st-buddy** once at the start of your session\n2. **Ask questions** naturally about what you want to do\n3. **AI implements** and manages the workflow (editing Tonel, importing, testing)\n4. **Review results** and continue the conversation\n5. **Iterate** until you're satisfied\n\nFor experienced users who prefer direct commands, see [Commands.md](doc/Commands.md).\n\n## Prerequisites\n\n### 1. Pharo with PharoSmalltalkInteropServer\n\nInstall [PharoSmalltalkInteropServer](https://github.com/mumez/PharoSmalltalkInteropServer) in your Pharo image.\n\n### 2. Cursor\n\nInstall [Cursor](https://cursor.com/) from the official site.\n\n## Installation\n\n```bash\n# Install the plugin\n/add-plugin smalltalk-dev\n```\n\n### Verify Installation\n\nAfter installation, you should see the custom commands starting with `/st-`.\n\n### Commands\n\nThe plugin provides essential commands for Smalltalk development:\n\n- `/st-buddy` - Start your friendly Smalltalk development assistant (recommended starting point)\n- `/st-init` - Load smalltalk-developer skill and explain workflow\n- `/st-setup-project` - Set up Pharo project structure\n- `/st-eval` - Execute Smalltalk code snippets\n- `/st-lint` - Check code quality and best practices\n- `/st-import` - Import Tonel packages to Pharo\n- `/st-export` - Export packages from Pharo\n- `/st-test` - Run SUnit tests\n- `/st-validate` - Validate Tonel syntax\n\n**Most users should start with /st-buddy** - it will guide you and use the other commands as needed.\n\nFor command details and advanced usage, see [Commands.md](doc/Commands.md).\n\n### Skills\n\nThe plugin includes specialized AI skills that activate automatically based on your needs:\n\n- **smalltalk-developer** - Development workflow and best practices\n- **smalltalk-debugger** - Error handling and debugging procedures\n- **smalltalk-usage-finder** - Code usage exploration and analysis\n- **smalltalk-implementation-finder** - Implementation discovery and patterns\n- **smalltalk-commenter** - CRC-style class documentation generation\n\n**These skills work behind the scenes** when you use /st-buddy, providing specialized knowledge for each task.\n\n#### /smalltalk-commenter (Documentation Skill)\n\nAutomatically suggests class documentation improvements:\n\n- Detects undocumented classes after file changes (occasionally, not every time)\n- Generates CRC-style class comments\n- Can be invoked directly: `/smalltalk-commenter`\n\n**Works quietly in the background** - you'll get occasional suggestions to improve documentation.\n\n### MCP Tools\n\nThe plugin exposes all tools from both MCP servers:\n\n**pharo-interop** (22 tools):\n- `eval`: Execute Smalltalk expressions\n- `import_package`, `export_package`: Package management\n- `run_class_test`, `run_package_test`: Test execution\n- `get_class_source`, `get_method_source`: Code inspection\n- `search_implementors`, `search_references`: Code navigation\n- And more...\n\n**smalltalk-validator** (5 tools):\n- `validate_tonel_smalltalk_from_file`: File validation\n- `validate_tonel_smalltalk`: Content validation\n- `validate_smalltalk_method_body`: Method validation\n- `lint_tonel_smalltalk_from_file`: File linting\n- `lint_tonel_smalltalk`: Content linting\n\n## Configuration\n\nThe plugin uses two MCP servers:\n\n1. **pharo-interop**: Communication with Pharo image\n2. **smalltalk-validator**: Tonel syntax validation\n\nThese are configured automatically via `.mcp.json`. You can customize the Pharo port:\n\n```bash\nexport PHARO_SIS_PORT=8086  # default\n```\n\n## Uninstallation\n\n```bash\n# Remove the plugin\n/remove-plugin smalltalk-dev\n```\n\n## Best Practices\n\n### Development Workflow\n1. **Edit** Tonel files (AI editor is the source of truth)\n2. **Lint** code with `/st-lint` to check quality\n3. **Import** to Pharo with absolute paths\n4. **Test** after every import\n\n### Code Quality\n- Use `/st-lint` before importing to catch issues early\n- Add class prefixes to avoid name collisions\n- Keep methods focused (15 lines standard, 40 for UI/tests)\n- Limit instance variables (max 10 per class)\n- Access instance variables through methods, not directly\n\n### Path Management\n- Always use absolute paths for imports\n- Import multiple packages individually\n\n### File Editing\n- **AI editor is the source of truth** (Tonel files)\n- Avoid editing in Pharo directly\n- Use `export_package` only when necessary\n\n### Import Timing\n- Re-import after every change\n- Import main package before test package\n- Don't forget to import test packages\n\n### Testing\n- Run tests after every import\n- Use `run_class_test` for specific classes\n- Use `run_package_test` for full packages\n\n### Debugging\n- Use `/st-eval` for quick partial execution\n- Capture both results and errors in Array\n- Use `printString` for object serialization\n- Debug step-by-step\n\n## Troubleshooting\n\n### \"Connection refused\" error\n\nMake sure PharoSmalltalkInteropServer is running:\n\n```smalltalk\nSisServer current start.\nSisServer current.  \"Should show running server\"\n```\n\n### \"Package not found\" after import\n\n- Verify absolute path is correct\n- Check that .st files are in correct directory\n- Ensure package.st exists\n\n### Tests fail after import\n\n1. Check test error message\n2. Use `/st-validate` to check syntax\n3. Use `/st-eval` to debug specific code\n4. Fix in Tonel file\n5. Re-import and re-test\n\n### Import seems to do nothing\n\n- Check Pharo Transcript for error messages\n- Verify server port matches configuration: `SisServer teapotConfig`\n- Try `/st-eval Smalltalk version` to test connection\n\n## Project Structure\n\n```\nsmalltalk-dev-plugin-cursor/\n├── .cursor-plugin/\n│   └── plugin.json          # Cursor plugin metadata, MCP server reference\n├── mcp.json                 # MCP server configuration\n├── assets/\n│   └── logo.svg             # Plugin logo\n├── commands/\n│   ├── st-buddy.md          # /st-buddy - Friendly development assistant\n│   ├── st-init.md           # /st-init - Start development session\n│   ├── st-setup-project.md  # /st-setup-project - Project boilerplate\n│   ├── st-eval.md           # /st-eval - Execute Smalltalk code\n│   ├── st-import.md         # /st-import - Import Tonel packages\n│   ├── st-export.md         # /st-export - Export packages\n│   ├── st-test.md           # /st-test - Run SUnit tests\n│   ├── st-lint.md           # /st-lint - Check code quality\n│   └── st-validate.md       # /st-validate - Validate Tonel syntax\n├── skills/\n│   ├── smalltalk-commenter/\n│   │   └── SKILL.md         # Documentation specialist skill\n│   ├── smalltalk-developer/\n│   │   ├── SKILL.md         # Development workflow\n│   │   ├── examples/        # Development sessions\n│   │   └── references/      # Best practices, Tonel format\n│   ├── smalltalk-debugger/\n│   │   ├── SKILL.md         # Debugging techniques\n│   │   ├── examples/        # Debug scenarios\n│   │   └── references/      # Error patterns, inspection, UI debugging\n│   ├── smalltalk-usage-finder/\n│   │   ├── SKILL.md         # Usage exploration\n│   │   ├── examples/        # Usage scenarios\n│   │   └── references/      # Usage analysis\n│   └── smalltalk-implementation-finder/\n│       ├── SKILL.md         # Implementation analysis\n│       ├── examples/        # Implementation scenarios\n│       └── references/      # Implementation analysis\n├── hooks/\n│   └── hooks.json           # PostToolUse hook configuration\n├── scripts/\n│   └── suggest-class-comment.sh  # PostToolUse hook for documentation suggestions\n├── doc/\n│   └── Commands.md               # Commands quick reference\n├── README.md                 # This file\n└── LICENSE\n```\n\n## Contributing\n\nContributions are welcome! Please:\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Test with Cursor\n5. Submit a pull request\n\n## License\n\nMIT License - see LICENSE file for details\n\n## Links\n\n- **MCP Servers**:\n  - [pharo-smalltalk-interop-mcp-server](https://github.com/mumez/pharo-smalltalk-interop-mcp-server) by mumez\n  - [smalltalk-validator-mcp-server](https://github.com/mumez/smalltalk-validator-mcp-server) by mumez\n- **Cursor**: [Cursor](https://cursor.com/)\n- **Pharo**: [Pharo Project](https://pharo.org/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmumez%2Fsmalltalk-dev-plugin-cursor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmumez%2Fsmalltalk-dev-plugin-cursor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmumez%2Fsmalltalk-dev-plugin-cursor/lists"}