project-context-ai 1.2.1 → 1.3.1

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 (47) hide show
  1. package/dist/context/store.d.ts.map +1 -1
  2. package/dist/context/store.js +1 -0
  3. package/dist/context/store.js.map +1 -1
  4. package/dist/generators/claude.d.ts.map +1 -1
  5. package/dist/generators/claude.js +2 -1
  6. package/dist/generators/claude.js.map +1 -1
  7. package/dist/generators/codex.d.ts.map +1 -1
  8. package/dist/generators/codex.js +2 -1
  9. package/dist/generators/codex.js.map +1 -1
  10. package/dist/generators/copilot.d.ts.map +1 -1
  11. package/dist/generators/copilot.js +2 -1
  12. package/dist/generators/copilot.js.map +1 -1
  13. package/dist/generators/cursor.d.ts.map +1 -1
  14. package/dist/generators/cursor.js +2 -1
  15. package/dist/generators/cursor.js.map +1 -1
  16. package/dist/generators/gemini.d.ts.map +1 -1
  17. package/dist/generators/gemini.js +2 -1
  18. package/dist/generators/gemini.js.map +1 -1
  19. package/dist/generators/index.d.ts.map +1 -1
  20. package/dist/generators/index.js +58 -3
  21. package/dist/generators/index.js.map +1 -1
  22. package/dist/generators/template.d.ts +1 -0
  23. package/dist/generators/template.d.ts.map +1 -1
  24. package/dist/generators/template.js +168 -5
  25. package/dist/generators/template.js.map +1 -1
  26. package/dist/generators/trae.d.ts.map +1 -1
  27. package/dist/generators/trae.js +2 -1
  28. package/dist/generators/trae.js.map +1 -1
  29. package/dist/generators/windsurf.d.ts.map +1 -1
  30. package/dist/generators/windsurf.js +2 -1
  31. package/dist/generators/windsurf.js.map +1 -1
  32. package/dist/scanner/business.js +99 -6
  33. package/dist/scanner/business.js.map +1 -1
  34. package/dist/scanner/database.js +31 -1
  35. package/dist/scanner/database.js.map +1 -1
  36. package/dist/scanner/index.d.ts.map +1 -1
  37. package/dist/scanner/index.js +4 -1
  38. package/dist/scanner/index.js.map +1 -1
  39. package/dist/scanner/patterns.d.ts +51 -0
  40. package/dist/scanner/patterns.d.ts.map +1 -0
  41. package/dist/scanner/patterns.js +500 -0
  42. package/dist/scanner/patterns.js.map +1 -0
  43. package/dist/scanner/routes.js +16 -2
  44. package/dist/scanner/routes.js.map +1 -1
  45. package/dist/types.d.ts +17 -0
  46. package/dist/types.d.ts.map +1 -1
  47. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/context/store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAOjF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIxE;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAY9E;AAED,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,MAAM,GAAE,eAAe,GAAG,IAAW,GACpC,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,cAAc,GACtB,cAAc,CAiBhB"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/context/store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAOjF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIxE;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAY9E;AAED,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,MAAM,GAAE,eAAe,GAAG,IAAW,GACpC,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,cAAc,GACtB,cAAc,CAkBhB"}
@@ -55,6 +55,7 @@ export function mergeContext(existing, partial) {
55
55
  services: partial.services || existing.services,
56
56
  modules: partial.modules || existing.modules,
57
57
  business: partial.business || existing.business,
58
+ patterns: partial.patterns || existing.patterns,
58
59
  };
59
60
  }
60
61
  function mergeByPath(existing, incoming) {
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/context/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/context/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,WAAW,GAAG,aAAa,CAAC;AAClC,MAAM,UAAU,GAAG,oBAAoB,CAAC;AACxC,MAAM,eAAe,GAAG,OAAO,CAAC;AAEhC,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAgB;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;QAC9C,IAAI,KAAK,CAAC,OAAO,KAAK,eAAe;YAAE,OAAO,IAAI,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAAgB,EAChB,OAAuB,EACvB,UAAkC,EAClC,UAAyB,EACzB,SAAiC,IAAI;IAErC,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAE7C,MAAM,KAAK,GAAiB;QAC1B,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,UAAU;QACV,MAAM;QACN,cAAc,EAAE,OAAO;QACvB,UAAU;KACX,CAAC;IAEF,MAAM,SAAS,CACb,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EACrB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAC9B,OAAO,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,QAAwB,EACxB,OAAuB;IAEvB,OAAO;QACL,IAAI,EAAE,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE;QAC3C,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC;QAC7D,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,OAAO,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;QACpD,WAAW,EAAE,EAAE,GAAG,QAAQ,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE;QAChE,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5E,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC;QAC1D,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM;QACzC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;QAC/C,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO;QAC5C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;QAC/C,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO;QAC5C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;QAC/C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;KAChD,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAA6B,QAAa,EAAE,QAAa;IAC3E,MAAM,GAAG,GAAG,IAAI,GAAG,EAAa,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,QAAQ;QAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtD,KAAK,MAAM,IAAI,IAAI,QAAQ;QAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/generators/claude.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAiBnE,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,eAAe,CAyCnE"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/generators/claude.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAkBnE,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,eAAe,CA0CnE"}
@@ -1,4 +1,4 @@
1
- import { buildProjectOverview, buildStructureSection, buildKeyFilesSection, buildEntryPointsSection, buildScriptsSection, buildDependenciesSection, buildArchitectureSection, buildRoutesSection, buildDatabaseSection, buildModulesSection, buildEnvVarsSection, buildServicesSection, buildBusinessSection, } from "./template.js";
1
+ import { buildProjectOverview, buildStructureSection, buildKeyFilesSection, buildEntryPointsSection, buildScriptsSection, buildDependenciesSection, buildArchitectureSection, buildRoutesSection, buildDatabaseSection, buildModulesSection, buildEnvVarsSection, buildServicesSection, buildBusinessSection, buildPatternsSection, } from "./template.js";
2
2
  export function generateClaude(ctx) {
3
3
  const sections = [];
4
4
  sections.push(buildProjectOverview(ctx));
@@ -12,6 +12,7 @@ export function generateClaude(ctx) {
12
12
  sections.push(buildEnvVarsSection(ctx));
13
13
  sections.push(buildServicesSection(ctx));
14
14
  sections.push(buildBusinessSection(ctx));
15
+ sections.push(buildPatternsSection(ctx));
15
16
  sections.push(buildDependenciesSection(ctx));
16
17
  sections.push(buildScriptsSection(ctx));
17
18
  // Claude-specific instructions
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/generators/claude.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,MAAM,UAAU,cAAc,CAAC,GAAmB;IAChD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IAExC,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACjE,QAAQ,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACjE,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,YAAY,CAAC,cAAc,yBAAyB,CAAC,CAAC;IAEjF,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,+BAA+B,EAAE,CAAC;QAChE,QAAQ,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,WAAW,CAAC,OAAO,cAAc,CAAC,CAAC;IAChE,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACxE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAE1D,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;KAC7B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/generators/claude.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,MAAM,UAAU,cAAc,CAAC,GAAmB;IAChD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IAExC,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACjE,QAAQ,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACjE,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,YAAY,CAAC,cAAc,yBAAyB,CAAC,CAAC;IAEjF,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,+BAA+B,EAAE,CAAC;QAChE,QAAQ,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,WAAW,CAAC,OAAO,cAAc,CAAC,CAAC;IAChE,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACxE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAE1D,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;KAC7B,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/generators/codex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAiBnE,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,eAAe,CAgDlE"}
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/generators/codex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAkBnE,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,eAAe,CAiDlE"}
@@ -1,4 +1,4 @@
1
- import { buildProjectOverview, buildStructureSection, buildKeyFilesSection, buildEntryPointsSection, buildDependenciesSection, buildArchitectureSection, buildScriptsSection, buildRoutesSection, buildDatabaseSection, buildModulesSection, buildEnvVarsSection, buildServicesSection, buildBusinessSection, } from "./template.js";
1
+ import { buildProjectOverview, buildStructureSection, buildKeyFilesSection, buildEntryPointsSection, buildDependenciesSection, buildArchitectureSection, buildScriptsSection, buildRoutesSection, buildDatabaseSection, buildModulesSection, buildEnvVarsSection, buildServicesSection, buildBusinessSection, buildPatternsSection, } from "./template.js";
2
2
  export function generateCodex(ctx) {
3
3
  const sections = [];
4
4
  sections.push(buildProjectOverview(ctx));
@@ -12,6 +12,7 @@ export function generateCodex(ctx) {
12
12
  sections.push(buildEnvVarsSection(ctx));
13
13
  sections.push(buildServicesSection(ctx));
14
14
  sections.push(buildBusinessSection(ctx));
15
+ sections.push(buildPatternsSection(ctx));
15
16
  sections.push(buildDependenciesSection(ctx));
16
17
  sections.push(buildScriptsSection(ctx));
17
18
  // Codex/AGENTS.md-specific instructions
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/generators/codex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/generators/codex.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../src/generators/copilot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAgBnE,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,eAAe,CAyCpE"}
1
+ {"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../src/generators/copilot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAiBnE,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,eAAe,CA0CpE"}
@@ -1,4 +1,4 @@
1
- import { buildProjectOverview, buildStructureSection, buildKeyFilesSection, buildDependenciesSection, buildArchitectureSection, buildScriptsSection, buildRoutesSection, buildDatabaseSection, buildModulesSection, buildEnvVarsSection, buildServicesSection, buildBusinessSection, } from "./template.js";
1
+ import { buildProjectOverview, buildStructureSection, buildKeyFilesSection, buildDependenciesSection, buildArchitectureSection, buildScriptsSection, buildRoutesSection, buildDatabaseSection, buildModulesSection, buildEnvVarsSection, buildServicesSection, buildBusinessSection, buildPatternsSection, } from "./template.js";
2
2
  export function generateCopilot(ctx) {
3
3
  const sections = [];
4
4
  sections.push(buildProjectOverview(ctx));
@@ -11,6 +11,7 @@ export function generateCopilot(ctx) {
11
11
  sections.push(buildEnvVarsSection(ctx));
12
12
  sections.push(buildServicesSection(ctx));
13
13
  sections.push(buildBusinessSection(ctx));
14
+ sections.push(buildPatternsSection(ctx));
14
15
  sections.push(buildDependenciesSection(ctx));
15
16
  sections.push(buildScriptsSection(ctx));
16
17
  // Copilot-specific guidance
@@ -1 +1 @@
1
- {"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../src/generators/copilot.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,MAAM,UAAU,eAAe,CAAC,GAAmB;IACjD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IAExC,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,QAAQ,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC;IAEvE,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,GAAG,CAAC,WAAW,CAAC,eAAe,KAAK,eAAe,EAAE,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC;IACjE,QAAQ,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAC5E,QAAQ,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAE1D,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,iCAAiC;QAC3C,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;KAC7B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../src/generators/copilot.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,MAAM,UAAU,eAAe,CAAC,GAAmB;IACjD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IAExC,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,QAAQ,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC;IAEvE,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,GAAG,CAAC,WAAW,CAAC,eAAe,KAAK,eAAe,EAAE,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC;IACjE,QAAQ,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAC5E,QAAQ,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAE1D,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,iCAAiC;QAC3C,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;KAC7B,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/generators/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAenE,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,eAAe,CAkDnE"}
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/generators/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAgBnE,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,eAAe,CAmDnE"}
@@ -1,4 +1,4 @@
1
- import { buildProjectOverview, buildStructureSection, buildKeyFilesSection, buildDependenciesSection, buildArchitectureSection, buildRoutesSection, buildDatabaseSection, buildModulesSection, buildEnvVarsSection, buildServicesSection, buildBusinessSection, } from "./template.js";
1
+ import { buildProjectOverview, buildStructureSection, buildKeyFilesSection, buildDependenciesSection, buildArchitectureSection, buildRoutesSection, buildDatabaseSection, buildModulesSection, buildEnvVarsSection, buildServicesSection, buildBusinessSection, buildPatternsSection, } from "./template.js";
2
2
  export function generateCursor(ctx) {
3
3
  const sections = [];
4
4
  sections.push(buildProjectOverview(ctx));
@@ -11,6 +11,7 @@ export function generateCursor(ctx) {
11
11
  sections.push(buildEnvVarsSection(ctx));
12
12
  sections.push(buildServicesSection(ctx));
13
13
  sections.push(buildBusinessSection(ctx));
14
+ sections.push(buildPatternsSection(ctx));
14
15
  sections.push(buildDependenciesSection(ctx));
15
16
  // Cursor-specific rules
16
17
  sections.push("## Rules");
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/generators/cursor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/generators/cursor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/generators/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAgBnE,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,eAAe,CAyCnE"}
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/generators/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAiBnE,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,eAAe,CA0CnE"}
@@ -1,4 +1,4 @@
1
- import { buildProjectOverview, buildStructureSection, buildKeyFilesSection, buildDependenciesSection, buildArchitectureSection, buildScriptsSection, buildRoutesSection, buildDatabaseSection, buildModulesSection, buildEnvVarsSection, buildServicesSection, buildBusinessSection, } from "./template.js";
1
+ import { buildProjectOverview, buildStructureSection, buildKeyFilesSection, buildDependenciesSection, buildArchitectureSection, buildScriptsSection, buildRoutesSection, buildDatabaseSection, buildModulesSection, buildEnvVarsSection, buildServicesSection, buildBusinessSection, buildPatternsSection, } from "./template.js";
2
2
  export function generateGemini(ctx) {
3
3
  const sections = [];
4
4
  sections.push(buildProjectOverview(ctx));
@@ -11,6 +11,7 @@ export function generateGemini(ctx) {
11
11
  sections.push(buildEnvVarsSection(ctx));
12
12
  sections.push(buildServicesSection(ctx));
13
13
  sections.push(buildBusinessSection(ctx));
14
+ sections.push(buildPatternsSection(ctx));
14
15
  sections.push(buildDependenciesSection(ctx));
15
16
  sections.push(buildScriptsSection(ctx));
16
17
  // Gemini-specific style guide
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/generators/gemini.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,MAAM,UAAU,cAAc,CAAC,GAAmB;IAChD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IAExC,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,QAAQ,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC;IACvE,QAAQ,CAAC,IAAI,CAAC,2BAA2B,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC;IAEzE,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,+BAA+B,EAAE,CAAC;QAChE,QAAQ,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAChE,QAAQ,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACvE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAE1D,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,wBAAwB;QAClC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;KAC7B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/generators/gemini.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,MAAM,UAAU,cAAc,CAAC,GAAmB;IAChD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IAExC,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,QAAQ,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC;IACvE,QAAQ,CAAC,IAAI,CAAC,2BAA2B,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC;IAEzE,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,+BAA+B,EAAE,CAAC;QAChE,QAAQ,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAChE,QAAQ,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACvE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAE1D,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,wBAAwB;QAClC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;KAC7B,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAmBpF,eAAO,MAAM,iBAAiB,EAAkC,eAAe,EAAE,CAAC;AAElF,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE,eAAe,EAAE,GAC1B,OAAO,CAAC,eAAe,EAAE,CAAC,CAmB5B;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,eAAe,GACtB,MAAM,CAIR"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAoBpF,eAAO,MAAM,iBAAiB,EAAkC,eAAe,EAAE,CAAC;AAMlF,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE,eAAe,EAAE,GAC1B,OAAO,CAAC,eAAe,EAAE,CAAC,CAyC5B;AAoCD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,eAAe,GACtB,MAAM,CAIR"}
@@ -1,5 +1,6 @@
1
- import { writeFile, mkdir } from "node:fs/promises";
1
+ import { writeFile, readFile, mkdir } from "node:fs/promises";
2
2
  import { join, dirname } from "node:path";
3
+ import { fileExists } from "../utils/files.js";
3
4
  import { generateClaude } from "./claude.js";
4
5
  import { generateTrae } from "./trae.js";
5
6
  import { generateCursor } from "./cursor.js";
@@ -17,6 +18,9 @@ const ALL_GENERATORS = {
17
18
  windsurf: generateWindsurf,
18
19
  };
19
20
  export const GENERATOR_TARGETS = Object.keys(ALL_GENERATORS);
21
+ const AUTO_START = "<!-- START project-context-ai -->";
22
+ const AUTO_END = "<!-- END project-context-ai -->";
23
+ const FULL_MARKER = "<!-- Generated by project-context-ai -->";
20
24
  export async function generateAll(rootPath, ctx, targets) {
21
25
  const selectedTargets = targets || GENERATOR_TARGETS;
22
26
  const outputs = [];
@@ -26,13 +30,64 @@ export async function generateAll(rootPath, ctx, targets) {
26
30
  continue;
27
31
  const output = generator(ctx);
28
32
  const fullPath = join(rootPath, output.filePath);
29
- // Ensure directory exists (for .github/, .gemini/, etc.)
33
+ // Ensure directory exists
30
34
  await mkdir(dirname(fullPath), { recursive: true });
31
- await writeFile(fullPath, output.content, "utf-8");
35
+ // Check if file already exists
36
+ if (await fileExists(fullPath)) {
37
+ const existing = await readFile(fullPath, "utf-8");
38
+ if (existing.includes(FULL_MARKER)) {
39
+ // File was fully generated by us — safe to overwrite
40
+ await writeFile(fullPath, output.content, "utf-8");
41
+ }
42
+ else if (existing.includes(AUTO_START)) {
43
+ // File has manual content + our auto block — update only our block
44
+ const merged = replaceAutoBlock(existing, output.content);
45
+ await writeFile(fullPath, merged, "utf-8");
46
+ output.content = merged;
47
+ }
48
+ else {
49
+ // File is entirely manual — append our context as a demarcated block
50
+ const merged = appendAutoBlock(existing, output.content);
51
+ await writeFile(fullPath, merged, "utf-8");
52
+ output.content = merged;
53
+ }
54
+ }
55
+ else {
56
+ // New file — write fully generated
57
+ await writeFile(fullPath, output.content, "utf-8");
58
+ }
32
59
  outputs.push(output);
33
60
  }
34
61
  return outputs;
35
62
  }
63
+ function appendAutoBlock(manualContent, autoContent) {
64
+ // Strip the FULL_MARKER from auto content since we're using block markers
65
+ const cleanAuto = autoContent.replace(FULL_MARKER, "").trim();
66
+ return [
67
+ manualContent.trim(),
68
+ "",
69
+ AUTO_START,
70
+ "",
71
+ cleanAuto,
72
+ "",
73
+ AUTO_END,
74
+ "",
75
+ ].join("\n");
76
+ }
77
+ function replaceAutoBlock(existing, autoContent) {
78
+ const cleanAuto = autoContent.replace(FULL_MARKER, "").trim();
79
+ const startIdx = existing.indexOf(AUTO_START);
80
+ const endIdx = existing.indexOf(AUTO_END);
81
+ if (startIdx === -1 || endIdx === -1)
82
+ return existing;
83
+ const before = existing.slice(0, startIdx).trim();
84
+ const after = existing.slice(endIdx + AUTO_END.length).trim();
85
+ const parts = [before, "", AUTO_START, "", cleanAuto, "", AUTO_END];
86
+ if (after)
87
+ parts.push("", after);
88
+ parts.push("");
89
+ return parts.join("\n");
90
+ }
36
91
  export function generatePreview(ctx, target) {
37
92
  const generator = ALL_GENERATORS[target];
38
93
  if (!generator)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,cAAc,GAAsE;IACxF,MAAM,EAAE,cAAc;IACtB,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,cAAc;IACtB,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,aAAa;IACpB,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,gBAAgB;CAC3B,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAsB,CAAC;AAElF,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAgB,EAChB,GAAmB,EACnB,OAA2B;IAE3B,MAAM,eAAe,GAAG,OAAO,IAAI,iBAAiB,CAAC;IACrD,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS;YAAE,SAAS;QAEzB,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEjD,yDAAyD;QACzD,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEnD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,GAAmB,EACnB,MAAuB;IAEvB,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,SAAS;QAAE,OAAO,mBAAmB,MAAM,EAAE,CAAC;IACnD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"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"}
@@ -12,4 +12,5 @@ export declare function buildEnvVarsSection(ctx: ProjectContext): string;
12
12
  export declare function buildServicesSection(ctx: ProjectContext): string;
13
13
  export declare function buildModulesSection(ctx: ProjectContext): string;
14
14
  export declare function buildBusinessSection(ctx: ProjectContext): string;
15
+ export declare function buildPatternsSection(ctx: ProjectContext): string;
15
16
  //# sourceMappingURL=template.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/generators/template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CA4ChE;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CA0BjE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAahE;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAanE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAa/D;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAcpE;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAYpE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAqB9D;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAiChE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAgC/D;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAahE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAgB/D;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CA+EhE"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/generators/template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CA4ChE;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CA0BjE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAahE;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAanE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAa/D;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAcpE;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAYpE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CA6B9D;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAkDhE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAgC/D;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAahE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAgB/D;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAyFhE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAoIhE"}
@@ -122,11 +122,21 @@ export function buildRoutesSection(ctx) {
122
122
  const lines = [];
123
123
  lines.push("## API Routes");
124
124
  lines.push("");
125
- lines.push("| Method | Path | File | Auth |");
126
- lines.push("|--------|------|------|------|");
125
+ const hasHandlers = ctx.routes.some((r) => r.handler);
126
+ let header = "| Method | Path | File | Auth |";
127
+ let sep = "|--------|------|------|------|";
128
+ if (hasHandlers) {
129
+ header += " Handler |";
130
+ sep += "---------|";
131
+ }
132
+ lines.push(header);
133
+ lines.push(sep);
127
134
  const routes = ctx.routes.slice(0, 30);
128
135
  for (const r of routes) {
129
- lines.push(`| ${r.method} | ${r.path} | \`${r.file}\` | ${r.auth ? "Yes" : "No"} |`);
136
+ let row = `| ${r.method} | ${r.path} | \`${r.file}\` | ${r.auth ? "Yes" : "No"} |`;
137
+ if (hasHandlers)
138
+ row += ` ${r.handler || "-"} |`;
139
+ lines.push(row);
130
140
  }
131
141
  if (ctx.routes.length > 30) {
132
142
  lines.push("");
@@ -152,12 +162,28 @@ export function buildDatabaseSection(ctx) {
152
162
  tags.push("unique");
153
163
  if (field.required === false)
154
164
  tags.push("optional");
165
+ if (field.defaultValue)
166
+ tags.push(`default: ${field.defaultValue}`);
155
167
  const tagStr = tags.length ? ` (${tags.join(", ")})` : "";
156
168
  lines.push(`- **${field.name}** — ${field.type}${tagStr}`);
157
169
  }
158
170
  for (const rel of model.relations) {
159
171
  lines.push(`- **${rel.name}** → ${rel.target} (${rel.type})`);
160
172
  }
173
+ if (model.indexes && model.indexes.length > 0) {
174
+ lines.push("");
175
+ lines.push("**Indexes:**");
176
+ for (const idx of model.indexes) {
177
+ lines.push(`- ${idx.unique ? "unique" : "index"}(${idx.fields.join(", ")})`);
178
+ }
179
+ }
180
+ if (model.enums && model.enums.length > 0) {
181
+ lines.push("");
182
+ lines.push("**Enums:**");
183
+ for (const en of model.enums) {
184
+ lines.push(`- \`${en.name}\`: ${en.values.join(", ")}`);
185
+ }
186
+ }
161
187
  lines.push("");
162
188
  }
163
189
  if (ctx.database.length > 15) {
@@ -252,14 +278,19 @@ export function buildBusinessSection(ctx) {
252
278
  if (biz.skills.length > 0) {
253
279
  lines.push("### Skills / Plugins");
254
280
  lines.push("");
255
- // Group by interface if available
256
281
  const interfaces = new Set(biz.skills.map((s) => s.interface).filter(Boolean));
257
282
  if (interfaces.size === 1) {
258
283
  lines.push(`> ${biz.skills.length} skills implementing \`${[...interfaces][0]}\``);
259
284
  lines.push("");
260
285
  }
261
286
  for (const skill of biz.skills) {
262
- lines.push(`- **${skill.name}** \`${skill.file}\``);
287
+ const toolInfo = skill.toolCount ? ` (${skill.toolCount} tools)` : "";
288
+ lines.push(`- **${skill.name}**${toolInfo} — \`${skill.file}\``);
289
+ if (skill.methods && skill.methods.length > 0) {
290
+ for (const method of skill.methods.slice(0, 5)) {
291
+ lines.push(` - \`${method}\``);
292
+ }
293
+ }
263
294
  }
264
295
  lines.push("");
265
296
  }
@@ -268,6 +299,11 @@ export function buildBusinessSection(ctx) {
268
299
  lines.push("");
269
300
  for (const doc of biz.documentation) {
270
301
  lines.push(`- **${doc.title}** (\`${doc.file}\`) — ${doc.summary}`);
302
+ if (doc.keyRules && doc.keyRules.length > 0) {
303
+ for (const rule of doc.keyRules) {
304
+ lines.push(` - ⚠️ ${rule}`);
305
+ }
306
+ }
271
307
  }
272
308
  lines.push("");
273
309
  }
@@ -296,6 +332,133 @@ export function buildBusinessSection(ctx) {
296
332
  }
297
333
  return lines.join("\n");
298
334
  }
335
+ export function buildPatternsSection(ctx) {
336
+ if (!ctx.patterns)
337
+ return "";
338
+ const p = ctx.patterns;
339
+ const lines = [];
340
+ lines.push("## Code Patterns & Conventions");
341
+ lines.push("");
342
+ // ─── DI with code example ───
343
+ if (p.di) {
344
+ lines.push("### Dependency Injection");
345
+ lines.push(`Uses ${p.di}`);
346
+ const diEx = p.codeExamples.find((e) => e.category === "di");
347
+ if (diEx) {
348
+ lines.push("```typescript");
349
+ lines.push(`// ${diEx.file}`);
350
+ lines.push(diEx.code);
351
+ lines.push("```");
352
+ }
353
+ lines.push("");
354
+ }
355
+ // ─── Import rules ───
356
+ if (p.imports.length > 0) {
357
+ lines.push("### Import Rules");
358
+ for (const imp of p.imports) {
359
+ const isPositive = imp.toLowerCase().includes("relative") || imp.toLowerCase().includes("barrel");
360
+ const isNegative = imp.toLowerCase().includes("no ") || imp.toLowerCase().includes("never");
361
+ lines.push(`- ${isNegative ? "❌" : isPositive ? "✅" : "•"} ${imp}`);
362
+ }
363
+ lines.push("");
364
+ }
365
+ // ─── Error handling ───
366
+ if (p.errorHandling.length > 0) {
367
+ lines.push("### Error Handling");
368
+ const baseClasses = [...new Set(p.errorHandling.map((e) => e.extendsFrom))];
369
+ lines.push(`Custom errors extending ${baseClasses.join(", ")}:`);
370
+ lines.push("");
371
+ for (const err of p.errorHandling.slice(0, 10)) {
372
+ lines.push(`- \`${err.className}\` extends \`${err.extendsFrom}\` — \`${err.file}\``);
373
+ }
374
+ const errEx = p.codeExamples.find((e) => e.category === "error-handling");
375
+ if (errEx) {
376
+ lines.push("");
377
+ lines.push("```typescript");
378
+ lines.push(`// ${errEx.file}`);
379
+ lines.push(errEx.code);
380
+ lines.push("```");
381
+ }
382
+ lines.push("");
383
+ }
384
+ // ─── Testing ───
385
+ if (p.testPatterns) {
386
+ const t = p.testPatterns;
387
+ lines.push("### Testing");
388
+ lines.push(`- **Framework:** ${t.framework}`);
389
+ if (t.coverageThreshold !== null)
390
+ lines.push(`- **Coverage threshold:** ${t.coverageThreshold}%`);
391
+ lines.push(`- **Unit tests:** \`${t.unitFilePattern}\` in \`${t.testDir}\``);
392
+ if (t.integrationFilePattern)
393
+ lines.push(`- **Integration tests:** \`${t.integrationFilePattern}\``);
394
+ if (t.assertionStyle)
395
+ lines.push(`- **Assertion style:** ${t.assertionStyle}`);
396
+ lines.push("");
397
+ }
398
+ // ─── Architecture rules ───
399
+ if (p.architecturalRules.length > 0) {
400
+ lines.push("### Architecture Rules");
401
+ for (const rule of p.architecturalRules) {
402
+ const isNeg = rule.toLowerCase().includes("not") || rule.toLowerCase().includes("forbidden");
403
+ lines.push(`- ${isNeg ? "❌" : "✅"} ${rule}`);
404
+ }
405
+ lines.push("");
406
+ }
407
+ // ─── Naming ───
408
+ lines.push("### Naming Conventions");
409
+ lines.push(`- **Files:** ${p.naming.files}`);
410
+ lines.push(`- **Variables:** ${p.naming.variables}`);
411
+ if (p.naming.dbColumns !== "unknown")
412
+ lines.push(`- **DB columns:** ${p.naming.dbColumns}`);
413
+ lines.push("");
414
+ // ─── Code conventions ───
415
+ if (p.codeConventions.length > 0) {
416
+ lines.push("### Code Conventions");
417
+ for (const conv of p.codeConventions)
418
+ lines.push(`- ${conv}`);
419
+ lines.push("");
420
+ }
421
+ // ─── Code examples ───
422
+ const otherExamples = p.codeExamples.filter((e) => !["di", "error-handling"].includes(e.category));
423
+ if (otherExamples.length > 0) {
424
+ lines.push("### Code Examples");
425
+ lines.push("");
426
+ for (const ex of otherExamples) {
427
+ lines.push(`**${ex.label}** (\`${ex.file}\`):`);
428
+ lines.push("```typescript");
429
+ lines.push(ex.code);
430
+ lines.push("```");
431
+ lines.push("");
432
+ }
433
+ }
434
+ // ─── Workflows ───
435
+ if (p.workflows.length > 0) {
436
+ lines.push("### Workflows");
437
+ for (const wf of p.workflows)
438
+ lines.push(`- ${wf}`);
439
+ lines.push("");
440
+ }
441
+ // ─── IDE Skills ───
442
+ if (p.ideSkills.length > 0) {
443
+ lines.push("### IDE Skills");
444
+ lines.push("");
445
+ lines.push("| Skill | File | Activates On |");
446
+ lines.push("|-------|------|-------------|");
447
+ for (const skill of p.ideSkills) {
448
+ lines.push(`| ${skill.name} | \`${skill.file}\` | ${skill.activatesOn || "manual"} |`);
449
+ }
450
+ lines.push("");
451
+ }
452
+ // ─── IDE Commands ───
453
+ if (p.ideCommands.length > 0) {
454
+ lines.push("### IDE Commands");
455
+ for (const cmd of p.ideCommands) {
456
+ lines.push(`- \`/${cmd.name}\` — ${cmd.description} (\`${cmd.file}\`)`);
457
+ }
458
+ lines.push("");
459
+ }
460
+ return lines.join("\n");
461
+ }
299
462
  function groupFrameworksByCategory(ctx) {
300
463
  const groups = {};
301
464
  for (const fw of ctx.frameworks) {