cmp-standards 2.7.0 → 2.8.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 (162) hide show
  1. package/README.md +633 -633
  2. package/dist/cache/EmbeddingCache.d.ts +110 -0
  3. package/dist/cache/EmbeddingCache.d.ts.map +1 -0
  4. package/dist/cache/EmbeddingCache.js +239 -0
  5. package/dist/cache/EmbeddingCache.js.map +1 -0
  6. package/dist/cache/index.d.ts +6 -0
  7. package/dist/cache/index.d.ts.map +1 -0
  8. package/dist/cache/index.js +6 -0
  9. package/dist/cache/index.js.map +1 -0
  10. package/dist/cli/index.js +0 -0
  11. package/dist/db/cloud.d.ts +1 -0
  12. package/dist/db/cloud.d.ts.map +1 -1
  13. package/dist/db/drizzle-client.d.ts +10 -1
  14. package/dist/db/drizzle-client.d.ts.map +1 -1
  15. package/dist/db/drizzle-client.js +57 -3
  16. package/dist/db/drizzle-client.js.map +1 -1
  17. package/dist/db/errors.d.ts +13 -1
  18. package/dist/db/errors.d.ts.map +1 -1
  19. package/dist/db/errors.js +49 -5
  20. package/dist/db/errors.js.map +1 -1
  21. package/dist/db/migrations.d.ts +42 -0
  22. package/dist/db/migrations.d.ts.map +1 -0
  23. package/dist/db/migrations.js +173 -0
  24. package/dist/db/migrations.js.map +1 -0
  25. package/dist/db/turso-client.d.ts +15 -3
  26. package/dist/db/turso-client.d.ts.map +1 -1
  27. package/dist/db/turso-client.js +50 -39
  28. package/dist/db/turso-client.js.map +1 -1
  29. package/dist/eslint/rules/no-async-useeffect.js +6 -6
  30. package/dist/events/EventBus.d.ts +97 -0
  31. package/dist/events/EventBus.d.ts.map +1 -0
  32. package/dist/events/EventBus.js +256 -0
  33. package/dist/events/EventBus.js.map +1 -0
  34. package/dist/events/index.d.ts +7 -0
  35. package/dist/events/index.d.ts.map +1 -0
  36. package/dist/events/index.js +9 -0
  37. package/dist/events/index.js.map +1 -0
  38. package/dist/events/types.d.ts +989 -0
  39. package/dist/events/types.d.ts.map +1 -0
  40. package/dist/events/types.js +136 -0
  41. package/dist/events/types.js.map +1 -0
  42. package/dist/experts/ConsensusEngine.d.ts +57 -0
  43. package/dist/experts/ConsensusEngine.d.ts.map +1 -0
  44. package/dist/experts/ConsensusEngine.js +146 -0
  45. package/dist/experts/ConsensusEngine.js.map +1 -0
  46. package/dist/experts/ExpertPanelService.d.ts +84 -0
  47. package/dist/experts/ExpertPanelService.d.ts.map +1 -0
  48. package/dist/experts/ExpertPanelService.js +204 -0
  49. package/dist/experts/ExpertPanelService.js.map +1 -0
  50. package/dist/experts/ExpertRouter.d.ts +68 -0
  51. package/dist/experts/ExpertRouter.d.ts.map +1 -0
  52. package/dist/experts/ExpertRouter.js +374 -0
  53. package/dist/experts/ExpertRouter.js.map +1 -0
  54. package/dist/experts/VoteCollector.d.ts +58 -0
  55. package/dist/experts/VoteCollector.d.ts.map +1 -0
  56. package/dist/experts/VoteCollector.js +146 -0
  57. package/dist/experts/VoteCollector.js.map +1 -0
  58. package/dist/experts/index.d.ts +9 -0
  59. package/dist/experts/index.d.ts.map +1 -0
  60. package/dist/experts/index.js +13 -0
  61. package/dist/experts/index.js.map +1 -0
  62. package/dist/hooks/cloud-pre-tool-use.js +20 -20
  63. package/dist/hooks/expert-review.d.ts +74 -0
  64. package/dist/hooks/expert-review.d.ts.map +1 -0
  65. package/dist/hooks/expert-review.js +220 -0
  66. package/dist/hooks/expert-review.js.map +1 -0
  67. package/dist/hooks/index.d.ts +1 -0
  68. package/dist/hooks/index.d.ts.map +1 -1
  69. package/dist/hooks/index.js +2 -0
  70. package/dist/hooks/index.js.map +1 -1
  71. package/dist/index.d.ts +13 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +22 -0
  74. package/dist/index.js.map +1 -1
  75. package/dist/interfaces/index.d.ts +450 -0
  76. package/dist/interfaces/index.d.ts.map +1 -0
  77. package/dist/interfaces/index.js +50 -0
  78. package/dist/interfaces/index.js.map +1 -0
  79. package/dist/mcp/schemas.d.ts +278 -0
  80. package/dist/mcp/schemas.d.ts.map +1 -0
  81. package/dist/mcp/schemas.js +166 -0
  82. package/dist/mcp/schemas.js.map +1 -0
  83. package/dist/mcp/server.d.ts.map +1 -1
  84. package/dist/mcp/server.js +14 -3
  85. package/dist/mcp/server.js.map +1 -1
  86. package/dist/patterns/feedback-loop.d.ts +264 -0
  87. package/dist/patterns/feedback-loop.d.ts.map +1 -0
  88. package/dist/patterns/feedback-loop.js +329 -0
  89. package/dist/patterns/feedback-loop.js.map +1 -0
  90. package/dist/patterns/index.d.ts +9 -0
  91. package/dist/patterns/index.d.ts.map +1 -0
  92. package/dist/patterns/index.js +9 -0
  93. package/dist/patterns/index.js.map +1 -0
  94. package/dist/patterns/lifecycle.d.ts +88 -0
  95. package/dist/patterns/lifecycle.d.ts.map +1 -0
  96. package/dist/patterns/lifecycle.js +284 -0
  97. package/dist/patterns/lifecycle.js.map +1 -0
  98. package/dist/patterns/registry.d.ts +142 -0
  99. package/dist/patterns/registry.d.ts.map +1 -0
  100. package/dist/patterns/registry.js +442 -0
  101. package/dist/patterns/registry.js.map +1 -0
  102. package/dist/performance/Debouncer.d.ts +91 -0
  103. package/dist/performance/Debouncer.d.ts.map +1 -0
  104. package/dist/performance/Debouncer.js +198 -0
  105. package/dist/performance/Debouncer.js.map +1 -0
  106. package/dist/performance/MemoryDecay.d.ts +82 -0
  107. package/dist/performance/MemoryDecay.d.ts.map +1 -0
  108. package/dist/performance/MemoryDecay.js +153 -0
  109. package/dist/performance/MemoryDecay.js.map +1 -0
  110. package/dist/performance/index.d.ts +7 -0
  111. package/dist/performance/index.d.ts.map +1 -0
  112. package/dist/performance/index.js +9 -0
  113. package/dist/performance/index.js.map +1 -0
  114. package/dist/schema/expert-types.d.ts +395 -0
  115. package/dist/schema/expert-types.d.ts.map +1 -0
  116. package/dist/schema/expert-types.js +250 -0
  117. package/dist/schema/expert-types.js.map +1 -0
  118. package/dist/services/ContextGenerator.js +7 -7
  119. package/dist/services/PlanManager.d.ts +1 -1
  120. package/dist/services/PlanManager.d.ts.map +1 -1
  121. package/dist/services/PlanManager.js +26 -6
  122. package/dist/services/PlanManager.js.map +1 -1
  123. package/dist/services/ProjectScaffold.js +76 -76
  124. package/dist/services/memory-router.js +35 -35
  125. package/dist/services/pattern-tracker.js +90 -90
  126. package/dist/services/semantic-search.js +2 -2
  127. package/package.json +105 -104
  128. package/standards/README.md +50 -50
  129. package/standards/experts/expert-routing.md +215 -215
  130. package/standards/general/code-quality.md +86 -86
  131. package/standards/general/memory-usage.md +205 -205
  132. package/standards/general/sync-workflow.md +235 -235
  133. package/standards/general/workflow.md +82 -82
  134. package/standards/hooks/mandatory-tracking.md +446 -446
  135. package/standards/infrastructure/cloud-database.md +287 -287
  136. package/standards/mcp/server-design.md +243 -243
  137. package/standards/mcp/tool-patterns.md +354 -354
  138. package/standards/skills/skill-structure.md +286 -286
  139. package/standards/skills/workflow-design.md +323 -323
  140. package/standards/tools/tool-design.md +297 -297
  141. package/templates/agents/architecture-expert.md +61 -61
  142. package/templates/agents/database-expert.md +62 -62
  143. package/templates/agents/documentation-expert.md +57 -57
  144. package/templates/agents/memory-expert.md +88 -88
  145. package/templates/agents/performance-expert.md +61 -61
  146. package/templates/agents/security-expert.md +59 -59
  147. package/templates/agents/ux-expert.md +63 -63
  148. package/templates/agents/worker.md +75 -75
  149. package/templates/ai-skills/SKILL_TEMPLATE.md +55 -55
  150. package/templates/claude-settings.json +72 -72
  151. package/templates/commands/experts.md +138 -138
  152. package/templates/hooks/README.md +158 -158
  153. package/templates/hooks/project.config.json.template +77 -77
  154. package/templates/hooks/settings.local.json.template +57 -57
  155. package/templates/memory-config.json +56 -56
  156. package/templates/memory-config.schema.json +212 -212
  157. package/templates/settings.json +58 -58
  158. package/templates/skills/continue.md +205 -205
  159. package/templates/workflows/business-improvement.md +264 -264
  160. package/templates/workflows/expert-review.md +153 -153
  161. package/templates/workflows/internal-app.md +245 -245
  162. package/templates/workflows/sync-docs.md +187 -187
@@ -113,8 +113,8 @@ class PatternTrackerService {
113
113
  try {
114
114
  const db = turso.getClient();
115
115
  const result = await db.execute({
116
- sql: `SELECT id, content FROM items
117
- WHERE system = ? AND type = 'pattern'
116
+ sql: `SELECT id, content FROM items
117
+ WHERE system = ? AND type = 'pattern'
118
118
  AND status = 'active'`,
119
119
  args: [system]
120
120
  });
@@ -150,7 +150,7 @@ class PatternTrackerService {
150
150
  // Update status to 'triggered'
151
151
  const db = turso.getClient();
152
152
  await db.execute({
153
- sql: `UPDATE items SET status = 'triggered', updated_at = datetime('now')
153
+ sql: `UPDATE items SET status = 'triggered', updated_at = datetime('now')
154
154
  WHERE id = ?`,
155
155
  args: [pattern.id]
156
156
  });
@@ -205,28 +205,28 @@ class PatternTrackerService {
205
205
  */
206
206
  eslintRuleToCode(rule) {
207
207
  const ruleBody = this.generateRuleBody(rule.name);
208
- return `/**
209
- * @file ${rule.name}
210
- * @description ${rule.description}
211
- * Auto-generated by cmp-standards pattern detection
212
- * @version 1.0.0
213
- */
214
-
215
- module.exports = {
216
- meta: {
217
- type: '${rule.meta.type}',
218
- docs: {
219
- description: '${rule.description}',
220
- category: 'Best Practices',
221
- recommended: true
222
- },
223
- schema: [],
224
- messages: ${JSON.stringify(rule.meta.messages, null, 2)}
225
- },
226
- create(context) {
227
- ${ruleBody}
228
- }
229
- }
208
+ return `/**
209
+ * @file ${rule.name}
210
+ * @description ${rule.description}
211
+ * Auto-generated by cmp-standards pattern detection
212
+ * @version 1.0.0
213
+ */
214
+
215
+ module.exports = {
216
+ meta: {
217
+ type: '${rule.meta.type}',
218
+ docs: {
219
+ description: '${rule.description}',
220
+ category: 'Best Practices',
221
+ recommended: true
222
+ },
223
+ schema: [],
224
+ messages: ${JSON.stringify(rule.meta.messages, null, 2)}
225
+ },
226
+ create(context) {
227
+ ${ruleBody}
228
+ }
229
+ }
230
230
  `;
231
231
  }
232
232
  /**
@@ -236,77 +236,77 @@ ${ruleBody}
236
236
  // Pattern-specific implementations using AST visitors
237
237
  switch (ruleName) {
238
238
  case 'charter/no-any-type':
239
- return ` return {
240
- TSAnyKeyword(node) {
241
- context.report({ node, messageId: 'violation' });
242
- }
239
+ return ` return {
240
+ TSAnyKeyword(node) {
241
+ context.report({ node, messageId: 'violation' });
242
+ }
243
243
  };`;
244
244
  case 'charter/no-eslint-disable':
245
- return ` const sourceCode = context.getSourceCode();
246
- return {
247
- Program() {
248
- const comments = sourceCode.getAllComments();
249
- for (const comment of comments) {
250
- if (comment.value.includes('eslint-disable')) {
251
- context.report({ loc: comment.loc, messageId: 'violation' });
252
- }
253
- }
254
- }
245
+ return ` const sourceCode = context.getSourceCode();
246
+ return {
247
+ Program() {
248
+ const comments = sourceCode.getAllComments();
249
+ for (const comment of comments) {
250
+ if (comment.value.includes('eslint-disable')) {
251
+ context.report({ loc: comment.loc, messageId: 'violation' });
252
+ }
253
+ }
254
+ }
255
255
  };`;
256
256
  case 'charter/no-async-useeffect':
257
- return ` return {
258
- CallExpression(node) {
259
- if (
260
- node.callee.type === 'Identifier' &&
261
- node.callee.name === 'useEffect' &&
262
- node.arguments[0] &&
263
- node.arguments[0].async
264
- ) {
265
- context.report({ node, messageId: 'violation' });
266
- }
267
- }
257
+ return ` return {
258
+ CallExpression(node) {
259
+ if (
260
+ node.callee.type === 'Identifier' &&
261
+ node.callee.name === 'useEffect' &&
262
+ node.arguments[0] &&
263
+ node.arguments[0].async
264
+ ) {
265
+ context.report({ node, messageId: 'violation' });
266
+ }
267
+ }
268
268
  };`;
269
269
  case 'charter/no-raw-sql':
270
- return ` return {
271
- CallExpression(node) {
272
- if (
273
- node.callee.type === 'MemberExpression' &&
274
- node.callee.property.name === 'execute' &&
275
- node.arguments[0]?.type === 'TemplateLiteral'
276
- ) {
277
- context.report({ node, messageId: 'violation' });
278
- }
279
- }
270
+ return ` return {
271
+ CallExpression(node) {
272
+ if (
273
+ node.callee.type === 'MemberExpression' &&
274
+ node.callee.property.name === 'execute' &&
275
+ node.arguments[0]?.type === 'TemplateLiteral'
276
+ ) {
277
+ context.report({ node, messageId: 'violation' });
278
+ }
279
+ }
280
280
  };`;
281
281
  case 'charter/finance-ledger-sync':
282
- return ` let hasFinanceInsert = false;
283
- let hasLedgerCall = false;
284
- return {
285
- CallExpression(node) {
286
- const callee = node.callee;
287
- if (callee.property?.name === 'insert') hasFinanceInsert = true;
288
- if (callee.object?.name === 'LedgerService') hasLedgerCall = true;
289
- },
290
- 'Program:exit'(node) {
291
- if (hasFinanceInsert && !hasLedgerCall) {
292
- context.report({ node, messageId: 'violation' });
293
- }
294
- }
282
+ return ` let hasFinanceInsert = false;
283
+ let hasLedgerCall = false;
284
+ return {
285
+ CallExpression(node) {
286
+ const callee = node.callee;
287
+ if (callee.property?.name === 'insert') hasFinanceInsert = true;
288
+ if (callee.object?.name === 'LedgerService') hasLedgerCall = true;
289
+ },
290
+ 'Program:exit'(node) {
291
+ if (hasFinanceInsert && !hasLedgerCall) {
292
+ context.report({ node, messageId: 'violation' });
293
+ }
294
+ }
295
295
  };`;
296
296
  case 'charter/use-semantic-tokens':
297
- return ` return {
298
- Literal(node) {
299
- if (typeof node.value === 'string' && /#[0-9a-fA-F]{3,8}/.test(node.value)) {
300
- context.report({ node, messageId: 'violation' });
301
- }
302
- }
297
+ return ` return {
298
+ Literal(node) {
299
+ if (typeof node.value === 'string' && /#[0-9a-fA-F]{3,8}/.test(node.value)) {
300
+ context.report({ node, messageId: 'violation' });
301
+ }
302
+ }
303
303
  };`;
304
304
  default:
305
- return ` // Auto-generated rule - implement based on pattern
306
- return {
307
- Program(node) {
308
- // Pattern detection logic here
309
- }
305
+ return ` // Auto-generated rule - implement based on pattern
306
+ return {
307
+ Program(node) {
308
+ // Pattern detection logic here
309
+ }
310
310
  };`;
311
311
  }
312
312
  }
@@ -371,9 +371,9 @@ ${ruleBody}
371
371
  try {
372
372
  const db = turso.getClient();
373
373
  const result = await db.execute({
374
- sql: `SELECT id, content FROM items
375
- WHERE system = ? AND type = 'pattern'
376
- AND json_extract(content, '$.patternId') = ?
374
+ sql: `SELECT id, content FROM items
375
+ WHERE system = ? AND type = 'pattern'
376
+ AND json_extract(content, '$.patternId') = ?
377
377
  LIMIT 1`,
378
378
  args: [system, patternId]
379
379
  });
@@ -393,7 +393,7 @@ ${ruleBody}
393
393
  const db = turso.getClient();
394
394
  const now = new Date().toISOString();
395
395
  await db.execute({
396
- sql: `INSERT INTO items (id, system, type, status, content, created_at, updated_at)
396
+ sql: `INSERT INTO items (id, system, type, status, content, created_at, updated_at)
397
397
  VALUES (?, ?, 'pattern', 'active', ?, ?, ?)`,
398
398
  args: [pattern.id, system, JSON.stringify(pattern), now, now]
399
399
  });
@@ -401,7 +401,7 @@ ${ruleBody}
401
401
  async savePattern(pattern, _system) {
402
402
  const db = turso.getClient();
403
403
  await db.execute({
404
- sql: `UPDATE items SET content = ?, updated_at = datetime('now')
404
+ sql: `UPDATE items SET content = ?, updated_at = datetime('now')
405
405
  WHERE id = ?`,
406
406
  args: [JSON.stringify(pattern), pattern.id]
407
407
  });
@@ -411,7 +411,7 @@ ${ruleBody}
411
411
  const id = `ai_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
412
412
  const now = new Date().toISOString();
413
413
  await db.execute({
414
- sql: `INSERT INTO items (id, system, type, status, content, created_at, updated_at)
414
+ sql: `INSERT INTO items (id, system, type, status, content, created_at, updated_at)
415
415
  VALUES (?, ?, 'auto_improvement', 'pending', ?, ?, ?)`,
416
416
  args: [id, system, JSON.stringify(improvement), now, now]
417
417
  });
@@ -94,7 +94,7 @@ export class SemanticSearchService {
94
94
  * Create memory with embedding and sync to Vector DB
95
95
  */
96
96
  async createMemoryWithEmbedding(title, body, options) {
97
- const text = `${title}
97
+ const text = `${title}
98
98
  ${body}`;
99
99
  let embedding;
100
100
  let embeddingModel;
@@ -153,7 +153,7 @@ ${body}`;
153
153
  const content = memory.content;
154
154
  if (!content)
155
155
  return [];
156
- const text = `${content.title}
156
+ const text = `${content.title}
157
157
  ${content.body}`;
158
158
  return this.search(text, { limit: limit + 1 }).then((results) => results.filter((r) => r.item.id !== memoryId).slice(0, limit));
159
159
  }
package/package.json CHANGED
@@ -1,104 +1,105 @@
1
- {
2
- "name": "cmp-standards",
3
- "version": "2.7.0",
4
- "type": "module",
5
- "description": "Collective Memory Protocol - Persistent memory, cross-project learning, and multi-agent collaboration",
6
- "main": "dist/index.js",
7
- "types": "dist/index.d.ts",
8
- "bin": {
9
- "cmp-standards": "dist/cli/index.js"
10
- },
11
- "scripts": {
12
- "build": "tsc",
13
- "dev": "tsc --watch",
14
- "test": "vitest",
15
- "lint": "eslint src/**/*.ts",
16
- "prepublishOnly": "npm run build"
17
- },
18
- "keywords": [
19
- "claude",
20
- "ai",
21
- "memory",
22
- "workflow",
23
- "hooks",
24
- "task-tracking"
25
- ],
26
- "author": "Carlos Martin Pavon",
27
- "license": "MIT",
28
- "repository": {
29
- "type": "git",
30
- "url": "git+https://github.com/carlosmartinpavon/carlosmartinpavon.git",
31
- "directory": "packages/cmp-standards"
32
- },
33
- "homepage": "https://github.com/carlosmartinpavon/carlosmartinpavon/tree/main/packages/cmp-standards",
34
- "bugs": {
35
- "url": "https://github.com/carlosmartinpavon/carlosmartinpavon/issues"
36
- },
37
- "publishConfig": {
38
- "access": "public"
39
- },
40
- "engines": {
41
- "node": ">=18.0.0"
42
- },
43
- "dependencies": {
44
- "@libsql/client": "^0.14.0",
45
- "@modelcontextprotocol/sdk": "^0.5.0",
46
- "@upstash/redis": "^1.34.0",
47
- "@upstash/vector": "^1.1.0",
48
- "chalk": "^5.3.0",
49
- "commander": "^12.0.0",
50
- "cors": "^2.8.5",
51
- "dotenv": "^17.2.3",
52
- "drizzle-orm": ">=0.30.0",
53
- "express": "^4.18.2",
54
- "glob": "^10.3.10",
55
- "gray-matter": "^4.0.3",
56
- "mysql2": ">=3.0.0",
57
- "open": "^10.0.0",
58
- "simple-git": "^3.30.0",
59
- "ulid": "^2.3.0",
60
- "zod": "^3.23.0"
61
- },
62
- "optionalDependencies": {
63
- "better-sqlite3": "^11.0.0"
64
- },
65
- "peerDependencies": {
66
- "drizzle-orm": ">=0.30.0",
67
- "mysql2": ">=3.0.0"
68
- },
69
- "devDependencies": {
70
- "@types/better-sqlite3": "^7.6.0",
71
- "@types/cors": "^2.8.17",
72
- "@types/eslint": "^8.56.0",
73
- "@types/express": "^4.17.21",
74
- "@types/node": "^20.11.0",
75
- "@typescript-eslint/eslint-plugin": "^6.19.0",
76
- "@typescript-eslint/parser": "^6.19.0",
77
- "eslint": "^8.56.0",
78
- "typescript": "^5.3.3",
79
- "vitest": "^1.2.0"
80
- },
81
- "files": [
82
- "dist",
83
- "templates",
84
- "standards",
85
- "README.md"
86
- ],
87
- "exports": {
88
- ".": {
89
- "import": "./dist/index.js",
90
- "types": "./dist/index.d.ts"
91
- },
92
- "./hooks": {
93
- "import": "./dist/hooks/index.js",
94
- "types": "./dist/hooks/index.d.ts"
95
- },
96
- "./cli": {
97
- "import": "./dist/cli/index.js"
98
- },
99
- "./eslint": {
100
- "import": "./dist/eslint/index.js",
101
- "types": "./dist/eslint/index.d.ts"
102
- }
103
- }
104
- }
1
+ {
2
+ "name": "cmp-standards",
3
+ "version": "2.8.0",
4
+ "type": "module",
5
+ "description": "Collective Memory Protocol - Persistent memory, cross-project learning, and multi-agent collaboration",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "cmp-standards": "dist/cli/index.js"
10
+ },
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "dev": "tsc --watch",
14
+ "test": "vitest",
15
+ "lint": "eslint src/**/*.ts",
16
+ "prepublishOnly": "npm run build"
17
+ },
18
+ "keywords": [
19
+ "claude",
20
+ "ai",
21
+ "memory",
22
+ "workflow",
23
+ "hooks",
24
+ "task-tracking"
25
+ ],
26
+ "author": "Carlos Martin Pavon",
27
+ "license": "MIT",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git+https://github.com/carlosmartinpavon/carlosmartinpavon.git",
31
+ "directory": "packages/cmp-standards"
32
+ },
33
+ "homepage": "https://github.com/carlosmartinpavon/carlosmartinpavon/tree/main/packages/cmp-standards",
34
+ "bugs": {
35
+ "url": "https://github.com/carlosmartinpavon/carlosmartinpavon/issues"
36
+ },
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
40
+ "engines": {
41
+ "node": ">=18.0.0"
42
+ },
43
+ "dependencies": {
44
+ "@libsql/client": "^0.14.0",
45
+ "@modelcontextprotocol/sdk": "^0.5.0",
46
+ "@upstash/redis": "^1.34.0",
47
+ "@upstash/vector": "^1.1.0",
48
+ "chalk": "^5.3.0",
49
+ "commander": "^12.0.0",
50
+ "cors": "^2.8.5",
51
+ "dotenv": "^17.2.3",
52
+ "drizzle-orm": ">=0.30.0",
53
+ "express": "^4.18.2",
54
+ "glob": "^10.3.10",
55
+ "gray-matter": "^4.0.3",
56
+ "mysql2": ">=3.0.0",
57
+ "open": "^10.0.0",
58
+ "simple-git": "^3.30.0",
59
+ "ulid": "^2.3.0",
60
+ "zod": "^3.23.0"
61
+ },
62
+ "optionalDependencies": {
63
+ "@types/better-sqlite3": "^7.6.13",
64
+ "better-sqlite3": "^11.0.0"
65
+ },
66
+ "peerDependencies": {
67
+ "drizzle-orm": ">=0.30.0",
68
+ "mysql2": ">=3.0.0"
69
+ },
70
+ "devDependencies": {
71
+ "@types/better-sqlite3": "^7.6.0",
72
+ "@types/cors": "^2.8.17",
73
+ "@types/eslint": "^8.56.0",
74
+ "@types/express": "^4.17.21",
75
+ "@types/node": "^20.11.0",
76
+ "@typescript-eslint/eslint-plugin": "^6.19.0",
77
+ "@typescript-eslint/parser": "^6.19.0",
78
+ "eslint": "^8.56.0",
79
+ "typescript": "^5.3.3",
80
+ "vitest": "^1.2.0"
81
+ },
82
+ "files": [
83
+ "dist",
84
+ "templates",
85
+ "standards",
86
+ "README.md"
87
+ ],
88
+ "exports": {
89
+ ".": {
90
+ "import": "./dist/index.js",
91
+ "types": "./dist/index.d.ts"
92
+ },
93
+ "./hooks": {
94
+ "import": "./dist/hooks/index.js",
95
+ "types": "./dist/hooks/index.d.ts"
96
+ },
97
+ "./cli": {
98
+ "import": "./dist/cli/index.js"
99
+ },
100
+ "./eslint": {
101
+ "import": "./dist/eslint/index.js",
102
+ "types": "./dist/eslint/index.d.ts"
103
+ }
104
+ }
105
+ }
@@ -1,50 +1,50 @@
1
- # CMP Standards
2
-
3
- Estándares globales para proyectos con Claude Code. Estos estándares son **adaptados inteligentemente** por la IA a cada proyecto local.
4
-
5
- ## Estructura
6
-
7
- ```
8
- standards/
9
- ├── general/ # Cómo trabajar en general
10
- │ ├── workflow.md # Flujo de trabajo con Claude
11
- │ ├── code-quality.md # Estándares de código
12
- │ ├── memory-usage.md # Uso del sistema de memoria
13
- │ └── sync-workflow.md # Cómo funciona el sync inteligente
14
-
15
- ├── mcp/ # Model Context Protocol
16
- │ ├── server-design.md
17
- │ └── tool-patterns.md
18
-
19
- ├── tools/ # Diseño de herramientas
20
- │ └── tool-design.md
21
-
22
- ├── skills/ # Sistema de skills
23
- │ ├── skill-structure.md
24
- │ └── workflow-design.md
25
-
26
- ├── experts/ # Sistema de expertos
27
- │ └── expert-routing.md
28
-
29
- ├── hooks/ # Hooks obligatorios
30
- │ └── mandatory-tracking.md # Sistema de tracking continuo
31
-
32
- └── infrastructure/ # Infraestructura cloud
33
- └── cloud-database.md # Turso + Upstash (gratis)
34
- ```
35
-
36
- ## Cómo funciona el Sync
37
-
38
- 1. **AI lee** estos estándares globales
39
- 2. **AI analiza** el proyecto local (estructura, tech stack, CLAUDE.md existente)
40
- 3. **AI adapta** los estándares al contexto local
41
- 4. **AI actualiza** el CLAUDE.md local con lo relevante
42
-
43
- ## Uso
44
-
45
- ```bash
46
- # El sync se invoca como skill
47
- /sync
48
- ```
49
-
50
- La IA ejecuta el sync de forma inteligente, no es un script.
1
+ # CMP Standards
2
+
3
+ Estándares globales para proyectos con Claude Code. Estos estándares son **adaptados inteligentemente** por la IA a cada proyecto local.
4
+
5
+ ## Estructura
6
+
7
+ ```
8
+ standards/
9
+ ├── general/ # Cómo trabajar en general
10
+ │ ├── workflow.md # Flujo de trabajo con Claude
11
+ │ ├── code-quality.md # Estándares de código
12
+ │ ├── memory-usage.md # Uso del sistema de memoria
13
+ │ └── sync-workflow.md # Cómo funciona el sync inteligente
14
+
15
+ ├── mcp/ # Model Context Protocol
16
+ │ ├── server-design.md
17
+ │ └── tool-patterns.md
18
+
19
+ ├── tools/ # Diseño de herramientas
20
+ │ └── tool-design.md
21
+
22
+ ├── skills/ # Sistema de skills
23
+ │ ├── skill-structure.md
24
+ │ └── workflow-design.md
25
+
26
+ ├── experts/ # Sistema de expertos
27
+ │ └── expert-routing.md
28
+
29
+ ├── hooks/ # Hooks obligatorios
30
+ │ └── mandatory-tracking.md # Sistema de tracking continuo
31
+
32
+ └── infrastructure/ # Infraestructura cloud
33
+ └── cloud-database.md # Turso + Upstash (gratis)
34
+ ```
35
+
36
+ ## Cómo funciona el Sync
37
+
38
+ 1. **AI lee** estos estándares globales
39
+ 2. **AI analiza** el proyecto local (estructura, tech stack, CLAUDE.md existente)
40
+ 3. **AI adapta** los estándares al contexto local
41
+ 4. **AI actualiza** el CLAUDE.md local con lo relevante
42
+
43
+ ## Uso
44
+
45
+ ```bash
46
+ # El sync se invoca como skill
47
+ /sync
48
+ ```
49
+
50
+ La IA ejecuta el sync de forma inteligente, no es un script.