Babysitter cosmiconfig-setup

Set up cosmiconfig for hierarchical configuration loading from multiple sources and formats.

install
source · Clone the upstream repo
git clone https://github.com/a5c-ai/babysitter
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/a5c-ai/babysitter "$T" && mkdir -p ~/.claude/skills && cp -r "$T/library/specializations/cli-mcp-development/skills/cosmiconfig-setup" ~/.claude/skills/a5c-ai-babysitter-cosmiconfig-setup && rm -rf "$T"
manifest: library/specializations/cli-mcp-development/skills/cosmiconfig-setup/SKILL.md
source content

Cosmiconfig Setup

Set up cosmiconfig for hierarchical config loading.

Capabilities

  • Configure cosmiconfig search paths
  • Set up format loaders (JSON, YAML, TOML)
  • Create TypeScript config support
  • Implement config caching
  • Handle config validation

Generated Patterns

import { cosmiconfig, cosmiconfigSync } from 'cosmiconfig';
import { TypeScriptLoader } from 'cosmiconfig-typescript-loader';

const moduleName = 'myapp';

const explorer = cosmiconfig(moduleName, {
  searchPlaces: [
    'package.json',
    `.${moduleName}rc`,
    `.${moduleName}rc.json`,
    `.${moduleName}rc.yaml`,
    `.${moduleName}rc.yml`,
    `.${moduleName}rc.js`,
    `.${moduleName}rc.ts`,
    `.${moduleName}rc.cjs`,
    `${moduleName}.config.js`,
    `${moduleName}.config.ts`,
    `${moduleName}.config.cjs`,
  ],
  loaders: {
    '.ts': TypeScriptLoader(),
  },
});

export async function loadConfig(searchFrom?: string) {
  const result = await explorer.search(searchFrom);
  if (!result || result.isEmpty) {
    return { config: getDefaultConfig(), filepath: null };
  }
  return { config: { ...getDefaultConfig(), ...result.config }, filepath: result.filepath };
}

Target Processes

  • configuration-management-system
  • cli-application-bootstrap
  • mcp-server-bootstrap