@jstn-sdk/ma 0.1.5 → 0.1.6

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 +3 -3
  4. package/.codex/prompts/onboarding.md +29 -14
  5. package/README.md +512 -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 +419 -37
  20. package/docs/installed-sdk.md +60 -0
  21. package/docs/mcp-setup.md +3 -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.6.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 +17 -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 +24 -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 +17 -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 +24 -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 +6 -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
@@ -6,75 +6,113 @@ import process from "node:process";
6
6
 
7
7
  const repoRoot = process.cwd();
8
8
  const skillsRoot = path.join(repoRoot, "skills");
9
- const namePattern = /^[a-z0-9-]+$/;
10
9
 
11
- function parseFrontmatter(content) {
12
- const match = content.match(/^---\n([\s\S]*?)\n---/);
10
+ function fail(message) {
11
+ console.error(message);
12
+ process.exitCode = 1;
13
+ }
14
+
15
+ function extractFrontmatter(content) {
16
+ const match = content.match(/^---\n([\s\S]*?)\n---\n?/);
13
17
  if (!match) {
14
- throw new Error("Missing YAML frontmatter");
18
+ return null;
15
19
  }
16
20
 
17
- const lines = match[1].split("\n");
18
- const fields = {};
19
- for (const line of lines) {
21
+ const yaml = match[1];
22
+ const result = {};
23
+
24
+ for (const rawLine of yaml.split("\n")) {
25
+ const line = rawLine.trim();
26
+ if (!line || line.startsWith("#")) {
27
+ continue;
28
+ }
29
+
20
30
  const separator = line.indexOf(":");
21
31
  if (separator === -1) {
22
32
  continue;
23
33
  }
34
+
24
35
  const key = line.slice(0, separator).trim();
25
- const value = line
26
- .slice(separator + 1)
27
- .trim()
28
- .replace(/^"|"$/g, "");
29
- fields[key] = value;
36
+ let value = line.slice(separator + 1).trim();
37
+
38
+ if (
39
+ (value.startsWith('"') && value.endsWith('"')) ||
40
+ (value.startsWith("'") && value.endsWith("'"))
41
+ ) {
42
+ value = value.slice(1, -1);
43
+ }
44
+
45
+ result[key] = value;
30
46
  }
31
47
 
32
- return fields;
48
+ return result;
33
49
  }
34
50
 
35
51
  async function validateSkillDir(skillDir) {
36
- const skillMdPath = path.join(skillDir, "SKILL.md");
37
- const skillMd = await fs.readFile(skillMdPath, "utf8");
38
- const frontmatter = parseFrontmatter(skillMd);
52
+ const skillName = path.basename(skillDir);
53
+ const skillPath = path.join(skillDir, "SKILL.md");
54
+ const agentPath = path.join(skillDir, "agents", "openai.yaml");
55
+
56
+ const skillContent = await fs.readFile(skillPath, "utf8").catch(() => null);
57
+ if (!skillContent) {
58
+ throw new Error(`${skillName}: missing SKILL.md`);
59
+ }
60
+
61
+ const frontmatter = extractFrontmatter(skillContent);
62
+ if (!frontmatter) {
63
+ throw new Error(`${skillName}: SKILL.md missing frontmatter`);
64
+ }
65
+
66
+ if (!frontmatter.name) {
67
+ throw new Error(`${skillName}: frontmatter missing name`);
68
+ }
69
+
70
+ if (frontmatter.name !== skillName) {
71
+ throw new Error(`${skillName}: frontmatter name must match directory name`);
72
+ }
73
+
74
+ if (!/^[a-z0-9-]+$/.test(frontmatter.name)) {
75
+ throw new Error(`${skillName}: frontmatter name must be lowercase kebab-case`);
76
+ }
39
77
 
40
- if (!frontmatter.name || !namePattern.test(frontmatter.name)) {
41
- throw new Error("Invalid or missing frontmatter name");
78
+ if (!frontmatter.description || frontmatter.description.length < 10) {
79
+ throw new Error(`${skillName}: frontmatter description is missing or too short`);
42
80
  }
43
81
 
44
- if (!frontmatter.description) {
45
- throw new Error("Missing frontmatter description");
82
+ const agentContent = await fs.readFile(agentPath, "utf8").catch(() => null);
83
+ if (!agentContent) {
84
+ throw new Error(`${skillName}: missing agents/openai.yaml`);
46
85
  }
47
86
 
48
- const openaiYaml = path.join(skillDir, "agents", "openai.yaml");
49
- await fs.access(openaiYaml);
50
- const yamlContent = await fs.readFile(openaiYaml, "utf8");
87
+ const requiredAgentKeys = [
88
+ "interface:",
89
+ "display_name:",
90
+ "short_description:",
91
+ "default_prompt:",
92
+ ];
51
93
 
52
- for (const required of ["interface:", "display_name:", "short_description:", "default_prompt:"]) {
53
- if (!yamlContent.includes(required)) {
54
- throw new Error(`Invalid agents/openai.yaml: missing ${required}`);
94
+ for (const key of requiredAgentKeys) {
95
+ if (!agentContent.includes(key)) {
96
+ throw new Error(`${skillName}: agents/openai.yaml missing ${key}`);
55
97
  }
56
98
  }
99
+
100
+ console.log(`${skillName}: valid`);
57
101
  }
58
102
 
59
103
  async function main() {
60
104
  const entries = await fs.readdir(skillsRoot, { withFileTypes: true });
61
- for (const entry of entries) {
62
- if (!entry.isDirectory()) {
63
- continue;
64
- }
105
+ const directories = entries.filter((entry) => entry.isDirectory());
65
106
 
66
- const skillDir = path.join(skillsRoot, entry.name);
67
- try {
68
- await validateSkillDir(skillDir);
69
- console.log("Skill is valid!");
70
- } catch (error) {
71
- console.error(`[ERROR] ${entry.name}: ${error.message}`);
72
- process.exit(1);
73
- }
107
+ if (directories.length === 0) {
108
+ throw new Error("No skill directories found in skills/");
109
+ }
110
+
111
+ for (const entry of directories) {
112
+ await validateSkillDir(path.join(skillsRoot, entry.name));
74
113
  }
75
114
  }
76
115
 
77
116
  main().catch((error) => {
78
- console.error(error.message);
79
- process.exitCode = 1;
117
+ fail(error.message);
80
118
  });
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: arch
3
+ description: "Use when the user wants architecture-first product and system design with explicit stack rationale, boundaries, tradeoffs, data model choices, and phased delivery planning."
4
+ ---
5
+
6
+ # Arch
7
+
8
+ Use this skill inside Codex to turn a product idea into a concrete architecture brief.
9
+
10
+ ## Output
11
+
12
+ Produce:
13
+ - problem framing
14
+ - user and workload assumptions
15
+ - system architecture and subsystem boundaries
16
+ - stack recommendation with tradeoffs
17
+ - data model and storage choices
18
+ - auth, security, and operational concerns
19
+ - phased delivery plan
20
+ - top risks and open questions
21
+ - exact next trigger, usually `$sage`
22
+
23
+ ## Rules
24
+
25
+ - Ask only for constraints that materially change the architecture.
26
+ - Keep the design biased toward the simplest system that can satisfy the stated requirements.
27
+ - Be explicit about tradeoffs, failure modes, and what should stay out of the first version.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "$arch"
3
+ short_description: "Architecture-first product and system design"
4
+ default_prompt: "Use $arch to produce architecture, stack rationale, subsystem boundaries, tradeoffs, and a phased delivery plan."
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: build
3
+ description: "Use when the user wants to decide whether implementation is ready, what remains blocked, and what the exact next build step should be."
4
+ ---
5
+
6
+ # Build
7
+
8
+ Use this skill inside Codex to convert the earlier review lanes into an implementation-ready decision.
9
+
10
+ ## Output
11
+
12
+ Produce:
13
+ - current readiness verdict
14
+ - blockers that still prevent implementation
15
+ - the narrowest viable build slice
16
+ - branch or worktree suggestions when relevant
17
+ - test and verification expectations
18
+ - the exact next implementation step
19
+
20
+ ## Rules
21
+
22
+ - Do not claim readiness if architecture, evidence, logic, security, or DX/UX gaps remain unresolved.
23
+ - Keep the recommended build slice small, testable, and reversible.
24
+ - If the user wants code immediately and the path is clear, end with a concrete implementation plan rather than more review prose.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "$build"
3
+ short_description: "Build-readiness decision and next implementation step"
4
+ default_prompt: "Use $build to decide whether implementation is ready, what remains blocked, and what the next build slice should be."
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: flow
3
+ description: "Use when the user wants logic validation: states, transitions, invariants, edge cases, dead ends, and blockers before implementation."
4
+ ---
5
+
6
+ # Flow
7
+
8
+ Use this skill inside Codex to pressure-test how the system behaves, not just how it is structured.
9
+
10
+ ## Output
11
+
12
+ Produce:
13
+ - key actors and system states
14
+ - main flows and failure flows
15
+ - invariants and state transitions
16
+ - race conditions, dead ends, and consistency risks
17
+ - missing requirements or ambiguous behavior
18
+ - exact next trigger, usually `$vet`
19
+
20
+ ## Rules
21
+
22
+ - Focus on behavior, not UI polish or low-level code details.
23
+ - Surface ambiguity aggressively when it affects correctness.
24
+ - Prefer simple state models over sprawling branching logic.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "$flow"
3
+ short_description: "Logic, states, transitions, and blockers"
4
+ default_prompt: "Use $flow to map business logic, state transitions, invariants, and blockers in the current design."
package/skills/index.json CHANGED
@@ -1,40 +1,45 @@
1
1
  {
2
- "schemaVersion": "1.0.0",
2
+ "schemaVersion": "0.1.0",
3
3
  "skills": [
4
4
  {
5
- "name": "meta-architect",
6
- "path": "skills/meta-architect",
7
- "description": "Use when Codex needs the full Meta-Architect runtime layer in this repo: architecture, evidence, logic, security, experience, and build workflows operating through skill tags inside Codex. Trigger for requests about Meta-Architect orchestration, build gating, GitMCP-backed evidence, branch/worktree planning, or releasing through `development` and `prod`."
5
+ "name": "arch",
6
+ "path": "skills/arch",
7
+ "description": "Use when the user wants architecture-first product and system design with explicit stack rationale, boundaries, tradeoffs, data model choices, and phased delivery planning."
8
+ },
9
+ {
10
+ "name": "build",
11
+ "path": "skills/build",
12
+ "description": "Use when the user wants to decide whether implementation is ready, what remains blocked, and what the exact next build step should be."
8
13
  },
9
14
  {
10
- "name": "meta-architect-arch",
11
- "path": "skills/meta-architect-arch",
12
- "description": "Use when Codex needs to run or explain the Meta-Architect `$arch` lane for architecture, stack rationale, subsystem layout, and blueprint decisions. Trigger for requests about architecture design inside a Meta-Architect-managed repo or for producing the first design artifact after the idea is captured."
15
+ "name": "flow",
16
+ "path": "skills/flow",
17
+ "description": "Use when the user wants logic validation: states, transitions, invariants, edge cases, dead ends, and blockers before implementation."
13
18
  },
14
19
  {
15
- "name": "meta-architect-build",
16
- "path": "skills/meta-architect-build",
17
- "description": "Use when Codex needs to run or inspect the Meta-Architect `$build` lane for gate evaluation, branch suggestions, worktree planning, and build readiness. Trigger for requests about whether the build is unlocked, which gate is blocking, or what feature branches and worktree commands should be used next."
20
+ "name": "maestro",
21
+ "path": "skills/maestro",
22
+ "description": "Use when the user wants Meta-Architect to choose the best next workflow step, explain why, and recommend the right lane or assignment."
18
23
  },
19
24
  {
20
- "name": "meta-architect-flow",
21
- "path": "skills/meta-architect-flow",
22
- "description": "Use when Codex needs to run or inspect the Meta-Architect `$flow` lane for business logic, state transitions, and blockers. Trigger for requests about logic maps, dead ends, state validation, or whether the workflow is ready to proceed to security review."
25
+ "name": "meta-architect",
26
+ "path": "skills/meta-architect",
27
+ "description": "Use when the user wants the full Meta-Architect workflow inside Codex: architecture-first planning, evidence-backed OSS selection, logic review, security review, DX/UX review, and build readiness without leaving the Codex session."
23
28
  },
24
29
  {
25
- "name": "meta-architect-sage",
26
- "path": "skills/meta-architect-sage",
27
- "description": "Use when Codex needs to run or inspect the Meta-Architect `$sage` lane for OSS evidence binding through GitMCP and MCP. Trigger for requests about verifying repos, collecting evidence from configured GitMCP endpoints, or checking whether a recommendation is VERIFIED, PARTIAL, or MISSING."
30
+ "name": "sage",
31
+ "path": "skills/sage",
32
+ "description": "Use when the user wants evidence-backed technology choices, OSS evaluation, and source-grounded validation of the stack proposed in `$arch`."
28
33
  },
29
34
  {
30
- "name": "meta-architect-vet",
31
- "path": "skills/meta-architect-vet",
32
- "description": "Use when Codex needs to run or inspect the Meta-Architect `$vet` lane for security review, risk logging, and CVE-style findings. Trigger for requests about security posture, safer alternatives, audit evidence, or whether the build should stay blocked on security grounds."
35
+ "name": "vet",
36
+ "path": "skills/vet",
37
+ "description": "Use when the user wants a security and trust-boundary review of the current design before implementation or release."
33
38
  },
34
39
  {
35
- "name": "meta-architect-vibe",
36
- "path": "skills/meta-architect-vibe",
37
- "description": "Use when Codex needs to run or inspect the Meta-Architect `$vibe` lane for developer-experience and user-experience review before build execution. Trigger for requests about DX friction, UX risks, operator flow quality, or whether the experience gate should be GREEN or WAIVED."
40
+ "name": "vibe",
41
+ "path": "skills/vibe",
42
+ "description": "Use when the user wants a DX and UX review of the planned workflow before implementation proceeds."
38
43
  }
39
44
  ]
40
45
  }
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: maestro
3
+ description: "Use when the user wants Meta-Architect to choose the best next workflow step, explain why, and recommend the right lane or assignment."
4
+ ---
5
+
6
+ # Maestro
7
+
8
+ Use this skill inside Codex when you want Meta-Architect to act like a workflow manager.
9
+
10
+ ## Output
11
+
12
+ Produce:
13
+ - current situation summary
14
+ - best next step
15
+ - why that step is next
16
+ - recommended lane or assignment
17
+ - what to avoid doing yet
18
+ - exact next trigger, command, or handoff
19
+
20
+ ## Rules
21
+
22
+ - Prefer the smallest next step that moves the workflow forward safely.
23
+ - Respect current gate state before recommending implementation or release work.
24
+ - Be explicit when more evidence, planning, or validation is still needed.
25
+ - Route to the in-session skill flow first; use helper commands only when they are the clearest support path.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "$maestro"
3
+ short_description: "Best next step and lane orchestration"
4
+ default_prompt: "Use $maestro to inspect the current Meta-Architect workflow state, choose the best next step, explain why it is next, and recommend the right lane or assignment."
@@ -1,36 +1,30 @@
1
1
  ---
2
2
  name: meta-architect
3
- description: "Use when Codex needs the full Meta-Architect runtime layer in this repo: architecture, evidence, logic, security, experience, and build workflows operating through skill tags inside Codex. Trigger for requests about Meta-Architect orchestration, build gating, GitMCP-backed evidence, branch/worktree planning, or releasing through `development` and `prod`."
3
+ description: "Use when the user wants the full Meta-Architect workflow inside Codex: architecture-first planning, evidence-backed OSS selection, logic review, security review, DX/UX review, and build readiness without leaving the Codex session."
4
4
  ---
5
5
 
6
6
  # Meta-Architect
7
7
 
8
- Meta-Architect is the umbrella runtime skill for the Codex-hosted workflow in this repository.
8
+ ## Overview
9
9
 
10
- ## Canonical runtime usage
10
+ Run the full Meta-Architect workflow inside Codex. Use this skill when the user wants the gated design-and-review sequence rather than a single specialist lane.
11
11
 
12
- 1. Install `@openai/codex` and `meta-architect`
13
- 2. Launch `ma --madmax --high`
14
- 3. Operate through `$arch`, `$sage`, `$flow`, `$vet`, `$vibe`, `$build`
12
+ ## Workflow
15
13
 
16
- ## Secondary helper usage
14
+ 1. Start with `$arch` and turn the user's goal into a concrete architecture brief.
15
+ 2. Continue with `$sage` to validate core stack choices against official docs or approved repo-backed sources.
16
+ 3. Run `$flow` to map states, transitions, invariants, and blockers.
17
+ 4. Run `$vet` to review trust boundaries, auth, data handling, and abuse paths.
18
+ 5. Run `$vibe` to review developer and user experience quality.
19
+ 6. Finish with `$build` to decide whether implementation is ready, what remains blocked, and what the exact next execution step should be.
17
20
 
18
- Use helper commands only for scripted validation, diagnostics, or repo-local maintenance:
19
- - `ma status`
20
- - `ma idea "..."`
21
- - `ma run ...`
22
- - `ma merge`
23
- - `ma release`
24
- - `ma doctor`
25
- - `ma setup`
21
+ ## Rules
26
22
 
27
- ## Expected outputs
23
+ - Stay inside Codex unless the user explicitly asks for repo-local helper commands.
24
+ - Keep the workflow architecture-first. Do not jump into code before the architecture and review lanes are grounded.
25
+ - Prefer official docs, upstream repos, and repo-configured GitMCP sources when validating tooling choices.
26
+ - End each lane with a clear result shape: decision, evidence, blockers, and exact next trigger.
28
27
 
29
- - appended decisions in `.omx/decisions.json`
30
- - gate updates in `.omx/release.json`
31
- - evidence updates under `.omx/evidence/`
32
- - explicit blockers and next allowed triggers when work is blocked
28
+ ## References
33
29
 
34
- ## Contract rule
35
-
36
- Do not treat helper commands as the primary story. The primary story is always the Codex session launched with `ma --madmax --high`.
30
+ - For release gates and branch policy, read `references/core-release-rules.md`.
@@ -1,4 +1,4 @@
1
1
  interface:
2
- display_name: "Meta-Architect"
3
- short_description: "Codex-native runtime orchestration and gated build workflows"
4
- default_prompt: "Use $meta-architect inside Codex to run the gated Meta-Architect runtime workflow in this repo."
2
+ display_name: "$meta-architect"
3
+ short_description: "Full Meta-Architect skill workflow"
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."
@@ -1,6 +1,6 @@
1
1
  # Core Release Rules
2
2
 
3
- - Required status fields live in `.omx/decisions.json` and `.omx/release.json`.
3
+ - Required status fields live in `.ma/decisions.json` and `.ma/release.json`.
4
4
  - `$build` is blocked unless:
5
5
  - `idea_status = CLEAR`
6
6
  - `architecture_status = APPROVED`
@@ -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 `ma status`, `ma merge`, and `ma release` instead of manual state edits.
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.
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: sage
3
+ description: "Use when the user wants evidence-backed technology choices, OSS evaluation, and source-grounded validation of the stack proposed in `$arch`."
4
+ ---
5
+
6
+ # Sage
7
+
8
+ Use this skill inside Codex to verify or challenge stack choices with real sources.
9
+
10
+ ## Output
11
+
12
+ Produce:
13
+ - candidate tools, libraries, or services
14
+ - why each option fits or fails the architecture
15
+ - source-backed evidence from official docs, upstream repos, or approved GitMCP sources
16
+ - recommendation with tradeoffs
17
+ - unresolved gaps or missing evidence
18
+ - exact next trigger, usually `$flow`
19
+
20
+ ## Rules
21
+
22
+ - Do not invent package capabilities or maturity claims.
23
+ - Prefer primary sources over summaries when validating technical details.
24
+ - If the evidence is weak or contradictory, say so clearly and keep the recommendation conditional.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "$sage"
3
+ short_description: "Evidence-backed stack and OSS validation"
4
+ default_prompt: "Use $sage to validate stack choices with official docs, upstream repos, and approved GitMCP-backed sources."
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: vet
3
+ description: "Use when the user wants a security and trust-boundary review of the current design before implementation or release."
4
+ ---
5
+
6
+ # Vet
7
+
8
+ Use this skill inside Codex to review security posture before the build lane.
9
+
10
+ ## Output
11
+
12
+ Produce:
13
+ - trust boundaries
14
+ - authn/authz expectations
15
+ - sensitive data paths
16
+ - abuse cases and likely failure modes
17
+ - concrete mitigations
18
+ - release blockers vs acceptable risks
19
+ - exact next trigger, usually `$vibe`
20
+
21
+ ## Rules
22
+
23
+ - Prioritize material risks over exhaustive but low-value checklists.
24
+ - Call out missing assumptions that affect security posture.
25
+ - Distinguish between must-fix blockers and documented accepted risk.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "$vet"
3
+ short_description: "Security and trust-boundary review"
4
+ default_prompt: "Use $vet to review trust boundaries, security risks, abuse cases, and safer alternatives in the current design."
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: vibe
3
+ description: "Use when the user wants a DX and UX review of the planned workflow before implementation proceeds."
4
+ ---
5
+
6
+ # Vibe
7
+
8
+ Use this skill inside Codex to review whether the system will feel coherent for both operators and end users.
9
+
10
+ ## Output
11
+
12
+ Produce:
13
+ - developer workflow risks
14
+ - user workflow risks
15
+ - complexity hotspots
16
+ - onboarding or operability friction
17
+ - simplifications that improve clarity
18
+ - exact next trigger, usually `$build`
19
+
20
+ ## Rules
21
+
22
+ - Focus on concrete friction, not aesthetics-only feedback.
23
+ - Prefer fewer surfaces, fewer steps, and clearer operator outcomes.
24
+ - Preserve the architecture and security constraints established earlier in the flow.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "$vibe"
3
+ short_description: "DX and UX review before implementation"
4
+ default_prompt: "Use $vibe to review developer and user experience risks before the build lane proceeds."
package/sprint/00-idea.md CHANGED
@@ -12,7 +12,7 @@ Capture a project idea, clarify scope and constraints, and move the repository f
12
12
 
13
13
  ## Expected outputs
14
14
 
15
- - idea decision entry in `.omx/decisions.json`
15
+ - idea decision entry in `.ma/decisions.json`
16
16
  - `idea_status = CLEAR` when the brief is good enough to proceed
17
17
 
18
18
  ## Exit criteria
@@ -11,7 +11,7 @@ Produce a structured first-pass architecture blueprint, stack rationale, and dow
11
11
 
12
12
  ## Expected outputs
13
13
 
14
- - architecture decision in `.omx/decisions.json`
14
+ - architecture decision in `.ma/decisions.json`
15
15
  - `architecture_status = APPROVED`
16
16
 
17
17
  ## Exit criteria
@@ -11,7 +11,7 @@ Bind major architecture choices to approved GitMCP-backed evidence.
11
11
 
12
12
  ## Expected outputs
13
13
 
14
- - `.omx/evidence/sources.json`
14
+ - `.ma/evidence/sources.json`
15
15
  - `evidence_status = VERIFIED | PARTIAL | MISSING`
16
16
 
17
17
  ## Exit criteria
@@ -11,7 +11,7 @@ Record a structured first-pass logic/state review and block progress if prerequi
11
11
 
12
12
  ## Expected outputs
13
13
 
14
- - logic review entry in `.omx/decisions.json`
14
+ - logic review entry in `.ma/decisions.json`
15
15
  - `logic_status = GREEN | RED`
16
16
 
17
17
  ## Exit criteria
@@ -10,8 +10,8 @@ Record a baseline security pass and keep the workflow blocked if prerequisites a
10
10
 
11
11
  ## Expected outputs
12
12
 
13
- - `.omx/evidence/audits.json`
14
- - `.omx/evidence/cves.json`
13
+ - `.ma/evidence/audits.json`
14
+ - `.ma/evidence/cves.json`
15
15
  - `security_status = GREEN | RED`
16
16
 
17
17
  ## Exit criteria
@@ -10,7 +10,7 @@ Record a baseline developer and user experience pass before build unlock.
10
10
 
11
11
  ## Expected outputs
12
12
 
13
- - `.omx/evidence/outcomes.json`
13
+ - `.ma/evidence/outcomes.json`
14
14
  - `experience_status = GREEN | RED | WAIVED`
15
15
 
16
16
  ## Exit criteria
@@ -1,5 +1,5 @@
1
1
  import { readJson, writeJson } from "./fs-utils.js";
2
- import { getDecisionsPath } from "./paths.js";
2
+ import { getRuntimeReadPath, getRuntimeWritePath } from "./paths.js";
3
3
 
4
4
  function validateDecisionShape(entry) {
5
5
  const required = ["decision", "status", "evidence", "blockers", "next_allowed_triggers"];
@@ -11,7 +11,7 @@ function validateDecisionShape(entry) {
11
11
  }
12
12
 
13
13
  export async function loadDecisionLog() {
14
- const parsed = await readJson(getDecisionsPath());
14
+ const parsed = await readJson(getRuntimeReadPath("decisions.json"));
15
15
 
16
16
  if (!parsed || typeof parsed !== "object" || !Array.isArray(parsed.decisions)) {
17
17
  throw new Error("Decision log must be an object with a decisions array");
@@ -28,7 +28,7 @@ export async function appendDecision(entry) {
28
28
  timestamp: new Date().toISOString(),
29
29
  });
30
30
 
31
- await writeJson(getDecisionsPath(), log);
31
+ await writeJson(getRuntimeWritePath("decisions.json"), log);
32
32
  }
33
33
 
34
34
  export async function updateDecisionStatuses(statusUpdates) {
@@ -36,5 +36,5 @@ export async function updateDecisionStatuses(statusUpdates) {
36
36
  for (const [field, value] of Object.entries(statusUpdates)) {
37
37
  log[field] = value;
38
38
  }
39
- await writeJson(getDecisionsPath(), log);
39
+ await writeJson(getRuntimeWritePath("decisions.json"), log);
40
40
  }