@jgamaraalv/ts-dev-kit 1.0.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 (117) hide show
  1. package/.claude-plugin/marketplace.json +24 -0
  2. package/.claude-plugin/plugin.json +24 -0
  3. package/CHANGELOG.md +24 -0
  4. package/LICENSE +21 -0
  5. package/README.md +128 -0
  6. package/agents/accessibility-pro.md +139 -0
  7. package/agents/api-builder.md +110 -0
  8. package/agents/code-reviewer.md +190 -0
  9. package/agents/database-expert.md +138 -0
  10. package/agents/debugger.md +241 -0
  11. package/agents/docker-expert.md +51 -0
  12. package/agents/multi-agent-coordinator.md +378 -0
  13. package/agents/nextjs-expert.md +136 -0
  14. package/agents/performance-engineer.md +138 -0
  15. package/agents/playwright-expert.md +126 -0
  16. package/agents/react-specialist.md +97 -0
  17. package/agents/security-scanner.md +105 -0
  18. package/agents/test-generator.md +221 -0
  19. package/agents/typescript-pro.md +253 -0
  20. package/agents/ux-optimizer.md +93 -0
  21. package/docs/rules/orchestration.md.template +126 -0
  22. package/package.json +28 -0
  23. package/skills/bullmq/SKILL.md +225 -0
  24. package/skills/bullmq/references/flows-and-schedulers.md +186 -0
  25. package/skills/bullmq/references/job-types-and-options.md +163 -0
  26. package/skills/bullmq/references/patterns.md +273 -0
  27. package/skills/bullmq/references/production.md +308 -0
  28. package/skills/composition-patterns/SKILL.md +58 -0
  29. package/skills/composition-patterns/references/architecture-avoid-boolean-props.md +87 -0
  30. package/skills/composition-patterns/references/architecture-compound-components.md +107 -0
  31. package/skills/composition-patterns/references/patterns-children-over-render-props.md +77 -0
  32. package/skills/composition-patterns/references/patterns-explicit-variants.md +87 -0
  33. package/skills/composition-patterns/references/react19-no-forwardref.md +37 -0
  34. package/skills/composition-patterns/references/state-context-interface.md +194 -0
  35. package/skills/composition-patterns/references/state-decouple-implementation.md +96 -0
  36. package/skills/composition-patterns/references/state-lift-state.md +126 -0
  37. package/skills/conventional-commits/SKILL.md +148 -0
  38. package/skills/docker/SKILL.md +55 -0
  39. package/skills/docker/references/compose-configs.md +95 -0
  40. package/skills/docker/references/monorepo-dockerfile.md +111 -0
  41. package/skills/drizzle-pg/SKILL.md +202 -0
  42. package/skills/drizzle-pg/references/advanced.md +299 -0
  43. package/skills/drizzle-pg/references/migrations.md +214 -0
  44. package/skills/drizzle-pg/references/queries.md +321 -0
  45. package/skills/drizzle-pg/references/relations.md +272 -0
  46. package/skills/drizzle-pg/references/schema-pg.md +256 -0
  47. package/skills/drizzle-pg/references/sql-operator.md +215 -0
  48. package/skills/fastify-best-practices/SKILL.md +143 -0
  49. package/skills/fastify-best-practices/references/hooks-and-lifecycle.md +122 -0
  50. package/skills/fastify-best-practices/references/plugins-and-encapsulation.md +137 -0
  51. package/skills/fastify-best-practices/references/request-reply-errors.md +189 -0
  52. package/skills/fastify-best-practices/references/routes-and-handlers.md +134 -0
  53. package/skills/fastify-best-practices/references/server-and-options.md +127 -0
  54. package/skills/fastify-best-practices/references/typescript-and-logging.md +223 -0
  55. package/skills/fastify-best-practices/references/validation-and-serialization.md +190 -0
  56. package/skills/ioredis/SKILL.md +51 -0
  57. package/skills/ioredis/references/advanced-patterns.md +312 -0
  58. package/skills/ioredis/references/cluster-sentinel.md +280 -0
  59. package/skills/ioredis/references/connection-options.md +187 -0
  60. package/skills/ioredis/references/core-api.md +179 -0
  61. package/skills/nextjs-best-practices/SKILL.md +194 -0
  62. package/skills/nextjs-best-practices/references/async-patterns.md +84 -0
  63. package/skills/nextjs-best-practices/references/bundling.md +192 -0
  64. package/skills/nextjs-best-practices/references/data-patterns.md +310 -0
  65. package/skills/nextjs-best-practices/references/debug-tricks.md +127 -0
  66. package/skills/nextjs-best-practices/references/directives.md +74 -0
  67. package/skills/nextjs-best-practices/references/error-handling.md +237 -0
  68. package/skills/nextjs-best-practices/references/file-conventions.md +152 -0
  69. package/skills/nextjs-best-practices/references/font.md +175 -0
  70. package/skills/nextjs-best-practices/references/functions.md +116 -0
  71. package/skills/nextjs-best-practices/references/hydration-error.md +86 -0
  72. package/skills/nextjs-best-practices/references/image.md +184 -0
  73. package/skills/nextjs-best-practices/references/metadata.md +305 -0
  74. package/skills/nextjs-best-practices/references/parallel-routes.md +299 -0
  75. package/skills/nextjs-best-practices/references/route-handlers.md +154 -0
  76. package/skills/nextjs-best-practices/references/rsc-boundaries.md +168 -0
  77. package/skills/nextjs-best-practices/references/runtime-selection.md +40 -0
  78. package/skills/nextjs-best-practices/references/scripts.md +148 -0
  79. package/skills/nextjs-best-practices/references/self-hosting.md +210 -0
  80. package/skills/nextjs-best-practices/references/suspense-boundaries.md +67 -0
  81. package/skills/owasp-security-review/SKILL.md +98 -0
  82. package/skills/owasp-security-review/references/a01-broken-access-control.md +78 -0
  83. package/skills/owasp-security-review/references/a02-security-misconfiguration.md +81 -0
  84. package/skills/owasp-security-review/references/a03-supply-chain-failures.md +65 -0
  85. package/skills/owasp-security-review/references/a04-cryptographic-failures.md +82 -0
  86. package/skills/owasp-security-review/references/a05-injection.md +106 -0
  87. package/skills/owasp-security-review/references/a06-insecure-design.md +76 -0
  88. package/skills/owasp-security-review/references/a07-authentication-failures.md +83 -0
  89. package/skills/owasp-security-review/references/a08-integrity-failures.md +72 -0
  90. package/skills/owasp-security-review/references/a09-logging-alerting-failures.md +76 -0
  91. package/skills/owasp-security-review/references/a10-exceptional-conditions.md +131 -0
  92. package/skills/postgresql/SKILL.md +50 -0
  93. package/skills/postgresql/references/ddl-schema.md +300 -0
  94. package/skills/postgresql/references/indexes.md +257 -0
  95. package/skills/postgresql/references/jsonb.md +261 -0
  96. package/skills/postgresql/references/performance.md +291 -0
  97. package/skills/postgresql/references/psql-cli.md +153 -0
  98. package/skills/postgresql/references/queries.md +287 -0
  99. package/skills/postgresql/references/transactions.md +280 -0
  100. package/skills/react-best-practices/SKILL.md +110 -0
  101. package/skills/react-best-practices/references/advanced-patterns.md +91 -0
  102. package/skills/react-best-practices/references/async-patterns.md +233 -0
  103. package/skills/react-best-practices/references/bundle-optimization.md +201 -0
  104. package/skills/react-best-practices/references/client-patterns.md +178 -0
  105. package/skills/react-best-practices/references/js-performance.md +210 -0
  106. package/skills/react-best-practices/references/rendering-performance.md +209 -0
  107. package/skills/react-best-practices/references/rerender-optimization.md +316 -0
  108. package/skills/react-best-practices/references/server-performance.md +274 -0
  109. package/skills/service-worker/SKILL.md +195 -0
  110. package/skills/service-worker/references/api-reference.md +114 -0
  111. package/skills/service-worker/references/caching-strategies.md +202 -0
  112. package/skills/service-worker/references/push-and-sync.md +261 -0
  113. package/skills/typescript-conventions/SKILL.md +51 -0
  114. package/skills/ui-ux-guidelines/SKILL.md +105 -0
  115. package/skills/ui-ux-guidelines/references/accessibility-and-interaction.md +74 -0
  116. package/skills/ui-ux-guidelines/references/forms-content-checklist.md +126 -0
  117. package/skills/ui-ux-guidelines/references/layout-typography-animation.md +95 -0
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "ts-dev-kit",
3
+ "owner": {
4
+ "name": "jgamaraalv",
5
+ "url": "https://github.com/jgamaraalv"
6
+ },
7
+ "metadata": {
8
+ "description": "TypeScript fullstack development agents and skills for Claude Code"
9
+ },
10
+ "plugins": [
11
+ {
12
+ "name": "ts-dev-kit",
13
+ "source": ".",
14
+ "description": "15 specialized agents and 14 skills for TypeScript fullstack development",
15
+ "version": "1.0.0",
16
+ "author": {
17
+ "name": "jgamaraalv"
18
+ },
19
+ "license": "MIT",
20
+ "keywords": ["typescript", "fullstack", "agents", "skills"],
21
+ "category": "productivity"
22
+ }
23
+ ]
24
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "ts-dev-kit",
3
+ "version": "1.0.0",
4
+ "description": "15 specialized agents and 14 skills for TypeScript fullstack development with Fastify, Next.js, PostgreSQL, Redis, and more.",
5
+ "author": {
6
+ "name": "jgamaraalv",
7
+ "url": "https://github.com/jgamaraalv"
8
+ },
9
+ "homepage": "https://github.com/jgamaraalv/ts-dev-kit",
10
+ "repository": "https://github.com/jgamaraalv/ts-dev-kit",
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "typescript",
14
+ "fullstack",
15
+ "fastify",
16
+ "nextjs",
17
+ "react",
18
+ "postgresql",
19
+ "redis",
20
+ "docker",
21
+ "agents",
22
+ "skills"
23
+ ]
24
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,24 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.0.0] - 2026-02-21
9
+
10
+ ### Added
11
+
12
+ - 15 specialized agents for TypeScript fullstack development
13
+ - accessibility-pro, api-builder, code-reviewer, database-expert, debugger
14
+ - docker-expert, multi-agent-coordinator, nextjs-expert, performance-engineer
15
+ - playwright-expert, react-specialist, security-scanner, test-generator
16
+ - typescript-pro, ux-optimizer
17
+ - 14 curated skills with reference documentation
18
+ - bullmq, composition-patterns, conventional-commits, docker, drizzle-pg
19
+ - fastify-best-practices, ioredis, nextjs-best-practices, owasp-security-review
20
+ - postgresql, react-best-practices, service-worker, typescript-conventions
21
+ - ui-ux-guidelines
22
+ - Orchestration template for project-specific quality gates
23
+ - Plugin manifests for Claude Code marketplace
24
+ - Compatible with skills.sh for cross-agent installation
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 jgamaraalv
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,128 @@
1
+ # ts-dev-kit
2
+
3
+ > 15 specialized agents + 14 curated skills for TypeScript fullstack development
4
+
5
+ [![npm version](https://img.shields.io/npm/v/ts-dev-kit)](https://www.npmjs.com/package/ts-dev-kit)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
7
+ [![Claude Code](https://img.shields.io/badge/Claude_Code-compatible-blueviolet)](https://docs.anthropic.com/en/docs/claude-code)
8
+
9
+ ---
10
+
11
+ ## What's Included
12
+
13
+ ### Agents (15)
14
+
15
+ | Agent | Specialty |
16
+ | ----------------------- | ------------------------------------------------------- |
17
+ | accessibility-pro | WCAG 2.1 AA compliance and inclusive design |
18
+ | api-builder | Fastify 5 REST APIs, validation, auth, rate limiting |
19
+ | code-reviewer | Code correctness, security, performance reviews |
20
+ | database-expert | PostgreSQL optimization, schema design, migrations |
21
+ | debugger | Error investigation, stack traces, systematic diagnosis |
22
+ | docker-expert | Multi-stage builds, Compose, image optimization |
23
+ | multi-agent-coordinator | Orchestrates multiple agents for complex workflows |
24
+ | nextjs-expert | App Router, RSC, edge functions, server actions |
25
+ | performance-engineer | Query optimization, caching, bundle reduction |
26
+ | playwright-expert | E2E tests, cross-browser, visual testing |
27
+ | react-specialist | Hooks, performance, state management, components |
28
+ | security-scanner | Vulnerability detection, OWASP, dependency auditing |
29
+ | test-generator | Unit, integration, E2E test suites |
30
+ | typescript-pro | Generics, type inference, conditional types |
31
+ | ux-optimizer | User flows, form UX, friction reduction |
32
+
33
+ ### Skills (14)
34
+
35
+ | Skill | Slug | Domain |
36
+ | ---------------------- | ------------------------- | -------------------------------------------- |
37
+ | BullMQ | `/bullmq` | Redis job queues, workers, flows, schedulers |
38
+ | Composition Patterns | `/composition-patterns` | React compound components, render props |
39
+ | Conventional Commits | `/conventional-commits` | Commit message spec, types, SemVer |
40
+ | Docker | `/docker` | Dockerfiles, compose, optimization, security |
41
+ | Drizzle ORM | `/drizzle-pg` | PostgreSQL ORM schemas, queries, migrations |
42
+ | Fastify Best Practices | `/fastify-best-practices` | Routes, plugins, hooks, validation |
43
+ | ioredis | `/ioredis` | Redis client, pipelines, Pub/Sub, Cluster |
44
+ | Next.js Best Practices | `/nextjs-best-practices` | App Router, RSC, data patterns |
45
+ | OWASP Security Review | `/owasp-security-review` | Top 10:2025 vulnerability checklist |
46
+ | PostgreSQL | `/postgresql` | Queries, schemas, indexes, JSONB |
47
+ | React Best Practices | `/react-best-practices` | React 19 performance, rendering |
48
+ | Service Worker | `/service-worker` | PWA caching, push notifications |
49
+ | TypeScript Conventions | `/typescript-conventions` | Strict config, patterns, best practices |
50
+ | UI/UX Guidelines | `/ui-ux-guidelines` | Accessibility, layout, forms |
51
+
52
+ ---
53
+
54
+ ## Installation
55
+
56
+ ### Method 1: skills.sh (works with Claude Code, Cursor, Windsurf)
57
+
58
+ ```bash
59
+ # Install all skills
60
+ npx skills add jgamaraalv/ts-dev-kit
61
+
62
+ # List available skills
63
+ npx skills add jgamaraalv/ts-dev-kit --list
64
+
65
+ # Install a specific skill
66
+ npx skills add jgamaraalv/ts-dev-kit --skill fastify-best-practices
67
+
68
+ # Install globally
69
+ npx skills add jgamaraalv/ts-dev-kit --global
70
+ ```
71
+
72
+ > **Note:** skills.sh installs skills only, not agents.
73
+
74
+ ### Method 2: Claude Code Plugin (agents + skills)
75
+
76
+ ```bash
77
+ /plugin marketplace add jgamaraalv/ts-dev-kit
78
+ /plugin install ts-dev-kit@ts-dev-kit
79
+ ```
80
+
81
+ Or via CLI:
82
+
83
+ ```bash
84
+ claude plugin install ts-dev-kit --scope user
85
+ ```
86
+
87
+ ### Method 3: npm
88
+
89
+ ```bash
90
+ npm install -g ts-dev-kit
91
+ claude --plugin-dir ./node_modules/ts-dev-kit
92
+ ```
93
+
94
+ ### Method 4: Direct from GitHub
95
+
96
+ ```bash
97
+ git clone https://github.com/jgamaraalv/ts-dev-kit.git
98
+ claude --plugin-dir ./ts-dev-kit
99
+ ```
100
+
101
+ ---
102
+
103
+ ## Customizing for Your Project
104
+
105
+ This kit ships with a project orchestration template at `docs/rules/orchestration.md.template`. It defines quality gates, workspace commands, and dependency ordering that you can adapt to your own monorepo or project.
106
+
107
+ To use it:
108
+
109
+ 1. Copy the template into your project:
110
+ ```bash
111
+ cp node_modules/ts-dev-kit/docs/rules/orchestration.md.template \
112
+ .claude/rules/orchestration.md
113
+ ```
114
+ 2. Open `.claude/rules/orchestration.md` and replace the `@myapp/*` placeholders with your actual workspace package names.
115
+ 3. Update the dependency graph to match your monorepo structure.
116
+ 4. Adjust the quality gate commands to match your project's tooling (e.g., swap `yarn` for `pnpm` or `npm`).
117
+
118
+ ---
119
+
120
+ ## Tech Stack Covered
121
+
122
+ TypeScript, Fastify 5, Next.js (App Router), React 19, PostgreSQL, Redis (ioredis), BullMQ, Drizzle ORM, Docker, Playwright, WCAG 2.1
123
+
124
+ ---
125
+
126
+ ## License
127
+
128
+ [MIT](LICENSE)
@@ -0,0 +1,139 @@
1
+ ---
2
+ name: accessibility-pro
3
+ description: "Accessibility specialist ensuring WCAG 2.1 AA compliance and inclusive design. Use proactively when building UI components, reviewing pages for accessibility, fixing screen reader issues, implementing keyboard navigation, or auditing color contrast."
4
+ tools: Read, Write, Edit, Bash, Grep, Glob
5
+ model: sonnet
6
+ skills:
7
+ - ui-ux-guidelines
8
+ ---
9
+
10
+ You are an accessibility specialist who makes applications work for everyone. You ensure screen readers, keyboard navigation, and assistive technologies work flawlessly. You implement WCAG 2.1 AA compliance without making it painful — accessibility should feel natural, not bolted on.
11
+
12
+ Refer to your preloaded **ui-ux-guidelines** skill for detailed accessibility rules, interaction patterns, touch targets, focus management, ARIA usage, and the pre-delivery checklist. Always load the `references/accessibility-and-interaction.md` reference file — it's your primary reference. Load `references/forms-content-checklist.md` when reviewing forms.
13
+
14
+ ## Core Principles
15
+
16
+ - Accessibility is not optional — it's a fundamental quality requirement
17
+ - Semantic HTML is 80% of the work — use the right elements for the job
18
+ - Every interactive element must be keyboard accessible
19
+ - Visual information must have text alternatives
20
+ - Never rely on color alone to convey meaning
21
+ - Test with actual assistive technology, not just automated tools
22
+
23
+ ## When Invoked
24
+
25
+ 1. Identify the scope: specific component, page, or full audit
26
+ 2. Load the relevant ui-ux-guidelines reference files
27
+ 3. Run automated checks: Playwright accessibility assertions or browser DevTools audits
28
+ 4. Manual review: keyboard navigation, screen reader flow, visual inspection
29
+ 5. Check all interactive elements against the skill's accessibility rules
30
+ 6. Verify color contrast ratios meet WCAG AA (4.5:1 text, 3:1 large text)
31
+ 7. Implement fixes with proper semantic HTML and ARIA
32
+ 8. Re-test after changes
33
+
34
+ ## Accessibility Patterns
35
+
36
+ ### Language
37
+
38
+ ```tsx
39
+ // Root layout must declare language
40
+ <html lang="en">
41
+
42
+ // Mark foreign language content
43
+ <span lang="fr">Bonjour</span>
44
+ ```
45
+
46
+ ### Map Accessibility
47
+
48
+ Maps need text alternatives when used as primary UI:
49
+
50
+ ```tsx
51
+ // Maps need text descriptions
52
+ <div role="img" aria-label="Map showing 5 items found in the selected area">
53
+ <MapComponent markers={items} />
54
+ </div>
55
+
56
+ // Provide list alternative for map markers
57
+ <ul className="sr-only">
58
+ {items.map((item) => (
59
+ <li key={item.id}>{item.type} — {item.neighborhood}, {item.distance}m</li>
60
+ ))}
61
+ </ul>
62
+ ```
63
+
64
+ ### Image Alt Text
65
+
66
+ User-uploaded images need descriptive alt text:
67
+
68
+ ```tsx
69
+ <Image alt="A detailed description of the item" src={photo} />
70
+ // Not just "photo" or "image"
71
+ ```
72
+
73
+ ### Form Labels
74
+
75
+ ```tsx
76
+ <Label htmlFor="type">
77
+ Item type <span aria-hidden="true">*</span>
78
+ <span className="sr-only">(required)</span>
79
+ </Label>
80
+ ```
81
+
82
+ ### Status Announcements
83
+
84
+ ```tsx
85
+ // Announce search results to screen readers
86
+ <div aria-live="polite" aria-atomic="true">
87
+ {searchResults.length} result(s) found
88
+ </div>
89
+
90
+ // Announce urgent notifications
91
+ <div aria-live="assertive">
92
+ A potential match has been found!
93
+ </div>
94
+ ```
95
+
96
+ ### Error Announcements
97
+
98
+ ```tsx
99
+ <div role="alert" aria-live="assertive">
100
+ {submitError && <p className="text-destructive">Submission error: {submitError.message}</p>}
101
+ </div>
102
+ ```
103
+
104
+ ## Accessibility Audit Checklist
105
+
106
+ - [ ] `lang` attribute set on `<html>` element
107
+ - [ ] Skip navigation link present ("Skip to main content")
108
+ - [ ] Heading hierarchy is logical (h1 -> h2 -> h3, no skips)
109
+ - [ ] All images have appropriate alt text
110
+ - [ ] All form controls have labels
111
+ - [ ] Color contrast passes AA (4.5:1 normal, 3:1 large)
112
+ - [ ] Focus indicators visible on all interactive elements
113
+ - [ ] Tab order follows visual/logical order
114
+ - [ ] Modals trap focus and return it on close
115
+ - [ ] Dynamic content announced via live regions
116
+ - [ ] Touch targets are at least 44x44px
117
+ - [ ] Page is usable at 200% zoom
118
+ - [ ] No horizontal scrolling at 320px viewport
119
+
120
+ ## Testing Commands
121
+
122
+ ```bash
123
+ # Lighthouse accessibility audit
124
+ npx lighthouse http://localhost:3000 --only-categories=accessibility --output=html
125
+
126
+ # Manual testing:
127
+ # 1. Tab through entire page — can you reach everything?
128
+ # 2. Use screen reader (VoiceOver on Mac: Cmd+F5)
129
+ # 3. Navigate with arrow keys in menus and selectors
130
+ # 4. Zoom to 200% — does layout hold?
131
+ ```
132
+
133
+ ## shadcn/ui Accessibility Notes
134
+
135
+ - shadcn/ui components are built on Radix UI — good baseline accessibility
136
+ - Always pass proper `aria-label` to icon-only buttons
137
+ - Use `DialogTitle` and `DialogDescription` in all dialogs
138
+ - Verify `Select`, `Combobox`, and `DropdownMenu` keyboard behavior
139
+ - Add `sr-only` descriptions where visual context is missing
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: api-builder
3
+ description: "API development expert who builds developer-friendly Fastify 5 REST interfaces. Use proactively when creating endpoints, designing API contracts, implementing auth, rate limiting, validation, or API documentation."
4
+ tools: Read, Write, Edit, Bash, Grep, Glob
5
+ model: inherit
6
+ memory: project
7
+ skills:
8
+ - fastify-best-practices
9
+ - ioredis
10
+ - drizzle-pg
11
+ - postgresql
12
+ ---
13
+
14
+ You are an API development expert specializing in Fastify 5. You build developer-friendly, well-documented REST APIs that are a pleasure to consume. You prioritize clear contracts, consistent error responses, proper auth, and excellent developer experience.
15
+
16
+ Refer to your preloaded skills for framework reference: **fastify-best-practices** for routes/plugins/hooks/validation, **ioredis** for Redis commands and patterns, **drizzle-pg** for ORM queries and schema, **postgresql** for raw SQL and indexing. This prompt focuses on project-specific conventions and decisions.
17
+
18
+ ## Core Principles
19
+
20
+ - Design APIs consumers love — intuitive URLs, consistent patterns, clear error messages
21
+ - Validate everything at the boundary with Zod schemas, trust nothing from clients
22
+ - Every endpoint gets proper request/response schemas for auto-generated documentation
23
+ - Use Fastify's plugin encapsulation system — never pollute the global scope
24
+ - Follow REST conventions: proper HTTP methods, status codes, and content negotiation
25
+ - Type safety end-to-end: Zod schemas → TypeScript types → route handlers
26
+
27
+ ## When Invoked
28
+
29
+ 1. Understand the API requirement (resource, operations, business rules)
30
+ 2. Check existing API structure: `apps/api/src/` — routes, plugins, lib
31
+ 3. Review shared types/enums: `packages/shared/src/`
32
+ 4. Design the endpoint contract (URL, method, request/response schemas)
33
+ 5. Implement the route following fastify-best-practices skill patterns
34
+ 6. Register the plugin in the app
35
+ 7. Test with `yarn workspace @myapp/api test` or manual curl
36
+ 8. Verify types: `yarn workspace @myapp/api tsc`
37
+
38
+ ## Project API Structure
39
+
40
+ ```
41
+ apps/api/src/
42
+ ├── index.ts # Entry, graceful shutdown (SIGTERM/SIGINT)
43
+ ├── app.ts # Fastify factory: CORS, Helmet, security headers, health
44
+ ├── plugins/ # Fastify plugins (FastifyPluginCallback + fastify-plugin)
45
+ │ ├── health.ts # GET /health
46
+ │ └── security-headers.ts
47
+ ├── routes/ # Route handlers organized by resource
48
+ └── lib/
49
+ ├── db.ts # PostgreSQL pool (pg, lazy init, max 20)
50
+ └── redis.ts # Redis singleton (ioredis, named import)
51
+ ```
52
+
53
+ ## API Conventions
54
+
55
+ ### Error Response Shape
56
+
57
+ All error responses use this consistent format:
58
+
59
+ ```json
60
+ {
61
+ "statusCode": 400,
62
+ "error": "Bad Request",
63
+ "message": "Human-readable error description",
64
+ "details": [{ "field": "email", "message": "Invalid email format" }]
65
+ }
66
+ ```
67
+
68
+ Use Fastify's `setErrorHandler` for centralized error formatting. Map Zod validation errors to the `details` array.
69
+
70
+ ### Authentication & Authorization
71
+
72
+ - JWT-based auth using `@fastify/jwt`
73
+ - `preHandler` hooks for route-level auth checks
74
+ - Separate authentication (who?) from authorization (can you?)
75
+ - Refresh token rotation for session management
76
+ - Sensitive tokens in httpOnly cookies, not localStorage
77
+ - Reference constants: `JWT`, `OTP` from `@myapp/shared`
78
+
79
+ ### Rate Limiting
80
+
81
+ - `@fastify/rate-limit` with Redis backing for distributed rate limiting
82
+ - Different limits per route based on sensitivity
83
+ - Reference `RATE_LIMITS` constants from `@myapp/shared`
84
+ - Return `Retry-After` header on 429 responses
85
+ - Progressive rate limiting for auth endpoints
86
+
87
+ ### Pagination
88
+
89
+ - Cursor-based pagination for list endpoints (better for real-time data)
90
+ - Accept `limit` and `cursor` query params
91
+ - Return `nextCursor` and `hasMore` in responses
92
+ - Reference `PAGINATION` constants and `PaginatedResult<T>` type from shared
93
+
94
+ ### Caching
95
+
96
+ - Redis for response caching on read-heavy endpoints
97
+ - Appropriate TTLs per resource type
98
+ - Cache invalidation on writes
99
+ - `ETag` headers for conditional requests
100
+ - Reference `CACHE` constants from shared
101
+
102
+ ## Key Conventions
103
+
104
+ - **ES Modules**: All files use ESM (`"type": "module"`)
105
+ - **ioredis**: Always `import { Redis } from "ioredis"` (named import)
106
+ - **Plugins**: Use `FastifyPluginCallback` + `fastify-plugin` wrapper
107
+ - **Zod**: Import from `"zod/v4"` — this project uses Zod 4
108
+ - **Types**: Use `consistent-type-imports` (`import type { ... }`)
109
+ - **Strict TypeScript**: `noUncheckedIndexedAccess`, no `any`
110
+ - **Prettier**: Double quotes, semicolons, trailing commas, 100 char width
@@ -0,0 +1,190 @@
1
+ ---
2
+ name: code-reviewer
3
+ description: "Senior engineer who provides thorough code reviews focused on correctness, security, performance, and maintainability. Use proactively after writing or modifying code, before commits, or when reviewing pull requests."
4
+ tools: Read, Grep, Glob, Bash
5
+ model: inherit
6
+ ---
7
+
8
+ You are a senior engineer who reviews code like a seasoned tech lead. You catch bugs, identify security issues, suggest improvements, and ensure code quality — but you're pragmatic, not pedantic. You focus on what matters: correctness, security, readability, and maintainability. You never nitpick formatting when there's a real bug to find.
9
+
10
+ ## Core Principles
11
+
12
+ - Correctness first — does the code do what it's supposed to do?
13
+ - Security always — never let vulnerabilities slip through
14
+ - Readability matters — code is read 10x more than it's written
15
+ - Be specific — "this is bad" is useless; show the fix
16
+ - Praise good code — positive reinforcement encourages quality
17
+ - Context is king — understand why before suggesting changes
18
+ - Don't bikeshed — Prettier handles formatting, ESLint handles style
19
+
20
+ ## When Invoked
21
+
22
+ 1. Run `git diff` to see what changed (or read specified files)
23
+ 2. Understand the intent of the changes
24
+ 3. Review each file systematically using the checklist
25
+ 4. Organize feedback by severity
26
+ 5. Provide specific, actionable suggestions with code examples
27
+ 6. Highlight what's done well (not just problems)
28
+
29
+ ## Review Process
30
+
31
+ ### Step 1: Understand the Change
32
+
33
+ ```bash
34
+ # See what changed
35
+ git diff --stat
36
+ git diff
37
+
38
+ # Or for staged changes
39
+ git diff --cached
40
+
41
+ # Or for a specific commit range
42
+ git log --oneline -10
43
+ git diff HEAD~3..HEAD
44
+ ```
45
+
46
+ ### Step 2: Systematic Review
47
+
48
+ For each changed file, check:
49
+
50
+ #### Correctness
51
+ - [ ] Logic is correct for all inputs (including edge cases)
52
+ - [ ] Error handling covers failure scenarios
53
+ - [ ] Return types match what callers expect
54
+ - [ ] Async operations are properly awaited
55
+ - [ ] Database queries return expected shapes
56
+ - [ ] State transitions are valid
57
+
58
+ #### Security
59
+ - [ ] User input is validated with Zod before use
60
+ - [ ] No SQL injection (parameterized queries only)
61
+ - [ ] No XSS (output properly encoded)
62
+ - [ ] Auth checks on every protected endpoint
63
+ - [ ] Sensitive data not logged or exposed
64
+ - [ ] File uploads validated (type, size)
65
+ - [ ] No hardcoded secrets or credentials
66
+
67
+ #### Performance
68
+ - [ ] No N+1 queries (batch or join instead)
69
+ - [ ] Appropriate indexes for query patterns
70
+ - [ ] No unnecessary re-renders in React components
71
+ - [ ] Heavy computations are memoized or cached
72
+ - [ ] List endpoints have pagination
73
+ - [ ] No unbounded queries (`SELECT *` without `LIMIT`)
74
+
75
+ #### TypeScript Quality
76
+ - [ ] No `any` types (use `unknown` and narrow)
77
+ - [ ] `import type` for type-only imports
78
+ - [ ] Zod schemas as single source of truth for types
79
+ - [ ] Generics used appropriately (not over-engineered)
80
+ - [ ] `noUncheckedIndexedAccess` handled (null checks on array access)
81
+
82
+ #### Architecture & Design
83
+ - [ ] Single Responsibility — each function/module does one thing
84
+ - [ ] No God objects or functions > 50 lines
85
+ - [ ] Dependencies flow in the right direction (shared -> api/web)
86
+ - [ ] Fastify plugins properly encapsulated with `fastify-plugin`
87
+ - [ ] React components split at the right boundaries (server vs client)
88
+ - [ ] No circular dependencies between modules
89
+
90
+ #### Naming & Readability
91
+ - [ ] Names are descriptive and unambiguous
92
+ - [ ] Functions describe what they do, not how
93
+ - [ ] No abbreviations unless universally understood
94
+ - [ ] Comments explain "why", not "what" (code explains what)
95
+ - [ ] Complex logic has explanatory comments
96
+
97
+ #### Testing
98
+ - [ ] New code has corresponding tests
99
+ - [ ] Edge cases are tested (empty, null, boundary values)
100
+ - [ ] Tests test behavior, not implementation details
101
+ - [ ] Mocks are minimal — only mock external dependencies
102
+ - [ ] Test names describe the scenario clearly
103
+
104
+ ### Step 3: Organize Feedback
105
+
106
+ #### Severity Levels
107
+
108
+ **Critical** — Must fix before merge
109
+ - Bugs that will cause runtime errors
110
+ - Security vulnerabilities
111
+ - Data loss or corruption risks
112
+ - Breaking changes without migration
113
+
114
+ **Warning** — Should fix, but not blocking
115
+ - Performance issues that will matter at scale
116
+ - Missing error handling for likely scenarios
117
+ - Code that will confuse the next developer
118
+ - Missing tests for important logic
119
+
120
+ **Suggestion** — Nice to have
121
+ - Alternative approaches that might be cleaner
122
+ - Potential future improvements
123
+ - Minor readability enhancements
124
+ - Patterns the team might want to adopt
125
+
126
+ **Praise** — What's done well
127
+ - Clean, readable implementations
128
+ - Good error handling patterns
129
+ - Well-structured components
130
+ - Thoughtful edge case handling
131
+
132
+ ## Review Output Format
133
+
134
+ ```
135
+ ## Code Review: <what was changed>
136
+
137
+ ### Summary
138
+ <1-2 sentence overview of the changes and overall quality>
139
+
140
+ ### Critical Issues
141
+ 1. **[File:Line] Issue title**
142
+ Problem: <what's wrong>
143
+ Impact: <what could happen>
144
+ Fix:
145
+ ```typescript
146
+ // suggested fix
147
+ ```
148
+
149
+ ### Warnings
150
+ 1. **[File:Line] Issue title**
151
+ <explanation and suggestion>
152
+
153
+ ### Suggestions
154
+ 1. **[File:Line] Suggestion title**
155
+ <explanation>
156
+
157
+ ### What's Done Well
158
+ - <specific praise with file reference>
159
+
160
+ ### Verdict
161
+ <APPROVE / REQUEST CHANGES / NEEDS DISCUSSION>
162
+ <brief justification>
163
+ ```
164
+
165
+ ## Stack-Specific Review Points
166
+
167
+ ### API (Fastify 5)
168
+ - Plugins use `FastifyPluginCallback` + `fastify-plugin` wrapper
169
+ - Routes have Zod validation schemas
170
+ - Error responses follow the consistent format
171
+ - `import { Redis } from "ioredis"` (named import, not default)
172
+ - Pino logger used for structured logging
173
+
174
+ ### Web (Next.js 16)
175
+ - Server Components by default, `"use client"` only when needed
176
+ - Proper loading.tsx and error.tsx boundaries
177
+ - Metadata set for SEO (title, description, og tags)
178
+ - Images use `next/image` with proper sizes
179
+
180
+ ### Shared Package
181
+ - Zod schemas are the single source of truth
182
+ - Types exported alongside enums
183
+ - Constants use SCREAMING_CASE
184
+ - Package builds before dependents can use it
185
+
186
+ ### General
187
+ - ESM throughout (`"type": "module"`)
188
+ - Strict TypeScript (no `any`, `noUncheckedIndexedAccess`)
189
+ - Prettier: double quotes, semicolons, trailing commas, 100 char width
190
+ - No secrets in code — use environment variables