@jstn-sdk/ma 0.1.0 → 0.1.2
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.
- package/.codex/prompts/enforcement.md +1 -1
- package/.codex/prompts/onboarding.md +5 -5
- package/README.md +29 -29
- package/bin/ma.js +13 -1
- package/docs/README.md +2 -1
- package/docs/getting-started.md +10 -8
- package/docs/installed-sdk.md +60 -0
- package/docs/onboarding.md +3 -3
- package/docs/qa/{release-readiness-0.1.0.md → release-readiness-0.1.2.md} +25 -8
- package/docs/release-spec.md +9 -9
- package/docs/skills.md +31 -3
- package/package.json +5 -4
- package/plugins/meta-architect/.app.json +1 -1
- package/plugins/meta-architect/.codex-plugin/plugin.json +2 -2
- package/plugins/meta-architect/.mcp.json +1 -1
- package/plugins/meta-architect/README.md +2 -2
- package/plugins/meta-architect/skills/arch/agents/openai.yaml +2 -2
- package/plugins/meta-architect/skills/build/agents/openai.yaml +2 -2
- package/plugins/meta-architect/skills/flow/agents/openai.yaml +2 -2
- package/plugins/meta-architect/skills/meta-architect/agents/openai.yaml +2 -2
- package/plugins/meta-architect/skills/meta-architect/references/core-release-rules.md +1 -1
- package/plugins/meta-architect/skills/sage/agents/openai.yaml +2 -2
- package/plugins/meta-architect/skills/vet/agents/openai.yaml +2 -2
- package/plugins/meta-architect/skills/vibe/agents/openai.yaml +2 -2
- package/scripts/postinstall.js +7 -3
- package/skills/arch/agents/openai.yaml +2 -2
- package/skills/build/agents/openai.yaml +2 -2
- package/skills/flow/agents/openai.yaml +2 -2
- package/skills/meta-architect/agents/openai.yaml +2 -2
- package/skills/meta-architect/references/core-release-rules.md +1 -1
- package/skills/sage/agents/openai.yaml +2 -2
- package/skills/vet/agents/openai.yaml +2 -2
- package/skills/vibe/agents/openai.yaml +2 -2
- package/src/launcher.js +3 -2
- package/src/mcp-live-client.js +1 -1
- package/src/runtime-artifacts.js +2 -2
- package/src/skill-installer.js +151 -2
- package/src/skills.js +3 -3
- package/templates/AGENTS.md +130 -0
- package/templates/catalog-manifest.json +22 -0
- package/templates/model-instructions/core.md +39 -0
- package/templates/model-instructions/release.md +41 -0
- package/templates/model-instructions/security.md +22 -0
|
@@ -60,7 +60,7 @@ npm uninstall -g @jstn-sdk/ma
|
|
|
60
60
|
npm uninstall -g @jstn-sdk/ma @openai/codex
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
Use the plugin bundle when you need installable skill metadata or local marketplace discovery. Use the package and
|
|
63
|
+
Use the plugin bundle when you need installable skill metadata or local marketplace discovery. Use the package and Codex skill flow when you want the full Meta-Architect product experience.
|
|
64
64
|
|
|
65
65
|
Primary related surfaces:
|
|
66
66
|
- [docs/skills-publishing.md](../../docs/skills-publishing.md)
|
|
@@ -105,7 +105,7 @@ When consuming the plugin:
|
|
|
105
105
|
The plugin version should track the release scope of the core repo.
|
|
106
106
|
|
|
107
107
|
For this repository:
|
|
108
|
-
- plugin scope is aligned to Meta-Architect `v0.1.
|
|
108
|
+
- plugin scope is aligned to Meta-Architect `v0.1.2`
|
|
109
109
|
- any breaking contract change should be versioned intentionally
|
|
110
110
|
|
|
111
111
|
The plugin is one distribution surface of the same product, not a separate product line.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "
|
|
3
|
-
short_description: "Architecture and
|
|
2
|
+
display_name: "$arch"
|
|
3
|
+
short_description: "Architecture-first product and system design"
|
|
4
4
|
default_prompt: "Use $arch to produce architecture, stack rationale, subsystem boundaries, tradeoffs, and a phased delivery plan."
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "
|
|
3
|
-
short_description: "
|
|
2
|
+
display_name: "$build"
|
|
3
|
+
short_description: "Build-readiness decision and next implementation step"
|
|
4
4
|
default_prompt: "Use $build to decide whether implementation is ready, what remains blocked, and what the next build slice should be."
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "
|
|
3
|
-
short_description: "
|
|
2
|
+
display_name: "$flow"
|
|
3
|
+
short_description: "Logic, states, transitions, and blockers"
|
|
4
4
|
default_prompt: "Use $flow to map business logic, state transitions, invariants, and blockers in the current design."
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "
|
|
3
|
-
short_description: "
|
|
2
|
+
display_name: "$meta-architect"
|
|
3
|
+
short_description: "Full Meta-Architect skill workflow"
|
|
4
4
|
default_prompt: "Use $meta-architect to run the full Meta-Architect workflow inside Codex, then route through $arch, $sage, $flow, $vet, $vibe, and $build as needed."
|
|
@@ -10,4 +10,4 @@
|
|
|
10
10
|
- `experience_status = GREEN` or `WAIVED`
|
|
11
11
|
- Feature work merges into `development`, never directly into `prod`.
|
|
12
12
|
- Release promotion is allowed only from `development` or approved `release/*`.
|
|
13
|
-
- Use the helper
|
|
13
|
+
- Use the helper command path only when repo-local state automation is explicitly needed; otherwise stay inside Codex and carry the gate decisions in the session.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "
|
|
3
|
-
short_description: "
|
|
2
|
+
display_name: "$sage"
|
|
3
|
+
short_description: "Evidence-backed stack and OSS validation"
|
|
4
4
|
default_prompt: "Use $sage to validate stack choices with official docs, upstream repos, and approved GitMCP-backed sources."
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "
|
|
3
|
-
short_description: "Security
|
|
2
|
+
display_name: "$vet"
|
|
3
|
+
short_description: "Security and trust-boundary review"
|
|
4
4
|
default_prompt: "Use $vet to review trust boundaries, security risks, abuse cases, and safer alternatives in the current design."
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "
|
|
3
|
-
short_description: "DX and UX review before
|
|
2
|
+
display_name: "$vibe"
|
|
3
|
+
short_description: "DX and UX review before implementation"
|
|
4
4
|
default_prompt: "Use $vibe to review developer and user experience risks before the build lane proceeds."
|
package/scripts/postinstall.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import process from "node:process";
|
|
4
|
-
import { installSkills } from "../src/skill-installer.js";
|
|
4
|
+
import { installSkills, installSupportBundle } from "../src/skill-installer.js";
|
|
5
5
|
|
|
6
6
|
async function main() {
|
|
7
7
|
if (process.env.MA_SKIP_AUTO_INSTALL === "1") {
|
|
@@ -9,8 +9,12 @@ async function main() {
|
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
const
|
|
13
|
-
|
|
12
|
+
const [
|
|
13
|
+
{ targetRoot: skillRoot, installed: skills },
|
|
14
|
+
{ targetRoot: bundleRoot, installed: assets },
|
|
15
|
+
] = await Promise.all([installSkills(), installSupportBundle()]);
|
|
16
|
+
console.log(`meta-architect: installed ${skills.length} Codex skills into ${skillRoot}`);
|
|
17
|
+
console.log(`meta-architect: installed ${assets.length} support assets into ${bundleRoot}`);
|
|
14
18
|
}
|
|
15
19
|
|
|
16
20
|
main().catch((error) => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "
|
|
3
|
-
short_description: "Architecture and
|
|
2
|
+
display_name: "$arch"
|
|
3
|
+
short_description: "Architecture-first product and system design"
|
|
4
4
|
default_prompt: "Use $arch to produce architecture, stack rationale, subsystem boundaries, tradeoffs, and a phased delivery plan."
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "
|
|
3
|
-
short_description: "
|
|
2
|
+
display_name: "$build"
|
|
3
|
+
short_description: "Build-readiness decision and next implementation step"
|
|
4
4
|
default_prompt: "Use $build to decide whether implementation is ready, what remains blocked, and what the next build slice should be."
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "
|
|
3
|
-
short_description: "
|
|
2
|
+
display_name: "$flow"
|
|
3
|
+
short_description: "Logic, states, transitions, and blockers"
|
|
4
4
|
default_prompt: "Use $flow to map business logic, state transitions, invariants, and blockers in the current design."
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "
|
|
3
|
-
short_description: "
|
|
2
|
+
display_name: "$meta-architect"
|
|
3
|
+
short_description: "Full Meta-Architect skill workflow"
|
|
4
4
|
default_prompt: "Use $meta-architect to run the full Meta-Architect workflow inside Codex, then route through $arch, $sage, $flow, $vet, $vibe, and $build as needed."
|
|
@@ -10,4 +10,4 @@
|
|
|
10
10
|
- `experience_status = GREEN` or `WAIVED`
|
|
11
11
|
- Feature work merges into `development`, never directly into `prod`.
|
|
12
12
|
- Release promotion is allowed only from `development` or approved `release/*`.
|
|
13
|
-
- Use the helper
|
|
13
|
+
- Use the helper command path only when repo-local state automation is explicitly needed; otherwise stay inside Codex and carry the gate decisions in the session.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "
|
|
3
|
-
short_description: "
|
|
2
|
+
display_name: "$sage"
|
|
3
|
+
short_description: "Evidence-backed stack and OSS validation"
|
|
4
4
|
default_prompt: "Use $sage to validate stack choices with official docs, upstream repos, and approved GitMCP-backed sources."
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "
|
|
3
|
-
short_description: "Security
|
|
2
|
+
display_name: "$vet"
|
|
3
|
+
short_description: "Security and trust-boundary review"
|
|
4
4
|
default_prompt: "Use $vet to review trust boundaries, security risks, abuse cases, and safer alternatives in the current design."
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "
|
|
3
|
-
short_description: "DX and UX review before
|
|
2
|
+
display_name: "$vibe"
|
|
3
|
+
short_description: "DX and UX review before implementation"
|
|
4
4
|
default_prompt: "Use $vibe to review developer and user experience risks before the build lane proceeds."
|
package/src/launcher.js
CHANGED
|
@@ -6,6 +6,7 @@ const nativeCommands = new Set([
|
|
|
6
6
|
"init",
|
|
7
7
|
"idea",
|
|
8
8
|
"skills",
|
|
9
|
+
"sdk-path",
|
|
9
10
|
"status",
|
|
10
11
|
"merge",
|
|
11
12
|
"release",
|
|
@@ -45,10 +46,10 @@ export function runCodex(args) {
|
|
|
45
46
|
|
|
46
47
|
if (result.error) {
|
|
47
48
|
if (result.error.code === "ENOENT") {
|
|
48
|
-
throw new Error("Codex
|
|
49
|
+
throw new Error("Codex not found. Install it with: npm install -g @openai/codex");
|
|
49
50
|
}
|
|
50
51
|
|
|
51
|
-
throw new Error(`Failed to start Codex
|
|
52
|
+
throw new Error(`Failed to start Codex: ${result.error.message}`);
|
|
52
53
|
}
|
|
53
54
|
|
|
54
55
|
return typeof result.status === "number" ? result.status : 1;
|
package/src/mcp-live-client.js
CHANGED
package/src/runtime-artifacts.js
CHANGED
|
@@ -19,7 +19,7 @@ function renderProjectContext({ idea = null }) {
|
|
|
19
19
|
"",
|
|
20
20
|
"- `.ma/decisions.json` tracks gate and decision history",
|
|
21
21
|
"- `.ma/release.json` tracks release-state fields",
|
|
22
|
-
"- `.ma/runbook.md` defines the local
|
|
22
|
+
"- `.ma/runbook.md` defines the local helper workflow",
|
|
23
23
|
"",
|
|
24
24
|
"## Next Recommended Trigger",
|
|
25
25
|
"",
|
|
@@ -240,7 +240,7 @@ function renderRunbook() {
|
|
|
240
240
|
"",
|
|
241
241
|
"## Purpose",
|
|
242
242
|
"",
|
|
243
|
-
"This runbook defines the local helper-path workflow
|
|
243
|
+
"This runbook defines the local helper-path workflow that supports the primary in-session skill flow.",
|
|
244
244
|
"",
|
|
245
245
|
"## Canonical Sequence",
|
|
246
246
|
"",
|
package/src/skill-installer.js
CHANGED
|
@@ -3,9 +3,16 @@ import os from "node:os";
|
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { packageRoot } from "./paths.js";
|
|
5
5
|
|
|
6
|
+
function resolveCodexHome() {
|
|
7
|
+
return process.env.CODEX_HOME ?? path.join(os.homedir(), ".codex");
|
|
8
|
+
}
|
|
9
|
+
|
|
6
10
|
function resolveSkillInstallRoot() {
|
|
7
|
-
|
|
8
|
-
|
|
11
|
+
return path.join(resolveCodexHome(), "skills");
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function resolveSupportBundleRoot() {
|
|
15
|
+
return path.join(resolveCodexHome(), "meta-architect-sdk");
|
|
9
16
|
}
|
|
10
17
|
|
|
11
18
|
async function copyDir(src, dest) {
|
|
@@ -26,6 +33,10 @@ export function getSkillInstallRoot() {
|
|
|
26
33
|
return resolveSkillInstallRoot();
|
|
27
34
|
}
|
|
28
35
|
|
|
36
|
+
export function getSupportBundleRoot() {
|
|
37
|
+
return resolveSupportBundleRoot();
|
|
38
|
+
}
|
|
39
|
+
|
|
29
40
|
export async function loadSkillManifest() {
|
|
30
41
|
const manifestPath = path.join(packageRoot, "skills", "index.json");
|
|
31
42
|
const manifest = JSON.parse(await fs.readFile(manifestPath, "utf8"));
|
|
@@ -47,3 +58,141 @@ export async function installSkills({ targetRoot = getSkillInstallRoot() } = {})
|
|
|
47
58
|
|
|
48
59
|
return { targetRoot, installed };
|
|
49
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
|
+
}
|
package/src/skills.js
CHANGED
|
@@ -243,7 +243,7 @@ export async function runVibe() {
|
|
|
243
243
|
const outcomes = await readJson(getRuntimeWritePath("evidence", "outcomes.json"));
|
|
244
244
|
const note = {
|
|
245
245
|
area: "developer-experience",
|
|
246
|
-
summary: "
|
|
246
|
+
summary: "The in-session skill flow remains the primary Meta-Architect surface",
|
|
247
247
|
};
|
|
248
248
|
outcomes.items.push(note);
|
|
249
249
|
await writeJson(getRuntimeWritePath("evidence", "outcomes.json"), outcomes);
|
|
@@ -344,8 +344,8 @@ export async function runInit() {
|
|
|
344
344
|
path.join(getRepoRoot(), "docs", "release-spec.md"),
|
|
345
345
|
],
|
|
346
346
|
[
|
|
347
|
-
path.join(packageRoot, "docs", "qa", "release-readiness-0.1.
|
|
348
|
-
path.join(getRepoRoot(), "docs", "qa", "release-readiness-0.1.
|
|
347
|
+
path.join(packageRoot, "docs", "qa", "release-readiness-0.1.2.md"),
|
|
348
|
+
path.join(getRepoRoot(), "docs", "qa", "release-readiness-0.1.2.md"),
|
|
349
349
|
],
|
|
350
350
|
];
|
|
351
351
|
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Meta-Architect Operating Contract
|
|
2
|
+
|
|
3
|
+
This repository uses Meta-Architect as a structured orchestration layer for programmatic architecture and verified engineering. The purpose of this contract is to make repository behavior explicit, reviewable, and stable enough to be reused across generated or installed surfaces.
|
|
4
|
+
|
|
5
|
+
## Core triggers
|
|
6
|
+
|
|
7
|
+
The primary trigger surfaces are:
|
|
8
|
+
|
|
9
|
+
- `$arch` — architecture and stack blueprinting
|
|
10
|
+
- `$sage` — evidence-backed OSS discovery through MCP/GitMCP collections
|
|
11
|
+
- `$flow` — business logic and state-transition review
|
|
12
|
+
- `$vet` — security and risk review
|
|
13
|
+
- `$vibe` — DX/UX review
|
|
14
|
+
- `$build` — bounded implementation planning and build execution handoff
|
|
15
|
+
|
|
16
|
+
## Core rule
|
|
17
|
+
|
|
18
|
+
No implementation should proceed as if it were approved unless the required architecture, evidence, logic, and security gates are satisfied.
|
|
19
|
+
|
|
20
|
+
## Kernel vs extension model
|
|
21
|
+
|
|
22
|
+
Meta-Architect should be treated as a core system plus extension surfaces:
|
|
23
|
+
|
|
24
|
+
- **Core system**
|
|
25
|
+
- state and decision files
|
|
26
|
+
- gate enforcement
|
|
27
|
+
- MCP endpoint policy
|
|
28
|
+
- CLI orchestration commands
|
|
29
|
+
- **Extension surfaces**
|
|
30
|
+
- publishable skill folders
|
|
31
|
+
- plugin bundle
|
|
32
|
+
- missions and demos
|
|
33
|
+
- prompts and templates
|
|
34
|
+
|
|
35
|
+
The core must stay stable and inspectable. Extensions may vary, but they must not weaken the kernel contract.
|
|
36
|
+
|
|
37
|
+
## Gate rules
|
|
38
|
+
|
|
39
|
+
The repository recognizes the following status fields:
|
|
40
|
+
|
|
41
|
+
- `idea_status`
|
|
42
|
+
- `architecture_status`
|
|
43
|
+
- `evidence_status`
|
|
44
|
+
- `logic_status`
|
|
45
|
+
- `security_status`
|
|
46
|
+
- `experience_status`
|
|
47
|
+
- `build_status`
|
|
48
|
+
- `merge_status`
|
|
49
|
+
- `release_status`
|
|
50
|
+
|
|
51
|
+
### Build lock rule
|
|
52
|
+
|
|
53
|
+
`$build` must remain locked unless all of the following are true:
|
|
54
|
+
|
|
55
|
+
- `idea_status = CLEAR`
|
|
56
|
+
- `architecture_status = APPROVED`
|
|
57
|
+
- `evidence_status = VERIFIED`
|
|
58
|
+
- `logic_status = GREEN`
|
|
59
|
+
- `security_status = GREEN`
|
|
60
|
+
- `experience_status = GREEN` or `WAIVED`
|
|
61
|
+
|
|
62
|
+
If any required field is missing, red, or unverified, the workflow should stop and report blockers clearly.
|
|
63
|
+
|
|
64
|
+
### Merge and release rule
|
|
65
|
+
|
|
66
|
+
- `feature/*` work merges into `development`
|
|
67
|
+
- release promotion is allowed only from `development` or approved `release/*`
|
|
68
|
+
- no direct `feature/* -> prod`
|
|
69
|
+
|
|
70
|
+
## Evidence rule
|
|
71
|
+
|
|
72
|
+
Major technology recommendations must be supported by evidence from configured MCP/GitMCP sources. Do not invent fake repositories, fake endpoints, or unsupported claims.
|
|
73
|
+
|
|
74
|
+
### Exact endpoint rule
|
|
75
|
+
|
|
76
|
+
- Prefer repo-specific `https://gitmcp.io/{owner}/{repo}` endpoints
|
|
77
|
+
- Treat `https://gitmcp.io/docs` as fallback policy only, not a normal approved evidence source for build-unlocking decisions
|
|
78
|
+
|
|
79
|
+
## Logging rule
|
|
80
|
+
|
|
81
|
+
Architecture decisions, evidence, audits, and release-relevant outcomes should be written to repository-visible local files where applicable, especially:
|
|
82
|
+
|
|
83
|
+
- `.ma/decisions.json`
|
|
84
|
+
- `.ma/release.json`
|
|
85
|
+
- `.ma/evidence/sources.json`
|
|
86
|
+
- `.ma/evidence/audits.json`
|
|
87
|
+
- `.ma/evidence/cves.json`
|
|
88
|
+
|
|
89
|
+
## Skill routing
|
|
90
|
+
|
|
91
|
+
Use the role that best matches the task:
|
|
92
|
+
|
|
93
|
+
- Use `$arch` for system shape, stack options, component boundaries, trade-offs, and blueprinting.
|
|
94
|
+
- Use `$sage` for evidence-backed package, framework, and library selection.
|
|
95
|
+
- Use `$flow` for workflow correctness, state transitions, data flow, and edge-case review.
|
|
96
|
+
- Use `$vet` for security checks, dependency risk review, and release-sensitive blocking findings.
|
|
97
|
+
- Use `$vibe` for developer experience and user experience review.
|
|
98
|
+
- Use `$build` only after required gates are satisfied and only for bounded implementation planning or execution.
|
|
99
|
+
|
|
100
|
+
## Prompt behavior
|
|
101
|
+
|
|
102
|
+
When working in this repository:
|
|
103
|
+
|
|
104
|
+
- prefer explicit reasoning and explicit file changes
|
|
105
|
+
- do not skip validation steps silently
|
|
106
|
+
- do not weaken hooks or gates for convenience
|
|
107
|
+
- do not commit runtime `.ma` state
|
|
108
|
+
- do not treat release-sensitive changes as trivial edits
|
|
109
|
+
|
|
110
|
+
## Contributor expectation
|
|
111
|
+
|
|
112
|
+
Changes to skills, prompts, package metadata, workflows, release docs, or plugin surfaces are release-sensitive. These changes should be tested, documented, and described clearly in pull requests.
|
|
113
|
+
|
|
114
|
+
## Release expectation
|
|
115
|
+
|
|
116
|
+
Production release means:
|
|
117
|
+
|
|
118
|
+
- the core trigger flow works end-to-end
|
|
119
|
+
- release artifacts are validated
|
|
120
|
+
- skills packaging and installation succeed
|
|
121
|
+
- docs reflect actual behavior
|
|
122
|
+
- no hidden runtime residue is shipped as source
|
|
123
|
+
|
|
124
|
+
## Related surfaces
|
|
125
|
+
|
|
126
|
+
- `CONTRIBUTING.md`
|
|
127
|
+
- `docs/release-spec.md`
|
|
128
|
+
- `templates/catalog-manifest.json`
|
|
129
|
+
- `prompts/`
|
|
130
|
+
- `skills/`
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"skills": [
|
|
4
|
+
"meta-architect",
|
|
5
|
+
"meta-architect-arch",
|
|
6
|
+
"meta-architect-sage",
|
|
7
|
+
"meta-architect-flow",
|
|
8
|
+
"meta-architect-vet",
|
|
9
|
+
"meta-architect-vibe",
|
|
10
|
+
"meta-architect-build"
|
|
11
|
+
],
|
|
12
|
+
"prompts": [
|
|
13
|
+
"architect",
|
|
14
|
+
"sage",
|
|
15
|
+
"flow",
|
|
16
|
+
"security-reviewer",
|
|
17
|
+
"vibe",
|
|
18
|
+
"builder",
|
|
19
|
+
"release-manager",
|
|
20
|
+
"verifier"
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Core Model Instructions
|
|
2
|
+
|
|
3
|
+
Use these instructions when generating or applying repository content to the Meta-Architect core system.
|
|
4
|
+
|
|
5
|
+
## Core expectations
|
|
6
|
+
|
|
7
|
+
- Keep Meta-Architect skills, gates, evidence, and release behavior explicit.
|
|
8
|
+
- Prefer inspectable files over hidden side effects.
|
|
9
|
+
- Do not bypass the `.ma` gate model.
|
|
10
|
+
- Treat CLI, skill contracts, plugin surfaces, and docs as one coherent product system.
|
|
11
|
+
|
|
12
|
+
## Kernel rule
|
|
13
|
+
|
|
14
|
+
The kernel contains the minimum stable logic that makes the system trustworthy:
|
|
15
|
+
- status files
|
|
16
|
+
- decision logging
|
|
17
|
+
- evidence capture
|
|
18
|
+
- build/merge/release policy
|
|
19
|
+
- packaging and validation commands
|
|
20
|
+
|
|
21
|
+
Do not treat those as negotiable convenience features.
|
|
22
|
+
|
|
23
|
+
## Documentation rule
|
|
24
|
+
|
|
25
|
+
When writing docs:
|
|
26
|
+
- describe what the runtime actually does today
|
|
27
|
+
- distinguish baseline first-pass review from deep autonomous analysis when necessary
|
|
28
|
+
- show exact commands and expected outcomes
|
|
29
|
+
- cross-link related surfaces
|
|
30
|
+
|
|
31
|
+
## Change rule
|
|
32
|
+
|
|
33
|
+
Any change that weakens:
|
|
34
|
+
- inspectability
|
|
35
|
+
- evidence traceability
|
|
36
|
+
- gate enforcement
|
|
37
|
+
- or packaging determinism
|
|
38
|
+
|
|
39
|
+
should be treated as a regression.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Release Model Instructions
|
|
2
|
+
|
|
3
|
+
These instructions apply when generating or reviewing release-facing artifacts.
|
|
4
|
+
|
|
5
|
+
## Release posture
|
|
6
|
+
|
|
7
|
+
Fail closed on:
|
|
8
|
+
- missing release artifacts
|
|
9
|
+
- failing checks
|
|
10
|
+
- blocked channels
|
|
11
|
+
- ambiguous publish claims
|
|
12
|
+
|
|
13
|
+
## Versioning rule
|
|
14
|
+
|
|
15
|
+
Preserve stable public contracts for the active release line unless a major version is intentionally planned.
|
|
16
|
+
|
|
17
|
+
## Publication rule
|
|
18
|
+
|
|
19
|
+
Never claim a publication channel succeeded without concrete evidence.
|
|
20
|
+
|
|
21
|
+
This includes:
|
|
22
|
+
- git branch push
|
|
23
|
+
- tag push
|
|
24
|
+
- GitHub release creation
|
|
25
|
+
- GitHub asset upload
|
|
26
|
+
- npm publish
|
|
27
|
+
- plugin or marketplace publish
|
|
28
|
+
|
|
29
|
+
## Release artifact minimum
|
|
30
|
+
|
|
31
|
+
Release-facing changes should stay aligned across:
|
|
32
|
+
- `package.json`
|
|
33
|
+
- `CHANGELOG.md`
|
|
34
|
+
- `RELEASE.md`
|
|
35
|
+
- `docs/qa/`
|
|
36
|
+
- `skills/index.json`
|
|
37
|
+
- tarball outputs
|
|
38
|
+
|
|
39
|
+
## Hygiene rule
|
|
40
|
+
|
|
41
|
+
Do not ship local runtime state, caches, or accidental build outputs as public source.
|