ai-team 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/cli-developer/SKILL.md +85 -0
- package/.agents/skills/cli-developer/references/design-patterns.md +221 -0
- package/.agents/skills/cli-developer/references/go-cli.md +540 -0
- package/.agents/skills/cli-developer/references/node-cli.md +383 -0
- package/.agents/skills/cli-developer/references/python-cli.md +422 -0
- package/.agents/skills/cli-developer/references/ux-patterns.md +448 -0
- package/.agents/teams/web-product/README.md +1 -14
- package/CHANGELOG.md +14 -0
- package/package.json +1 -1
- package/skills-lock.json +10 -0
- package/src/agents/definitions/agent-manager.yaml +2 -0
- package/src/agents/definitions/backend-dev.yaml +7 -4
- package/src/agents/definitions/cli-dev.yaml +2 -0
- package/src/agents/definitions/code-reviewer.yaml +5 -2
- package/src/agents/definitions/documentation-writer.yaml +2 -0
- package/src/agents/definitions/frontend-dev.yaml +7 -4
- package/src/agents/definitions/planning-agent.yaml +20 -8
- package/src/agents/definitions/product-team-orchestrator.yaml +22 -15
- package/src/agents/definitions/requirement-analyst.yaml +5 -3
- package/src/agents/definitions/tester.yaml +10 -7
- package/templates/bootstrap/base/.agents/teams/web-product/workflows/feature-lifecycle.md +26 -20
- package/.agents/manifest.json +0 -170
- package/.agents/skills/agent-manager/SKILL.md +0 -40
- package/.agents/skills/ai-integration/SKILL.md +0 -69
- package/.agents/skills/back-end-development/SKILL.md +0 -44
- package/.agents/skills/database-management/SKILL.md +0 -111
- package/.agents/skills/front-end-development/SKILL.md +0 -39
- package/.agents/skills/front-end-development/references/component-architecture.md +0 -213
- package/.agents/skills/front-end-development/references/data-fetching-pattern.md +0 -111
- package/.agents/skills/front-end-development/references/state-management.md +0 -223
- package/.agents/skills/front-end-development/references/styling.md +0 -226
- package/.agents/teams/web-product/workflows/feature-lifecycle.md +0 -101
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cli-developer
|
|
3
|
+
description: Use when building CLI tools, implementing argument parsing, or adding interactive prompts. Invoke for CLI design, argument parsing, interactive prompts, progress indicators, shell completions.
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
author: https://github.com/Jeffallan
|
|
7
|
+
version: "1.0.0"
|
|
8
|
+
domain: devops
|
|
9
|
+
triggers: CLI, command-line, terminal app, argument parsing, shell completion, interactive prompt, progress bar, commander, click, typer, cobra
|
|
10
|
+
role: specialist
|
|
11
|
+
scope: implementation
|
|
12
|
+
output-format: code
|
|
13
|
+
related-skills: devops-engineer
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# CLI Developer
|
|
17
|
+
|
|
18
|
+
Senior CLI developer with expertise in building intuitive, cross-platform command-line tools with excellent developer experience.
|
|
19
|
+
|
|
20
|
+
## Role Definition
|
|
21
|
+
|
|
22
|
+
You are a senior CLI developer with 10+ years of experience building developer tools. You specialize in creating fast, intuitive command-line interfaces across Node.js, Python, and Go ecosystems. You build tools with <50ms startup time, comprehensive shell completions, and delightful UX.
|
|
23
|
+
|
|
24
|
+
## When to Use This Skill
|
|
25
|
+
|
|
26
|
+
- Building CLI tools and terminal applications
|
|
27
|
+
- Implementing argument parsing and subcommands
|
|
28
|
+
- Creating interactive prompts and forms
|
|
29
|
+
- Adding progress bars and spinners
|
|
30
|
+
- Implementing shell completions (bash, zsh, fish)
|
|
31
|
+
- Optimizing CLI performance and startup time
|
|
32
|
+
|
|
33
|
+
## Core Workflow
|
|
34
|
+
|
|
35
|
+
1. **Analyze UX** - Identify user workflows, command hierarchy, common tasks
|
|
36
|
+
2. **Design commands** - Plan subcommands, flags, arguments, configuration
|
|
37
|
+
3. **Implement** - Build with appropriate CLI framework for the language
|
|
38
|
+
4. **Polish** - Add completions, help text, error messages, progress indicators
|
|
39
|
+
5. **Test** - Cross-platform testing, performance benchmarks
|
|
40
|
+
|
|
41
|
+
## Reference Guide
|
|
42
|
+
|
|
43
|
+
Load detailed guidance based on context:
|
|
44
|
+
|
|
45
|
+
| Topic | Reference | Load When |
|
|
46
|
+
|-------|-----------|-----------|
|
|
47
|
+
| Design Patterns | `references/design-patterns.md` | Subcommands, flags, config, architecture |
|
|
48
|
+
| Node.js CLIs | `references/node-cli.md` | commander, yargs, inquirer, chalk |
|
|
49
|
+
| Python CLIs | `references/python-cli.md` | click, typer, argparse, rich |
|
|
50
|
+
| Go CLIs | `references/go-cli.md` | cobra, viper, bubbletea |
|
|
51
|
+
| UX Patterns | `references/ux-patterns.md` | Progress bars, colors, help text |
|
|
52
|
+
|
|
53
|
+
## Constraints
|
|
54
|
+
|
|
55
|
+
### MUST DO
|
|
56
|
+
- Keep startup time under 50ms
|
|
57
|
+
- Provide clear, actionable error messages
|
|
58
|
+
- Support --help and --version flags
|
|
59
|
+
- Use consistent flag naming conventions
|
|
60
|
+
- Handle SIGINT (Ctrl+C) gracefully
|
|
61
|
+
- Validate user input early
|
|
62
|
+
- Support both interactive and non-interactive modes
|
|
63
|
+
- Test on Windows, macOS, and Linux
|
|
64
|
+
|
|
65
|
+
### MUST NOT DO
|
|
66
|
+
- Block on synchronous I/O unnecessarily
|
|
67
|
+
- Print to stdout if output will be piped
|
|
68
|
+
- Use colors when output is not a TTY
|
|
69
|
+
- Break existing command signatures (breaking changes)
|
|
70
|
+
- Require interactive input in CI/CD environments
|
|
71
|
+
- Hardcode paths or platform-specific logic
|
|
72
|
+
- Ship without shell completions
|
|
73
|
+
|
|
74
|
+
## Output Templates
|
|
75
|
+
|
|
76
|
+
When implementing CLI features, provide:
|
|
77
|
+
1. Command structure (main entry point, subcommands)
|
|
78
|
+
2. Configuration handling (files, env vars, flags)
|
|
79
|
+
3. Core implementation with error handling
|
|
80
|
+
4. Shell completion scripts if applicable
|
|
81
|
+
5. Brief explanation of UX decisions
|
|
82
|
+
|
|
83
|
+
## Knowledge Reference
|
|
84
|
+
|
|
85
|
+
CLI frameworks (commander, yargs, oclif, click, typer, argparse, cobra, viper), terminal UI (chalk, inquirer, rich, bubbletea), testing (snapshot testing, E2E), distribution (npm, pip, homebrew, releases), performance optimization
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
# CLI Design Patterns
|
|
2
|
+
|
|
3
|
+
## Command Hierarchy
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
mycli # Root command
|
|
7
|
+
├── init [options] # Simple command
|
|
8
|
+
├── config
|
|
9
|
+
│ ├── get <key> # Nested subcommand
|
|
10
|
+
│ ├── set <key> <value>
|
|
11
|
+
│ └── list
|
|
12
|
+
├── deploy [environment] # Command with args
|
|
13
|
+
│ ├── --dry-run # Flag
|
|
14
|
+
│ ├── --force
|
|
15
|
+
│ └── --config <file> # Option with value
|
|
16
|
+
└── plugins
|
|
17
|
+
├── install <name>
|
|
18
|
+
├── list
|
|
19
|
+
└── remove <name>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Flag Conventions
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Boolean flags (presence = true)
|
|
26
|
+
mycli deploy --force --dry-run
|
|
27
|
+
|
|
28
|
+
# Short + long forms
|
|
29
|
+
mycli -v --verbose
|
|
30
|
+
mycli -c config.yml --config config.yml
|
|
31
|
+
|
|
32
|
+
# Required vs optional
|
|
33
|
+
mycli deploy <env> # Positional (required)
|
|
34
|
+
mycli deploy --env production # Flag (optional)
|
|
35
|
+
|
|
36
|
+
# Multiple values
|
|
37
|
+
mycli install pkg1 pkg2 pkg3 # Variadic args
|
|
38
|
+
mycli --exclude node_modules --exclude .git
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Configuration Layers
|
|
42
|
+
|
|
43
|
+
Priority order (highest to lowest):
|
|
44
|
+
|
|
45
|
+
1. **Command-line flags** - Explicit user intent
|
|
46
|
+
2. **Environment variables** - Runtime context
|
|
47
|
+
3. **Config files (project)** - `.myclirc`, `mycli.config.js`
|
|
48
|
+
4. **Config files (user)** - `~/.myclirc`, `~/.config/mycli/config.yml`
|
|
49
|
+
5. **Config files (system)** - `/etc/mycli/config.yml`
|
|
50
|
+
6. **Defaults** - Hard-coded sensible defaults
|
|
51
|
+
|
|
52
|
+
```javascript
|
|
53
|
+
// Example config resolution
|
|
54
|
+
const config = {
|
|
55
|
+
...systemDefaults,
|
|
56
|
+
...loadSystemConfig(),
|
|
57
|
+
...loadUserConfig(),
|
|
58
|
+
...loadProjectConfig(),
|
|
59
|
+
...loadEnvVars(),
|
|
60
|
+
...parseCliFlags(),
|
|
61
|
+
};
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Exit Codes
|
|
65
|
+
|
|
66
|
+
Standard POSIX exit codes:
|
|
67
|
+
|
|
68
|
+
```javascript
|
|
69
|
+
const EXIT_CODES = {
|
|
70
|
+
SUCCESS: 0,
|
|
71
|
+
GENERAL_ERROR: 1,
|
|
72
|
+
MISUSE: 2, // Invalid arguments
|
|
73
|
+
PERMISSION_DENIED: 77,
|
|
74
|
+
NOT_FOUND: 127,
|
|
75
|
+
SIGINT: 130, // Ctrl+C
|
|
76
|
+
};
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Plugin Architecture
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
mycli/
|
|
83
|
+
├── core/ # Core functionality
|
|
84
|
+
├── plugins/
|
|
85
|
+
│ ├── aws/ # Plugin: AWS integration
|
|
86
|
+
│ │ ├── package.json
|
|
87
|
+
│ │ └── index.js
|
|
88
|
+
│ └── github/ # Plugin: GitHub integration
|
|
89
|
+
│ ├── package.json
|
|
90
|
+
│ └── index.js
|
|
91
|
+
└── plugin-loader.js # Discovery & loading
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Plugin discovery:
|
|
95
|
+
1. Check `~/.mycli/plugins/`
|
|
96
|
+
2. Check `node_modules/mycli-plugin-*`
|
|
97
|
+
3. Check `MYCLI_PLUGIN_PATH` env var
|
|
98
|
+
|
|
99
|
+
## Error Handling Patterns
|
|
100
|
+
|
|
101
|
+
```javascript
|
|
102
|
+
// Good: Actionable error messages
|
|
103
|
+
Error: Config file not found at /path/to/config.yml
|
|
104
|
+
|
|
105
|
+
Tried locations:
|
|
106
|
+
• ./mycli.config.yml
|
|
107
|
+
• ~/.myclirc
|
|
108
|
+
• /etc/mycli/config.yml
|
|
109
|
+
|
|
110
|
+
Run 'mycli init' to create a config file, or use --config to specify location.
|
|
111
|
+
|
|
112
|
+
// Bad: Unhelpful errors
|
|
113
|
+
Error: ENOENT
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Interactive vs Non-Interactive
|
|
117
|
+
|
|
118
|
+
```javascript
|
|
119
|
+
// Detect if running in CI/CD
|
|
120
|
+
const isCI = process.env.CI === 'true' || !process.stdout.isTTY;
|
|
121
|
+
|
|
122
|
+
if (isCI) {
|
|
123
|
+
// Non-interactive: fail fast with clear errors
|
|
124
|
+
if (!options.environment) {
|
|
125
|
+
throw new Error('--environment required in non-interactive mode');
|
|
126
|
+
}
|
|
127
|
+
} else {
|
|
128
|
+
// Interactive: prompt user
|
|
129
|
+
const environment = await prompt({
|
|
130
|
+
type: 'select',
|
|
131
|
+
message: 'Select environment:',
|
|
132
|
+
choices: ['development', 'staging', 'production'],
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## State Management
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
~/.mycli/
|
|
141
|
+
├── config.yml # User configuration
|
|
142
|
+
├── cache/ # Cached data
|
|
143
|
+
│ ├── plugins.json
|
|
144
|
+
│ └── api-responses/
|
|
145
|
+
├── credentials.json # Sensitive data (600 perms)
|
|
146
|
+
└── state.json # Session state
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Performance Patterns
|
|
150
|
+
|
|
151
|
+
```javascript
|
|
152
|
+
// Lazy loading: Don't load unused dependencies
|
|
153
|
+
if (command === 'deploy') {
|
|
154
|
+
const deploy = require('./commands/deploy'); // Load on demand
|
|
155
|
+
await deploy.run();
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Caching: Avoid repeated API calls
|
|
159
|
+
const cache = new Cache('~/.mycli/cache', { ttl: 3600 });
|
|
160
|
+
let plugins = await cache.get('plugins');
|
|
161
|
+
if (!plugins) {
|
|
162
|
+
plugins = await fetchPlugins();
|
|
163
|
+
await cache.set('plugins', plugins);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Async operations: Don't block unnecessarily
|
|
167
|
+
await Promise.all([
|
|
168
|
+
validateConfig(),
|
|
169
|
+
checkForUpdates(),
|
|
170
|
+
loadPlugins(),
|
|
171
|
+
]);
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Versioning & Updates
|
|
175
|
+
|
|
176
|
+
```javascript
|
|
177
|
+
// Check for updates (non-blocking)
|
|
178
|
+
checkForUpdates().then(update => {
|
|
179
|
+
if (update.available) {
|
|
180
|
+
console.log(`Update available: ${update.version}`);
|
|
181
|
+
console.log(`Run: npm install -g mycli@latest`);
|
|
182
|
+
}
|
|
183
|
+
}).catch(() => {
|
|
184
|
+
// Silently fail - don't interrupt user workflow
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
// Version compatibility
|
|
188
|
+
const MIN_NODE_VERSION = '18.0.0';
|
|
189
|
+
if (!semver.satisfies(process.version, `>=${MIN_NODE_VERSION}`)) {
|
|
190
|
+
console.error(`mycli requires Node.js ${MIN_NODE_VERSION} or higher`);
|
|
191
|
+
process.exit(1);
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Help Text Design
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
USAGE
|
|
199
|
+
mycli deploy [environment] [options]
|
|
200
|
+
|
|
201
|
+
ARGUMENTS
|
|
202
|
+
environment Target environment (development|staging|production)
|
|
203
|
+
|
|
204
|
+
OPTIONS
|
|
205
|
+
-c, --config <file> Path to config file
|
|
206
|
+
-f, --force Skip confirmation prompts
|
|
207
|
+
-d, --dry-run Preview changes without executing
|
|
208
|
+
-v, --verbose Show detailed output
|
|
209
|
+
|
|
210
|
+
EXAMPLES
|
|
211
|
+
# Deploy to production
|
|
212
|
+
mycli deploy production
|
|
213
|
+
|
|
214
|
+
# Preview staging deployment
|
|
215
|
+
mycli deploy staging --dry-run
|
|
216
|
+
|
|
217
|
+
# Use custom config
|
|
218
|
+
mycli deploy --config ./custom.yml
|
|
219
|
+
|
|
220
|
+
Learn more: https://docs.mycli.dev/deploy
|
|
221
|
+
```
|