codymaster 4.6.0 → 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 (127) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/README.md +80 -30
  3. package/dist/browse-server.js +251 -0
  4. package/dist/cli/command-registry.js +26 -0
  5. package/dist/cli/commands/agent.js +120 -0
  6. package/dist/cli/commands/dashboard.js +93 -0
  7. package/dist/cli/commands/design-studio.js +111 -0
  8. package/dist/cli/commands/distro.js +25 -0
  9. package/dist/cli/commands/engineering.js +488 -0
  10. package/dist/cli/commands/project.js +324 -0
  11. package/dist/cli/commands/skill-chain.js +269 -0
  12. package/dist/cli/commands/system.js +89 -0
  13. package/dist/cli/commands/task.js +254 -0
  14. package/dist/cli/update-check.js +83 -0
  15. package/dist/cm-config.js +110 -0
  16. package/dist/cm-suggest.js +77 -0
  17. package/dist/distro-validate.js +54 -0
  18. package/dist/guardian-core.js +74 -0
  19. package/dist/index.js +36 -2759
  20. package/dist/mcp-context-server.js +60 -1
  21. package/dist/mcp-skills-tools.js +81 -0
  22. package/dist/retro-summary.js +70 -0
  23. package/dist/second-opinion-providers.js +79 -0
  24. package/dist/sprint-pipeline.js +228 -0
  25. package/dist/storage-backend.js +5 -60
  26. package/dist/utils/cli-utils.js +76 -0
  27. package/dist/utils/skill-utils.js +32 -0
  28. package/install.sh +274 -50
  29. package/package.json +16 -5
  30. package/scripts/build-skills.mjs +51 -0
  31. package/scripts/gate-0-repo-hygiene.js +75 -0
  32. package/scripts/postinstall.js +55 -0
  33. package/scripts/security-scan.js +1 -1
  34. package/scripts/validate-skills.mjs +42 -0
  35. package/scripts/viking-demo.ts +105 -0
  36. package/skills/CLAUDE.md +2 -2
  37. package/skills/cm-ads-tracker/SKILL.md +3 -6
  38. package/skills/cm-browse/SKILL.md +28 -0
  39. package/skills/cm-conductor-worktrees/SKILL.md +24 -0
  40. package/skills/cm-content-factory/SKILL.md +1 -1
  41. package/skills/cm-content-factory/landing/docs/content/changelog.md +36 -0
  42. package/skills/cm-content-factory/landing/docs/content/deployment.md +46 -0
  43. package/skills/cm-content-factory/landing/docs/content/execution-flow.md +67 -0
  44. package/skills/cm-content-factory/landing/docs/content/openspace.md +27 -0
  45. package/skills/cm-content-factory/landing/docs/content/openviking.md +33 -0
  46. package/skills/cm-content-factory/landing/docs/content/use-cases.md +26 -0
  47. package/skills/cm-content-factory/landing/docs/content/v5-intro.md +28 -0
  48. package/skills/cm-content-factory/landing/docs/index.html +240 -0
  49. package/skills/cm-content-factory/landing/index.html +99 -99
  50. package/skills/cm-content-factory/landing/script.js +42 -0
  51. package/skills/cm-content-factory/landing/translations.js +400 -400
  52. package/skills/cm-design-studio/SKILL.md +30 -0
  53. package/skills/cm-ecosystem-roadmap/SKILL.md +11 -0
  54. package/skills/cm-engineering-meta/SKILL.md +69 -0
  55. package/skills/cm-growth-hacking/SKILL.md +1 -12
  56. package/skills/cm-guardian-runtime/SKILL.md +22 -0
  57. package/skills/cm-mcp-engineering/SKILL.md +18 -0
  58. package/skills/cm-notebooklm/SKILL.md +1 -17
  59. package/skills/cm-post-deploy-canary/SKILL.md +18 -0
  60. package/skills/cm-qa-visual-cli/SKILL.md +18 -0
  61. package/skills/cm-retro-cli/SKILL.md +19 -0
  62. package/skills/cm-second-opinion-cli/SKILL.md +19 -0
  63. package/skills/cm-secret-shield/SKILL.md +2 -2
  64. package/skills/cm-sprint-bus/SKILL.md +29 -0
  65. package/skills/cm-tdd/SKILL.md +61 -74
  66. package/skills/profiles/README.md +21 -0
  67. package/skills/profiles/core.txt +23 -0
  68. package/skills/profiles/design.txt +6 -0
  69. package/skills/profiles/full.txt +58 -0
  70. package/skills/profiles/growth.txt +10 -0
  71. package/skills/profiles/knowledge.txt +7 -0
  72. package/scripts/test-gemini.js +0 -13
  73. package/skills/cm-frappe-agent/SKILL.md +0 -134
  74. package/skills/cm-frappe-agent/agents/doctype-architect.md +0 -596
  75. package/skills/cm-frappe-agent/agents/erpnext-customizer.md +0 -643
  76. package/skills/cm-frappe-agent/agents/frappe-backend.md +0 -814
  77. package/skills/cm-frappe-agent/agents/frappe-custom-frontend.md +0 -557
  78. package/skills/cm-frappe-agent/agents/frappe-debugger.md +0 -625
  79. package/skills/cm-frappe-agent/agents/frappe-fixer.md +0 -275
  80. package/skills/cm-frappe-agent/agents/frappe-frontend.md +0 -660
  81. package/skills/cm-frappe-agent/agents/frappe-installer.md +0 -158
  82. package/skills/cm-frappe-agent/agents/frappe-performance.md +0 -307
  83. package/skills/cm-frappe-agent/agents/frappe-planner.md +0 -419
  84. package/skills/cm-frappe-agent/agents/frappe-remote-ops.md +0 -153
  85. package/skills/cm-frappe-agent/agents/github-workflow.md +0 -286
  86. package/skills/cm-frappe-agent/commands/frappe-app.md +0 -351
  87. package/skills/cm-frappe-agent/commands/frappe-backend.md +0 -162
  88. package/skills/cm-frappe-agent/commands/frappe-bench.md +0 -254
  89. package/skills/cm-frappe-agent/commands/frappe-debug.md +0 -263
  90. package/skills/cm-frappe-agent/commands/frappe-doctype-create.md +0 -272
  91. package/skills/cm-frappe-agent/commands/frappe-doctype-field.md +0 -310
  92. package/skills/cm-frappe-agent/commands/frappe-erpnext.md +0 -210
  93. package/skills/cm-frappe-agent/commands/frappe-fix.md +0 -59
  94. package/skills/cm-frappe-agent/commands/frappe-frontend.md +0 -210
  95. package/skills/cm-frappe-agent/commands/frappe-fullstack.md +0 -243
  96. package/skills/cm-frappe-agent/commands/frappe-github.md +0 -57
  97. package/skills/cm-frappe-agent/commands/frappe-install.md +0 -52
  98. package/skills/cm-frappe-agent/commands/frappe-plan.md +0 -442
  99. package/skills/cm-frappe-agent/commands/frappe-remote.md +0 -58
  100. package/skills/cm-frappe-agent/commands/frappe-test.md +0 -356
  101. package/skills/cm-frappe-agent/docs/README.md +0 -51
  102. package/skills/cm-frappe-agent/docs/agents-catalog.md +0 -113
  103. package/skills/cm-frappe-agent/docs/architecture.md +0 -149
  104. package/skills/cm-frappe-agent/docs/commands-catalog.md +0 -82
  105. package/skills/cm-frappe-agent/docs/resources-catalog.md +0 -66
  106. package/skills/cm-frappe-agent/docs/sitemap-urls.txt +0 -52
  107. package/skills/cm-frappe-agent/docs/sitemap.md +0 -81
  108. package/skills/cm-frappe-agent/docs/sop/user-guide.md +0 -178
  109. package/skills/cm-frappe-agent/docs/sop/vibe-coding-guide.md +0 -122
  110. package/skills/cm-frappe-agent/resources/7-layer-architecture.md +0 -985
  111. package/skills/cm-frappe-agent/resources/bench_commands.md +0 -73
  112. package/skills/cm-frappe-agent/resources/code-patterns-guide.md +0 -948
  113. package/skills/cm-frappe-agent/resources/common_pitfalls.md +0 -266
  114. package/skills/cm-frappe-agent/resources/doctype-registry.md +0 -158
  115. package/skills/cm-frappe-agent/resources/installation-guide.md +0 -289
  116. package/skills/cm-frappe-agent/resources/rest-api-patterns.md +0 -182
  117. package/skills/cm-frappe-agent/resources/scaffold_checklist.md +0 -82
  118. package/skills/cm-frappe-agent/resources/upgrade_patterns.md +0 -113
  119. package/skills/cm-frappe-agent/resources/web-form-patterns.md +0 -252
  120. package/skills/cm-frappe-agent/skills/bench-commands/SKILL.md +0 -621
  121. package/skills/cm-frappe-agent/skills/client-scripts/SKILL.md +0 -642
  122. package/skills/cm-frappe-agent/skills/doctype-patterns/SKILL.md +0 -576
  123. package/skills/cm-frappe-agent/skills/frappe-api/SKILL.md +0 -740
  124. package/skills/cm-frappe-agent/skills/remote-operations/SKILL.md +0 -47
  125. package/skills/cm-frappe-agent/skills/server-scripts/SKILL.md +0 -608
  126. package/skills/cm-frappe-agent/skills/web-forms/SKILL.md +0 -46
  127. package/skills/frappe-app-builder.zip +0 -0
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerDashboardCommands = registerDashboardCommands;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const dashboard_1 = require("../../dashboard");
9
+ const data_1 = require("../../data");
10
+ const theme_1 = require("../../ui/theme");
11
+ const box_1 = require("../../ui/box");
12
+ const cli_utils_1 = require("../../utils/cli-utils");
13
+ function registerDashboardCommands(program) {
14
+ program
15
+ .command('dashboard [cmd]')
16
+ .alias('dash')
17
+ .description('Dashboard server (start|stop|status|open)')
18
+ .option('-p, --port <port>', 'Port number', String(data_1.DEFAULT_PORT))
19
+ .action((cmd, opts) => {
20
+ const port = parseInt(opts.port) || data_1.DEFAULT_PORT;
21
+ switch (cmd) {
22
+ case 'start':
23
+ case undefined:
24
+ if (isDashboardRunning()) {
25
+ console.log((0, box_1.renderResult)('warning', 'Dashboard already running.', [`${(0, theme_1.dim)('URL:')} ${(0, theme_1.brand)(`http://localhost:${port}`)}`]));
26
+ return;
27
+ }
28
+ (0, dashboard_1.launchDashboard)(port);
29
+ break;
30
+ case 'stop':
31
+ stopDashboard();
32
+ break;
33
+ case 'status':
34
+ dashboardStatus(port);
35
+ break;
36
+ case 'open':
37
+ console.log((0, box_1.renderResult)('info', `Opening http://localhost:${port} ...`));
38
+ (0, cli_utils_1.openUrl)(`http://localhost:${port}`);
39
+ break;
40
+ case 'url':
41
+ console.log(`http://localhost:${port}`);
42
+ break;
43
+ default: console.log((0, box_1.renderResult)('error', `Unknown: ${cmd}`, [(0, theme_1.dim)('Available: start, stop, status, open, url')]));
44
+ }
45
+ });
46
+ }
47
+ function isDashboardRunning() {
48
+ try {
49
+ if (!fs_1.default.existsSync(data_1.PID_FILE))
50
+ return false;
51
+ const pid = parseInt(fs_1.default.readFileSync(data_1.PID_FILE, 'utf-8').trim());
52
+ process.kill(pid, 0);
53
+ return true;
54
+ }
55
+ catch (_a) {
56
+ try {
57
+ fs_1.default.unlinkSync(data_1.PID_FILE);
58
+ }
59
+ catch (_b) { }
60
+ return false;
61
+ }
62
+ }
63
+ function stopDashboard() {
64
+ try {
65
+ if (!fs_1.default.existsSync(data_1.PID_FILE)) {
66
+ console.log((0, box_1.renderResult)('warning', 'No dashboard running.'));
67
+ return;
68
+ }
69
+ const pid = parseInt(fs_1.default.readFileSync(data_1.PID_FILE, 'utf-8').trim());
70
+ process.kill(pid, 'SIGTERM');
71
+ try {
72
+ fs_1.default.unlinkSync(data_1.PID_FILE);
73
+ }
74
+ catch (_a) { }
75
+ console.log((0, box_1.renderResult)('success', `Dashboard stopped (PID ${pid}).`));
76
+ }
77
+ catch (err) {
78
+ console.log((0, box_1.renderResult)('error', `Failed to stop: ${err.message}`));
79
+ try {
80
+ fs_1.default.unlinkSync(data_1.PID_FILE);
81
+ }
82
+ catch (_b) { }
83
+ }
84
+ }
85
+ function dashboardStatus(port) {
86
+ if (isDashboardRunning()) {
87
+ const pid = fs_1.default.readFileSync(data_1.PID_FILE, 'utf-8').trim();
88
+ console.log((0, box_1.renderResult)('success', 'Dashboard RUNNING', [`${(0, theme_1.dim)('PID:')} ${(0, theme_1.brand)(pid)}`, `${(0, theme_1.dim)('URL:')} ${(0, theme_1.brand)(`http://localhost:${port}`)}`]));
89
+ }
90
+ else {
91
+ console.log((0, box_1.renderResult)('warning', 'Dashboard NOT running', [(0, theme_1.dim)('Start with: cm dashboard start')]));
92
+ }
93
+ }
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.initDesignStudioArtifacts = initDesignStudioArtifacts;
7
+ exports.registerDesignStudioCommands = registerDesignStudioCommands;
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ function projectPath(opt) {
12
+ return path_1.default.resolve(opt || process.cwd());
13
+ }
14
+ const CHECKLIST = `# Design studio — checklist
15
+
16
+ - [ ] Problem / JTBD one-liner
17
+ - [ ] 2–3 UI variants named (A/B/C)
18
+ - [ ] Chosen variant + rationale
19
+ - [ ] Handoff block filled in HANDOFF.md
20
+ `;
21
+ const VARIANTS = `# Variants
22
+
23
+ | Id | Name | Notes |
24
+ |----|------|-------|
25
+ | A | | |
26
+ | B | | |
27
+ | C | | |
28
+ `;
29
+ const HANDOFF = `# Handoff to implementation
30
+
31
+ **Chosen variant:** (A/B/C)
32
+
33
+ **Screens / flows:**
34
+
35
+ **Tokens / components to reuse:**
36
+
37
+ **Out of scope:**
38
+
39
+ **Agent prompt stub:**
40
+
41
+ \`\`\`
42
+ Implement the chosen variant using existing design system tokens. …
43
+ \`\`\`
44
+ `;
45
+ const README = `# .cm/design-studio
46
+
47
+ Local artifact folder for **cm-design-studio**: variants, checklist, handoff.
48
+
49
+ Happy path:
50
+
51
+ 1. \`cm design-studio init\`
52
+ 2. Edit CHECKLIST.md + VARIANTS.md
53
+ 3. Fill HANDOFF.md, then run your build skill (e.g. cm-execution) with that stub.
54
+ `;
55
+ /** Writes default artifact files; skips paths that already exist. Returns created + skipped counts. */
56
+ function initDesignStudioArtifacts(root) {
57
+ const base = path_1.default.join(root, '.cm', 'design-studio');
58
+ fs_1.default.mkdirSync(base, { recursive: true });
59
+ const files = [
60
+ ['README.md', README],
61
+ ['CHECKLIST.md', CHECKLIST],
62
+ ['VARIANTS.md', VARIANTS],
63
+ ['HANDOFF.md', HANDOFF],
64
+ ];
65
+ let created = 0;
66
+ let skipped = 0;
67
+ for (const [name, body] of files) {
68
+ const p = path_1.default.join(base, name);
69
+ if (fs_1.default.existsSync(p)) {
70
+ skipped++;
71
+ }
72
+ else {
73
+ fs_1.default.writeFileSync(p, body, 'utf8');
74
+ created++;
75
+ }
76
+ }
77
+ return { created, skipped };
78
+ }
79
+ function registerDesignStudioCommands(program) {
80
+ const ds = program
81
+ .command('design-studio')
82
+ .description('Design variant workspace under .cm/design-studio');
83
+ ds.command('init')
84
+ .description('Create .cm/design-studio with checklist and handoff templates')
85
+ .option('--project <dir>', 'project root', process.cwd())
86
+ .action((opts) => {
87
+ const root = projectPath(opts.project);
88
+ const { created, skipped } = initDesignStudioArtifacts(root);
89
+ const base = path_1.default.join(root, '.cm', 'design-studio');
90
+ if (created)
91
+ console.log(chalk_1.default.green(`wrote ${created} file(s) under`), base);
92
+ if (skipped)
93
+ console.log(chalk_1.default.yellow(`skipped ${skipped} existing`));
94
+ });
95
+ ds.command('status')
96
+ .description('List design-studio artifact files if present')
97
+ .option('--project <dir>', 'project root', process.cwd())
98
+ .action((opts) => {
99
+ const root = projectPath(opts.project);
100
+ const base = path_1.default.join(root, '.cm', 'design-studio');
101
+ if (!fs_1.default.existsSync(base)) {
102
+ console.log(chalk_1.default.yellow('Not initialized. Run:'), chalk_1.default.cyan('cm design-studio init'));
103
+ return;
104
+ }
105
+ for (const f of fs_1.default.readdirSync(base)) {
106
+ const p = path_1.default.join(base, f);
107
+ const st = fs_1.default.statSync(p);
108
+ console.log(st.isDirectory() ? `${f}/` : f);
109
+ }
110
+ });
111
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerDistroCommands = registerDistroCommands;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const distro_validate_1 = require("../../distro-validate");
9
+ function registerDistroCommands(program) {
10
+ const distro = program.command('distro').description('Skill pack validation (ecosystem roadmap)');
11
+ distro
12
+ .command('validate')
13
+ .description('Validate a skill directory (SKILL.md / tmpl + optional meta.json)')
14
+ .argument('<dir>', 'path to skill folder')
15
+ .action((dir) => {
16
+ const r = (0, distro_validate_1.validateSkillPackDir)(dir);
17
+ for (const w of r.warnings)
18
+ console.log(chalk_1.default.yellow('warning:'), w);
19
+ for (const e of r.errors)
20
+ console.error(chalk_1.default.red('error:'), e);
21
+ if (!r.ok)
22
+ process.exit(1);
23
+ console.log(chalk_1.default.green('OK'), dir);
24
+ });
25
+ }