@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,66 @@
1
+ # Web Assessment Executor
2
+
3
+ ## Purpose
4
+ Run assigned web tests without scope drift while preserving strong proof quality.
5
+
6
+ ## Inputs
7
+ - `target_url`
8
+ - `test_cases`
9
+ - `auth_context`
10
+ - `scope_constraints`
11
+ - `runtime_limits`
12
+
13
+ ## Execution Policy
14
+ - Complete one test case end-to-end before moving on.
15
+ - Use browser automation for stateful UX flows.
16
+ - Use HTTP tooling for deterministic replay.
17
+ - Keep payload variants bounded and logged.
18
+
19
+ ## Workflow
20
+ ### Phase 1: Session and Baseline
21
+ 1. Validate authentication and role.
22
+ 2. Capture normal behavior baseline for target action.
23
+ 3. Define success and failure signal for the case.
24
+
25
+ ### Phase 2: Case Execution
26
+ 1. Run base payload.
27
+ 2. Run controlled payload variants.
28
+ 3. Capture request context and response deltas.
29
+
30
+ ### Phase 3: Escalation
31
+ 1. If vulnerable signal appears, escalate toward measurable impact.
32
+ 2. If blocked by filter, pivot to bypass testing.
33
+ 3. If no signal after bounded variants, classify negative.
34
+
35
+ ### Phase 4: Evidence Packaging
36
+ 1. Include replay steps, payloads, and artifacts.
37
+ 2. Map evidence to case ID and vulnerability type.
38
+ 3. Store explicit rationale for verdict.
39
+
40
+ ## Minimum Variant Policy
41
+ | Vulnerability Type | Minimum Variants |
42
+ |---|---|
43
+ | XSS | context-aware payloads across HTML/attr/JS contexts |
44
+ | SQLi | boolean, error, and time-control checks |
45
+ | IDOR | object ID and role/tenant permutations |
46
+ | CSRF/workflow | token, sequence, and method variations |
47
+
48
+ ## Output Contract
49
+ ```json
50
+ {
51
+ "executed_cases": [],
52
+ "confirmed_findings": [],
53
+ "negative_cases": [],
54
+ "blocked_cases": [],
55
+ "evidence_index": []
56
+ }
57
+ ```
58
+
59
+ ## Constraints
60
+ - Do not invent unrelated tests.
61
+ - Do not claim exploitation without execution proof.
62
+
63
+ ## Quality Checklist
64
+ - [ ] Every case has terminal status.
65
+ - [ ] Variant set is sufficient and bounded.
66
+ - [ ] Confirmed findings are replayable.
@@ -0,0 +1,58 @@
1
+ # Web Exploit Prover
2
+
3
+ ## Purpose
4
+ Convert initial web vulnerability leads into high-confidence exploit outcomes.
5
+
6
+ ## Inputs
7
+ - `initial_findings`
8
+ - `target_context`
9
+ - `auth_and_role_data`
10
+ - `environment_constraints`
11
+
12
+ ## Evidence Levels
13
+ - `L1`: suspicious behavior only
14
+ - `L2`: exploit primitive observed
15
+ - `L3`: code path executed in attacker-controlled way
16
+ - `L4`: business impact demonstrated
17
+
18
+ ## Workflow
19
+ ### Phase 1: Independent Reproduction
20
+ 1. Reproduce lead with alternate technique.
21
+ 2. Validate preconditions and dependencies.
22
+ 3. Confirm baseline-control difference.
23
+
24
+ ### Phase 2: Impact Demonstration
25
+ 1. Move from primitive to measurable impact.
26
+ 2. Demonstrate confidentiality, integrity, or authorization breach.
27
+ 3. Capture minimal proof with clear stop condition.
28
+
29
+ ### Phase 3: Robustness Testing
30
+ 1. Re-test across fresh session and role context.
31
+ 2. Re-test with slight payload and transport changes.
32
+ 3. Downgrade confidence on instability.
33
+
34
+ ### Phase 4: Final Classification
35
+ 1. `confirmed` when L3+ is reproducible.
36
+ 2. `plausible` when primitive exists but impact blocked.
37
+ 3. `disputed` when mitigation is proven.
38
+ 4. `inconclusive` when environmental blockers remain.
39
+
40
+ ## Output Contract
41
+ ```json
42
+ {
43
+ "confirmed_exploits": [],
44
+ "plausible_findings": [],
45
+ "disputed_findings": [],
46
+ "inconclusive_findings": [],
47
+ "impact_evidence": []
48
+ }
49
+ ```
50
+
51
+ ## Constraints
52
+ - No severity inflation from weak indicators.
53
+ - Distinguish security mitigation from test-environment failure.
54
+
55
+ ## Quality Checklist
56
+ - [ ] Impact, not just signal, is demonstrated.
57
+ - [ ] Confirmation uses independent method.
58
+ - [ ] Confidence aligns with stability.
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: web-scraping
3
+ description: "Use this skill when the user asks to extract data from websites, scrape web pages, build content pipelines, or automate data collection from the web. Triggers: 'scrape', 'extract from website', 'web data', 'crawl', 'parse HTML', or requests to programmatically collect information from web pages."
4
+ license: MIT
5
+ ---
6
+
7
+ # Web Scraping
8
+
9
+ ## What This Skill Does
10
+
11
+ Extract structured data from web pages. HTML parsing, content extraction, batch scraping, anti-detection, and data pipeline construction.
12
+
13
+ ## Approaches
14
+
15
+ | Method | When to Use |
16
+ |--------|-------------|
17
+ | fetch + HTML parser | Simple pages, no JS rendering needed |
18
+ | Playwright/Puppeteer | JS-rendered content, SPAs, interactive pages |
19
+ | API first | Always check if the site has an API before scraping |
20
+ | Scrapling MCP | Batch scraping with anti-bot bypass (Fenix integration) |
21
+
22
+ ## Basic Scraping
23
+
24
+ ```typescript
25
+ import * as cheerio from "cheerio";
26
+
27
+ const html = await fetch(url).then(r => r.text());
28
+ const $ = cheerio.load(html);
29
+
30
+ const items = $(".product-card").map((_, el) => ({
31
+ title: $(el).find("h2").text().trim(),
32
+ price: $(el).find(".price").text().trim(),
33
+ link: $(el).find("a").attr("href"),
34
+ })).get();
35
+ ```
36
+
37
+ ## Rules
38
+
39
+ - Check robots.txt and terms of service before scraping
40
+ - Rate limit requests (1-2 seconds between requests minimum)
41
+ - Set a proper User-Agent header
42
+ - Handle pagination and infinite scroll
43
+ - Store raw HTML alongside extracted data (for debugging)
44
+ - Validate extracted data (check for empty fields, unexpected formats)
45
+ - Build resilient selectors (prefer data attributes over CSS classes)
46
+
47
+ ## Structured Scraping with Typed Output
48
+
49
+ Define the output schema before scraping:
50
+ ```typescript
51
+ interface ScrapedProduct {
52
+ title: string;
53
+ price: number;
54
+ currency: string;
55
+ description: string;
56
+ imageUrl: string;
57
+ availability: "in_stock" | "out_of_stock" | "pre_order";
58
+ }
59
+ ```
60
+
61
+ Validate every scraped item against the schema. Log items that fail validation rather than silently dropping fields.
62
+
63
+ Firecrawl integration: use Firecrawl MCP for sites that require JavaScript rendering and anti-bot bypass. Fall back to cheerio for simple HTML pages.
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: webapp-testing
3
+ description: "Use this skill when writing end-to-end tests, browser automation, visual regression tests, or accessibility tests for web applications. Triggers: 'E2E test', 'Playwright', 'end-to-end', 'browser test', 'visual regression', 'accessibility test', 'integration test', or requests to verify web application behavior from the user's perspective."
4
+ license: MIT
5
+ ---
6
+
7
+ # Web Application Testing
8
+
9
+ ## What This Skill Does
10
+
11
+ End-to-end testing with Playwright. Browser automation, visual regression, accessibility testing, and cross-browser verification.
12
+
13
+ ## Before You Start
14
+
15
+ **Context7:** Fetch Playwright docs before writing tests. The API evolves.
16
+
17
+ ## Test Structure
18
+
19
+ ```typescript
20
+ import { test, expect } from "@playwright/test";
21
+
22
+ test.describe("Authentication", () => {
23
+ test("user can register and login", async ({ page }) => {
24
+ await page.goto("/register");
25
+ await page.fill('[name="email"]', "test@example.com");
26
+ await page.fill('[name="password"]', "SecurePass123!");
27
+ await page.click('button[type="submit"]');
28
+
29
+ await expect(page).toHaveURL("/dashboard");
30
+ await expect(page.locator("h1")).toContainText("Welcome");
31
+ });
32
+
33
+ test("shows error for invalid credentials", async ({ page }) => {
34
+ await page.goto("/login");
35
+ await page.fill('[name="email"]', "wrong@example.com");
36
+ await page.fill('[name="password"]', "wrong");
37
+ await page.click('button[type="submit"]');
38
+
39
+ await expect(page.locator(".error")).toContainText("Invalid credentials");
40
+ await expect(page).toHaveURL("/login");
41
+ });
42
+ });
43
+ ```
44
+
45
+ ## Playwright Config
46
+
47
+ ```typescript
48
+ import { defineConfig } from "@playwright/test";
49
+
50
+ export default defineConfig({
51
+ testDir: "./tests/e2e",
52
+ timeout: 30_000,
53
+ retries: 2,
54
+ use: {
55
+ baseURL: "http://localhost:3000",
56
+ screenshot: "only-on-failure",
57
+ trace: "on-first-retry",
58
+ },
59
+ webServer: {
60
+ command: "bun run dev",
61
+ port: 3000,
62
+ reuseExistingServer: !process.env.CI,
63
+ },
64
+ });
65
+ ```
66
+
67
+ ## What to Test E2E
68
+
69
+ - Critical user journeys (registration, login, core feature, payment)
70
+ - Cross-browser (Chromium, Firefox, WebKit)
71
+ - Mobile viewports
72
+ - Error states and edge cases
73
+
74
+ ## What NOT to Test E2E
75
+
76
+ - Unit-testable logic (calculations, transformations)
77
+ - API responses (use API tests)
78
+ - Every possible input combination (use unit tests)
79
+
80
+ ## Rules
81
+
82
+ - Use data-testid attributes for selectors (stable across CSS changes)
83
+ - Each test must be independent (own setup, own teardown)
84
+ - Tests must run in CI and locally
85
+ - Screenshot on failure for debugging
86
+ - Keep E2E test count small (10-30 for most apps). Pyramid: many unit, some integration, few E2E.
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: webhook-development
3
+ description: "Use this skill when building webhook endpoints, processing webhook events, implementing retry logic, or verifying webhook signatures. Triggers: 'webhook', 'callback URL', 'event notification', 'webhook handler', 'signature verification', or requests to receive events from external services."
4
+ license: MIT
5
+ ---
6
+
7
+ # Webhook Development
8
+
9
+ ## What This Skill Does
10
+
11
+ Build reliable webhook endpoints. Receive events from external services, verify authenticity, process idempotently, and handle failures.
12
+
13
+ ## Webhook Handler Pattern
14
+
15
+ ```typescript
16
+ app.post("/webhooks/:provider", async (c) => {
17
+ const provider = c.req.param("provider");
18
+ const signature = c.req.header("x-signature-256");
19
+ const body = await c.req.text();
20
+
21
+ // 1. Verify signature
22
+ if (!verifySignature(body, signature, secrets[provider])) {
23
+ return c.json({ error: "Invalid signature" }, 401);
24
+ }
25
+
26
+ // 2. Parse event
27
+ const event = JSON.parse(body);
28
+
29
+ // 3. Idempotency check
30
+ const eventId = event.id || c.req.header("x-event-id");
31
+ if (await isProcessed(eventId)) {
32
+ return c.json({ status: "already_processed" }, 200);
33
+ }
34
+
35
+ // 4. Queue for async processing
36
+ await queue.add("webhook", { provider, event, eventId });
37
+
38
+ // 5. Respond immediately (don't process inline)
39
+ return c.json({ status: "accepted" }, 202);
40
+ });
41
+ ```
42
+
43
+ ## Signature Verification
44
+
45
+ ```typescript
46
+ import { createHmac, timingSafeEqual } from "crypto";
47
+
48
+ function verifySignature(body: string, signature: string, secret: string): boolean {
49
+ const expected = createHmac("sha256", secret).update(body).digest("hex");
50
+ const sig = signature.replace("sha256=", "");
51
+ return timingSafeEqual(Buffer.from(sig), Buffer.from(expected));
52
+ }
53
+ ```
54
+
55
+ ## Rules
56
+
57
+ - Always verify webhook signatures (never trust unverified events)
58
+ - Always respond with 200/202 within 5 seconds (process async)
59
+ - Always implement idempotency (webhooks can be delivered multiple times)
60
+ - Use timing-safe comparison for signatures (prevent timing attacks)
61
+ - Log every received webhook with event type and processing result
62
+ - Store raw webhook payloads for debugging and replay
@@ -0,0 +1,67 @@
1
+ ---
2
+ name: writing-skills
3
+ description: "Use this skill when creating new skills for the agent, evaluating skill quality, or improving existing skills. Triggers: 'create a skill', 'write a skill', 'new skill', 'skill template', 'improve this skill', or any meta-work on the skill system itself."
4
+ license: MIT
5
+ ---
6
+
7
+ # Writing Skills (Meta-Skill)
8
+
9
+ ## What This Skill Does
10
+
11
+ Create, evaluate, and improve agent skills. TDD for skill authoring: test that the skill changes agent behavior before shipping.
12
+
13
+ ## Skill File Structure
14
+
15
+ ```
16
+ skill-name/
17
+ ├── SKILL.md # Primary skill document
18
+ ├── skill.yaml # Optional: Fenix-native metadata (triggers, owns, handoffs)
19
+ └── references/ # Optional: deep-dive docs loaded on demand
20
+ ├── patterns.md
21
+ └── examples.md
22
+ ```
23
+
24
+ ## SKILL.md Template
25
+
26
+ ```markdown
27
+ ---
28
+ name: skill-name
29
+ description: "Aggressive trigger description. Claude undertriggers skills, so write descriptions that activate on any related query. Include specific trigger words."
30
+ license: MIT
31
+ ---
32
+
33
+ # Skill Title
34
+
35
+ ## What This Skill Does
36
+ One paragraph. What capability does the agent gain?
37
+
38
+ ## When to Activate
39
+ Bullet list of trigger conditions.
40
+
41
+ ## [Core Content]
42
+ The actual knowledge, patterns, and procedures.
43
+
44
+ ## Rules
45
+ Non-negotiable constraints.
46
+
47
+ ## Verification
48
+ How to confirm the skill worked correctly.
49
+
50
+ ## Integration with Other Skills
51
+ Cross-references to complementary skills.
52
+ ```
53
+
54
+ ## Testing a Skill
55
+
56
+ 1. Write 5 test prompts that SHOULD trigger the skill
57
+ 2. Write 3 test prompts that should NOT trigger the skill
58
+ 3. Run each through the agent
59
+ 4. Verify: correct triggers fire, incorrect triggers don't, output quality improves
60
+
61
+ ## Rules
62
+
63
+ - Description field is the most important part (it's the activation mechanism)
64
+ - Write descriptions aggressively. Better to overtrigger than undertrigger.
65
+ - Every skill must have a verification section
66
+ - Skills should be self-contained (readable without loading other skills)
67
+ - Test with real prompts before shipping
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: xlsx-generation
3
+ description: "Use this skill when the user asks to create or edit Excel spreadsheets (.xlsx). Triggers: 'spreadsheet', 'Excel', '.xlsx', '.csv', 'data table', 'pivot table', 'chart', 'formulas', or requests for tabular data with calculations and formatting."
4
+ license: MIT
5
+ ---
6
+
7
+ # XLSX Generation
8
+
9
+ ## What This Skill Does
10
+
11
+ Create and edit Excel spreadsheets using the `exceljs` npm package (MIT, pure JavaScript, runs on Bun).
12
+
13
+ ## Dependencies
14
+
15
+ ```bash
16
+ bun add exceljs
17
+ ```
18
+
19
+ ## Creation
20
+
21
+ ```typescript
22
+ import ExcelJS from "exceljs";
23
+
24
+ const workbook = new ExcelJS.Workbook();
25
+ workbook.creator = "Fenix Agent";
26
+ workbook.created = new Date();
27
+
28
+ const sheet = workbook.addWorksheet("Data");
29
+
30
+ // Define columns
31
+ sheet.columns = [
32
+ { header: "Name", key: "name", width: 25 },
33
+ { header: "Email", key: "email", width: 30 },
34
+ { header: "Amount", key: "amount", width: 15 },
35
+ { header: "Date", key: "date", width: 15 },
36
+ ];
37
+
38
+ // Add rows
39
+ sheet.addRows([
40
+ { name: "Alice", email: "alice@example.com", amount: 1500, date: new Date("2025-01-15") },
41
+ { name: "Bob", email: "bob@example.com", amount: 2300, date: new Date("2025-02-20") },
42
+ { name: "Carol", email: "carol@example.com", amount: 980, date: new Date("2025-03-10") },
43
+ ]);
44
+
45
+ // Style header row
46
+ const headerRow = sheet.getRow(1);
47
+ headerRow.font = { bold: true, color: { argb: "FFFFFFFF" } };
48
+ headerRow.fill = { type: "pattern", pattern: "solid", fgColor: { argb: "FF2563EB" } };
49
+ headerRow.alignment = { vertical: "middle", horizontal: "center" };
50
+
51
+ // Format amount column as currency
52
+ sheet.getColumn("amount").numFmt = "$#,##0.00";
53
+
54
+ // Format date column
55
+ sheet.getColumn("date").numFmt = "yyyy-mm-dd";
56
+
57
+ // Add formula for total
58
+ const lastRow = sheet.rowCount;
59
+ const totalRow = sheet.addRow({ name: "TOTAL" });
60
+ totalRow.getCell("amount").value = { formula: `SUM(C2:C${lastRow})` };
61
+ totalRow.font = { bold: true };
62
+
63
+ // Freeze header row
64
+ sheet.views = [{ state: "frozen", ySplit: 1 }];
65
+
66
+ // Auto-filter
67
+ sheet.autoFilter = { from: "A1", to: `D${lastRow}` };
68
+
69
+ // Conditional formatting (highlight amounts over 2000)
70
+ sheet.addConditionalFormatting({
71
+ ref: `C2:C${lastRow}`,
72
+ rules: [{
73
+ type: "cellIs",
74
+ operator: "greaterThan",
75
+ formulae: [2000],
76
+ style: { fill: { type: "pattern", pattern: "solid", bgColor: { argb: "FF22C55E" } } },
77
+ }],
78
+ });
79
+
80
+ // Write file
81
+ await workbook.xlsx.writeFile("output.xlsx");
82
+ // Or get buffer: const buffer = await workbook.xlsx.writeBuffer();
83
+ ```
84
+
85
+ ## Reading Existing .xlsx
86
+
87
+ ```typescript
88
+ const workbook = new ExcelJS.Workbook();
89
+ await workbook.xlsx.readFile("input.xlsx");
90
+
91
+ const sheet = workbook.getWorksheet("Sheet1");
92
+ sheet.eachRow((row, rowNumber) => {
93
+ console.log(`Row ${rowNumber}:`, row.values);
94
+ });
95
+ ```
96
+
97
+ ## Reading CSV
98
+
99
+ ```typescript
100
+ const workbook = new ExcelJS.Workbook();
101
+ const sheet = await workbook.csv.readFile("input.csv");
102
+ ```
103
+
104
+ ## Charts
105
+
106
+ ExcelJS has limited chart support. For charts, create the data in ExcelJS, then add charts by manipulating the underlying XML with `adm-zip`, or recommend the user opens in Excel/Sheets for chart creation.
107
+
108
+ ## Rules
109
+
110
+ - Use `exceljs` for creation and editing (pure JS, Bun-compatible)
111
+ - Always freeze the header row
112
+ - Always format numbers with appropriate decimal places
113
+ - Include totals/summaries for numeric columns
114
+ - Use auto-filter on data tables
115
+ - Test output opens in Excel or LibreOffice Calc
116
+ - All packages are MIT licensed, no Python required