codymaster 4.5.4 → 4.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 (133) hide show
  1. package/CHANGELOG.md +46 -1
  2. package/README.md +86 -31
  3. package/dist/backends/viking-backend.js +235 -0
  4. package/dist/backends/viking-http-client.js +176 -0
  5. package/dist/browse-server.js +251 -0
  6. package/dist/cli/command-registry.js +26 -0
  7. package/dist/cli/commands/agent.js +120 -0
  8. package/dist/cli/commands/dashboard.js +93 -0
  9. package/dist/cli/commands/design-studio.js +111 -0
  10. package/dist/cli/commands/distro.js +25 -0
  11. package/dist/cli/commands/engineering.js +488 -0
  12. package/dist/cli/commands/project.js +324 -0
  13. package/dist/cli/commands/skill-chain.js +269 -0
  14. package/dist/cli/commands/system.js +89 -0
  15. package/dist/cli/commands/task.js +254 -0
  16. package/dist/cli/update-check.js +83 -0
  17. package/dist/cm-config.js +110 -0
  18. package/dist/cm-suggest.js +77 -0
  19. package/dist/continuity.js +8 -0
  20. package/dist/distro-validate.js +54 -0
  21. package/dist/guardian-core.js +74 -0
  22. package/dist/index.js +36 -2759
  23. package/dist/mcp-context-server.js +60 -1
  24. package/dist/mcp-skills-tools.js +81 -0
  25. package/dist/retro-summary.js +70 -0
  26. package/dist/second-opinion-providers.js +79 -0
  27. package/dist/sprint-pipeline.js +228 -0
  28. package/dist/storage-backend.js +63 -0
  29. package/dist/utils/cli-utils.js +76 -0
  30. package/dist/utils/skill-utils.js +32 -0
  31. package/install.sh +286 -58
  32. package/package.json +16 -5
  33. package/scripts/build-skills.mjs +51 -0
  34. package/scripts/gate-0-repo-hygiene.js +75 -0
  35. package/scripts/postinstall.js +56 -1
  36. package/scripts/security-scan.js +1 -1
  37. package/scripts/validate-skills.mjs +42 -0
  38. package/scripts/viking-demo.ts +105 -0
  39. package/skills/CLAUDE.md +2 -2
  40. package/skills/_shared/helpers.md +10 -0
  41. package/skills/cm-ads-tracker/SKILL.md +3 -6
  42. package/skills/cm-browse/SKILL.md +28 -0
  43. package/skills/cm-conductor-worktrees/SKILL.md +24 -0
  44. package/skills/cm-content-factory/SKILL.md +1 -1
  45. package/skills/cm-content-factory/landing/docs/content/changelog.md +36 -0
  46. package/skills/cm-content-factory/landing/docs/content/deployment.md +46 -0
  47. package/skills/cm-content-factory/landing/docs/content/execution-flow.md +67 -0
  48. package/skills/cm-content-factory/landing/docs/content/openspace.md +27 -0
  49. package/skills/cm-content-factory/landing/docs/content/openviking.md +33 -0
  50. package/skills/cm-content-factory/landing/docs/content/use-cases.md +26 -0
  51. package/skills/cm-content-factory/landing/docs/content/v5-intro.md +28 -0
  52. package/skills/cm-content-factory/landing/docs/index.html +240 -0
  53. package/skills/cm-content-factory/landing/index.html +99 -99
  54. package/skills/cm-content-factory/landing/script.js +42 -0
  55. package/skills/cm-content-factory/landing/translations.js +400 -400
  56. package/skills/cm-continuity/SKILL.md +33 -6
  57. package/skills/cm-design-studio/SKILL.md +30 -0
  58. package/skills/cm-ecosystem-roadmap/SKILL.md +11 -0
  59. package/skills/cm-engineering-meta/SKILL.md +69 -0
  60. package/skills/cm-growth-hacking/SKILL.md +1 -12
  61. package/skills/cm-guardian-runtime/SKILL.md +22 -0
  62. package/skills/cm-mcp-engineering/SKILL.md +18 -0
  63. package/skills/cm-notebooklm/SKILL.md +1 -17
  64. package/skills/cm-post-deploy-canary/SKILL.md +18 -0
  65. package/skills/cm-qa-visual-cli/SKILL.md +18 -0
  66. package/skills/cm-retro-cli/SKILL.md +19 -0
  67. package/skills/cm-second-opinion-cli/SKILL.md +19 -0
  68. package/skills/cm-secret-shield/SKILL.md +2 -2
  69. package/skills/cm-sprint-bus/SKILL.md +29 -0
  70. package/skills/cm-start/SKILL.md +11 -2
  71. package/skills/cm-tdd/SKILL.md +61 -74
  72. package/skills/profiles/README.md +21 -0
  73. package/skills/profiles/core.txt +23 -0
  74. package/skills/profiles/design.txt +6 -0
  75. package/skills/profiles/full.txt +58 -0
  76. package/skills/profiles/growth.txt +10 -0
  77. package/skills/profiles/knowledge.txt +7 -0
  78. package/scripts/test-gemini.js +0 -13
  79. package/skills/cm-frappe-agent/SKILL.md +0 -134
  80. package/skills/cm-frappe-agent/agents/doctype-architect.md +0 -596
  81. package/skills/cm-frappe-agent/agents/erpnext-customizer.md +0 -643
  82. package/skills/cm-frappe-agent/agents/frappe-backend.md +0 -814
  83. package/skills/cm-frappe-agent/agents/frappe-custom-frontend.md +0 -557
  84. package/skills/cm-frappe-agent/agents/frappe-debugger.md +0 -625
  85. package/skills/cm-frappe-agent/agents/frappe-fixer.md +0 -275
  86. package/skills/cm-frappe-agent/agents/frappe-frontend.md +0 -660
  87. package/skills/cm-frappe-agent/agents/frappe-installer.md +0 -158
  88. package/skills/cm-frappe-agent/agents/frappe-performance.md +0 -307
  89. package/skills/cm-frappe-agent/agents/frappe-planner.md +0 -419
  90. package/skills/cm-frappe-agent/agents/frappe-remote-ops.md +0 -153
  91. package/skills/cm-frappe-agent/agents/github-workflow.md +0 -286
  92. package/skills/cm-frappe-agent/commands/frappe-app.md +0 -351
  93. package/skills/cm-frappe-agent/commands/frappe-backend.md +0 -162
  94. package/skills/cm-frappe-agent/commands/frappe-bench.md +0 -254
  95. package/skills/cm-frappe-agent/commands/frappe-debug.md +0 -263
  96. package/skills/cm-frappe-agent/commands/frappe-doctype-create.md +0 -272
  97. package/skills/cm-frappe-agent/commands/frappe-doctype-field.md +0 -310
  98. package/skills/cm-frappe-agent/commands/frappe-erpnext.md +0 -210
  99. package/skills/cm-frappe-agent/commands/frappe-fix.md +0 -59
  100. package/skills/cm-frappe-agent/commands/frappe-frontend.md +0 -210
  101. package/skills/cm-frappe-agent/commands/frappe-fullstack.md +0 -243
  102. package/skills/cm-frappe-agent/commands/frappe-github.md +0 -57
  103. package/skills/cm-frappe-agent/commands/frappe-install.md +0 -52
  104. package/skills/cm-frappe-agent/commands/frappe-plan.md +0 -442
  105. package/skills/cm-frappe-agent/commands/frappe-remote.md +0 -58
  106. package/skills/cm-frappe-agent/commands/frappe-test.md +0 -356
  107. package/skills/cm-frappe-agent/docs/README.md +0 -51
  108. package/skills/cm-frappe-agent/docs/agents-catalog.md +0 -113
  109. package/skills/cm-frappe-agent/docs/architecture.md +0 -149
  110. package/skills/cm-frappe-agent/docs/commands-catalog.md +0 -82
  111. package/skills/cm-frappe-agent/docs/resources-catalog.md +0 -66
  112. package/skills/cm-frappe-agent/docs/sitemap-urls.txt +0 -52
  113. package/skills/cm-frappe-agent/docs/sitemap.md +0 -81
  114. package/skills/cm-frappe-agent/docs/sop/user-guide.md +0 -178
  115. package/skills/cm-frappe-agent/docs/sop/vibe-coding-guide.md +0 -122
  116. package/skills/cm-frappe-agent/resources/7-layer-architecture.md +0 -985
  117. package/skills/cm-frappe-agent/resources/bench_commands.md +0 -73
  118. package/skills/cm-frappe-agent/resources/code-patterns-guide.md +0 -948
  119. package/skills/cm-frappe-agent/resources/common_pitfalls.md +0 -266
  120. package/skills/cm-frappe-agent/resources/doctype-registry.md +0 -158
  121. package/skills/cm-frappe-agent/resources/installation-guide.md +0 -289
  122. package/skills/cm-frappe-agent/resources/rest-api-patterns.md +0 -182
  123. package/skills/cm-frappe-agent/resources/scaffold_checklist.md +0 -82
  124. package/skills/cm-frappe-agent/resources/upgrade_patterns.md +0 -113
  125. package/skills/cm-frappe-agent/resources/web-form-patterns.md +0 -252
  126. package/skills/cm-frappe-agent/skills/bench-commands/SKILL.md +0 -621
  127. package/skills/cm-frappe-agent/skills/client-scripts/SKILL.md +0 -642
  128. package/skills/cm-frappe-agent/skills/doctype-patterns/SKILL.md +0 -576
  129. package/skills/cm-frappe-agent/skills/frappe-api/SKILL.md +0 -740
  130. package/skills/cm-frappe-agent/skills/remote-operations/SKILL.md +0 -47
  131. package/skills/cm-frappe-agent/skills/server-scripts/SKILL.md +0 -608
  132. package/skills/cm-frappe-agent/skills/web-forms/SKILL.md +0 -46
  133. package/skills/frappe-app-builder.zip +0 -0
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ /**
3
+ * Validate skill pack layout for future `cm install` / `cm distro` (ADR 003).
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.validateSkillPackDir = validateSkillPackDir;
10
+ const fs_1 = __importDefault(require("fs"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const META_KEYS = ['name', 'description'];
13
+ function validateSkillPackDir(dir) {
14
+ const errors = [];
15
+ const warnings = [];
16
+ const abs = path_1.default.resolve(dir);
17
+ if (!fs_1.default.existsSync(abs) || !fs_1.default.statSync(abs).isDirectory()) {
18
+ return { ok: false, errors: [`Not a directory: ${abs}`], warnings: [] };
19
+ }
20
+ const skillMd = path_1.default.join(abs, 'SKILL.md');
21
+ const tmpl = path_1.default.join(abs, 'SKILL.md.tmpl');
22
+ const metaPath = path_1.default.join(abs, 'meta.json');
23
+ if (!fs_1.default.existsSync(skillMd) && !fs_1.default.existsSync(tmpl)) {
24
+ errors.push('Missing SKILL.md or SKILL.md.tmpl');
25
+ }
26
+ if (fs_1.default.existsSync(metaPath)) {
27
+ let raw;
28
+ try {
29
+ raw = JSON.parse(fs_1.default.readFileSync(metaPath, 'utf8'));
30
+ }
31
+ catch (_a) {
32
+ errors.push('meta.json is not valid JSON');
33
+ return { ok: errors.length === 0, errors, warnings };
34
+ }
35
+ if (raw === null || typeof raw !== 'object' || Array.isArray(raw)) {
36
+ errors.push('meta.json must be a JSON object');
37
+ }
38
+ else {
39
+ const o = raw;
40
+ for (const k of META_KEYS) {
41
+ if (typeof o[k] !== 'string' || !o[k].trim()) {
42
+ errors.push(`meta.json missing or invalid string field: ${k}`);
43
+ }
44
+ }
45
+ }
46
+ if (fs_1.default.existsSync(tmpl) && !fs_1.default.existsSync(skillMd)) {
47
+ warnings.push('SKILL.md.tmpl without generated SKILL.md — run npm run build:skills');
48
+ }
49
+ }
50
+ else if (fs_1.default.existsSync(tmpl)) {
51
+ warnings.push('SKILL.md.tmpl present but no meta.json (optional for local-only skills)');
52
+ }
53
+ return { ok: errors.length === 0, errors, warnings };
54
+ }
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ /**
3
+ * Runtime safety patterns for `cm guardian` (careful / freeze / guard style).
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.checkShellCommand = checkShellCommand;
10
+ exports.normalizeRoots = normalizeRoots;
11
+ exports.isPathUnderRoots = isPathUnderRoots;
12
+ exports.appendGuardianLog = appendGuardianLog;
13
+ const fs_1 = __importDefault(require("fs"));
14
+ const path_1 = __importDefault(require("path"));
15
+ const DESTRUCTIVE_PATTERNS = [
16
+ /\brm\s+(-[rfFR]+\s*)+.*(\/\s*$|\/\*|\s\/\s)/,
17
+ /\brm\s+-rf\b/i,
18
+ /\bmkfs\./,
19
+ /\bdd\s+if=/,
20
+ />\s*\/dev\/sd/,
21
+ /\bDROP\s+DATABASE\b/i,
22
+ /\bDROP\s+TABLE\b/i,
23
+ /\bTRUNCATE\s+TABLE\b/i,
24
+ /\bgit\s+push\s+.*--force/i,
25
+ /\bgit\s+push\s+-f\b/,
26
+ /\bgit\s+reset\s+--hard\b/,
27
+ /\bgit\s+clean\s+-fdx\b/,
28
+ /\bcurl\s+.*\|\s*(ba)?sh\b/i,
29
+ /\bwget\s+.*\|\s*(ba)?sh\b/i,
30
+ /\bmysqladmin\s+drop\b/i,
31
+ /\bredis-cli\s+.*FLUSHALL/i,
32
+ ];
33
+ const DEFAULT_WHITELIST_PREFIXES = ['npm run build', 'npm test', 'npm run test', 'npx vitest'];
34
+ function checkShellCommand(cmd, options) {
35
+ var _a;
36
+ const trimmed = cmd.trim();
37
+ if (!trimmed)
38
+ return { safe: true };
39
+ const whitelist = [...DEFAULT_WHITELIST_PREFIXES, ...((_a = options === null || options === void 0 ? void 0 : options.extraWhitelist) !== null && _a !== void 0 ? _a : [])];
40
+ for (const w of whitelist) {
41
+ if (trimmed.startsWith(w))
42
+ return { safe: true };
43
+ }
44
+ for (const re of DESTRUCTIVE_PATTERNS) {
45
+ if (re.test(trimmed)) {
46
+ return {
47
+ safe: false,
48
+ reason: 'Command matches a destructive pattern. Confirm intent or use a safer alternative.',
49
+ matchedPattern: re.source,
50
+ };
51
+ }
52
+ }
53
+ return { safe: true };
54
+ }
55
+ function normalizeRoots(cwd, roots) {
56
+ return roots.map((r) => path_1.default.resolve(cwd, r));
57
+ }
58
+ /** Returns true if `targetPath` is under one of `roots` (after resolve). */
59
+ function isPathUnderRoots(targetPath, roots) {
60
+ const abs = path_1.default.resolve(targetPath);
61
+ for (const root of roots) {
62
+ const r = path_1.default.resolve(root);
63
+ if (abs === r || abs.startsWith(r + path_1.default.sep))
64
+ return true;
65
+ }
66
+ return false;
67
+ }
68
+ function appendGuardianLog(projectPath, line) {
69
+ const dir = path_1.default.join(projectPath, '.cm');
70
+ if (!fs_1.default.existsSync(dir))
71
+ fs_1.default.mkdirSync(dir, { recursive: true });
72
+ const logPath = path_1.default.join(dir, 'guardian.log');
73
+ fs_1.default.appendFileSync(logPath, `[${new Date().toISOString()}] ${line}\n`, 'utf8');
74
+ }