@fenixforce/edition-pro 0.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.
Files changed (173) hide show
  1. package/dist/api/approval-routes.d.ts +15 -0
  2. package/dist/api/fleet-routes.d.ts +23 -0
  3. package/dist/api/integration-routes.d.ts +17 -0
  4. package/dist/api/middleware.d.ts +37 -0
  5. package/dist/boot.d.ts +37 -0
  6. package/dist/business/approval-queue.d.ts +94 -0
  7. package/dist/business/arena.d.ts +71 -0
  8. package/dist/business/best-of-n.d.ts +68 -0
  9. package/dist/business/brainstorm.d.ts +42 -0
  10. package/dist/business/compile-checker.d.ts +50 -0
  11. package/dist/business/debate.d.ts +38 -0
  12. package/dist/business/fleet-budget.d.ts +69 -0
  13. package/dist/business/fleet-config.d.ts +125 -0
  14. package/dist/business/fleet.d.ts +85 -0
  15. package/dist/business/handoff.d.ts +56 -0
  16. package/dist/business/hat-system.d.ts +57 -0
  17. package/dist/business/index.d.ts +44 -0
  18. package/dist/business/integration-registry.d.ts +66 -0
  19. package/dist/business/node-pipeline.d.ts +62 -0
  20. package/dist/business/oracle.d.ts +64 -0
  21. package/dist/business/roles/index.d.ts +7 -0
  22. package/dist/business/roles/judge.d.ts +24 -0
  23. package/dist/business/roles/planner.d.ts +30 -0
  24. package/dist/business/roles/types.d.ts +37 -0
  25. package/dist/business/roles/worker.d.ts +25 -0
  26. package/dist/business/router.d.ts +75 -0
  27. package/dist/business/shared-memory.d.ts +85 -0
  28. package/dist/business/status-detector.d.ts +52 -0
  29. package/dist/business/swarm-registry.d.ts +63 -0
  30. package/dist/business/templates.d.ts +55 -0
  31. package/dist/business/workspace-manager.d.ts +105 -0
  32. package/dist/index.d.ts +21 -0
  33. package/dist/index.js +638 -0
  34. package/dist/infrastructure/pty-agent.d.ts +74 -0
  35. package/dist/migrations/migrate.d.ts +7 -0
  36. package/dist/migrations/runner.d.ts +49 -0
  37. package/dist/workspace/worktree.d.ts +69 -0
  38. package/package.json +37 -0
  39. package/skills/builtin/academic-researcher/SKILL.md +51 -0
  40. package/skills/builtin/advanced-recon/SKILL.md +75 -0
  41. package/skills/builtin/agent-governance/SKILL.md +122 -0
  42. package/skills/builtin/algorithmic-art/SKILL.md +55 -0
  43. package/skills/builtin/api-attack-surface-mapper/SKILL.md +88 -0
  44. package/skills/builtin/api-development/SKILL.md +147 -0
  45. package/skills/builtin/api-exploit-prover/SKILL.md +74 -0
  46. package/skills/builtin/api-integration/SKILL.md +73 -0
  47. package/skills/builtin/api-security-tester/SKILL.md +82 -0
  48. package/skills/builtin/api-test-executor/SKILL.md +62 -0
  49. package/skills/builtin/app-store-optimization/SKILL.md +46 -0
  50. package/skills/builtin/audio-tour-guide/SKILL.md +18 -0
  51. package/skills/builtin/auth-flow-operator/SKILL.md +70 -0
  52. package/skills/builtin/autonomous-rag/SKILL.md +21 -0
  53. package/skills/builtin/backend-development/SKILL.md +265 -0
  54. package/skills/builtin/binary-analysis-analyst/SKILL.md +61 -0
  55. package/skills/builtin/binary-analysis-core/SKILL.md +65 -0
  56. package/skills/builtin/binary-recon/SKILL.md +64 -0
  57. package/skills/builtin/blackboard-coordination/SKILL.md +56 -0
  58. package/skills/builtin/blog-to-podcast/SKILL.md +18 -0
  59. package/skills/builtin/blog-writing/SKILL.md +36 -0
  60. package/skills/builtin/brainstorming/SKILL.md +69 -0
  61. package/skills/builtin/brand-design/SKILL.md +42 -0
  62. package/skills/builtin/ci-cd-pipelines/SKILL.md +210 -0
  63. package/skills/builtin/cloud-infrastructure/SKILL.md +140 -0
  64. package/skills/builtin/code-review/SKILL.md +88 -0
  65. package/skills/builtin/code-review-analyst/SKILL.md +96 -0
  66. package/skills/builtin/code-review-recon/SKILL.md +64 -0
  67. package/skills/builtin/code-review-verifier/SKILL.md +55 -0
  68. package/skills/builtin/coding-agent-team/SKILL.md +13 -0
  69. package/skills/builtin/competitor-intelligence/SKILL.md +39 -0
  70. package/skills/builtin/content-engine/SKILL.md +82 -0
  71. package/skills/builtin/context7-docs/SKILL.md +145 -0
  72. package/skills/builtin/copywriting/SKILL.md +38 -0
  73. package/skills/builtin/corrective-rag/SKILL.md +19 -0
  74. package/skills/builtin/cost-optimization/SKILL.md +131 -0
  75. package/skills/builtin/crypto-vulnerability-analyst/SKILL.md +64 -0
  76. package/skills/builtin/customer-support/SKILL.md +48 -0
  77. package/skills/builtin/customer-voice-support/SKILL.md +43 -0
  78. package/skills/builtin/data-analysis/SKILL.md +57 -0
  79. package/skills/builtin/data-visualization/SKILL.md +33 -0
  80. package/skills/builtin/database-design/SKILL.md +119 -0
  81. package/skills/builtin/decision-helper/SKILL.md +84 -0
  82. package/skills/builtin/deep-research/SKILL.md +68 -0
  83. package/skills/builtin/deepwiki-research/SKILL.md +115 -0
  84. package/skills/builtin/dependency-audit/SKILL.md +46 -0
  85. package/skills/builtin/doc-coauthoring/SKILL.md +48 -0
  86. package/skills/builtin/docker-deployment/SKILL.md +243 -0
  87. package/skills/builtin/docx-generation/SKILL.md +135 -0
  88. package/skills/builtin/dry-run-harness/SKILL.md +61 -0
  89. package/skills/builtin/editor/SKILL.md +44 -0
  90. package/skills/builtin/email-drafter/SKILL.md +42 -0
  91. package/skills/builtin/error-handling/SKILL.md +82 -0
  92. package/skills/builtin/eval-harness/SKILL.md +197 -0
  93. package/skills/builtin/evaluation-framework/SKILL.md +51 -0
  94. package/skills/builtin/exploit-writer/SKILL.md +63 -0
  95. package/skills/builtin/fact-checker/SKILL.md +51 -0
  96. package/skills/builtin/filesystem-context/SKILL.md +47 -0
  97. package/skills/builtin/financial-coach/SKILL.md +18 -0
  98. package/skills/builtin/finding-chain-correlator/SKILL.md +70 -0
  99. package/skills/builtin/finding-verifier/SKILL.md +65 -0
  100. package/skills/builtin/frontend-design/SKILL.md +104 -0
  101. package/skills/builtin/frontend-development/SKILL.md +227 -0
  102. package/skills/builtin/frontend-slides/SKILL.md +155 -0
  103. package/skills/builtin/fullstack-project/SKILL.md +286 -0
  104. package/skills/builtin/game-development/SKILL.md +60 -0
  105. package/skills/builtin/git-workflow/SKILL.md +44 -0
  106. package/skills/builtin/i18n-localization/SKILL.md +38 -0
  107. package/skills/builtin/image-prompt-engineering/SKILL.md +37 -0
  108. package/skills/builtin/investment-research/SKILL.md +33 -0
  109. package/skills/builtin/investor-materials/SKILL.md +90 -0
  110. package/skills/builtin/javascript-surface-analyzer/SKILL.md +66 -0
  111. package/skills/builtin/markdown-reports/SKILL.md +68 -0
  112. package/skills/builtin/market-research/SKILL.md +69 -0
  113. package/skills/builtin/mcp-builder/SKILL.md +86 -0
  114. package/skills/builtin/meeting-notes/SKILL.md +47 -0
  115. package/skills/builtin/memory-safety-analyst/SKILL.md +61 -0
  116. package/skills/builtin/meta-controller/SKILL.md +44 -0
  117. package/skills/builtin/mixture-of-agents/SKILL.md +53 -0
  118. package/skills/builtin/monitoring-observability/SKILL.md +169 -0
  119. package/skills/builtin/negotiation-simulator/SKILL.md +24 -0
  120. package/skills/builtin/nestjs-development/SKILL.md +56 -0
  121. package/skills/builtin/nextjs-development/SKILL.md +55 -0
  122. package/skills/builtin/parallel-dispatch/SKILL.md +83 -0
  123. package/skills/builtin/pdf-generation/SKILL.md +169 -0
  124. package/skills/builtin/personal-finance/SKILL.md +17 -0
  125. package/skills/builtin/pev-workflow/SKILL.md +62 -0
  126. package/skills/builtin/planning-with-files/SKILL.md +59 -0
  127. package/skills/builtin/pptx-generation/SKILL.md +117 -0
  128. package/skills/builtin/prisma-orm/SKILL.md +48 -0
  129. package/skills/builtin/rag-database-routing/SKILL.md +38 -0
  130. package/skills/builtin/rapid-prototyping/SKILL.md +152 -0
  131. package/skills/builtin/react-development/SKILL.md +244 -0
  132. package/skills/builtin/react-native-mobile/SKILL.md +113 -0
  133. package/skills/builtin/refactoring/SKILL.md +39 -0
  134. package/skills/builtin/reflexive-metacognition/SKILL.md +29 -0
  135. package/skills/builtin/riper-workflow/SKILL.md +214 -0
  136. package/skills/builtin/security-audit/SKILL.md +113 -0
  137. package/skills/builtin/security-self-audit/SKILL.md +311 -0
  138. package/skills/builtin/self-evolving-agent/SKILL.md +28 -0
  139. package/skills/builtin/self-improvement-loop/SKILL.md +58 -0
  140. package/skills/builtin/semantic-search/SKILL.md +93 -0
  141. package/skills/builtin/seo-audit-team/SKILL.md +27 -0
  142. package/skills/builtin/seo-optimization/SKILL.md +49 -0
  143. package/skills/builtin/server-management/SKILL.md +190 -0
  144. package/skills/builtin/social-media-content/SKILL.md +50 -0
  145. package/skills/builtin/sprint-planner/SKILL.md +49 -0
  146. package/skills/builtin/strategic-compact/SKILL.md +61 -0
  147. package/skills/builtin/strategy-advisor/SKILL.md +51 -0
  148. package/skills/builtin/structured-thinking/SKILL.md +70 -0
  149. package/skills/builtin/subagent-development/SKILL.md +105 -0
  150. package/skills/builtin/system-design/SKILL.md +66 -0
  151. package/skills/builtin/systematic-debugging/SKILL.md +87 -0
  152. package/skills/builtin/tailwind-css/SKILL.md +55 -0
  153. package/skills/builtin/taint-flow-tracer/SKILL.md +89 -0
  154. package/skills/builtin/teaching-agent-team/SKILL.md +32 -0
  155. package/skills/builtin/tech-debt-manager/SKILL.md +67 -0
  156. package/skills/builtin/technical-documentation/SKILL.md +47 -0
  157. package/skills/builtin/test-driven-development/SKILL.md +70 -0
  158. package/skills/builtin/theme-factory/SKILL.md +244 -0
  159. package/skills/builtin/threat-model-generator/SKILL.md +105 -0
  160. package/skills/builtin/trust-layer/SKILL.md +43 -0
  161. package/skills/builtin/typescript-patterns/SKILL.md +61 -0
  162. package/skills/builtin/ui-ux-design/SKILL.md +75 -0
  163. package/skills/builtin/verification-before-completion/SKILL.md +41 -0
  164. package/skills/builtin/verification-loop/SKILL.md +120 -0
  165. package/skills/builtin/waf-bypass-agent/SKILL.md +97 -0
  166. package/skills/builtin/web-artifacts-builder/SKILL.md +117 -0
  167. package/skills/builtin/web-assessment-executor/SKILL.md +66 -0
  168. package/skills/builtin/web-exploit-prover/SKILL.md +58 -0
  169. package/skills/builtin/web-scraping/SKILL.md +63 -0
  170. package/skills/builtin/webapp-testing/SKILL.md +86 -0
  171. package/skills/builtin/webhook-development/SKILL.md +62 -0
  172. package/skills/builtin/writing-skills/SKILL.md +67 -0
  173. package/skills/builtin/xlsx-generation/SKILL.md +116 -0
@@ -0,0 +1,169 @@
1
+ ---
2
+ name: pdf-generation
3
+ description: "Use this skill when the user asks to create, fill, merge, split, or manipulate PDF files. Triggers: 'PDF', '.pdf', 'form fill', 'merge PDFs', 'split PDF', 'watermark', 'OCR', or any request involving PDF manipulation."
4
+ license: MIT
5
+ ---
6
+
7
+ # PDF Generation
8
+
9
+ ## What This Skill Does
10
+
11
+ Create and manipulate PDFs using `pdf-lib` (MIT, pure JavaScript, runs on Bun). Extract text using `pdf-parse`.
12
+
13
+ ## Dependencies
14
+
15
+ ```bash
16
+ bun add pdf-lib
17
+ bun add pdf-parse
18
+ ```
19
+
20
+ ## Creating PDFs
21
+
22
+ ```typescript
23
+ import { PDFDocument, rgb, StandardFonts, PageSizes } from "pdf-lib";
24
+ import { writeFile, readFile } from "fs/promises";
25
+
26
+ const doc = await PDFDocument.create();
27
+ doc.setTitle("Document Title");
28
+ doc.setAuthor("Fenix Agent");
29
+
30
+ const font = await doc.embedFont(StandardFonts.Helvetica);
31
+ const boldFont = await doc.embedFont(StandardFonts.HelveticaBold);
32
+
33
+ const page = doc.addPage(PageSizes.Letter); // [612, 792]
34
+ const { width, height } = page.getSize();
35
+
36
+ // Title
37
+ page.drawText("Document Title", {
38
+ x: 50, y: height - 72,
39
+ size: 24, font: boldFont, color: rgb(0.1, 0.1, 0.12),
40
+ });
41
+
42
+ // Body text
43
+ page.drawText("This is a paragraph of body text.", {
44
+ x: 50, y: height - 120,
45
+ size: 12, font, color: rgb(0.2, 0.2, 0.2),
46
+ maxWidth: width - 100,
47
+ lineHeight: 16,
48
+ });
49
+
50
+ // Draw line separator
51
+ page.drawLine({
52
+ start: { x: 50, y: height - 100 },
53
+ end: { x: width - 50, y: height - 100 },
54
+ thickness: 1, color: rgb(0.8, 0.8, 0.8),
55
+ });
56
+
57
+ // Add second page
58
+ const page2 = doc.addPage(PageSizes.Letter);
59
+ page2.drawText("Page 2 content", { x: 50, y: height - 72, size: 12, font });
60
+
61
+ const pdfBytes = await doc.save();
62
+ await writeFile("output.pdf", pdfBytes);
63
+ ```
64
+
65
+ ## Merging PDFs
66
+
67
+ ```typescript
68
+ import { PDFDocument } from "pdf-lib";
69
+
70
+ const merged = await PDFDocument.create();
71
+ const files = ["file1.pdf", "file2.pdf", "file3.pdf"];
72
+
73
+ for (const file of files) {
74
+ const bytes = await readFile(file);
75
+ const source = await PDFDocument.load(bytes);
76
+ const pages = await merged.copyPages(source, source.getPageIndices());
77
+ pages.forEach(page => merged.addPage(page));
78
+ }
79
+
80
+ await writeFile("merged.pdf", await merged.save());
81
+ ```
82
+
83
+ ## Splitting PDFs
84
+
85
+ ```typescript
86
+ const source = await PDFDocument.load(await readFile("input.pdf"));
87
+
88
+ // Extract pages 0-4 into a new document
89
+ const part1 = await PDFDocument.create();
90
+ const pages = await part1.copyPages(source, [0, 1, 2, 3, 4]);
91
+ pages.forEach(p => part1.addPage(p));
92
+ await writeFile("part1.pdf", await part1.save());
93
+ ```
94
+
95
+ ## Filling PDF Forms
96
+
97
+ ```typescript
98
+ const bytes = await readFile("form.pdf");
99
+ const doc = await PDFDocument.load(bytes);
100
+ const form = doc.getForm();
101
+
102
+ // Fill fields by name
103
+ form.getTextField("name").setText("John Doe");
104
+ form.getTextField("email").setText("john@example.com");
105
+ form.getCheckBox("agree").check();
106
+ form.getDropdown("country").select("United States");
107
+
108
+ // Flatten (make fields non-editable)
109
+ form.flatten();
110
+
111
+ await writeFile("filled.pdf", await doc.save());
112
+ ```
113
+
114
+ ## Adding Watermark
115
+
116
+ ```typescript
117
+ const doc = await PDFDocument.load(await readFile("input.pdf"));
118
+ const font = await doc.embedFont(StandardFonts.HelveticaBold);
119
+
120
+ for (const page of doc.getPages()) {
121
+ const { width, height } = page.getSize();
122
+ page.drawText("DRAFT", {
123
+ x: width / 4, y: height / 3,
124
+ size: 72, font,
125
+ color: rgb(0.9, 0.9, 0.9),
126
+ rotate: { type: "degrees" as const, angle: 45 },
127
+ opacity: 0.3,
128
+ });
129
+ }
130
+
131
+ await writeFile("watermarked.pdf", await doc.save());
132
+ ```
133
+
134
+ ## Extracting Text
135
+
136
+ ```typescript
137
+ import pdf from "pdf-parse";
138
+
139
+ const buffer = await readFile("input.pdf");
140
+ const data = await pdf(buffer);
141
+ console.log(data.text); // All text content
142
+ console.log(data.numpages); // Page count
143
+ console.log(data.info); // Metadata
144
+ ```
145
+
146
+ ## Embedding Images
147
+
148
+ ```typescript
149
+ const imageBytes = await readFile("logo.png");
150
+ const image = await doc.embedPng(imageBytes);
151
+ // or: const image = await doc.embedJpg(imageBytes);
152
+
153
+ const dims = image.scale(0.5); // Scale to 50%
154
+ page.drawImage(image, {
155
+ x: 50, y: height - 100,
156
+ width: dims.width, height: dims.height,
157
+ });
158
+ ```
159
+
160
+ ## Rules
161
+
162
+ - Use `pdf-lib` for creation, merging, splitting, form filling, watermarks (pure JS, Bun-compatible)
163
+ - Use `pdf-parse` for text extraction (pure JS, Bun-compatible)
164
+ - Always embed fonts (never rely on system fonts for portability)
165
+ - Always set metadata (title, author, creation date)
166
+ - For form filling, flatten after filling unless user needs editable output
167
+ - Test output opens in multiple PDF readers
168
+ - All packages are MIT licensed, no Python required
169
+ - For OCR on scanned PDFs, use Vision-LLM through Fenix provider abstraction (Task 3.9), not Tesseract.
@@ -0,0 +1,17 @@
1
+ # Personal Finance
2
+ ## Capabilities
3
+ - Parse bank statements and categorize expenses
4
+ - Build monthly budgets with recommended allocations
5
+ - Track spending against budget categories
6
+ - Calculate savings rate and project goal timelines
7
+ - Identify spending patterns and suggest optimizations
8
+
9
+ ## Budget Template (50/30/20)
10
+ - **50% Needs**: rent, utilities, groceries, insurance, minimum debt payments
11
+ - **30% Wants**: entertainment, dining out, subscriptions, hobbies
12
+ - **20% Savings**: emergency fund, retirement, debt payoff above minimums
13
+
14
+ ## Rules
15
+ - Categorize every transaction (no "miscellaneous" bucket above 5%)
16
+ - Flag recurring subscriptions the user may have forgotten
17
+ - Note: informational guidance, not professional financial advice.
@@ -0,0 +1,62 @@
1
+ # Plan -> Execute -> Verify
2
+
3
+ ## The Three Stages
4
+
5
+ ### Plan
6
+ Create detailed plan with expected outcomes for each step. Plan reviewed before execution begins.
7
+
8
+ ### Execute
9
+ Follow the plan. If unexpected complexity discovered, return to planning rather than improvising.
10
+
11
+ ### Verify
12
+ Dedicated verification step after execution. Verifier operates independently:
13
+ - Does NOT trust the executor's self-report
14
+ - Reads actual output/code independently
15
+ - Checks against original plan's expected outcomes
16
+ - Reports pass/fail with specific evidence
17
+
18
+ ## Self-Correcting Loop
19
+
20
+ If verify fails:
21
+ 1. Verifier produces specific failure report
22
+ 2. Return to Plan with failure report as input
23
+ 3. New plan addresses specific failures
24
+ 4. Execute revised plan
25
+ 5. Verify again
26
+ 6. Max 3 correction cycles, then escalate to user
27
+
28
+ ## Artifact Production
29
+
30
+ Each PEV cycle produces:
31
+ - `plan.md` — detailed plan with expected outcomes
32
+ - Execution log — what was actually done
33
+ - Verification report — pass/fail per step with evidence
34
+
35
+ ## Output Format
36
+
37
+ ```markdown
38
+ ## Plan
39
+ ### Step 1: [Title]
40
+ **Action**: [what to do]
41
+ **Expected outcome**: [what should result]
42
+
43
+ ## Execution Log
44
+ ### Step 1: [Title]
45
+ **Status**: complete
46
+ **Actual outcome**: [what happened]
47
+
48
+ ## Verification Report
49
+ ### Step 1: [Title]
50
+ **Expected**: [from plan]
51
+ **Actual**: [from execution]
52
+ **Verdict**: PASS / FAIL
53
+ **Evidence**: [specific proof]
54
+
55
+ ## Overall: PASS / FAIL (cycle N of 3)
56
+ ```
57
+
58
+ ## Rules
59
+
60
+ - Verification is always a separate step, never combined with execution
61
+ - Verifier must distrust executor's report
62
+ - Each PEV cycle produces artifacts: plan.md, execution log, verification report
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: planning-with-files
3
+ description: "Use this skill for multi-step tasks, complex projects, or any work requiring a plan before execution. Triggers: 'plan', 'multi-step', 'project', 'architect', 'complex task', 'break this down', or any task with 3+ steps that benefits from written planning."
4
+ license: MIT
5
+ ---
6
+
7
+ # Planning with Files
8
+
9
+ ## What This Skill Does
10
+
11
+ Use filesystem-persisted plans for multi-step work. Write the plan before executing. Track progress. Capture findings. Recover context across sessions.
12
+
13
+ ## Files
14
+
15
+ ```
16
+ workspace/
17
+ ├── task_plan.md # The plan with checkable items
18
+ ├── findings.md # Discoveries and decisions made during work
19
+ ├── progress.md # Current status and blockers
20
+ └── scratchpad.md # Temporary notes, rough ideas
21
+ ```
22
+
23
+ ## Plan Format
24
+
25
+ ```markdown
26
+ # Task: [What we're building]
27
+
28
+ ## Goal
29
+ One sentence describing the end state.
30
+
31
+ ## Steps
32
+ - [ ] Step 1: [specific, actionable, completable in one session]
33
+ - [ ] Step 2: [depends on step 1 output]
34
+ - [ ] Step 3: [can be done in parallel with step 2]
35
+
36
+ ## Decisions Made
37
+ - Decision 1: [what] because [why]
38
+
39
+ ## Open Questions
40
+ - Question 1: [what we need to find out]
41
+ ```
42
+
43
+ ## Rules
44
+
45
+ - Write the plan BEFORE executing any steps
46
+ - Each step must be specific enough that you could hand it to someone else
47
+ - Update progress.md after completing each step
48
+ - Record findings as you discover them (don't lose context)
49
+ - Review the plan after every 3 steps and adjust if needed
50
+ - Steps should be 2-5 minutes each. If longer, break them down.
51
+
52
+ ## Dynamic Scaffolding
53
+
54
+ Start with minimal plan structure. Add complexity only as the task reveals it:
55
+ - Simple task (1-3 steps): single task_plan.md with checklist
56
+ - Medium task (4-10 steps): task_plan.md + findings.md
57
+ - Complex task (10+ steps): full workspace with task_plan.md, findings.md, progress.md, decisions.md, scratchpad.md
58
+
59
+ Don't create a 5-file workspace for a 2-step task. Don't try to squeeze a 15-step project into a single checklist.
@@ -0,0 +1,117 @@
1
+ ---
2
+ name: pptx-generation
3
+ description: "Use this skill when the user asks to create or edit PowerPoint presentations (.pptx). Triggers: 'presentation', 'slides', 'deck', 'PowerPoint', '.pptx', 'pitch deck', 'slide deck', or requests for visual presentations with layouts, speaker notes, and diagrams."
4
+ license: MIT
5
+ ---
6
+
7
+ # PPTX Generation
8
+
9
+ ## What This Skill Does
10
+
11
+ Create PowerPoint presentations using the `pptxgenjs` npm package (MIT, pure JavaScript, runs on Bun).
12
+
13
+ ## Dependencies
14
+
15
+ ```bash
16
+ bun add pptxgenjs
17
+ ```
18
+
19
+ ## Creation
20
+
21
+ ```typescript
22
+ import PptxGenJS from "pptxgenjs";
23
+
24
+ const pres = new PptxGenJS();
25
+ pres.layout = "LAYOUT_16x9";
26
+ pres.author = "Fenix Agent";
27
+ pres.title = "Presentation Title";
28
+
29
+ // Title slide
30
+ const titleSlide = pres.addSlide();
31
+ titleSlide.addText("Presentation Title", {
32
+ x: 0.5, y: 1.5, w: 9, h: 1.5,
33
+ fontSize: 36, bold: true, color: "1a1a2e",
34
+ align: "center",
35
+ });
36
+ titleSlide.addText("Subtitle or Author", {
37
+ x: 0.5, y: 3.2, w: 9, h: 0.8,
38
+ fontSize: 18, color: "666666",
39
+ align: "center",
40
+ });
41
+ titleSlide.addNotes("Speaker notes for the title slide go here.");
42
+
43
+ // Content slide with bullets
44
+ const contentSlide = pres.addSlide();
45
+ contentSlide.addText("Section Title", {
46
+ x: 0.5, y: 0.3, w: 9, h: 0.8,
47
+ fontSize: 28, bold: true, color: "1a1a2e",
48
+ });
49
+ contentSlide.addText(
50
+ [
51
+ { text: "First point", options: { bullet: true, fontSize: 18 } },
52
+ { text: "Second point", options: { bullet: true, fontSize: 18 } },
53
+ { text: "Third point", options: { bullet: true, fontSize: 18 } },
54
+ ],
55
+ { x: 0.8, y: 1.5, w: 8.2, h: 4, valign: "top" }
56
+ );
57
+ contentSlide.addNotes("Key talking points for this slide.");
58
+
59
+ // Slide with image (from file or base64)
60
+ const imageSlide = pres.addSlide();
61
+ imageSlide.addImage({ path: "chart.png", x: 1, y: 1.5, w: 8, h: 4.5 });
62
+ // Or from base64:
63
+ // imageSlide.addImage({ data: "data:image/png;base64,...", x: 1, y: 1.5, w: 8, h: 4.5 });
64
+
65
+ // Slide with table
66
+ const tableSlide = pres.addSlide();
67
+ tableSlide.addText("Data Overview", { x: 0.5, y: 0.3, w: 9, h: 0.8, fontSize: 28, bold: true });
68
+ tableSlide.addTable(
69
+ [
70
+ [{ text: "Metric", options: { bold: true, fill: { color: "2563eb" }, color: "ffffff" } },
71
+ { text: "Value", options: { bold: true, fill: { color: "2563eb" }, color: "ffffff" } }],
72
+ ["Users", "10,542"],
73
+ ["Revenue", "$52,300"],
74
+ ["Growth", "+23%"],
75
+ ],
76
+ { x: 1, y: 1.5, w: 8, colW: [4, 4], border: { type: "solid", pt: 1, color: "cccccc" } }
77
+ );
78
+
79
+ // Write file
80
+ await pres.writeFile({ fileName: "output.pptx" });
81
+ // Or get buffer: const buffer = await pres.write({ outputType: "nodebuffer" });
82
+ ```
83
+
84
+ ## Reading Existing .pptx
85
+
86
+ Use `adm-zip` to extract XML content from existing presentations:
87
+
88
+ ```typescript
89
+ import AdmZip from "adm-zip";
90
+
91
+ const zip = new AdmZip("input.pptx");
92
+ const slideEntries = zip.getEntries().filter(e => e.entryName.startsWith("ppt/slides/slide"));
93
+ for (const entry of slideEntries) {
94
+ const xml = entry.getData().toString("utf-8");
95
+ // Parse XML to extract text content
96
+ }
97
+ ```
98
+
99
+ ## Slide Design Rules
100
+
101
+ - Maximum 6 bullet points per slide
102
+ - Maximum 8 words per bullet
103
+ - One key idea per slide
104
+ - Consistent fonts and colors throughout
105
+ - Include slide numbers
106
+ - Add speaker notes for every content slide
107
+ - Minimum structure: title, agenda, content slides, summary
108
+ - High-contrast text (dark on light or light on dark)
109
+ - Always use 16:9 layout unless specified otherwise
110
+
111
+ ## Rules
112
+
113
+ - Use `pptxgenjs` for creation (pure JS, Bun-compatible)
114
+ - Always include speaker notes
115
+ - Always use 16:9 layout
116
+ - Test output opens in PowerPoint or LibreOffice Impress
117
+ - All packages are MIT licensed, no Python required
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: prisma-orm
3
+ description: "Use this skill when working with Prisma ORM. Triggers: 'Prisma', 'prisma schema', 'prisma migrate', 'prisma client', or any Prisma-related request. Always fetch Context7 docs first."
4
+ license: MIT
5
+ ---
6
+
7
+ # Prisma ORM
8
+
9
+ ## Before You Start
10
+
11
+ **Context7:** ALWAYS fetch current Prisma docs before generating schema or queries.
12
+
13
+ ## Schema Pattern
14
+
15
+ ```prisma
16
+ model User {
17
+ id String @id @default(uuid())
18
+ email String @unique
19
+ name String
20
+ posts Post[]
21
+ createdAt DateTime @default(now())
22
+ updatedAt DateTime @updatedAt
23
+
24
+ @@index([email])
25
+ }
26
+
27
+ model Post {
28
+ id String @id @default(uuid())
29
+ title String
30
+ content String
31
+ published Boolean @default(false)
32
+ author User @relation(fields: [authorId], references: [id], onDelete: Cascade)
33
+ authorId String
34
+ createdAt DateTime @default(now())
35
+
36
+ @@index([authorId])
37
+ @@index([published, createdAt(sort: Desc)])
38
+ }
39
+ ```
40
+
41
+ ## Rules
42
+
43
+ - Always add @@index for foreign keys and commonly queried fields
44
+ - Use @updatedAt for automatic timestamp management
45
+ - Prefer uuid() over autoincrement() for distributed systems
46
+ - Always run `prisma generate` after schema changes
47
+ - Always run `prisma migrate dev` to create migration files
48
+ - Fetch Context7 docs for current Prisma Client API before writing queries
@@ -0,0 +1,38 @@
1
+ # RAG Database Routing
2
+ ## Pattern
3
+ When multiple knowledge bases exist, classify the query before retrieving:
4
+
5
+ ```
6
+ Query → Classifier → Route to correct KB → Retrieve → Generate
7
+ ```
8
+
9
+ ## Routing Logic
10
+ - **Technical docs** → code documentation vector store
11
+ - **Business/policy** → internal documents store
12
+ - **Product info** → product catalog store
13
+ - **General/current** → web search
14
+ - **Ambiguous** → query multiple stores, merge results with RRF
15
+
16
+ ## Implementation
17
+ ```typescript
18
+ function routeQuery(query: string): string[] {
19
+ // Classify intent
20
+ const intent = classifyIntent(query); // lightweight LLM or keyword matching
21
+
22
+ // Map to knowledge bases
23
+ const routes: Record<string, string[]> = {
24
+ technical: ["code_docs"],
25
+ business: ["internal_docs"],
26
+ product: ["product_catalog"],
27
+ general: ["web_search"],
28
+ ambiguous: ["code_docs", "internal_docs", "web_search"],
29
+ };
30
+
31
+ return routes[intent] || routes.ambiguous;
32
+ }
33
+ ```
34
+
35
+ ## Rules
36
+ - Classify before retrieving (don't search all stores for every query)
37
+ - "Ambiguous" should query multiple stores, not guess
38
+ - Log routing decisions for accuracy monitoring.
@@ -0,0 +1,152 @@
1
+ ---
2
+ name: rapid-prototyping
3
+ description: "Use this skill when the user wants a quick proof-of-concept, MVP, working demo, or prototype built fast. Triggers: 'quick prototype', 'MVP', 'proof of concept', 'demo', 'just get it working', 'rough draft', 'hack something together', 'spike', or when speed matters more than polish. Prioritizes working code over perfect architecture."
4
+ license: MIT
5
+ ---
6
+
7
+ # Rapid Prototyping
8
+
9
+ ## What This Skill Does
10
+
11
+ Build working prototypes fast. Ship a functional demo in minimum time. Cut every corner that doesn't affect whether the thing works. Perfect code comes later.
12
+
13
+ ## Mindset
14
+
15
+ Speed over polish. Working over elegant. Done over perfect.
16
+
17
+ But never skip: input validation, error handling that tells the user what went wrong, and basic security (no hardcoded secrets, no SQL injection).
18
+
19
+ ## Decision Framework
20
+
21
+ | Question | Prototype Answer |
22
+ |----------|-----------------|
23
+ | Database? | SQLite file or JSON file. No Postgres setup. |
24
+ | Auth? | Simple token or session. No OAuth flows. |
25
+ | Frontend? | Single HTML file or minimal React. No design system. |
26
+ | Styling? | Tailwind CDN or inline styles. No custom CSS. |
27
+ | Testing? | Manual testing. No test suite. |
28
+ | Deployment? | Local only. Or single `docker run` command. |
29
+ | Error handling? | Try/catch with console.log. User sees "Something went wrong." |
30
+ | Types? | Use TypeScript but `as any` is acceptable for prototypes |
31
+
32
+ ## Fastest Stacks
33
+
34
+ ### Web App (under 2 hours)
35
+ ```
36
+ Bun + Hono (server) + single HTML file (client) + SQLite (data)
37
+ ```
38
+
39
+ ### API Only (under 1 hour)
40
+ ```
41
+ Bun + Hono + JSON file storage
42
+ ```
43
+
44
+ ### Interactive Tool (under 30 minutes)
45
+ ```
46
+ Single HTML file with vanilla JS (use web-artifacts-builder skill)
47
+ ```
48
+
49
+ ### Full App with Auth (under 4 hours)
50
+ ```
51
+ Next.js + SQLite + simple JWT + Tailwind CDN
52
+ ```
53
+
54
+ ## Patterns
55
+
56
+ ### JSON File Database (zero setup)
57
+ ```typescript
58
+ import { readFileSync, writeFileSync, existsSync } from "fs";
59
+
60
+ const DB_PATH = "./data.json";
61
+
62
+ function readDB(): any {
63
+ if (!existsSync(DB_PATH)) return { items: [] };
64
+ return JSON.parse(readFileSync(DB_PATH, "utf-8"));
65
+ }
66
+
67
+ function writeDB(data: any) {
68
+ writeFileSync(DB_PATH, JSON.stringify(data, null, 2));
69
+ }
70
+ ```
71
+
72
+ ### Quick API Server (Hono + Bun)
73
+ ```typescript
74
+ import { Hono } from "hono";
75
+ import { cors } from "hono/cors";
76
+
77
+ const app = new Hono();
78
+ app.use("*", cors());
79
+
80
+ app.get("/api/items", (c) => {
81
+ const db = readDB();
82
+ return c.json(db.items);
83
+ });
84
+
85
+ app.post("/api/items", async (c) => {
86
+ const body = await c.req.json();
87
+ const db = readDB();
88
+ const item = { id: crypto.randomUUID(), ...body, createdAt: new Date() };
89
+ db.items.push(item);
90
+ writeDB(db);
91
+ return c.json(item, 201);
92
+ });
93
+
94
+ export default { port: 3000, fetch: app.fetch };
95
+ ```
96
+
97
+ ### Inline Frontend (embed in server response)
98
+ ```typescript
99
+ app.get("/", (c) => {
100
+ return c.html(`
101
+ <!DOCTYPE html>
102
+ <html>
103
+ <head>
104
+ <script src="https://cdn.tailwindcss.com"></script>
105
+ </head>
106
+ <body class="p-8 max-w-2xl mx-auto">
107
+ <h1 class="text-2xl font-bold mb-4">My Prototype</h1>
108
+ <div id="app"></div>
109
+ <script>
110
+ // Vanilla JS UI here
111
+ </script>
112
+ </body>
113
+ </html>
114
+ `);
115
+ });
116
+ ```
117
+
118
+ ## Rules
119
+
120
+ - Get to "it works" as fast as possible
121
+ - Ask clarifying questions ONLY if you literally cannot proceed without the answer
122
+ - Use the simplest tool that solves the problem
123
+ - Hardcode configuration values (but never secrets)
124
+ - Skip abstractions. Direct function calls over dependency injection.
125
+ - One file is better than five files for a prototype
126
+ - README can be 3 lines: what it does, how to run it, what's missing
127
+ - When the prototype works, tell the user what you'd change for production
128
+
129
+ ## When to Stop Prototyping
130
+
131
+ The prototype is done when the user can interact with the core feature. Stop and show them. Let them direct what happens next. Do not refactor, add tests, or polish without being asked.
132
+
133
+ ## Verification
134
+
135
+ 1. The thing runs
136
+ 2. The core feature works when you click/type/submit
137
+ 3. Errors don't crash the process (they show a message)
138
+ 4. The user can run it with one command from the README
139
+
140
+ ## Graduating to Production
141
+
142
+ When the user wants to turn the prototype into a real project, switch to the appropriate skill:
143
+ - **fullstack-project** for complete application scaffolding
144
+ - **backend-development** for proper API architecture
145
+ - **database-design** for real schema design
146
+ - **docker-deployment** for containerization
147
+
148
+ ## Efficient Tool Batching (Lovable pattern)
149
+
150
+ Combine multiple independent operations into a single turn. Create all files in one batch rather than asking for confirmation between each.
151
+
152
+ Ambiguous: discuss first. Clear: build immediately.