agentsclimarketplace

St lint

Skill mumez/smalltalk-dev-plugin/skills/st-lint

Claude Code plugin for AI-driven Smalltalk (Pharo) development

Install
npx -y skills add mumez/smalltalk-dev-plugin --skill st-lint

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing 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.

What its author says it does

Copied from the file, not written here

Smalltalk best-practices linter for Tonel files. Use when validating .st files before importing to Pharo, checking code quality after editing, or diagnosing style issues in a package.

SKILL.md

3.0 KB, as published. Nobody here has run it

Lint Tonel Files

Validate Tonel .st files for Smalltalk best practices before importing to Pharo.

When to Use

  • Before every /st-import — lint catches issues that would silently corrupt the image
  • After editing .st files — confirm no style regressions
  • When import fails with unexpected behavior — lint may reveal the root cause

Step 1: Check Meta Files (manual — MCP cannot validate these)

Before linting, verify required Tonel meta files exist:

FileLocationRequired
.projectrepo root
src/.propertiessrc/ directory
package.steach package directory

If any are missing, warn the user, suggest /st-setup-project, and continue linting — lint results are still useful even when meta files are absent, since the linter operates on .st file syntax independently.

Expected src/.properties content:

{
	#format : #tonel
}

Step 2: Collect .st Files

Resolve the target to a list of absolute paths:

  • Single file (src/MyPackage/MyClass.st): use directly, skip if it is package.st
  • Package directory (src/MyPackage): Glob **/*.st, exclude package.st
  • src root (src): Glob **/*.st across all packages, exclude package.st

Always convert to absolute paths before passing to the MCP tool.

Step 3: Lint Each File

Call mcp__smalltalk-validator__lint_tonel_smalltalk_from_file with the absolute path, one file at a time.

Step 4: Report Results

Show a summary per file:

src/MyPackage/MyClass.st — ✅ clean
src/MyPackage/AnotherClass.st — ⚠️ 2 warnings
  • [warning] Method #doSomething has no comment
  • [warning] Temporary variable 'x' shadows outer scope
src/MyPackage/BrokenClass.st — ❌ 1 error
  • [error] Syntax error near ']'

Exit status semantics:

ResultMeaningAction
0 — cleanNo issuesProceed to import
1 — warnings onlyStyle issuesProceed to import, consider fixing
2 — errors foundSyntax/structural errorsFix before importing

Interpreting Common Issues

IssueLikely CauseFix
Syntax error near '...'Unclosed bracket/paren, missing periodCheck the indicated line
Method has no commentMissing method commentAdd a brief comment
Temporary variable shadows outer scopeVariable name collisionRename the temp var
Missing package.stpackage.st not foundCreate it: Package { #name : 'PkgName' }

Related Skills

  • smalltalk-dev:st-setup-project — Create missing meta files
  • smalltalk-dev:smalltalk-developer — Full Edit → Lint → Import → Test workflow

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.