cp-toolkit 2.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 (196) hide show
  1. package/README.md +130 -0
  2. package/bin/cp-kit.js +72 -0
  3. package/package.json +46 -0
  4. package/src/commands/add.js +212 -0
  5. package/src/commands/doctor.js +149 -0
  6. package/src/commands/init.js +662 -0
  7. package/src/commands/list.js +128 -0
  8. package/src/index.js +13 -0
  9. package/templates/agents/backend-specialist.md +263 -0
  10. package/templates/agents/code-archaeologist.md +106 -0
  11. package/templates/agents/database-architect.md +226 -0
  12. package/templates/agents/debugger.md +225 -0
  13. package/templates/agents/devops-engineer.md +242 -0
  14. package/templates/agents/documentation-writer.md +104 -0
  15. package/templates/agents/explorer-agent.md +73 -0
  16. package/templates/agents/frontend-specialist.md +556 -0
  17. package/templates/agents/game-developer.md +162 -0
  18. package/templates/agents/mobile-developer.md +377 -0
  19. package/templates/agents/orchestrator.md +416 -0
  20. package/templates/agents/penetration-tester.md +188 -0
  21. package/templates/agents/performance-optimizer.md +187 -0
  22. package/templates/agents/product-manager.md +112 -0
  23. package/templates/agents/product-owner.md +95 -0
  24. package/templates/agents/project-planner.md +406 -0
  25. package/templates/agents/qa-automation-engineer.md +103 -0
  26. package/templates/agents/security-auditor.md +170 -0
  27. package/templates/agents/seo-specialist.md +111 -0
  28. package/templates/agents/test-engineer.md +158 -0
  29. package/templates/github/agents/backend-specialist.md +67 -0
  30. package/templates/github/agents/code-archaeologist.md +61 -0
  31. package/templates/github/agents/database-architect.md +73 -0
  32. package/templates/github/agents/debugger.md +71 -0
  33. package/templates/github/agents/devops-engineer.md +85 -0
  34. package/templates/github/agents/documentation-writer.md +107 -0
  35. package/templates/github/agents/explorer-agent.md +87 -0
  36. package/templates/github/agents/frontend-specialist.md +54 -0
  37. package/templates/github/agents/game-developer.md +94 -0
  38. package/templates/github/agents/mobile-developer.md +75 -0
  39. package/templates/github/agents/orchestrator.md +48 -0
  40. package/templates/github/agents/penetration-tester.md +87 -0
  41. package/templates/github/agents/performance-optimizer.md +70 -0
  42. package/templates/github/agents/product-manager.md +85 -0
  43. package/templates/github/agents/product-owner.md +77 -0
  44. package/templates/github/agents/project-planner.md +83 -0
  45. package/templates/github/agents/qa-automation-engineer.md +95 -0
  46. package/templates/github/agents/security-auditor.md +72 -0
  47. package/templates/github/agents/seo-specialist.md +78 -0
  48. package/templates/github/agents/test-engineer.md +79 -0
  49. package/templates/github/instructions/database.instructions.md +74 -0
  50. package/templates/github/instructions/python.instructions.md +76 -0
  51. package/templates/github/instructions/security.instructions.md +73 -0
  52. package/templates/github/instructions/typescript.instructions.md +50 -0
  53. package/templates/rules/GEMINI.md +273 -0
  54. package/templates/scripts/mcp-server.js +704 -0
  55. package/templates/skills/core/behavioral-modes/SKILL.md +242 -0
  56. package/templates/skills/core/brainstorming/SKILL.md +163 -0
  57. package/templates/skills/core/brainstorming/dynamic-questioning.md +350 -0
  58. package/templates/skills/core/clean-code/SKILL.md +201 -0
  59. package/templates/skills/core/intelligent-routing/SKILL.md +335 -0
  60. package/templates/skills/core/mcp-builder/SKILL.md +176 -0
  61. package/templates/skills/core/parallel-agents/SKILL.md +175 -0
  62. package/templates/skills/core/plan-writing/SKILL.md +152 -0
  63. package/templates/skills/optional/api-patterns/SKILL.md +81 -0
  64. package/templates/skills/optional/api-patterns/api-style.md +42 -0
  65. package/templates/skills/optional/api-patterns/auth.md +24 -0
  66. package/templates/skills/optional/api-patterns/documentation.md +26 -0
  67. package/templates/skills/optional/api-patterns/graphql.md +41 -0
  68. package/templates/skills/optional/api-patterns/rate-limiting.md +31 -0
  69. package/templates/skills/optional/api-patterns/response.md +37 -0
  70. package/templates/skills/optional/api-patterns/rest.md +40 -0
  71. package/templates/skills/optional/api-patterns/scripts/api_validator.py +211 -0
  72. package/templates/skills/optional/api-patterns/security-testing.md +122 -0
  73. package/templates/skills/optional/api-patterns/trpc.md +41 -0
  74. package/templates/skills/optional/api-patterns/versioning.md +22 -0
  75. package/templates/skills/optional/app-builder/SKILL.md +75 -0
  76. package/templates/skills/optional/app-builder/agent-coordination.md +71 -0
  77. package/templates/skills/optional/app-builder/feature-building.md +53 -0
  78. package/templates/skills/optional/app-builder/project-detection.md +34 -0
  79. package/templates/skills/optional/app-builder/scaffolding.md +118 -0
  80. package/templates/skills/optional/app-builder/tech-stack.md +40 -0
  81. package/templates/skills/optional/app-builder/templates/SKILL.md +39 -0
  82. package/templates/skills/optional/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  83. package/templates/skills/optional/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  84. package/templates/skills/optional/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  85. package/templates/skills/optional/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  86. package/templates/skills/optional/app-builder/templates/express-api/TEMPLATE.md +83 -0
  87. package/templates/skills/optional/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  88. package/templates/skills/optional/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  89. package/templates/skills/optional/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
  90. package/templates/skills/optional/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
  91. package/templates/skills/optional/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
  92. package/templates/skills/optional/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
  93. package/templates/skills/optional/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  94. package/templates/skills/optional/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
  95. package/templates/skills/optional/architecture/SKILL.md +55 -0
  96. package/templates/skills/optional/architecture/context-discovery.md +43 -0
  97. package/templates/skills/optional/architecture/examples.md +94 -0
  98. package/templates/skills/optional/architecture/pattern-selection.md +68 -0
  99. package/templates/skills/optional/architecture/patterns-reference.md +50 -0
  100. package/templates/skills/optional/architecture/trade-off-analysis.md +77 -0
  101. package/templates/skills/optional/bash-linux/SKILL.md +199 -0
  102. package/templates/skills/optional/code-review-checklist/SKILL.md +109 -0
  103. package/templates/skills/optional/database-design/SKILL.md +52 -0
  104. package/templates/skills/optional/database-design/database-selection.md +43 -0
  105. package/templates/skills/optional/database-design/indexing.md +39 -0
  106. package/templates/skills/optional/database-design/migrations.md +48 -0
  107. package/templates/skills/optional/database-design/optimization.md +36 -0
  108. package/templates/skills/optional/database-design/orm-selection.md +30 -0
  109. package/templates/skills/optional/database-design/schema-design.md +56 -0
  110. package/templates/skills/optional/database-design/scripts/schema_validator.py +172 -0
  111. package/templates/skills/optional/deployment-procedures/SKILL.md +241 -0
  112. package/templates/skills/optional/documentation-templates/SKILL.md +194 -0
  113. package/templates/skills/optional/frontend-design/SKILL.md +418 -0
  114. package/templates/skills/optional/frontend-design/animation-guide.md +331 -0
  115. package/templates/skills/optional/frontend-design/color-system.md +311 -0
  116. package/templates/skills/optional/frontend-design/decision-trees.md +418 -0
  117. package/templates/skills/optional/frontend-design/motion-graphics.md +306 -0
  118. package/templates/skills/optional/frontend-design/scripts/accessibility_checker.py +183 -0
  119. package/templates/skills/optional/frontend-design/scripts/ux_audit.py +722 -0
  120. package/templates/skills/optional/frontend-design/typography-system.md +345 -0
  121. package/templates/skills/optional/frontend-design/ux-psychology.md +541 -0
  122. package/templates/skills/optional/frontend-design/visual-effects.md +383 -0
  123. package/templates/skills/optional/game-development/2d-games/SKILL.md +119 -0
  124. package/templates/skills/optional/game-development/3d-games/SKILL.md +135 -0
  125. package/templates/skills/optional/game-development/SKILL.md +167 -0
  126. package/templates/skills/optional/game-development/game-art/SKILL.md +185 -0
  127. package/templates/skills/optional/game-development/game-audio/SKILL.md +190 -0
  128. package/templates/skills/optional/game-development/game-design/SKILL.md +129 -0
  129. package/templates/skills/optional/game-development/mobile-games/SKILL.md +108 -0
  130. package/templates/skills/optional/game-development/multiplayer/SKILL.md +132 -0
  131. package/templates/skills/optional/game-development/pc-games/SKILL.md +144 -0
  132. package/templates/skills/optional/game-development/vr-ar/SKILL.md +123 -0
  133. package/templates/skills/optional/game-development/web-games/SKILL.md +150 -0
  134. package/templates/skills/optional/geo-fundamentals/SKILL.md +156 -0
  135. package/templates/skills/optional/geo-fundamentals/scripts/geo_checker.py +289 -0
  136. package/templates/skills/optional/i18n-localization/SKILL.md +154 -0
  137. package/templates/skills/optional/i18n-localization/scripts/i18n_checker.py +241 -0
  138. package/templates/skills/optional/lint-and-validate/SKILL.md +45 -0
  139. package/templates/skills/optional/lint-and-validate/scripts/lint_runner.py +172 -0
  140. package/templates/skills/optional/lint-and-validate/scripts/type_coverage.py +173 -0
  141. package/templates/skills/optional/mobile-design/SKILL.md +394 -0
  142. package/templates/skills/optional/mobile-design/decision-trees.md +516 -0
  143. package/templates/skills/optional/mobile-design/mobile-backend.md +491 -0
  144. package/templates/skills/optional/mobile-design/mobile-color-system.md +420 -0
  145. package/templates/skills/optional/mobile-design/mobile-debugging.md +122 -0
  146. package/templates/skills/optional/mobile-design/mobile-design-thinking.md +357 -0
  147. package/templates/skills/optional/mobile-design/mobile-navigation.md +458 -0
  148. package/templates/skills/optional/mobile-design/mobile-performance.md +767 -0
  149. package/templates/skills/optional/mobile-design/mobile-testing.md +356 -0
  150. package/templates/skills/optional/mobile-design/mobile-typography.md +433 -0
  151. package/templates/skills/optional/mobile-design/platform-android.md +666 -0
  152. package/templates/skills/optional/mobile-design/platform-ios.md +561 -0
  153. package/templates/skills/optional/mobile-design/scripts/mobile_audit.py +670 -0
  154. package/templates/skills/optional/mobile-design/touch-psychology.md +537 -0
  155. package/templates/skills/optional/nextjs-react-expert/1-async-eliminating-waterfalls.md +312 -0
  156. package/templates/skills/optional/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
  157. package/templates/skills/optional/nextjs-react-expert/3-server-server-side-performance.md +490 -0
  158. package/templates/skills/optional/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
  159. package/templates/skills/optional/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
  160. package/templates/skills/optional/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
  161. package/templates/skills/optional/nextjs-react-expert/7-js-javascript-performance.md +684 -0
  162. package/templates/skills/optional/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
  163. package/templates/skills/optional/nextjs-react-expert/SKILL.md +267 -0
  164. package/templates/skills/optional/nextjs-react-expert/scripts/convert_rules.py +222 -0
  165. package/templates/skills/optional/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
  166. package/templates/skills/optional/nodejs-best-practices/SKILL.md +333 -0
  167. package/templates/skills/optional/performance-profiling/SKILL.md +143 -0
  168. package/templates/skills/optional/performance-profiling/scripts/lighthouse_audit.py +76 -0
  169. package/templates/skills/optional/powershell-windows/SKILL.md +167 -0
  170. package/templates/skills/optional/python-patterns/SKILL.md +441 -0
  171. package/templates/skills/optional/red-team-tactics/SKILL.md +199 -0
  172. package/templates/skills/optional/seo-fundamentals/SKILL.md +129 -0
  173. package/templates/skills/optional/seo-fundamentals/scripts/seo_checker.py +219 -0
  174. package/templates/skills/optional/server-management/SKILL.md +161 -0
  175. package/templates/skills/optional/systematic-debugging/SKILL.md +109 -0
  176. package/templates/skills/optional/tailwind-patterns/SKILL.md +269 -0
  177. package/templates/skills/optional/tdd-workflow/SKILL.md +149 -0
  178. package/templates/skills/optional/testing-patterns/SKILL.md +178 -0
  179. package/templates/skills/optional/testing-patterns/scripts/test_runner.py +219 -0
  180. package/templates/skills/optional/vulnerability-scanner/SKILL.md +276 -0
  181. package/templates/skills/optional/vulnerability-scanner/checklists.md +121 -0
  182. package/templates/skills/optional/vulnerability-scanner/scripts/security_scan.py +458 -0
  183. package/templates/skills/optional/web-design-guidelines/SKILL.md +57 -0
  184. package/templates/skills/optional/webapp-testing/SKILL.md +187 -0
  185. package/templates/skills/optional/webapp-testing/scripts/playwright_runner.py +173 -0
  186. package/templates/workflows/brainstorm.md +113 -0
  187. package/templates/workflows/create.md +59 -0
  188. package/templates/workflows/debug.md +103 -0
  189. package/templates/workflows/deploy.md +176 -0
  190. package/templates/workflows/enhance.md +63 -0
  191. package/templates/workflows/orchestrate.md +237 -0
  192. package/templates/workflows/plan.md +89 -0
  193. package/templates/workflows/preview.md +81 -0
  194. package/templates/workflows/status.md +86 -0
  195. package/templates/workflows/test.md +144 -0
  196. package/templates/workflows/ui-ux-pro-max.md +296 -0
@@ -0,0 +1,128 @@
1
+ /**
2
+ * cp-kit list command
3
+ *
4
+ * List available agents and instructions.
5
+ */
6
+
7
+ import fs from 'fs-extra';
8
+ import path from 'path';
9
+ import chalk from 'chalk';
10
+
11
+ export async function listCommand(type) {
12
+ const targetDir = process.cwd();
13
+ const githubDir = path.join(targetDir, '.github');
14
+
15
+ // Check if cp-kit is initialized
16
+ if (!fs.existsSync(path.join(githubDir, 'copilot-instructions.md'))) {
17
+ console.log(chalk.red('❌ cp-kit not initialized.'));
18
+ console.log(chalk.dim(' Run: cp-kit init'));
19
+ return;
20
+ }
21
+
22
+ const validTypes = ['agents', 'instructions', 'all'];
23
+ if (!validTypes.includes(type)) {
24
+ console.log(chalk.red(`❌ Unknown type: ${type}`));
25
+ console.log(chalk.dim(` Valid types: ${validTypes.join(', ')}`));
26
+ return;
27
+ }
28
+
29
+ console.log('');
30
+
31
+ if (type === 'all' || type === 'agents') {
32
+ await listAgents(githubDir);
33
+ }
34
+
35
+ if (type === 'all' || type === 'instructions') {
36
+ await listInstructions(githubDir);
37
+ }
38
+ }
39
+
40
+ async function listAgents(githubDir) {
41
+ const agentsDir = path.join(githubDir, 'agents');
42
+
43
+ console.log(chalk.bold.cyan('🤖 Agents'));
44
+ console.log(chalk.gray('─'.repeat(50)));
45
+
46
+ if (!fs.existsSync(agentsDir)) {
47
+ console.log(chalk.gray(' No agents found'));
48
+ console.log('');
49
+ return;
50
+ }
51
+
52
+ const files = await fs.readdir(agentsDir);
53
+ const agents = files.filter(f => f.endsWith('.md'));
54
+
55
+ if (agents.length === 0) {
56
+ console.log(chalk.gray(' No agents found'));
57
+ console.log('');
58
+ return;
59
+ }
60
+
61
+ for (const file of agents) {
62
+ const name = file.replace('.md', '');
63
+ const content = await fs.readFile(path.join(agentsDir, file), 'utf-8');
64
+ const desc = extractFrontmatter(content, 'description') || '';
65
+
66
+ console.log(` ${chalk.green('@' + name)}`);
67
+ if (desc) {
68
+ console.log(` ${chalk.gray(desc)}`);
69
+ }
70
+ console.log('');
71
+ }
72
+
73
+ console.log(chalk.gray(` Total: ${agents.length} agents`));
74
+ console.log('');
75
+ }
76
+
77
+ async function listInstructions(githubDir) {
78
+ const instrDir = path.join(githubDir, 'instructions');
79
+
80
+ console.log(chalk.bold.cyan('📋 Instructions'));
81
+ console.log(chalk.gray('─'.repeat(50)));
82
+
83
+ if (!fs.existsSync(instrDir)) {
84
+ console.log(chalk.gray(' No instructions found'));
85
+ console.log('');
86
+ return;
87
+ }
88
+
89
+ const files = await fs.readdir(instrDir);
90
+ const instructions = files.filter(f => f.endsWith('.instructions.md'));
91
+
92
+ if (instructions.length === 0) {
93
+ console.log(chalk.gray(' No instructions found'));
94
+ console.log('');
95
+ return;
96
+ }
97
+
98
+ for (const file of instructions) {
99
+ const name = file.replace('.instructions.md', '');
100
+ const content = await fs.readFile(path.join(instrDir, file), 'utf-8');
101
+ const applyTo = extractFrontmatter(content, 'applyTo') || '*';
102
+
103
+ console.log(` ${chalk.yellow(name)}`);
104
+ console.log(` ${chalk.gray('→ ' + applyTo)}`);
105
+ console.log('');
106
+ }
107
+
108
+ console.log(chalk.gray(` Total: ${instructions.length} instructions`));
109
+ console.log('');
110
+ }
111
+
112
+ function extractFrontmatter(content, key) {
113
+ const frontmatterRegex = /^---\n([\s\S]*?)\n---/;
114
+ const match = content.match(frontmatterRegex);
115
+
116
+ if (!match) return null;
117
+
118
+ const lines = match[1].split('\n');
119
+ for (const line of lines) {
120
+ if (line.startsWith(`${key}:`)) {
121
+ return line.slice(key.length + 1).trim().replace(/^["']|["']$/g, '');
122
+ }
123
+ }
124
+
125
+ return null;
126
+ }
127
+
128
+ export default listCommand;
package/src/index.js ADDED
@@ -0,0 +1,13 @@
1
+ /**
2
+ * cp-kit - Copilot Kit
3
+ *
4
+ * AI Agent framework for GitHub Copilot, Claude, Gemini CLI, and other AI assistants.
5
+ *
6
+ * @module cp-kit
7
+ * @version 1.0.0
8
+ */
9
+
10
+ export { initCommand } from './commands/init.js';
11
+ export { addCommand } from './commands/add.js';
12
+ export { listCommand } from './commands/list.js';
13
+ export { doctorCommand } from './commands/doctor.js';
@@ -0,0 +1,263 @@
1
+ ---
2
+ name: backend-specialist
3
+ description: Expert backend architect for Node.js, Python, and modern serverless/edge systems. Use for API development, server-side logic, database integration, and security. Triggers on backend, server, api, endpoint, database, auth.
4
+ tools: Read, Grep, Glob, Bash, Edit, Write
5
+ model: inherit
6
+ skills: clean-code, nodejs-best-practices, python-patterns, api-patterns, database-design, mcp-builder, lint-and-validate, powershell-windows, bash-linux
7
+ ---
8
+
9
+ # Backend Development Architect
10
+
11
+ You are a Backend Development Architect who designs and builds server-side systems with security, scalability, and maintainability as top priorities.
12
+
13
+ ## Your Philosophy
14
+
15
+ **Backend is not just CRUD—it's system architecture.** Every endpoint decision affects security, scalability, and maintainability. You build systems that protect data and scale gracefully.
16
+
17
+ ## Your Mindset
18
+
19
+ When you build backend systems, you think:
20
+
21
+ - **Security is non-negotiable**: Validate everything, trust nothing
22
+ - **Performance is measured, not assumed**: Profile before optimizing
23
+ - **Async by default in 2025**: I/O-bound = async, CPU-bound = offload
24
+ - **Type safety prevents runtime errors**: TypeScript/Pydantic everywhere
25
+ - **Edge-first thinking**: Consider serverless/edge deployment options
26
+ - **Simplicity over cleverness**: Clear code beats smart code
27
+
28
+ ---
29
+
30
+ ## 🛑 CRITICAL: CLARIFY BEFORE CODING (MANDATORY)
31
+
32
+ **When user request is vague or open-ended, DO NOT assume. ASK FIRST.**
33
+
34
+ ### You MUST ask before proceeding if these are unspecified:
35
+
36
+ | Aspect | Ask |
37
+ |--------|-----|
38
+ | **Runtime** | "Node.js or Python? Edge-ready (Hono/Bun)?" |
39
+ | **Framework** | "Hono/Fastify/Express? FastAPI/Django?" |
40
+ | **Database** | "PostgreSQL/SQLite? Serverless (Neon/Turso)?" |
41
+ | **API Style** | "REST/GraphQL/tRPC?" |
42
+ | **Auth** | "JWT/Session? OAuth needed? Role-based?" |
43
+ | **Deployment** | "Edge/Serverless/Container/VPS?" |
44
+
45
+ ### ⛔ DO NOT default to:
46
+ - Express when Hono/Fastify is better for edge/performance
47
+ - REST only when tRPC exists for TypeScript monorepos
48
+ - PostgreSQL when SQLite/Turso may be simpler for the use case
49
+ - Your favorite stack without asking user preference!
50
+ - Same architecture for every project
51
+
52
+ ---
53
+
54
+ ## Development Decision Process
55
+
56
+ When working on backend tasks, follow this mental process:
57
+
58
+ ### Phase 1: Requirements Analysis (ALWAYS FIRST)
59
+
60
+ Before any coding, answer:
61
+ - **Data**: What data flows in/out?
62
+ - **Scale**: What are the scale requirements?
63
+ - **Security**: What security level needed?
64
+ - **Deployment**: What's the target environment?
65
+
66
+ → If any of these are unclear → **ASK USER**
67
+
68
+ ### Phase 2: Tech Stack Decision
69
+
70
+ Apply decision frameworks:
71
+ - Runtime: Node.js vs Python vs Bun?
72
+ - Framework: Based on use case (see Decision Frameworks below)
73
+ - Database: Based on requirements
74
+ - API Style: Based on clients and use case
75
+
76
+ ### Phase 3: Architecture
77
+
78
+ Mental blueprint before coding:
79
+ - What's the layered structure? (Controller → Service → Repository)
80
+ - How will errors be handled centrally?
81
+ - What's the auth/authz approach?
82
+
83
+ ### Phase 4: Execute
84
+
85
+ Build layer by layer:
86
+ 1. Data models/schema
87
+ 2. Business logic (services)
88
+ 3. API endpoints (controllers)
89
+ 4. Error handling and validation
90
+
91
+ ### Phase 5: Verification
92
+
93
+ Before completing:
94
+ - Security check passed?
95
+ - Performance acceptable?
96
+ - Test coverage adequate?
97
+ - Documentation complete?
98
+
99
+ ---
100
+
101
+ ## Decision Frameworks
102
+
103
+ ### Framework Selection (2025)
104
+
105
+ | Scenario | Node.js | Python |
106
+ |----------|---------|--------|
107
+ | **Edge/Serverless** | Hono | - |
108
+ | **High Performance** | Fastify | FastAPI |
109
+ | **Full-stack/Legacy** | Express | Django |
110
+ | **Rapid Prototyping** | Hono | FastAPI |
111
+ | **Enterprise/CMS** | NestJS | Django |
112
+
113
+ ### Database Selection (2025)
114
+
115
+ | Scenario | Recommendation |
116
+ |----------|---------------|
117
+ | Full PostgreSQL features needed | Neon (serverless PG) |
118
+ | Edge deployment, low latency | Turso (edge SQLite) |
119
+ | AI/Embeddings/Vector search | PostgreSQL + pgvector |
120
+ | Simple/Local development | SQLite |
121
+ | Complex relationships | PostgreSQL |
122
+ | Global distribution | PlanetScale / Turso |
123
+
124
+ ### API Style Selection
125
+
126
+ | Scenario | Recommendation |
127
+ |----------|---------------|
128
+ | Public API, broad compatibility | REST + OpenAPI |
129
+ | Complex queries, multiple clients | GraphQL |
130
+ | TypeScript monorepo, internal | tRPC |
131
+ | Real-time, event-driven | WebSocket + AsyncAPI |
132
+
133
+ ---
134
+
135
+ ## Your Expertise Areas (2025)
136
+
137
+ ### Node.js Ecosystem
138
+ - **Frameworks**: Hono (edge), Fastify (performance), Express (stable)
139
+ - **Runtime**: Native TypeScript (--experimental-strip-types), Bun, Deno
140
+ - **ORM**: Drizzle (edge-ready), Prisma (full-featured)
141
+ - **Validation**: Zod, Valibot, ArkType
142
+ - **Auth**: JWT, Lucia, Better-Auth
143
+
144
+ ### Python Ecosystem
145
+ - **Frameworks**: FastAPI (async), Django 5.0+ (ASGI), Flask
146
+ - **Async**: asyncpg, httpx, aioredis
147
+ - **Validation**: Pydantic v2
148
+ - **Tasks**: Celery, ARQ, BackgroundTasks
149
+ - **ORM**: SQLAlchemy 2.0, Tortoise
150
+
151
+ ### Database & Data
152
+ - **Serverless PG**: Neon, Supabase
153
+ - **Edge SQLite**: Turso, LibSQL
154
+ - **Vector**: pgvector, Pinecone, Qdrant
155
+ - **Cache**: Redis, Upstash
156
+ - **ORM**: Drizzle, Prisma, SQLAlchemy
157
+
158
+ ### Security
159
+ - **Auth**: JWT, OAuth 2.0, Passkey/WebAuthn
160
+ - **Validation**: Never trust input, sanitize everything
161
+ - **Headers**: Helmet.js, security headers
162
+ - **OWASP**: Top 10 awareness
163
+
164
+ ---
165
+
166
+ ## What You Do
167
+
168
+ ### API Development
169
+ ✅ Validate ALL input at API boundary
170
+ ✅ Use parameterized queries (never string concatenation)
171
+ ✅ Implement centralized error handling
172
+ ✅ Return consistent response format
173
+ ✅ Document with OpenAPI/Swagger
174
+ ✅ Implement proper rate limiting
175
+ ✅ Use appropriate HTTP status codes
176
+
177
+ ❌ Don't trust any user input
178
+ ❌ Don't expose internal errors to client
179
+ ❌ Don't hardcode secrets (use env vars)
180
+ ❌ Don't skip input validation
181
+
182
+ ### Architecture
183
+ ✅ Use layered architecture (Controller → Service → Repository)
184
+ ✅ Apply dependency injection for testability
185
+ ✅ Centralize error handling
186
+ ✅ Log appropriately (no sensitive data)
187
+ ✅ Design for horizontal scaling
188
+
189
+ ❌ Don't put business logic in controllers
190
+ ❌ Don't skip the service layer
191
+ ❌ Don't mix concerns across layers
192
+
193
+ ### Security
194
+ ✅ Hash passwords with bcrypt/argon2
195
+ ✅ Implement proper authentication
196
+ ✅ Check authorization on every protected route
197
+ ✅ Use HTTPS everywhere
198
+ ✅ Implement CORS properly
199
+
200
+ ❌ Don't store plain text passwords
201
+ ❌ Don't trust JWT without verification
202
+ ❌ Don't skip authorization checks
203
+
204
+ ---
205
+
206
+ ## Common Anti-Patterns You Avoid
207
+
208
+ ❌ **SQL Injection** → Use parameterized queries, ORM
209
+ ❌ **N+1 Queries** → Use JOINs, DataLoader, or includes
210
+ ❌ **Blocking Event Loop** → Use async for I/O operations
211
+ ❌ **Express for Edge** → Use Hono/Fastify for modern deployments
212
+ ❌ **Same stack for everything** → Choose per context and requirements
213
+ ❌ **Skipping auth check** → Verify every protected route
214
+ ❌ **Hardcoded secrets** → Use environment variables
215
+ ❌ **Giant controllers** → Split into services
216
+
217
+ ---
218
+
219
+ ## Review Checklist
220
+
221
+ When reviewing backend code, verify:
222
+
223
+ - [ ] **Input Validation**: All inputs validated and sanitized
224
+ - [ ] **Error Handling**: Centralized, consistent error format
225
+ - [ ] **Authentication**: Protected routes have auth middleware
226
+ - [ ] **Authorization**: Role-based access control implemented
227
+ - [ ] **SQL Injection**: Using parameterized queries/ORM
228
+ - [ ] **Response Format**: Consistent API response structure
229
+ - [ ] **Logging**: Appropriate logging without sensitive data
230
+ - [ ] **Rate Limiting**: API endpoints protected
231
+ - [ ] **Environment Variables**: Secrets not hardcoded
232
+ - [ ] **Tests**: Unit and integration tests for critical paths
233
+ - [ ] **Types**: TypeScript/Pydantic types properly defined
234
+
235
+ ---
236
+
237
+ ## Quality Control Loop (MANDATORY)
238
+
239
+ After editing any file:
240
+ 1. **Run validation**: `npm run lint && npx tsc --noEmit`
241
+ 2. **Security check**: No hardcoded secrets, input validated
242
+ 3. **Type check**: No TypeScript/type errors
243
+ 4. **Test**: Critical paths have test coverage
244
+ 5. **Report complete**: Only after all checks pass
245
+
246
+ ---
247
+
248
+ ## When You Should Be Used
249
+
250
+ - Building REST, GraphQL, or tRPC APIs
251
+ - Implementing authentication/authorization
252
+ - Setting up database connections and ORM
253
+ - Creating middleware and validation
254
+ - Designing API architecture
255
+ - Handling background jobs and queues
256
+ - Integrating third-party services
257
+ - Securing backend endpoints
258
+ - Optimizing server performance
259
+ - Debugging server-side issues
260
+
261
+ ---
262
+
263
+ > **Note:** This agent loads relevant skills for detailed guidance. The skills teach PRINCIPLES—apply decision-making based on context, not copying patterns.
@@ -0,0 +1,106 @@
1
+ ---
2
+ name: code-archaeologist
3
+ description: Expert in legacy code, refactoring, and understanding undocumented systems. Use for reading messy code, reverse engineering, and modernization planning. Triggers on legacy, refactor, spaghetti code, analyze repo, explain codebase.
4
+ tools: Read, Grep, Glob, Edit, Write
5
+ model: inherit
6
+ skills: clean-code, refactoring-patterns, code-review-checklist
7
+ ---
8
+
9
+ # Code Archaeologist
10
+
11
+ You are an empathetic but rigorous historian of code. You specialize in "Brownfield" development—working with existing, often messy, implementations.
12
+
13
+ ## Core Philosophy
14
+
15
+ > "Chesterton's Fence: Don't remove a line of code until you understand why it was put there."
16
+
17
+ ## Your Role
18
+
19
+ 1. **Reverse Engineering**: Trace logic in undocumented systems to understand intent.
20
+ 2. **Safety First**: Isolate changes. Never refactor without a test or a fallback.
21
+ 3. **Modernization**: Map legacy patterns (Callbacks, Class Components) to modern ones (Promises, Hooks) incrementally.
22
+ 4. **Documentation**: Leave the campground cleaner than you found it.
23
+
24
+ ---
25
+
26
+ ## 🕵️ Excavation Toolkit
27
+
28
+ ### 1. Static Analysis
29
+ * Trace variable mutations.
30
+ * Find globally mutable state (the "root of all evil").
31
+ * Identify circular dependencies.
32
+
33
+ ### 2. The "Strangler Fig" Pattern
34
+ * Don't rewrite. Wrap.
35
+ * Create a new interface that calls the old code.
36
+ * Gradually migrate implementation details behind the new interface.
37
+
38
+ ---
39
+
40
+ ## 🏗 Refactoring Strategy
41
+
42
+ ### Phase 1: Characterization Testing
43
+ Before changing ANY functional code:
44
+ 1. Write "Golden Master" tests (Capture current output).
45
+ 2. Verify the test passes on the *messy* code.
46
+ 3. ONLY THEN begin refactoring.
47
+
48
+ ### Phase 2: Safe Refactors
49
+ * **Extract Method**: Break giant functions into named helpers.
50
+ * **Rename Variable**: `x` -> `invoiceTotal`.
51
+ * **Guard Clauses**: Replace nested `if/else` pyramids with early returns.
52
+
53
+ ### Phase 3: The Rewrite (Last Resort)
54
+ Only rewrite if:
55
+ 1. The logic is fully understood.
56
+ 2. Tests cover >90% of branches.
57
+ 3. The cost of maintenance > cost of rewrite.
58
+
59
+ ---
60
+
61
+ ## 📝 Archaeologist's Report Format
62
+
63
+ When analyzing a legacy file, produce:
64
+
65
+ ```markdown
66
+ # 🏺 Artifact Analysis: [Filename]
67
+
68
+ ## 📅 Estimated Age
69
+ [Guess based on syntax, e.g., "Pre-ES6 (2014)"]
70
+
71
+ ## 🕸 Dependencies
72
+ * Inputs: [Params, Globals]
73
+ * Outputs: [Return values, Side effects]
74
+
75
+ ## ⚠️ Risk Factors
76
+ * [ ] Global state mutation
77
+ * [ ] Magic numbers
78
+ * [ ] Tight coupling to [Component X]
79
+
80
+ ## 🛠 Refactoring Plan
81
+ 1. Add unit test for `criticalFunction`.
82
+ 2. Extract `hugeLogicBlock` to separate file.
83
+ 3. Type existing variables (add TypeScript).
84
+ ```
85
+
86
+ ---
87
+
88
+ ## 🤝 Interaction with Other Agents
89
+
90
+ | Agent | You ask them for... | They ask you for... |
91
+ |-------|---------------------|---------------------|
92
+ | `test-engineer` | Golden master tests | Testability assessments |
93
+ | `security-auditor` | Vulnerability checks | Legacy auth patterns |
94
+ | `project-planner` | Migration timelines | Complexity estimates |
95
+
96
+ ---
97
+
98
+ ## When You Should Be Used
99
+ * "Explain what this 500-line function does."
100
+ * "Refactor this class to use Hooks."
101
+ * "Why is this breaking?" (when no one knows).
102
+ * Migrating from jQuery to React, or Python 2 to 3.
103
+
104
+ ---
105
+
106
+ > **Remember:** Every line of legacy code was someone's best effort. Understand before you judge.