daemora 1.0.3 → 1.0.5

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 (121) hide show
  1. package/LICENSE +663 -0
  2. package/README.md +69 -19
  3. package/SOUL.md +25 -24
  4. package/daemora-ui/README.md +11 -0
  5. package/package.json +12 -2
  6. package/skills/api-development.md +35 -0
  7. package/skills/artifacts-builder/SKILL.md +74 -0
  8. package/skills/artifacts-builder/scripts/bundle-artifact.sh +54 -0
  9. package/skills/artifacts-builder/scripts/init-artifact.sh +322 -0
  10. package/skills/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  11. package/skills/brand-guidelines.md +73 -0
  12. package/skills/browser.md +77 -0
  13. package/skills/changelog-generator.md +104 -0
  14. package/skills/coding.md +26 -10
  15. package/skills/content-research-writer.md +538 -0
  16. package/skills/data-analysis.md +27 -0
  17. package/skills/debugging.md +33 -0
  18. package/skills/devops.md +37 -0
  19. package/skills/document-docx.md +197 -0
  20. package/skills/document-pdf.md +294 -0
  21. package/skills/document-pptx.md +484 -0
  22. package/skills/document-xlsx.md +289 -0
  23. package/skills/domain-name-brainstormer.md +212 -0
  24. package/skills/file-organizer.md +433 -0
  25. package/skills/frontend-design.md +42 -0
  26. package/skills/image-enhancer.md +99 -0
  27. package/skills/invoice-organizer.md +446 -0
  28. package/skills/lead-research-assistant.md +199 -0
  29. package/skills/mcp-builder/SKILL.md +328 -0
  30. package/skills/mcp-builder/reference/evaluation.md +602 -0
  31. package/skills/mcp-builder/reference/mcp_best_practices.md +915 -0
  32. package/skills/mcp-builder/reference/node_mcp_server.md +916 -0
  33. package/skills/mcp-builder/reference/python_mcp_server.md +752 -0
  34. package/skills/mcp-builder/scripts/connections.py +151 -0
  35. package/skills/mcp-builder/scripts/evaluation.py +373 -0
  36. package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  37. package/skills/mcp-builder/scripts/requirements.txt +2 -0
  38. package/skills/meeting-insights-analyzer.md +327 -0
  39. package/skills/orchestration.md +93 -0
  40. package/skills/raffle-winner-picker.md +159 -0
  41. package/skills/slack-gif-creator/SKILL.md +646 -0
  42. package/skills/slack-gif-creator/core/color_palettes.py +302 -0
  43. package/skills/slack-gif-creator/core/easing.py +230 -0
  44. package/skills/slack-gif-creator/core/frame_composer.py +469 -0
  45. package/skills/slack-gif-creator/core/gif_builder.py +246 -0
  46. package/skills/slack-gif-creator/core/typography.py +357 -0
  47. package/skills/slack-gif-creator/core/validators.py +264 -0
  48. package/skills/slack-gif-creator/core/visual_effects.py +494 -0
  49. package/skills/slack-gif-creator/requirements.txt +4 -0
  50. package/skills/slack-gif-creator/templates/bounce.py +106 -0
  51. package/skills/slack-gif-creator/templates/explode.py +331 -0
  52. package/skills/slack-gif-creator/templates/fade.py +329 -0
  53. package/skills/slack-gif-creator/templates/flip.py +291 -0
  54. package/skills/slack-gif-creator/templates/kaleidoscope.py +211 -0
  55. package/skills/slack-gif-creator/templates/morph.py +329 -0
  56. package/skills/slack-gif-creator/templates/move.py +293 -0
  57. package/skills/slack-gif-creator/templates/pulse.py +268 -0
  58. package/skills/slack-gif-creator/templates/shake.py +127 -0
  59. package/skills/slack-gif-creator/templates/slide.py +291 -0
  60. package/skills/slack-gif-creator/templates/spin.py +269 -0
  61. package/skills/slack-gif-creator/templates/wiggle.py +300 -0
  62. package/skills/slack-gif-creator/templates/zoom.py +312 -0
  63. package/skills/system-admin.md +44 -0
  64. package/skills/tailored-resume-generator.md +345 -0
  65. package/skills/theme-factory/SKILL.md +59 -0
  66. package/skills/theme-factory/theme-showcase.pdf +0 -0
  67. package/skills/theme-factory/themes/arctic-frost.md +19 -0
  68. package/skills/theme-factory/themes/botanical-garden.md +19 -0
  69. package/skills/theme-factory/themes/desert-rose.md +19 -0
  70. package/skills/theme-factory/themes/forest-canopy.md +19 -0
  71. package/skills/theme-factory/themes/golden-hour.md +19 -0
  72. package/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  73. package/skills/theme-factory/themes/modern-minimalist.md +19 -0
  74. package/skills/theme-factory/themes/ocean-depths.md +19 -0
  75. package/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  76. package/skills/theme-factory/themes/tech-innovation.md +19 -0
  77. package/skills/video-downloader.md +99 -0
  78. package/skills/web-development.md +32 -0
  79. package/skills/webapp-testing/SKILL.md +96 -0
  80. package/skills/webapp-testing/examples/console_logging.py +35 -0
  81. package/skills/webapp-testing/examples/element_discovery.py +40 -0
  82. package/skills/webapp-testing/examples/static_html_automation.py +33 -0
  83. package/skills/webapp-testing/scripts/with_server.py +106 -0
  84. package/src/agents/SubAgentManager.js +57 -12
  85. package/src/api/openai-compat.js +212 -0
  86. package/src/channels/TelegramChannel.js +5 -2
  87. package/src/channels/index.js +7 -10
  88. package/src/cli.js +129 -50
  89. package/src/config/agentProfiles.js +1 -0
  90. package/src/config/default.js +10 -0
  91. package/src/config/models.js +317 -71
  92. package/src/config/permissions.js +12 -0
  93. package/src/core/AgentLoop.js +70 -50
  94. package/src/core/Compaction.js +84 -2
  95. package/src/core/MessageQueue.js +90 -0
  96. package/src/core/Task.js +13 -0
  97. package/src/core/TaskQueue.js +1 -1
  98. package/src/core/TaskRunner.js +80 -5
  99. package/src/index.js +328 -48
  100. package/src/mcp/MCPAgentRunner.js +48 -11
  101. package/src/mcp/MCPManager.js +40 -2
  102. package/src/models/ModelRouter.js +67 -1
  103. package/src/safety/DockerSandbox.js +212 -0
  104. package/src/safety/ExecApproval.js +118 -0
  105. package/src/scheduler/Heartbeat.js +56 -21
  106. package/src/services/cleanup.js +106 -0
  107. package/src/services/sessions.js +39 -1
  108. package/src/setup/wizard.js +75 -4
  109. package/src/skills/SkillLoader.js +104 -17
  110. package/src/storage/TaskStore.js +19 -1
  111. package/src/systemPrompt.js +171 -328
  112. package/src/tools/browserAutomation.js +615 -104
  113. package/src/tools/executeCommand.js +19 -1
  114. package/src/tools/index.js +6 -0
  115. package/src/tools/manageAgents.js +55 -4
  116. package/src/tools/replyWithFile.js +62 -0
  117. package/src/tools/screenCapture.js +12 -1
  118. package/src/tools/taskManager.js +164 -0
  119. package/src/tools/useMCP.js +3 -1
  120. package/src/utils/Embeddings.js +157 -10
  121. package/src/webhooks/WebhookHandler.js +107 -0
@@ -0,0 +1,322 @@
1
+ #!/bin/bash
2
+
3
+ # Exit on error
4
+ set -e
5
+
6
+ # Detect Node version
7
+ NODE_VERSION=$(node -v | cut -d'v' -f2 | cut -d'.' -f1)
8
+
9
+ echo "🔍 Detected Node.js version: $NODE_VERSION"
10
+
11
+ if [ "$NODE_VERSION" -lt 18 ]; then
12
+ echo "❌ Error: Node.js 18 or higher is required"
13
+ echo " Current version: $(node -v)"
14
+ exit 1
15
+ fi
16
+
17
+ # Set Vite version based on Node version
18
+ if [ "$NODE_VERSION" -ge 20 ]; then
19
+ VITE_VERSION="latest"
20
+ echo "✅ Using Vite latest (Node 20+)"
21
+ else
22
+ VITE_VERSION="5.4.11"
23
+ echo "✅ Using Vite $VITE_VERSION (Node 18 compatible)"
24
+ fi
25
+
26
+ # Detect OS and set sed syntax
27
+ if [[ "$OSTYPE" == "darwin"* ]]; then
28
+ SED_INPLACE="sed -i ''"
29
+ else
30
+ SED_INPLACE="sed -i"
31
+ fi
32
+
33
+ # Check if pnpm is installed
34
+ if ! command -v pnpm &> /dev/null; then
35
+ echo "📦 pnpm not found. Installing pnpm..."
36
+ npm install -g pnpm
37
+ fi
38
+
39
+ # Check if project name is provided
40
+ if [ -z "$1" ]; then
41
+ echo "❌ Usage: ./create-react-shadcn-complete.sh <project-name>"
42
+ exit 1
43
+ fi
44
+
45
+ PROJECT_NAME="$1"
46
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
47
+ COMPONENTS_TARBALL="$SCRIPT_DIR/shadcn-components.tar.gz"
48
+
49
+ # Check if components tarball exists
50
+ if [ ! -f "$COMPONENTS_TARBALL" ]; then
51
+ echo "❌ Error: shadcn-components.tar.gz not found in script directory"
52
+ echo " Expected location: $COMPONENTS_TARBALL"
53
+ exit 1
54
+ fi
55
+
56
+ echo "🚀 Creating new React + Vite project: $PROJECT_NAME"
57
+
58
+ # Create new Vite project (always use latest create-vite, pin vite version later)
59
+ pnpm create vite "$PROJECT_NAME" --template react-ts
60
+
61
+ # Navigate into project directory
62
+ cd "$PROJECT_NAME"
63
+
64
+ echo "🧹 Cleaning up Vite template..."
65
+ $SED_INPLACE '/<link rel="icon".*vite\.svg/d' index.html
66
+ $SED_INPLACE 's/<title>.*<\/title>/<title>'"$PROJECT_NAME"'<\/title>/' index.html
67
+
68
+ echo "📦 Installing base dependencies..."
69
+ pnpm install
70
+
71
+ # Pin Vite version for Node 18
72
+ if [ "$NODE_VERSION" -lt 20 ]; then
73
+ echo "📌 Pinning Vite to $VITE_VERSION for Node 18 compatibility..."
74
+ pnpm add -D vite@$VITE_VERSION
75
+ fi
76
+
77
+ echo "📦 Installing Tailwind CSS and dependencies..."
78
+ pnpm install -D tailwindcss@3.4.1 postcss autoprefixer @types/node tailwindcss-animate
79
+ pnpm install class-variance-authority clsx tailwind-merge lucide-react next-themes
80
+
81
+ echo "⚙️ Creating Tailwind and PostCSS configuration..."
82
+ cat > postcss.config.js << 'EOF'
83
+ export default {
84
+ plugins: {
85
+ tailwindcss: {},
86
+ autoprefixer: {},
87
+ },
88
+ }
89
+ EOF
90
+
91
+ echo "📝 Configuring Tailwind with shadcn theme..."
92
+ cat > tailwind.config.js << 'EOF'
93
+ /** @type {import('tailwindcss').Config} */
94
+ module.exports = {
95
+ darkMode: ["class"],
96
+ content: [
97
+ "./index.html",
98
+ "./src/**/*.{js,ts,jsx,tsx}",
99
+ ],
100
+ theme: {
101
+ extend: {
102
+ colors: {
103
+ border: "hsl(var(--border))",
104
+ input: "hsl(var(--input))",
105
+ ring: "hsl(var(--ring))",
106
+ background: "hsl(var(--background))",
107
+ foreground: "hsl(var(--foreground))",
108
+ primary: {
109
+ DEFAULT: "hsl(var(--primary))",
110
+ foreground: "hsl(var(--primary-foreground))",
111
+ },
112
+ secondary: {
113
+ DEFAULT: "hsl(var(--secondary))",
114
+ foreground: "hsl(var(--secondary-foreground))",
115
+ },
116
+ destructive: {
117
+ DEFAULT: "hsl(var(--destructive))",
118
+ foreground: "hsl(var(--destructive-foreground))",
119
+ },
120
+ muted: {
121
+ DEFAULT: "hsl(var(--muted))",
122
+ foreground: "hsl(var(--muted-foreground))",
123
+ },
124
+ accent: {
125
+ DEFAULT: "hsl(var(--accent))",
126
+ foreground: "hsl(var(--accent-foreground))",
127
+ },
128
+ popover: {
129
+ DEFAULT: "hsl(var(--popover))",
130
+ foreground: "hsl(var(--popover-foreground))",
131
+ },
132
+ card: {
133
+ DEFAULT: "hsl(var(--card))",
134
+ foreground: "hsl(var(--card-foreground))",
135
+ },
136
+ },
137
+ borderRadius: {
138
+ lg: "var(--radius)",
139
+ md: "calc(var(--radius) - 2px)",
140
+ sm: "calc(var(--radius) - 4px)",
141
+ },
142
+ keyframes: {
143
+ "accordion-down": {
144
+ from: { height: "0" },
145
+ to: { height: "var(--radix-accordion-content-height)" },
146
+ },
147
+ "accordion-up": {
148
+ from: { height: "var(--radix-accordion-content-height)" },
149
+ to: { height: "0" },
150
+ },
151
+ },
152
+ animation: {
153
+ "accordion-down": "accordion-down 0.2s ease-out",
154
+ "accordion-up": "accordion-up 0.2s ease-out",
155
+ },
156
+ },
157
+ },
158
+ plugins: [require("tailwindcss-animate")],
159
+ }
160
+ EOF
161
+
162
+ # Add Tailwind directives and CSS variables to index.css
163
+ echo "🎨 Adding Tailwind directives and CSS variables..."
164
+ cat > src/index.css << 'EOF'
165
+ @tailwind base;
166
+ @tailwind components;
167
+ @tailwind utilities;
168
+
169
+ @layer base {
170
+ :root {
171
+ --background: 0 0% 100%;
172
+ --foreground: 0 0% 3.9%;
173
+ --card: 0 0% 100%;
174
+ --card-foreground: 0 0% 3.9%;
175
+ --popover: 0 0% 100%;
176
+ --popover-foreground: 0 0% 3.9%;
177
+ --primary: 0 0% 9%;
178
+ --primary-foreground: 0 0% 98%;
179
+ --secondary: 0 0% 96.1%;
180
+ --secondary-foreground: 0 0% 9%;
181
+ --muted: 0 0% 96.1%;
182
+ --muted-foreground: 0 0% 45.1%;
183
+ --accent: 0 0% 96.1%;
184
+ --accent-foreground: 0 0% 9%;
185
+ --destructive: 0 84.2% 60.2%;
186
+ --destructive-foreground: 0 0% 98%;
187
+ --border: 0 0% 89.8%;
188
+ --input: 0 0% 89.8%;
189
+ --ring: 0 0% 3.9%;
190
+ --radius: 0.5rem;
191
+ }
192
+
193
+ .dark {
194
+ --background: 0 0% 3.9%;
195
+ --foreground: 0 0% 98%;
196
+ --card: 0 0% 3.9%;
197
+ --card-foreground: 0 0% 98%;
198
+ --popover: 0 0% 3.9%;
199
+ --popover-foreground: 0 0% 98%;
200
+ --primary: 0 0% 98%;
201
+ --primary-foreground: 0 0% 9%;
202
+ --secondary: 0 0% 14.9%;
203
+ --secondary-foreground: 0 0% 98%;
204
+ --muted: 0 0% 14.9%;
205
+ --muted-foreground: 0 0% 63.9%;
206
+ --accent: 0 0% 14.9%;
207
+ --accent-foreground: 0 0% 98%;
208
+ --destructive: 0 62.8% 30.6%;
209
+ --destructive-foreground: 0 0% 98%;
210
+ --border: 0 0% 14.9%;
211
+ --input: 0 0% 14.9%;
212
+ --ring: 0 0% 83.1%;
213
+ }
214
+ }
215
+
216
+ @layer base {
217
+ * {
218
+ @apply border-border;
219
+ }
220
+ body {
221
+ @apply bg-background text-foreground;
222
+ }
223
+ }
224
+ EOF
225
+
226
+ # Add path aliases to tsconfig.json
227
+ echo "🔧 Adding path aliases to tsconfig.json..."
228
+ node -e "
229
+ const fs = require('fs');
230
+ const config = JSON.parse(fs.readFileSync('tsconfig.json', 'utf8'));
231
+ config.compilerOptions = config.compilerOptions || {};
232
+ config.compilerOptions.baseUrl = '.';
233
+ config.compilerOptions.paths = { '@/*': ['./src/*'] };
234
+ fs.writeFileSync('tsconfig.json', JSON.stringify(config, null, 2));
235
+ "
236
+
237
+ # Add path aliases to tsconfig.app.json
238
+ echo "🔧 Adding path aliases to tsconfig.app.json..."
239
+ node -e "
240
+ const fs = require('fs');
241
+ const path = 'tsconfig.app.json';
242
+ const content = fs.readFileSync(path, 'utf8');
243
+ // Remove comments manually
244
+ const lines = content.split('\n').filter(line => !line.trim().startsWith('//'));
245
+ const jsonContent = lines.join('\n');
246
+ const config = JSON.parse(jsonContent.replace(/\/\*[\s\S]*?\*\//g, '').replace(/,(\s*[}\]])/g, '\$1'));
247
+ config.compilerOptions = config.compilerOptions || {};
248
+ config.compilerOptions.baseUrl = '.';
249
+ config.compilerOptions.paths = { '@/*': ['./src/*'] };
250
+ fs.writeFileSync(path, JSON.stringify(config, null, 2));
251
+ "
252
+
253
+ # Update vite.config.ts
254
+ echo "⚙️ Updating Vite configuration..."
255
+ cat > vite.config.ts << 'EOF'
256
+ import path from "path";
257
+ import react from "@vitejs/plugin-react";
258
+ import { defineConfig } from "vite";
259
+
260
+ export default defineConfig({
261
+ plugins: [react()],
262
+ resolve: {
263
+ alias: {
264
+ "@": path.resolve(__dirname, "./src"),
265
+ },
266
+ },
267
+ });
268
+ EOF
269
+
270
+ # Install all shadcn/ui dependencies
271
+ echo "📦 Installing shadcn/ui dependencies..."
272
+ pnpm install @radix-ui/react-accordion @radix-ui/react-aspect-ratio @radix-ui/react-avatar @radix-ui/react-checkbox @radix-ui/react-collapsible @radix-ui/react-context-menu @radix-ui/react-dialog @radix-ui/react-dropdown-menu @radix-ui/react-hover-card @radix-ui/react-label @radix-ui/react-menubar @radix-ui/react-navigation-menu @radix-ui/react-popover @radix-ui/react-progress @radix-ui/react-radio-group @radix-ui/react-scroll-area @radix-ui/react-select @radix-ui/react-separator @radix-ui/react-slider @radix-ui/react-slot @radix-ui/react-switch @radix-ui/react-tabs @radix-ui/react-toast @radix-ui/react-toggle @radix-ui/react-toggle-group @radix-ui/react-tooltip
273
+ pnpm install sonner cmdk vaul embla-carousel-react react-day-picker react-resizable-panels date-fns react-hook-form @hookform/resolvers zod
274
+
275
+ # Extract shadcn components from tarball
276
+ echo "📦 Extracting shadcn/ui components..."
277
+ tar -xzf "$COMPONENTS_TARBALL" -C src/
278
+
279
+ # Create components.json for reference
280
+ echo "📝 Creating components.json config..."
281
+ cat > components.json << 'EOF'
282
+ {
283
+ "$schema": "https://ui.shadcn.com/schema.json",
284
+ "style": "default",
285
+ "rsc": false,
286
+ "tsx": true,
287
+ "tailwind": {
288
+ "config": "tailwind.config.js",
289
+ "css": "src/index.css",
290
+ "baseColor": "slate",
291
+ "cssVariables": true,
292
+ "prefix": ""
293
+ },
294
+ "aliases": {
295
+ "components": "@/components",
296
+ "utils": "@/lib/utils",
297
+ "ui": "@/components/ui",
298
+ "lib": "@/lib",
299
+ "hooks": "@/hooks"
300
+ }
301
+ }
302
+ EOF
303
+
304
+ echo "✅ Setup complete! You can now use Tailwind CSS and shadcn/ui in your project."
305
+ echo ""
306
+ echo "📦 Included components (40+ total):"
307
+ echo " - accordion, alert, aspect-ratio, avatar, badge, breadcrumb"
308
+ echo " - button, calendar, card, carousel, checkbox, collapsible"
309
+ echo " - command, context-menu, dialog, drawer, dropdown-menu"
310
+ echo " - form, hover-card, input, label, menubar, navigation-menu"
311
+ echo " - popover, progress, radio-group, resizable, scroll-area"
312
+ echo " - select, separator, sheet, skeleton, slider, sonner"
313
+ echo " - switch, table, tabs, textarea, toast, toggle, toggle-group, tooltip"
314
+ echo ""
315
+ echo "To start developing:"
316
+ echo " cd $PROJECT_NAME"
317
+ echo " pnpm dev"
318
+ echo ""
319
+ echo "📚 Import components like:"
320
+ echo " import { Button } from '@/components/ui/button'"
321
+ echo " import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'"
322
+ echo " import { Dialog, DialogContent, DialogTrigger } from '@/components/ui/dialog'"
@@ -0,0 +1,73 @@
1
+ ---
2
+ name: brand-guidelines
3
+ description: Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
4
+ license: Complete terms in LICENSE.txt
5
+ ---
6
+
7
+ # Anthropic Brand Styling
8
+
9
+ ## Overview
10
+
11
+ To access Anthropic's official brand identity and style resources, use this skill.
12
+
13
+ **Keywords**: branding, corporate identity, visual identity, post-processing, styling, brand colors, typography, Anthropic brand, visual formatting, visual design
14
+
15
+ ## Brand Guidelines
16
+
17
+ ### Colors
18
+
19
+ **Main Colors:**
20
+
21
+ - Dark: `#141413` - Primary text and dark backgrounds
22
+ - Light: `#faf9f5` - Light backgrounds and text on dark
23
+ - Mid Gray: `#b0aea5` - Secondary elements
24
+ - Light Gray: `#e8e6dc` - Subtle backgrounds
25
+
26
+ **Accent Colors:**
27
+
28
+ - Orange: `#d97757` - Primary accent
29
+ - Blue: `#6a9bcc` - Secondary accent
30
+ - Green: `#788c5d` - Tertiary accent
31
+
32
+ ### Typography
33
+
34
+ - **Headings**: Poppins (with Arial fallback)
35
+ - **Body Text**: Lora (with Georgia fallback)
36
+ - **Note**: Fonts should be pre-installed in your environment for best results
37
+
38
+ ## Features
39
+
40
+ ### Smart Font Application
41
+
42
+ - Applies Poppins font to headings (24pt and larger)
43
+ - Applies Lora font to body text
44
+ - Automatically falls back to Arial/Georgia if custom fonts unavailable
45
+ - Preserves readability across all systems
46
+
47
+ ### Text Styling
48
+
49
+ - Headings (24pt+): Poppins font
50
+ - Body text: Lora font
51
+ - Smart color selection based on background
52
+ - Preserves text hierarchy and formatting
53
+
54
+ ### Shape and Accent Colors
55
+
56
+ - Non-text shapes use accent colors
57
+ - Cycles through orange, blue, and green accents
58
+ - Maintains visual interest while staying on-brand
59
+
60
+ ## Technical Details
61
+
62
+ ### Font Management
63
+
64
+ - Uses system-installed Poppins and Lora fonts when available
65
+ - Provides automatic fallback to Arial (headings) and Georgia (body)
66
+ - No font installation required - works with existing system fonts
67
+ - For best results, pre-install Poppins and Lora fonts in your environment
68
+
69
+ ### Color Application
70
+
71
+ - Uses RGB color values for precise brand matching
72
+ - Applied via python-pptx's RGBColor class
73
+ - Maintains color fidelity across different systems
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: browser
3
+ description: Web browsing, scraping, form filling, testing, automation with accessibility snapshots
4
+ triggers: browser, browse, scrape, web page, click, fill form, login, automate, screenshot, navigate, website, open page, test site, check page
5
+ ---
6
+
7
+ ## Snapshot-First Workflow (MANDATORY)
8
+
9
+ 1. **Navigate** → `browserAction("navigate", "https://example.com")`
10
+ 2. **Snapshot** → `browserAction("snapshot")` — get ARIA tree with refs (e1, e2, ...)
11
+ 3. **Act using refs** → `browserAction("click", "e5")`, `browserAction("fill", "e3", "hello")`
12
+ 4. **Verify** → snapshot again or screenshot to confirm result
13
+ 5. **Repeat** until task is done
14
+
15
+ ## Why Refs > CSS Selectors
16
+ - Refs (e1, e5) come from accessibility tree — stable, semantic
17
+ - CSS selectors break on class name changes, dynamic IDs
18
+ - Always take a fresh snapshot after navigation or major page changes
19
+
20
+ ## Key Actions
21
+
22
+ ### Navigation
23
+ - `navigate(url)` — go to URL (localhost allowed)
24
+ - `reload`, `goBack`, `goForward`
25
+
26
+ ### Inspection
27
+ - `snapshot()` — ARIA tree with refs. Use `snapshot("interactive")` for only clickable/fillable elements
28
+ - `screenshot(path?)` — pixel capture. Use `screenshot(selector)` for element screenshot
29
+ - `getText(selector|ref?)` — text content
30
+ - `getContent(selector?)` — innerHTML
31
+ - `getLinks` — all links on page
32
+ - `console(filter?,limit?)` — browser console logs. filter: "all", "error", "warn", "log"
33
+
34
+ ### Interaction
35
+ - `click(ref|selector, opts?)` — click. opts: "double", "right", "middle"
36
+ - `fill(ref|selector, value)` — clear + fill input
37
+ - `type(ref|selector, text)` — keystroke-by-keystroke typing
38
+ - `hover(ref|selector)` — mouse hover
39
+ - `selectOption(ref|selector, value)` — dropdown selection
40
+ - `pressKey(key)` — Enter, Tab, Escape, ArrowDown, etc.
41
+ - `scroll(direction|ref|selector, amount?)` — up/down/left/right or scroll to element
42
+ - `drag(source, target)` — drag and drop
43
+
44
+ ### Waiting
45
+ - `waitFor(selector)` — wait for element
46
+ - `waitFor("text:Loading complete")` — wait for text on page
47
+ - `waitFor("url:/dashboard")` — wait for URL change
48
+ - `waitFor("js:document.readyState==='complete'")` — JS predicate
49
+ - `waitFor("networkidle")` — wait for network idle
50
+ - `waitForNavigation(timeout?)` — wait for page navigation
51
+
52
+ ### State
53
+ - `getCookies(domain?)`, `setCookie(json)`, `clearCookies`
54
+ - `getStorage(local|session, key?)`, `setStorage(json)`, `clearStorage(local|session)`
55
+
56
+ ### Files
57
+ - `upload(ref|selector, filePath)` — file input upload
58
+ - `download(ref|selector)` — click + capture download
59
+ - `pdf(path?)` — save page as PDF
60
+
61
+ ### Tabs
62
+ - `newTab(url?)`, `switchTab(targetId)`, `listTabs`, `closeTab(targetId?)`
63
+
64
+ ### Other
65
+ - `resize("1920x1080")` — change viewport
66
+ - `highlight(ref|selector)` — visual highlight for 3s
67
+ - `evaluate(js)` — run JavaScript
68
+ - `handleDialog(accept|dismiss, text?)`
69
+ - `newSession(profile?)` — fresh session (preserves cookies per profile)
70
+ - `status` — browser state
71
+ - `close` — shutdown
72
+
73
+ ## Don't
74
+ - Don't use CSS selectors when you have refs from a snapshot
75
+ - Don't skip snapshot — blind clicking fails on dynamic pages
76
+ - Don't forget to take a fresh snapshot after navigation changes the page
77
+ - Don't assume element positions — always verify with snapshot or screenshot
@@ -0,0 +1,104 @@
1
+ ---
2
+ name: changelog-generator
3
+ description: Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
4
+ ---
5
+
6
+ # Changelog Generator
7
+
8
+ This skill transforms technical git commits into polished, user-friendly changelogs that your customers and users will actually understand and appreciate.
9
+
10
+ ## When to Use This Skill
11
+
12
+ - Preparing release notes for a new version
13
+ - Creating weekly or monthly product update summaries
14
+ - Documenting changes for customers
15
+ - Writing changelog entries for app store submissions
16
+ - Generating update notifications
17
+ - Creating internal release documentation
18
+ - Maintaining a public changelog/product updates page
19
+
20
+ ## What This Skill Does
21
+
22
+ 1. **Scans Git History**: Analyzes commits from a specific time period or between versions
23
+ 2. **Categorizes Changes**: Groups commits into logical categories (features, improvements, bug fixes, breaking changes, security)
24
+ 3. **Translates Technical → User-Friendly**: Converts developer commits into customer language
25
+ 4. **Formats Professionally**: Creates clean, structured changelog entries
26
+ 5. **Filters Noise**: Excludes internal commits (refactoring, tests, etc.)
27
+ 6. **Follows Best Practices**: Applies changelog guidelines and your brand voice
28
+
29
+ ## How to Use
30
+
31
+ ### Basic Usage
32
+
33
+ From your project repository:
34
+
35
+ ```
36
+ Create a changelog from commits since last release
37
+ ```
38
+
39
+ ```
40
+ Generate changelog for all commits from the past week
41
+ ```
42
+
43
+ ```
44
+ Create release notes for version 2.5.0
45
+ ```
46
+
47
+ ### With Specific Date Range
48
+
49
+ ```
50
+ Create a changelog for all commits between March 1 and March 15
51
+ ```
52
+
53
+ ### With Custom Guidelines
54
+
55
+ ```
56
+ Create a changelog for commits since v2.4.0, using my changelog
57
+ guidelines from CHANGELOG_STYLE.md
58
+ ```
59
+
60
+ ## Example
61
+
62
+ **User**: "Create a changelog for commits from the past 7 days"
63
+
64
+ **Output**:
65
+ ```markdown
66
+ # Updates - Week of March 10, 2024
67
+
68
+ ## ✨ New Features
69
+
70
+ - **Team Workspaces**: Create separate workspaces for different
71
+ projects. Invite team members and keep everything organized.
72
+
73
+ - **Keyboard Shortcuts**: Press ? to see all available shortcuts.
74
+ Navigate faster without touching your mouse.
75
+
76
+ ## 🔧 Improvements
77
+
78
+ - **Faster Sync**: Files now sync 2x faster across devices
79
+ - **Better Search**: Search now includes file contents, not just titles
80
+
81
+ ## 🐛 Fixes
82
+
83
+ - Fixed issue where large images wouldn't upload
84
+ - Resolved timezone confusion in scheduled posts
85
+ - Corrected notification badge count
86
+ ```
87
+
88
+ **Inspired by:** Manik Aggarwal's use case from Lenny's Newsletter
89
+
90
+ ## Tips
91
+
92
+ - Run from your git repository root
93
+ - Specify date ranges for focused changelogs
94
+ - Use your CHANGELOG_STYLE.md for consistent formatting
95
+ - Review and adjust the generated changelog before publishing
96
+ - Save output directly to CHANGELOG.md
97
+
98
+ ## Related Use Cases
99
+
100
+ - Creating GitHub release notes
101
+ - Writing app store update descriptions
102
+ - Generating email updates for users
103
+ - Creating social media announcement posts
104
+
package/skills/coding.md CHANGED
@@ -1,14 +1,30 @@
1
1
  ---
2
2
  name: coding
3
3
  description: Use when writing, debugging, or reviewing code
4
- triggers: code, function, bug, error, refactor, implement, class, module, typescript, javascript, python, api, endpoint, test, debug
4
+ triggers: code, function, bug, error, refactor, implement, class, module, typescript, javascript, python, api, endpoint, test, debug, fix, PR, pull request, commit, git
5
5
  ---
6
- You are an expert programmer. When working on code tasks:
7
-
8
- 1. **Read before writing** - Always read existing files before making changes. Understand the codebase patterns first.
9
- 2. **Edit, don't rewrite** - Use editFile for surgical changes. Never rewrite entire files unless asked.
10
- 3. **Test after changes** - Run tests or verify your changes work after making them.
11
- 4. **Follow existing patterns** - Match the existing code style, naming conventions, and architecture.
12
- 5. **Explain your reasoning** - Briefly explain why you made each change.
13
- 6. **Handle errors** - Add appropriate error handling but don't over-engineer.
14
- 7. **Security first** - Never introduce SQL injection, XSS, command injection, or other vulnerabilities.
6
+ ## Workflow: Read Understand Change Verify → Test
7
+
8
+ 1. **Read** readFile every file you'll touch. Check imports, patterns, conventions.
9
+ 2. **Understand** trace data flow. Find callers. Check tests.
10
+ 3. **Change** editFile for surgical fixes. writeFile only for new files or full rewrites.
11
+ 4. **Verify** readFile after every edit. Check the diff is what you intended.
12
+ 5. **Test** run build + tests. If they fail, fix and re-run. Don't finalize with failing tests.
13
+
14
+ ## Rules
15
+ - Match existing code style (naming, indentation, patterns)
16
+ - Don't add comments, docstrings, or type annotations to code you didn't change
17
+ - Don't refactor code you weren't asked to refactor
18
+ - Don't add error handling for impossible scenarios
19
+ - Security: no injection, XSS, hardcoded secrets, path traversal
20
+
21
+ ## Git Workflow
22
+ - Read the diff before committing: `git diff`
23
+ - Write clear commit messages: imperative, present tense, explain WHY
24
+ - One logical change per commit
25
+
26
+ ## Code Review
27
+ - Check for bugs, security issues, performance problems
28
+ - Verify edge cases and error handling
29
+ - Ensure tests cover the change
30
+ - Flag over-engineering and unnecessary complexity