@enterpriseai/cli 3.19.0 → 3.19.1

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 (362) hide show
  1. package/package.json +1 -1
  2. package/resources/gofer/.gofer-version +4 -357
  3. package/resources/gofer/agents-skills/eai/SKILL.md +365 -0
  4. package/resources/gofer/agents-skills/eai-update/SKILL.md +56 -0
  5. package/resources/gofer/agents-skills/gofer-documentation/SKILL.md +93 -0
  6. package/resources/gofer/bash-scripts/create-new-feature.sh +3 -1
  7. package/resources/gofer/bash-scripts/sync-implementation-status.sh +4 -3
  8. package/resources/gofer/bash-scripts/update-agent-context.sh +7 -8
  9. package/resources/gofer/bash-scripts/validate-artifact.sh +10 -6
  10. package/resources/gofer/bash-scripts/verify-object-type-routing-workspace.sh +184 -0
  11. package/resources/gofer/claude-commands/eai-update.md +46 -0
  12. package/resources/gofer/claude-commands/eai.md +355 -0
  13. package/resources/gofer/claude-skills/eai/SKILL.md +365 -0
  14. package/resources/gofer/claude-skills/eai-update/SKILL.md +56 -0
  15. package/resources/gofer/claude-skills/gofer-documentation/SKILL.md +93 -0
  16. package/resources/gofer/commands/0_gofer_start.md +440 -99
  17. package/resources/gofer/commands/0a_problem_validation.md +187 -27
  18. package/resources/gofer/commands/10_gofer_cloud.md +183 -23
  19. package/resources/gofer/commands/1_gofer_research.md +239 -30
  20. package/resources/gofer/commands/2_gofer_specify.md +239 -35
  21. package/resources/gofer/commands/3_gofer_plan.md +259 -43
  22. package/resources/gofer/commands/4_gofer_tasks.md +401 -81
  23. package/resources/gofer/commands/5_gofer_implement.md +375 -84
  24. package/resources/gofer/commands/6_gofer_validate.md +284 -53
  25. package/resources/gofer/commands/7_gofer_save.md +187 -26
  26. package/resources/gofer/commands/7a_stakeholder_comms.md +183 -23
  27. package/resources/gofer/commands/8_gofer_branding.md +183 -23
  28. package/resources/gofer/commands/9_gofer_tests.md +212 -23
  29. package/resources/gofer/commands/gofer_bootstrap_workspace.md +121 -8
  30. package/resources/gofer/commands/gofer_check_workspace.md +123 -8
  31. package/resources/gofer/commands/gofer_constitution.md +183 -23
  32. package/resources/gofer/commands/gofer_diagnose.md +183 -23
  33. package/resources/gofer/commands/gofer_eai_first_run.md +254 -25
  34. package/resources/gofer/commands/gofer_hydrate.md +183 -23
  35. package/resources/gofer/commands/gofer_personality.md +117 -6
  36. package/resources/gofer/commands/gofer_plan.md +117 -6
  37. package/resources/gofer/commands/gofer_side.md +117 -6
  38. package/resources/gofer/commands/gofer_spec_summary.md +183 -23
  39. package/resources/gofer/commands/gofer_tdd.md +183 -23
  40. package/resources/gofer/commands/gofer_vocabulary.md +185 -25
  41. package/resources/gofer/commands/gofer_zoom_out.md +183 -23
  42. package/resources/gofer/config/typesafe-learning-review.json +16 -0
  43. package/resources/gofer/config/typesafe-semantic-review.json +9 -0
  44. package/resources/gofer/copilot-instructions/gofer-cost.instructions.md +15 -6
  45. package/resources/gofer/copilot-instructions/typescript.instructions.md +1 -1
  46. package/resources/gofer/copilot-prompts/eai-update.prompt.md +58 -0
  47. package/resources/gofer/copilot-prompts/eai.prompt.md +367 -0
  48. package/resources/gofer/gemini/commands/gofer/eai-update.md +22 -0
  49. package/resources/gofer/gemini/commands/gofer/eai-update.toml +2 -0
  50. package/resources/gofer/gemini/commands/gofer/eai.md +357 -0
  51. package/resources/gofer/gemini/commands/gofer/eai.toml +2 -0
  52. package/resources/gofer/gemini/commands/gofer/manifest.json +3 -27
  53. package/resources/gofer/gemini/extension.json +4 -4
  54. package/resources/gofer/github-agents/eai.agent.md +83 -0
  55. package/resources/gofer/github-agents/gofer-business.agent.md +73 -4
  56. package/resources/gofer/github-agents/gofer-implement.agent.md +71 -2
  57. package/resources/gofer/github-agents/gofer-plan.agent.md +72 -2
  58. package/resources/gofer/github-agents/gofer-research.agent.md +72 -2
  59. package/resources/gofer/github-agents/gofer-validate.agent.md +72 -2
  60. package/resources/gofer/github-skills/eai/SKILL.md +365 -0
  61. package/resources/gofer/github-skills/eai-update/SKILL.md +56 -0
  62. package/resources/gofer/github-skills/gofer-documentation/SKILL.md +93 -0
  63. package/resources/gofer/grok-skills/eai/SKILL.md +267 -14
  64. package/resources/gofer/grok-skills/eai-update/SKILL.md +56 -0
  65. package/resources/gofer/hook-scripts/user-prompt-submit.mjs +58 -13
  66. package/resources/gofer/instruction-templates/base/agents-base.md +8 -4
  67. package/resources/gofer/instruction-templates/gofer/gofer-claude.md +7 -5
  68. package/resources/gofer/instruction-templates/gofer/gofer-copilot.md +10 -8
  69. package/resources/gofer/memory/constitution.md +9 -7
  70. package/resources/gofer/memory/gofer-model-policy.yaml +23 -1
  71. package/resources/gofer/memory/lessons.md +0 -31
  72. package/resources/gofer/node-scripts/canonical-descriptions.mjs +1 -1
  73. package/resources/gofer/node-scripts/check-version-alignment.mjs +4 -7
  74. package/resources/gofer/node-scripts/delivery-lineage-corpus.mjs +156 -0
  75. package/resources/gofer/node-scripts/generate-commands.mjs +1073 -265
  76. package/resources/gofer/node-scripts/gofer-acceptance-check.mjs +143 -0
  77. package/resources/gofer/node-scripts/gofer-agent-catalog.mjs +271 -0
  78. package/resources/gofer/node-scripts/gofer-benchmark-executor.mjs +123 -0
  79. package/resources/gofer/node-scripts/gofer-benchmark-sign.mjs +62 -0
  80. package/resources/gofer/node-scripts/gofer-benchmark-signer.mjs +89 -0
  81. package/resources/gofer/node-scripts/gofer-benchmark.mjs +76 -0
  82. package/resources/gofer/node-scripts/gofer-blocker-control.mjs +274 -0
  83. package/resources/gofer/node-scripts/gofer-claude-adapter.mjs +154 -0
  84. package/resources/gofer/node-scripts/gofer-closed-loop-audit.mjs +19 -2
  85. package/resources/gofer/node-scripts/gofer-delivery-check.mjs +121 -0
  86. package/resources/gofer/node-scripts/gofer-encrypted-key.mjs +58 -0
  87. package/resources/gofer/node-scripts/gofer-execution-metrics.mjs +477 -0
  88. package/resources/gofer/node-scripts/gofer-execution-recovery.mjs +334 -0
  89. package/resources/gofer/node-scripts/gofer-grok-adapter.mjs +184 -0
  90. package/resources/gofer/node-scripts/gofer-heldout-corpus.mjs +73 -0
  91. package/resources/gofer/node-scripts/gofer-heldout-snapshot.mjs +286 -0
  92. package/resources/gofer/node-scripts/gofer-heldout-verifier.mjs +211 -0
  93. package/resources/gofer/node-scripts/gofer-host-capability.mjs +335 -0
  94. package/resources/gofer/node-scripts/gofer-independent-reviewer.mjs +130 -0
  95. package/resources/gofer/node-scripts/gofer-live-routing.mjs +109 -0
  96. package/resources/gofer/node-scripts/gofer-local-capability-issuer.mjs +71 -0
  97. package/resources/gofer/node-scripts/gofer-local-isolation.mjs +175 -0
  98. package/resources/gofer/node-scripts/gofer-local-settings-cleanup.mjs +388 -0
  99. package/resources/gofer/node-scripts/gofer-loop-audit.mjs +54 -3
  100. package/resources/gofer/node-scripts/gofer-native-adapter.mjs +567 -0
  101. package/resources/gofer/node-scripts/gofer-native-benchmark-dispatch.mjs +145 -0
  102. package/resources/gofer/node-scripts/gofer-native-runtime.mjs +169 -0
  103. package/resources/gofer/node-scripts/gofer-pre-edit-check.mjs +204 -0
  104. package/resources/gofer/node-scripts/gofer-priority-check.mjs +214 -0
  105. package/resources/gofer/node-scripts/gofer-response-check.mjs +56 -0
  106. package/resources/gofer/node-scripts/gofer-reviewed-learning.mjs +1232 -0
  107. package/resources/gofer/node-scripts/gofer-run-verified-task.mjs +330 -0
  108. package/resources/gofer/node-scripts/gofer-runtime-ledger.mjs +289 -0
  109. package/resources/gofer/node-scripts/gofer-semantic-drift.mjs +584 -0
  110. package/resources/gofer/node-scripts/gofer-surface-update.mjs +1178 -0
  111. package/resources/gofer/node-scripts/gofer-trust-bootstrap.mjs +77 -0
  112. package/resources/gofer/node-scripts/gofer-trusted-benchmark.mjs +102 -0
  113. package/resources/gofer/node-scripts/gofer-trusted-evaluator.mjs +274 -0
  114. package/resources/gofer/node-scripts/gofer-tty-prompt.mjs +34 -0
  115. package/resources/gofer/node-scripts/gofer-typesafe-credentials.mjs +435 -0
  116. package/resources/gofer/node-scripts/gofer-ui-preview.mjs +1212 -0
  117. package/resources/gofer/node-scripts/gofer-verified-execution.mjs +484 -0
  118. package/resources/gofer/node-scripts/gofer-verifier-key-ceremony.mjs +101 -0
  119. package/resources/gofer/node-scripts/gofer-worktree-layout.mjs +32 -0
  120. package/resources/gofer/node-scripts/object-type-routing-phase-bundle.mjs +360 -0
  121. package/resources/gofer/node-scripts/package-agent-plugin.mjs +574 -82
  122. package/resources/gofer/node-scripts/parse-stage-command.mjs +1 -1
  123. package/resources/gofer/node-scripts/render-delivery-lineage.mjs +178 -0
  124. package/resources/gofer/node-scripts/sync-extension-resources.mjs +78 -2
  125. package/resources/gofer/node-scripts/validate-object-type-identifiers.mjs +767 -0
  126. package/resources/gofer/node-scripts/validate-object-type-routing-workspace.mjs +1325 -0
  127. package/resources/gofer/node-scripts/validate-v4-resource-contract.d.mts +44 -0
  128. package/resources/gofer/node-scripts/validate-v4-resource-contract.mjs +957 -0
  129. package/resources/gofer/node-scripts/workspace-bootstrap-lib.mjs +685 -116
  130. package/resources/gofer/references/agent-catalog.json +126 -0
  131. package/resources/gofer/references/blocker-mediation.md +156 -0
  132. package/resources/gofer/references/business-updates-and-goal-checks.md +109 -0
  133. package/resources/gofer/references/delivery-lineage.md +48 -0
  134. package/resources/gofer/references/mvp-capability-validation.md +102 -0
  135. package/resources/gofer/references/platform/README.md +1 -1
  136. package/resources/gofer/references/platform/eai-app-template.md +15 -13
  137. package/resources/gofer/references/platform/eai-auth-access.md +104 -0
  138. package/resources/gofer/references/platform/eai-config-driven-ui.md +5 -5
  139. package/resources/gofer/references/platform/eai-error-catalog.yaml +77 -19
  140. package/resources/gofer/references/platform/eai-repo-contract.md +61 -23
  141. package/resources/gofer/references/platform/eai-service-patterns.md +102 -105
  142. package/resources/gofer/references/platform/eai.md +44 -8
  143. package/resources/gofer/references/platform/vertical-template.md +10 -9
  144. package/resources/gofer/references/priority-outcome-protection.md +152 -0
  145. package/resources/gofer/references/verified-agent-execution.md +179 -0
  146. package/resources/gofer/schemas/gofer-learning-trace-v1.json +70 -0
  147. package/resources/gofer/specify-commands/0_gofer_start.md +440 -99
  148. package/resources/gofer/specify-commands/0a_problem_validation.md +187 -27
  149. package/resources/gofer/specify-commands/10_gofer_cloud.md +183 -23
  150. package/resources/gofer/specify-commands/1_gofer_research.md +239 -30
  151. package/resources/gofer/specify-commands/2_gofer_specify.md +239 -35
  152. package/resources/gofer/specify-commands/3_gofer_plan.md +259 -43
  153. package/resources/gofer/specify-commands/4_gofer_tasks.md +401 -81
  154. package/resources/gofer/specify-commands/5_gofer_implement.md +375 -84
  155. package/resources/gofer/specify-commands/6_gofer_validate.md +284 -53
  156. package/resources/gofer/specify-commands/7_gofer_save.md +187 -26
  157. package/resources/gofer/specify-commands/7a_stakeholder_comms.md +183 -23
  158. package/resources/gofer/specify-commands/8_gofer_branding.md +183 -23
  159. package/resources/gofer/specify-commands/9_gofer_tests.md +212 -23
  160. package/resources/gofer/specify-commands/gofer_bootstrap_workspace.md +121 -8
  161. package/resources/gofer/specify-commands/gofer_check_workspace.md +123 -8
  162. package/resources/gofer/specify-commands/gofer_constitution.md +183 -23
  163. package/resources/gofer/specify-commands/gofer_diagnose.md +183 -23
  164. package/resources/gofer/specify-commands/gofer_eai_first_run.md +254 -25
  165. package/resources/gofer/specify-commands/gofer_hydrate.md +183 -23
  166. package/resources/gofer/specify-commands/gofer_personality.md +117 -6
  167. package/resources/gofer/specify-commands/gofer_plan.md +117 -6
  168. package/resources/gofer/specify-commands/gofer_side.md +117 -6
  169. package/resources/gofer/specify-commands/gofer_spec_summary.md +183 -23
  170. package/resources/gofer/specify-commands/gofer_tdd.md +183 -23
  171. package/resources/gofer/specify-commands/gofer_vocabulary.md +185 -25
  172. package/resources/gofer/specify-commands/gofer_zoom_out.md +183 -23
  173. package/resources/gofer/specify-config/object-type-routing.json +24 -0
  174. package/resources/gofer/specify-config/typesafe-learning-review.json +16 -0
  175. package/resources/gofer/specify-config/typesafe-semantic-review.json +9 -0
  176. package/resources/gofer/system-skills/eai/SKILL.md +365 -0
  177. package/resources/gofer/system-skills/eai-update/SKILL.md +56 -0
  178. package/resources/gofer/system-skills/gofer-documentation/SKILL.md +93 -0
  179. package/resources/gofer/templates/build-map-template.md +64 -0
  180. package/resources/gofer/templates/business-scenarios-template.json +14 -0
  181. package/resources/gofer/templates/ciso-security-summary-template.md +3 -3
  182. package/resources/gofer/templates/context-bundle-template.md +4 -3
  183. package/resources/gofer/templates/contract-pack-template.md +8 -8
  184. package/resources/gofer/templates/cto-architecture-summary-template.md +3 -3
  185. package/resources/gofer/templates/delivery-lineage-template.json +8 -0
  186. package/resources/gofer/templates/eai-preflight-template.md +109 -68
  187. package/resources/gofer/templates/goal-ledger-template.json +1 -1
  188. package/resources/gofer/templates/gofer-model-policy.yaml +28 -6
  189. package/resources/gofer/templates/loop-contract-template.json +3 -1
  190. package/resources/gofer/templates/plan-template.md +8 -7
  191. package/resources/gofer/templates/priority-plan-template.json +29 -0
  192. package/resources/gofer/templates/proposal-review-template.md +6 -3
  193. package/resources/gofer/templates/release-capability-ledger-template.md +24 -0
  194. package/resources/gofer/templates/research-template.md +7 -6
  195. package/resources/gofer/templates/spec-summary-template.md +1 -1
  196. package/resources/gofer/templates/spec-template.md +45 -6
  197. package/resources/gofer/templates/tasks-template.md +12 -3
  198. package/resources/gofer/templates/ui-preview-brief-template.md +55 -5
  199. package/resources/gofer/templates/ui-review-log-template.md +21 -3
  200. package/resources/gofer/templates/ui-show-and-tell-template.md +46 -0
  201. package/resources/gofer/templates/visuals/capability-heatmap-template.md +2 -2
  202. package/resources/gofer/templates/working-backwards-prfaq-template.md +9 -8
  203. package/resources/linked-sources.json +2 -2
  204. package/resources/gofer/agents-skills/0_gofer_start/SKILL.md +0 -1287
  205. package/resources/gofer/agents-skills/0a_problem_validation/SKILL.md +0 -429
  206. package/resources/gofer/agents-skills/10_gofer_cloud/SKILL.md +0 -635
  207. package/resources/gofer/agents-skills/1_gofer_research/SKILL.md +0 -1159
  208. package/resources/gofer/agents-skills/2_gofer_specify/SKILL.md +0 -860
  209. package/resources/gofer/agents-skills/3_gofer_plan/SKILL.md +0 -899
  210. package/resources/gofer/agents-skills/4_gofer_tasks/SKILL.md +0 -760
  211. package/resources/gofer/agents-skills/5_gofer_implement/SKILL.md +0 -944
  212. package/resources/gofer/agents-skills/6_gofer_validate/SKILL.md +0 -2302
  213. package/resources/gofer/agents-skills/7_gofer_save/SKILL.md +0 -423
  214. package/resources/gofer/agents-skills/7a_stakeholder_comms/SKILL.md +0 -508
  215. package/resources/gofer/agents-skills/8_gofer_branding/SKILL.md +0 -315
  216. package/resources/gofer/agents-skills/9_gofer_tests/SKILL.md +0 -558
  217. package/resources/gofer/agents-skills/gofer_bootstrap_workspace/SKILL.md +0 -148
  218. package/resources/gofer/agents-skills/gofer_check_workspace/SKILL.md +0 -119
  219. package/resources/gofer/agents-skills/gofer_constitution/SKILL.md +0 -612
  220. package/resources/gofer/agents-skills/gofer_diagnose/SKILL.md +0 -114
  221. package/resources/gofer/agents-skills/gofer_eai_first_run/SKILL.md +0 -397
  222. package/resources/gofer/agents-skills/gofer_hydrate/SKILL.md +0 -561
  223. package/resources/gofer/agents-skills/gofer_personality/SKILL.md +0 -44
  224. package/resources/gofer/agents-skills/gofer_plan/SKILL.md +0 -40
  225. package/resources/gofer/agents-skills/gofer_side/SKILL.md +0 -45
  226. package/resources/gofer/agents-skills/gofer_spec_summary/SKILL.md +0 -112
  227. package/resources/gofer/agents-skills/gofer_tdd/SKILL.md +0 -112
  228. package/resources/gofer/agents-skills/gofer_vocabulary/SKILL.md +0 -112
  229. package/resources/gofer/agents-skills/gofer_zoom_out/SKILL.md +0 -112
  230. package/resources/gofer/claude-commands/0_gofer_start.md +0 -1282
  231. package/resources/gofer/claude-commands/0a_problem_validation.md +0 -424
  232. package/resources/gofer/claude-commands/10_gofer_cloud.md +0 -630
  233. package/resources/gofer/claude-commands/1_gofer_research.md +0 -1154
  234. package/resources/gofer/claude-commands/2_gofer_specify.md +0 -855
  235. package/resources/gofer/claude-commands/3_gofer_plan.md +0 -894
  236. package/resources/gofer/claude-commands/4_gofer_tasks.md +0 -755
  237. package/resources/gofer/claude-commands/5_gofer_implement.md +0 -939
  238. package/resources/gofer/claude-commands/6_gofer_validate.md +0 -2297
  239. package/resources/gofer/claude-commands/7_gofer_save.md +0 -418
  240. package/resources/gofer/claude-commands/7a_stakeholder_comms.md +0 -503
  241. package/resources/gofer/claude-commands/8_gofer_branding.md +0 -310
  242. package/resources/gofer/claude-commands/9_gofer_tests.md +0 -553
  243. package/resources/gofer/claude-commands/gofer_bootstrap_workspace.md +0 -143
  244. package/resources/gofer/claude-commands/gofer_check_workspace.md +0 -114
  245. package/resources/gofer/claude-commands/gofer_constitution.md +0 -607
  246. package/resources/gofer/claude-commands/gofer_diagnose.md +0 -109
  247. package/resources/gofer/claude-commands/gofer_eai_first_run.md +0 -392
  248. package/resources/gofer/claude-commands/gofer_hydrate.md +0 -556
  249. package/resources/gofer/claude-commands/gofer_personality.md +0 -39
  250. package/resources/gofer/claude-commands/gofer_plan.md +0 -35
  251. package/resources/gofer/claude-commands/gofer_side.md +0 -40
  252. package/resources/gofer/claude-commands/gofer_spec_summary.md +0 -107
  253. package/resources/gofer/claude-commands/gofer_tdd.md +0 -107
  254. package/resources/gofer/claude-commands/gofer_vocabulary.md +0 -107
  255. package/resources/gofer/claude-commands/gofer_zoom_out.md +0 -107
  256. package/resources/gofer/claude-skills/eai-gofer/SKILL.md +0 -56
  257. package/resources/gofer/copilot-prompts/0_gofer_start.prompt.md +0 -1308
  258. package/resources/gofer/copilot-prompts/0a_problem_validation.prompt.md +0 -429
  259. package/resources/gofer/copilot-prompts/10_gofer_cloud.prompt.md +0 -644
  260. package/resources/gofer/copilot-prompts/1_gofer_research.prompt.md +0 -1177
  261. package/resources/gofer/copilot-prompts/2_gofer_specify.prompt.md +0 -878
  262. package/resources/gofer/copilot-prompts/3_gofer_plan.prompt.md +0 -917
  263. package/resources/gofer/copilot-prompts/4_gofer_tasks.prompt.md +0 -778
  264. package/resources/gofer/copilot-prompts/5_gofer_implement.prompt.md +0 -962
  265. package/resources/gofer/copilot-prompts/6_gofer_validate.prompt.md +0 -2310
  266. package/resources/gofer/copilot-prompts/7_gofer_save.prompt.md +0 -433
  267. package/resources/gofer/copilot-prompts/7a_stakeholder_comms.prompt.md +0 -516
  268. package/resources/gofer/copilot-prompts/8_gofer_branding.prompt.md +0 -323
  269. package/resources/gofer/copilot-prompts/9_gofer_tests.prompt.md +0 -566
  270. package/resources/gofer/copilot-prompts/gofer_bootstrap_workspace.prompt.md +0 -161
  271. package/resources/gofer/copilot-prompts/gofer_check_workspace.prompt.md +0 -132
  272. package/resources/gofer/copilot-prompts/gofer_constitution.prompt.md +0 -621
  273. package/resources/gofer/copilot-prompts/gofer_diagnose.prompt.md +0 -127
  274. package/resources/gofer/copilot-prompts/gofer_eai_first_run.prompt.md +0 -410
  275. package/resources/gofer/copilot-prompts/gofer_hydrate.prompt.md +0 -571
  276. package/resources/gofer/copilot-prompts/gofer_personality.prompt.md +0 -57
  277. package/resources/gofer/copilot-prompts/gofer_plan.prompt.md +0 -53
  278. package/resources/gofer/copilot-prompts/gofer_side.prompt.md +0 -58
  279. package/resources/gofer/copilot-prompts/gofer_spec_summary.prompt.md +0 -125
  280. package/resources/gofer/copilot-prompts/gofer_tdd.prompt.md +0 -125
  281. package/resources/gofer/copilot-prompts/gofer_vocabulary.prompt.md +0 -125
  282. package/resources/gofer/copilot-prompts/gofer_zoom_out.prompt.md +0 -125
  283. package/resources/gofer/gemini/commands/gofer/0_gofer_start.md +0 -1282
  284. package/resources/gofer/gemini/commands/gofer/0_gofer_start.toml +0 -2
  285. package/resources/gofer/gemini/commands/gofer/0a_problem_validation.md +0 -424
  286. package/resources/gofer/gemini/commands/gofer/0a_problem_validation.toml +0 -2
  287. package/resources/gofer/gemini/commands/gofer/10_gofer_cloud.md +0 -630
  288. package/resources/gofer/gemini/commands/gofer/10_gofer_cloud.toml +0 -2
  289. package/resources/gofer/gemini/commands/gofer/1_gofer_research.md +0 -1154
  290. package/resources/gofer/gemini/commands/gofer/1_gofer_research.toml +0 -2
  291. package/resources/gofer/gemini/commands/gofer/2_gofer_specify.md +0 -855
  292. package/resources/gofer/gemini/commands/gofer/2_gofer_specify.toml +0 -2
  293. package/resources/gofer/gemini/commands/gofer/3_gofer_plan.md +0 -894
  294. package/resources/gofer/gemini/commands/gofer/3_gofer_plan.toml +0 -2
  295. package/resources/gofer/gemini/commands/gofer/4_gofer_tasks.md +0 -755
  296. package/resources/gofer/gemini/commands/gofer/4_gofer_tasks.toml +0 -2
  297. package/resources/gofer/gemini/commands/gofer/5_gofer_implement.md +0 -939
  298. package/resources/gofer/gemini/commands/gofer/5_gofer_implement.toml +0 -2
  299. package/resources/gofer/gemini/commands/gofer/6_gofer_validate.md +0 -2297
  300. package/resources/gofer/gemini/commands/gofer/6_gofer_validate.toml +0 -2
  301. package/resources/gofer/gemini/commands/gofer/7_gofer_save.md +0 -418
  302. package/resources/gofer/gemini/commands/gofer/7_gofer_save.toml +0 -2
  303. package/resources/gofer/gemini/commands/gofer/7a_stakeholder_comms.md +0 -503
  304. package/resources/gofer/gemini/commands/gofer/7a_stakeholder_comms.toml +0 -2
  305. package/resources/gofer/gemini/commands/gofer/8_gofer_branding.md +0 -310
  306. package/resources/gofer/gemini/commands/gofer/8_gofer_branding.toml +0 -2
  307. package/resources/gofer/gemini/commands/gofer/9_gofer_tests.md +0 -553
  308. package/resources/gofer/gemini/commands/gofer/9_gofer_tests.toml +0 -2
  309. package/resources/gofer/gemini/commands/gofer/gofer_bootstrap_workspace.md +0 -143
  310. package/resources/gofer/gemini/commands/gofer/gofer_bootstrap_workspace.toml +0 -2
  311. package/resources/gofer/gemini/commands/gofer/gofer_check_workspace.md +0 -114
  312. package/resources/gofer/gemini/commands/gofer/gofer_check_workspace.toml +0 -2
  313. package/resources/gofer/gemini/commands/gofer/gofer_constitution.md +0 -607
  314. package/resources/gofer/gemini/commands/gofer/gofer_constitution.toml +0 -2
  315. package/resources/gofer/gemini/commands/gofer/gofer_diagnose.md +0 -109
  316. package/resources/gofer/gemini/commands/gofer/gofer_diagnose.toml +0 -2
  317. package/resources/gofer/gemini/commands/gofer/gofer_eai_first_run.md +0 -392
  318. package/resources/gofer/gemini/commands/gofer/gofer_eai_first_run.toml +0 -2
  319. package/resources/gofer/gemini/commands/gofer/gofer_hydrate.md +0 -556
  320. package/resources/gofer/gemini/commands/gofer/gofer_hydrate.toml +0 -2
  321. package/resources/gofer/gemini/commands/gofer/gofer_personality.md +0 -39
  322. package/resources/gofer/gemini/commands/gofer/gofer_personality.toml +0 -2
  323. package/resources/gofer/gemini/commands/gofer/gofer_plan.md +0 -35
  324. package/resources/gofer/gemini/commands/gofer/gofer_plan.toml +0 -2
  325. package/resources/gofer/gemini/commands/gofer/gofer_side.md +0 -40
  326. package/resources/gofer/gemini/commands/gofer/gofer_side.toml +0 -2
  327. package/resources/gofer/gemini/commands/gofer/gofer_spec_summary.md +0 -107
  328. package/resources/gofer/gemini/commands/gofer/gofer_spec_summary.toml +0 -2
  329. package/resources/gofer/gemini/commands/gofer/gofer_tdd.md +0 -107
  330. package/resources/gofer/gemini/commands/gofer/gofer_tdd.toml +0 -2
  331. package/resources/gofer/gemini/commands/gofer/gofer_vocabulary.md +0 -107
  332. package/resources/gofer/gemini/commands/gofer/gofer_vocabulary.toml +0 -2
  333. package/resources/gofer/gemini/commands/gofer/gofer_zoom_out.md +0 -107
  334. package/resources/gofer/gemini/commands/gofer/gofer_zoom_out.toml +0 -2
  335. package/resources/gofer/github-skills/eai-gofer/SKILL.md +0 -56
  336. package/resources/gofer/system-skills/0_gofer_start/SKILL.md +0 -1287
  337. package/resources/gofer/system-skills/0a_problem_validation/SKILL.md +0 -429
  338. package/resources/gofer/system-skills/10_gofer_cloud/SKILL.md +0 -635
  339. package/resources/gofer/system-skills/1_gofer_research/SKILL.md +0 -1159
  340. package/resources/gofer/system-skills/2_gofer_specify/SKILL.md +0 -860
  341. package/resources/gofer/system-skills/3_gofer_plan/SKILL.md +0 -899
  342. package/resources/gofer/system-skills/4_gofer_tasks/SKILL.md +0 -760
  343. package/resources/gofer/system-skills/5_gofer_implement/SKILL.md +0 -944
  344. package/resources/gofer/system-skills/6_gofer_validate/SKILL.md +0 -2302
  345. package/resources/gofer/system-skills/7_gofer_save/SKILL.md +0 -423
  346. package/resources/gofer/system-skills/7a_stakeholder_comms/SKILL.md +0 -508
  347. package/resources/gofer/system-skills/8_gofer_branding/SKILL.md +0 -315
  348. package/resources/gofer/system-skills/9_gofer_tests/SKILL.md +0 -558
  349. package/resources/gofer/system-skills/gofer_bootstrap_workspace/SKILL.md +0 -148
  350. package/resources/gofer/system-skills/gofer_check_workspace/SKILL.md +0 -119
  351. package/resources/gofer/system-skills/gofer_constitution/SKILL.md +0 -612
  352. package/resources/gofer/system-skills/gofer_diagnose/SKILL.md +0 -114
  353. package/resources/gofer/system-skills/gofer_eai_first_run/SKILL.md +0 -397
  354. package/resources/gofer/system-skills/gofer_hydrate/SKILL.md +0 -561
  355. package/resources/gofer/system-skills/gofer_personality/SKILL.md +0 -44
  356. package/resources/gofer/system-skills/gofer_plan/SKILL.md +0 -40
  357. package/resources/gofer/system-skills/gofer_side/SKILL.md +0 -45
  358. package/resources/gofer/system-skills/gofer_spec_summary/SKILL.md +0 -112
  359. package/resources/gofer/system-skills/gofer_tdd/SKILL.md +0 -112
  360. package/resources/gofer/system-skills/gofer_vocabulary/SKILL.md +0 -112
  361. package/resources/gofer/system-skills/gofer_zoom_out/SKILL.md +0 -112
  362. package/resources/gofer/templates/ui-approval-template.md +0 -32
@@ -12,6 +12,7 @@ import { promises as fs } from 'node:fs';
12
12
  import path from 'node:path';
13
13
  import { promisify } from 'node:util';
14
14
  import { parseStageCommand } from './parse-stage-command.mjs';
15
+ import { buildAuthAccessDecisionContract, buildEaiHostingAndDeploymentContract, buildContinuationContractSection, buildDeliveryDisciplineContract, buildBlockerMediationContract } from './generate-commands.mjs';
15
16
 
16
17
  const execFileAsync = promisify(execFile);
17
18
 
@@ -29,6 +30,20 @@ const CLAUDE_MARKETPLACE_URL = `${PUBLIC_PLUGIN_URL}/claude-marketplace.json`;
29
30
  const CODEX_PLUGIN_MANIFEST_URL = `${PUBLIC_PLUGIN_URL}/codex-plugin.json`;
30
31
  const COPILOT_MARKETPLACE_URL = `${PUBLIC_PLUGIN_URL}/copilot-marketplace.json`;
31
32
  const GEMINI_EXTENSION_URL = `${PUBLIC_PLUGIN_URL}/gemini-extension.json`;
33
+ const PUBLIC_ENTRYPOINTS = [
34
+ {
35
+ stem: 'eai',
36
+ name: 'eai',
37
+ title: 'Eai',
38
+ description: 'Start or continue the EAI delivery pipeline.',
39
+ },
40
+ {
41
+ stem: 'eai-update',
42
+ name: 'eai-update',
43
+ title: 'Eai Update',
44
+ description: 'Install or update EAI Gofer for this AI coding app.',
45
+ },
46
+ ];
32
47
  const WINDOWS_FORBIDDEN_SEGMENT_CHARS = new Set(['<', '>', ':', '"', '\\', '|', '?', '*']);
33
48
  const WINDOWS_RESERVED_BASENAME = /^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\..*)?$/i;
34
49
  const WINDOWS_SAFE_RELATIVE_PATH_LIMIT = 240;
@@ -141,7 +156,7 @@ function buildCodexManifest(version, stages, paths = {}) {
141
156
  name: PLUGIN_NAME,
142
157
  version,
143
158
  description:
144
- 'Gofer core pipeline and helper commands for Claude, Codex, Copilot, Gemini, and VS Code.',
159
+ 'Gofer single-entry delivery command with internal pipeline routing for Claude, Codex, Copilot, Google Antigravity, Grok, and VS Code. Gemini files are legacy compatibility assets only.',
145
160
  author: {
146
161
  name: 'EAI Tools',
147
162
  url: REPOSITORY_URL,
@@ -155,15 +170,17 @@ function buildCodexManifest(version, stages, paths = {}) {
155
170
  'codex',
156
171
  'claude',
157
172
  'copilot',
158
- 'gemini',
173
+ 'antigravity',
174
+ 'grok',
175
+ 'gemini-legacy',
159
176
  'spec-driven-development',
160
177
  ],
161
- skills: paths.skills ?? `./${UMBRELLA_SKILLS_DIR}/`,
178
+ skills: paths.skills ?? './skills/',
162
179
  interface: {
163
180
  displayName: PLUGIN_DISPLAY_NAME,
164
181
  shortDescription: 'Spec-driven delivery workflow for agentic coding',
165
182
  longDescription:
166
- 'Run Gofer’s core /0_gofer_start → /6_gofer_validate workflow, with optional bootstrap, save/resume, testing, and communications helpers.',
183
+ 'Run Gofer from one public entrypoint: eai. Gofer routes internally through the full research, specify, plan, tasks, implement, and validate pipeline.',
167
184
  developerName: 'EAI Tools',
168
185
  category: 'Coding',
169
186
  capabilities: ['Interactive', 'Write'],
@@ -171,19 +188,12 @@ function buildCodexManifest(version, stages, paths = {}) {
171
188
  defaultPrompt: [
172
189
  'Set up my first EAI Platform app with Gofer',
173
190
  'Run Gofer research for this feature',
174
- 'Create a Gofer implementation plan',
175
191
  'Validate this branch with Gofer',
176
192
  ],
177
193
  brandColor: '#145DA0',
178
194
  composerIcon: paths.icon ?? `./${PLUGIN_ICON_TARGET}`,
179
195
  logo: paths.icon ?? `./${PLUGIN_ICON_TARGET}`,
180
196
  },
181
- gofer: {
182
- stages: stageNames(stages),
183
- marketplacePath: PUBLIC_PLUGIN_URL,
184
- releaseAsset: buildPublicAgentPluginZipUrl(version),
185
- vsixAsset: buildPublicVsixUrl(version),
186
- },
187
197
  };
188
198
  }
189
199
 
@@ -191,7 +201,7 @@ function buildGeminiManifest(version, paths = {}) {
191
201
  return {
192
202
  name: PLUGIN_NAME,
193
203
  version,
194
- description: 'Gofer core pipeline and helper commands as a Gemini CLI extension',
204
+ description: 'Legacy Gemini CLI file-format compatibility for EAI Gofer',
195
205
  license: 'Apache-2.0',
196
206
  commands: paths.commands ?? '.gemini/commands/gofer/',
197
207
  gofer: {
@@ -211,7 +221,7 @@ function buildPluginManifest(version, paths = {}) {
211
221
  name: PLUGIN_NAME,
212
222
  version,
213
223
  description:
214
- 'Gofer core pipeline and helper commands for Claude, Gemini, Codex, Copilot, and VS Code.',
224
+ 'Gofer single-entry delivery command with internal pipeline routing for Claude, Codex, Copilot, Google Antigravity, Grok, and VS Code. Gemini files are legacy compatibility assets only.',
215
225
  author: {
216
226
  name: 'EAI Tools',
217
227
  url: REPOSITORY_URL,
@@ -225,7 +235,9 @@ function buildPluginManifest(version, paths = {}) {
225
235
  'claude-code',
226
236
  'codex',
227
237
  'copilot',
228
- 'gemini',
238
+ 'antigravity',
239
+ 'grok',
240
+ 'gemini-legacy',
229
241
  'spec-driven-development',
230
242
  ],
231
243
  skills: paths.skills ?? `./${UMBRELLA_SKILLS_DIR}/`,
@@ -239,7 +251,7 @@ function buildClaudeManifest(version, paths = {}) {
239
251
  name: PLUGIN_NAME,
240
252
  version,
241
253
  description:
242
- 'Gofer core pipeline: /0_gofer_start through /6_gofer_validate, plus optional helper commands.',
254
+ 'Gofer single-entry delivery command with internal pipeline routing.',
243
255
  author: {
244
256
  name: 'EAI Tools',
245
257
  url: REPOSITORY_URL,
@@ -261,7 +273,7 @@ function buildBundleMarketplace(version) {
261
273
  },
262
274
  metadata: {
263
275
  description:
264
- 'Public Gofer bundle for Claude Code, Gemini CLI, Codex, and Copilot workflows.',
276
+ 'Public Gofer bundle for Claude, Codex, Copilot, Antigravity, Grok, and VS Code. Gemini files are legacy compatibility assets only.',
265
277
  version,
266
278
  },
267
279
  plugins: [
@@ -269,7 +281,7 @@ function buildBundleMarketplace(version) {
269
281
  name: PLUGIN_NAME,
270
282
  source: './plugins/eai-gofer',
271
283
  description:
272
- 'Gofer core pipeline from /0_gofer_start through /6_gofer_validate, with optional helper commands.',
284
+ 'Gofer single-entry delivery command with internal pipeline routing.',
273
285
  version,
274
286
  author: {
275
287
  name: 'EAI Tools',
@@ -284,7 +296,10 @@ function buildBundleMarketplace(version) {
284
296
  'claude',
285
297
  'codex',
286
298
  'copilot',
287
- 'gemini',
299
+ 'antigravity',
300
+ 'grok',
301
+ 'vscode',
302
+ 'gemini-legacy',
288
303
  'spec-driven-development',
289
304
  ],
290
305
  },
@@ -301,7 +316,7 @@ function buildRepoMarketplace(version) {
301
316
  },
302
317
  metadata: {
303
318
  description:
304
- 'Install the Gofer repo marketplace for Claude Code, Gemini CLI, Codex, or Copilot CLI from the public GitHub repository.',
319
+ 'Install Gofer for Claude, Codex, Copilot, Antigravity, Grok, and VS Code from this GitHub repository. Gemini files are legacy compatibility assets only.',
305
320
  version,
306
321
  },
307
322
  plugins: [
@@ -309,7 +324,7 @@ function buildRepoMarketplace(version) {
309
324
  name: PLUGIN_NAME,
310
325
  source: './plugins/eai-gofer',
311
326
  description:
312
- 'Gofer core pipeline from /0_gofer_start through /6_gofer_validate, with optional helper commands.',
327
+ 'Gofer single-entry delivery command with internal pipeline routing.',
313
328
  version,
314
329
  author: {
315
330
  name: 'EAI Tools',
@@ -325,7 +340,10 @@ function buildRepoMarketplace(version) {
325
340
  'claude',
326
341
  'codex',
327
342
  'copilot',
328
- 'gemini',
343
+ 'antigravity',
344
+ 'grok',
345
+ 'vscode',
346
+ 'gemini-legacy',
329
347
  'spec-driven-development',
330
348
  ],
331
349
  },
@@ -381,12 +399,367 @@ function buildBundleCodexMarketplace(version) {
381
399
  };
382
400
  }
383
401
 
384
- function buildUmbrellaSkill(version, stages) {
402
+ function buildAlwaysEaiSection() {
403
+ return `## Always-On EAI Contract
404
+ <!-- gofer:always-on-eai:start -->
405
+
406
+ Apply this contract to every request after Gofer is installed for this repo or AI coding app. The user does not need to type \`/eai\`, \`$eai\`, or \`#eai\`.
407
+
408
+ 1. Preserve the user's request. Do not rewrite it or add a visible command prefix.
409
+ 2. Treat an explicit \`/eai\`, \`$eai\`, or \`#eai\` prefix as an idempotent request for the same contract.
410
+ 3. Apply the Controlled English Contract to every Gofer-authored message and artifact.
411
+ 4. Keep the reply short unless the user asks for detail.
412
+ 5. Explain the business effect first.
413
+ 6. Put technical evidence in durable artifacts.
414
+ 7. Do not make the user choose pipeline stages. Select the next internal stage yourself.
415
+ 8. Do not repeat workspace setup on every message. Check it before meaningful repo work, tool use, or a pipeline stage.
416
+ 9. Keep the update and installation path separate. When the user explicitly asks to update Gofer, run only its maintenance contract.
417
+ 10. When a new app conversation starts with \`Get started with EAI\`, send the Required First-Run Response before workspace preflight, EAI readiness, setup, tool calls, or stage routing.
418
+ <!-- gofer:always-on-eai:end -->`;
419
+ }
420
+
421
+ function buildUserFacingResponseGateSection() {
422
+ return `## User-Facing Response Gate
423
+
424
+ Before each user-facing reply, check the draft against these rules:
425
+
426
+ 1. Lead with the business outcome, effect, risk, or decision.
427
+ 2. Use concise, simple language.
428
+ 3. Include technical detail only when it supports a decision or the user asks for it.
429
+ 4. If any check fails, rewrite the reply before sending it.`;
430
+ }
431
+
432
+ function buildJourneyStateSection() {
433
+ return `## Journey State
434
+
435
+ Before routing work, decide where the user is now.
436
+
437
+ 1. Read current feature state from \`.specify/specs/\`, \`goal-ledger.json\`, \`eai-preflight.md\`, \`research.md\`, \`spec.md\`, \`plan.md\`, \`tasks.md\`, validation reports, loop evidence, and handoff notes when they exist.
438
+ 2. Classify the request as conversation, research/docs/audit, EAI app delivery, or ambiguous.
439
+ 3. For conversation or research/docs/audit, continue the non-app Gofer path after the one required non-app confirmation.
440
+ 4. For EAI app delivery or ambiguous app work, continue directly into EAI readiness.
441
+ 5. Find the earliest missing pipeline artifact or blocked EAI gate.
442
+ 6. Run that internal stage next, then continue forward.
443
+ 7. Keep the user-facing explanation at the business level.`;
444
+ }
445
+
446
+ function buildVerifiedEaiCliCommandContract() {
447
+ return `## Verified EAI CLI Command Contract
448
+
449
+ Do not invent, guess, or complete EAI CLI commands from memory.
450
+
451
+ 1. Before you suggest or run an \`eai ...\` command, verify the exact command from the installed CLI.
452
+ 2. Start with \`eai --describe\` and use its command map as the source of truth.
453
+ 3. For a specific command, run \`eai <command> --help\` or the CLI-described equivalent before using flags, subcommands, or examples.
454
+ 4. Use \`eai agent guide --format json\` when the CLI advertises it.
455
+ 5. Use \`eai errors explain <code-or-reason> --format json\` after errors when the CLI advertises it.
456
+ 6. If the command is not listed or help fails, do not run it. Say the installed EAI CLI does not expose that command, then choose a safe listed command or ask the user to update EAI CLI.
457
+ 7. Record the verified command and source in \`eai-preflight.md\`, \`service-fit-matrix.md\`, or the active feature notes before the command changes files or external systems.
458
+ 8. For commands that create, deploy, publish, change workspace data or access, change Entra, or spend money, confirm with the user after verification and before execution.
459
+
460
+ ${buildEaiHostingAndDeploymentContract()}`;
461
+ }
462
+
463
+ function buildEaiPlatformDecisionSection() {
464
+ return `## EAI Platform Decision Contract
465
+
466
+ For app delivery, make EAI Platform choices for the business user.
467
+
468
+ 1. Read \`.specify/references/platform/eai-service-patterns.md\`, \`.specify/references/platform/eai-repo-contract.md\`, and \`.specify/references/platform/eai.md\` before architecture or storage decisions.
469
+ 2. Run \`eai --describe\` before assuming current CLI syntax.
470
+ 3. Run \`eai agent guide --format json\` when the CLI advertises it.
471
+ 4. Run \`eai resources schema --format json\` and \`eai workflow readiness --format json\` when advertised and relevant.
472
+ 5. Create or update \`.specify/specs/{feature}/service-fit-matrix.md\`.
473
+ 6. Prefer the EAI app template, PublicAPI, ResourceAPI, object types, workflows, goals, targets, platform AI services, and workspace identity.
474
+ 7. Prefer PostgreSQL for relational, transactional, reporting, and workflow state.
475
+ 8. Prefer DocumentDB for flexible JSON documents, nested records, and high-change document models.
476
+ 9. Prefer Blob Storage for large files and binary content behind API-mediated access.
477
+ 10. Prefer AI Search as a derived search projection, not as the source of record.
478
+ 11. Prefer EAI content understanding and document services for classification, extraction, summarization, and Retrieval-Augmented Generation.
479
+ 12. Prefer EAI workflows, goals, and targets for approvals, long-running work, service goals, operating targets, and auditable process state.
480
+ 13. Use Azure second when the EAI Platform does not yet expose the needed capability.
481
+ 14. Use any other platform only as an explicit exception with rationale, owner, expiry, and validation evidence.
482
+ 15. Ask the user only for material business, security, cost, deployment, destructive, or external-system decisions.`;
483
+ }
484
+
485
+ function buildLocalSettingsCleanupContract() {
486
+ return `## Local Settings Cleanup Contract
487
+
488
+ After any Gofer install, update, release refresh, or workspace bootstrap:
489
+
490
+ 1. Archive stale Gofer command and skill entries before continuing.
491
+ 2. Prefer the repo helper:
492
+ - \`node .specify/scripts/node/gofer-local-settings-cleanup.mjs --workspace . --apply --json\`
493
+ 3. If the repo helper is missing, use the stable plugin bundle helper:
494
+ - macOS/Linux: \`node ~/plugins/eai-gofer/.specify/scripts/node/gofer-local-settings-cleanup.mjs --workspace . --apply --json\`
495
+ - Windows: \`node %USERPROFILE%\\plugins\\eai-gofer\\.specify\\scripts\\node\\gofer-local-settings-cleanup.mjs --workspace . --apply --json\`
496
+ 4. This cleanup covers old Claude, Codex, Copilot, Gemini, Grok, VS Code, desktop, and CLI command surfaces.
497
+ 5. Do not remove the current public \`eai\` entrypoint.
498
+ 6. Ask the user to refresh or restart the host command picker only after cleanup completes.`;
499
+ }
500
+
501
+ function buildAppPreviewRunnerContract() {
502
+ return `## App Preview Runner Contract
503
+
504
+ For EAI app delivery, every UI preview must use the repo runner when it exists.
505
+
506
+ 1. Use \`./run.sh dev 3001\` on macOS, Linux, and GitHub Codespaces.
507
+ 2. Use \`run.bat dev 3001\` on Windows.
508
+ 3. Use a different port only when the feature notes record the reason.
509
+ 4. Restart only this app. Before stopping a process, verify its exact checkout, process ID, start time and command, then recheck immediately before stopping it. Never stop another app, an unknown process, or every process on a port. If ownership is uncertain, leave it running and ask the user. Inspect older runners before use; do not run one that kills by port alone.
510
+ 5. Do not use direct \`npm run dev\`, \`next dev\`, or package-manager preview commands when \`run.sh\`, \`run.bat\`, or \`run.ps1\` exists.
511
+ 6. After every UI-facing change, run:
512
+ - \`node .specify/scripts/node/gofer-ui-preview.mjs --feature-dir {FEATURE_DIR} --command "./run.sh dev 3001" --open auto --screenshot --change "<change summary>"\`
513
+ 7. On Windows, use:
514
+ - \`node .specify/scripts/node/gofer-ui-preview.mjs --feature-dir {FEATURE_DIR} --command "run.bat dev 3001" --open auto --screenshot --change "<change summary>"\`
515
+ 8. If the runner is missing in an EAI app template repo, refresh the template before preview work continues.
516
+ 9. Check the exact preview page and the current implemented user journey after each change. A running process, open browser, screenshot alone, error page or dry run is not proof that it works. Say ready to view only after those checks pass. Otherwise explain what is unchecked or failing; do not claim readiness. Record fresh browser and test evidence. Local MVP checks cover only implemented behaviour; do not add future auth or deployment gates. Keep showing clearly labelled drafts without adding approval stops.`;
517
+ }
518
+
519
+ function buildUmbrellaSkill(version, stages, entry = PUBLIC_ENTRYPOINTS[0]) {
520
+ if (entry.name === 'eai-update') {
521
+ return buildEaiUpdateSkill(version);
522
+ }
523
+
385
524
  const stageList = stages
386
- .map((stage) => `- \`${stage.frontmatter.name}\` - ${stage.frontmatter.description}`)
525
+ .map((stage) => `- \`${stage.stem}\` - ${stage.frontmatter.description}`)
387
526
  .join('\n');
388
527
 
389
- return `---\nname: eai-gofer\ndescription: "Run the public Gofer core pipeline and helper commands in Claude, Gemini, Codex, or Copilot."\n---\n\n# Gofer\n\nVersion: ${version}\n\nUse this skill when the user asks to run, install, update, or understand Gofer without the VS Code extension UI.\n\n## Workspace First\n\nBefore stage work, resolve the repository root and run \`node .specify/scripts/node/gofer-workspace-check.mjs --host auto --json\` when available. If the repo is missing or stale, ask before running \`node .specify/scripts/node/gofer-workspace-bootstrap.mjs --host auto --include-mirrors\`, then resume the original command.\n\n## First EAI Platform App\n\nIf the user is starting a first EAI Platform app, run \`/gofer:eai-first-run\` before \`/0_gofer_start\`. It is allowed to run before \`.specify/\` exists and checks Git, Node.js, npm, the scoped EAI registry, EAI CLI, login, workspace, \`eai init\`, and Gofer scaffold readiness with user approval gates.\n\n## EAI CLI Discovery And Recovery\n\n- Run \`eai whoami\` before Gofer pipeline work and require a valid login plus an active workspace.\n- Run \`eai update --check\` before first EAI platform work when the CLI may be stale.\n- Run \`eai --describe\` before assuming command syntax.\n- If advertised, run \`eai agent guide --format json\` before planning or fixing EAI workflows.\n- After any \`eai\` error, run \`eai errors explain <code-or-reason> --format json\` before guessing remediation.\n- If \`eai errors explain\` is unavailable, match \`.specify/references/platform/eai-error-catalog.yaml\`, run read-only diagnostics before mutating fixes, and stop at the retry or escalation condition.\n- For \`eai user invite\` 5xx or \`EXTERNAL_SERVICE_ERROR\`, check existing members with \`eai user list --workspace <workspace-id> --search <email> --format json\`; use \`eai user role set --workspace <workspace-id> --member-id <member-id> --role tenant-admin --format json\` only after verification and user approval, then tell the app user to sign out and sign back in.\n- Use \`eai publicapi\` only for authorized PublicAPI \`/v4/...\` routes.\n\n## Token And Cost Policy\n\n- Treat \`.specify/memory/gofer-model-policy.yaml\` as the repo-owned source of truth for simple, medium, hard, and arbiter model routing. Run \`/gofer:bootstrap-workspace\` if it is missing.\n- Use the cheapest capable model first. Escalate only when a cheaper pass is low-confidence, contradictory, security-sensitive, release-critical, or blocking quality.\n- Keep raw search, build, and test output out of the main chat context. Write stable findings to \`.specify/specs/{feature}/context-bundle.md\` and continue from summaries.\n- Prefer provider prompt/context caching for stable non-secret prefixes: Gofer scaffold, repository instructions, constitution, repo map, stage contracts, and validation rubric.\n- After large research, planning, implementation, or validation bursts, checkpoint artifacts and compact/clear/resume context when the host supports it.\n\n## Core Pipeline And Helpers\n\n${stageList}\n\n## Stable Local Install Path\n\nInstall or update this plugin by replacing the stable local folder:\n\n\`\`\`text\n~/plugins/eai-gofer\n\`\`\`\n\nThe public release feed is available at:\n\n\`\`\`text\n${PUBLIC_SITE_URL}/releases.json\n\`\`\`\n\nGemini CLI users can also copy the bundled \`.gemini/\` directory into a repository root to activate the same command set there.\n`;
528
+ return `---
529
+ name: ${entry.name}
530
+ description: "Run Gofer through one public entrypoint while preserving the full internal pipeline."
531
+ ---
532
+
533
+ # ${entry.title}
534
+
535
+ Version: ${version}
536
+
537
+ Apply this skill to every request when the plugin is enabled. The user does not need to type a Gofer command. Keep the user's request unchanged and route it through Gofer internally. Use the separate update skill only when the user explicitly asks to install or update Gofer.
538
+
539
+ ${buildContinuationContractSection()}
540
+
541
+ ## Clean Surface Contract
542
+
543
+ - User-facing command and skill pickers should expose only \`eai\`.
544
+ - Do not ask users to run numbered/helper stage commands such as \`/0_gofer_start\`, \`/1_gofer_research\`, or \`/6_gofer_validate\` unless they explicitly ask for low-level internals.
545
+ - Preserve all Gofer functions by routing internally through the stage contracts in \`.specify/commands/*.md\`.
546
+
547
+ ## Workspace First
548
+
549
+ Before stage work, resolve the repository root and run \`node .specify/scripts/node/gofer-workspace-check.mjs --host auto --json\` when available. If the repo is missing or stale, ask before running \`node .specify/scripts/node/gofer-workspace-bootstrap.mjs --host auto --include-mirrors\`, then resume the original command.
550
+
551
+ ${buildLocalSettingsCleanupContract()}
552
+
553
+ ${buildAppPreviewRunnerContract()}
554
+
555
+ ## Controlled English Contract
556
+
557
+ Use ASD-STE100 Simplified Technical English as the target writing standard for all Gofer-authored chat, documents, commands, summaries, PR notes, error guidance, and validation artifacts. ASD-STE100 is copyright and a trademark of ASD; do not bundle the protected ASD dictionary and do not claim ASD certification.
558
+
559
+ Apply these rules before any user-facing output:
560
+
561
+ 1. Use short sentences. Keep instructions to 20 words or fewer where possible.
562
+ 2. Use one action per instruction.
563
+ 3. Use active voice. Use passive voice only when the actor is unknown or not important.
564
+ 4. Use simple present, simple past, simple future, infinitive, or imperative verb forms.
565
+ 5. Use approved project terms and necessary technical nouns only. Define acronyms on first use.
566
+ 6. Use direct words. Avoid idioms, marketing adjectives, vague praise, and hedging.
567
+ 7. Use vertical lists for complex information.
568
+ 8. Put one topic in each paragraph.
569
+ 9. For errors, write: what happened, why it matters, what to do next, and the exact safe command when one exists.
570
+ 10. Keep raw logs, stack traces, IDs, and secrets out of chat unless the user asks for technical detail.
571
+
572
+ ${buildUserFacingResponseGateSection()}
573
+
574
+ ${buildAlwaysEaiSection()}
575
+
576
+ ## Business-Friendly Progress
577
+
578
+ - Keep user-facing progress short and business-level by default.
579
+ - Explain what is being connected, changed, checked, or fixed and why it matters.
580
+ - Use \`.specify/specs/{feature}/build-map.md\` as the shared picture of the build when app delivery applies.
581
+ - Keep technical detail, logs, tests, and security evidence in artifacts; show deeper detail when the user asks.
582
+
583
+ ## App vs Non-App Routing
584
+
585
+ - Classify each request before EAI readiness as EAI app delivery, non-application work, or ambiguous.
586
+ - If the request is EAI app delivery or ambiguous, continue directly into the EAI app delivery path and run EAI readiness.
587
+ - If the request is clearly non-app work, confirm once: **"This looks like non-app work, so I will skip EAI workspace/app setup and continue the Gofer research/docs path. Is that right?"**
588
+ - If the user confirms non-app, do not run \`eai whoami\`, workspace selection, \`eai init\`, or first-run setup. Record the decision and continue the appropriate non-app path.
589
+ - If the user says it is app work, switch to EAI app delivery and run EAI app preflight.
590
+
591
+ ${buildJourneyStateSection()}
592
+
593
+ ## First EAI Platform App
594
+
595
+ If the user is starting a first EAI Platform app, use the public \`eai\` entrypoint, then follow the first-run/setup contract in \`.specify/commands/gofer_eai_first_run.md\` when it is present. It is allowed before \`.specify/\` exists and checks Git, Node.js, npm, the scoped EAI registry, EAI CLI, login, workspace access, \`eai init\`, and Gofer scaffold readiness with user approval gates. For older CLI versions that do not advertise \`--company-workspace\`, use the \`--company-tenant\` compatibility alias.
596
+
597
+ ## EAI CLI Discovery And Recovery
598
+
599
+ - Run \`eai whoami\` only for EAI app delivery work or explicit EAI CLI recovery, not for confirmed non-app research/docs/audit/planning.
600
+ - Run \`eai update --check\` before first EAI platform work when the CLI may be stale.
601
+ - Run \`eai --describe\` before assuming command syntax.
602
+ - If advertised, run \`eai agent guide --format json\` before planning or fixing EAI workflows.
603
+ - After any \`eai\` error, run \`eai errors explain <code-or-reason> --format json\` before guessing remediation.
604
+ - If \`eai errors explain\` is unavailable, match \`.specify/references/platform/eai-error-catalog.yaml\`, run read-only diagnostics before mutating fixes, and stop at the retry or escalation condition.
605
+ - For \`eai user invite\` 5xx or \`EXTERNAL_SERVICE_ERROR\`, check existing members with \`eai user list --workspace <workspace-id> --search <email> --format json\`; use \`eai user role set --workspace <workspace-id> --member-id <member-id> --role tenant-admin --format json\` only after verification and user approval. The platform role ID \`tenant-admin\` means workspace admin access. Then tell the app user to sign out and sign back in.
606
+ - Use \`eai publicapi\` only for authorized PublicAPI \`/v4/...\` routes.
607
+
608
+ ${buildVerifiedEaiCliCommandContract()}
609
+
610
+ ${buildEaiPlatformDecisionSection()}
611
+
612
+ ## Token And Cost Policy
613
+
614
+ - Treat \`.specify/memory/gofer-model-policy.yaml\` as advisory capability, cost, and quality constraints. A fresh signed host receipt and independently verified benchmark evidence select the model. Run the internal bootstrap contract if it is missing.
615
+ - Use the cheapest capable model first. Escalate only when a cheaper pass is low-confidence, contradictory, security-sensitive, release-critical, or blocking quality.
616
+ - Keep raw search, build, and test output out of the main chat context. Write stable findings to \`.specify/specs/{feature}/context-bundle.md\` and continue from summaries.
617
+ - Prefer provider prompt/context caching for stable non-secret prefixes: Gofer scaffold, repository instructions, constitution, repo map, stage contracts, and validation rubric.
618
+ - After large research, planning, implementation, or validation bursts, checkpoint artifacts and compact/clear/resume context when the host supports it.
619
+
620
+ ## Internal Pipeline And Helper Contracts
621
+
622
+ ${stageList}
623
+
624
+ ## Stable Local Install Path
625
+
626
+ Install or update this plugin by replacing the stable local folder:
627
+
628
+ \`\`\`text
629
+ ~/plugins/eai-gofer
630
+ \`\`\`
631
+
632
+ The public release feed is available at:
633
+
634
+ \`\`\`text
635
+ ${PUBLIC_SITE_URL}/releases.json
636
+ \`\`\`
637
+
638
+ Legacy Gemini file-format users can copy the bundled \`.gemini/\` directory into an existing repository. New installations use Google Antigravity and \`agy\`.
639
+ `;
640
+ }
641
+
642
+ function buildEaiUpdateSkill(version) {
643
+ return `---
644
+ name: eai-update
645
+ description: "Install or update EAI Gofer for this AI coding app."
646
+ ---
647
+
648
+ # Eai Update
649
+
650
+ Version: ${version}
651
+
652
+ Use this skill to install or update the user-level EAI Gofer plugin or extension. It works before a repository has Gofer files.
653
+
654
+ 1. Do not run a workspace check, \`eai init\`, \`eai whoami\`, or a delivery stage.
655
+ 2. Use \`.specify/scripts/node/gofer-surface-update.mjs\` from this plugin bundle.
656
+ 3. Check status first with \`--action inspect --host <current-host> --json\`.
657
+ 4. Show the user the planned user-level install or update. Ask for approval before \`--execute\`.
658
+ 5. Run \`--action install\` when Gofer is missing. Run \`--action update\` when it is installed.
659
+ 6. After an actual install or update, the helper archives stale Gofer command and skill entries. It also adds a small managed always-on instruction to the selected host. It keeps the current \`eai\` and \`eai-update\` entries. A clean official Codex local marketplace on \`main\` fast-forwards safely. A dirty, non-main, or unrecognised local marketplace remains unchanged and reports that its plugin update is incomplete while it still refreshes the always-on instruction. An unknown Codex marketplace source stops the update without changes.
660
+ 7. Update only the current host unless the user explicitly asks for \`--host all\`.
661
+ 8. Complete the host reload step from the helper result before saying the update is ready.
662
+
663
+ Current hosts are \`claude\`, \`codex\`, \`copilot\`, \`antigravity\`, \`grok\`, and \`vscode\`. Gemini is a legacy alias only.
664
+
665
+ This command archives known stale Gofer entries and replaces only Gofer's managed instruction section. It does not remove unrelated user files or host-managed plugin caches. It does not create \`.specify/\`. After the host update, use \`/eai add or refresh the Gofer scaffold for this repo\` when a repository needs Gofer files.
666
+ ${buildBlockerMediationContract()}
667
+ `;
668
+ }
669
+
670
+ function withTenantContextErrorGuidance(content) {
671
+ const guidance =
672
+ '- For `MISSING_TENANT`, `app_token_tenant_context_required`, or "Tenant context required for app tokens" on platform user lookup or membership prerequisites, run `eai errors explain app_token_tenant_context_required --format json`, confirm workspace context, and retry `/v4/platform/tenants/<tenant-id>/...` routes before changing workspace members, Entra, role definitions, databases, or cloud portals.';
673
+
674
+ if (content.includes('app_token_tenant_context_required')) {
675
+ return content;
676
+ }
677
+
678
+ return content.replace(
679
+ '- Use `eai publicapi` only for authorized PublicAPI `/v4/...` routes.',
680
+ `${guidance}\n- Use \`eai publicapi\` only for authorized PublicAPI \`/v4/...\` routes.`
681
+ );
682
+ }
683
+
684
+ function withEaiAppTemplateGate(content) {
685
+ const guidance = `## MVP Capability-Based Validation
686
+
687
+ - Create \`.specify/specs/{feature}/\` before app or operator-tool source work.
688
+ - Classify EAI template readiness as \`not_applicable\`, \`planned\`, \`implemented\`, \`verified\`, or \`blocked\`.
689
+ - For a local MVP with no EAI or authentication capability, record those states as \`not_applicable\` or \`planned\` and continue with local feature validation.
690
+ - Treat \`run.sh\`, \`run.bat\`, and \`run.ps1\` as launch evidence only. They do not prove authentication, EAI access, or deployment readiness.
691
+ - When the feature creates, changes, or validates an EAI Platform integration, run \`node .specify/scripts/node/eai-app-template-readiness.mjs --root . --json\`.
692
+ - A missing checker or any status other than \`ready\` blocks that EAI capability. It does not block unrelated local MVP work.
693
+ - When authentication is implemented or required, verify provider, callback, sign-in, session, protected access, and safe denied access.
694
+ - Record screenshots and local HTTP checks in the feature validation report. A blocked browser check leaves the user journey unverified.
695
+ - If the user changes scope, update the feature artifacts before continuing: \`spec.md\`, \`plan.md\`, \`tasks.md\`, \`traceability.md\`, and validation scope.
696
+ - For a release or deployed claim, create \`release-capability-ledger.md\` and link each accepted requirement to evidence, PR, commit, release branch, and deployed proof.
697
+ - Do not report a release complete or score 100% if a required capability is on an open PR, absent from the release branch, missing traceability, or lacks deployed evidence.
698
+ - Do not accept copied marker files, partial scaffolds, or custom templates as EAI readiness evidence.
699
+ - Confirmed non-app work is exempt from app-only gates.
700
+
701
+ ${buildAuthAccessDecisionContract()}
702
+
703
+ ${buildDeliveryDisciplineContract()}
704
+
705
+ ## EAI App Template Gate
706
+
707
+ Apply the capability validation rules above before EAI template, workspace, authentication, or deployment work.
708
+
709
+ `;
710
+
711
+ const existingHeading = '## EAI App Template Gate';
712
+ const existingIndex = content.indexOf(existingHeading);
713
+ if (existingIndex !== -1) {
714
+ const nextHeadingIndex = content.indexOf('\n## ', existingIndex + existingHeading.length);
715
+ const suffix = nextHeadingIndex === -1 ? '' : content.slice(nextHeadingIndex).replace(/^\n+/, '');
716
+ return suffix
717
+ ? `${content.slice(0, existingIndex).trimEnd()}\n\n${guidance}\n${suffix}`
718
+ : `${content.slice(0, existingIndex).trimEnd()}\n\n${guidance}`;
719
+ }
720
+
721
+ return content.replace('## EAI CLI Discovery And Recovery', `${guidance}## EAI CLI Discovery And Recovery`);
722
+ }
723
+
724
+ function withFirstConversationGuidance(content) {
725
+ if (content.includes('## First Conversation')) {
726
+ return content;
727
+ }
728
+ const section = `## First Conversation
729
+
730
+ When this is the first EAI conversation for a new app:
731
+
732
+ 1. Treat \`Get started with EAI\` as the first-run trigger. Ignore capitalization, punctuation, and decorative emoji around the phrase.
733
+ 2. Show the following compact orientation once. Do not repeat it after onboarding starts or when existing feature state means the work should resume.
734
+
735
+ ### Required First-Run Response
736
+
737
+ \`\`\`markdown
738
+ ## Welcome to Enterprise AI 👋
739
+
740
+ I’ll help you improve a process and turn it into a secure enterprise application:
741
+
742
+ 1. **Improve** — understand the opportunity and design the solution.
743
+ 2. **Build** — prepare data, add AI, and connect systems.
744
+ 3. **Test and deploy** — validate, launch, and share securely.
745
+ 4. **Run and measure** — monitor results, costs, activity, and value.
746
+
747
+ The EAI Platform supports every step with secure data, identity, multi-tenancy, and AI models.
748
+
749
+ I’ll walk you through the whole process and ask short questions as we go. Tell me what you want me to do, or ask **“What’s next?”**, **“What else can you help with?”**, or **“Show me the admin screen.”**
750
+
751
+ **First question:** What process would you like to improve, or what would you like the application to help people do?
752
+ \`\`\`
753
+
754
+ 3. After the first answer, ask one short question at a time about the users, current process, desired value, success measures, and material constraints.
755
+ 4. Treat \`Show me the admin screen\` as a request for the relevant manual path. Use a verified link from repository or platform context when available. Never invent an admin URL.
756
+ 5. Explain EAI capabilities only when they help the next decision. Do not begin with platform architecture or a list of tools.
757
+ 6. Use the repository and EAI CLI as sources of truth. Run \`eai --describe\` before assuming command syntax and explain known errors before recovery.
758
+ 7. Keep numbered Gofer stages internal. Say what is being learned, designed, built, or checked in business language.
759
+ 8. Explain why specification-led delivery improves AI quality: it creates a shared, testable statement of the outcome before code changes multiply.
760
+ 9. Pause once for approval of the business specification. Then continue unless a material business, security, cost, deployment, or destructive decision needs approval.
761
+ 10. Do not create a GitHub repository, deploy, publish, spend money, or change external systems without the relevant user approval.`;
762
+ return content.replace('## EAI CLI Discovery And Recovery', `${section}\n\n## EAI CLI Discovery And Recovery`);
390
763
  }
391
764
 
392
765
  function buildWorkspacePreflightSection() {
@@ -400,8 +773,11 @@ Before doing stage/helper work:
400
773
  - \`.specify/.gofer-version\`
401
774
  - \`.specify/commands/0_gofer_start.md\`
402
775
  - \`.specify/templates/spec-template.md\`
776
+ - \`.specify/templates/build-map-template.md\`
403
777
  - \`.specify/templates/loop-contract-template.json\`
404
778
  - \`.specify/templates/working-backwards-prfaq-template.md\`
779
+ - \`.specify/scripts/node/gofer-local-settings-cleanup.mjs\`
780
+ - \`.specify/scripts/node/gofer-ui-preview.mjs\`
405
781
  - \`.specify/scripts/node/gofer-workspace-check.mjs\`
406
782
  - \`.specify/scripts/node/gofer-workspace-bootstrap.mjs\`
407
783
  - \`.specify/specs/\`
@@ -411,29 +787,80 @@ Before doing stage/helper work:
411
787
  4. If the workspace is missing or stale, ask exactly:
412
788
  - **"This repo is missing or stale for Gofer. Initialize/update it now?"**
413
789
  5. If the user says yes, run the Gofer workspace bootstrap helper and then resume this command from the top.
414
- 6. If the user says no, stop and explain that Gofer stage/helper work depends on the repo-owned scaffold.
790
+ 6. After a Gofer install, update, or bootstrap, remove stale local Gofer command entries with:
791
+ - \`node .specify/scripts/node/gofer-local-settings-cleanup.mjs --workspace . --apply --json\`
792
+ 7. For EAI app delivery, use the repo runner for local previews:
793
+ - macOS, Linux, and GitHub Codespaces: \`./run.sh dev 3001\`
794
+ - Windows: \`run.bat dev 3001\`
795
+ 8. Do not start app previews with direct \`npm run dev\` commands when the repo runner exists.
796
+ 9. If the user says no, stop and explain that Gofer stage/helper work depends on the repo-owned scaffold.
415
797
  `.trim();
416
798
  }
417
799
 
418
- function injectWorkspacePreflight(stage, body) {
419
- if (WORKSPACE_PREFLIGHT_EXCLUDED_COMMANDS.has(String(stage.frontmatter.name))) {
800
+ function buildBusinessProgressContractSection() {
801
+ return `
802
+ ## Business-Friendly Progress Contract
803
+
804
+ - Keep user-facing updates concise and business-level by default.
805
+ - Use ASD-STE100 Simplified Technical English as the target writing standard for all Gofer-authored chat, documents, commands, summaries, PR notes, error guidance, and validation artifacts.
806
+ - Do not bundle the protected ASD dictionary and do not claim ASD certification.
807
+ - Use one action per instruction and keep instructions to 20 words or fewer where possible.
808
+ - Use active voice, simple verb forms, approved project terms, and defined acronyms.
809
+ - Avoid idioms, marketing adjectives, vague praise, and hedging.
810
+ - Explain what is being connected, changed, checked, or fixed and why it matters.
811
+ - For application delivery, create or update \`.specify/specs/{feature}/build-map.md\` from \`.specify/templates/build-map-template.md\` and refer to that map in progress updates.
812
+ - Keep technical detail, logs, tests, and security evidence in durable artifacts; provide that detail when the user asks.
813
+ - Before each user-facing reply, check the business effect, language, and useful technical detail. If any check fails, rewrite the reply before sending it.
814
+ `.trim();
815
+ }
816
+
817
+ function injectBusinessProgressContract(body) {
818
+ if (body.includes('## Business-Friendly Progress Contract')) {
420
819
  return body;
421
820
  }
422
- if (body.includes('## Workspace Preflight')) {
423
- return body;
821
+
822
+ const headingIndex = body.indexOf('## Workspace Preflight');
823
+ if (headingIndex !== -1) {
824
+ const nextHeading = body.indexOf('\n## ', headingIndex + 1);
825
+ if (nextHeading !== -1) {
826
+ return `${body.slice(0, nextHeading).trimEnd()}\n\n${buildBusinessProgressContractSection()}\n\n${body
827
+ .slice(nextHeading)
828
+ .replace(/^\n+/, '')}`;
829
+ }
424
830
  }
425
831
 
426
832
  const headingMatch = body.match(/^# [^\n]+\n*/);
427
833
  if (!headingMatch) {
428
- return `${buildWorkspacePreflightSection()}\n\n${body}`;
834
+ return `${buildBusinessProgressContractSection()}\n\n${body}`;
429
835
  }
430
836
 
431
837
  const insertAt = headingMatch[0].length;
432
- return `${body.slice(0, insertAt).trimEnd()}\n\n${buildWorkspacePreflightSection()}\n\n${body
838
+ return `${body.slice(0, insertAt).trimEnd()}\n\n${buildBusinessProgressContractSection()}\n\n${body
433
839
  .slice(insertAt)
434
840
  .replace(/^\n+/, '')}`;
435
841
  }
436
842
 
843
+ function injectWorkspacePreflight(stage, body) {
844
+ if (WORKSPACE_PREFLIGHT_EXCLUDED_COMMANDS.has(String(stage.frontmatter.name))) {
845
+ return injectBusinessProgressContract(body);
846
+ }
847
+ if (body.includes('## Workspace Preflight')) {
848
+ return injectBusinessProgressContract(body);
849
+ }
850
+
851
+ const headingMatch = body.match(/^# [^\n]+\n*/);
852
+ if (!headingMatch) {
853
+ return injectBusinessProgressContract(`${buildWorkspacePreflightSection()}\n\n${body}`);
854
+ }
855
+
856
+ const insertAt = headingMatch[0].length;
857
+ return injectBusinessProgressContract(
858
+ `${body.slice(0, insertAt).trimEnd()}\n\n${buildWorkspacePreflightSection()}\n\n${body
859
+ .slice(insertAt)
860
+ .replace(/^\n+/, '')}`
861
+ );
862
+ }
863
+
437
864
  function buildStageSkill(stage) {
438
865
  const body = injectWorkspacePreflight(stage, stage.body.trim());
439
866
  return `---\nname: ${stage.frontmatter.name}\ndescription: ${yamlString(stage.frontmatter.description)}\n---\n\n${body}\n`;
@@ -444,11 +871,11 @@ function buildPluginReadmeBase(version) {
444
871
 
445
872
  Version: ${version}
446
873
 
447
- This package is the portable Claude, Gemini, Codex, and Copilot workflow layer for Gofer. It is released beside the VS Code extension, but it does not replace the VSIX UI, status views, updater, or language-server features.
874
+ This package is the portable Claude, Codex, Copilot, Google Antigravity, Grok, and VS Code workflow layer for Gofer. Gemini files remain only for legacy compatibility. It is released beside the VS Code extension, but it does not replace the VSIX UI, status views, updater, or language-server features.
448
875
 
449
876
  ## Public Sources
450
877
 
451
- Use the public GitHub repository as the install source for Claude Code, Codex, Copilot CLI, and Gemini CLI:
878
+ Use the public GitHub repository as the install source for Claude Code, Codex, Copilot CLI, Google Antigravity, Grok, and VS Code:
452
879
 
453
880
  \`\`\`text
454
881
  ${REPOSITORY_URL}
@@ -473,11 +900,13 @@ That host publishes:
473
900
 
474
901
  ## First EAI Platform App
475
902
 
476
- Run \`/gofer:eai-first-run\` before \`/0_gofer_start\` when a new user, machine, repo, workspace, or EAI app template is not ready. The command is allowed to run before \`.specify/\` exists. It checks Git, Node.js, npm, EAI CLI, registry, \`eai update --check\`, \`eai --describe\`, \`eai agent guide --format json\` when advertised, login, workspace, \`eai init <project-name> --skip-prompts --company-workspace <active-workspace-id>\`, Gofer scaffold readiness, and \`eai errors explain <code-or-reason> --format json\` for recovery across macOS, Linux, Windows, and GitHub Codespaces.
903
+ Start with \`/eai\`, \`#eai\`, or \`$eai\` depending on the host. Gofer first classifies the request. If it is EAI app delivery or ambiguous, Gofer continues directly to EAI readiness and routes internally to the first-run setup contract when a new user, machine, repo, workspace, or EAI app template is not ready. If it is clearly non-app work, Gofer asks once before skipping EAI workspace/app setup and continuing the relevant research, documentation, audit, migration, or planning path. The setup path is allowed before \`.specify/\` exists. It checks Git, Node.js, npm, EAI CLI, registry, \`eai update --check\`, \`eai --describe\`, \`eai agent guide --format json\` when advertised, login, workspace access, \`eai init <project-name> --skip-prompts --company-workspace <active-workspace-id>\`, Gofer scaffold readiness, and \`eai errors explain <code-or-reason> --format json\` for recovery across macOS, Linux, Windows, and GitHub Codespaces. For older CLI versions that do not advertise \`--company-workspace\`, use the \`--company-tenant\` compatibility alias.
904
+
905
+ Gofer does not invent EAI CLI commands. It verifies command paths and flags with \`eai --describe\` and command-specific \`--help\` before suggesting or running them. If the installed CLI does not list a command, Gofer does not run it.
477
906
 
478
- For EAI errors, Gofer expects agents to run live EAI guidance first, use \`.specify/references/platform/eai-error-catalog.yaml\` as fallback, run read-only diagnostics before mutating fixes, and stop at the retry/escalation condition. For \`eai user invite\` 5xx or \`EXTERNAL_SERVICE_ERROR\`, check existing members with \`eai user list --workspace <workspace-id> --search <email> --format json\`; use \`eai user role set --workspace <workspace-id> --member-id <member-id> --role tenant-admin --format json\` only after verification and user approval.
907
+ For EAI errors, Gofer expects agents to run live EAI guidance first, use \`.specify/references/platform/eai-error-catalog.yaml\` as fallback, run read-only diagnostics before mutating fixes, and stop at the retry/escalation condition. For \`eai user invite\` 5xx or \`EXTERNAL_SERVICE_ERROR\`, check existing members with \`eai user list --workspace <workspace-id> --search <email> --format json\`; use \`eai user role set --workspace <workspace-id> --member-id <member-id> --role tenant-admin --format json\` only after verification and user approval. The platform role ID \`tenant-admin\` grants workspace admin access. For \`MISSING_TENANT\`, \`app_token_tenant_context_required\`, or "Tenant context required for app tokens" on platform user lookup or membership prerequisites, run \`eai errors explain app_token_tenant_context_required --format json\`, confirm workspace context, and retry \`/v4/platform/tenants/<tenant-id>/...\` routes before changing workspace members, Entra, role definitions, databases, or cloud portals.
479
908
 
480
- If \`/0_gofer_start\` is unknown in a new repo, install or update this plugin first, then run \`/gofer:eai-first-run\`.
909
+ If \`/eai\` is unknown in a new repo, install or update this plugin first, then refresh/restart the host command picker.
481
910
 
482
911
  ## App-Native Surfaces And Repo Scripts
483
912
 
@@ -485,28 +914,70 @@ Gofer keeps repo-owned scripts and canonical command files as the source of trut
485
914
 
486
915
  | Surface | Best entry point | Repo-owned files used |
487
916
  | ------- | ---------------- | --------------------- |
488
- | Codex App / Codex IDE | Umbrella \`eai-gofer\` plugin skill plus repo \`.agents/skills\` when a workspace is open | \`AGENTS.md\`, \`.agents/skills/\`, \`.specify/scripts/\`, \`.vscode/mcp.json\` |
489
- | GitHub Copilot app / VS Code agent mode | Custom Gofer agents and one umbrella skill, not a duplicate slash-command list | \`.github/agents/\`, \`.github/skills/\`, \`.github/prompts/\`, \`.github/instructions/\`, \`.vscode/mcp.json\` |
490
- | Claude Code app | Plugin umbrella skill for discovery; repo slash commands remain the fast command path | \`.claude/skills/\`, \`.claude/commands/\`, \`.claude/agents/\`, \`.specify/scripts/\` |
491
- | Gemini CLI / Gemini Code Assist | Gemini extension commands and workspace MCP/customization when available | \`.gemini/\`, \`.specify/scripts/\`, \`.vscode/mcp.json\` |
917
+ | Codex App / Codex IDE | \`eai\` plugin skill when a workspace is open | \`AGENTS.md\`, \`.agents/skills/\`, \`.specify/scripts/\` |
918
+ | GitHub Copilot app / VS Code agent mode | \`#eai\`, plus custom Gofer agents where supported | \`.github/agents/\`, \`.github/skills/\`, \`.github/prompts/\`, \`.github/instructions/\` |
919
+ | Claude Code app | \`/eai\` plugin/repo command | \`.claude/skills/\`, \`.claude/commands/\`, \`.claude/agents/\`, \`.specify/scripts/\` |
920
+ | Legacy Gemini file format | Existing compatibility command only | \`.gemini/\`, \`.specify/scripts/\` |
921
+ | Grok Build | Ask Grok to use the EAI skill | \`.grok/skills/\`, \`.specify/scripts/\` |
922
+
923
+ The clean UX rule is: users see only \`eai\`; Gofer keeps numbered stages and helpers as internal contracts under \`.specify/commands/\`.
924
+
925
+ This lightweight plugin does not include a compiled MCP server. The VS Code extension supplies and configures that runtime separately. Repository skills do not require that optional connection.
926
+
927
+ ## Update Cleanup
928
+
929
+ After each install or update, archive stale Gofer commands and settings:
930
+
931
+ \`\`\`bash
932
+ node .specify/scripts/node/gofer-local-settings-cleanup.mjs --workspace . --apply --json
933
+ \`\`\`
934
+
935
+ If the repo helper is not present yet, run the helper from the stable plugin bundle:
936
+
937
+ \`\`\`bash
938
+ node ~/plugins/eai-gofer/.specify/scripts/node/gofer-local-settings-cleanup.mjs --workspace . --apply --json
939
+ \`\`\`
940
+
941
+ Windows:
942
+
943
+ \`\`\`bat
944
+ node %USERPROFILE%\\plugins\\eai-gofer\\.specify\\scripts\\node\\gofer-local-settings-cleanup.mjs --workspace . --apply --json
945
+ \`\`\`
946
+
947
+ Then refresh or restart the host command picker.
948
+
949
+ ## Local App Preview Runner
950
+
951
+ For EAI app delivery, start previews through the repo runner:
952
+
953
+ \`\`\`bash
954
+ ./run.sh dev 3001
955
+ \`\`\`
492
956
 
493
- The clean UX rule is: use plain numbered stage commands in initialized repos, and use app/plugin skills for setup, diagnostics, and routing when those stage commands are not loaded yet.
957
+ Windows:
958
+
959
+ \`\`\`bat
960
+ run.bat dev 3001
961
+ \`\`\`
962
+
963
+ The runner stops any process on the selected port before it restarts the app.
964
+ Agents should not use direct \`npm run dev\` commands when the runner exists.
494
965
 
495
966
  ## Core Pipeline
496
967
 
497
- | Stage | Command | Main output |
968
+ | Stage | Internal contract | Main output |
498
969
  | ----- | ------- | ----------- |
499
- | Gofer Start | \`/0_gofer_start\` | Full pipeline kickoff |
500
- | Research | \`/1_gofer_research\` | \`research.md\` |
501
- | Specify | \`/2_gofer_specify\` | \`spec.md\` |
502
- | Plan | \`/3_gofer_plan\` | \`plan.md\`, \`data-model.md\`, \`contracts/\` |
503
- | Tasks | \`/4_gofer_tasks\` | \`tasks.md\`, \`traceability.md\`, \`issues.md\` |
504
- | Implement | \`/5_gofer_implement\` | Code and doc changes |
505
- | Validate | \`/6_gofer_validate\` | Validation artifacts and final review evidence |
970
+ | Gofer Start | \`.specify/commands/0_gofer_start.md\` | Full pipeline kickoff |
971
+ | Research | \`.specify/commands/1_gofer_research.md\` | \`research.md\` |
972
+ | Specify | \`.specify/commands/2_gofer_specify.md\` | \`spec.md\` |
973
+ | Plan | \`.specify/commands/3_gofer_plan.md\` | \`plan.md\`, \`data-model.md\`, \`contracts/\` |
974
+ | Tasks | \`.specify/commands/4_gofer_tasks.md\` | \`tasks.md\`, \`traceability.md\`, \`issues.md\` |
975
+ | Implement | \`.specify/commands/5_gofer_implement.md\` | Code and doc changes |
976
+ | Validate | \`.specify/commands/6_gofer_validate.md\` | Validation artifacts and final review evidence |
506
977
 
507
- \`/6_gofer_validate\` is the terminal quality gate. It includes the final engineering review loop and replaces the old standalone review stage in the core pipeline.
978
+ The internal validation contract is the terminal quality gate. It includes the final engineering review loop and replaces the old standalone review stage in the core pipeline.
508
979
 
509
- Optional helpers like \`/0a_problem_validation\`, \`/7_gofer_save\`, \`/8_gofer_branding\`, \`/9_gofer_tests\`, \`/7a_stakeholder_comms\`, \`/gofer:check-workspace\`, \`/gofer:bootstrap-workspace\`, and \`/gofer:eai-first-run\` remain available outside the core 0-6 stage sequence.
980
+ Optional helpers like problem validation, save, branding, tests, stakeholder comms, workspace checks, bootstrap, and EAI first-run remain available as internal contracts and can be routed by \`gofer\` when needed.
510
981
 
511
982
  ## Distribution Modes
512
983
 
@@ -515,7 +986,7 @@ Optional helpers like \`/0a_problem_validation\`, \`/7_gofer_save\`, \`/8_gofer_
515
986
  | Claude Code | \`claude plugin marketplace add ${REPOSITORY_URL} --scope user --sparse .claude-plugin --sparse plugins/eai-gofer\` then \`claude plugin install eai-gofer@eai-gofer --scope user\` | Unzip to \`~/plugins/eai-gofer\`, then \`claude plugin marketplace add ~/plugins/eai-gofer --scope user\` |
516
987
  | Codex | \`codex plugin marketplace add ${REPOSITORY_URL} --sparse .agents/plugins --sparse plugins/eai-gofer\` then \`codex plugin add eai-gofer@eai-gofer\` | Unzip to \`~/plugins/eai-gofer\`, then \`codex plugin marketplace add ~/plugins/eai-gofer\` |
517
988
  | GitHub Copilot CLI | \`copilot plugin marketplace add ${REPOSITORY_URL}\` then \`copilot plugin install eai-gofer@eai-gofer\` | Unzip to \`~/plugins/eai-gofer\`, then \`copilot plugin marketplace add ~/plugins/eai-gofer\` |
518
- | Gemini CLI | \`gemini extensions install ${REPOSITORY_URL} --auto-update\` | Unzip to \`~/plugins/eai-gofer\`, then \`gemini extensions install ~/plugins/eai-gofer\` |
989
+ | Google Antigravity | \`agy plugin install ${REPOSITORY_URL}\` | Start a new Antigravity session after installation |
519
990
 
520
991
  ## Download And Replace The Local Bundle Folder
521
992
 
@@ -532,6 +1003,17 @@ curl -fsSL ${buildLatestPublicAgentPluginZipUrl()} -o /tmp/eai-gofer-agent-plugi
532
1003
 
533
1004
  rm -rf ~/plugins/eai-gofer
534
1005
  unzip /tmp/eai-gofer-agent-plugin-latest.zip -d ~/plugins
1006
+ node ~/plugins/eai-gofer/.specify/scripts/node/gofer-local-settings-cleanup.mjs --workspace . --apply --json
1007
+ \`\`\`
1008
+
1009
+ Windows PowerShell:
1010
+
1011
+ \`\`\`powershell
1012
+ Invoke-WebRequest ${buildLatestPublicAgentPluginZipUrl()} -OutFile "$env:TEMP\\eai-gofer-agent-plugin-latest.zip"
1013
+
1014
+ Remove-Item "$env:USERPROFILE\\plugins\\eai-gofer" -Recurse -Force -ErrorAction SilentlyContinue
1015
+ Expand-Archive "$env:TEMP\\eai-gofer-agent-plugin-latest.zip" "$env:USERPROFILE\\plugins" -Force
1016
+ node "$env:USERPROFILE\\plugins\\eai-gofer\\.specify\\scripts\\node\\gofer-local-settings-cleanup.mjs" --workspace . --apply --json
535
1017
  \`\`\`
536
1018
 
537
1019
  ## Claude Code
@@ -566,7 +1048,7 @@ codex plugin marketplace add ~/plugins/eai-gofer
566
1048
  codex plugin add eai-gofer@eai-gofer
567
1049
  \`\`\`
568
1050
 
569
- The Codex plugin keeps the slash-command stage entrypoints as the primary user surface. The plugin skill registry only exposes the umbrella \`eai-gofer\` skill so Codex does not show both \`/0_gofer_start\` and \`eai-gofer:0_gofer_start\` for every stage.
1051
+ The Codex plugin exposes only \`eai\` as the user-facing skill. The numbered stage contracts remain bundled under \`.specify/commands/\` so the public skill can route through the full pipeline without cluttering the picker.
570
1052
 
571
1053
  ## Copilot CLI
572
1054
 
@@ -584,19 +1066,11 @@ copilot plugin marketplace add ~/plugins/eai-gofer
584
1066
  copilot plugin install eai-gofer@eai-gofer
585
1067
  \`\`\`
586
1068
 
587
- ## Gemini CLI
588
-
589
- Recommended public install:
590
-
591
- \`\`\`bash
592
- gemini extensions install ${REPOSITORY_URL} --auto-update
593
- \`\`\`
1069
+ ## Legacy Gemini File-Format Compatibility
594
1070
 
595
- Downloaded bundle install:
1071
+ Existing Gemini file-format repositories can retain the generated \`.gemini/\` files. New installation and update actions use Google Antigravity and \`agy\`.
596
1072
 
597
- \`\`\`bash
598
- gemini extensions install ~/plugins/eai-gofer
599
- \`\`\`
1073
+ Do not identify Gemini as a current Gofer host in new documentation or metadata.
600
1074
  `;
601
1075
  }
602
1076
 
@@ -612,10 +1086,10 @@ After bootstrap, each repository gets a user-owned model policy at:
612
1086
  \`\`\`
613
1087
 
614
1088
  The shipped default is copied from \`.specify/templates/gofer-model-policy.yaml\`
615
- and is not overwritten by bootstrap. Use it to tune simple, medium, hard, and
616
- arbiter model routes for Claude, Codex/OpenAI, Gemini, and Copilot. Copilot
617
- defaults to \`Auto\` for simple/default work because exact model availability is
618
- controlled by the Copilot client, plan, and organization policy.
1089
+ and is not overwritten by bootstrap. Use it only to constrain cost, quality, and
1090
+ capability classes. Fresh signed host receipts and independent benchmark evidence
1091
+ select the model for Claude, Codex/OpenAI, Google Antigravity, Copilot, Grok,
1092
+ and VS Code. No static provider default qualifies a model for execution.
619
1093
  `;
620
1094
  }
621
1095
 
@@ -789,21 +1263,29 @@ async function writePluginFolder(pluginRoot, root, version, stages) {
789
1263
  buildBundleCodexMarketplace(version)
790
1264
  );
791
1265
 
792
- await writeText(path.join(pluginRoot, 'skills', 'eai-gofer', 'SKILL.md'), buildUmbrellaSkill(version, stages));
793
- await writeText(
794
- path.join(pluginRoot, UMBRELLA_SKILLS_DIR, 'eai-gofer', 'SKILL.md'),
795
- buildUmbrellaSkill(version, stages)
796
- );
797
- for (const stage of stages) {
798
- await writeText(path.join(pluginRoot, 'skills', stage.stem, 'SKILL.md'), buildStageSkill(stage));
1266
+ for (const entry of PUBLIC_ENTRYPOINTS) {
1267
+ const skill = withFirstConversationGuidance(
1268
+ withEaiAppTemplateGate(withTenantContextErrorGuidance(buildUmbrellaSkill(version, stages, entry)))
1269
+ );
1270
+ await writeText(path.join(pluginRoot, 'skills', entry.stem, 'SKILL.md'), skill);
1271
+ await writeText(path.join(pluginRoot, UMBRELLA_SKILLS_DIR, entry.stem, 'SKILL.md'), skill);
799
1272
  }
1273
+ await copyIfExistsAs(
1274
+ root,
1275
+ '.claude/skills/gofer-documentation',
1276
+ path.join(UMBRELLA_SKILLS_DIR, 'gofer-documentation'),
1277
+ pluginRoot
1278
+ );
800
1279
 
801
1280
  await writeText(path.join(pluginRoot, 'README.md'), buildPluginReadme(version));
802
1281
  await writeText(path.join(pluginRoot, '.eai-gofer-plugin-version'), `${version}\n${GENERATED_MARKER}\n`);
803
1282
 
804
1283
  const copiedResources = [
805
1284
  '.specify/commands',
1285
+ '.specify/config',
1286
+ '.specify/contracts',
806
1287
  '.specify/references',
1288
+ '.specify/schemas',
807
1289
  '.specify/templates',
808
1290
  '.specify/scripts/bash',
809
1291
  '.specify/scripts/node',
@@ -813,8 +1295,9 @@ async function writePluginFolder(pluginRoot, root, version, stages) {
813
1295
  '.github/agents',
814
1296
  '.github/skills',
815
1297
  '.claude/skills',
1298
+ '.claude-plugin/hooks',
816
1299
  '.gemini',
817
- '.vscode/mcp.json',
1300
+ '.grok',
818
1301
  'AGENTS.md',
819
1302
  'LICENSE',
820
1303
  'NOTICE',
@@ -847,7 +1330,7 @@ async function syncRepoManifests(root, version, stages, stagedPluginRoot) {
847
1330
  await writeJson(
848
1331
  path.join(root, '.codex-plugin', 'plugin.json'),
849
1332
  buildCodexManifest(version, stages, {
850
- skills: `./${UMBRELLA_SKILLS_DIR}/`,
1333
+ skills: './skills/',
851
1334
  icon: './assets/eai-gofer-icon.png',
852
1335
  })
853
1336
  );
@@ -875,16 +1358,25 @@ async function syncRepoManifests(root, version, stages, stagedPluginRoot) {
875
1358
  await writeJson(
876
1359
  path.join(root, '.claude-plugin', 'plugin.json'),
877
1360
  buildClaudeManifest(version, {
878
- skills: './.agents/skills/',
1361
+ skills: `./${UMBRELLA_SKILLS_DIR}/`,
879
1362
  })
880
1363
  );
881
1364
  await writeJson(path.join(root, '.claude-plugin', 'marketplace.json'), buildRepoMarketplace(version));
882
1365
  await writeJson(path.join(root, '.gemini', 'extension.json'), buildGeminiManifest(version));
883
1366
  await writeJson(path.join(root, 'gemini-extension.json'), buildGeminiManifest(version));
884
- await writeText(
885
- path.join(root, UMBRELLA_SKILLS_DIR, 'eai-gofer', 'SKILL.md'),
886
- buildUmbrellaSkill(version, stages)
887
- );
1367
+ for (const staleName of ['eai-gofer', 'gofer']) {
1368
+ await fs.rm(path.join(root, UMBRELLA_SKILLS_DIR, staleName), { recursive: true, force: true });
1369
+ await fs.rm(path.join(root, 'skills', staleName), { recursive: true, force: true });
1370
+ }
1371
+ for (const entry of PUBLIC_ENTRYPOINTS) {
1372
+ const rootUmbrellaSkill = entry.name === 'eai'
1373
+ ? withFirstConversationGuidance(
1374
+ withEaiAppTemplateGate(withTenantContextErrorGuidance(buildUmbrellaSkill(version, stages, entry)))
1375
+ )
1376
+ : buildUmbrellaSkill(version, stages, entry);
1377
+ await writeText(path.join(root, UMBRELLA_SKILLS_DIR, entry.stem, 'SKILL.md'), rootUmbrellaSkill);
1378
+ await writeText(path.join(root, 'skills', entry.stem, 'SKILL.md'), rootUmbrellaSkill);
1379
+ }
888
1380
 
889
1381
  const iconSource = path.join(root, PLUGIN_ICON_SOURCE);
890
1382
  const iconTarget = path.join(root, PLUGIN_ICON_TARGET);