@jstn-sdk/ma 0.1.5 → 0.1.7

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 (125) hide show
  1. package/.agents/plugins/marketplace.json +20 -0
  2. package/.codex/hooks.json +1 -1
  3. package/.codex/prompts/enforcement.md +13 -3
  4. package/.codex/prompts/onboarding.md +29 -14
  5. package/README.md +536 -129
  6. package/bin/ma.js +61 -103
  7. package/docs/README.md +2 -1
  8. package/docs/assets/image/Screenshot(1).png +0 -0
  9. package/docs/assets/image/Screenshot(2).png +0 -0
  10. package/docs/assets/image/Screenshot(3).png +0 -0
  11. package/docs/assets/image/Screenshot(4).png +0 -0
  12. package/docs/assets/image/Screenshot(5).png +0 -0
  13. package/docs/assets/image/Screenshot(6).png +0 -0
  14. package/docs/assets/image/Screenshot(7).png +0 -0
  15. package/docs/assets/image/Screenshot(8).png +0 -0
  16. package/docs/assets/image/Screenshot(9).png +0 -0
  17. package/docs/assets/meta-architect-logo.png +0 -0
  18. package/docs/assets/meta-architect-logo.svg +8 -0
  19. package/docs/getting-started.md +434 -37
  20. package/docs/installed-sdk.md +60 -0
  21. package/docs/mcp-setup.md +46 -134
  22. package/docs/onboarding.md +41 -11
  23. package/docs/qa/release-readiness-0.1.5.md +46 -44
  24. package/docs/qa/release-readiness-0.1.7.md +79 -0
  25. package/docs/release-spec.md +81 -103
  26. package/docs/skills-publishing.md +187 -54
  27. package/docs/skills.md +82 -141
  28. package/mcp/collections.json +1 -1
  29. package/mcp/fallback.json +1 -1
  30. package/mcp/servers.json +1 -1
  31. package/package.json +17 -14
  32. package/plugins/meta-architect/.app.json +1 -1
  33. package/plugins/meta-architect/.codex-plugin/plugin.json +23 -0
  34. package/plugins/meta-architect/.mcp.json +1 -1
  35. package/plugins/meta-architect/README.md +23 -10
  36. package/plugins/meta-architect/skills/arch/SKILL.md +27 -0
  37. package/plugins/meta-architect/skills/arch/agents/openai.yaml +4 -0
  38. package/plugins/meta-architect/skills/build/SKILL.md +24 -0
  39. package/plugins/meta-architect/skills/build/agents/openai.yaml +4 -0
  40. package/plugins/meta-architect/skills/flow/SKILL.md +24 -0
  41. package/plugins/meta-architect/skills/flow/agents/openai.yaml +4 -0
  42. package/plugins/meta-architect/skills/maestro/SKILL.md +25 -0
  43. package/plugins/meta-architect/skills/maestro/agents/openai.yaml +4 -0
  44. package/plugins/meta-architect/skills/meta-architect/SKILL.md +19 -23
  45. package/plugins/meta-architect/skills/meta-architect/agents/openai.yaml +4 -0
  46. package/plugins/meta-architect/skills/meta-architect/references/core-release-rules.md +13 -0
  47. package/plugins/meta-architect/skills/sage/SKILL.md +37 -0
  48. package/plugins/meta-architect/skills/sage/agents/openai.yaml +4 -0
  49. package/plugins/meta-architect/skills/vet/SKILL.md +25 -0
  50. package/plugins/meta-architect/skills/vet/agents/openai.yaml +4 -0
  51. package/plugins/meta-architect/skills/vibe/SKILL.md +24 -0
  52. package/plugins/meta-architect/skills/vibe/agents/openai.yaml +4 -0
  53. package/scripts/doctor.js +8 -0
  54. package/scripts/plugin-sync.js +93 -0
  55. package/scripts/postinstall.js +23 -0
  56. package/scripts/release-metadata.js +94 -0
  57. package/scripts/release-sync.js +359 -0
  58. package/scripts/release-verify.js +153 -0
  59. package/scripts/setup-npmrc.js +39 -0
  60. package/scripts/skills-install.js +4 -36
  61. package/scripts/skills-manifest.js +1 -1
  62. package/scripts/skills-validate.js +78 -40
  63. package/skills/arch/SKILL.md +27 -0
  64. package/skills/arch/agents/openai.yaml +4 -0
  65. package/skills/build/SKILL.md +24 -0
  66. package/skills/build/agents/openai.yaml +4 -0
  67. package/skills/flow/SKILL.md +24 -0
  68. package/skills/flow/agents/openai.yaml +4 -0
  69. package/skills/index.json +27 -22
  70. package/skills/maestro/SKILL.md +25 -0
  71. package/skills/maestro/agents/openai.yaml +4 -0
  72. package/skills/meta-architect/SKILL.md +19 -23
  73. package/skills/meta-architect/agents/openai.yaml +3 -3
  74. package/skills/meta-architect/references/core-release-rules.md +2 -2
  75. package/skills/sage/SKILL.md +37 -0
  76. package/skills/sage/agents/openai.yaml +4 -0
  77. package/skills/vet/SKILL.md +25 -0
  78. package/skills/vet/agents/openai.yaml +4 -0
  79. package/skills/vibe/SKILL.md +24 -0
  80. package/skills/vibe/agents/openai.yaml +4 -0
  81. package/sprint/00-idea.md +1 -1
  82. package/sprint/01-architecture.md +1 -1
  83. package/sprint/02-oss-evidence.md +1 -1
  84. package/sprint/03-logic.md +1 -1
  85. package/sprint/04-security.md +2 -2
  86. package/sprint/05-dx-ux.md +1 -1
  87. package/src/decision-log.js +4 -4
  88. package/src/launcher.js +21 -17
  89. package/src/mcp-live-client.js +1 -1
  90. package/src/paths.js +8 -32
  91. package/src/release-state.js +3 -3
  92. package/src/runtime-artifacts.js +411 -0
  93. package/src/skill-installer.js +198 -0
  94. package/src/skills.js +473 -166
  95. package/templates/AGENTS.md +23 -6
  96. package/templates/model-instructions/core.md +1 -1
  97. package/.codex/config.toml +0 -2
  98. package/plugins/meta-architect/skills/meta-architect-arch/SKILL.md +0 -24
  99. package/plugins/meta-architect/skills/meta-architect-build/SKILL.md +0 -25
  100. package/plugins/meta-architect/skills/meta-architect-flow/SKILL.md +0 -23
  101. package/plugins/meta-architect/skills/meta-architect-sage/SKILL.md +0 -23
  102. package/plugins/meta-architect/skills/meta-architect-vet/SKILL.md +0 -23
  103. package/plugins/meta-architect/skills/meta-architect-vibe/SKILL.md +0 -24
  104. package/prompts/architect.md +0 -216
  105. package/prompts/builder.md +0 -10
  106. package/prompts/flow.md +0 -9
  107. package/prompts/release-manager.md +0 -10
  108. package/prompts/sage.md +0 -10
  109. package/prompts/security-reviewer.md +0 -10
  110. package/prompts/verifier.md +0 -10
  111. package/prompts/vibe.md +0 -10
  112. package/skills/meta-architect-arch/SKILL.md +0 -24
  113. package/skills/meta-architect-arch/agents/openai.yaml +0 -4
  114. package/skills/meta-architect-build/SKILL.md +0 -25
  115. package/skills/meta-architect-build/agents/openai.yaml +0 -4
  116. package/skills/meta-architect-flow/SKILL.md +0 -23
  117. package/skills/meta-architect-flow/agents/openai.yaml +0 -4
  118. package/skills/meta-architect-sage/SKILL.md +0 -23
  119. package/skills/meta-architect-sage/agents/openai.yaml +0 -4
  120. package/skills/meta-architect-vet/SKILL.md +0 -23
  121. package/skills/meta-architect-vet/agents/openai.yaml +0 -4
  122. package/skills/meta-architect-vibe/SKILL.md +0 -24
  123. package/skills/meta-architect-vibe/agents/openai.yaml +0 -4
  124. package/src/doctor.js +0 -30
  125. package/src/setup.js +0 -375
@@ -0,0 +1,198 @@
1
+ import fs from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { packageRoot } from "./paths.js";
5
+
6
+ function resolveCodexHome() {
7
+ return process.env.CODEX_HOME ?? path.join(os.homedir(), ".codex");
8
+ }
9
+
10
+ function resolveSkillInstallRoot() {
11
+ return path.join(resolveCodexHome(), "skills");
12
+ }
13
+
14
+ function resolveSupportBundleRoot() {
15
+ return path.join(resolveCodexHome(), "meta-architect-sdk");
16
+ }
17
+
18
+ async function copyDir(src, dest) {
19
+ await fs.mkdir(dest, { recursive: true });
20
+ const entries = await fs.readdir(src, { withFileTypes: true });
21
+ for (const entry of entries) {
22
+ const srcPath = path.join(src, entry.name);
23
+ const destPath = path.join(dest, entry.name);
24
+ if (entry.isDirectory()) {
25
+ await copyDir(srcPath, destPath);
26
+ } else {
27
+ await fs.copyFile(srcPath, destPath);
28
+ }
29
+ }
30
+ }
31
+
32
+ export function getSkillInstallRoot() {
33
+ return resolveSkillInstallRoot();
34
+ }
35
+
36
+ export function getSupportBundleRoot() {
37
+ return resolveSupportBundleRoot();
38
+ }
39
+
40
+ export async function loadSkillManifest() {
41
+ const manifestPath = path.join(packageRoot, "skills", "index.json");
42
+ const manifest = JSON.parse(await fs.readFile(manifestPath, "utf8"));
43
+ return manifest.skills ?? [];
44
+ }
45
+
46
+ export async function installSkills({ targetRoot = getSkillInstallRoot() } = {}) {
47
+ const skills = await loadSkillManifest();
48
+ await fs.mkdir(targetRoot, { recursive: true });
49
+
50
+ const installed = [];
51
+ for (const skill of skills) {
52
+ const src = path.join(packageRoot, skill.path);
53
+ const dest = path.join(targetRoot, path.basename(skill.path));
54
+ await fs.rm(dest, { recursive: true, force: true });
55
+ await copyDir(src, dest);
56
+ installed.push({ name: skill.name, dest });
57
+ }
58
+
59
+ return { targetRoot, installed };
60
+ }
61
+
62
+ async function copyPath(src, dest) {
63
+ const stat = await fs.stat(src);
64
+ if (stat.isDirectory()) {
65
+ await fs.rm(dest, { recursive: true, force: true });
66
+ await copyDir(src, dest);
67
+ return "directory";
68
+ }
69
+
70
+ await fs.mkdir(path.dirname(dest), { recursive: true });
71
+ await fs.copyFile(src, dest);
72
+ return "file";
73
+ }
74
+
75
+ export async function installSupportBundle({ targetRoot = getSupportBundleRoot() } = {}) {
76
+ const assets = [
77
+ {
78
+ name: "mcp",
79
+ src: path.join(packageRoot, "mcp"),
80
+ dest: path.join(targetRoot, "mcp"),
81
+ },
82
+ {
83
+ name: "sprint",
84
+ src: path.join(packageRoot, "sprint"),
85
+ dest: path.join(targetRoot, "sprint"),
86
+ },
87
+ {
88
+ name: "prompts",
89
+ src: path.join(packageRoot, ".codex", "prompts"),
90
+ dest: path.join(targetRoot, "prompts"),
91
+ },
92
+ {
93
+ name: "scripts",
94
+ src: path.join(packageRoot, "scripts"),
95
+ dest: path.join(targetRoot, "scripts"),
96
+ },
97
+ {
98
+ name: "plugin",
99
+ src: path.join(packageRoot, "plugins", "meta-architect"),
100
+ dest: path.join(targetRoot, "plugins", "meta-architect"),
101
+ },
102
+ {
103
+ name: "templates",
104
+ src: path.join(packageRoot, "templates"),
105
+ dest: path.join(targetRoot, "templates"),
106
+ },
107
+ {
108
+ name: "docs-readme",
109
+ src: path.join(packageRoot, "docs", "README.md"),
110
+ dest: path.join(targetRoot, "docs", "README.md"),
111
+ },
112
+ ];
113
+
114
+ await fs.mkdir(targetRoot, { recursive: true });
115
+ const installed = [];
116
+ for (const asset of assets) {
117
+ await copyPath(asset.src, asset.dest);
118
+ installed.push({ name: asset.name, dest: asset.dest });
119
+ }
120
+
121
+ const pkg = JSON.parse(await fs.readFile(path.join(packageRoot, "package.json"), "utf8"));
122
+ const manifest = {
123
+ packageName: pkg.name,
124
+ packageVersion: pkg.version,
125
+ installedAt: new Date().toISOString(),
126
+ root: targetRoot,
127
+ assets: installed,
128
+ };
129
+ await fs.writeFile(
130
+ path.join(targetRoot, "asset-manifest.json"),
131
+ `${JSON.stringify(manifest, null, 2)}\n`,
132
+ );
133
+
134
+ return { targetRoot, installed };
135
+ }
136
+
137
+ export async function areSkillsInstalled({ targetRoot = getSkillInstallRoot() } = {}) {
138
+ const skills = await loadSkillManifest();
139
+
140
+ for (const skill of skills) {
141
+ const skillDir = path.join(targetRoot, path.basename(skill.path));
142
+ try {
143
+ await fs.access(path.join(skillDir, "SKILL.md"));
144
+ } catch {
145
+ return false;
146
+ }
147
+ }
148
+
149
+ return true;
150
+ }
151
+
152
+ export async function isSupportBundleInstalled({ targetRoot = getSupportBundleRoot() } = {}) {
153
+ const requiredFiles = [
154
+ path.join(targetRoot, "asset-manifest.json"),
155
+ path.join(targetRoot, "mcp", "servers.json"),
156
+ path.join(targetRoot, "sprint", "07-release.md"),
157
+ path.join(targetRoot, "prompts", "onboarding.md"),
158
+ path.join(targetRoot, "scripts", "skills-install.js"),
159
+ path.join(targetRoot, "plugins", "meta-architect", ".codex-plugin", "plugin.json"),
160
+ path.join(targetRoot, "templates", "AGENTS.md"),
161
+ ];
162
+
163
+ for (const file of requiredFiles) {
164
+ try {
165
+ await fs.access(file);
166
+ } catch {
167
+ return false;
168
+ }
169
+ }
170
+
171
+ return true;
172
+ }
173
+
174
+ export async function ensureSkillsInstalled({ targetRoot = getSkillInstallRoot() } = {}) {
175
+ if (process.env.MA_SKIP_AUTO_INSTALL === "1") {
176
+ return { targetRoot, installed: [], skipped: true };
177
+ }
178
+
179
+ if (await areSkillsInstalled({ targetRoot })) {
180
+ return { targetRoot, installed: [], skipped: false };
181
+ }
182
+
183
+ const result = await installSkills({ targetRoot });
184
+ return { ...result, skipped: false };
185
+ }
186
+
187
+ export async function ensureSupportBundleInstalled({ targetRoot = getSupportBundleRoot() } = {}) {
188
+ if (process.env.MA_SKIP_AUTO_INSTALL === "1") {
189
+ return { targetRoot, installed: [], skipped: true };
190
+ }
191
+
192
+ if (await isSupportBundleInstalled({ targetRoot })) {
193
+ return { targetRoot, installed: [], skipped: false };
194
+ }
195
+
196
+ const result = await installSupportBundle({ targetRoot });
197
+ return { ...result, skipped: false };
198
+ }