@zweer/dev 1.3.0 → 2.1.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/LICENSE +1 -1
- package/README.md +68 -795
- package/configs/_biome.json +38 -0
- package/configs/commitlint.config.ts +1 -0
- package/configs/editorconfig +16 -0
- package/configs/lefthook.yml +38 -0
- package/configs/lockfile-lintrc.json +6 -0
- package/configs/npmpackagejsonlintrc.json +34 -0
- package/configs/tsconfig.json +9 -0
- package/configs/tsdown.config.ts +8 -0
- package/configs/vitest.config.ts +12 -0
- package/dist/index.d.mts +1 -0
- package/dist/index.mjs +247 -0
- package/dist/index.mjs.map +1 -0
- package/kiro/agents/zweer-setup.json +38 -0
- package/kiro/prompts/zweer-setup.md +55 -0
- package/kiro/skills/agent-template/SKILL.md +22 -0
- package/kiro/skills/agent-template/references/base.json +38 -0
- package/kiro/skills/agent-template/references/example-monorepo-library.json +60 -0
- package/kiro/skills/agent-template/references/example-webapp-vercel.json +54 -0
- package/kiro/skills/prompt-template/SKILL.md +23 -0
- package/kiro/skills/prompt-template/references/example-library.md +56 -0
- package/kiro/skills/prompt-template/references/example-webapp.md +57 -0
- package/kiro/skills/skill-templates/SKILL.md +23 -0
- package/kiro/skills/skill-templates/references/new-package.md +72 -0
- package/kiro/skills/steering-templates/SKILL.md +31 -0
- package/kiro/skills/steering-templates/references/build-tooling.md +62 -0
- package/kiro/skills/steering-templates/references/code-style.md +83 -0
- package/kiro/skills/steering-templates/references/commit-conventions.md +58 -0
- package/kiro/skills/steering-templates/references/interaction.md +41 -0
- package/kiro/skills/steering-templates/references/testing.md +61 -0
- package/kiro/steering/build-tooling.md +62 -0
- package/kiro/steering/code-style.md +83 -0
- package/kiro/steering/commit-conventions.md +58 -0
- package/kiro/steering/interaction.md +41 -0
- package/kiro/steering/testing.md +61 -0
- package/package.json +42 -57
- package/templates/monorepo/CHANGELOG.md +5 -0
- package/templates/monorepo/README.md +22 -0
- package/templates/monorepo/package.json +30 -0
- package/templates/monorepo/packages/core/CHANGELOG.md +5 -0
- package/templates/monorepo/packages/core/README.md +21 -0
- package/templates/monorepo/packages/core/package.json +28 -0
- package/templates/monorepo/packages/core/src/index.ts +3 -0
- package/templates/monorepo/packages/core/test/index.test.ts +9 -0
- package/templates/monorepo/tsdown.config.ts +12 -0
- package/templates/monorepo/vitest.config.ts +12 -0
- package/templates/single/CHANGELOG.md +5 -0
- package/templates/single/README.md +30 -0
- package/templates/single/package.json +38 -0
- package/templates/single/src/index.ts +3 -0
- package/templates/single/test/index.test.ts +9 -0
- package/templates/single/tsdown.config.ts +11 -0
- package/workflows/base/ci.yml +24 -0
- package/workflows/base/dependabot-auto-merge.yml +43 -0
- package/workflows/base/dependabot-post-update.yml +38 -0
- package/workflows/base/dependabot.yml +39 -0
- package/workflows/base/pr.yml +41 -0
- package/workflows/base/security.yml +25 -0
- package/workflows/docs/docs.yml +47 -0
- package/workflows/library/npm.yml +45 -0
- package/agents/data/zweer_data_engineer.md +0 -436
- package/agents/design/zweer_ui_designer.md +0 -171
- package/agents/design/zweer_ui_ux.md +0 -124
- package/agents/infrastructure/zweer_infra_cdk.md +0 -701
- package/agents/infrastructure/zweer_infra_devops.md +0 -148
- package/agents/infrastructure/zweer_infra_observability.md +0 -610
- package/agents/infrastructure/zweer_infra_terraform.md +0 -658
- package/agents/mobile/zweer_mobile_android.md +0 -636
- package/agents/mobile/zweer_mobile_flutter.md +0 -623
- package/agents/mobile/zweer_mobile_ionic.md +0 -550
- package/agents/mobile/zweer_mobile_ios.md +0 -504
- package/agents/mobile/zweer_mobile_react_native.md +0 -561
- package/agents/quality/zweer_qa_documentation.md +0 -202
- package/agents/quality/zweer_qa_performance.md +0 -160
- package/agents/quality/zweer_qa_security.md +0 -197
- package/agents/quality/zweer_qa_testing.md +0 -189
- package/agents/services/zweer_svc_api_gateway.md +0 -553
- package/agents/services/zweer_svc_containers.md +0 -575
- package/agents/services/zweer_svc_lambda.md +0 -373
- package/agents/services/zweer_svc_messaging.md +0 -543
- package/agents/services/zweer_svc_microservices.md +0 -502
- package/agents/web/zweer_web_api_integration.md +0 -500
- package/agents/web/zweer_web_backend.md +0 -358
- package/agents/web/zweer_web_database.md +0 -357
- package/agents/web/zweer_web_frontend.md +0 -375
- package/agents/web/zweer_web_reader.md +0 -229
- package/agents/write/zweer_write_content.md +0 -499
- package/agents/write/zweer_write_narrative.md +0 -409
- package/agents/write/zweer_write_style.md +0 -247
- package/agents/write/zweer_write_warmth.md +0 -282
- package/cli/commands/bootstrap.d.ts +0 -4
- package/cli/commands/bootstrap.js +0 -377
- package/cli/commands/cao/agent/create.d.ts +0 -25
- package/cli/commands/cao/agent/create.js +0 -221
- package/cli/commands/cao/agent/index.d.ts +0 -2
- package/cli/commands/cao/agent/index.js +0 -8
- package/cli/commands/cao/agent/list.d.ts +0 -3
- package/cli/commands/cao/agent/list.js +0 -29
- package/cli/commands/cao/agent/remove.d.ts +0 -5
- package/cli/commands/cao/agent/remove.js +0 -39
- package/cli/commands/cao/index.d.ts +0 -2
- package/cli/commands/cao/index.js +0 -20
- package/cli/commands/cao/install.d.ts +0 -10
- package/cli/commands/cao/install.js +0 -59
- package/cli/commands/cao/launch.d.ts +0 -3
- package/cli/commands/cao/launch.js +0 -21
- package/cli/commands/cao/list.d.ts +0 -6
- package/cli/commands/cao/list.js +0 -36
- package/cli/commands/cao/server.d.ts +0 -3
- package/cli/commands/cao/server.js +0 -20
- package/cli/commands/cao/status.d.ts +0 -2
- package/cli/commands/cao/status.js +0 -25
- package/cli/commands/cao/sync.d.ts +0 -6
- package/cli/commands/cao/sync.js +0 -52
- package/cli/commands/cao/uninstall.d.ts +0 -2
- package/cli/commands/cao/uninstall.js +0 -16
- package/cli/commands/setup.d.ts +0 -4
- package/cli/commands/setup.js +0 -346
- package/cli/index.d.ts +0 -2
- package/cli/index.js +0 -13
- package/cli/utils/agents.d.ts +0 -8
- package/cli/utils/agents.js +0 -55
- package/cli/utils/cao.d.ts +0 -11
- package/cli/utils/cao.js +0 -56
- package/cli/utils/paths.d.ts +0 -5
- package/cli/utils/paths.js +0 -11
- package/templates/orchestrator_lambda.md +0 -263
- package/templates/orchestrator_microservices.md +0 -345
- package/templates/orchestrator_mobile.md +0 -199
- package/templates/orchestrator_webapp.md +0 -190
- package/templates/orchestrator_writing.md +0 -306
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: zweer_write_warmth
|
|
3
|
-
description: Adds warmth, emotion, and human authenticity to writing
|
|
4
|
-
model: claude-sonnet-4.5
|
|
5
|
-
mcpServers:
|
|
6
|
-
cao-mcp-server:
|
|
7
|
-
type: stdio
|
|
8
|
-
command: uvx
|
|
9
|
-
args:
|
|
10
|
-
- "--from"
|
|
11
|
-
- "git+https://github.com/awslabs/cli-agent-orchestrator.git@main"
|
|
12
|
-
- "cao-mcp-server"
|
|
13
|
-
tools: ["*"]
|
|
14
|
-
allowedTools: ["fs_read", "fs_write", "execute_bash", "@cao-mcp-server"]
|
|
15
|
-
toolsSettings:
|
|
16
|
-
execute_bash:
|
|
17
|
-
alwaysAllow:
|
|
18
|
-
- preset: "readOnly"
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
# Warmth Agent
|
|
22
|
-
|
|
23
|
-
## Description
|
|
24
|
-
|
|
25
|
-
Specialized in adding warmth, emotion, and human connection to writing. Makes text feel personal, empathetic, and authentic.
|
|
26
|
-
|
|
27
|
-
## Instructions
|
|
28
|
-
|
|
29
|
-
You are an expert at infusing writing with genuine human warmth. Your job is to make readers feel understood, connected, and emotionally engaged—without being cheesy or manipulative.
|
|
30
|
-
|
|
31
|
-
### Responsibilities
|
|
32
|
-
|
|
33
|
-
1. **Add Empathy**: Show understanding of reader's feelings
|
|
34
|
-
2. **Create Connection**: Build rapport with the reader
|
|
35
|
-
3. **Inject Personality**: Add human quirks and authenticity
|
|
36
|
-
4. **Balance Emotion**: Warm without being saccharine
|
|
37
|
-
5. **Show Vulnerability**: Admit imperfections honestly
|
|
38
|
-
6. **Build Trust**: Be genuine and relatable
|
|
39
|
-
|
|
40
|
-
### Warmth Techniques
|
|
41
|
-
|
|
42
|
-
**Acknowledge Struggles**:
|
|
43
|
-
```
|
|
44
|
-
❌ Follow these steps to deploy.
|
|
45
|
-
✅ Deployment can be nerve-wracking. Let's walk through it together.
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
**Share Experience**:
|
|
49
|
-
```
|
|
50
|
-
❌ This approach works well.
|
|
51
|
-
✅ I've deployed this way dozens of times. It just works.
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
**Use "We" Language**:
|
|
55
|
-
```
|
|
56
|
-
❌ You should implement error handling.
|
|
57
|
-
✅ Let's add error handling so we catch issues early.
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
**Admit Imperfection**:
|
|
61
|
-
```
|
|
62
|
-
❌ This is the perfect solution.
|
|
63
|
-
✅ This isn't perfect, but it's solved my problem for years.
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
**Show Understanding**:
|
|
67
|
-
```
|
|
68
|
-
❌ Configure your environment variables.
|
|
69
|
-
✅ Environment variables are annoying to set up. I know.
|
|
70
|
-
But once they're done, you're golden.
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
**Add Encouragement**:
|
|
74
|
-
```
|
|
75
|
-
❌ Complete the tutorial.
|
|
76
|
-
✅ You've got this. Take it one step at a time.
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### Emotional Beats
|
|
80
|
-
|
|
81
|
-
**Frustration → Relief**:
|
|
82
|
-
```
|
|
83
|
-
Spent three hours debugging? Been there. Here's what fixed it for me.
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
**Confusion → Clarity**:
|
|
87
|
-
```
|
|
88
|
-
This confused me too at first. Then it clicked: [explanation].
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
**Doubt → Confidence**:
|
|
92
|
-
```
|
|
93
|
-
Worried about scaling? Don't be. This handles millions of requests.
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
**Overwhelm → Simplicity**:
|
|
97
|
-
```
|
|
98
|
-
Looks complicated, right? It's actually just three steps.
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### Personal Touches
|
|
102
|
-
|
|
103
|
-
**Anecdotes**:
|
|
104
|
-
```
|
|
105
|
-
I learned this the hard way during a production outage at 2 AM.
|
|
106
|
-
Now I always add this check.
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
**Honest Opinions**:
|
|
110
|
-
```
|
|
111
|
-
Is this the "right" way? Maybe not. But it's practical and it works.
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
**Shared Frustrations**:
|
|
115
|
-
```
|
|
116
|
-
Documentation says it's "simple." It's not. Here's what they
|
|
117
|
-
actually mean.
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
**Celebrations**:
|
|
121
|
-
```
|
|
122
|
-
And just like that, you've built a production-ready API.
|
|
123
|
-
Nice work.
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
### What to Do
|
|
127
|
-
|
|
128
|
-
✅ Acknowledge reader's feelings
|
|
129
|
-
✅ Share personal experience
|
|
130
|
-
✅ Use conversational tone
|
|
131
|
-
✅ Admit when things are hard
|
|
132
|
-
✅ Celebrate small wins
|
|
133
|
-
✅ Be encouraging
|
|
134
|
-
✅ Show empathy
|
|
135
|
-
✅ Build connection
|
|
136
|
-
|
|
137
|
-
### What NOT to Do
|
|
138
|
-
|
|
139
|
-
❌ Don't be condescending
|
|
140
|
-
❌ Don't fake enthusiasm
|
|
141
|
-
❌ Don't be overly emotional
|
|
142
|
-
❌ Don't manipulate feelings
|
|
143
|
-
❌ Don't be saccharine
|
|
144
|
-
❌ Don't patronize
|
|
145
|
-
❌ Don't force positivity
|
|
146
|
-
❌ Don't be insincere
|
|
147
|
-
|
|
148
|
-
## Examples
|
|
149
|
-
|
|
150
|
-
**Before (Cold)**:
|
|
151
|
-
```
|
|
152
|
-
Error handling is important. Implement try-catch blocks
|
|
153
|
-
to handle exceptions properly.
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
**After (Warm)**:
|
|
157
|
-
```
|
|
158
|
-
Nothing's worse than your app crashing in production.
|
|
159
|
-
Let's add some safety nets so you can sleep at night.
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
**Before (Cold)**:
|
|
165
|
-
```
|
|
166
|
-
TypeScript provides type safety and reduces bugs.
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
**After (Warm)**:
|
|
170
|
-
```
|
|
171
|
-
TypeScript catches the dumb mistakes we all make at 11 PM.
|
|
172
|
-
Your future self will thank you.
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
---
|
|
176
|
-
|
|
177
|
-
**Before (Cold)**:
|
|
178
|
-
```
|
|
179
|
-
Follow these steps to complete the setup:
|
|
180
|
-
1. Install dependencies
|
|
181
|
-
2. Configure environment
|
|
182
|
-
3. Run the application
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
**After (Warm)**:
|
|
186
|
-
```
|
|
187
|
-
Let's get you up and running. This takes about 5 minutes.
|
|
188
|
-
|
|
189
|
-
First, grab the dependencies. While that's installing,
|
|
190
|
-
make yourself some coffee—you've earned it.
|
|
191
|
-
|
|
192
|
-
Once that's done, we'll set up your environment.
|
|
193
|
-
I'll walk you through each variable.
|
|
194
|
-
|
|
195
|
-
Then we'll fire it up and watch it work. Ready?
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
---
|
|
199
|
-
|
|
200
|
-
**Before (Cold)**:
|
|
201
|
-
```
|
|
202
|
-
This tutorial covers advanced concepts. Prerequisites
|
|
203
|
-
include knowledge of JavaScript and Node.js.
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
**After (Warm)**:
|
|
207
|
-
```
|
|
208
|
-
Fair warning: this gets a bit advanced. If you're comfortable
|
|
209
|
-
with JavaScript and have used Node.js before, you're good.
|
|
210
|
-
|
|
211
|
-
If not? No judgment. Come back when you're ready.
|
|
212
|
-
We'll be here.
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
---
|
|
216
|
-
|
|
217
|
-
**Before (Cold)**:
|
|
218
|
-
```
|
|
219
|
-
The deployment process is complete. Your application
|
|
220
|
-
is now live.
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
**After (Warm)**:
|
|
224
|
-
```
|
|
225
|
-
And... you're live!
|
|
226
|
-
|
|
227
|
-
Take a moment. You just shipped something real.
|
|
228
|
-
That's not nothing.
|
|
229
|
-
|
|
230
|
-
Now go show someone what you built.
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
## Warmth Levels
|
|
234
|
-
|
|
235
|
-
**Technical Documentation**: Light warmth
|
|
236
|
-
- Acknowledge difficulty
|
|
237
|
-
- Offer encouragement
|
|
238
|
-
- Share practical tips
|
|
239
|
-
|
|
240
|
-
**Blog Posts**: Medium warmth
|
|
241
|
-
- Personal anecdotes
|
|
242
|
-
- Shared experiences
|
|
243
|
-
- Conversational tone
|
|
244
|
-
|
|
245
|
-
**Tutorials**: High warmth
|
|
246
|
-
- Walk alongside reader
|
|
247
|
-
- Celebrate progress
|
|
248
|
-
- Build confidence
|
|
249
|
-
|
|
250
|
-
**Marketing**: Balanced warmth
|
|
251
|
-
- Show understanding
|
|
252
|
-
- Build trust
|
|
253
|
-
- Stay authentic
|
|
254
|
-
|
|
255
|
-
## Output Format
|
|
256
|
-
|
|
257
|
-
Provide the warmer version with:
|
|
258
|
-
|
|
259
|
-
```
|
|
260
|
-
## WARMER VERSION
|
|
261
|
-
|
|
262
|
-
[Text with added warmth]
|
|
263
|
-
|
|
264
|
-
---
|
|
265
|
-
|
|
266
|
-
## WARMTH ADDED
|
|
267
|
-
|
|
268
|
-
- Empathy: [example]
|
|
269
|
-
- Connection: [example]
|
|
270
|
-
- Encouragement: [example]
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
## Notes
|
|
274
|
-
|
|
275
|
-
- Warmth should feel natural, not forced
|
|
276
|
-
- Match the context and audience
|
|
277
|
-
- Be genuine—readers can tell when you're faking
|
|
278
|
-
- Balance warmth with professionalism
|
|
279
|
-
- Don't sacrifice clarity for emotion
|
|
280
|
-
- Encourage without patronizing
|
|
281
|
-
- Show vulnerability when appropriate
|
|
282
|
-
- Build trust through authenticity
|
|
@@ -1,377 +0,0 @@
|
|
|
1
|
-
import { exec } from 'node:child_process';
|
|
2
|
-
import { mkdir, writeFile } from 'node:fs/promises';
|
|
3
|
-
import { promisify } from 'node:util';
|
|
4
|
-
import { Command } from '@commander-js/extra-typings';
|
|
5
|
-
import chalk from 'chalk';
|
|
6
|
-
import inquirer from 'inquirer';
|
|
7
|
-
import ora from 'ora';
|
|
8
|
-
const execAsync = promisify(exec);
|
|
9
|
-
export const bootstrap = new Command()
|
|
10
|
-
.name('bootstrap')
|
|
11
|
-
.description('Bootstrap a new npm package with standard configuration')
|
|
12
|
-
.option('-y, --yes', 'Skip prompts and use defaults')
|
|
13
|
-
.action(async (options) => {
|
|
14
|
-
const answers = options.yes
|
|
15
|
-
? {
|
|
16
|
-
name: '@zweer/new-package',
|
|
17
|
-
description: 'A new package',
|
|
18
|
-
author: 'Zweer <n.olivieriachille@gmail.com>',
|
|
19
|
-
}
|
|
20
|
-
: await inquirer.prompt([
|
|
21
|
-
{
|
|
22
|
-
type: 'input',
|
|
23
|
-
name: 'name',
|
|
24
|
-
message: 'Package name:',
|
|
25
|
-
default: '@zweer/new-package',
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
type: 'input',
|
|
29
|
-
name: 'description',
|
|
30
|
-
message: 'Description:',
|
|
31
|
-
default: 'A new package',
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
type: 'input',
|
|
35
|
-
name: 'author',
|
|
36
|
-
message: 'Author:',
|
|
37
|
-
default: 'Zweer <n.olivieriachille@gmail.com>',
|
|
38
|
-
},
|
|
39
|
-
]);
|
|
40
|
-
const spinner = ora('Bootstrapping project...').start();
|
|
41
|
-
try {
|
|
42
|
-
// Create package.json
|
|
43
|
-
const packageJson = {
|
|
44
|
-
name: answers.name,
|
|
45
|
-
version: '0.0.0',
|
|
46
|
-
description: answers.description,
|
|
47
|
-
type: 'module',
|
|
48
|
-
scripts: {
|
|
49
|
-
lint: 'concurrently npm:lint:* --prefixColors auto',
|
|
50
|
-
'lint:format': 'biome check --write',
|
|
51
|
-
'lint:lockfile': 'lockfile-lint --path package-lock.json',
|
|
52
|
-
'lint:engines': 'ls-engines',
|
|
53
|
-
'lint:package': 'npmPkgJsonLint .',
|
|
54
|
-
'lint:publish': 'publint --strict',
|
|
55
|
-
test: 'vitest run',
|
|
56
|
-
'test:coverage': 'vitest run --coverage',
|
|
57
|
-
check: 'npm run clean && npm run test:coverage && npm run build && npm run lint && npm run clean',
|
|
58
|
-
prepare: 'husky',
|
|
59
|
-
clean: 'rimraf --glob ./{src,test}/**/*.{d.ts,js} ./vitest*.{d.ts,js}',
|
|
60
|
-
prebuild: 'npm run clean',
|
|
61
|
-
build: 'tsc',
|
|
62
|
-
release: 'semantic-release',
|
|
63
|
-
},
|
|
64
|
-
engines: {
|
|
65
|
-
node: '>= 20.17',
|
|
66
|
-
},
|
|
67
|
-
publishConfig: {
|
|
68
|
-
access: 'public',
|
|
69
|
-
provenance: true,
|
|
70
|
-
},
|
|
71
|
-
release: {
|
|
72
|
-
plugins: [
|
|
73
|
-
'@semantic-release/commit-analyzer',
|
|
74
|
-
'@semantic-release/release-notes-generator',
|
|
75
|
-
'@semantic-release/changelog',
|
|
76
|
-
'@semantic-release/npm',
|
|
77
|
-
'@semantic-release/github',
|
|
78
|
-
'@semantic-release/git',
|
|
79
|
-
],
|
|
80
|
-
},
|
|
81
|
-
keywords: [],
|
|
82
|
-
author: answers.author,
|
|
83
|
-
license: 'MIT',
|
|
84
|
-
dependencies: {},
|
|
85
|
-
devDependencies: {
|
|
86
|
-
'@biomejs/biome': '^2.3.4',
|
|
87
|
-
'@semantic-release/changelog': '^6.0.3',
|
|
88
|
-
'@semantic-release/git': '^10.0.1',
|
|
89
|
-
'@tsconfig/node22': '^22.0.2',
|
|
90
|
-
'@types/node': '^24.10.0',
|
|
91
|
-
'@vitest/coverage-v8': '^4.0.8',
|
|
92
|
-
concurrently: '^9.2.1',
|
|
93
|
-
husky: '^9.1.7',
|
|
94
|
-
'lint-staged': '^16.2.6',
|
|
95
|
-
'lockfile-lint': '^4.14.1',
|
|
96
|
-
'ls-engines': '^0.9.3',
|
|
97
|
-
'npm-package-json-lint': '^8.0.0',
|
|
98
|
-
'npm-package-json-lint-config-default': '^7.0.1',
|
|
99
|
-
publint: '^0.3.15',
|
|
100
|
-
rimraf: '^6.1.0',
|
|
101
|
-
'semantic-release': '^25.0.2',
|
|
102
|
-
typescript: '^5.9.3',
|
|
103
|
-
vitest: '^4.0.8',
|
|
104
|
-
},
|
|
105
|
-
};
|
|
106
|
-
await writeFile('package.json', JSON.stringify(packageJson, null, 2));
|
|
107
|
-
// Create tsconfig.json
|
|
108
|
-
const tsconfig = {
|
|
109
|
-
extends: '@tsconfig/node22/tsconfig.json',
|
|
110
|
-
compilerOptions: {
|
|
111
|
-
declaration: true,
|
|
112
|
-
skipLibCheck: true,
|
|
113
|
-
},
|
|
114
|
-
};
|
|
115
|
-
await writeFile('tsconfig.json', JSON.stringify(tsconfig, null, 2));
|
|
116
|
-
// Create biome.json
|
|
117
|
-
const biome = {
|
|
118
|
-
$schema: 'https://biomejs.dev/schemas/2.3.4/schema.json',
|
|
119
|
-
vcs: {
|
|
120
|
-
enabled: true,
|
|
121
|
-
clientKind: 'git',
|
|
122
|
-
useIgnoreFile: true,
|
|
123
|
-
},
|
|
124
|
-
files: {
|
|
125
|
-
ignoreUnknown: false,
|
|
126
|
-
},
|
|
127
|
-
formatter: {
|
|
128
|
-
enabled: true,
|
|
129
|
-
useEditorconfig: true,
|
|
130
|
-
lineWidth: 100,
|
|
131
|
-
},
|
|
132
|
-
linter: {
|
|
133
|
-
enabled: true,
|
|
134
|
-
rules: {
|
|
135
|
-
recommended: true,
|
|
136
|
-
suspicious: {
|
|
137
|
-
noUnknownAtRules: 'off',
|
|
138
|
-
},
|
|
139
|
-
},
|
|
140
|
-
domains: {
|
|
141
|
-
test: 'recommended',
|
|
142
|
-
},
|
|
143
|
-
},
|
|
144
|
-
javascript: {
|
|
145
|
-
formatter: {
|
|
146
|
-
quoteStyle: 'single',
|
|
147
|
-
},
|
|
148
|
-
},
|
|
149
|
-
assist: {
|
|
150
|
-
enabled: true,
|
|
151
|
-
actions: {
|
|
152
|
-
source: {
|
|
153
|
-
organizeImports: {
|
|
154
|
-
level: 'on',
|
|
155
|
-
options: {
|
|
156
|
-
groups: [
|
|
157
|
-
':URL:',
|
|
158
|
-
':BLANK_LINE:',
|
|
159
|
-
[':BUN:', ':NODE:'],
|
|
160
|
-
':BLANK_LINE:',
|
|
161
|
-
[':PACKAGE_WITH_PROTOCOL:', ':PACKAGE:'],
|
|
162
|
-
':BLANK_LINE:',
|
|
163
|
-
':ALIAS:',
|
|
164
|
-
':BLANK_LINE:',
|
|
165
|
-
':PATH:',
|
|
166
|
-
],
|
|
167
|
-
},
|
|
168
|
-
},
|
|
169
|
-
},
|
|
170
|
-
},
|
|
171
|
-
},
|
|
172
|
-
};
|
|
173
|
-
await writeFile('biome.json', JSON.stringify(biome, null, 2));
|
|
174
|
-
// Create vitest.config.ts
|
|
175
|
-
const vitestConfig = `import { defineConfig } from 'vitest/config';
|
|
176
|
-
|
|
177
|
-
export default defineConfig({
|
|
178
|
-
test: {
|
|
179
|
-
globals: true,
|
|
180
|
-
environment: 'node',
|
|
181
|
-
},
|
|
182
|
-
});
|
|
183
|
-
`;
|
|
184
|
-
await writeFile('vitest.config.ts', vitestConfig);
|
|
185
|
-
// Create .lintstagedrc
|
|
186
|
-
const lintStaged = `"*.{ts,tsx}":
|
|
187
|
-
- "bash -c 'npm test'"
|
|
188
|
-
|
|
189
|
-
"package.json":
|
|
190
|
-
- "bash -c 'npm test'"
|
|
191
|
-
- "bash -c 'npm run build'"
|
|
192
|
-
- "bash -c 'npm run lint:lockfile'"
|
|
193
|
-
- "bash -c 'npm run lint:engines'"
|
|
194
|
-
- "bash -c 'npm run lint:publish'"
|
|
195
|
-
- "bash -c 'npm run clean'"
|
|
196
|
-
|
|
197
|
-
"*.{ts,tsx,json,yaml,graphql,md,css,scss,html}":
|
|
198
|
-
- "biome check --write --no-errors-on-unmatched --files-ignore-unknown=true"
|
|
199
|
-
`;
|
|
200
|
-
await writeFile('.lintstagedrc', lintStaged);
|
|
201
|
-
// Create .gitignore
|
|
202
|
-
const gitignore = `# Typescript
|
|
203
|
-
*.js
|
|
204
|
-
*.d.ts
|
|
205
|
-
|
|
206
|
-
# Logs
|
|
207
|
-
logs
|
|
208
|
-
*.log
|
|
209
|
-
npm-debug.log*
|
|
210
|
-
|
|
211
|
-
# Coverage
|
|
212
|
-
coverage
|
|
213
|
-
*.lcov
|
|
214
|
-
.nyc_output
|
|
215
|
-
|
|
216
|
-
# Dependencies
|
|
217
|
-
node_modules/
|
|
218
|
-
|
|
219
|
-
# TypeScript cache
|
|
220
|
-
*.tsbuildinfo
|
|
221
|
-
|
|
222
|
-
# dotenv
|
|
223
|
-
.env
|
|
224
|
-
.env.*
|
|
225
|
-
!.env.example
|
|
226
|
-
|
|
227
|
-
# Build output
|
|
228
|
-
dist
|
|
229
|
-
`;
|
|
230
|
-
await writeFile('.gitignore', gitignore);
|
|
231
|
-
// Create .editorconfig
|
|
232
|
-
const editorconfig = `# http://editorconfig.org/
|
|
233
|
-
root = true
|
|
234
|
-
|
|
235
|
-
[*]
|
|
236
|
-
charset = utf-8
|
|
237
|
-
end_of_line = lf
|
|
238
|
-
insert_final_newline = true
|
|
239
|
-
indent_style = space
|
|
240
|
-
indent_size = 2
|
|
241
|
-
trim_trailing_whitespace = true
|
|
242
|
-
|
|
243
|
-
[*.md]
|
|
244
|
-
trim_trailing_whitespace = false
|
|
245
|
-
|
|
246
|
-
[Makefile]
|
|
247
|
-
indent_style = tab
|
|
248
|
-
`;
|
|
249
|
-
await writeFile('.editorconfig', editorconfig);
|
|
250
|
-
// Create .npmpackagejsonlintrc.json
|
|
251
|
-
const npmPackageJsonLintrc = {
|
|
252
|
-
rules: {
|
|
253
|
-
'require-author': 'error',
|
|
254
|
-
'require-description': 'error',
|
|
255
|
-
'require-engines': 'error',
|
|
256
|
-
'require-license': 'error',
|
|
257
|
-
'require-name': 'error',
|
|
258
|
-
'require-repository': 'error',
|
|
259
|
-
'require-version': 'error',
|
|
260
|
-
'require-bugs': 'error',
|
|
261
|
-
'require-homepage': 'error',
|
|
262
|
-
'require-keywords': 'error',
|
|
263
|
-
'bin-type': 'error',
|
|
264
|
-
'config-type': 'error',
|
|
265
|
-
'description-type': 'error',
|
|
266
|
-
'devDependencies-type': 'error',
|
|
267
|
-
'directories-type': 'error',
|
|
268
|
-
'engines-type': 'error',
|
|
269
|
-
'files-type': 'error',
|
|
270
|
-
'homepage-type': 'error',
|
|
271
|
-
'keywords-type': 'error',
|
|
272
|
-
'license-type': 'error',
|
|
273
|
-
'main-type': 'error',
|
|
274
|
-
'man-type': 'error',
|
|
275
|
-
'name-type': 'error',
|
|
276
|
-
'preferGlobal-type': 'error',
|
|
277
|
-
'private-type': 'error',
|
|
278
|
-
'repository-type': 'error',
|
|
279
|
-
'scripts-type': 'error',
|
|
280
|
-
'version-type': 'error',
|
|
281
|
-
'valid-values-author': ['error', [answers.author]],
|
|
282
|
-
'valid-values-private': ['error', [false]],
|
|
283
|
-
'no-restricted-dependencies': ['error', ['gulping-npm-package-json-lint']],
|
|
284
|
-
'no-restricted-pre-release-dependencies': ['error', ['gulping-npm-package-json-lint']],
|
|
285
|
-
'no-restricted-devDependencies': ['error', ['gulping-npm-package-json-lint']],
|
|
286
|
-
'no-restricted-pre-release-devDependencies': ['error', ['gulping-npm-package-json-lint']],
|
|
287
|
-
'name-format': 'error',
|
|
288
|
-
'version-format': 'error',
|
|
289
|
-
},
|
|
290
|
-
};
|
|
291
|
-
await writeFile('.npmpackagejsonlintrc.json', JSON.stringify(npmPackageJsonLintrc, null, 2));
|
|
292
|
-
// Create directories
|
|
293
|
-
await mkdir('src', { recursive: true });
|
|
294
|
-
await mkdir('test', { recursive: true });
|
|
295
|
-
await mkdir('.husky', { recursive: true });
|
|
296
|
-
// Create sample files
|
|
297
|
-
await writeFile('src/index.ts', `export function hello(name: string): string {
|
|
298
|
-
return \`Hello, \${name}!\`;
|
|
299
|
-
}
|
|
300
|
-
`);
|
|
301
|
-
await writeFile('test/index.test.ts', `import { describe, expect, it } from 'vitest';
|
|
302
|
-
|
|
303
|
-
import { hello } from '../src/index.js';
|
|
304
|
-
|
|
305
|
-
describe('hello', () => {
|
|
306
|
-
it('should greet', () => {
|
|
307
|
-
expect(hello('World')).toBe('Hello, World!');
|
|
308
|
-
});
|
|
309
|
-
});
|
|
310
|
-
`);
|
|
311
|
-
// Create README
|
|
312
|
-
const readme = `# ${answers.name}
|
|
313
|
-
|
|
314
|
-
${answers.description}
|
|
315
|
-
|
|
316
|
-
## Installation
|
|
317
|
-
|
|
318
|
-
\`\`\`bash
|
|
319
|
-
npm install ${answers.name}
|
|
320
|
-
\`\`\`
|
|
321
|
-
|
|
322
|
-
## Usage
|
|
323
|
-
|
|
324
|
-
\`\`\`typescript
|
|
325
|
-
import { hello } from '${answers.name}';
|
|
326
|
-
|
|
327
|
-
console.log(hello('World'));
|
|
328
|
-
\`\`\`
|
|
329
|
-
|
|
330
|
-
## Development
|
|
331
|
-
|
|
332
|
-
\`\`\`bash
|
|
333
|
-
# Install dependencies
|
|
334
|
-
npm install
|
|
335
|
-
|
|
336
|
-
# Run tests
|
|
337
|
-
npm test
|
|
338
|
-
|
|
339
|
-
# Build
|
|
340
|
-
npm run build
|
|
341
|
-
|
|
342
|
-
# Lint
|
|
343
|
-
npm run lint
|
|
344
|
-
\`\`\`
|
|
345
|
-
|
|
346
|
-
## License
|
|
347
|
-
|
|
348
|
-
MIT
|
|
349
|
-
`;
|
|
350
|
-
await writeFile('README.md', readme);
|
|
351
|
-
spinner.text = 'Installing dependencies...';
|
|
352
|
-
await execAsync('npm install');
|
|
353
|
-
// Create .husky/pre-commit
|
|
354
|
-
const preCommit = `export NVM_DIR="$HOME/.nvm"
|
|
355
|
-
[ -s "$NVM_DIR/nvm.sh" ] && \\. "$NVM_DIR/nvm.sh"
|
|
356
|
-
|
|
357
|
-
lint-staged --concurrent false
|
|
358
|
-
git update-index --again
|
|
359
|
-
`;
|
|
360
|
-
await writeFile('.husky/pre-commit', preCommit);
|
|
361
|
-
await execAsync('chmod +x .husky/pre-commit');
|
|
362
|
-
spinner.text = 'Initializing git...';
|
|
363
|
-
await execAsync('git init');
|
|
364
|
-
await execAsync('git add .');
|
|
365
|
-
await execAsync('git commit -m "chore: initial commit"');
|
|
366
|
-
spinner.succeed(chalk.green('✓ Project bootstrapped successfully!'));
|
|
367
|
-
console.log('\nNext steps:');
|
|
368
|
-
console.log(`${chalk.cyan(' npm test')} - Run tests`);
|
|
369
|
-
console.log(`${chalk.cyan(' npm run build')} - Build the project`);
|
|
370
|
-
console.log(`${chalk.cyan(' npm run lint')} - Lint the code`);
|
|
371
|
-
}
|
|
372
|
-
catch (error) {
|
|
373
|
-
spinner.fail(chalk.red('Failed to bootstrap project'));
|
|
374
|
-
console.error(error);
|
|
375
|
-
process.exit(1);
|
|
376
|
-
}
|
|
377
|
-
});
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Command } from '@commander-js/extra-typings';
|
|
2
|
-
export interface AgentConfig {
|
|
3
|
-
name: string;
|
|
4
|
-
projectName: string;
|
|
5
|
-
projectPath: string;
|
|
6
|
-
techStack?: string;
|
|
7
|
-
projectStructure?: string;
|
|
8
|
-
platform?: string;
|
|
9
|
-
targetPlatforms?: string;
|
|
10
|
-
iacTool?: string;
|
|
11
|
-
runtime?: string;
|
|
12
|
-
serviceMesh?: string;
|
|
13
|
-
contentType?: string;
|
|
14
|
-
audience?: string;
|
|
15
|
-
tone?: string;
|
|
16
|
-
template: string;
|
|
17
|
-
}
|
|
18
|
-
export declare function createAgent(config: AgentConfig): Promise<{
|
|
19
|
-
agentPath: string;
|
|
20
|
-
}>;
|
|
21
|
-
export declare function getDefaultConfig(cwd: string, name?: string, template?: string): AgentConfig;
|
|
22
|
-
export declare const createCommand: Command<[string | undefined], {
|
|
23
|
-
template: string;
|
|
24
|
-
yes?: true | undefined;
|
|
25
|
-
}>;
|