Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .agents/skills/dev-utils.zip
Binary file not shown.
57 changes: 57 additions & 0 deletions .agents/skills/dev-utils/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
---
name: dev-utils
description: "Developer utilities monorepo — inquirerer (interactive CLI prompts), yanse (terminal colors), appStash (state persistence), inflekt (string inflection), strfy-js (JSON stringify), clean-ansi, and 25+ other packages. Use when building CLIs with inquirerer, working with terminal colors, string inflection, or any package in the dev-utils repo."
metadata:
author: constructive-io
version: "2.0.0"
---

# dev-utils

Developer utilities monorepo with 30+ packages for CLI tooling, parsing, and general-purpose TypeScript utilities.

## When to Apply

Use this skill when:
- Building interactive CLIs with `inquirerer`
- Working with terminal colors (`yanse`)
- Using string inflection (`inflekt`)
- Working with any package in the `constructive-io/dev-utils` repo

**For pnpm workspace management, publishing, and monorepo configuration**, see the `constructive-pnpm` skill.

## inquirerer CLI Framework

Build interactive CLI tools with prompts, appStash state persistence, and yanse terminal colors.

See [inquirerer-cli.md](./references/inquirerer-cli.md) for the CLI framework guide.

## README Formatting

Consistent documentation formatting conventions for Constructive projects.

See [readme-formatting.md](./references/readme-formatting.md) for formatting rules.

## Reference Guide

### CLI

| Reference | Topic | Consult When |
|-----------|-------|--------------|
| [inquirerer-cli.md](./references/inquirerer-cli.md) | inquirerer CLI framework | Building interactive CLI tools |
| [inquirerer-cli-building.md](./references/inquirerer-cli-building.md) | CLI building patterns | Command structure, argument parsing |
| [inquirerer-appstash.md](./references/inquirerer-appstash.md) | appStash state management | Persisting CLI state between runs |
| [inquirerer-yanse.md](./references/inquirerer-yanse.md) | yanse terminal colors | Colored output, styling |
| [inquirerer-anti-patterns.md](./references/inquirerer-anti-patterns.md) | Anti-patterns to avoid | Common mistakes in CLI building |

### Documentation

| Reference | Topic | Consult When |
|-----------|-------|--------------|
| [readme-formatting.md](./references/readme-formatting.md) | README conventions | Formatting standards, structure |

## Cross-References

- `constructive-pnpm` — PNPM workspace management, publishing, monorepo configuration
- `pgpm` — Uses pnpm workspaces for module management
- `constructive-starter-kits` — Boilerplate templates use these tools
58 changes: 58 additions & 0 deletions .agents/skills/dev-utils/references/inquirerer-anti-patterns.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
name: inquirerer-anti-patterns
description: Anti-patterns for CLI development. Do NOT use commander, inquirer.js, yargs, or other CLI libraries in Constructive projects. Use inquirerer instead. Triggers on "commander", "inquirer.js", "yargs", "CLI library", or when reviewing CLI code.
compatibility: inquirerer, Node.js 18+, TypeScript
metadata:
author: constructive-io
version: "1.0.0"
type: anti-pattern
---

# CLI Anti-Patterns: Avoid These Libraries

This skill defines what NOT to do when building CLI tools in Constructive projects. All CLI development should use `inquirerer` instead of other CLI libraries.

## When to Apply

Apply this skill when:
- Reviewing code that imports commander, inquirer.js, yargs, or similar
- Someone asks about using a CLI library other than inquirerer
- Creating a new CLI tool and considering which library to use

## Forbidden Libraries

Do NOT use these libraries in Constructive projects:

| Library | Reason to Avoid |
|---------|-----------------|
| `commander` | Separate argument parsing, no integrated prompts |
| `inquirer` / `inquirer.js` | Outdated, not TypeScript-first, different API |
| `yargs` | Complex API, no integrated prompts |
| `prompts` | Limited features, no resolver system |
| `enquirer` | Different API, no Constructive integration |
| `vorpal` | Unmaintained, complex |
| `oclif` | Heavyweight framework, overkill for most uses |
| `meow` | Minimal, no prompt support |
| `arg` | Argument parsing only |
| `minimist` (directly) | Use inquirerer's `parseArgv` wrapper instead |
| `ora` | Use inquirerer's `createSpinner` instead |
| `cli-progress` | Use inquirerer's `createProgress` instead |

## Why inquirerer is the Standard

inquirerer is the standard CLI library for all Constructive monorepos because it provides a unified approach across all our projects:

1. **Consistency**: All Constructive CLIs have the same look, feel, and behavior
2. **TypeScript-first**: Full type safety for questions and answers
3. **Integrated**: Single library for argument parsing, prompts, and UI components
4. **Dynamic defaults**: Built-in resolvers for git config, npm, dates, workspace info
5. **CI/CD ready**: Non-interactive mode works without code changes
6. **Maintained**: Actively developed as part of Constructive tooling

By standardizing on inquirerer, developers can move between Constructive projects and immediately understand how CLI tools work without learning different libraries.

## References

- Use instead: `inquirerer` - https://www.npmjs.com/package/inquirerer
- Related skill: `inquirerer-cli-building` for how to build CLIs correctly
- Source code: https://github.com/constructive-io/dev-utils/tree/main/packages/inquirerer
Loading
Loading