Skip to content

Commit 3d61e4c

Browse files
authored
Merge pull request #86 from constructive-io/feat/add-inquirerer-skill
feat: add dev-utils skill covering repo packages
2 parents 2bb590b + 4a0422f commit 3d61e4c

9 files changed

Lines changed: 1538 additions & 0 deletions

File tree

.agents/skills/dev-utils.zip

15.5 KB
Binary file not shown.

.agents/skills/dev-utils/SKILL.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
---
2+
name: dev-utils
3+
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."
4+
metadata:
5+
author: constructive-io
6+
version: "2.0.0"
7+
---
8+
9+
# dev-utils
10+
11+
Developer utilities monorepo with 30+ packages for CLI tooling, parsing, and general-purpose TypeScript utilities.
12+
13+
## When to Apply
14+
15+
Use this skill when:
16+
- Building interactive CLIs with `inquirerer`
17+
- Working with terminal colors (`yanse`)
18+
- Using string inflection (`inflekt`)
19+
- Working with any package in the `constructive-io/dev-utils` repo
20+
21+
**For pnpm workspace management, publishing, and monorepo configuration**, see the `constructive-pnpm` skill.
22+
23+
## inquirerer CLI Framework
24+
25+
Build interactive CLI tools with prompts, appStash state persistence, and yanse terminal colors.
26+
27+
See [inquirerer-cli.md](./references/inquirerer-cli.md) for the CLI framework guide.
28+
29+
## README Formatting
30+
31+
Consistent documentation formatting conventions for Constructive projects.
32+
33+
See [readme-formatting.md](./references/readme-formatting.md) for formatting rules.
34+
35+
## Reference Guide
36+
37+
### CLI
38+
39+
| Reference | Topic | Consult When |
40+
|-----------|-------|--------------|
41+
| [inquirerer-cli.md](./references/inquirerer-cli.md) | inquirerer CLI framework | Building interactive CLI tools |
42+
| [inquirerer-cli-building.md](./references/inquirerer-cli-building.md) | CLI building patterns | Command structure, argument parsing |
43+
| [inquirerer-appstash.md](./references/inquirerer-appstash.md) | appStash state management | Persisting CLI state between runs |
44+
| [inquirerer-yanse.md](./references/inquirerer-yanse.md) | yanse terminal colors | Colored output, styling |
45+
| [inquirerer-anti-patterns.md](./references/inquirerer-anti-patterns.md) | Anti-patterns to avoid | Common mistakes in CLI building |
46+
47+
### Documentation
48+
49+
| Reference | Topic | Consult When |
50+
|-----------|-------|--------------|
51+
| [readme-formatting.md](./references/readme-formatting.md) | README conventions | Formatting standards, structure |
52+
53+
## Cross-References
54+
55+
- `constructive-pnpm` — PNPM workspace management, publishing, monorepo configuration
56+
- `pgpm` — Uses pnpm workspaces for module management
57+
- `constructive-starter-kits` — Boilerplate templates use these tools
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
name: inquirerer-anti-patterns
3+
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.
4+
compatibility: inquirerer, Node.js 18+, TypeScript
5+
metadata:
6+
author: constructive-io
7+
version: "1.0.0"
8+
type: anti-pattern
9+
---
10+
11+
# CLI Anti-Patterns: Avoid These Libraries
12+
13+
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.
14+
15+
## When to Apply
16+
17+
Apply this skill when:
18+
- Reviewing code that imports commander, inquirer.js, yargs, or similar
19+
- Someone asks about using a CLI library other than inquirerer
20+
- Creating a new CLI tool and considering which library to use
21+
22+
## Forbidden Libraries
23+
24+
Do NOT use these libraries in Constructive projects:
25+
26+
| Library | Reason to Avoid |
27+
|---------|-----------------|
28+
| `commander` | Separate argument parsing, no integrated prompts |
29+
| `inquirer` / `inquirer.js` | Outdated, not TypeScript-first, different API |
30+
| `yargs` | Complex API, no integrated prompts |
31+
| `prompts` | Limited features, no resolver system |
32+
| `enquirer` | Different API, no Constructive integration |
33+
| `vorpal` | Unmaintained, complex |
34+
| `oclif` | Heavyweight framework, overkill for most uses |
35+
| `meow` | Minimal, no prompt support |
36+
| `arg` | Argument parsing only |
37+
| `minimist` (directly) | Use inquirerer's `parseArgv` wrapper instead |
38+
| `ora` | Use inquirerer's `createSpinner` instead |
39+
| `cli-progress` | Use inquirerer's `createProgress` instead |
40+
41+
## Why inquirerer is the Standard
42+
43+
inquirerer is the standard CLI library for all Constructive monorepos because it provides a unified approach across all our projects:
44+
45+
1. **Consistency**: All Constructive CLIs have the same look, feel, and behavior
46+
2. **TypeScript-first**: Full type safety for questions and answers
47+
3. **Integrated**: Single library for argument parsing, prompts, and UI components
48+
4. **Dynamic defaults**: Built-in resolvers for git config, npm, dates, workspace info
49+
5. **CI/CD ready**: Non-interactive mode works without code changes
50+
6. **Maintained**: Actively developed as part of Constructive tooling
51+
52+
By standardizing on inquirerer, developers can move between Constructive projects and immediately understand how CLI tools work without learning different libraries.
53+
54+
## References
55+
56+
- Use instead: `inquirerer` - https://www.npmjs.com/package/inquirerer
57+
- Related skill: `inquirerer-cli-building` for how to build CLIs correctly
58+
- Source code: https://github.com/constructive-io/dev-utils/tree/main/packages/inquirerer

0 commit comments

Comments
 (0)