From totto2727
This skill should be used when creating single-file CLI tools with Deno and TypeScript. Relevant when the user asks to build a CLI tool, create a command-line utility, or set up argument parsing with Effect CLI. Common triggers: "create CLI tool", "build command-line app", "deno CLI", "Effect CLI", "argument parsing".
npx claudepluginhub totto2727-org/monorepo --plugin totto2727This skill uses the workspace's default tool permissions.
Rules for building single-file CLI tools with Deno.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Rules for building single-file CLI tools with Deno. For general scripting rules (imports, built-in API preference, prohibited technologies), see script-rules.
.ts file unless explicitly told otherwisechmod +xAlways use Effect CLI for argument parsing:
| Purpose | Package | Registry |
|---|---|---|
| CLI framework | @effect/cli | jsr:@totto2727/fp@3.0/effect/cli |
| Core / Schema | effect | jsr:@totto2727/fp@3.0/effect |
| HTTP client | @effect/platform | jsr:@totto2727/fp@3.0/effect/platform |
| Node runtime | @effect/platform-node | jsr:@totto2727/fp@3.0/effect/platform/node |
| Purpose | Package | Registry |
|---|---|---|
| Terminal spinner | ora | npm:ora |
| Terminal colors | ansis | npm:ansis |
| YAML parsing | @std/yaml | jsr:@std/yaml |
| Path utilities | @std/path | jsr:@std/path |
Only request the minimum permissions needed:
#!/usr/bin/env -S deno run --allow-read --allow-write --allow-net
Common flags: --allow-read, --allow-write, --allow-net, --allow-env, --allow-run, --allow-ffi
chmod +x my-tool.ts
A minimal Effect CLI tool with a single command:
#!/usr/bin/env -S deno run --allow-read
import { Console, Effect } from 'jsr:@totto2727/fp@3.0/effect'
import { Args, Command } from 'jsr:@totto2727/fp@3.0/effect/cli'
import { NodeContext, NodeRuntime } from 'jsr:@totto2727/fp@3.0/effect/platform/node'
import * as process from 'node:process'
const name = Args.text({ name: 'name' })
const main = Command.make('greet', { name }, ({ name }) => Console.log(`Hello, ${name}!`))
const cli = Command.run(main, { name: 'greet', version: '0.1.0' })
cli(process.argv).pipe(Effect.provide(NodeContext.layer), NodeRuntime.runMain)