vibesuite 1.3.3 → 2.0.2

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.
Files changed (75) hide show
  1. package/README.md +75 -6
  2. package/assets/.agent/skills/avoid-feature-creep/SKILL.md +307 -0
  3. package/assets/.agent/skills/avoid-feature-creep/agents/openai.yaml +3 -0
  4. package/assets/.agent/skills/avoid-feature-creep/assets/large-logo.png +0 -0
  5. package/assets/.agent/skills/avoid-feature-creep/assets/small-logo.svg +17 -0
  6. package/assets/.agent/skills/convex/SKILL.md +62 -0
  7. package/assets/.agent/skills/convex/agents/openai.yaml +3 -0
  8. package/assets/.agent/skills/convex/assets/large-logo.png +0 -0
  9. package/assets/.agent/skills/convex/assets/small-logo.svg +17 -0
  10. package/assets/.agent/skills/convex-agents/SKILL.md +516 -0
  11. package/assets/.agent/skills/convex-agents/agents/openai.yaml +3 -0
  12. package/assets/.agent/skills/convex-agents/assets/large-logo.png +0 -0
  13. package/assets/.agent/skills/convex-agents/assets/small-logo.svg +17 -0
  14. package/assets/.agent/skills/convex-best-practices/SKILL.md +369 -0
  15. package/assets/.agent/skills/convex-best-practices/agents/openai.yaml +3 -0
  16. package/assets/.agent/skills/convex-best-practices/assets/large-logo.png +0 -0
  17. package/assets/.agent/skills/convex-best-practices/assets/small-logo.svg +17 -0
  18. package/assets/.agent/skills/convex-component-authoring/SKILL.md +457 -0
  19. package/assets/.agent/skills/convex-component-authoring/agents/openai.yaml +3 -0
  20. package/assets/.agent/skills/convex-component-authoring/assets/large-logo.png +0 -0
  21. package/assets/.agent/skills/convex-component-authoring/assets/small-logo.svg +17 -0
  22. package/assets/.agent/skills/convex-cron-jobs/SKILL.md +604 -0
  23. package/assets/.agent/skills/convex-cron-jobs/agents/openai.yaml +3 -0
  24. package/assets/.agent/skills/convex-cron-jobs/assets/large-logo.png +0 -0
  25. package/assets/.agent/skills/convex-cron-jobs/assets/small-logo.svg +17 -0
  26. package/assets/.agent/skills/convex-file-storage/SKILL.md +467 -0
  27. package/assets/.agent/skills/convex-file-storage/agents/openai.yaml +3 -0
  28. package/assets/.agent/skills/convex-file-storage/assets/large-logo.png +0 -0
  29. package/assets/.agent/skills/convex-file-storage/assets/small-logo.svg +17 -0
  30. package/assets/.agent/skills/convex-functions/SKILL.md +458 -0
  31. package/assets/.agent/skills/convex-functions/agents/openai.yaml +3 -0
  32. package/assets/.agent/skills/convex-functions/assets/large-logo.png +0 -0
  33. package/assets/.agent/skills/convex-functions/assets/small-logo.svg +17 -0
  34. package/assets/.agent/skills/convex-http-actions/SKILL.md +733 -0
  35. package/assets/.agent/skills/convex-http-actions/agents/openai.yaml +3 -0
  36. package/assets/.agent/skills/convex-http-actions/assets/large-logo.png +0 -0
  37. package/assets/.agent/skills/convex-http-actions/assets/small-logo.svg +17 -0
  38. package/assets/.agent/skills/convex-migrations/SKILL.md +712 -0
  39. package/assets/.agent/skills/convex-migrations/agents/openai.yaml +3 -0
  40. package/assets/.agent/skills/convex-migrations/assets/large-logo.png +0 -0
  41. package/assets/.agent/skills/convex-migrations/assets/small-logo.svg +17 -0
  42. package/assets/.agent/skills/convex-realtime/SKILL.md +443 -0
  43. package/assets/.agent/skills/convex-realtime/agents/openai.yaml +3 -0
  44. package/assets/.agent/skills/convex-realtime/assets/large-logo.png +0 -0
  45. package/assets/.agent/skills/convex-realtime/assets/small-logo.svg +17 -0
  46. package/assets/.agent/skills/convex-schema-validator/SKILL.md +400 -0
  47. package/assets/.agent/skills/convex-schema-validator/agents/openai.yaml +3 -0
  48. package/assets/.agent/skills/convex-schema-validator/assets/large-logo.png +0 -0
  49. package/assets/.agent/skills/convex-schema-validator/assets/small-logo.svg +17 -0
  50. package/assets/.agent/skills/convex-security-audit/SKILL.md +539 -0
  51. package/assets/.agent/skills/convex-security-audit/agents/openai.yaml +3 -0
  52. package/assets/.agent/skills/convex-security-audit/assets/large-logo.png +0 -0
  53. package/assets/.agent/skills/convex-security-audit/assets/small-logo.svg +17 -0
  54. package/assets/.agent/skills/convex-security-check/SKILL.md +378 -0
  55. package/assets/.agent/skills/convex-security-check/agents/openai.yaml +3 -0
  56. package/assets/.agent/skills/convex-security-check/assets/large-logo.png +0 -0
  57. package/assets/.agent/skills/convex-security-check/assets/small-logo.svg +17 -0
  58. package/assets/.agent/skills/github-ops/SKILL.md +4 -4
  59. package/assets/.agent/skills/google-trends/SKILL.md +7 -7
  60. package/assets/.agent/skills/optimize-agent-context/SKILL.md +97 -0
  61. package/assets/.agent/skills/youtube-pipeline/SKILL.md +10 -10
  62. package/assets/.agent/workflows/LEGACY/init_smart_ops.md +2 -2
  63. package/assets/.agent/workflows/agent_reset.md +4 -6
  64. package/assets/.agent/workflows/mode-orchestrator.md +17 -22
  65. package/assets/.agent/workflows/mode-visionary.md +3 -10
  66. package/assets/.agent/workflows/optimize-agent-context.md +54 -0
  67. package/assets/.agent/workflows/remotion-build.md +17 -17
  68. package/assets/.agent/workflows/stitch.md +4 -4
  69. package/assets/VibeCode-Agents/vibe-orchestrator.yaml +14 -33
  70. package/assets/VibeCode-Agents/vibe-visionary.yaml +3 -13
  71. package/package.json +1 -1
  72. package/src/cli.js +416 -20
  73. package/src/harness.js +281 -0
  74. package/src/store.js +239 -0
  75. package/assets/VibeCode-Agents/custom_modes.yaml +0 -979
@@ -0,0 +1,378 @@
1
+ ---
2
+ name: convex-security-check
3
+ displayName: Convex Security Check
4
+ description: Quick security audit checklist covering authentication, function exposure, argument validation, row-level access control, and environment variable handling
5
+ version: 1.0.0
6
+ author: Convex
7
+ tags: [convex, security, authentication, authorization, checklist]
8
+ ---
9
+
10
+ # Convex Security Check
11
+
12
+ A quick security audit checklist for Convex applications covering authentication, function exposure, argument validation, row-level access control, and environment variable handling.
13
+
14
+ ## Documentation Sources
15
+
16
+ Before implementing, do not assume; fetch the latest documentation:
17
+
18
+ - Primary: https://docs.convex.dev/auth
19
+ - Production Security: https://docs.convex.dev/production
20
+ - Functions Auth: https://docs.convex.dev/auth/functions-auth
21
+ - For broader context: https://docs.convex.dev/llms.txt
22
+
23
+ ## Instructions
24
+
25
+ ### Security Checklist
26
+
27
+ Use this checklist to quickly audit your Convex application's security:
28
+
29
+ #### 1. Authentication
30
+
31
+ - [ ] Authentication provider configured (Clerk, Auth0, etc.)
32
+ - [ ] All sensitive queries check `ctx.auth.getUserIdentity()`
33
+ - [ ] Unauthenticated access explicitly allowed where intended
34
+ - [ ] Session tokens properly validated
35
+
36
+ #### 2. Function Exposure
37
+
38
+ - [ ] Public functions (`query`, `mutation`, `action`) reviewed
39
+ - [ ] Internal functions use `internalQuery`, `internalMutation`, `internalAction`
40
+ - [ ] No sensitive operations exposed as public functions
41
+ - [ ] HTTP actions validate origin/authentication
42
+
43
+ #### 3. Argument Validation
44
+
45
+ - [ ] All functions have explicit `args` validators
46
+ - [ ] All functions have explicit `returns` validators
47
+ - [ ] No `v.any()` used for sensitive data
48
+ - [ ] ID validators use correct table names
49
+
50
+ #### 4. Row-Level Access Control
51
+
52
+ - [ ] Users can only access their own data
53
+ - [ ] Admin functions check user roles
54
+ - [ ] Shared resources have proper access checks
55
+ - [ ] Deletion functions verify ownership
56
+
57
+ #### 5. Environment Variables
58
+
59
+ - [ ] API keys stored in environment variables
60
+ - [ ] No secrets in code or schema
61
+ - [ ] Different keys for dev/prod environments
62
+ - [ ] Environment variables accessed only in actions
63
+
64
+ ### Authentication Check
65
+
66
+ ```typescript
67
+ // convex/auth.ts
68
+ import { query, mutation } from "./_generated/server";
69
+ import { v } from "convex/values";
70
+ import { ConvexError } from "convex/values";
71
+
72
+ // Helper to require authentication
73
+ async function requireAuth(ctx: QueryCtx | MutationCtx) {
74
+ const identity = await ctx.auth.getUserIdentity();
75
+ if (!identity) {
76
+ throw new ConvexError("Authentication required");
77
+ }
78
+ return identity;
79
+ }
80
+
81
+ // Secure query pattern
82
+ export const getMyProfile = query({
83
+ args: {},
84
+ returns: v.union(v.object({
85
+ _id: v.id("users"),
86
+ name: v.string(),
87
+ email: v.string(),
88
+ }), v.null()),
89
+ handler: async (ctx) => {
90
+ const identity = await requireAuth(ctx);
91
+
92
+ return await ctx.db
93
+ .query("users")
94
+ .withIndex("by_tokenIdentifier", (q) =>
95
+ q.eq("tokenIdentifier", identity.tokenIdentifier)
96
+ )
97
+ .unique();
98
+ },
99
+ });
100
+ ```
101
+
102
+ ### Function Exposure Check
103
+
104
+ ```typescript
105
+ // PUBLIC - Exposed to clients (review carefully!)
106
+ export const listPublicPosts = query({
107
+ args: {},
108
+ returns: v.array(v.object({ /* ... */ })),
109
+ handler: async (ctx) => {
110
+ // Anyone can call this - intentionally public
111
+ return await ctx.db
112
+ .query("posts")
113
+ .withIndex("by_public", (q) => q.eq("isPublic", true))
114
+ .collect();
115
+ },
116
+ });
117
+
118
+ // INTERNAL - Only callable from other Convex functions
119
+ export const _updateUserCredits = internalMutation({
120
+ args: { userId: v.id("users"), amount: v.number() },
121
+ returns: v.null(),
122
+ handler: async (ctx, args) => {
123
+ // This cannot be called directly from clients
124
+ await ctx.db.patch(args.userId, {
125
+ credits: args.amount,
126
+ });
127
+ return null;
128
+ },
129
+ });
130
+ ```
131
+
132
+ ### Argument Validation Check
133
+
134
+ ```typescript
135
+ // GOOD: Strict validation
136
+ export const createPost = mutation({
137
+ args: {
138
+ title: v.string(),
139
+ content: v.string(),
140
+ category: v.union(
141
+ v.literal("tech"),
142
+ v.literal("news"),
143
+ v.literal("other")
144
+ ),
145
+ },
146
+ returns: v.id("posts"),
147
+ handler: async (ctx, args) => {
148
+ const identity = await requireAuth(ctx);
149
+ return await ctx.db.insert("posts", {
150
+ ...args,
151
+ authorId: identity.tokenIdentifier,
152
+ });
153
+ },
154
+ });
155
+
156
+ // BAD: Weak validation
157
+ export const createPostUnsafe = mutation({
158
+ args: {
159
+ data: v.any(), // DANGEROUS: Allows any data
160
+ },
161
+ returns: v.id("posts"),
162
+ handler: async (ctx, args) => {
163
+ return await ctx.db.insert("posts", args.data);
164
+ },
165
+ });
166
+ ```
167
+
168
+ ### Row-Level Access Control Check
169
+
170
+ ```typescript
171
+ // Verify ownership before update
172
+ export const updateTask = mutation({
173
+ args: {
174
+ taskId: v.id("tasks"),
175
+ title: v.string(),
176
+ },
177
+ returns: v.null(),
178
+ handler: async (ctx, args) => {
179
+ const identity = await requireAuth(ctx);
180
+
181
+ const task = await ctx.db.get(args.taskId);
182
+
183
+ // Check ownership
184
+ if (!task || task.userId !== identity.tokenIdentifier) {
185
+ throw new ConvexError("Not authorized to update this task");
186
+ }
187
+
188
+ await ctx.db.patch(args.taskId, { title: args.title });
189
+ return null;
190
+ },
191
+ });
192
+
193
+ // Verify ownership before delete
194
+ export const deleteTask = mutation({
195
+ args: { taskId: v.id("tasks") },
196
+ returns: v.null(),
197
+ handler: async (ctx, args) => {
198
+ const identity = await requireAuth(ctx);
199
+
200
+ const task = await ctx.db.get(args.taskId);
201
+
202
+ if (!task || task.userId !== identity.tokenIdentifier) {
203
+ throw new ConvexError("Not authorized to delete this task");
204
+ }
205
+
206
+ await ctx.db.delete(args.taskId);
207
+ return null;
208
+ },
209
+ });
210
+ ```
211
+
212
+ ### Environment Variables Check
213
+
214
+ ```typescript
215
+ // convex/actions.ts
216
+ "use node";
217
+
218
+ import { action } from "./_generated/server";
219
+ import { v } from "convex/values";
220
+
221
+ export const sendEmail = action({
222
+ args: {
223
+ to: v.string(),
224
+ subject: v.string(),
225
+ body: v.string(),
226
+ },
227
+ returns: v.object({ success: v.boolean() }),
228
+ handler: async (ctx, args) => {
229
+ // Access API key from environment
230
+ const apiKey = process.env.RESEND_API_KEY;
231
+
232
+ if (!apiKey) {
233
+ throw new Error("RESEND_API_KEY not configured");
234
+ }
235
+
236
+ const response = await fetch("https://api.resend.com/emails", {
237
+ method: "POST",
238
+ headers: {
239
+ "Authorization": `Bearer ${apiKey}`,
240
+ "Content-Type": "application/json",
241
+ },
242
+ body: JSON.stringify({
243
+ from: "noreply@example.com",
244
+ to: args.to,
245
+ subject: args.subject,
246
+ html: args.body,
247
+ }),
248
+ });
249
+
250
+ return { success: response.ok };
251
+ },
252
+ });
253
+ ```
254
+
255
+ ## Examples
256
+
257
+ ### Complete Security Pattern
258
+
259
+ ```typescript
260
+ // convex/secure.ts
261
+ import { query, mutation, internalMutation } from "./_generated/server";
262
+ import { v } from "convex/values";
263
+ import { ConvexError } from "convex/values";
264
+
265
+ // Authentication helper
266
+ async function getAuthenticatedUser(ctx: QueryCtx | MutationCtx) {
267
+ const identity = await ctx.auth.getUserIdentity();
268
+ if (!identity) {
269
+ throw new ConvexError({
270
+ code: "UNAUTHENTICATED",
271
+ message: "You must be logged in",
272
+ });
273
+ }
274
+
275
+ const user = await ctx.db
276
+ .query("users")
277
+ .withIndex("by_tokenIdentifier", (q) =>
278
+ q.eq("tokenIdentifier", identity.tokenIdentifier)
279
+ )
280
+ .unique();
281
+
282
+ if (!user) {
283
+ throw new ConvexError({
284
+ code: "USER_NOT_FOUND",
285
+ message: "User profile not found",
286
+ });
287
+ }
288
+
289
+ return user;
290
+ }
291
+
292
+ // Check admin role
293
+ async function requireAdmin(ctx: QueryCtx | MutationCtx) {
294
+ const user = await getAuthenticatedUser(ctx);
295
+
296
+ if (user.role !== "admin") {
297
+ throw new ConvexError({
298
+ code: "FORBIDDEN",
299
+ message: "Admin access required",
300
+ });
301
+ }
302
+
303
+ return user;
304
+ }
305
+
306
+ // Public: List own tasks
307
+ export const listMyTasks = query({
308
+ args: {},
309
+ returns: v.array(v.object({
310
+ _id: v.id("tasks"),
311
+ title: v.string(),
312
+ completed: v.boolean(),
313
+ })),
314
+ handler: async (ctx) => {
315
+ const user = await getAuthenticatedUser(ctx);
316
+
317
+ return await ctx.db
318
+ .query("tasks")
319
+ .withIndex("by_user", (q) => q.eq("userId", user._id))
320
+ .collect();
321
+ },
322
+ });
323
+
324
+ // Admin only: List all users
325
+ export const listAllUsers = query({
326
+ args: {},
327
+ returns: v.array(v.object({
328
+ _id: v.id("users"),
329
+ name: v.string(),
330
+ role: v.string(),
331
+ })),
332
+ handler: async (ctx) => {
333
+ await requireAdmin(ctx);
334
+
335
+ return await ctx.db.query("users").collect();
336
+ },
337
+ });
338
+
339
+ // Internal: Update user role (never exposed)
340
+ export const _setUserRole = internalMutation({
341
+ args: {
342
+ userId: v.id("users"),
343
+ role: v.union(v.literal("user"), v.literal("admin")),
344
+ },
345
+ returns: v.null(),
346
+ handler: async (ctx, args) => {
347
+ await ctx.db.patch(args.userId, { role: args.role });
348
+ return null;
349
+ },
350
+ });
351
+ ```
352
+
353
+ ## Best Practices
354
+
355
+ - Never run `npx convex deploy` unless explicitly instructed
356
+ - Never run any git commands unless explicitly instructed
357
+ - Always verify user identity before returning sensitive data
358
+ - Use internal functions for sensitive operations
359
+ - Validate all arguments with strict validators
360
+ - Check ownership before update/delete operations
361
+ - Store API keys in environment variables
362
+ - Review all public functions for security implications
363
+
364
+ ## Common Pitfalls
365
+
366
+ 1. **Missing authentication checks** - Always verify identity
367
+ 2. **Exposing internal operations** - Use internalMutation/Query
368
+ 3. **Trusting client-provided IDs** - Verify ownership
369
+ 4. **Using v.any() for arguments** - Use specific validators
370
+ 5. **Hardcoding secrets** - Use environment variables
371
+
372
+ ## References
373
+
374
+ - Convex Documentation: https://docs.convex.dev/
375
+ - Convex LLMs.txt: https://docs.convex.dev/llms.txt
376
+ - Authentication: https://docs.convex.dev/auth
377
+ - Production Security: https://docs.convex.dev/production
378
+ - Functions Auth: https://docs.convex.dev/auth/functions-auth
@@ -0,0 +1,3 @@
1
+ interface:
2
+ icon_small: "./assets/small-logo.svg"
3
+ icon_large: "./assets/large-logo.png"
@@ -0,0 +1,17 @@
1
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_3_23)">
3
+ <g clip-path="url(#clip1_3_23)">
4
+ <path d="M10.0643 12.5735C12.3769 12.3166 14.5572 11.0843 15.7577 9.02756C15.1892 14.1148 9.62646 17.3302 5.08583 15.356C4.66743 15.1746 4.30728 14.8728 4.06013 14.4848C3.03973 12.8825 2.7043 10.8437 3.18626 8.99344C4.56327 11.37 7.3632 12.8267 10.0643 12.5735Z" fill="#F3B01C"/>
5
+ <path d="M3.1018 7.50072C2.16436 9.66714 2.12376 12.2034 3.27303 14.2907C-0.771507 11.2479 -0.72737 4.7362 3.2236 1.72378C3.58904 1.44535 4.02333 1.2801 4.47881 1.25494C6.3519 1.15614 8.25501 1.88006 9.58963 3.22909C6.87799 3.25604 4.23695 4.99308 3.1018 7.50072Z" fill="#8D2676"/>
6
+ <path d="M10.8974 3.89562C9.52924 1.98794 7.38779 0.68921 5.04156 0.649695C9.57686 -1.40888 15.1555 1.92867 15.7629 6.86314C15.8194 7.32119 15.7452 7.78824 15.5421 8.20138C14.6948 9.92223 13.1236 11.2569 11.2876 11.7508C12.6328 9.25579 12.4668 6.20748 10.8974 3.89562Z" fill="#EE342F"/>
7
+ </g>
8
+ </g>
9
+ <defs>
10
+ <clipPath id="clip0_3_23">
11
+ <rect width="16" height="16" fill="white"/>
12
+ </clipPath>
13
+ <clipPath id="clip1_3_23">
14
+ <rect width="16" height="16" fill="white"/>
15
+ </clipPath>
16
+ </defs>
17
+ </svg>
@@ -102,16 +102,16 @@ gh project field-create NUMBER --owner USERNAME --name "Target Date" --data-type
102
102
 
103
103
  ```powershell
104
104
  # Basic: Create new issues only
105
- powershell -ExecutionPolicy Bypass -File ~/.gemini/antigravity/skills/github-ops/scripts/publish_issues.ps1
105
+ powershell -ExecutionPolicy Bypass -File .agent/skills/github-ops/scripts/publish_issues.ps1
106
106
 
107
107
  # Dry run preview
108
- powershell -ExecutionPolicy Bypass -File ~/.gemini/antigravity/skills/github-ops/scripts/publish_issues.ps1 -Update -DryRun
108
+ powershell -ExecutionPolicy Bypass -File .agent/skills/github-ops/scripts/publish_issues.ps1 -Update -DryRun
109
109
 
110
110
  # Update + archive completed
111
- powershell -ExecutionPolicy Bypass -File ~/.gemini/antigravity/skills/github-ops/scripts/publish_issues.ps1 -Update -AutoArchive
111
+ powershell -ExecutionPolicy Bypass -File .agent/skills/github-ops/scripts/publish_issues.ps1 -Update -AutoArchive
112
112
 
113
113
  # Full sync with project dates
114
- powershell -ExecutionPolicy Bypass -File ~/.gemini/antigravity/skills/github-ops/scripts/publish_issues.ps1 `
114
+ powershell -ExecutionPolicy Bypass -File .agent/skills/github-ops/scripts/publish_issues.ps1 `
115
115
  -Update -AutoArchive -SyncDates `
116
116
  -ProjectNumber 7 `
117
117
  -ProjectId "PVT_xxx" `
@@ -16,7 +16,7 @@ Node.js 18+ and PNPM required.
16
16
  node --version
17
17
 
18
18
  # Install dependencies (first-time only)
19
- cd ~/.gemini/antigravity/skills/google-trends/scripts
19
+ cd .agent/skills/google-trends/scripts
20
20
  pnpm install
21
21
  ```
22
22
 
@@ -26,16 +26,16 @@ pnpm install
26
26
 
27
27
  ```powershell
28
28
  # Basic search (YouTube, Last 7 Days, Tech category)
29
- node ~/.gemini/antigravity/skills/google-trends/scripts/search.js -k "Claude AI"
29
+ node .agent/skills/google-trends/scripts/search.js -k "Claude AI"
30
30
 
31
31
  # Search Web instead of YouTube
32
- node ~/.gemini/antigravity/skills/google-trends/scripts/search.js -k "AI agents" -p web
32
+ node .agent/skills/google-trends/scripts/search.js -k "AI agents" -p web
33
33
 
34
34
  # Extended time range (1 month)
35
- node ~/.gemini/antigravity/skills/google-trends/scripts/search.js -k "VibeCoding" -t "now 1-m"
35
+ node .agent/skills/google-trends/scripts/search.js -k "VibeCoding" -t "now 1-m"
36
36
 
37
37
  # Output as JSON for piping
38
- node ~/.gemini/antigravity/skills/google-trends/scripts/search.js -k "Cursor IDE" -o json
38
+ node .agent/skills/google-trends/scripts/search.js -k "Cursor IDE" -o json
39
39
  ```
40
40
 
41
41
  ---
@@ -96,7 +96,7 @@ Use this skill during `/youtube-phase1-strategy` to validate topics:
96
96
 
97
97
  ```powershell
98
98
  # Check if "Claude Cowork" is rising on YouTube
99
- node ~/.gemini/antigravity/skills/google-trends/scripts/search.js -k "Claude Cowork" -p youtube -t "now 7-d"
99
+ node .agent/skills/google-trends/scripts/search.js -k "Claude Cowork" -p youtube -t "now 7-d"
100
100
  ```
101
101
 
102
102
  **Signal:** Look for `BREAKOUT` or values > 100 in related queries.
@@ -105,7 +105,7 @@ node ~/.gemini/antigravity/skills/google-trends/scripts/search.js -k "Claude Cow
105
105
 
106
106
  ```powershell
107
107
  # Is "RAG" still trending in AI?
108
- node ~/.gemini/antigravity/skills/google-trends/scripts/search.js -k "RAG AI" -p web -t "today 3-m" --interest
108
+ node .agent/skills/google-trends/scripts/search.js -k "RAG AI" -p web -t "today 3-m" --interest
109
109
  ```
110
110
 
111
111
  **Signal:** Check if interest-over-time is increasing or peaked.
@@ -0,0 +1,97 @@
1
+ ---
2
+ name: optimize-agent-context
3
+ description: >
4
+ Create, audit, or optimize agent.md, claude.md, cursorrules, or any AI coding agent context file
5
+ using the "Band-Aid Philosophy." Strips bloat, enforces minimalism, and ensures only failure-correcting
6
+ rules remain. Use when the user mentions: "agent.md", "claude.md", "cursorrules", ".clinerules",
7
+ "AGENTS.md", "context file", "optimize context", "agent instructions", "reduce agent bloat",
8
+ "agent keeps making mistakes", "fix my agent file", "create agent file", "audit agent context",
9
+ or any variant of writing/improving AI coding agent instruction files.
10
+ ---
11
+
12
+ # Optimize Agent Context
13
+
14
+ Enforce the **Band-Aid Philosophy**: an agent context file should only contain rules that fix mistakes the agent is actively making. Everything else is bloat that degrades performance and increases cost.
15
+
16
+ ## Core Rules (Non-Negotiable)
17
+
18
+ 1. **NO BLOAT** — Never include directory structures, file trees, dependency lists, or package inventories. The agent has tools to discover these.
19
+ 2. **NO SUMMARIES** — Never include vague app descriptions ("This is a video sharing app"). This distracts the model and triggers hallucinations.
20
+ 3. **ONLY FIX KNOWN FAILURES** — Every line must correct a specific, observed agent mistake or enforce an architectural constraint the agent cannot guess.
21
+ 4. **USE NEGATIVE CONSTRAINTS** — When the agent uses the wrong tool/library, explicitly state what NOT to use, then what TO use.
22
+ 5. **BE MINIMAL** — Target under 20 lines. Bullet points preferred. If a rule can be removed without the agent breaking, remove it.
23
+
24
+ ## Why This Matters
25
+
26
+ Studies show bloated, AI-generated context files:
27
+ - **Degrade agent performance by ~3%**
28
+ - **Increase token costs by 20%+**
29
+ - Trigger hallucinations by surfacing legacy code the agent then tries to use ("pink elephants" effect)
30
+
31
+ ## Workflow
32
+
33
+ ### Mode A: Create New Agent File (Interview)
34
+
35
+ When the user wants to create a new context file from scratch:
36
+
37
+ 1. **Ask these questions one at a time** (do not dump all at once):
38
+ - "What specific mistakes has the AI agent been making repeatedly?" (e.g., wrong imports, forgetting to format, modifying wrong files)
39
+ - "Are there legacy tools/libraries the agent keeps using but shouldn't?" (e.g., "We have Redux but use Zustand for new features")
40
+ - "Any build/test/env quirks the agent can't figure out on its own?" (e.g., special env vars, non-standard test commands)
41
+
42
+ 2. **Synthesize** answers into a ruthlessly minimal bulleted markdown file.
43
+
44
+ 3. **Validate** the output against the Core Rules above. Strip anything that violates them.
45
+
46
+ 4. **Present** the file and ask: "Does this capture the mistakes? Anything to add or remove?"
47
+
48
+ ### Mode B: Audit Existing Agent File
49
+
50
+ When the user has an existing `agent.md` / `claude.md` / `cursorrules` and wants it optimized:
51
+
52
+ 1. **Read the file** using `view_file`.
53
+ 2. **Classify every line** into one of:
54
+ - ✅ **KEEP** — Fixes a known failure or states an ungessable constraint
55
+ - ❌ **BLOAT** — Directory trees, dependency lists, file structures
56
+ - ❌ **SUMMARY** — Vague app descriptions, project overviews
57
+ - ❌ **OBVIOUS** — Things the agent can discover via tools (package.json, tsconfig, etc.)
58
+ - ⚠️ **MAYBE** — Potentially useful but needs user confirmation
59
+ 3. **Present the audit** as a table showing each section and its classification.
60
+ 4. **Generate the optimized version** with only ✅ KEEP and confirmed ⚠️ MAYBE lines.
61
+ 5. **Show before/after line count** to demonstrate the reduction.
62
+
63
+ ### Mode C: Add a Band-Aid
64
+
65
+ When the user reports a specific agent mistake mid-session:
66
+
67
+ 1. Ask: "What did the agent do wrong?"
68
+ 2. Write a single, precise negative constraint: `Do NOT [wrong thing]. Instead, [correct thing].`
69
+ 3. Suggest appending it to the existing context file.
70
+
71
+ ## Output Format
72
+
73
+ The generated file should follow this structure:
74
+
75
+ ```markdown
76
+ # Agent Rules
77
+
78
+ - [Negative constraint or correction]
79
+ - [Negative constraint or correction]
80
+ - [Build/test quirk]
81
+ - [Architectural constraint]
82
+ ```
83
+
84
+ **No headers beyond the title. No explanations. No examples. Just rules.**
85
+
86
+ ## Anti-Patterns to Reject
87
+
88
+ If the user or another agent tries to include any of these, push back:
89
+
90
+ | Anti-Pattern | Why It's Bad |
91
+ |---|---|
92
+ | Folder tree / file structure | Agent has `list_dir` and `find_by_name` |
93
+ | Dependency list | Agent reads `package.json` / `requirements.txt` |
94
+ | "This app is a..." summary | Distracts model, triggers hallucination |
95
+ | Tech stack overview | Agent reads config files |
96
+ | Code style rules already in linter config | Redundant — linter enforces these |
97
+ | Long code examples | Bloats context, agent writes its own code |
@@ -1,4 +1,4 @@
1
- ---
1
+ ---
2
2
  name: youtube-pipeline
3
3
  description: Complete YouTube video production pipeline from ideation to distribution. Covers Strategy (Phase 1), Packaging (Phase 2), Scripting (Phase 3), Shorts (Phase 3.5), Production (Phase 4), and Repurposing (Phase 5).
4
4
  ---
@@ -27,13 +27,13 @@ The workflow docs are bundled in this skill's `resources/` folder for quick acce
27
27
 
28
28
  **Workflow Files (Local):**
29
29
  ```
30
- ~/.gemini/antigravity/skills/youtube-pipeline/resources/youtube-pipeline.md
31
- ~/.gemini/antigravity/skills/youtube-pipeline/resources/youtube-phase1-strategy.md
32
- ~/.gemini/antigravity/skills/youtube-pipeline/resources/youtube-phase2-packaging.md
33
- ~/.gemini/antigravity/skills/youtube-pipeline/resources/youtube-phase3-scripting.md
34
- ~/.gemini/antigravity/skills/youtube-pipeline/resources/youtube-phase3.5-shorts.md
35
- ~/.gemini/antigravity/skills/youtube-pipeline/resources/youtube-phase4-production.md
36
- ~/.gemini/antigravity/skills/youtube-pipeline/resources/youtube-phase5-repurposing.md
30
+ .agent/skills/youtube-pipeline/resources/youtube-pipeline.md
31
+ .agent/skills/youtube-pipeline/resources/youtube-phase1-strategy.md
32
+ .agent/skills/youtube-pipeline/resources/youtube-phase2-packaging.md
33
+ .agent/skills/youtube-pipeline/resources/youtube-phase3-scripting.md
34
+ .agent/skills/youtube-pipeline/resources/youtube-phase3.5-shorts.md
35
+ .agent/skills/youtube-pipeline/resources/youtube-phase4-production.md
36
+ .agent/skills/youtube-pipeline/resources/youtube-phase5-repurposing.md
37
37
  ```
38
38
 
39
39
  **Source of Truth (User's Vault):**
@@ -53,8 +53,8 @@ c:\CreativeOS\Creator_Command_Hub_Obsidian\📁 YouTube Brain\📝 01-Prompt\Sho
53
53
 
54
54
  **Automation Scripts (Phase 1):**
55
55
  ```
56
- ~/.gemini/antigravity/skills/youtube-pipeline/scripts/parse_yt_studio.ps1 # Parse YT Studio Inspiration HTML
57
- ~/.gemini/antigravity/skills/google-trends/scripts/search.js # Google Trends CLI (separate skill)
56
+ .agent/skills/youtube-pipeline/scripts/parse_yt_studio.ps1 # Parse YT Studio Inspiration HTML
57
+ .agent/skills/google-trends/scripts/search.js # Google Trends CLI (separate skill)
58
58
  ```
59
59
 
60
60
  ---
@@ -6,7 +6,7 @@ description: Initialize Smart Ops for this repository with automatic OS detectio
6
6
 
7
7
  One-time setup to generate GitHub automation scripts for your repository.
8
8
 
9
- > **Skill Reference:** Read `~/.gemini/antigravity/skills/github-ops/SKILL.md` for templates and patterns.
9
+ > **Skill Reference:** Read `.agent/skills/github-ops/SKILL.md` for templates and patterns.
10
10
 
11
11
  ## Quick Start
12
12
 
@@ -20,7 +20,7 @@ User: "/init_smart_ops"
20
20
 
21
21
  ### 1. Read the Skill First
22
22
  ```
23
- view_file ~/.gemini/antigravity/skills/github-ops/SKILL.md
23
+ view_file .agent/skills/github-ops/SKILL.md
24
24
  ```
25
25
 
26
26
  ### 2. Detect OS
@@ -21,14 +21,12 @@ You are exhibiting context degradation. Before doing ANYTHING:
21
21
 
22
22
  ### 0. Re-Discover Available Skills & Workflows
23
23
 
24
- You may have forgotten what tools are available. **Run this now:**
24
+ You may have forgotten what tools are available.
25
25
 
26
- ```bash
27
- # Global (always available)
28
- ls ~/.gemini/antigravity/skills/
29
- ls ~/.gemini/antigravity/global_workflows/
26
+ **Your system prompt lists all available skills and workflows with their full absolute paths.** Check there FIRST.
30
27
 
31
- # Local (project-specific, if exists)
28
+ Fallback (if not in system prompt):
29
+ ```bash
32
30
  ls .agent/skills/ 2>/dev/null
33
31
  ls .agent/workflows/ 2>/dev/null
34
32
  ```