activate-agentmd 2.4.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 (44) hide show
  1. package/README.md +158 -0
  2. package/bin/agentmd.js +186 -0
  3. package/package.json +55 -0
  4. package/src/commands/agents.js +44 -0
  5. package/src/commands/analytics.js +128 -0
  6. package/src/commands/auth.js +144 -0
  7. package/src/commands/ci.js +296 -0
  8. package/src/commands/extract.js +254 -0
  9. package/src/commands/info.js +105 -0
  10. package/src/commands/init.js +166 -0
  11. package/src/commands/install.js +216 -0
  12. package/src/commands/link.js +206 -0
  13. package/src/commands/list.js +99 -0
  14. package/src/commands/outdated.js +92 -0
  15. package/src/commands/remove.js +72 -0
  16. package/src/commands/review.js +293 -0
  17. package/src/commands/search.js +110 -0
  18. package/src/commands/sync.js +245 -0
  19. package/src/commands/telemetry.js +82 -0
  20. package/src/commands/test.js +226 -0
  21. package/src/commands/update.js +115 -0
  22. package/src/commands/validate.js +125 -0
  23. package/src/config/license-public-keys.json +17 -0
  24. package/src/detect.json +452 -0
  25. package/src/lib/agents.js +301 -0
  26. package/src/lib/analytics.js +137 -0
  27. package/src/lib/coordinates.js +103 -0
  28. package/src/lib/credentials.js +115 -0
  29. package/src/lib/detect.js +352 -0
  30. package/src/lib/diff.js +142 -0
  31. package/src/lib/enterprise.js +140 -0
  32. package/src/lib/fetcher.js +174 -0
  33. package/src/lib/invocation.js +47 -0
  34. package/src/lib/license.js +234 -0
  35. package/src/lib/manifest.js +191 -0
  36. package/src/lib/patterns.js +135 -0
  37. package/src/lib/pro.js +149 -0
  38. package/src/lib/ranking.js +287 -0
  39. package/src/lib/registry.js +207 -0
  40. package/src/lib/star.js +105 -0
  41. package/src/lib/status.js +75 -0
  42. package/src/lib/telemetry.js +169 -0
  43. package/src/lib/versions.js +190 -0
  44. package/src/registry.json +33907 -0
@@ -0,0 +1,452 @@
1
+ {
2
+ "schema": 1,
3
+ "dependencySignals": {
4
+ "next": "nextjs",
5
+ "react": "react",
6
+ "vue": "vue",
7
+ "@angular/core": "angular",
8
+ "svelte": "svelte",
9
+ "typescript": "typescript",
10
+ "tailwindcss": "tailwind",
11
+ "express": "express",
12
+ "fastify": "fastify",
13
+ "@nestjs/core": "nestjs",
14
+ "prisma": "prisma",
15
+ "@prisma/client": "prisma",
16
+ "drizzle-orm": "orm",
17
+ "typeorm": "orm",
18
+ "sequelize": "orm",
19
+ "mongoose": "mongodb",
20
+ "mongodb": "mongodb",
21
+ "pg": "postgres",
22
+ "postgres": "postgres",
23
+ "mysql2": "mysql",
24
+ "redis": "redis",
25
+ "ioredis": "redis",
26
+ "graphql": "graphql",
27
+ "vitest": "unit-tests",
28
+ "jest": "unit-tests",
29
+ "mocha": "unit-tests",
30
+ "@playwright/test": "e2e-tests",
31
+ "playwright": "e2e-tests",
32
+ "cypress": "e2e-tests",
33
+ "next-auth": "auth",
34
+ "@auth/core": "auth",
35
+ "passport": "auth",
36
+ "jsonwebtoken": "jwt",
37
+ "jose": "jwt",
38
+ "zustand": "state-management",
39
+ "redux": "state-management",
40
+ "@reduxjs/toolkit": "state-management",
41
+ "@tanstack/react-query": "state-management"
42
+ },
43
+ "recommendations": {
44
+ "nextjs": [
45
+ "Frontend/nextjs",
46
+ "Backend/nextjs",
47
+ "Frontend/server-components",
48
+ "Frontend/routing",
49
+ "Frontend/metadata"
50
+ ],
51
+ "react": [
52
+ "Frontend/react",
53
+ "Frontend/hooks",
54
+ "Frontend/client-components"
55
+ ],
56
+ "typescript": [
57
+ "Frontend/typescript"
58
+ ],
59
+ "tailwind": [
60
+ "Frontend/tailwind"
61
+ ],
62
+ "state-management": [
63
+ "Frontend/state-management"
64
+ ],
65
+ "express": [
66
+ "Backend/express",
67
+ "Backend/middlewares",
68
+ "Backend/error-handling"
69
+ ],
70
+ "prisma": [
71
+ "Database/prisma",
72
+ "Database/orm",
73
+ "Database/migration",
74
+ "Database/schema-design"
75
+ ],
76
+ "orm": [
77
+ "Database/orm",
78
+ "Database/migration",
79
+ "Database/schema-design"
80
+ ],
81
+ "postgres": [
82
+ "Database/postgres",
83
+ "Database/indexes",
84
+ "Database/query-optimization"
85
+ ],
86
+ "mysql": [
87
+ "Database/mysql",
88
+ "Database/indexes"
89
+ ],
90
+ "mongodb": [
91
+ "Database/mongodb",
92
+ "Database/schema-design"
93
+ ],
94
+ "redis": [
95
+ "Database/redis",
96
+ "Performance/caching"
97
+ ],
98
+ "graphql": [
99
+ "API/graphql",
100
+ "API/pagination"
101
+ ],
102
+ "auth": [
103
+ "Security/authentication",
104
+ "Security/authorization",
105
+ "Security/oauth"
106
+ ],
107
+ "jwt": [
108
+ "Security/jwt",
109
+ "Security/authentication"
110
+ ],
111
+ "unit-tests": [
112
+ "Testing/unit",
113
+ "Testing/test-strategy"
114
+ ],
115
+ "e2e-tests": [
116
+ "Testing/e2e",
117
+ "Testing/accessibility"
118
+ ],
119
+ "docker": [
120
+ "DevOps/docker",
121
+ "DevOps/environments"
122
+ ],
123
+ "docker-compose": [
124
+ "DevOps/docker-compose"
125
+ ],
126
+ "kubernetes": [
127
+ "DevOps/kubernetes",
128
+ "DevOps/rollback"
129
+ ],
130
+ "github-actions": [
131
+ "DevOps/github-actions",
132
+ "DevOps/cicd"
133
+ ],
134
+ "vercel": [
135
+ "DevOps/vercel",
136
+ "DevOps/deployment"
137
+ ],
138
+ "vue": [],
139
+ "angular": [],
140
+ "svelte": [],
141
+ "fastify": [],
142
+ "nestjs": [],
143
+ "python": [
144
+ "Backend/python-conventions",
145
+ "Testing/pytest",
146
+ "Backend/python-async"
147
+ ],
148
+ "fastapi": [
149
+ "Backend/fastapi",
150
+ "Backend/pydantic",
151
+ "Backend/python-async"
152
+ ],
153
+ "django": [
154
+ "Backend/django",
155
+ "Testing/pytest"
156
+ ],
157
+ "flask": [
158
+ "Backend/flask",
159
+ "Testing/pytest"
160
+ ],
161
+ "pydantic": [
162
+ "Backend/pydantic"
163
+ ],
164
+ "sqlalchemy": [
165
+ "Database/sqlalchemy"
166
+ ],
167
+ "pytest": [
168
+ "Testing/pytest"
169
+ ],
170
+ "go": [
171
+ "Backend/go-conventions",
172
+ "Backend/go-errors",
173
+ "Backend/go-http",
174
+ "Backend/go-concurrency",
175
+ "Testing/go-testing",
176
+ "Database/go-database",
177
+ "Performance/go-performance"
178
+ ],
179
+ "rust": [],
180
+ "java": []
181
+ },
182
+ "baseline": [
183
+ "Security/owasp",
184
+ "Review/code-review",
185
+ "AI/agent-rules"
186
+ ],
187
+ "labels": {
188
+ "nextjs": "Next.js",
189
+ "react": "React",
190
+ "vue": "Vue",
191
+ "angular": "Angular",
192
+ "svelte": "Svelte",
193
+ "typescript": "TypeScript",
194
+ "tailwind": "Tailwind CSS",
195
+ "state-management": "Client state management",
196
+ "express": "Express",
197
+ "fastify": "Fastify",
198
+ "nestjs": "NestJS",
199
+ "prisma": "Prisma",
200
+ "orm": "SQL ORM",
201
+ "postgres": "PostgreSQL",
202
+ "mysql": "MySQL",
203
+ "mongodb": "MongoDB",
204
+ "redis": "Redis",
205
+ "graphql": "GraphQL",
206
+ "auth": "Authentication",
207
+ "jwt": "JWT",
208
+ "unit-tests": "Unit testing",
209
+ "e2e-tests": "End-to-end testing",
210
+ "docker": "Docker",
211
+ "docker-compose": "Docker Compose",
212
+ "kubernetes": "Kubernetes",
213
+ "github-actions": "GitHub Actions",
214
+ "vercel": "Vercel",
215
+ "python": "Python",
216
+ "fastapi": "FastAPI",
217
+ "django": "Django",
218
+ "flask": "Flask",
219
+ "pydantic": "Pydantic",
220
+ "sqlalchemy": "SQLAlchemy",
221
+ "pytest": "pytest",
222
+ "go": "Go",
223
+ "rust": "Rust",
224
+ "java": "Java"
225
+ },
226
+ "fileSignals": [
227
+ {
228
+ "file": "Dockerfile",
229
+ "signal": "docker"
230
+ },
231
+ {
232
+ "file": "docker-compose.yml",
233
+ "signal": "docker-compose"
234
+ },
235
+ {
236
+ "file": "docker-compose.yaml",
237
+ "signal": "docker-compose"
238
+ },
239
+ {
240
+ "file": "vercel.json",
241
+ "signal": "vercel"
242
+ },
243
+ {
244
+ "file": "requirements.txt",
245
+ "signal": "python"
246
+ },
247
+ {
248
+ "file": "pyproject.toml",
249
+ "signal": "python"
250
+ },
251
+ {
252
+ "file": "go.mod",
253
+ "signal": "go"
254
+ },
255
+ {
256
+ "file": "Cargo.toml",
257
+ "signal": "rust"
258
+ },
259
+ {
260
+ "file": "pom.xml",
261
+ "signal": "java"
262
+ },
263
+ {
264
+ "file": "build.gradle",
265
+ "signal": "java"
266
+ },
267
+ {
268
+ "file": "tsconfig.json",
269
+ "signal": "typescript"
270
+ },
271
+ {
272
+ "file": "tailwind.config.js",
273
+ "signal": "tailwind"
274
+ },
275
+ {
276
+ "file": "tailwind.config.ts",
277
+ "signal": "tailwind"
278
+ },
279
+ {
280
+ "file": "next.config.js",
281
+ "signal": "nextjs"
282
+ },
283
+ {
284
+ "file": "next.config.ts",
285
+ "signal": "nextjs"
286
+ },
287
+ {
288
+ "file": "next.config.mjs",
289
+ "signal": "nextjs"
290
+ }
291
+ ],
292
+ "dirSignals": [
293
+ {
294
+ "dir": ".github/workflows",
295
+ "signal": "github-actions"
296
+ },
297
+ {
298
+ "dir": "prisma",
299
+ "signal": "prisma"
300
+ },
301
+ {
302
+ "dir": "k8s",
303
+ "signal": "kubernetes"
304
+ },
305
+ {
306
+ "dir": "kubernetes",
307
+ "signal": "kubernetes"
308
+ }
309
+ ],
310
+ "pins": {
311
+ "next": {
312
+ "13": [
313
+ "App Router (`app/`) exists but `pages/` is still common; check which this project uses before adding routes."
314
+ ],
315
+ "14": [
316
+ "App Router with Server Actions (stable). Navigate with `next/navigation`, not `next/router`, inside `app/`."
317
+ ],
318
+ "15": [
319
+ "Request APIs are async: `await params`, `await searchParams`, `await cookies()`, `await headers()` — synchronous access is deprecated.",
320
+ "`fetch` is no longer cached by default; opt in with `cache: 'force-cache'` or `revalidate`.",
321
+ "Ships React 19: `ref` is a prop, `use()` and `useActionState` are available."
322
+ ],
323
+ "16": [
324
+ "Turbopack is the default bundler; do not add webpack-only config without checking it is still needed.",
325
+ "Request APIs are async only — `params`, `searchParams`, `cookies()`, `headers()` must be awaited; synchronous access was removed.",
326
+ "`middleware.ts` is `proxy.ts`; the old filename is not picked up.",
327
+ "Ships React 19: `ref` is a prop, `use()` and `useActionState` are available."
328
+ ],
329
+ "label": "Next.js"
330
+ },
331
+ "react": {
332
+ "18": [
333
+ "Mount with `createRoot` (not `ReactDOM.render`). Effects double-invoke in StrictMode during development — write them idempotently."
334
+ ],
335
+ "19": [
336
+ "`ref` is a regular prop on function components — do not use `forwardRef`.",
337
+ "Use `use()` to read promises/context, `useActionState` and `useFormStatus` for forms; Actions can be passed to `<form action>`.",
338
+ "`propTypes` and `defaultProps` on function components are ignored; use TypeScript and default parameters."
339
+ ],
340
+ "label": "React"
341
+ },
342
+ "pydantic": {
343
+ "1": [
344
+ "Pydantic v1 API: `.dict()`, `.json()`, `@validator`, `class Config`. Do not use v2 names (`model_dump`, `field_validator`)."
345
+ ],
346
+ "2": [
347
+ "Use `.model_dump()` / `.model_dump_json()` / `.model_validate()` — `.dict()`, `.json()`, `.parse_obj()` are deprecated v1 names.",
348
+ "Validators are `@field_validator` and `@model_validator`; `@validator` and `@root_validator` are deprecated.",
349
+ "Configure with `model_config = ConfigDict(...)`, not an inner `class Config`. Use `TypeAdapter` for non-model types."
350
+ ],
351
+ "label": "Pydantic"
352
+ },
353
+ "sqlalchemy": {
354
+ "2": [
355
+ "Use 2.0 style: `select()` with `session.execute()` / `session.scalars()`; `session.query()` is legacy.",
356
+ "Declare models with `DeclarativeBase`, `Mapped[...]` and `mapped_column()`; `declarative_base()` and `Column` are legacy."
357
+ ],
358
+ "label": "SQLAlchemy"
359
+ },
360
+ "django": {
361
+ "5": [
362
+ "Django 5: `db_default` and `GeneratedField` exist; `USE_L10N` was removed; async ORM methods (`aget`, `acreate`, `afirst`) are available."
363
+ ],
364
+ "label": "Django"
365
+ },
366
+ "prisma": {
367
+ "5": [
368
+ "Prisma 5: `prisma.$extends` for extensions; `@prisma/client` generated in `node_modules` — run `prisma generate` after schema changes."
369
+ ],
370
+ "6": [
371
+ "Prisma 6: same API as 5; `omit` in queries is stable. Run `prisma generate` after schema changes."
372
+ ],
373
+ "7": [
374
+ "Prisma 7 has no Rust query engine by default: instantiate the client with a driver adapter (for example `@prisma/adapter-pg`), not a bare `new PrismaClient()`.",
375
+ "Connection config lives in `prisma.config.ts`, not in the schema's `datasource url`."
376
+ ],
377
+ "label": "Prisma"
378
+ },
379
+ "tailwindcss": {
380
+ "3": [
381
+ "Tailwind v3: `tailwind.config.js` with `content` globs, `@tailwind base/components/utilities` in CSS."
382
+ ],
383
+ "4": [
384
+ "Tailwind v4 is CSS-first: `@import \"tailwindcss\"`, design tokens in `@theme`, `@custom-variant` — there is no `tailwind.config.js` unless the project added `@config`.",
385
+ "`@apply` in a separate CSS file needs `@reference`. Renamed utilities: `shadow-sm`→`shadow-xs`, `outline-none`→`outline-hidden`, `ring`→`ring-3`, `rounded-sm`→`rounded-xs`."
386
+ ],
387
+ "label": "Tailwind CSS"
388
+ },
389
+ "express": {
390
+ "5": [
391
+ "Express 5: rejected promises from async handlers reach error middleware automatically — no `next(err)` wrappers needed.",
392
+ "`req.query` is a read-only getter; route syntax is path-to-regexp v8 (`/{*splat}` instead of `*`, optional segments with `{}`); `res.redirect('back')` is gone."
393
+ ],
394
+ "label": "Express"
395
+ },
396
+ "zod": {
397
+ "4": [
398
+ "Zod 4: use top-level formats `z.email()`, `z.uuid()`, `z.url()` — `z.string().email()` is deprecated.",
399
+ "Error details are `.issues` (not `.errors`); the `message` option is `error`; use `z.strictObject` / `z.looseObject` instead of `.strict()` / `.passthrough()`."
400
+ ],
401
+ "label": "Zod"
402
+ },
403
+ "eslint": {
404
+ "9": [
405
+ "ESLint 9 uses flat config (`eslint.config.js`); `.eslintrc*` is ignored unless `ESLINT_USE_FLAT_CONFIG=false`."
406
+ ],
407
+ "label": "ESLint"
408
+ },
409
+ "vue": {
410
+ "3": [
411
+ "Vue 3: Composition API with `<script setup>`, `defineProps` / `defineEmits`; Options API still works. Vue 2 is end-of-life — do not add Vue 2 patterns like `Vue.extend`."
412
+ ],
413
+ "label": "Vue"
414
+ },
415
+ "go": {
416
+ "label": "Go",
417
+ "1.22": [
418
+ "Go 1.22+: loop variables are per-iteration; `for i := range 10` works; `net/http` ServeMux supports methods and wildcards (`mux.HandleFunc(\"GET /items/{id}\", …)`)."
419
+ ],
420
+ "1.23": [
421
+ "Go 1.23+: range-over-func iterators (`iter.Seq`); everything from 1.22 (per-iteration loop vars, method patterns in ServeMux)."
422
+ ],
423
+ "1.24": [
424
+ "Go 1.24+: generic type aliases; `testing.B.Loop` for benchmarks; `go tool` directives in go.mod; everything from 1.22/1.23."
425
+ ],
426
+ "1.25": [
427
+ "Go 1.25+: `testing/synctest` for concurrent tests; container-aware GOMAXPROCS; everything from 1.22–1.24."
428
+ ]
429
+ },
430
+ "python": {
431
+ "label": "Python",
432
+ "3.12": [
433
+ "Python 3.12+: `type` statement and `class C[T]` generics (PEP 695), `typing.override`, f-strings may nest quotes; `distutils` is gone."
434
+ ],
435
+ "3.13": [
436
+ "Python 3.13+: `warnings.deprecated`; everything from 3.12 (PEP 695 generics, `typing.override`)."
437
+ ]
438
+ }
439
+ },
440
+ "categoryGlobs": {
441
+ "Database": "**/*.sql,**/*.prisma,**/prisma/**,**/migrations/**,**/db/**,**/models/**,**/*repository*",
442
+ "Frontend": "**/*.tsx,**/*.jsx,**/*.vue,**/*.svelte,**/*.css,**/app/**,**/components/**,**/pages/**",
443
+ "Design": "**/*.tsx,**/*.jsx,**/*.vue,**/*.svelte,**/*.css,**/styles/**",
444
+ "Backend": "**/api/**,**/server/**,**/routes/**,**/controllers/**,**/services/**,**/handlers/**,**/middleware/**,**/*.py,**/*.go",
445
+ "API": "**/api/**,**/routes/**,**/openapi*,**/*.graphql,**/schema.*,**/handlers/**",
446
+ "Security": "**/auth/**,**/*auth*,**/middleware/**,**/security/**,**/api/**,**/.env*",
447
+ "Testing": "**/*.test.*,**/*.spec.*,**/__tests__/**,**/tests/**,**/test/**,**/conftest.py,**/*_test.go",
448
+ "DevOps": "**/Dockerfile*,**/docker-compose*,**/.github/workflows/**,**/k8s/**,**/*.tf,**/*.yml,**/*.yaml",
449
+ "Performance": "**/*.ts,**/*.tsx,**/*.py,**/*.go,**/*.sql",
450
+ "Documentation": "**/*.md,**/docs/**"
451
+ }
452
+ }