solo-cto-agent 0.5.1

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.
@@ -0,0 +1,76 @@
1
+ # Skill Slimming — the references/ pattern
2
+
3
+ ## Why this matters
4
+
5
+ Every skill activation dumps the full `SKILL.md` into the context window. A 500-line skill eats ~6,000 tokens just by triggering. Two skills in one session and you've burned 12K tokens before doing anything useful.
6
+
7
+ The fix is obvious once you see it: most of that content isn't needed on every activation. Templates, full error catalogs, CSS blocks, API specs — the agent only reads those when it's actually doing that specific subtask.
8
+
9
+ ## How it works
10
+
11
+ ```
12
+ my-skill/
13
+ ├── SKILL.md ← Always loaded: routing, rules, checklists (~80-120 lines)
14
+ └── references/
15
+ ├── error-catalog.md ← Loaded on demand
16
+ ├── templates.md ← Loaded on demand
17
+ └── api-reference.md ← Loaded on demand
18
+ ```
19
+
20
+ SKILL.md keeps only what the agent needs to decide *what to do*: routing tables, anti-pattern lists, quick-reference summaries, and pointers like `> Full error catalog → references/error-catalog.md`. The agent reads references/ files only when the task actually requires them.
21
+
22
+ ## Measured results
23
+
24
+ Three production skills, before and after applying this pattern:
25
+
26
+ | Skill type | Before | After | Saved |
27
+ |------------|--------|-------|-------|
28
+ | Project/event management | 573 lines / ~6,600 tok | 122 lines / ~1,800 tok | 79% |
29
+ | Design system orchestrator | 318 lines / ~3,600 tok | 77 lines / ~1,000 tok | 76% |
30
+ | Platform dev guide | 203 lines / ~2,500 tok | 86 lines / ~1,000 tok | 58% |
31
+
32
+ Average session went from ~12K tokens on skill loading to ~3,800. That's 8K tokens freed up per session for actual work.
33
+
34
+ Over 50 sessions, the difference adds up to roughly 400K tokens — real context space that would otherwise be wasted on reference text the agent never reads.
35
+
36
+ ## What stays inline vs. what moves
37
+
38
+ **Keep in SKILL.md:**
39
+ - Routing table (which tool/sub-skill for which task type)
40
+ - Anti-pattern list (condensed, no long examples)
41
+ - 1-line summaries with `→ references/filename.md` pointers
42
+ - Decision logic the agent needs every time
43
+ - Pre-flight checklists
44
+
45
+ **Move to references/:**
46
+ - Document templates and report structures
47
+ - CSS/code blocks (design tokens, color definitions, shadow systems)
48
+ - Full error catalogs with solutions
49
+ - API endpoint specs
50
+ - Dev history and changelogs
51
+ - Per-project component guides
52
+
53
+ Rule of thumb: if a section is 20+ lines of reference data that's only needed for specific subtasks, it belongs in references/.
54
+
55
+ ## Applying this to your skills
56
+
57
+ ```
58
+ 1. Count SKILL.md lines (target: under 150)
59
+ 2. Find sections that are reference data, not decision logic
60
+ 3. Create references/ and move those sections
61
+ 4. Replace with 1-line pointers in SKILL.md
62
+ 5. Test that the skill still triggers and references/ loads when needed
63
+ ```
64
+
65
+ ## solo-cto-agent integration
66
+
67
+ `npx solo-cto-agent init` scaffolds with references/ by default:
68
+
69
+ ```
70
+ .claude/skills/{skill-name}/
71
+ ├── SKILL.md
72
+ └── references/
73
+ └── .gitkeep
74
+ ```
75
+
76
+ Future: `npx solo-cto-agent lint` will flag skills where SKILL.md exceeds 150 lines or has large inline code blocks that should be in references/.
@@ -0,0 +1,62 @@
1
+ {
2
+ "version": 1,
3
+ "updated_at": "2026-04-13",
4
+ "items": [
5
+ {
6
+ "id": "ERR-001",
7
+ "category": "build",
8
+ "pattern": "Module not found",
9
+ "description": "Import path missing or dependency not installed.",
10
+ "fix": "Verify file path or install missing dependency."
11
+ },
12
+ {
13
+ "id": "ERR-002",
14
+ "category": "build",
15
+ "pattern": "prisma generate did not create",
16
+ "description": "Prisma client not generated or output path mismatched.",
17
+ "fix": "Run prisma generate and confirm output path."
18
+ },
19
+ {
20
+ "id": "ERR-003",
21
+ "category": "build",
22
+ "pattern": "@apply unknown utility",
23
+ "description": "Tailwind config mismatch or wrong version syntax.",
24
+ "fix": "Verify Tailwind version and update @apply usage."
25
+ },
26
+ {
27
+ "id": "ERR-004",
28
+ "category": "deploy",
29
+ "pattern": "Build completed in 14ms",
30
+ "description": "Wrong root directory or build command skipped real build.",
31
+ "fix": "Check project root and build command configuration."
32
+ },
33
+ {
34
+ "id": "ERR-005",
35
+ "category": "deploy",
36
+ "pattern": "No output directory found",
37
+ "description": "Build output directory not produced or misconfigured.",
38
+ "fix": "Confirm framework preset and output directory."
39
+ },
40
+ {
41
+ "id": "ERR-006",
42
+ "category": "runtime",
43
+ "pattern": "NEXTAUTH_URL is not set",
44
+ "description": "Auth runtime missing required environment variable.",
45
+ "fix": "Set NEXTAUTH_URL and redeploy."
46
+ },
47
+ {
48
+ "id": "ERR-007",
49
+ "category": "runtime",
50
+ "pattern": "PrismaClientInitializationError",
51
+ "description": "DB connection or schema mismatch at runtime.",
52
+ "fix": "Verify DATABASE_URL and schema compatibility."
53
+ },
54
+ {
55
+ "id": "ERR-008",
56
+ "category": "runtime",
57
+ "pattern": "Cannot find module '/var/task'",
58
+ "description": "Serverless packaging missing build artifacts.",
59
+ "fix": "Ensure build output is included in deployment."
60
+ }
61
+ ]
62
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "required": ["version", "updated_at", "items"],
5
+ "properties": {
6
+ "version": { "type": "number" },
7
+ "updated_at": { "type": "string" },
8
+ "items": {
9
+ "type": "array",
10
+ "minItems": 1,
11
+ "items": {
12
+ "type": "object",
13
+ "required": ["id", "category", "pattern", "description", "fix"],
14
+ "properties": {
15
+ "id": { "type": "string", "pattern": "^ERR-\\d{3}$" },
16
+ "category": { "type": "string", "enum": ["build", "deploy", "runtime"] },
17
+ "pattern": { "type": "string" },
18
+ "description": { "type": "string" },
19
+ "fix": { "type": "string" }
20
+ },
21
+ "additionalProperties": false
22
+ }
23
+ }
24
+ },
25
+ "additionalProperties": false
26
+ }
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "solo-cto-agent",
3
+ "version": "0.5.1",
4
+ "private": false,
5
+ "description": "Opinionated skill pack for AI coding agents with CTO-grade operating rules.",
6
+ "bin": {
7
+ "solo-cto-agent": "bin/cli.js"
8
+ },
9
+ "scripts": {
10
+ "test": "vitest run",
11
+ "lint": "node scripts/validate-package.js",
12
+ "validate": "bash scripts/validate.sh"
13
+ },
14
+ "files": [
15
+ "bin",
16
+ "templates",
17
+ "skills",
18
+ "docs",
19
+ "failure-catalog.json",
20
+ "failure-catalog.schema.json",
21
+ "README.md",
22
+ "LICENSE",
23
+ "CHANGELOG"
24
+ ],
25
+ "devDependencies": {
26
+ "ajv": "^8.12.0",
27
+ "vitest": "^1.6.0"
28
+ }
29
+ }
@@ -0,0 +1,377 @@
1
+ ---
2
+ name: build
3
+ description: "Development pipeline orchestrator. Architect -> Build -> Review -> Deploy with pre-flight checks, pre-req scanning, and bounded error recovery. Activates on: code, dev, deploy, build, error, bug, fix, API, DB, git, npm, TypeScript, component, feature, debug, hotfix, patch, schema, migration, auth."
4
+ user-invocable: true
5
+ ---
6
+
7
+ # Build — Development Pipeline Orchestrator
8
+
9
+ This skill is for the part of software work that usually gets bounced back to the founder:
10
+
11
+ * missing env vars
12
+ * package mismatches
13
+ * half-finished migrations
14
+ * repeated build failures
15
+ * hidden setup work discovered too late
16
+
17
+ The goal is not “maximum autonomy at any cost.”
18
+ The goal is to reduce repetitive operational work while keeping risky decisions explicit.
19
+
20
+ ---
21
+
22
+ ## Principle 0 — Agent handles routine work. User approves risky work.
23
+
24
+ The agent should take initiative where it is safe and useful.
25
+
26
+ * Write files directly when the environment allows it.
27
+ * Reuse known context instead of asking the same setup questions again.
28
+ * Batch setup requests into one clear request when direct access is not available.
29
+ * Avoid offloading obvious routine work back to the user too early.
30
+
31
+ Preferred behavior:
32
+
33
+ 1. scan first
34
+ 2. identify what is missing
35
+ 3. ask once if something truly requires user input or restricted access
36
+ 4. then continue the task without repeated interruptions
37
+
38
+ Do not pretend direct configuration is possible when access is not available.
39
+ Do not ask the user to do the same manual step repeatedly across repos or environments.
40
+
41
+ ---
42
+
43
+ ## Your Stack (customize this section)
44
+
45
+ ```text
46
+ OS: {{YOUR_OS}} # e.g. Windows 11, macOS, Linux
47
+ Editor: {{YOUR_EDITOR}} # e.g. VSCode, Cursor
48
+ Deploy: {{YOUR_DEPLOY}} # e.g. Vercel, Netlify, Railway
49
+ DB: {{YOUR_DB}} # e.g. Supabase PostgreSQL, PlanetScale
50
+ ORM: {{YOUR_ORM}} # e.g. Prisma, Drizzle, TypeORM
51
+ Framework: {{YOUR_FRAMEWORK}} # e.g. Next.js 14, Next.js 15, Remix, SvelteKit
52
+ Style: {{YOUR_STYLE}} # e.g. Tailwind CSS + shadcn/ui
53
+ Git: {{YOUR_GIT_USER}}
54
+ ```
55
+
56
+ ### Stack-Specific Warnings (edit these for your real stack)
57
+
58
+ * Next.js 14: `params` is not a Promise. Do not `await` it.
59
+ * Next.js 15: `params` is a Promise. `await` it.
60
+ * React 18: confirm compatible package versions before adopting examples blindly.
61
+ * Prisma: run `prisma generate` before `next build` when relevant.
62
+ * Tailwind v4: use the correct import and utility model for v4. Do not assume old syntax.
63
+
64
+ Keep this section grounded in the actual stack, not generic internet advice.
65
+
66
+ ---
67
+
68
+ ## Working model
69
+
70
+ The pipeline is:
71
+
72
+ **Architect -> Build -> Review -> Deploy**
73
+
74
+ Each phase has a job.
75
+ Do not skip straight to coding if setup risks are obvious.
76
+
77
+ ---
78
+
79
+ ## 1) Architect
80
+
81
+ Before changing code:
82
+
83
+ ```text
84
+ 1. Identify the project and the exact task
85
+ 2. Separate "what to change" from "why it matters"
86
+ 3. Estimate impact:
87
+ - files
88
+ - routes
89
+ - APIs
90
+ - DB tables
91
+ - env vars
92
+ - deploy behavior
93
+ 4. Check prerequisites before coding
94
+ 5. Lock scope:
95
+ - do the requested task
96
+ - note adjacent issues separately instead of expanding scope silently
97
+ ```
98
+
99
+ Questions to resolve early:
100
+
101
+ * Is there a migration involved?
102
+ * Is there a new environment variable?
103
+ * Is there a new dependency?
104
+ * Is there a platform or webhook configuration change?
105
+ * Is the build command still valid after this change?
106
+ * Is there a deployment risk that should be surfaced before coding?
107
+
108
+ If the answer is yes, handle it early.
109
+
110
+ ---
111
+
112
+ ## 2) Build
113
+
114
+ When coding:
115
+
116
+ ```text
117
+ 1. Make the smallest safe change that solves the task
118
+ 2. Keep imports real and local
119
+ 3. Avoid unnecessary refactors unless they remove direct risk
120
+ 4. Run type checks / build checks where appropriate
121
+ 5. Record changed files and why they changed
122
+ ```
123
+
124
+ Practical rules:
125
+
126
+ * Prefer boring code that is easy to verify over clever code.
127
+ * Do not introduce new abstractions unless they pay for themselves immediately.
128
+ * If the environment cannot run a full build safely, do the highest-signal validation available and say so clearly.
129
+ * If a fix touches a risky area, leave a short risk note.
130
+
131
+ ---
132
+
133
+ ## 3) Review
134
+
135
+ Before calling the task done, check:
136
+
137
+ ```text
138
+ □ Does the implementation match the request exactly?
139
+ □ Are imports pointing to real files?
140
+ □ Are types explicit where they need to be?
141
+ □ Are error states handled where failure is likely?
142
+ □ Do API methods and response shapes still make sense?
143
+ □ Do DB queries match the actual schema?
144
+ □ Are any new env vars or platform settings required?
145
+ □ Did this introduce auth / security / permission risk?
146
+ ```
147
+
148
+ Also check for these anti-patterns:
149
+
150
+ * hidden scope expansion
151
+ * “temporary” fixes with no exit plan
152
+ * hand-wavy TODOs in critical paths
153
+ * type assertions used to silence uncertainty
154
+ * retries or loops without a stop condition
155
+
156
+ ---
157
+
158
+ ## 4) Deploy
159
+
160
+ The task is not fully done until the deploy story is understood.
161
+
162
+ Deploy loop:
163
+
164
+ ```text
165
+ 1. Prepare the code and config needed for deploy
166
+ 2. Push or propose changes through the available workflow
167
+ 3. Watch the build if the environment supports it
168
+ 4. If it fails, read the logs before changing anything
169
+ 5. Attempt reasonable fixes only
170
+ 6. Stop when the circuit breaker is reached
171
+ 7. Report clearly instead of spiraling
172
+ ```
173
+
174
+ Do not treat deployment failure as “someone else’s problem” if the work caused it.
175
+
176
+ ---
177
+
178
+ ## Circuit Breaker
179
+
180
+ Bound the loop.
181
+
182
+ ```text
183
+ CB_NO_PROGRESS = 3 same error, no real progress -> stop and report
184
+ CB_SAME_ERROR = 5 same error repeated -> hard stop
185
+ CB_CASCADE = 3 one fix causes 3+ new breakages -> stop
186
+ ```
187
+
188
+ When the breaker trips, report:
189
+
190
+ * what was attempted
191
+ * what changed
192
+ * what is still failing
193
+ * what likely needs human judgment
194
+
195
+ ---
196
+
197
+ ## Pre-flight Checklist
198
+
199
+ Customize this to the actual deployment environment.
200
+
201
+ ```text
202
+ □ Build command is still valid
203
+ □ Required env vars are known
204
+ □ DB connection target is correct for the environment
205
+ □ Auth callback / redirect settings match the target domain
206
+ □ ORM generate / migration steps are included when needed
207
+ □ Package manager configuration is compatible with the repo
208
+ □ Git identity and deployment target are aligned
209
+ ```
210
+
211
+ Do not assume production and local setup are interchangeable.
212
+
213
+ ---
214
+
215
+ ## Pre-Requisite Scan Protocol
216
+
217
+ ### Principle
218
+
219
+ Scan before coding.
220
+ Ask once if required.
221
+ Do not surprise the user halfway through the task.
222
+
223
+ ### What to scan
224
+
225
+ Before starting any meaningful code or deploy work, check for:
226
+
227
+ ```text
228
+ □ Env vars
229
+ □ API keys / tokens
230
+ □ Secrets in CI / deploy platform
231
+ □ Webhooks and callback URLs
232
+ □ DB schema / migrations
233
+ □ Package additions or version constraints
234
+ □ Access scope / permissions
235
+ □ Domain / DNS assumptions
236
+ ```
237
+
238
+ ### How to handle missing requirements
239
+
240
+ If something is missing:
241
+
242
+ * collect the missing items
243
+ * ask in one grouped request
244
+ * proceed after the required values or decisions are provided
245
+
246
+ Bad behavior:
247
+
248
+ * asking the same question repo by repo
249
+ * discovering a required key halfway through the task
250
+ * turning one missing input into five separate messages
251
+
252
+ Good behavior:
253
+
254
+ * one clear grouped request
255
+ * one explanation of why it is needed
256
+ * one place to continue from once resolved
257
+
258
+ ---
259
+
260
+ ## Batch Automation Guidance
261
+
262
+ When access is available, apply configuration directly.
263
+
264
+ Examples:
265
+
266
+ * env vars on the deploy platform
267
+ * local `.env` updates
268
+ * CI secret insertion where the environment allows it
269
+ * repeated config across multiple repos
270
+
271
+ When access is not available:
272
+
273
+ * ask once
274
+ * state exactly what is missing
275
+ * group the required setup into one batch
276
+ * avoid vague “please configure this somewhere” guidance
277
+
278
+ Preferred summary format:
279
+
280
+ | target | item | action | status |
281
+ | ------ | -------------- | ----------------- | ------- |
282
+ | repo-a | `DATABASE_URL` | set in deploy env | done |
283
+ | repo-b | `DATABASE_URL` | waiting on access | blocked |
284
+
285
+ ---
286
+
287
+ ## Avoid these patterns
288
+
289
+ ```text
290
+ - Asking for the same setup value multiple times
291
+ - Discovering required env vars halfway through the task
292
+ - Giving one-repo-at-a-time setup instructions when the same change applies everywhere
293
+ - Offloading obvious routine work back to the user too early
294
+ - Pretending direct configuration is possible when access is not available
295
+ - Repeating the same failed fix without changing the diagnosis
296
+ ```
297
+
298
+ Preferred behavior:
299
+
300
+ ```text
301
+ scan first
302
+ ask once
303
+ apply broadly where possible
304
+ stop loops early
305
+ report clearly when access or policy prevents automation
306
+ ```
307
+
308
+ ---
309
+
310
+ ## Build Error Quick Fix Catalog
311
+
312
+ | Error pattern | First check |
313
+ | ------------------------- | --------------------------------------------------------- |
314
+ | Module not found | Verify the import path and that the file exists |
315
+ | Type error | Fix to match real types instead of bypassing with `any` |
316
+ | ORM generate missing | Add the required generate step before build |
317
+ | Params / routing mismatch | Check framework version and route conventions |
318
+ | CSS utility issue | Confirm framework version and syntax model |
319
+ | Instant deploy fail | Check framework preset, root directory, and build command |
320
+ | Auth failure after deploy | Check env vars, callback URLs, and deployment domain |
321
+
322
+ Treat this as a starting catalog, not a substitute for reading logs.
323
+
324
+ ---
325
+
326
+ ## Session reuse
327
+
328
+ If values or decisions were already established in the session:
329
+
330
+ * reuse them
331
+ * mention reuse briefly
332
+ * avoid asking again unless the value is ambiguous or risky
333
+
334
+ Examples of reusable context:
335
+
336
+ * deploy platform token already provided
337
+ * bot token already confirmed
338
+ * repo naming convention already established
339
+ * framework/version already known
340
+ * migration policy already decided
341
+
342
+ ---
343
+
344
+ ## Platform notes
345
+
346
+ ### Windows PowerShell
347
+
348
+ * Be careful with file writing methods and encoding.
349
+ * Paths with special characters or route syntax should be quoted carefully.
350
+
351
+ ### macOS / Linux
352
+
353
+ * File permissions and executable bits can matter in deploy scripts.
354
+ * Shell assumptions should be kept conservative.
355
+
356
+ ---
357
+
358
+ ## Output expectations
359
+
360
+ When this skill is applied to a real task, the final report should usually include:
361
+
362
+ ```text
363
+ - what changed
364
+ - what prerequisites were detected
365
+ - what was configured directly
366
+ - what still needs access or approval
367
+ - build/deploy status
368
+ - risks or rollback notes
369
+ ```
370
+
371
+ This skill should make the user feel like the setup burden got lighter, not heavier.
372
+
373
+ ## Execution Examples
374
+
375
+ - "Use build to fix a Prisma generate failure before deploy."
376
+ - "Use build to add a missing env var and re-run the build."
377
+ - "Use build to debug a TypeScript error in an API route."