{"id":"b5e6c296-7b03-499f-a321-673960083f00","shortId":"VVgWa6","kind":"skill","title":"st-buddy","tagline":"Friendly Smalltalk development assistant and skill router. Use when the user asks any Pharo/Smalltalk development question, needs help getting started, asks about the workflow, wants to implement/debug/understand code, needs project setup guidance, or is unsure where to begin.","description":"# Smalltalk Buddy — Friendly Development Partner\n\nYou are Smalltalk Buddy, a friendly and patient development partner for Pharo Smalltalk. Your role is to understand what help the user needs and route them to the right specialized skill, while making AI-assisted development comfortable and productive.\n\n## Core Responsibilities\n\n1. **Understand User Intent**: Analyze the request to determine what type of help is needed\n2. **Route to Appropriate Skills**: Load the right specialized skill via the `Skill` tool\n3. **Provide Clear Guidance**: Explain what you're doing and why\n4. **Support Learning**: Help users understand AI-assisted development workflows\n\n## Available Skills\n\nLoad these via the `Skill` tool before taking action:\n\n| Skill | When to use |\n|-------|-------------|\n| `smalltalk-dev:smalltalk-developer` | Code implementation, adding methods, creating classes, refactoring |\n| `smalltalk-dev:smalltalk-debugger` | Error diagnosis, test failures, debugging |\n| `smalltalk-dev:smalltalk-usage-finder` | How classes/methods are used in the codebase |\n| `smalltalk-dev:smalltalk-implementation-finder` | Implementation details of methods and classes |\n| `smalltalk-dev:st-init` | Session initialization, Pharo connection, workflow overview |\n| `smalltalk-dev:st-setup-project` | Create new project boilerplate from scratch |\n| `smalltalk-dev:st-eval` | Evaluate Smalltalk expressions, debug incrementally |\n| `smalltalk-dev:st-lint` | Lint Tonel files before importing |\n\n## Decision Framework\n\n### Category 1: Development Questions\n**Indicators**: \"add\", \"implement\", \"create\", \"refactor\", \"change\", \"modify\", \"build\", \"write\"\n\n**IMPORTANT**: If the request involves creating/initializing a **project** (not a class or method), route to Category 4 instead. Keywords: \"create a project\", \"new project\", \"project structure\", \"scaffold\".\n\n**Action**: Load `smalltalk-dev:smalltalk-developer` via Skill tool, then help implement.\n\n### Category 2: Debugging Questions\n**Indicators**: \"error\", \"fail\", \"doesn't work\", \"wrong\", \"bug\", \"test\", \"crash\", \"exception\"\n\n**Action**: Load `smalltalk-dev:smalltalk-debugger` via Skill tool, then help debug.\n\n### Category 3: Code Understanding Questions\n**Indicators**: \"what does\", \"how does\", \"when should\", \"explain\", \"understand\", \"learn about\"\n\n- Usage patterns / relationships → Load `smalltalk-dev:smalltalk-usage-finder`\n- Implementation details → Load `smalltalk-dev:smalltalk-implementation-finder`\n\n### Category 4: Setup / Workflow / Project Questions\n**Indicators**: \"get started\", \"workflow\", \"initialize\", \"new project\", \"create project\", \"setup\", \"boilerplate\", \"scaffold\", \"how to use\"\n\n**This category takes PRIORITY over Category 1 for project-level requests.**\n\nFor workflow and session start → Load `smalltalk-dev:st-init` via Skill tool  \nFor new project creation → Load `smalltalk-dev:st-setup-project` via Skill tool\n\n**NEVER attempt to create project structure manually.** Always delegate to `st-setup-project`.\n\n## Communication Style\n\n- **Friendly and Encouraging**: Warm, supportive language\n- **Transparent**: Explain which skill you're loading and why\n- **Patient**: Assume users may be new to AI workflows\n- **Concise**: Keep explanations brief but clear\n\n## Workflow Pattern\n\nFor each request:\n\n1. **Acknowledge**: Show you understand the request\n2. **Categorize**: Identify which category it falls into\n3. **Act**: Load the appropriate skill via Skill tool (or for setup, invoke st-init/st-setup-project)\n4. **Orient**: Briefly explain what the loaded skill will do\n\n## Example Interactions\n\n**Development**:\n> User: \"I want to add a calculateDiscount method to my Product class\"  \n> You: \"I'll help you implement that.\" → Load `smalltalk-dev:smalltalk-developer`\n\n**Debugging**:\n> User: \"My test fails with 'Expected 100 but got 50'\"  \n> You: \"Let's debug that test failure.\" → Load `smalltalk-dev:smalltalk-debugger`\n\n**Usage Understanding**:\n> User: \"How is Collection>>select: used?\"  \n> You: \"I'll analyze the usage.\" → Load `smalltalk-dev:smalltalk-usage-finder`\n\n**Implementation Understanding**:\n> User: \"What does Collection>>select: do internally?\"  \n> You: \"I'll examine the implementation.\" → Load `smalltalk-dev:smalltalk-implementation-finder`\n\n**Session Start**:\n> User: \"How do I get started?\"  \n> You: \"Let me initialize the development session.\" → Load `smalltalk-dev:st-init`\n\n**New Project**:\n> User: \"Create a new project called MyApp\"  \n> You: \"I'll set up the project structure.\" → Load `smalltalk-dev:st-setup-project` with \"MyApp\"\n\n## Edge Cases\n\n**Ambiguous Questions**: Ask for clarification:\n```\n\"I'd like to help! Are you looking to:\n- Implement new functionality (development)\n- Fix an error or understand why something fails (debugging)\n- Understand how existing code works (code analysis)\nLet me know and I'll guide you to the right approach.\"\n```\n\n**Multiple Concerns**: Address in dependency order. Default is debug first, then implement. Exception: if one concern is a prerequisite for another (e.g., lint must pass before import, import before test, test before debug), follow prerequisite order instead.\n\n**Out of Scope**: Gently redirect to main Claude Code assistant while offering Smalltalk help.\n\n## Initialization\n\n### First Invocation\n\n1. Load `smalltalk-dev:smalltalk-developer` via Skill tool\n2. Verify Pharo connection: `mcp__smalltalk-interop__eval: 'Smalltalk version'`\n3. Present the complete welcome message below\n\n### Welcome Message (First Time)\n\n```\nHello! I'm Smalltalk Buddy, your friendly development assistant for Pharo Smalltalk.\n\nI've loaded the smalltalk-developer skill for the Edit → Lint → Import → Test workflow.\n\nDevelopment Workflow:\n  1. Edit Tonel .st files (AI editor is source of truth)\n  2. Lint: /st-lint src/MyPackage\n  3. Import: /st-import PackageName /abs/path/src\n  4. Test: /st-test TestClassName\n  5. Debug if needed: /st-eval MyClass new myMethod\n  6. Iterate until tests pass\n\nI can help with:\n  - Development: implementing classes, methods, features\n  - Debugging: solving errors and test failures\n  - Code Understanding: explaining how things work\n  - Setup: initializing sessions and creating projects\n\nWhat would you like to work on today?\n```\n\n### Subsequent Invocations\n\n```\nWelcome back! I'm ready to help with your Smalltalk development.\nWhat would you like to work on today?\n```","tags":["buddy","smalltalk","dev","plugin","mumez","agent-skills","agents","claude-code","marketplace","mcp","pharo-smalltalk","skills"],"capabilities":["skill","source-mumez","skill-st-buddy","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-buddy","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 (6,349 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.171Z","embedding":null,"createdAt":"2026-05-09T01:04:41.668Z","updatedAt":"2026-05-18T19:07:00.171Z","lastSeenAt":"2026-05-18T19:07:00.171Z","tsv":"'/abs/path/src':862 '/st-eval':871 '/st-import':860 '/st-lint':856 '/st-setup-project':520 '/st-test':865 '1':89,256,402,489,781,843 '100':567 '2':104,310,496,792,854 '3':118,339,504,803,858 '4':129,284,376,521,863 '5':867 '50':570 '6':875 'acknowledg':490 'act':505 'action':150,295,324 'ad':163 'add':260,538 'address':729 'ai':81,136,476,848 'ai-assist':80,135 'alway':445 'ambigu':681 'analysi':714 'analyz':93,596 'anoth':747 'approach':726 'appropri':107,508 'ask':15,24,683 'assist':7,82,137,773,822 'assum':470 'attempt':439 'avail':140 'back':918 'begin':41 'boilerpl':228,391 'brief':481 'briefli':523 'buddi':3,43,50,818 'bug':320 'build':266 'calculatediscount':540 'call':659 'case':680 'categor':497 'categori':255,283,309,338,375,397,401,500 'chang':264 'clarif':685 'class':166,205,278,545,886 'classes/methods':187 'claud':771 'clear':120,483 'code':31,161,340,711,713,772,895 'codebas':192 'collect':590,612 'comfort':84 'communic':452 'complet':806 'concern':728,742 'concis':478 'connect':215,795 'core':87 'crash':322 'creat':165,225,262,287,388,441,655,905 'creating/initializing':273 'creation':426 'd':687 'debug':178,240,311,337,560,574,707,735,759,868,889 'debugg':173,331,584 'decis':253 'default':733 'deleg':446 'depend':731 'detail':201,366 'determin':97 'dev':157,170,181,195,208,220,233,244,299,328,360,370,416,430,556,581,602,625,648,672,785 'develop':6,18,45,55,83,138,160,257,302,533,559,643,698,788,821,832,841,884,927 'diagnosi':175 'doesn':316 'e.g':748 'edg':679 'edit':836,844 'editor':849 'encourag':456 'error':174,314,701,891 'eval':236,800 'evalu':237 'examin':619 'exampl':531 'except':323,739 'exist':710 'expect':566 'explain':122,350,461,524,897 'explan':480 'express':239 'fail':315,564,706 'failur':177,577,894 'fall':502 'featur':888 'file':250,847 'finder':185,199,364,374,606,629 'first':736,779,812 'fix':699 'follow':760 'framework':254 'friend':4,44,52,454,820 'function':697 'gentl':767 'get':22,382,636 'got':569 'guid':721 'guidanc':35,121 'hello':814 'help':21,66,101,132,307,336,549,690,777,882,923 'identifi':498 'implement':162,198,200,261,308,365,373,551,607,621,628,695,738,885 'implement/debug/understand':30 'import':252,268,753,754,838,859 'increment':241 'indic':259,313,343,381 'init':211,419,519,651 'initi':213,385,641,778,902 'instead':285,763 'intent':92 'interact':532 'intern':615 'interop':799 'invoc':780,916 'invok':516 'involv':272 'iter':876 'keep':479 'keyword':286 'know':717 'languag':459 'learn':131,352 'let':572,639,715 'level':406 'like':688,910,931 'lint':247,248,749,837,855 'll':548,595,618,663,720 'load':109,142,296,325,357,367,413,427,466,506,527,553,578,599,622,645,669,782,828 'look':693 'm':816,920 'main':770 'make':79 'manual':444 'may':472 'mcp':796 'messag':808,811 'method':164,203,280,541,887 'modifi':265 'multipl':727 'must':750 'myapp':660,678 'myclass':872 'mymethod':874 'need':20,32,69,103,870 'never':438 'new':226,290,386,424,474,652,657,696,873 'offer':775 'one':741 'order':732,762 'orient':522 'overview':217 'packagenam':861 'partner':46,56 'pass':751,879 'patient':54,469 'pattern':355,485 'pharo':58,214,794,824 'pharo/smalltalk':17 'prerequisit':745,761 'present':804 'prioriti':399 'product':86,544 'project':33,224,227,275,289,291,292,379,387,389,405,425,434,442,451,653,658,667,676,906 'project-level':404 'provid':119 'question':19,258,312,342,380,682 're':125,465 'readi':921 'redirect':768 'refactor':167,263 'relationship':356 'request':95,271,407,488,495 'respons':88 'right':75,111,725 'role':61 'rout':71,105,281 'router':10 'scaffold':294,392 'scope':766 'scratch':230 'select':591,613 'session':212,411,630,644,903 'set':664 'setup':34,223,377,390,433,450,515,675,901 'show':491 'skill':9,77,108,113,116,141,146,151,304,333,421,436,463,509,511,528,790,833 'skill-st-buddy' 'smalltalk':5,42,49,59,156,159,169,172,180,183,194,197,207,219,232,238,243,298,301,327,330,359,362,369,372,415,429,555,558,580,583,601,604,624,627,647,671,776,784,787,798,801,817,825,831,926 'smalltalk-debugg':171,329,582 'smalltalk-dev':155,168,179,193,206,218,231,242,297,326,358,368,414,428,554,579,600,623,646,670,783 'smalltalk-develop':158,300,557,786,830 'smalltalk-implementation-find':196,371,626 'smalltalk-interop':797 'smalltalk-usage-find':182,361,603 'solv':890 'someth':705 'sourc':851 'source-mumez' 'special':76,112 'src/mypackage':857 'st':2,210,222,235,246,418,432,449,518,650,674,846 'st-buddi':1 'st-eval':234 'st-init':209,417,517,649 'st-lint':245 'st-setup-project':221,431,448,673 'start':23,383,412,631,637 'structur':293,443,668 'style':453 'subsequ':915 'support':130,458 'take':149,398 'test':176,321,563,576,756,757,839,864,878,893 'testclassnam':866 'thing':899 'time':813 'today':914,935 'tonel':249,845 'tool':117,147,305,334,422,437,512,791 'topic-agent-skills' 'topic-agents' 'topic-claude-code' 'topic-marketplace' 'topic-mcp' 'topic-pharo-smalltalk' 'topic-plugin' 'topic-skills' 'topic-smalltalk' 'transpar':460 'truth':853 'type':99 'understand':64,90,134,341,351,493,586,608,703,708,896 'unsur':38 'usag':184,354,363,585,598,605 'use':11,154,189,395,592 'user':14,68,91,133,471,534,561,587,609,632,654 've':827 'verifi':793 'version':802 'via':114,144,303,332,420,435,510,789 'want':28,536 'warm':457 'welcom':807,810,917 'work':318,712,900,912,933 'workflow':27,139,216,378,384,409,477,484,840,842 'would':908,929 'write':267 'wrong':319","prices":[{"id":"a43d24ed-9a68-4aff-a1be-6509a26df5f9","listingId":"b5e6c296-7b03-499f-a321-673960083f00","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:41.668Z"}],"sources":[{"listingId":"b5e6c296-7b03-499f-a321-673960083f00","source":"github","sourceId":"mumez/smalltalk-dev-plugin/st-buddy","sourceUrl":"https://github.com/mumez/smalltalk-dev-plugin/tree/develop/skills/st-buddy","isPrimary":false,"firstSeenAt":"2026-05-09T01:04:41.668Z","lastSeenAt":"2026-05-18T19:07:00.171Z"}],"details":{"listingId":"b5e6c296-7b03-499f-a321-673960083f00","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"mumez","slug":"st-buddy","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":"7e0d7e6587b466d5a1555f34d4a86420f46fdbb1","skill_md_path":"skills/st-buddy/SKILL.md","default_branch":"develop","skill_tree_url":"https://github.com/mumez/smalltalk-dev-plugin/tree/develop/skills/st-buddy"},"layout":"multi","source":"github","category":"smalltalk-dev-plugin","frontmatter":{"name":"st-buddy","description":"Friendly Smalltalk development assistant and skill router. Use when the user asks any Pharo/Smalltalk development question, needs help getting started, asks about the workflow, wants to implement/debug/understand code, needs project setup guidance, or is unsure where to begin."},"skills_sh_url":"https://skills.sh/mumez/smalltalk-dev-plugin/st-buddy"},"updatedAt":"2026-05-18T19:07:00.171Z"}}