comfort over chromeclily

Forest-grown documentation

Start

Install clily and write one comfortable command.

Install @clily/core with a schema library that supports Standard Schema and Standard JSON Schema metadata.

vp add @clily/core zod
import clily from '@clily/core'
import { z } from 'zod'

const run = clily({
  name: 'release',
  completion: true,
  subCommands: {
    deploy: clily.command({
      args: z.object({
        image: z.string(),
        region: z.string().default('us-east-1'),
      }),
      positionals: z.string(),
      run: ({ args, positionals }) => {
        console.log(args.image, args.region, positionals)
      },
    }),
  },
})

await run()
node src/index.ts deploy production --image=ghcr.io/acme/web

clily.command() is the comfort point: nested commands infer locally, without root generic annotations.