@modus-ai/modus 0.2.11 → 0.3.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 (98) hide show
  1. package/dist/cli/index.js +2 -0
  2. package/dist/cli/index.js.map +1 -1
  3. package/dist/commands/doctor.d.ts.map +1 -1
  4. package/dist/commands/doctor.js +8 -3
  5. package/dist/commands/doctor.js.map +1 -1
  6. package/dist/commands/init.d.ts +37 -0
  7. package/dist/commands/init.d.ts.map +1 -1
  8. package/dist/commands/init.js +215 -0
  9. package/dist/commands/init.js.map +1 -1
  10. package/dist/commands/status.d.ts.map +1 -1
  11. package/dist/commands/status.js +9 -3
  12. package/dist/commands/status.js.map +1 -1
  13. package/dist/generators/claude.d.ts +4 -2
  14. package/dist/generators/claude.d.ts.map +1 -1
  15. package/dist/generators/claude.js +17 -8
  16. package/dist/generators/claude.js.map +1 -1
  17. package/dist/generators/codebuddy.d.ts.map +1 -1
  18. package/dist/generators/codebuddy.js +5 -1
  19. package/dist/generators/codebuddy.js.map +1 -1
  20. package/dist/generators/codex.d.ts.map +1 -1
  21. package/dist/generators/codex.js +4 -4
  22. package/dist/generators/codex.js.map +1 -1
  23. package/dist/generators/continue.d.ts +3 -2
  24. package/dist/generators/continue.d.ts.map +1 -1
  25. package/dist/generators/continue.js +11 -5
  26. package/dist/generators/continue.js.map +1 -1
  27. package/dist/generators/copilot.d.ts.map +1 -1
  28. package/dist/generators/copilot.js +3 -2
  29. package/dist/generators/copilot.js.map +1 -1
  30. package/dist/generators/cursor.d.ts +4 -3
  31. package/dist/generators/cursor.d.ts.map +1 -1
  32. package/dist/generators/cursor.js +15 -10
  33. package/dist/generators/cursor.js.map +1 -1
  34. package/dist/generators/custom.d.ts +2 -2
  35. package/dist/generators/custom.js +1 -1
  36. package/dist/generators/index.d.ts.map +1 -1
  37. package/dist/generators/index.js +7 -0
  38. package/dist/generators/index.js.map +1 -1
  39. package/dist/generators/modus.d.ts +12 -0
  40. package/dist/generators/modus.d.ts.map +1 -0
  41. package/dist/generators/modus.js +225 -0
  42. package/dist/generators/modus.js.map +1 -0
  43. package/package.json +1 -1
  44. package/schemas/harness-schema.yaml +13 -13
  45. package/templates/agents/modus-analyst.md +2 -2
  46. package/templates/agents/modus-deployer.md +1 -1
  47. package/templates/agents/modus-designer.md +1 -1
  48. package/templates/agents/modus-developer.md +1 -1
  49. package/templates/agents/modus-perf-auditor.md +1 -1
  50. package/templates/agents/modus-reviewer.md +1 -1
  51. package/templates/agents/modus-security-auditor.md +1 -1
  52. package/templates/agents/modus-skill-creator.md +1 -1
  53. package/templates/agents/modus-tester.md +1 -1
  54. package/templates/commands/auto.md +3 -1
  55. package/templates/commands/commit.md +11 -5
  56. package/templates/commands/cr.md +14 -10
  57. package/templates/commands/harness.md +27 -18
  58. package/templates/commands/init.md +56 -23
  59. package/templates/commands/modus.md +33 -11
  60. package/templates/commands/plan.md +23 -19
  61. package/templates/commands/spec.md +30 -17
  62. package/templates/commands/upgrade.md +50 -38
  63. package/templates/commands/vibe.md +30 -20
  64. package/templates/domain-business-readme.md +69 -0
  65. package/templates/domain-code/SKILL.md +94 -0
  66. package/templates/domain-code/apis.md +48 -0
  67. package/templates/domain-code/data-models.md +57 -0
  68. package/templates/domain-code/entities.md +45 -0
  69. package/templates/domain-code/services.md +51 -0
  70. package/templates/domain-history-readme.md +60 -0
  71. package/templates/domain-scenarios-readme.md +58 -0
  72. package/templates/knowledge-base-map.md +78 -0
  73. package/templates/knowledge-base-service-graph.md +100 -0
  74. package/templates/knowledge-catalog.md +38 -43
  75. package/templates/paths-v4.md +156 -0
  76. package/templates/rules/modus-workflow/RULE.mdc +45 -38
  77. package/templates/skills/modus-agents/analyst/SKILL.md +1 -1
  78. package/templates/skills/modus-agents/developer/SKILL.md +1 -1
  79. package/templates/skills/modus-agents/reviewer/SKILL.md +1 -1
  80. package/templates/skills/modus-agents/skill-creator/SKILL.md +3 -3
  81. package/templates/skills/modus-auto/SKILL.md +19 -19
  82. package/templates/skills/modus-cr/SKILL.md +1 -1
  83. package/templates/skills/modus-design-brief/SKILL.md +3 -3
  84. package/templates/skills/modus-harness/SKILL.md +5 -5
  85. package/templates/skills/modus-init/SKILL.md +64 -64
  86. package/templates/skills/modus-init/shared/frontmatter-spec.md +2 -2
  87. package/templates/skills/modus-init/shared/stack-detection.md +1 -1
  88. package/templates/skills/modus-init/strategies/fallback-init.md +1 -1
  89. package/templates/skills/modus-plan/SKILL.md +6 -6
  90. package/templates/skills/modus-platform/SKILL.md +1 -1
  91. package/templates/skills/modus-spec/SKILL.md +1 -1
  92. package/templates/skills/modus-vibe/SKILL.md +10 -10
  93. package/templates/template/analysis.md +83 -0
  94. package/templates/template/design.md +160 -0
  95. package/templates/template/pid.md +97 -0
  96. package/templates/template/plan.md +91 -0
  97. package/templates/template/spec.md +78 -0
  98. package/templates/template/sprint-contract.md +101 -0
@@ -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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"}
@@ -5,7 +5,7 @@ export interface BizSkillSync {
5
5
  enabled: boolean;
6
6
  /**
7
7
  * Output path template. Supports placeholders:
8
- * {domain} → business domain name (e.g. "biz-track")
8
+ * {domain} → business domain name (e.g. "track", "order"; v4 不再加 biz- 前缀)
9
9
  * {ext} → file extension (without dot, derived from fileExtension)
10
10
  */
11
11
  outputPath: string;
@@ -44,7 +44,7 @@ export declare function generateCustomPlatformFiles(projectRoot: string, config:
44
44
  /**
45
45
  * Sync a biz skill to all custom platforms that have bizSkill.enabled=true.
46
46
  * Called from the `/modus:init` SKILL.md flow after writing the canonical
47
- * `modus/knowledge/biz-{domain}/SKILL.md`.
47
+ * `modus/knowledge_base/domain/{domain}/code/SKILL.md` (v4.0 path).
48
48
  *
49
49
  * This resolves the "ongoing sync" pain point for custom platforms:
50
50
  * every time biz skills are updated, this function ensures custom platform
@@ -143,7 +143,7 @@ function buildDefaultConstitution(config, hardRules) {
143
143
  /**
144
144
  * Sync a biz skill to all custom platforms that have bizSkill.enabled=true.
145
145
  * Called from the `/modus:init` SKILL.md flow after writing the canonical
146
- * `modus/knowledge/biz-{domain}/SKILL.md`.
146
+ * `modus/knowledge_base/domain/{domain}/code/SKILL.md` (v4.0 path).
147
147
  *
148
148
  * This resolves the "ongoing sync" pain point for custom platforms:
149
149
  * every time biz skills are updated, this function ensures custom platform
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAO9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,IAAI,GAAE,eAAoB,GACzB,IAAI,CA0BN"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAO9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,IAAI,GAAE,eAAoB,GACzB,IAAI,CA6BN"}
@@ -1,5 +1,10 @@
1
1
  // Platform dispatcher — generates configuration files for all selected AI platforms.
2
2
  // Called by `modus init` and `modus update`; replaces direct calls to generateCodeBuddyFiles.
3
+ //
4
+ // v4.0: Always run the neutral-layer generator FIRST so `.modus/`, `modus/template/`,
5
+ // `modus/knowledge_base/` and `modus/artifacts/` are present before any platform stub
6
+ // is written. Platform stubs reference the neutral source via `<!-- modus:source ... -->`.
7
+ import { generateModusNeutralFiles } from './modus.js';
3
8
  import { generateCodeBuddyFiles } from './codebuddy.js';
4
9
  import { generateClaudeFiles } from './claude.js';
5
10
  import { generateCursorFiles } from './cursor.js';
@@ -13,6 +18,8 @@ import { generateCustomPlatformFiles } from './custom.js';
13
18
  * Defaults to ['codebuddy'] when the field is absent to preserve backward compat.
14
19
  */
15
20
  export function generateAllPlatformFiles(projectRoot, config, opts = {}) {
21
+ // v4.0: Neutral layer is the single source of truth — always emit first
22
+ generateModusNeutralFiles(projectRoot, config, opts);
16
23
  const platforms = config.platforms ?? ['codebuddy'];
17
24
  if (platforms.includes('codebuddy')) {
18
25
  generateCodeBuddyFiles(projectRoot, config, opts);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,8FAA8F;AAC9F,OAAO,EAAE,sBAAsB,EAAwB,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAK1D;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,WAAmB,EACnB,MAAmB,EACnB,OAAwB,EAAE;IAE1B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,CAAC;IAEpD,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACpC,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,uDAAuD;IACvD,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,2BAA2B,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,8FAA8F;AAC9F,EAAE;AACF,sFAAsF;AACtF,sFAAsF;AACtF,2FAA2F;AAC3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAwB,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAK1D;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,WAAmB,EACnB,MAAmB,EACnB,OAAwB,EAAE;IAE1B,wEAAwE;IACxE,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,CAAC;IAEpD,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACpC,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,uDAAuD;IACvD,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,2BAA2B,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ModusConfig } from '../utils/config.js';
2
+ import type { GenerateOptions } from './codebuddy.js';
3
+ export declare function generateModusNeutralFiles(projectRoot: string, _config: ModusConfig, _opts?: GenerateOptions): void;
4
+ /**
5
+ * Inject a `<!-- modus:source ... -->` header at the top of a markdown body
6
+ * so users know the authoritative source lives in `.modus/`.
7
+ *
8
+ * If the body already starts with YAML frontmatter (`---\n...\n---`), the
9
+ * header is inserted *after* the frontmatter to preserve frontmatter parsing.
10
+ */
11
+ export declare function injectNeutralSourceHeader(body: string, neutralPath: string): string;
12
+ //# sourceMappingURL=modus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modus.d.ts","sourceRoot":"","sources":["../../src/generators/modus.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AA0EtD,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,EACpB,KAAK,GAAE,eAAoB,GAC1B,IAAI,CAMN;AA4ID;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAanF"}
@@ -0,0 +1,225 @@
1
+ // Modus neutral-layer file generator (v4.0).
2
+ // Writes the platform-agnostic "single source of truth":
3
+ // - .modus/commands/*.md — full set of slash commands (authoritative)
4
+ // - .modus/skills/modus-*/ — framework skills (authoritative)
5
+ // - modus/template/*.md — artifact templates (pid/design/spec/plan/...)
6
+ // - modus/knowledge_base/ — knowledge base scaffolding (map.md, service-graph.md)
7
+ // - modus/artifacts/.gitkeep — empty artifacts dir for Story-scoped outputs
8
+ //
9
+ // Each platform generator (codebuddy/claude/cursor/...) reads its own template
10
+ // and writes a platform-native copy *plus* a `modus:source` header pointing
11
+ // back to this neutral source. This allows users to update knowledge in one
12
+ // place (.modus/) and have it propagate to platform stubs via `modus update`.
13
+ import fs from 'node:fs';
14
+ import path from 'node:path';
15
+ import { writeFile, readTemplate, ensureDir, copyTemplateDir } from '../utils/file-system.js';
16
+ // ---------------------------------------------------------------------------
17
+ // Output paths (relative to project root)
18
+ // ---------------------------------------------------------------------------
19
+ const NEUTRAL_COMMANDS_BASE = path.join('.modus', 'commands');
20
+ const NEUTRAL_SKILLS_BASE = path.join('.modus', 'skills');
21
+ const KB_BASE = path.join('modus', 'knowledge_base');
22
+ const KB_DOMAIN_BASE = path.join('modus', 'knowledge_base', 'domain');
23
+ const TEMPLATE_BASE = path.join('modus', 'template');
24
+ const ARTIFACTS_BASE = path.join('modus', 'artifacts');
25
+ // ---------------------------------------------------------------------------
26
+ // Roster (mirrors codebuddy.ts / continue.ts)
27
+ // ---------------------------------------------------------------------------
28
+ const FRAMEWORK_SKILLS = [
29
+ 'modus-init',
30
+ 'modus-vibe',
31
+ 'modus-plan',
32
+ 'modus-spec',
33
+ 'modus-auto',
34
+ 'modus-harness',
35
+ 'modus-platform',
36
+ 'modus-cr',
37
+ 'modus-skill-creator',
38
+ 'modus-analyst',
39
+ 'modus-developer',
40
+ 'modus-tester',
41
+ 'modus-perf-auditor',
42
+ 'modus-security-auditor',
43
+ 'modus-reviewer',
44
+ 'modus-deployer',
45
+ ];
46
+ const SKILL_TEMPLATE_MAP = {
47
+ 'modus-init': 'modus-init/SKILL.md',
48
+ 'modus-vibe': 'modus-vibe/SKILL.md',
49
+ 'modus-plan': 'modus-plan/SKILL.md',
50
+ 'modus-spec': 'modus-spec/SKILL.md',
51
+ 'modus-auto': 'modus-auto/SKILL.md',
52
+ 'modus-harness': 'modus-harness/SKILL.md',
53
+ 'modus-platform': 'modus-platform/SKILL.md',
54
+ 'modus-cr': 'modus-cr/SKILL.md',
55
+ 'modus-skill-creator': 'modus-agents/skill-creator/SKILL.md',
56
+ 'modus-analyst': 'modus-agents/analyst/SKILL.md',
57
+ 'modus-developer': 'modus-agents/developer/SKILL.md',
58
+ 'modus-tester': 'modus-agents/tester/SKILL.md',
59
+ 'modus-perf-auditor': 'modus-agents/perf-auditor/SKILL.md',
60
+ 'modus-security-auditor': 'modus-agents/security-auditor/SKILL.md',
61
+ 'modus-reviewer': 'modus-agents/reviewer/SKILL.md',
62
+ 'modus-deployer': 'modus-agents/deployer/SKILL.md',
63
+ };
64
+ const ALL_COMMAND_IDS = ['init', 'vibe', 'plan', 'spec', 'auto', 'harness', 'platform', 'cr', 'commit', 'upgrade'];
65
+ // 6 product templates (pid / design / spec / plan / analysis / sprint-contract)
66
+ const ARTIFACT_TEMPLATES = [
67
+ 'pid.md',
68
+ 'design.md',
69
+ 'spec.md',
70
+ 'plan.md',
71
+ 'analysis.md',
72
+ 'sprint-contract.md',
73
+ ];
74
+ // ---------------------------------------------------------------------------
75
+ // Main entry
76
+ // ---------------------------------------------------------------------------
77
+ export function generateModusNeutralFiles(projectRoot, _config, _opts = {}) {
78
+ generateNeutralCommands(projectRoot);
79
+ generateNeutralSkills(projectRoot);
80
+ generateArtifactTemplates(projectRoot);
81
+ generateKnowledgeBaseScaffolding(projectRoot);
82
+ generateArtifactsRoot(projectRoot);
83
+ }
84
+ // ---------------------------------------------------------------------------
85
+ // .modus/commands/*.md — authoritative command source
86
+ // ---------------------------------------------------------------------------
87
+ function generateNeutralCommands(projectRoot) {
88
+ // Root /modus command
89
+ try {
90
+ const rootContent = readTemplate('commands/modus.md');
91
+ writeFile(path.join(projectRoot, '.modus', 'commands', 'modus.md'), rootContent);
92
+ }
93
+ catch {
94
+ console.warn(' [warn] Root command template not found: commands/modus.md');
95
+ }
96
+ for (const cmdId of ALL_COMMAND_IDS) {
97
+ let content;
98
+ try {
99
+ content = readTemplate(`commands/${cmdId}.md`);
100
+ }
101
+ catch {
102
+ // Optional commands (commit/upgrade) may not exist in older trees — skip silently
103
+ continue;
104
+ }
105
+ writeFile(path.join(projectRoot, NEUTRAL_COMMANDS_BASE, `${cmdId}.md`), content);
106
+ }
107
+ }
108
+ // ---------------------------------------------------------------------------
109
+ // .modus/skills/modus-*/SKILL.md — authoritative framework skill source
110
+ // ---------------------------------------------------------------------------
111
+ function generateNeutralSkills(projectRoot) {
112
+ for (const skillId of FRAMEWORK_SKILLS) {
113
+ const templateRel = SKILL_TEMPLATE_MAP[skillId];
114
+ // modus-init has Router + Strategy + Shared sub-files; copy the whole dir.
115
+ if (skillId === 'modus-init') {
116
+ const destDir = path.join(projectRoot, NEUTRAL_SKILLS_BASE, skillId);
117
+ copyTemplateDir('skills/modus-init', destDir);
118
+ continue;
119
+ }
120
+ const templatePath = `skills/${templateRel}`;
121
+ let content;
122
+ try {
123
+ content = readTemplate(templatePath);
124
+ }
125
+ catch {
126
+ console.warn(` [warn] Template not found: ${templatePath}`);
127
+ continue;
128
+ }
129
+ const destPath = path.join(projectRoot, NEUTRAL_SKILLS_BASE, skillId, 'SKILL.md');
130
+ writeFile(destPath, content);
131
+ }
132
+ }
133
+ // ---------------------------------------------------------------------------
134
+ // modus/template/*.md — 6 artifact templates
135
+ // ---------------------------------------------------------------------------
136
+ function generateArtifactTemplates(projectRoot) {
137
+ for (const tplName of ARTIFACT_TEMPLATES) {
138
+ const templatePath = `template/${tplName}`;
139
+ let content;
140
+ try {
141
+ content = readTemplate(templatePath);
142
+ }
143
+ catch {
144
+ console.warn(` [warn] Artifact template not found: ${templatePath}`);
145
+ continue;
146
+ }
147
+ writeFile(path.join(projectRoot, TEMPLATE_BASE, tplName), content);
148
+ }
149
+ }
150
+ // ---------------------------------------------------------------------------
151
+ // modus/knowledge_base/ — scaffolding (map.md, service-graph.md, domain/)
152
+ // ---------------------------------------------------------------------------
153
+ function generateKnowledgeBaseScaffolding(projectRoot) {
154
+ // Knowledge base entry: map.md (replaces v3 knowledge-catalog.md)
155
+ const mapPath = path.join(projectRoot, KB_BASE, 'map.md');
156
+ if (!fs.existsSync(mapPath)) {
157
+ let mapContent = '';
158
+ try {
159
+ mapContent = readTemplate('knowledge-base-map.md');
160
+ }
161
+ catch {
162
+ mapContent = '# Knowledge Base Map\n\n> 等待 /modus:init 扫描代码生成。\n';
163
+ }
164
+ writeFile(mapPath, mapContent);
165
+ }
166
+ // Service graph (L0)
167
+ const sgPath = path.join(projectRoot, KB_BASE, 'service-graph.md');
168
+ if (!fs.existsSync(sgPath)) {
169
+ let sgContent = '';
170
+ try {
171
+ sgContent = readTemplate('knowledge-base-service-graph.md');
172
+ }
173
+ catch {
174
+ sgContent = '# Service Graph\n\n> 等待 /modus:init 扫描代码生成。\n';
175
+ }
176
+ writeFile(sgPath, sgContent);
177
+ }
178
+ // Empty domain/ root with placeholder
179
+ ensureDir(path.join(projectRoot, KB_DOMAIN_BASE));
180
+ const domainGitkeep = path.join(projectRoot, KB_DOMAIN_BASE, '.gitkeep');
181
+ if (!fs.existsSync(domainGitkeep)) {
182
+ writeFile(domainGitkeep, '# Modus v4.0 业务域知识根目录\n# 由 /modus:init 扫描代码后生成各业务域子目录。\n');
183
+ }
184
+ }
185
+ // ---------------------------------------------------------------------------
186
+ // modus/artifacts/ — Story-scoped artifacts root
187
+ // ---------------------------------------------------------------------------
188
+ function generateArtifactsRoot(projectRoot) {
189
+ ensureDir(path.join(projectRoot, ARTIFACTS_BASE));
190
+ const gitkeep = path.join(projectRoot, ARTIFACTS_BASE, '.gitkeep');
191
+ if (!fs.existsSync(gitkeep)) {
192
+ writeFile(gitkeep, [
193
+ '# Modus v4.0 产物目录(按 Story ID 隔离)',
194
+ '# 每个 Story 子目录包含:',
195
+ '# pid/ — 需求澄清产物',
196
+ '# design/ — 评估设计产物',
197
+ '# code/ — 编码实施产物(plan/spec/harness)',
198
+ '# archive/ — 上线归档(人工触发)',
199
+ '',
200
+ ].join('\n'));
201
+ }
202
+ }
203
+ // ---------------------------------------------------------------------------
204
+ // Header injection helper — used by other generators to mark platform stubs
205
+ // ---------------------------------------------------------------------------
206
+ /**
207
+ * Inject a `<!-- modus:source ... -->` header at the top of a markdown body
208
+ * so users know the authoritative source lives in `.modus/`.
209
+ *
210
+ * If the body already starts with YAML frontmatter (`---\n...\n---`), the
211
+ * header is inserted *after* the frontmatter to preserve frontmatter parsing.
212
+ */
213
+ export function injectNeutralSourceHeader(body, neutralPath) {
214
+ const header = `<!-- modus:source: ${neutralPath} (Modus v4.0 authoritative source — edit there to propagate) -->`;
215
+ // If body starts with frontmatter, insert after closing `---`
216
+ if (body.startsWith('---\n')) {
217
+ const endIdx = body.indexOf('\n---\n', 4);
218
+ if (endIdx !== -1) {
219
+ const fmEnd = endIdx + 5; // length of "\n---\n"
220
+ return body.slice(0, fmEnd) + header + '\n' + body.slice(fmEnd);
221
+ }
222
+ }
223
+ return header + '\n' + body;
224
+ }
225
+ //# sourceMappingURL=modus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modus.js","sourceRoot":"","sources":["../../src/generators/modus.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@modus-ai/modus",
3
- "version": "0.2.11",
3
+ "version": "0.3.0",
4
4
  "description": "Modus — Business-grounded AI coding accelerator for CodeBuddy IDE",
5
5
  "keywords": [
6
6
  "ai",
@@ -10,8 +10,8 @@ schema_version: "1.1" # HANDOFF 协议版本(见 docs/protocol.md)
10
10
 
11
11
  # 产物根目录(v3.2)
12
12
  directories:
13
- harness: "modus/stories/{story-id}/harness/"
14
- knowledge: "modus/knowledge/"
13
+ harness: "modus/artifacts/{story_id}/code/"
14
+ knowledge: "modus/knowledge_base/"
15
15
  sessions: "modus/sessions/"
16
16
 
17
17
  # SubAgent 清单(SA00~SA08,共 9 个)
@@ -24,8 +24,8 @@ subAgents:
24
24
  handoff_agent: "00-skills-builder"
25
25
  name: 知识注入/提取(Skills Builder)
26
26
  generates:
27
- - "Skill 文件(modus/knowledge/biz-*/SKILL.md)"
28
- - "modus/knowledge-catalog.md"
27
+ - "Skill 文件(modus/knowledge_base/domain/*/code/SKILL.md)"
28
+ - "modus/knowledge_base/map.md"
29
29
  requires: []
30
30
  loop: 1
31
31
  modes:
@@ -39,7 +39,7 @@ subAgents:
39
39
  skill: modus-harness-01-analysis
40
40
  handoff_agent: "01-analysis"
41
41
  name: 需求分析
42
- generates: ["modus/stories/{story-id}/harness/01-analysis.md"]
42
+ generates: ["modus/artifacts/{story_id}/pid/prd.md"]
43
43
  requires: ["00-INIT"]
44
44
  loop: 1
45
45
  gateAfter: A0 # Gate A0: 检查 01-analysis.md HANDOFF gate_status = "passed"
@@ -49,7 +49,7 @@ subAgents:
49
49
  skill: modus-harness-01-5-design
50
50
  handoff_agent: "02-design"
51
51
  name: 设计方案生成
52
- generates: ["modus/stories/{story-id}/harness/02-design-brief.md"]
52
+ generates: ["modus/artifacts/{story_id}/design/design.md"]
53
53
  requires: ["01"]
54
54
  loop: 1
55
55
  human_checkpoint: true # 架构决策确认 ⏸️ 人工交互节点
@@ -60,7 +60,7 @@ subAgents:
60
60
  skill: modus-harness-02-dev
61
61
  handoff_agent: "03-dev"
62
62
  name: 代码开发
63
- generates: ["modus/stories/{story-id}/harness/03-sprint-contract.md"]
63
+ generates: ["modus/artifacts/{story_id}/code/sprint-contract.md"]
64
64
  requires: ["02"]
65
65
  loop: 1
66
66
  gateAfter: A # Gate A: 执行 constitution.build_command,exit code = 0
@@ -70,7 +70,7 @@ subAgents:
70
70
  skill: modus-harness-03-test
71
71
  handoff_agent: "04-test"
72
72
  name: 代码测试(单元测试)
73
- generates: ["modus/stories/{story-id}/harness/04-test-report.md"]
73
+ generates: ["modus/artifacts/{story_id}/code/test-report.md"]
74
74
  requires: ["03"]
75
75
  loop: 1
76
76
  parallel: ["04", "05", "06"] # 与 SA05/SA06 并行执行
@@ -81,7 +81,7 @@ subAgents:
81
81
  skill: modus-harness-04-perf
82
82
  handoff_agent: "05-perf"
83
83
  name: 性能审计
84
- generates: ["modus/stories/{story-id}/harness/05-perf-report.md"]
84
+ generates: ["modus/artifacts/{story_id}/code/perf-report.md"]
85
85
  requires: ["03"]
86
86
  loop: 1
87
87
  parallel: ["04", "05", "06"]
@@ -92,7 +92,7 @@ subAgents:
92
92
  skill: modus-harness-05-security
93
93
  handoff_agent: "06-security"
94
94
  name: 安全审计
95
- generates: ["modus/stories/{story-id}/harness/06-security-report.md"]
95
+ generates: ["modus/artifacts/{story_id}/code/security-report.md"]
96
96
  requires: ["03"]
97
97
  loop: 1
98
98
  parallel: ["04", "05", "06"]
@@ -103,7 +103,7 @@ subAgents:
103
103
  skill: modus-harness-06-review
104
104
  handoff_agent: "07-review"
105
105
  name: 代码评审(CR)
106
- generates: ["modus/stories/{story-id}/harness/cr-report.md"]
106
+ generates: ["modus/artifacts/{story_id}/code/cr-report.md"]
107
107
  requires: ["04", "05", "06"] # Gate B 通过后触发
108
108
  loop: 1 # CR 在 Loop 1 执行;Loop 2 是对 SA03 的精准重入,非 CR 重跑
109
109
  gateAfter: C # Gate C: cr-report.md HANDOFF issues 为空或全为 P3
@@ -112,7 +112,7 @@ subAgents:
112
112
  skill: modus-harness-07-deploy
113
113
  handoff_agent: "08-deploy"
114
114
  name: 部署发布
115
- generates: ["modus/stories/{story-id}/harness/08-deploy-status.md"]
115
+ generates: ["modus/artifacts/{story_id}/code/deploy-status.md"]
116
116
  requires: ["07"] # Gate C 通过后触发
117
117
  loop: 1
118
118
  human_checkpoint: true # prd 环境等待人工确认
@@ -195,7 +195,7 @@ archive:
195
195
 
196
196
  # 断点续跑状态文件
197
197
  stateFile:
198
- path: "modus/stories/{story-id}/harness/.harness-state.yaml"
198
+ path: "modus/artifacts/{story_id}/code/.harness-state.yaml"
199
199
  fields:
200
200
  story_id: "string"
201
201
  loop: "integer(1 或 2)"
@@ -7,8 +7,8 @@ enabledAutoRun: true
7
7
  enabled: true
8
8
  ---
9
9
 
10
- 读取并严格遵循 `.codebuddy/skills/modus-analyst/SKILL.md` 中的执行规范。
10
+ 读取并严格遵循 `.modus/skills/modus-analyst/SKILL.md` 中的执行规范。
11
11
 
12
- 产出物路径:`modus/stories/{story-id}/harness/01-analysis.md`
12
+ 产出物路径:`modus/artifacts/{story_id}/pid/prd.md`(v4.0 路径;详见 `templates/paths-v4.md`)
13
13
 
14
14
  产出物头部必须包含 HANDOFF 块,包含 `agent`、`story_id`、`domains`、`risk_level`、`key_constraints`、`skill_refs`、`gate_status` 字段。
@@ -7,7 +7,7 @@ enabledAutoRun: false
7
7
  enabled: true
8
8
  ---
9
9
 
10
- 读取并严格遵循 `.codebuddy/skills/modus-deployer/SKILL.md` 中的执行规范。
10
+ 读取并严格遵循 `.modus/skills/modus-deployer/SKILL.md` 中的执行规范。
11
11
 
12
12
  输入依赖:`cr-report.md`(HANDOFF.gate_status = passed)+ `02-sprint-contract.md`。
13
13
 
@@ -4,7 +4,7 @@ SubAgent — 技术方案设计。
4
4
 
5
5
  ## Instructions
6
6
 
7
- Read and follow the skill at `.codebuddy/skills/modus-designer/SKILL.md` to execute this SubAgent.
7
+ Read and follow the skill at `.modus/skills/modus-designer/SKILL.md` to execute this SubAgent.
8
8
 
9
9
  ## Quick Summary
10
10
 
@@ -7,7 +7,7 @@ enabledAutoRun: true
7
7
  enabled: true
8
8
  ---
9
9
 
10
- 读取并严格遵循 `.codebuddy/skills/modus-developer/SKILL.md` 中的执行规范。
10
+ 读取并严格遵循 `.modus/skills/modus-developer/SKILL.md` 中的执行规范。
11
11
 
12
12
  输入依赖:`modus/plans/active/{story-id}/01-analysis.md` 的 HANDOFF 块 + 相关业务 Skill 内容(由 Orchestrator 传入)。
13
13
 
@@ -7,7 +7,7 @@ enabledAutoRun: true
7
7
  enabled: true
8
8
  ---
9
9
 
10
- 读取并严格遵循 `.codebuddy/skills/modus-perf-auditor/SKILL.md` 中的执行规范。
10
+ 读取并严格遵循 `.modus/skills/modus-perf-auditor/SKILL.md` 中的执行规范。
11
11
 
12
12
  输入依赖:`modus/plans/active/{story-id}/02-sprint-contract.md` 的 HANDOFF 块 + 代码变更文件。
13
13
 
@@ -7,7 +7,7 @@ enabledAutoRun: true
7
7
  enabled: true
8
8
  ---
9
9
 
10
- 读取并严格遵循 `.codebuddy/skills/modus-reviewer/SKILL.md` 中的执行规范。
10
+ 读取并严格遵循 `.modus/skills/modus-reviewer/SKILL.md` 中的执行规范。
11
11
 
12
12
  输入依赖:全部产出物(01-analysis.md 至 05-security-report.md)的 HANDOFF 块 + 代码变更。
13
13
 
@@ -7,7 +7,7 @@ enabledAutoRun: true
7
7
  enabled: true
8
8
  ---
9
9
 
10
- 读取并严格遵循 `.codebuddy/skills/modus-security-auditor/SKILL.md` 中的执行规范。
10
+ 读取并严格遵循 `.modus/skills/modus-security-auditor/SKILL.md` 中的执行规范。
11
11
 
12
12
  输入依赖:`modus/plans/active/{story-id}/02-sprint-contract.md` 的 HANDOFF 块 + 代码变更文件。
13
13
 
@@ -7,6 +7,6 @@ enabledAutoRun: true
7
7
  enabled: true
8
8
  ---
9
9
 
10
- 读取并严格遵循 `.codebuddy/skills/modus-skill-creator/SKILL.md` 中的执行规范和五种工作模式(A: 新建 Skill / B: 增量更新 / C: 知识回写 / D: Harness 归档提取 / E: 基础 Skill 初始化)。
10
+ 读取并严格遵循 `.modus/skills/modus-skill-creator/SKILL.md` 中的执行规范和五种工作模式(A: 新建 Skill / B: 增量更新 / C: 知识回写 / D: Harness 归档提取 / E: 基础 Skill 初始化)。
11
11
 
12
12
  调用方必须在 prompt 中明确指定工作模式(A/B/C/D/E)和目标业务域列表。
@@ -7,7 +7,7 @@ enabledAutoRun: true
7
7
  enabled: true
8
8
  ---
9
9
 
10
- 读取并严格遵循 `.codebuddy/skills/modus-tester/SKILL.md` 中的执行规范。
10
+ 读取并严格遵循 `.modus/skills/modus-tester/SKILL.md` 中的执行规范。
11
11
 
12
12
  输入依赖:`modus/plans/active/{story-id}/02-sprint-contract.md` 的 HANDOFF 块 + 代码变更文件。
13
13
 
@@ -2,6 +2,8 @@
2
2
 
3
3
  **用途:** 读取 TAPD Story,从四个维度(复杂度/风险/需求明确度/接口契约)进行评分,自动推荐最适合的 Modus 命令(vibe/plan/spec/harness),确认后自动启动。**不确定用哪个命令时,首选此命令。**
4
4
 
5
+ > **路径范式版本:v4.0**(详见 `templates/paths-v4.md`)
6
+
5
7
  ## 执行流程
6
8
 
7
9
  1. 接受 TAPD Story URL(或提示手动粘贴内容)
@@ -71,4 +73,4 @@
71
73
 
72
74
  ## 执行此命令
73
75
 
74
- 读取并执行 `.codebuddy/skills/modus-auto/SKILL.md` 中的完整流程。
76
+ 读取并执行 `.modus/skills/modus-auto/SKILL.md` 中的完整流程(中性源;各平台目录为引用桩)。
@@ -1,6 +1,8 @@
1
1
  # /modus:commit
2
2
 
3
- Knowledge-aware git commit. Drains pending knowledge from `modus/sessions/pending-knowledge.yaml` into the corresponding business Skill files, then executes the actual git commit.
3
+ Knowledge-aware git commit. Drains pending knowledge from `modus/sessions/pending-knowledge.yaml` into the corresponding domain knowledge files (`modus/knowledge_base/domain/<d>/code/`) and into `business/` if rule-level, then executes the actual git commit.
4
+
5
+ > **路径范式版本:v4.0**(详见 `templates/paths-v4.md`)
4
6
 
5
7
  ## Instructions
6
8
 
@@ -32,15 +34,19 @@ During `/modus:vibe` sessions, newly discovered knowledge (new enum values, busi
32
34
  是否将以上知识写入对应 Skill 文件?[Y/n]
33
35
  ```
34
36
 
35
- 3. **Write back to Skills (if confirmed):**
37
+ 3. **Write back to knowledge base (if confirmed):**
36
38
  For each entry in `pending-knowledge.yaml`:
37
- - Call `modus-skill-creator` Mode C to append the entry to the corresponding `modus-biz-{domain}/SKILL.md`
39
+ - Determine target file by knowledge type:
40
+ - `[model]` / `[enum]` / `[api]` → `modus/knowledge_base/domain/<d>/code/{entities|apis|services|data-models}.md`
41
+ - `[pitfall]` / `[guideline]` / `[business-rule]` → `modus/knowledge_base/domain/<d>/business/`
42
+ - Call `modus-skill-creator` Mode C to append the entry
38
43
  - Mark the entry as `settled: true` in `pending-knowledge.yaml`
39
- - Output per-entry status: `✓ [pitfall] → modus-biz-order 已写入`
44
+ - Output per-entry status: `✓ [pitfall] → domain/order/business/ 已写入`
40
45
 
41
46
  After all entries processed:
42
47
  - Remove settled entries from `pending-knowledge.yaml` (keep only `settled: false` entries)
43
- - Update `modus/knowledge-catalog.md` if any Skill version changed
48
+ - Update `modus/knowledge_base/map.md` if any domain knowledge version changed
49
+ - Append a record to `modus/knowledge_base/domain/<d>/history/{YYYY-MM-DD}-{topic}.md`
44
50
 
45
51
  4. **Execute git commit:**
46
52
  Run the standard git commit flow: