CtrlK
BlogDocsLog inGet started
Tessl Logo

modern-tools

Use when working with tools-core utilities, rspack integration, or modern tooling. Covers logging, npm management, process spawning, git helpers, and Meteor app configuration APIs.

66

49.50x
Quality

48%

Does it follow best practices?

Impact

99%

49.50x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No known issues

Optimize this skill with Tessl

npx tessl skill review --optimize ./.github/skills/modern-tools/SKILL.md
SKILL.md
Quality
Evals
Security

Modern Tools

Utility packages for modern tooling, bundler integrations, and native solutions.

tools-core (/packages/tools-core)

Central utility package providing helpers for npm, logging, process management, and Meteor configuration. This is the foundation for modern tool integrations.

Logging Module (lib/log.js)

import { logProgress, logError, logInfo, logSuccess } from 'meteor/tools-core';

logProgress('Building application...');  // Blue
logSuccess('Build complete');            // Green
logError('Build failed');                // Red
logInfo('Using Rspack bundler');         // Purple

Respects METEOR_DISABLE_COLORS environment variable.

NPM Management Module (lib/npm.js)

FunctionDescription
getNodeBinaryPath(binaryName)Gets path to Node binaries (npm, npx, node)
checkNpmDependencyExists(dep, opts)Checks if npm package is installed
checkNpmBinaryExists(binary, opts)Checks if binary exists in node_modules/.bin
checkNpmDependencyVersion(dep, opts)Validates semver with conditions (gte, lt, eq)
installNpmDependency(deps, opts)Installs dependencies (npm/yarn, dev/exact flags)
getNpmCommand(args)Returns npm command with meteor npm fallback
getNpxCommand(args)Returns npx command with meteor npx fallback
getYarnCommand(args)Gets yarn command path
isYarnProject(opts)Detects yarn projects (yarn.lock, packageManager)
getMonorepoPath(opts)Detects monorepo root (workspaces, lerna, pnpm)
isMonorepo(opts)Boolean monorepo detection

Process Management Module (lib/process.js)

FunctionDescription
spawnProcess(cmd, args, opts)Spawns process with streaming output, color preservation
stopProcess(proc, opts)Graceful termination with SIGTERM/SIGKILL fallback
isProcessRunning(proc)Checks if process is still running
isPortAvailable(port, host)Checks if port is free
waitForPort(port, opts)Waits for port availability with timeout

Options for spawnProcess: env, cwd, detached, onStdout, onStderr, onExit, onError

Meteor Configuration Module (lib/meteor.js)

Application Configuration:

FunctionDescription
getMeteorAppDir()Gets application root directory
getMeteorAppPackageJson()Parses app's package.json
getMeteorAppConfig()Retrieves Meteor config from package.json or Plugin
getMeteorAppPort()Gets app port from environment
getMeteorAppConfigModern()Gets modern bundler configuration
isMeteorAppConfigModernVerbose()Checks verbose flag
hasMeteorAppConfigAutoInstallDeps()Auto-install deps flag

Entry Points:

FunctionDescription
getMeteorAppEntrypoints()Gets main/test modules for client/server
getMeteorInitialAppEntrypoints()Gets initial entry points with HTML detection
isMeteorAppTestModule()Checks if project is test module
setMeteorAppEntrypoints(opts)Sets entry points via environment variables
setMeteorAppIgnore(pattern)Sets file ignore patterns
setMeteorAppCustomScriptUrl(url)Sets custom script URLs

Command Detection:

FunctionDescription
isMeteorAppRun()Running in 'run' mode
isMeteorAppBuild()Running in 'build' or 'deploy'
isMeteorAppUpdate()Running in 'update'
isMeteorAppTest()In test mode
isMeteorAppTestFullApp()Test mode with full-app flag
isMeteorAppTestWatch()Test mode in watch mode
isMeteorAppNativeAndroid()Native Android mode
isMeteorAppNativeIos()Native iOS mode
isMeteorAppNative()Any native mode
isMeteorAppDevelopment()Development mode
isMeteorAppProduction()Production mode
isMeteorAppDebug()Debug mode

Package Detection:

FunctionDescription
isMeteorBlazeProject()Has blaze/blaze-html-templates
isMeteorBlazeHotProject()Blaze with hot reload
isMeteorCoffeescriptProject()Has CoffeeScript
isMeteorLessProject()Has Less CSS
isMeteorScssProject()Has SCSS/Sass
isMeteorTypescriptProject()Has TypeScript
isMeteorBundleVisualizerProject()Has bundle visualizer
isMeteorPackagesTest()test-packages command

File Operations:

FunctionDescription
getMeteorAppFilesAndFolders(opts)Scans app directory (recursive, with ignore)
getMeteorAppPackages()Lists all loaded packages
getMeteorEnvPackageDirs()Gets package directories from env vars
getMeteorToolsRequire(filePath)Requires module relative to Meteor tools

Global State Module (lib/global-state.js)

Maintains persistent state across file changes during development:

import { getGlobalState, setGlobalState, removeGlobalState, clearGlobalState } from 'meteor/tools-core';

setGlobalState('buildStartTime', Date.now());
const startTime = getGlobalState('buildStartTime');

Git Management Module (lib/git.js)

FunctionDescription
isGitRepository(dir)Checks if directory is git repo
gitignoreExists(dir)Checks .gitignore existence
ensureGitignoreExists(dir, entries)Creates .gitignore with initial entries
getMissingGitignoreEntries(dir, entries)Finds missing entries
addGitignoreEntries(dir, entries, ctx)Adds entries with context logging

String Utilities (lib/string.js)

FunctionDescription
capitalizeFirstLetter(str)Capitalizes first character
shuffleString(str)Shuffles string characters
joinWithAnd(items, opts)Human-readable list ("a, b, and c")

Rspack Integration (/packages/rspack)

Modern bundler integration using Rspack (Rust-based Webpack alternative).

Package Structure

FileDescription
lib/constants.jsDefault versions, global state keys, build contexts
lib/dependencies.jsDependency checking and auto-installation
lib/build-context.jsBuild directory management
lib/config.jsMeteor configuration for Rspack
lib/processes.jsRspack process spawning
lib/compilation.jsCompilation tracking

Build Contexts

ContextDirectoryPurpose
RSPACK_BUILD_CONTEXT_buildBuild output
RSPACK_ASSETS_CONTEXTbuild-assetsStatic assets
RSPACK_CHUNKS_CONTEXTbuild-chunksChunk bundles
RSPACK_DOCTOR_CONTEXT.rsdoctorAnalysis/diagnostics

Key Dependencies

  • @rspack/core ^1.7.1
  • @meteorjs/rspack ^0.3.56 (configuration logic)
  • @rspack/plugin-react-refresh ^1.4.3
  • swc-loader ^0.2.6

Integration with tools-core

  • Uses getMeteorInitialAppEntrypoints() for entry points
  • Uses command detection functions for build mode awareness
  • Uses process spawning and npm utilities

TypeScript Compiler (/packages/typescript)

Compiler plugin for TypeScript/TSX file compilation.

Registered Plugin: compile-typescript

Supported Extensions: .ts, .tsx

Implied Packages: modules, ecmascript-runtime, babel-runtime, promise, dynamic-import

Features:

  • Transpiles TypeScript before Babel processing
  • Supports client/server/legacy browser targets
  • Integrates with React Fast Refresh for HMR

Limitations:

  • Per-file transpilation (no cross-file type analysis)
  • No tsconfig.json support (Meteor manages settings)
  • No type checking during compilation
  • No .d.ts generation

WebApp & Express (/packages/webapp)

HTTP server integration using Express.js 5.x framework.

Key APIs

import { WebApp } from 'meteor/webapp';

// Middleware registration
WebApp.connectHandlers.use('/api', myMiddleware);
WebApp.handlers.use(compression());

// Direct Express access
WebApp.expressApp.get('/health', (req, res) => res.send('OK'));

// Server instance
WebApp.httpServer;

// Hooks
WebApp.onListening(() => console.log('Server ready'));

Express Exports

PropertyDescription
WebApp.connectHandlersExpress middleware registry (legacy name)
WebApp.handlersCurrent middleware registry
WebApp.rawConnectHandlersRaw Express handlers
WebApp.expressAppDirect Express app instance
WebApp.httpServerHTTP server instance
WebApp.expressExpress module export

Dependencies: express@5.1.0, cookie-parser@1.4.6, compression@1.7.4, errorhandler@1.5.1

Repository
meteor/meteor
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.