@zaip-ai/cli 2.0.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/README.md +33 -14
  2. package/dist/services/adapters.d.ts +1 -1
  3. package/dist/services/adapters.d.ts.map +1 -1
  4. package/dist/services/adapters.js +30 -25
  5. package/dist/services/adapters.js.map +1 -1
  6. package/dist/services/agent-adapters.js +45 -15
  7. package/dist/services/agent-adapters.js.map +1 -1
  8. package/dist/services/agent-adapters.test.js +13 -7
  9. package/dist/services/agent-adapters.test.js.map +1 -1
  10. package/dist/services/agent-discovery.d.ts +27 -0
  11. package/dist/services/agent-discovery.d.ts.map +1 -0
  12. package/dist/services/agent-discovery.js +73 -0
  13. package/dist/services/agent-discovery.js.map +1 -0
  14. package/dist/services/codex-conversation-lifecycle-hook.d.ts.map +1 -1
  15. package/dist/services/codex-conversation-lifecycle-hook.js +153 -24
  16. package/dist/services/codex-conversation-lifecycle-hook.js.map +1 -1
  17. package/dist/services/codex-pre-tool-hook-template.d.ts.map +1 -1
  18. package/dist/services/codex-pre-tool-hook-template.js +146 -72
  19. package/dist/services/codex-pre-tool-hook-template.js.map +1 -1
  20. package/dist/services/codex-rules.d.ts +1 -1
  21. package/dist/services/codex-rules.d.ts.map +1 -1
  22. package/dist/services/codex-rules.js +3 -3
  23. package/dist/services/codex-subagent-hook-template.d.ts +1 -1
  24. package/dist/services/codex-subagent-hook-template.d.ts.map +1 -1
  25. package/dist/services/codex-subagent-hook-template.js +117 -66
  26. package/dist/services/codex-subagent-hook-template.js.map +1 -1
  27. package/dist/services/install-agents-template.d.ts.map +1 -1
  28. package/dist/services/install-agents-template.js +56 -6
  29. package/dist/services/install-agents-template.js.map +1 -1
  30. package/dist/services/logger.js +1 -1
  31. package/dist/services/logger.js.map +1 -1
  32. package/dist/services/logger.test.js +24 -3
  33. package/dist/services/logger.test.js.map +1 -1
  34. package/dist/services/runtime-template.test.js +138 -1
  35. package/dist/services/runtime-template.test.js.map +1 -1
  36. package/package.json +1 -1
  37. package/templates/.agents/.env.example +9 -3
  38. package/templates/.agents/README-ENG.md +47 -5
  39. package/templates/.agents/README.md +38 -9
  40. package/templates/.agents/architecture/software-architecture.md +1 -59
  41. package/templates/.agents/branding/brandbook.md +3 -0
  42. package/templates/.agents/config/agents/catalog.yaml +40 -28
  43. package/templates/.agents/config/agents/discovery.json +319 -0
  44. package/templates/.agents/config/clients/codex/agents/zaip-agent-analyst.toml +3 -6
  45. package/templates/.agents/config/clients/codex/agents/zaip-agent-auditor.toml +3 -6
  46. package/templates/.agents/config/clients/codex/agents/zaip-agent-backend.toml +4 -7
  47. package/templates/.agents/config/clients/codex/agents/zaip-agent-brand-strategist.toml +6 -8
  48. package/templates/.agents/config/clients/codex/agents/zaip-agent-builder.toml +4 -7
  49. package/templates/.agents/config/clients/codex/agents/zaip-agent-cloud-engineer.toml +13 -13
  50. package/templates/.agents/config/clients/codex/agents/zaip-agent-data-analyst.toml +5 -7
  51. package/templates/.agents/config/clients/codex/agents/zaip-agent-designer.toml +4 -7
  52. package/templates/.agents/config/clients/codex/agents/zaip-agent-finalizer.toml +3 -6
  53. package/templates/.agents/config/clients/codex/agents/zaip-agent-frontend.toml +4 -7
  54. package/templates/.agents/config/clients/codex/agents/zaip-agent-general-operations.toml +6 -8
  55. package/templates/.agents/config/clients/codex/agents/zaip-agent-governance-compliance.toml +3 -6
  56. package/templates/.agents/config/clients/codex/agents/zaip-agent-growth-strategist.toml +6 -8
  57. package/templates/.agents/config/clients/codex/agents/zaip-agent-integrator.toml +3 -6
  58. package/templates/.agents/config/clients/codex/agents/zaip-agent-marketing-analyst.toml +6 -8
  59. package/templates/.agents/config/clients/codex/agents/zaip-agent-orchestrator.toml +4 -5
  60. package/templates/.agents/config/clients/codex/agents/zaip-agent-refactoring-specialist.toml +3 -6
  61. package/templates/.agents/config/clients/codex/agents/zaip-agent-reviewer.toml +3 -6
  62. package/templates/.agents/config/clients/codex/agents/zaip-agent-sales-specialist.toml +6 -8
  63. package/templates/.agents/config/clients/codex/agents/zaip-agent-security-auditor.toml +3 -6
  64. package/templates/.agents/config/clients/codex/agents/zaip-agent-task-executor.toml +4 -7
  65. package/templates/.agents/config/clients/codex/agents/zaip-agent-website-developer.toml +4 -7
  66. package/templates/.agents/config/clients/codex/agents/zaip-agent-writer.toml +3 -6
  67. package/templates/.agents/config/pricing/models.json +57 -33
  68. package/templates/.agents/config/project.yaml +12 -1
  69. package/templates/.agents/dashboard/.zaip-managed.json +378 -98
  70. package/templates/.agents/dashboard/apps/frontend/dist/assets/CostCalculationGuidePage-CGxeQak4.js +1 -0
  71. package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-CYfpYsTr.js → DashboardHelpDialog-tzS7YxYB.js} +173 -47
  72. package/templates/.agents/dashboard/apps/frontend/dist/assets/PricingSettingsDialog-DEbCi1gP.js +1 -0
  73. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-1L7Qw-Gq.js +3 -0
  74. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-EInWr641.css +1 -0
  75. package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-t1Om0Abw.js +1 -0
  76. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-B6aZfo5f.js +68 -0
  77. package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-TPUT2IUt.js → icons-vendor-DiGC-dsJ.js} +1 -1
  78. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DgTmNHN5.js +2 -0
  79. package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-Ct48XHGL.js → react-vendor-kPO6yNed.js} +1 -1
  80. package/templates/.agents/dashboard/apps/frontend/dist/assets/rolldown-runtime-Bh1tDfsg.js +1 -0
  81. package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-DQpKX9c1.js +1 -0
  82. package/templates/.agents/dashboard/apps/frontend/dist/index.html +6 -6
  83. package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
  84. package/templates/.agents/dashboard/apps/frontend/src/App.tsx +3 -1264
  85. package/templates/.agents/dashboard/apps/frontend/src/AppDashboardContent.tsx +363 -0
  86. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.dom.test.ts +99 -0
  87. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.tsx +62 -6
  88. package/templates/.agents/dashboard/apps/frontend/src/ProjectStackEditor.tsx +3 -1
  89. package/templates/.agents/dashboard/apps/frontend/src/__tests__/app-composition-support.ts +7 -0
  90. package/templates/.agents/dashboard/apps/frontend/src/cost-period-refresh.test.ts +9 -7
  91. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api-settings.ts +151 -0
  92. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +28 -153
  93. package/templates/.agents/dashboard/apps/frontend/src/dashboard-app-shell.tsx +33 -0
  94. package/templates/.agents/dashboard/apps/frontend/src/dashboard-cost-facts.ts +30 -0
  95. package/templates/.agents/dashboard/apps/frontend/src/dashboard-project-overview.ts +7 -1
  96. package/templates/.agents/dashboard/apps/frontend/src/dashboard-retry.ts +17 -0
  97. package/templates/.agents/dashboard/apps/frontend/src/dashboard-setup-route.ts +29 -0
  98. package/templates/.agents/dashboard/apps/frontend/src/dashboard-view-actions.ts +66 -0
  99. package/templates/.agents/dashboard/apps/frontend/src/operations-period-render.test.ts +3 -2
  100. package/templates/.agents/dashboard/apps/frontend/src/overview-status-page.test.ts +2 -2
  101. package/templates/.agents/dashboard/apps/frontend/src/project-installation-status.test.ts +48 -0
  102. package/templates/.agents/dashboard/apps/frontend/src/project-installation-status.ts +29 -0
  103. package/templates/.agents/dashboard/apps/frontend/src/project-settings-page.css +68 -0
  104. package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +2 -2
  105. package/templates/.agents/dashboard/apps/frontend/src/sao-paulo-day-rollover.test.ts +36 -0
  106. package/templates/.agents/dashboard/apps/frontend/src/sao-paulo-day-rollover.ts +30 -0
  107. package/templates/.agents/dashboard/apps/frontend/src/snapshot-banner-semantics.test.ts +2 -5
  108. package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +30 -19
  109. package/templates/.agents/dashboard/apps/frontend/src/use-app-effects.ts +9 -1
  110. package/templates/.agents/dashboard/apps/frontend/src/use-app-trace-task-pagination.ts +77 -0
  111. package/templates/.agents/dashboard/apps/frontend/src/use-app-work-board.ts +397 -0
  112. package/templates/.agents/dashboard/apps/frontend/src/use-dashboard-app-model.tsx +782 -0
  113. package/templates/.agents/dashboard/apps/frontend/src/use-snapshot-notice.tsx +49 -0
  114. package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
  115. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostDeveloperPanelSlot.tsx +16 -0
  116. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostGroupsTable.tsx +459 -0
  117. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.test.ts +27 -17
  118. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +62 -186
  119. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorRunDialog.tsx +20 -0
  120. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables-hides-calls-that-have-no-collected.test.ts +80 -0
  121. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables-keeps-legacy-codex-identity-fields-blank.test.ts +455 -0
  122. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +18 -525
  123. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.tsx +32 -508
  124. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-export-sources.ts +74 -0
  125. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-actions.ts +19 -0
  126. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-selectors.ts +49 -0
  127. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-table-formatters.ts +115 -0
  128. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.test-fixtures.ts +2 -0
  129. package/templates/.agents/dashboard/modules/operations/package.json +1 -1
  130. package/templates/.agents/dashboard/modules/operations/src/contracts.ts +4 -0
  131. package/templates/.agents/dashboard/modules/operations/src/react/EntityTableBadges.tsx +34 -0
  132. package/templates/.agents/dashboard/modules/operations/src/react/EntityTables.tsx +8 -38
  133. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview-keeps-structure-classes-mutually-exclusive.test.ts +243 -0
  134. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.test.ts +27 -275
  135. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.tsx +70 -247
  136. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverviewCharts.tsx +171 -0
  137. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverviewPanels.tsx +64 -0
  138. package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +4 -3
  139. package/templates/.agents/dashboard/modules/operations/src/react/PrdDocumentDialog.test.tsx +2 -1
  140. package/templates/.agents/dashboard/modules/operations/src/react/manual-work-priority.test.ts +2 -1
  141. package/templates/.agents/dashboard/modules/operations/src/react/operations-coverage-toast.test.ts +6 -2
  142. package/templates/.agents/dashboard/modules/operations/src/react/operations-overview-period-filter.test.ts +6 -14
  143. package/templates/.agents/dashboard/modules/operations/src/react/operations-overview.status-cards.test.ts +3 -1
  144. package/templates/.agents/dashboard/modules/operations/src/react/operations-page-contract.ts +2 -0
  145. package/templates/.agents/dashboard/modules/operations/src/react/overview-metric-format.ts +32 -0
  146. package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
  147. package/templates/.agents/dashboard/packages/branding/package.json +1 -1
  148. package/templates/.agents/dashboard/packages/branding/src/index.ts +1 -1
  149. package/templates/.agents/dashboard/packages/contracts/package.json +1 -1
  150. package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
  151. package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +1458 -1458
  152. package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +1425 -1425
  153. package/templates/.agents/dashboard/packages/local-runtime/package.json +2 -1
  154. package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-runtime.mjs +7 -3
  155. package/templates/.agents/dashboard/packages/local-runtime/server.mjs +1458 -1459
  156. package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.ts +25 -0
  157. package/templates/.agents/dashboard/packages/local-runtime/src/agent-catalog-settings.test.ts +1 -1
  158. package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.test.ts +53 -8
  159. package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +79 -24
  160. package/templates/.agents/dashboard/packages/local-runtime/src/projection-refresh-diagnostics.ts +35 -0
  161. package/templates/.agents/dashboard/packages/local-runtime/src/server-costs-routes.ts +168 -0
  162. package/templates/.agents/dashboard/packages/local-runtime/src/server-dual-reads-manifest-summaries-without-losing.test.ts +344 -0
  163. package/templates/.agents/dashboard/packages/local-runtime/src/server-http-contracts.ts +31 -0
  164. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-routes.ts +345 -0
  165. package/templates/.agents/dashboard/packages/local-runtime/src/server-read-projections.ts +461 -0
  166. package/templates/.agents/dashboard/packages/local-runtime/src/server-reconciliation-refresh.test.ts +78 -0
  167. package/templates/.agents/dashboard/packages/local-runtime/src/server-route-context.ts +13 -0
  168. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.test.ts +18 -0
  169. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.ts +19 -3
  170. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot.test.ts +22 -21
  171. package/templates/.agents/dashboard/packages/local-runtime/src/server-sqlite-task-trace.ts +1 -1
  172. package/templates/.agents/dashboard/packages/local-runtime/src/server-sqlite-view-allowlist.test.ts +25 -0
  173. package/templates/.agents/dashboard/packages/local-runtime/src/server-trace-routes.ts +64 -0
  174. package/templates/.agents/dashboard/packages/local-runtime/src/server-work-reconciliation.test.ts +2 -30
  175. package/templates/.agents/dashboard/packages/local-runtime/src/server-work-reconciliation.ts +6 -23
  176. package/templates/.agents/dashboard/packages/local-runtime/src/server.test-fixtures.ts +1 -1
  177. package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +2 -330
  178. package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +73 -1060
  179. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-first-fold.ts +78 -0
  180. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-projections.ts +561 -0
  181. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-runs.ts +600 -0
  182. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-metric-contract.test.ts +1 -1
  183. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-agent-dimension.ts +269 -0
  184. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-context.ts +32 -0
  185. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-entity-group.ts +244 -0
  186. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-filtered-dimension.ts +292 -0
  187. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-financial.ts +547 -0
  188. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-model-dimension.ts +360 -0
  189. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-provider-dimension.ts +169 -0
  190. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-summary.ts +475 -0
  191. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-temporal-dimension.ts +132 -0
  192. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-timing.ts +299 -0
  193. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-view-page.ts +692 -0
  194. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-counts-every-root-execution-day-returns.test.ts +739 -0
  195. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-does-not-convert-delayed-historical-finalizer.test.ts +706 -0
  196. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-filesystem.ts +748 -0
  197. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-first-fold-types.ts +1 -1
  198. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-keeps-orphan-telemetry-out-kanban-without.test.ts +710 -0
  199. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-marks-token-cost-telemetry-unavailable-when.test.ts +618 -0
  200. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-rebuild.ts +755 -0
  201. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-rebuilds-disposable-snapshot-serves-zaip-records.test.ts +276 -0
  202. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-schema.ts +193 -0
  203. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-types.ts +123 -0
  204. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +1 -2805
  205. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.ts +17 -6930
  206. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-base-views.ts +385 -0
  207. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-dashboard-views.ts +412 -0
  208. package/templates/.agents/dashboard/packages/local-runtime/src/work-priority-contract.test.ts +4 -3
  209. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-build.mjs +195 -0
  210. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-lifecycle.test.mjs +2 -7
  211. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-logging.mjs +35 -0
  212. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-navigation.mjs +114 -0
  213. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-paths.mjs +90 -0
  214. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +89 -418
  215. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +22 -12
  216. package/templates/.agents/dashboard/packages/ui/package.json +1 -1
  217. package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
  218. package/templates/.agents/dashboard/tests/e2e/playwright.config.ts +4 -1
  219. package/templates/.agents/design/.zaip-managed.json +5 -5
  220. package/templates/.agents/design/DESIGN.md +2 -186
  221. package/templates/.agents/design/README.md +12 -2
  222. package/templates/.agents/design/apps/catalog/package.json +1 -1
  223. package/templates/.agents/design/packages/local-runtime/package.json +1 -1
  224. package/templates/.agents/growth/strategy.md +3 -0
  225. package/templates/.agents/marketing/strategy.md +3 -0
  226. package/templates/.agents/requirements/autonomous-assurance.md +2 -1
  227. package/templates/.agents/requirements/cloud-hostinger-autonomy.md +1 -1
  228. package/templates/.agents/requirements/comparative-audit.md +1 -1
  229. package/templates/.agents/requirements/context-engine.md +1 -1
  230. package/templates/.agents/requirements/cost-observability.md +1 -1
  231. package/templates/.agents/requirements/dashboard-launch.md +1 -1
  232. package/templates/.agents/requirements/data-export.md +1 -1
  233. package/templates/.agents/requirements/design-system.md +13 -4
  234. package/templates/.agents/requirements/execution-engine.md +1 -1
  235. package/templates/.agents/requirements/kanban-dashboard.md +1 -1
  236. package/templates/.agents/requirements/model-orchestration.md +15 -5
  237. package/templates/.agents/requirements/public-distribution.md +5 -3
  238. package/templates/.agents/requirements/software-architecture.md +1 -1
  239. package/templates/.agents/requirements/strategic-improvements.md +1 -1
  240. package/templates/.agents/requirements/work-lifecycle.md +3 -3
  241. package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
  242. package/templates/.agents/rules/architecture.md +2 -0
  243. package/templates/.agents/rules/astra-diagnostic.md +20 -0
  244. package/templates/.agents/rules/autonomy-decision.md +3 -1
  245. package/templates/.agents/rules/cloud-hostinger-autonomy.md +2 -0
  246. package/templates/.agents/rules/context.md +2 -1
  247. package/templates/.agents/rules/core.md +9 -14
  248. package/templates/.agents/rules/design-system-central-contract.md +17 -0
  249. package/templates/.agents/rules/evolution.md +3 -1
  250. package/templates/.agents/rules/frontend-lite.md +3 -1
  251. package/templates/.agents/rules/local-sqlite-storage.md +2 -2
  252. package/templates/.agents/rules/meta-mcp.md +4 -1
  253. package/templates/.agents/rules/model-orchestration.md +1 -1
  254. package/templates/.agents/rules/run-lifecycle-closure.md +7 -5
  255. package/templates/.agents/rules/security.md +3 -1
  256. package/templates/.agents/rules/specialist-routing.md +6 -2
  257. package/templates/.agents/rules/text-writing-utf8.md +1 -1
  258. package/templates/.agents/rules/workflow.md +7 -5
  259. package/templates/.agents/runtime/VERSION +1 -1
  260. package/templates/.agents/runtime/bin/zaip.mjs +534 -266
  261. package/templates/.agents/runtime/checksums.sha256 +6 -6
  262. package/templates/.agents/runtime/manifest.json +1 -1
  263. package/templates/.agents/runtime/pnpm-lock.sha256 +1 -1
  264. package/templates/.agents/runtime/provenance.json +5 -5
  265. package/templates/.agents/runtime/sbom.cdx.json +1 -1
  266. package/templates/.agents/sales/playbook.md +3 -0
  267. package/templates/.agents/skills/zaip-aios/SKILL.md +5 -3
  268. package/templates/.agents/skills/zaip-skill-adapt-stack/SKILL.md +1 -0
  269. package/templates/.agents/skills/zaip-skill-api-contracts/SKILL.md +14 -0
  270. package/templates/.agents/skills/zaip-skill-api-contracts/agents/openai.yaml +4 -0
  271. package/templates/.agents/skills/zaip-skill-application-observability/SKILL.md +15 -0
  272. package/templates/.agents/skills/zaip-skill-application-observability/agents/openai.yaml +4 -0
  273. package/templates/.agents/skills/zaip-skill-application-observability/references/signal-design.md +3 -0
  274. package/templates/.agents/skills/zaip-skill-application-readiness/SKILL.md +15 -0
  275. package/templates/.agents/skills/zaip-skill-application-readiness/agents/openai.yaml +4 -0
  276. package/templates/.agents/skills/zaip-skill-application-readiness/references/evidence-matrix.md +3 -0
  277. package/templates/.agents/skills/zaip-skill-architecture-design/SKILL.md +14 -0
  278. package/templates/.agents/skills/zaip-skill-architecture-design/agents/openai.yaml +4 -0
  279. package/templates/.agents/skills/zaip-skill-async-jobs/SKILL.md +14 -0
  280. package/templates/.agents/skills/zaip-skill-async-jobs/agents/openai.yaml +4 -0
  281. package/templates/.agents/skills/zaip-skill-auth-tenancy/SKILL.md +15 -0
  282. package/templates/.agents/skills/zaip-skill-auth-tenancy/agents/openai.yaml +4 -0
  283. package/templates/.agents/skills/zaip-skill-auth-tenancy/references/data-access-paths.md +9 -0
  284. package/templates/.agents/skills/zaip-skill-auth-tenancy/references/worker-scenario.md +5 -0
  285. package/templates/.agents/skills/zaip-skill-auth-tenancy/scripts/worker-contract.test.mjs +27 -0
  286. package/templates/.agents/skills/zaip-skill-author-skills/SKILL.md +2 -0
  287. package/templates/.agents/skills/zaip-skill-author-skills/references/engineering-skill-index.md +9 -0
  288. package/templates/.agents/skills/zaip-skill-author-skills/scripts/audit-skill-catalog.mjs +5 -3
  289. package/templates/.agents/skills/zaip-skill-author-skills/scripts/author-skill-scripts.test.mjs +27 -0
  290. package/templates/.agents/skills/zaip-skill-backend/SKILL.md +4 -0
  291. package/templates/.agents/skills/zaip-skill-backend/references/deployment-environments.md +75 -0
  292. package/templates/.agents/skills/zaip-skill-backend/references/supabase-migration-contract.md +23 -0
  293. package/templates/.agents/skills/zaip-skill-brand-governance/SKILL.md +2 -0
  294. package/templates/.agents/skills/zaip-skill-cache-strategy/SKILL.md +14 -0
  295. package/templates/.agents/skills/zaip-skill-cache-strategy/agents/openai.yaml +4 -0
  296. package/templates/.agents/skills/zaip-skill-change/SKILL.md +1 -1
  297. package/templates/.agents/skills/zaip-skill-cloud-engineering/SKILL.md +7 -0
  298. package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/SKILL.md +37 -0
  299. package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/agents/openai.yaml +6 -0
  300. package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/references/workers-static-assets.md +26 -0
  301. package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/references/workflow-templates.md +71 -0
  302. package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/scripts/cloudflare-github-deploy-contract.test.mjs +77 -0
  303. package/templates/.agents/skills/zaip-skill-config/SKILL.md +21 -11
  304. package/templates/.agents/skills/zaip-skill-config/agents/openai.yaml +2 -2
  305. package/templates/.agents/skills/zaip-skill-container-runtime/SKILL.md +14 -0
  306. package/templates/.agents/skills/zaip-skill-container-runtime/agents/openai.yaml +4 -0
  307. package/templates/.agents/skills/zaip-skill-context/SKILL.md +6 -1
  308. package/templates/.agents/skills/zaip-skill-context/references/prd-spec-task-handoff.md +10 -0
  309. package/templates/.agents/skills/zaip-skill-context/references/rule-selection.md +20 -0
  310. package/templates/.agents/skills/zaip-skill-cqrs/SKILL.md +1 -0
  311. package/templates/.agents/skills/zaip-skill-cybersecurity/SKILL.md +18 -0
  312. package/templates/.agents/skills/zaip-skill-cybersecurity/agents/openai.yaml +4 -0
  313. package/templates/.agents/skills/zaip-skill-cybersecurity/references/audit-contract.md +94 -0
  314. package/templates/.agents/skills/zaip-skill-cybersecurity/scripts/score-audit.mjs +185 -0
  315. package/templates/.agents/skills/zaip-skill-cybersecurity/scripts/score-audit.test.mjs +101 -0
  316. package/templates/.agents/skills/zaip-skill-data-modeling/SKILL.md +14 -0
  317. package/templates/.agents/skills/zaip-skill-data-modeling/agents/openai.yaml +4 -0
  318. package/templates/.agents/skills/zaip-skill-database-migrations/SKILL.md +20 -0
  319. package/templates/.agents/skills/zaip-skill-database-migrations/agents/openai.yaml +4 -0
  320. package/templates/.agents/skills/zaip-skill-database-migrations/references/manual-mode.md +15 -0
  321. package/templates/.agents/skills/zaip-skill-database-migrations/references/promotion-example.md +5 -0
  322. package/templates/.agents/skills/zaip-skill-database-migrations/scripts/export-manual-sql.mjs +145 -0
  323. package/templates/.agents/skills/zaip-skill-database-migrations/scripts/export-manual-sql.test.mjs +178 -0
  324. package/templates/.agents/skills/zaip-skill-dependency-upgrade/SKILL.md +14 -0
  325. package/templates/.agents/skills/zaip-skill-dependency-upgrade/agents/openai.yaml +4 -0
  326. package/templates/.agents/skills/zaip-skill-deployment-pipeline/SKILL.md +15 -0
  327. package/templates/.agents/skills/zaip-skill-deployment-pipeline/agents/openai.yaml +4 -0
  328. package/templates/.agents/skills/zaip-skill-deployment-pipeline/references/runtime-shapes.md +3 -0
  329. package/templates/.agents/skills/zaip-skill-design-system/SKILL.md +20 -9
  330. package/templates/.agents/skills/zaip-skill-dev-environment/SKILL.md +14 -0
  331. package/templates/.agents/skills/zaip-skill-dev-environment/agents/openai.yaml +4 -0
  332. package/templates/.agents/skills/zaip-skill-dev-environment/references/inventory-contract.md +7 -0
  333. package/templates/.agents/skills/zaip-skill-dev-environment/scripts/inventory.mjs +77 -0
  334. package/templates/.agents/skills/zaip-skill-disaster-recovery/SKILL.md +15 -0
  335. package/templates/.agents/skills/zaip-skill-disaster-recovery/agents/openai.yaml +4 -0
  336. package/templates/.agents/skills/zaip-skill-disaster-recovery/references/recovery-scope.md +3 -0
  337. package/templates/.agents/skills/zaip-skill-execution/SKILL.md +5 -3
  338. package/templates/.agents/skills/zaip-skill-execution/references/correction-cycle.md +7 -0
  339. package/templates/.agents/skills/zaip-skill-execution/references/runtime-governance.md +13 -0
  340. package/templates/.agents/skills/zaip-skill-external-integrations/SKILL.md +14 -0
  341. package/templates/.agents/skills/zaip-skill-external-integrations/agents/openai.yaml +4 -0
  342. package/templates/.agents/skills/zaip-skill-frontend/SKILL.md +4 -0
  343. package/templates/.agents/skills/zaip-skill-frontend-componentization/SKILL.md +44 -0
  344. package/templates/.agents/skills/zaip-skill-frontend-componentization/agents/openai.yaml +4 -0
  345. package/templates/.agents/skills/zaip-skill-frontend-data-flows/SKILL.md +14 -0
  346. package/templates/.agents/skills/zaip-skill-frontend-data-flows/agents/openai.yaml +4 -0
  347. package/templates/.agents/skills/zaip-skill-general-operations/SKILL.md +8 -7
  348. package/templates/.agents/skills/zaip-skill-general-operations/references/extended-workflow.md +7 -0
  349. package/templates/.agents/skills/zaip-skill-github-actions-setup/SKILL.md +36 -0
  350. package/templates/.agents/skills/zaip-skill-github-actions-setup/agents/openai.yaml +4 -0
  351. package/templates/.agents/skills/zaip-skill-github-actions-setup/references/cloudflare-pages.md +33 -0
  352. package/templates/.agents/skills/zaip-skill-github-actions-setup/references/github.md +63 -0
  353. package/templates/.agents/skills/zaip-skill-github-actions-setup/references/hostinger-vps.md +55 -0
  354. package/templates/.agents/skills/zaip-skill-github-actions-setup/references/npm.md +30 -0
  355. package/templates/.agents/skills/zaip-skill-github-actions-setup/scripts/check-skill.mjs +55 -0
  356. package/templates/.agents/skills/zaip-skill-github-actions-setup/scripts/verify-cloudflare.mjs +61 -0
  357. package/templates/.agents/skills/zaip-skill-github-actions-setup/scripts/verify-cloudflare.test.mjs +128 -0
  358. package/templates/.agents/skills/zaip-skill-github-actions-setup/scripts/verify-ssh.integration.test.mjs +106 -0
  359. package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +43 -76
  360. package/templates/.agents/skills/zaip-skill-github-deploy/references/deployment-workflow.md +131 -0
  361. package/templates/.agents/skills/zaip-skill-github-deploy/references/github-release-workflow-template.md +31 -0
  362. package/templates/.agents/skills/zaip-skill-github-deploy/references/release-gate-matrix.md +24 -0
  363. package/templates/.agents/skills/zaip-skill-github-deploy/references/release-identity.md +44 -0
  364. package/templates/.agents/skills/zaip-skill-github-deploy/references/release-notes.md +134 -0
  365. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.mjs +389 -0
  366. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.test.mjs +134 -0
  367. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-deploy-contract.test.mjs +25 -2
  368. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-readiness-api.test.mjs +134 -0
  369. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-readiness.mjs +98 -0
  370. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-readiness.test.mjs +25 -0
  371. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/install-github-readiness-workflow.mjs +159 -0
  372. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/install-github-readiness-workflow.test.mjs +160 -0
  373. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight.mjs +149 -12
  374. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight.test.mjs +64 -5
  375. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/release-notes-coverage.test.mjs +126 -0
  376. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/resolve-release-identity.mjs +78 -0
  377. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/resolve-release-identity.test.mjs +51 -0
  378. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/validate-release-notes.mjs +184 -0
  379. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/validate-release-notes.test.mjs +109 -0
  380. package/templates/.agents/skills/zaip-skill-github-setup/SKILL.md +5 -0
  381. package/templates/.agents/skills/zaip-skill-github-setup-ssh-folder/SKILL.md +54 -0
  382. package/templates/.agents/skills/zaip-skill-github-setup-ssh-folder/agents/openai.yaml +4 -0
  383. package/templates/.agents/skills/zaip-skill-github-setup-ssh-folder/assets/.env.example +9 -0
  384. package/templates/.agents/skills/zaip-skill-github-setup-ssh-folder/references/operational-procedure.md +137 -0
  385. package/templates/.agents/skills/zaip-skill-growth-strategy-revops/SKILL.md +8 -18
  386. package/templates/.agents/skills/zaip-skill-growth-strategy-revops/references/extended-workflow.md +21 -0
  387. package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/SKILL.md +18 -10
  388. package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/agents/openai.yaml +3 -4
  389. package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/references/aws-cli-terraform.md +62 -0
  390. package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/references/guia-iniciante-hostinger-vps.md +183 -0
  391. package/templates/.agents/skills/zaip-skill-marketing/SKILL.md +8 -13
  392. package/templates/.agents/skills/zaip-skill-marketing/references/extended-workflow.md +16 -0
  393. package/templates/.agents/skills/zaip-skill-meta-ads-setup/SKILL.md +2 -0
  394. package/templates/.agents/skills/zaip-skill-meta-token-onboarding/SKILL.md +17 -0
  395. package/templates/.agents/skills/zaip-skill-meta-token-onboarding/agents/openai.yaml +4 -0
  396. package/templates/.agents/skills/zaip-skill-meta-token-onboarding/references/onboarding-manual.md +96 -0
  397. package/templates/.agents/skills/zaip-skill-module-scaffold/SKILL.md +14 -0
  398. package/templates/.agents/skills/zaip-skill-module-scaffold/agents/openai.yaml +4 -0
  399. package/templates/.agents/skills/zaip-skill-module-scaffold/references/scaffold-contract.md +9 -0
  400. package/templates/.agents/skills/zaip-skill-module-scaffold/scripts/helpers.test.mjs +121 -0
  401. package/templates/.agents/skills/zaip-skill-module-scaffold/scripts/scaffold.mjs +169 -0
  402. package/templates/.agents/skills/zaip-skill-move-prd/SKILL.md +1 -1
  403. package/templates/.agents/skills/zaip-skill-move-spec/SKILL.md +1 -1
  404. package/templates/.agents/skills/zaip-skill-performance-engineering/SKILL.md +14 -0
  405. package/templates/.agents/skills/zaip-skill-performance-engineering/agents/openai.yaml +4 -0
  406. package/templates/.agents/skills/zaip-skill-prd/SKILL.md +1 -1
  407. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-local-telemetry.mjs +1 -0
  408. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.mjs +26 -9
  409. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.test.mjs +39 -13
  410. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-remeasurement.mjs +1 -0
  411. package/templates/.agents/skills/zaip-skill-refactor-landing-page/SKILL.md +66 -0
  412. package/templates/.agents/skills/zaip-skill-refactor-landing-page/agents/openai.yaml +4 -0
  413. package/templates/.agents/skills/zaip-skill-refactor-landing-page/references/behavioral-dry-run.md +23 -0
  414. package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +44 -1
  415. package/templates/.agents/skills/zaip-skill-release-qualification/references/local-preparation.md +98 -0
  416. package/templates/.agents/skills/zaip-skill-review/SKILL.md +1 -0
  417. package/templates/.agents/skills/zaip-skill-rules/SKILL.md +3 -3
  418. package/templates/.agents/skills/zaip-skill-sales-methodology/SKILL.md +9 -17
  419. package/templates/.agents/skills/zaip-skill-sales-methodology/references/extended-workflow.md +20 -0
  420. package/templates/.agents/skills/zaip-skill-setup/SKILL.md +22 -21
  421. package/templates/.agents/skills/zaip-skill-setup/agents/openai.yaml +2 -2
  422. package/templates/.agents/skills/zaip-skill-spec/SKILL.md +3 -2
  423. package/templates/.agents/skills/zaip-skill-storage-uploads/SKILL.md +14 -0
  424. package/templates/.agents/skills/zaip-skill-storage-uploads/agents/openai.yaml +4 -0
  425. package/templates/.agents/skills/zaip-skill-systematic-debugging/SKILL.md +14 -0
  426. package/templates/.agents/skills/zaip-skill-systematic-debugging/agents/openai.yaml +4 -0
  427. package/templates/.agents/skills/zaip-skill-task/SKILL.md +16 -7
  428. package/templates/.agents/skills/zaip-skill-task/references/commit-policy.md +25 -0
  429. package/templates/.agents/skills/zaip-skill-test-data/SKILL.md +14 -0
  430. package/templates/.agents/skills/zaip-skill-test-data/agents/openai.yaml +4 -0
  431. package/templates/.agents/skills/zaip-skill-test-data/scripts/generate.mjs +72 -0
  432. package/templates/.agents/skills/zaip-skill-testing-strategy/SKILL.md +15 -0
  433. package/templates/.agents/skills/zaip-skill-testing-strategy/agents/openai.yaml +4 -0
  434. package/templates/.agents/skills/zaip-skill-testing-strategy/references/example-map.md +3 -0
  435. package/templates/.agents/skills/zaip-skill-text-encoding/SKILL.md +1 -1
  436. package/templates/.agents/skills/zaip-skill-website-readiness/SKILL.md +8 -0
  437. package/templates/.agents/zaip-aios/INDEX.md +1 -1
  438. package/templates/.agents/zaip-aios/README.md +6 -0
  439. package/templates/.agents/zaip-aios/VERSION +1 -1
  440. package/templates/.agents/zaip-aios/guides/08-contexto-e-tokens.md +19 -3
  441. package/templates/.agents/zaip-aios/guides/10-seguranca.md +2 -1
  442. package/templates/.agents/zaip-aios/guides/12-instalacao-e-upgrade.md +37 -7
  443. package/templates/.agents/zaip-aios/guides/20-instalacao-detalhada.md +19 -4
  444. package/templates/.agents/zaip-aios/guides/23-orquestracao-de-modelos.md +32 -3
  445. package/templates/.agents/zaip-aios/guides/26-qualidade-e-release.md +21 -0
  446. package/templates/scripts/validate-cloud-hostinger-contract.mjs +34 -0
  447. package/templates/template-manifest.json +1031 -235
  448. package/templates/.agents/branding/.gitkeep +0 -0
  449. package/templates/.agents/dashboard/apps/frontend/dist/assets/CostCalculationGuidePage-snUCQYTC.js +0 -1
  450. package/templates/.agents/dashboard/apps/frontend/dist/assets/PricingSettingsDialog-BPtVUGgs.js +0 -1
  451. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-3Awyaovx.js +0 -3
  452. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-GgzpZ_PY.css +0 -1
  453. package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-DHDrd5rE.js +0 -1
  454. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-DbaLbU2q.js +0 -68
  455. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-BYbpmqmM.js +0 -2
  456. package/templates/.agents/dashboard/apps/frontend/dist/assets/rolldown-runtime-D9-fqq9M.js +0 -1
  457. package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-BDe4_Ubl.js +0 -1
  458. package/templates/.agents/growth/.gitkeep +0 -0
  459. package/templates/.agents/marketing/.gitkeep +0 -0
  460. package/templates/.agents/sales/.gitkeep +0 -0
@@ -1,7 +1,6 @@
1
1
  interface:
2
- display_name: "Terraform Cloudflare Hostinger"
3
- short_description: "Opera DNS Cloudflare e VPS Hostinger delimitados"
4
- default_prompt: "Use $zaip-skill-hostinger-cloudflare-terraform para validar alvos, state e uma operacao Terraform Cloudflare/Hostinger com evidencias honestas."
2
+ display_name: "Terraform Cloudflare Hostinger e AWS"
3
+ short_description: "Prepara AWS e opera Terraform Cloudflare/Hostinger delimitados"
4
+ default_prompt: "Use $zaip-skill-hostinger-cloudflare-terraform para validar alvos, state e uma operacao Terraform Cloudflare/Hostinger, ou preparar AWS CLI/Terraform com conta, regiao, profile e roles explicitamente delimitados."
5
5
  policy:
6
6
  allow_implicit_invocation: true
7
-
@@ -0,0 +1,62 @@
1
+ # Contrato AWS CLI e Terraform
2
+
3
+ Use este procedimento somente quando a Task AWS ativa e o contrato de infraestrutura declararem explicitamente a conta AWS, a região, o profile de origem, a role alvo quando aplicável, e os recursos Terraform autorizados. Ele prepara um ambiente e produz um plano revisável. A autorização explícita da Task AWS ativa pode cobrir bootstrap e provisionamento somente dos recursos delimitados com AWS CLI/Terraform e o plano salvo revisado; ela não autoriza publicar aplicação nem ampliar conta, região ou role.
4
+
5
+ ## Identidade e escopo
6
+
7
+ Registre nomes e ARNs, nunca credenciais, cache SSO, tokens STS, `backend-config`, state, plano binário/JSON ou seu conteúdo. O contrato AWS precisa conter:
8
+
9
+ | Campo | Exigência |
10
+ | --- | --- |
11
+ | Conta | `account_id` de doze dígitos, correspondente à identidade STS observada para cada principal usado. |
12
+ | Região | Uma região explícita para backend e provider; não herdar o profile ou região padrão do computador. |
13
+ | Profile de origem | Nome explícito do profile configurado por SSO ou credencial local já autorizada. |
14
+ | Principal do backend | Profile/role e conta que executam `terraform init` e acessam o bucket S3 de state. |
15
+ | Principal do provider | Profile/role e conta que o provider AWS usa para ler, planejar ou alterar recursos. |
16
+ | Role assumida | ARN, conta destino, política de menor privilégio, duração de sessão e external ID quando o trust policy exigir. |
17
+ | Backend | Bucket, key, região, versionamento, recuperação e política IAM delimitados. |
18
+
19
+ Um profile autenticado não autoriza a conta inteira. Um ARN novo, região nova, bucket/state key novo, role nova ou qualquer recurso faturável fora da Task exige escopo atualizado.
20
+
21
+ ## Autenticação AWS CLI
22
+
23
+ SSO é o método preferível. Quando for o método autorizado, configurar somente o profile declarado:
24
+
25
+ ```text
26
+ aws configure sso --profile PERFIL_ORIGEM
27
+ aws sso login --profile PERFIL_ORIGEM
28
+ aws sts get-caller-identity --profile PERFIL_ORIGEM --region REGIAO
29
+ ```
30
+
31
+ Profile existente, OIDC ou uma role já autorizada também são válidos quando sua identidade STS verificada corresponde ao contrato. Confirme que o `Account` retornado corresponde ao `account_id` e registre somente conta, ARN sanitizado e momento. Não use `default` implicitamente. Para provider ou backend que assumem outra role, prefira profile com `role_arn` e `source_profile`, ou OIDC. Se `aws sts assume-role` for inevitável, declare `--role-arn`, `--role-session-name` e `--duration-seconds`, e nunca imprima, registre ou injete seu stdout de credenciais. Verifique a identidade obtida para cada principal; a credencial de backend não pode ser reutilizada como prova da role do provider, nem o contrário.
32
+
33
+ O profile e as credenciais de sessão ficam no armazenamento local do AWS CLI, fora do repositório. Nunca copie valores de `~/.aws`, `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` ou `AWS_SESSION_TOKEN` para `.env`, arquivos Terraform, logs ou evidências.
34
+
35
+ ## Backend remoto S3
36
+
37
+ Para Terraform >= 1.10, o backend S3 deve declarar bucket, key e região aprovados, `encrypt = true` e `use_lockfile = true`. O bucket deve ter versionamento e recuperação definidos; o principal de backend recebe somente as permissões necessárias ao objeto de state e ao arquivo `.tflock`. Não criar configuração nova com locking DynamoDB.
38
+
39
+ `backend-config` sem segredo pode ser versionado; passe dados secretos somente por arquivo local ignorado ou variáveis de ambiente efêmeras do processo. Não rastreie segredos, state, lockfile remoto, plano binário ou JSON de plano. O comando `terraform init` deve usar a identidade do backend; a configuração `provider "aws"`/`assume_role` deve usar a identidade do provider, declarada e verificada separadamente.
40
+
41
+ ## Bootstrap AWS de ambiente zero
42
+
43
+ `terraform init` configura e acessa um backend já existente; ele **não cria o bucket S3**. Quando não houver ambiente AWS anterior, uma Task AWS explicitamente autorizada pode executar um bootstrap separado, com AWS CLI/Terraform e apenas contra o `account_id`, região, principal de backend, bucket e key declarados no contrato. Esse bootstrap não lê nem requer o contrato operacional, runner, conta Cloudflare/Hostinger, VPS ou SSH.
44
+
45
+ Antes de criar, confirme a identidade STS do principal de backend, a conta, a região e que o bucket aprovado ainda não existe. Crie somente o bucket aprovado e configure: versionamento, recuperação documentada e testável (por exemplo retenção/backup e restauração de versão), criptografia do bucket/state, IAM mínimo para o objeto state e `.tflock`, e `use_lockfile = true` no backend Terraform. Registre apenas os nomes/ARNs sanitizados, configurações não secretas, o resultado e a prova de recuperação; nunca state, tokens ou saída de credenciais. Não use DynamoDB para novo locking.
46
+
47
+ Depois do bootstrap, inicialize o backend com a identidade de backend, revise o lock gerado e somente então execute `terraform init -lockfile=readonly`. O bootstrap não amplia o contrato para recursos de aplicação ou provider. A Task AWS ativa pode cobrir esses recursos somente quando o contrato os delimita e existe plano salvo revisado; não exija uma Task nova ou confirmação repetida para esse mesmo mandato.
48
+
49
+ ## Ciclo Terraform
50
+
51
+ 1. Verificar profile, conta e região do backend via STS. Sem lockfile, fazer bootstrap com `terraform init`, revisar o lock gerado e só então usar `terraform init -lockfile=readonly`.
52
+ 2. Verificar profile, role e conta do provider via STS; rodar `terraform fmt -check`, `terraform validate` e `terraform plan -out` em diretório local ignorado.
53
+ 3. Revisar o plano, guardar apenas seu hash, versão do Terraform/providers, conta/região/roles sanitizadas e o resultado da política.
54
+ 4. Na Task AWS ativa e explicitamente autorizada, `terraform apply` só consome o plano salvo cuja hash foi revisada. A execução AWS CLI/Terraform deve validar contrato, identidades, targets e hash de plano; o `cloud-runner.mjs` Cloudflare/Hostinger não pode ser apresentado como suporte AWS.
55
+
56
+ Se autenticação, STS, init ou plano falhar, pare e registre diagnóstico sanitizado. Não faça fallback para outra conta/profile/role, nem repita mutações de provider sem reconciliação.
57
+
58
+ ## Fontes oficiais
59
+
60
+ - [AWS CLI SSO](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html)
61
+ - [Backend S3 do Terraform](https://developer.hashicorp.com/terraform/language/backend/s3)
62
+ - [Boas práticas AWS para backend Terraform](https://docs.aws.amazon.com/prescriptive-guidance/latest/terraform-aws-provider-best-practices/backend.html)
@@ -0,0 +1,183 @@
1
+ # Guia bem mastigado: VPS Hostinger, SSH, Codex e Terraform
2
+
3
+ Uma **VPS** é um computador Linux alugado; **CPU**, **RAM** e **disco** são sua velocidade, memória e espaço. **SSH** é a conexão segura do seu computador para esse Linux. **Terraform** descreve infraestrutura em arquivos; seu **state** é o registro privado do que ele já administra.
4
+
5
+ Este guia escolhe a próxima etapa pelo ponto em que a pessoa está. O Codex pode explicar, preparar arquivos locais e validar leitura autorizada, mas não compra, não cria token, não aplica Terraform e não faz deploy sem o escopo da Task. Quando plano, portas e alvos já forem autorizados, ele segue sem pedir a mesma autorização a cada etapa.
6
+
7
+ ## Primeiro: onde você está agora?
8
+
9
+ 1. **Sem VPS:** comece na etapa 1.
10
+ 2. **VPS comprada, sem SSH:** comece na etapa 3.
11
+ 3. **SSH funcionou duas vezes e a fingerprint foi conferida:** comece na etapa 5.
12
+
13
+ Se ainda faltar contexto, faça somente estas perguntas: qual aplicação e público? qual teto mensal e quanto pode pagar agora? é uma prova pequena ou a arquitetura aprovada de duas VPS? Reuse fatos já conhecidos e avance automaticamente quando a próxima ação for do Codex e já estiver autorizada.
14
+
15
+ ## 1. Orçamento, tamanho e desenho
16
+
17
+ **Você faz:** defina um teto que inclua VPS, domínio, backup, serviços externos, impostos e renovação. No checkout, o preço “por mês” pode ser o total antecipado dividido pelos meses. Anote total debitado hoje, período contratado e renovação.
18
+
19
+ Exemplo fictício, apenas para aprender a comparar:
20
+
21
+ | Escolha | Mensal equivalente | Débito agora | Renovação mensal equivalente | Conferir |
22
+ | --- | ---: | ---: | ---: | --- |
23
+ | Teste, 12 meses | R$ 35 | R$ 420 | R$ 70 | imposto, domínio, backup |
24
+ | Serviço pequeno, 24 meses | R$ 60 | R$ 1.440 | R$ 145 | custo de 2 VPS, se aplicável |
25
+
26
+ Comece com 30–50% de folga de RAM e disco para picos, logs e atualizações. É estimativa, não promessa: meça por alguns dias antes de aumentar.
27
+
28
+ | Caso | Hipótese | Avaliar primeiro | Aumentar quando |
29
+ | --- | --- | --- | --- |
30
+ | Aplicação simples | site/API leve, sem worker contínuo ou banco pesado local | 1–2 vCPU, 4–8 GB RAM, 50–100 GB NVMe | uso sustentado, disco abaixo de 30% livre ou lentidão medida |
31
+ | App + workers + observabilidade | API, tarefas de fundo, métricas e logs | 2–4 vCPU, 8–16 GB RAM, 100–200 GB NVMe | fila cresce, RAM troca para disco ou volume enche |
32
+ | `autonomous-cloud` aprovado | VPS 1 pública + VPS 2 privada | dimensionar e orçar **cada** VPS | nunca reduzir a uma VPS sem novo contrato |
33
+
34
+ Uma prova pequena pode propor uma VPS em um contrato futuro próprio. O contrato `autonomous-cloud` deste projeto exige VPS 1 como entrada pública e VPS 2 como aplicação privada; Cloudflare controla DNS/edge e Hostinger apenas as VPS.
35
+
36
+ **Codex faz:** registra as premissas e compara opções, sem inventar preço/capacidade. **Sucesso:** objetivo, região, teto e desenho estão escritos. **Próxima ação:** abrir a página da VPS e anotar checkout, sem pagar. **Retomar:** “retomar orçamento” com plano, período, total e renovação.
37
+
38
+ ## 2. Comprar no hPanel
39
+
40
+ **Você faz no navegador:**
41
+
42
+ 1. Abra [VPS da Hostinger](https://www.hostinger.com/br/servidor-vps) e prefira a experiência divulgada como VPS gerenciada por IA: hPanel, Terminal Web e Kodee reduzem o atrito inicial.
43
+ 2. Escolha plano e período. Veja o total antes de prosseguir; promoção não é previsão de renovação.
44
+ 3. Escolha região próxima ao público e um Linux estável suportado pelo projeto. Sem exigência diferente, Ubuntu LTS é uma escolha comum para Docker.
45
+ 4. Revise plano, período, região, SO, total, impostos e renovação. Só então faça o pagamento.
46
+
47
+ “Gerenciada por IA” não é administração terceirizada: continua uma VPS KVM com root SSH, API e responsabilidade sua por sistema, aplicação e dados. Trocar/reinstalar o SO apaga dados e snapshots; não é recuperação casual.
48
+
49
+ **Codex faz:** confere escolhas contra a Task; não usa cartão. API/MCP são opcionais e não servem para o primeiro SSH. **Sucesso:** hPanel mostra nome/ID, região, IP e SO. **Próxima ação:** em **VPS > Manage > Overview**, anote usuário, IP e porta SSH. **Retomar:** envie dados não secretos ou um screenshot recortado/sem pagamento e segredos.
50
+
51
+ ## 3. Criar a chave SSH no Windows
52
+
53
+ **LOCAL** é PowerShell no seu Windows. **SERVIDOR** é Terminal Web confiável do hPanel ou SSH autenticado. Nunca rode comando LOCAL no servidor, nem copie chave privada para ele.
54
+
55
+ **Você faz no PowerShell normal (LOCAL):**
56
+
57
+ 1. Confirme o cliente SSH:
58
+
59
+ ```text
60
+ ssh -V
61
+ ```
62
+
63
+ 2. Veja se pasta/chave existem; não sobrescreva uma chave:
64
+
65
+ ```text
66
+ Test-Path "$env:USERPROFILE\.ssh"
67
+ Test-Path "$env:USERPROFILE\.ssh\zaip_hostinger"
68
+ ```
69
+
70
+ Se a pasta não existir:
71
+
72
+ ```text
73
+ New-Item -ItemType Directory -Path "$env:USERPROFILE\.ssh"
74
+ ```
75
+
76
+ 3. Somente se o segundo teste for `False`, crie a chave. Quando pedir frase secreta, guarde-a localmente:
77
+
78
+ ```text
79
+ ssh-keygen -t ed25519 -a 64 -f "$env:USERPROFILE\.ssh\zaip_hostinger" -C "zaip-hostinger"
80
+ ```
81
+
82
+ 4. Exiba **somente** a chave pública; o arquivo sem `.pub` é privado:
83
+
84
+ ```text
85
+ Get-Content "$env:USERPROFILE\.ssh\zaip_hostinger.pub"
86
+ ```
87
+
88
+ 5. No hPanel: **VPS > Manage > Settings > SSH keys > Add**. Cole a linha pública, dê nome e salve.
89
+
90
+ 6. Só se necessário, em **PowerShell como Administrador**, ative o serviço:
91
+
92
+ ```text
93
+ Get-Service ssh-agent | Set-Service -StartupType Automatic
94
+ Start-Service ssh-agent
95
+ ```
96
+
97
+ Feche o administrador. No PowerShell normal do mesmo usuário que usará SSH/Codex:
98
+
99
+ ```text
100
+ ssh-add "$env:USERPROFILE\.ssh\zaip_hostinger"
101
+ ```
102
+
103
+ **Codex faz:** orienta comandos e guarda no máximo o caminho local, nunca chave privada, frase secreta ou token. O `ssh-agent` deve ser da mesma conta/ambiente: PowerShell não prova WSL, cloud ou outra conta. **Sucesso:** painel mostra a chave pública e a privada continua local. **Próxima ação:** conferir identidade do servidor. **Retomar:** envie status/erro sanitizado; chave pública e fingerprint podem ser compartilhadas, privada/frase/token não.
104
+
105
+ ## 4. Conferir identidade e entrar duas vezes
106
+
107
+ **Você faz:**
108
+
109
+ 1. Em **VPS > Manage > Overview**, copie usuário, IP e porta. Não adivinhe `root` ou porta 22.
110
+ 2. Abra Terminal Web no hPanel. No **SERVIDOR**, rode:
111
+
112
+ ```text
113
+ ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
114
+ ```
115
+
116
+ Anote algoritmo e fingerprint.
117
+ 3. No **LOCAL**, substitua os dados observados:
118
+
119
+ ```text
120
+ ssh -p PORTA -i "$env:USERPROFILE\.ssh\zaip_hostinger" USUARIO@IP
121
+ ```
122
+
123
+ 4. Aceite com `yes` somente se algoritmo e fingerprint coincidirem com o Terminal Web. Se divergir, responda `no` e pare.
124
+ 5. Rode `exit` e conecte uma segunda vez antes de alterar firewall, senha ou SSH.
125
+
126
+ **Codex faz:** só fixa a identidade após comparação por canal confiável; `ssh-keyscan` sozinho não autentica servidor. **Sucesso:** duas conexões com a mesma fingerprint. **Próxima ação:** se o Codex tiver permissão, peça a ele uma verificação de leitura; senão reporte o sucesso. **Retomar:** se a fingerprint mudou, não apague `known_hosts`; investigue primeiro no Terminal Web.
127
+
128
+ ## 5. Preparar o Codex para leitura segura
129
+
130
+ **Você faz:** abra o projeto local correto no Codex e forneça apenas alvo não secreto: alias SSH ou usuário/IP/porta, caminho local da chave e fingerprint confirmada pelos campos previstos na Task. Peça: “Verifique o executor SSH disponível, a compatibilidade da minha chave e, se compatível e autorizado, faça o teste de leitura permitido sem alterar o servidor”. No popup, confira ferramenta e alvo exatos antes de aprovar. Se for útil, envie erro sanitizado ou screenshot recortado, nunca pagamento, token, chave privada ou frase secreta.
131
+
132
+ Uma aprovação `never` não libera rede. Permissões gerenciadas não podem ser burladas. Não combine `default_permissions` com `sandbox_mode` ou `sandbox_workspace_write`, não crie acesso global total e não presuma que local, WSL e cloud têm a mesma rede/chave.
133
+
134
+ **Antes do teste pelo runner:** o SSH humano padrão acima pode usar sua chave criptografada e `ssh-agent`. O runner autônomo é diferente: ele aceita somente caminho de chave dentro da raiz do projeto, desativa `IdentityAgent`, usa modo não interativo e não lê sua chave em `%USERPROFILE%\.ssh`; a operação `hostinger:ssh:read` executa somente `uname -s`. Portanto uma chave criptografada externa que funciona no PowerShell **não** deixa o runner pronto. Primeiro o Codex inspeciona essas capacidades e o contrato. Se não existir uma identidade não interativa, protegida e autorizada dentro da raiz, o pré-requisito do runner está pendente; não copie a chave, não remova a frase secreta e não contorne o contrato.
135
+
136
+ ### Opção avançada: chave exclusiva para o runner
137
+
138
+ Use isto somente se você aceitar uma credencial sem frase secreta para execução não assistida. Nunca retire a frase da sua chave pessoal nem a copie.
139
+
140
+ 1. O Codex confirma `git check-ignore` para `.local/ssh`, permissões/ACL do disco, o host, usuário de deploy e comandos de leitura permitidos.
141
+ 2. Ele cria uma **nova** chave de automação em `.local/ssh`, com ACL limitada ao usuário local e disco local criptografado; ela nunca entra em Git ou chat.
142
+ 3. Você adiciona somente a nova `.pub` no hPanel ou em `authorized_keys` do usuário de deploy restrito e mantém seu login humano como recuperação.
143
+ 4. O Codex testa o runner em modo somente leitura; só então uma Task autorizada pode ampliar o uso.
144
+
145
+ Se política do host proibir essa chave ou você não aceitar o risco, registre essa escolha e pare: não há atalho. O bootstrap desse usuário/chave é separado do endurecimento de produção.
146
+
147
+ **Codex faz:** lê configuração efetiva e relata filesystem, rede e ferramentas disponíveis. Para Hostinger/Cloudflare autorizados, usa somente `node .agents/tools/cloud-runner.mjs`, que valida alvo, credencial de origem e fingerprint; hash de plano é exigido apenas para Terraform e hash de script apenas para configuração SSH. Se bloqueado, devolve a mensagem sanitizada exata e a rota suportada, sem atalho. **Sucesso:** o runner conclui `hostinger:ssh:read` no alvo/fingerprint aprovados; não expõe stdout de `uname` nem comprova hostname, `id` ou aplicação. Bloqueio é diagnóstico, não acesso bem-sucedido. **Próxima ação:** aprove apenas o popup previsto ou resolva o pré-requisito informado. **Retomar:** “verificar prontidão SSH” permanece somente leitura e não conecta sem contrato/autorização.
148
+
149
+ ## 6. API/MCP, firewall e configuração
150
+
151
+ **Você faz:** token não é necessário para SSH. Apenas se houver Task de automação: **hPanel > API** ou **Dev tools > API > Generate API token**, escolha nome/expiração, gere e guarde localmente em `.env` ignorado. Confirme na interface atual o menor escopo; não suponha token limitado a uma VPS. Nunca cole token no chat, Git, Terraform ou state. Após duas conexões, aprove as portas: web costuma precisar 80/443 no ingress aprovado e SSH administrativo limitado; Redis, banco, filas, exporters e painéis ficam privados.
152
+
153
+ **Codex faz:** prepara Docker/Compose, volumes, usuários, atualização, firewall, logs, healthchecks, limites e rollback. O padrão é Terraform local/runner aprovado e VPS para aplicação; Terraform remoto é tecnicamente possível quando o contrato o declara, protege e justifica. Na arquitetura de duas VPS, prepara transporte privado autenticado VPS 1 → VPS 2. **Sucesso:** há plano de portas, backup e rollback. **Próxima ação:** aprove portas se ainda não estiverem no escopo. **Retomar:** após queda, reconcilie antes de repetir escrita.
154
+
155
+ ## 7. Terraform sem VPS duplicada
156
+
157
+ **Você faz:** compra manualmente. Se VPS já existe, forneça ID aprovado para adoção/importação; não peça criação “só para testar”. Pare se plano mostrar VPS/DNS/custo inesperado.
158
+
159
+ **Codex faz:** bloqueia versões de provider, separa state do Git e usa ambiente local/HCP ou backend já aprovado. Não pede JSON de bucket ao leigo. Para S3, backend usa `bucket`, `key`, `region`, `encrypt = true` e `use_lockfile = true`; `terraform init` conecta ao backend existente, não cria bucket. R2 não tem versionamento nativo e exige snapshots/backup protegido e restauração testada. Antes de escrita: `fmt`, `validate`, `plan -out`, revisão do plano salvo e `apply` apenas do arquivo/hash aprovado. Nunca `-lock=false`. **Sucesso:** plano com hash sem segredo e importação ligada à VPS comprada. **Próxima ação:** aprove mudança no escopo quando necessário. **Retomar:** timeout pode criar recurso; consulte provider/state, reconcilie e só então replaineje.
160
+
161
+ ## 8. Provar que está rodando
162
+
163
+ **Você faz:** defina domínio, manutenção e responsável por backup. Container iniciado não prova serviço pronto.
164
+
165
+ **Codex faz:** configura DNS Cloudflare, TLS, imagens/digests aprovados, segredos externos, healthchecks, logs e monitoramento. Na topologia aprovada, verifica VPS 1 → VPS 2, isolamento beta/produção e recusa pública de portas privadas. Faz reboot controlado e lê logs. Restaurar pelo painel sobrescreve servidor: teste em cópia/destino isolado; produção só com manutenção autorizada, backup atual e retorno. **Sucesso:** DNS/TLS, endpoint, reboot, logs, backup/restauração segura e portas privadas estão comprovados. **Próxima ação:** escolha frequência de custo, atualização e restore. **Retomar:** peça health, backup, portas e custo com evidência; sem execução observada, o resultado é local/estático.
166
+
167
+ ## Problemas comuns
168
+
169
+ | Sintoma | Causa provável | Ação segura |
170
+ | --- | --- | --- |
171
+ | `Permission denied (publickey)` | usuário/chave errados ou agente de outra conta | confira Overview e SSH keys; rode `ssh-add` no PowerShell normal; não envie chave privada |
172
+ | Timeout | IP/porta errados, VPS desligada ou firewall | confira Overview/Terminal Web; não abra portas amplas por tentativa |
173
+ | `REMOTE HOST IDENTIFICATION HAS CHANGED` | host mudou ou há risco | pare e compare fingerprint no Terminal Web antes de remover entrada local |
174
+ | erro do agent | serviço não roda no mesmo usuário | configure serviço se preciso como administrador, depois `ssh-add` no usuário normal |
175
+ | Terraform cria VPS comprada | não está no state | pare, confira ID e importe/adote |
176
+ | lock Terraform | outra execução usa state ou falhou | espere/verifique dono e reconcilie; nunca use `-lock=false` |
177
+
178
+ ## Fontes oficiais
179
+
180
+ - [VPS Hostinger](https://www.hostinger.com/br/servidor-vps), [dashboard hPanel](https://www.hostinger.com/support/5726606-how-to-use-the-vps-dashboard-in-hostinger/) e [chaves SSH](https://www.hostinger.com/support/4792364-how-to-use-ssh-keys-at-hostinger-vps/)
181
+ - [Conexão SSH](https://support.hostinger.com/en/articles/5723772-how-to-connect-to-your-vps-via-ssh), [troca de SO](https://www.hostinger.com/support/4965922-how-to-change-the-operating-system-of-your-vps-at-hostinger/) e [backup/restauração](https://support.hostinger.com/en/articles/1583232-how-to-back-up-or-restore-a-vps)
182
+ - [Provider Terraform Hostinger](https://raw.githubusercontent.com/hostinger/terraform-provider-hostinger/master/docs/resources/vps.md), [OpenSSH no Windows](https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement)
183
+ - [Configuração](https://learn.chatgpt.com/docs/config-file/config-reference), [segurança](https://learn.chatgpt.com/docs/agent-approvals-security), [permissões do Codex](https://learn.chatgpt.com/docs/permissions), [backend](https://developer.hashicorp.com/terraform/language/backend) e [locking Terraform](https://developer.hashicorp.com/terraform/language/state/locking)
@@ -3,19 +3,14 @@ name: zaip-skill-marketing
3
3
  description: Plan evidence-grounded marketing strategy, copy, campaigns, assets, and image briefs. Use for a declared marketing objective; do not use for generic website, product frontend, or central design-system implementation.
4
4
  ---
5
5
 
6
- # Planejar marketing
6
+ # Marketing proporcional ao pedido
7
7
 
8
- ## Localização canônica
8
+ - Em pergunta, explicação ou copy curta com contexto suficiente, responda diretamente. Não crie campanha completa, arquivo ou questionário por padrão.
9
+ - Use objetivo, público, oferta e canal fornecidos; pergunte somente pelo dado que muda materialmente a resposta. Preserve fatos, mensagem aprovada e fontes. Rotule hipóteses; não invente público, métricas ou decisões de marca.
10
+ - Brandbook aprovado é referência read-only. Escale Branding somente para decisão de marca ausente ou contraditória; sales-facing vai a Sales, estratégia empresarial/RevOps a Growth, implementação de website/frontend ao especialista técnico.
11
+ - Imagens, briefs visuais e mockups somente quando pedidos no escopo. Meta Ads carrega sua skill e ferramentas somente para trabalho Meta.
12
+ - Para estratégia, planejamento de campanha ou entrega persistente, carregue [o fluxo progressivo](references/extended-workflow.md). Artefatos aprovados vivem em `.agents/marketing/`; `strategy.md` centraliza decisões estratégicas sem duplicação.
9
13
 
10
- Salve estratégias, campanhas, calendários, briefings, copy aprovada e ativos de marketing em `.agents/marketing/`. Não salve entregáveis de marketing em `docs/`, na raiz do repositório ou em diretórios de brand, sales ou growth.
14
+ Uma interaction read-only não materializa Task/Change. Entrega persistente segue lifecycle, Requirements/AC e assurance proporcionais; só trabalho técnico carrega engenharia.
11
15
 
12
- O arquivo central da área é `.agents/marketing/strategy.md`; atualize-o quando uma decisão mudar a estratégia de marketing. Campanhas e planos específicos podem ser arquivos adicionais na mesma pasta.
13
-
14
- ## Descoberta e entrega progressivas
15
-
16
- 1. Comece pelas referências acessíveis fornecidas — texto, site, PDF, PPT, planilha, arquivo ou imagem. Para cada uma, registre fonte, locator e classificação: fato, decisão aprovada, hipótese, dado ou lacuna. Trate Brandbook aprovado como input somente-leitura e preserve todos os artefatos aprovados; não recrie nem duplique a fonte central da área.
17
- 2. Se o trabalho começar do zero ou o contexto for insuficiente, faça no máximo cinco perguntas críticas por turno, por até três turnos. Pergunte somente por lacunas materiais: objetivo, ICP, oferta, canal, recursos disponíveis ou métrica. Espere as respostas antes de avançar nas partes que delas dependem; silêncio não é resposta nem aprovação. Após três turnos, mantenha lacunas explícitas e use somente hipóteses delegáveis rotuladas; não invente decisões de marca, autoridade, evidência, métricas ou público.
18
- 3. Pedido pontual com contexto suficiente deve ser executado diretamente, sem questionário obrigatório ou plano completo.
19
- 4. Aplique somente as partes necessárias ao escopo solicitado: `objetivo, ICP, oferta, canal, recursos e métrica` → `estratégia e mensagem` → `campanha e copy` → `ativos no escopo`. Identifique o material em construção e consolide somente decisões estratégicas sustentadas em `.agents/marketing/strategy.md`; campanhas, planos e copies específicos ficam em arquivos complementares sem repetir a estratégia central, sem exigir todos os módulos ou formatos.
20
- 5. Produza estratégia, copy, campanha, conteúdo ou aplicação de marca proporcionais ao objetivo e ao escopo aprovado. Copy de marketing ambígua permanece com Lúcia. Não gere imagens, briefs visuais, mockups ou outros ativos por iniciativa própria; produza-os somente quando forem solicitados e estiverem no escopo.
21
- 6. Escalar Sarah somente se uma decisão de marca estiver ausente, contraditória ou precisar ser criada; um Brandbook aprovado não redireciona a entrega para Branding. Encaminhar script voltado a vendas para Aaron, estratégia empresarial/RevOps para Robert, website para Jonny, frontend de produto para Doug e regra visual central para Manu.
16
+ Para copy pontual, resumo salvo ou organização simples de contexto com fontes fornecidas, use o [perfil editorial `lite`](../zaip-skill-task/SKILL.md#assurance-proporcional): selecione `--risk lite` somente quando o impacto for baixo e não houver código, configuração, ação externa, informação sensível, estratégia crítica ou decisão de marca nova.
@@ -0,0 +1,16 @@
1
+ # Planejar marketing
2
+
3
+ ## Localização canônica
4
+
5
+ Salve estratégias, campanhas, calendários, briefings, copy aprovada e ativos de marketing em `.agents/marketing/`. Não salve entregáveis de marketing em `docs/`, na raiz do repositório ou em diretórios de brand, sales ou growth.
6
+
7
+ O arquivo central da área é `.agents/marketing/strategy.md`; atualize-o quando uma decisão mudar a estratégia de marketing. Campanhas e planos específicos podem ser arquivos adicionais na mesma pasta.
8
+
9
+ ## Descoberta e entrega progressivas
10
+
11
+ 1. Comece pelas referências acessíveis fornecidas — texto, site, PDF, PPT, planilha, arquivo ou imagem. Para cada uma, registre fonte, locator e classificação: fato, decisão aprovada, hipótese, dado ou lacuna. Trate Brandbook aprovado como input somente-leitura e preserve todos os artefatos aprovados; não recrie nem duplique a fonte central da área.
12
+ 2. Se o trabalho começar do zero ou o contexto for insuficiente, faça no máximo cinco perguntas críticas por turno, por até três turnos. Pergunte somente por lacunas materiais: objetivo, ICP, oferta, canal, recursos disponíveis ou métrica. Espere as respostas antes de avançar nas partes que delas dependem; silêncio não é resposta nem aprovação. Após três turnos, mantenha lacunas explícitas e use somente hipóteses delegáveis rotuladas; não invente decisões de marca, autoridade, evidência, métricas ou público.
13
+ 3. Pedido pontual com contexto suficiente deve ser executado diretamente, sem questionário obrigatório ou plano completo.
14
+ 4. Aplique somente as partes necessárias ao escopo solicitado: `objetivo, ICP, oferta, canal, recursos e métrica` → `estratégia e mensagem` → `campanha e copy` → `ativos no escopo`. Identifique o material em construção e consolide somente decisões estratégicas sustentadas em `.agents/marketing/strategy.md`; campanhas, planos e copies específicos ficam em arquivos complementares sem repetir a estratégia central, sem exigir todos os módulos ou formatos.
15
+ 5. Produza estratégia, copy, campanha, conteúdo ou aplicação de marca proporcionais ao objetivo e ao escopo aprovado. Copy de marketing ambígua permanece com Lúcia. Não gere imagens, briefs visuais, mockups ou outros ativos por iniciativa própria; produza-os somente quando forem solicitados e estiverem no escopo.
16
+ 6. Escalar Sarah somente se uma decisão de marca estiver ausente, contraditória ou precisar ser criada; um Brandbook aprovado não redireciona a entrega para Branding. Encaminhar script voltado a vendas para Aaron, estratégia empresarial/RevOps para Robert, website para Jonny, frontend de produto para Doug e regra visual central para Manu.
@@ -7,6 +7,8 @@ description: Configure and connect the official remote Meta Ads MCP for Codex wi
7
7
 
8
8
  Use esta skill quando o pedido for configurar, conectar ou instalar o Meta Ads MCP. Ela não consulta campanhas; após as tools serem anunciadas, use `$zaip-skill-meta-ads`.
9
9
 
10
+ Quando a pessoa pedir teste manual com token Graph ou bearer MCP, encaminhe para `$zaip-skill-meta-token-onboarding`; este fluxo OAuth permanece separado.
11
+
10
12
  1. Execute o precheck no cwd do projeto: `codex --version`, `codex mcp login --help` e `node .agents/skills/zaip-skill-tool-setup/scripts/inspect-tool.mjs meta-ads mcp`. Confirme endpoint e OAuth nas [fontes oficiais verificadas em 2026-09-05](references/official-sources.md). O manifest distribuído permanece `enabled: false`; isso é diferente da configuração local solicitada.
11
13
  2. Antes de escrever, confirme que o projeto é trusted no Codex, pois `.codex/config.toml` pode ser ignorado fora de um projeto confiável. Se for ignorado, diagnostique trust e não o altere automaticamente. Preserve o conteúdo de `.codex/config.toml`. Se uma tabela existente usar `url = "https://mcp.facebook.com/ads"`, reutilize seu alias e não duplique a conexão. Se existir `[mcp_servers.meta-ads]` com URL diferente ou configuração incompatível, trate como conflito e não o reescreva. Sem conflito, acrescente uma vez:
12
14
 
@@ -0,0 +1,17 @@
1
+ ---
2
+ name: zaip-skill-meta-token-onboarding
3
+ description: Orienta teste manual e local da Graph API e do MCP Meta com token temporário, incluindo a validação separada de cada caminho.
4
+ ---
5
+
6
+ # Onboarding de token Meta para iniciantes
7
+
8
+ Use quando uma pessoa quer testar, com os próprios ativos Meta, a Graph API e uma configuração MCP explicitamente solicitada. Não use para operar campanhas, contornar revisão ou receber segredos no chat.
9
+
10
+ Explique primeiro o limite: uma conta de desenvolvedor Meta e um app próprio permitem testar ativos aos quais a pessoa já tem acesso e que estão autorizados para o app. Em geral, app review não é necessário apenas para pessoas com papel no app e ativos próprios; a Meta pode exigir verificações, acesso adicional ou impor limites conforme o produto, a conta e a política vigente. Leia o [guia detalhado](references/onboarding-manual.md) antes de orientar execução.
11
+
12
+ 1. Guie a pessoa no Graph API Explorer: escolha o app próprio, `Token do usuário`, as permissões de API `ads_read` e `business_management`, e clique em **Gerar token**. Se o painel atual mostrar dependências, inclua `pages_read_engagement` e `pages_show_list` somente quando exigidas. Ela nunca cola token, App Secret ou URL de autorização no chat.
13
+ 2. Somente se a pessoa autorizar explicitamente configurar, trocar ou testar, use `$zaip-skill-local-credentials` para acessar o `.env` ignorado da raiz. Essa autorização cobre os passos locais necessários daquele fluxo. Valide o token temporário com `GET /me` antes de o substituir e faça a troca server-side pelo token de longa duração retornado pela Meta. Não exponha credenciais em argumentos, URLs, logs, records ou evidências.
14
+ 3. Faça a prova da API em leituras `GET` paginadas: `/me`, `/me/businesses`, `owned_ad_accounts` e `client_ad_accounts` da BM escolhida, depois `/act_ID/campaigns`. Deduplicate contas pelo ID, peça que a pessoa escolha uma conta `act_...` e declare resultados vazios, limites e escopos insuficientes como tais.
15
+ 4. Para afirmar que o MCP foi validado, faça uma prova separada no endpoint `https://mcp.facebook.com/ads`. No ramo bearer explicitamente solicitado, confira o contrato atual, inclua `ads_mcp_management` se exigido e use o mapeamento seguro da variável local no host ou um agente HTTP direto que a mantenha em memória. Inicialize, envie `notifications/initialized`, obtenha `tools/list` e execute uma leitura de campanhas na mesma `act_ID`, preservando os headers de sessão e versão de protocolo solicitados pelo servidor. POST é permitido só para esses métodos MCP e uma ferramenta de leitura. Para o ramo OAuth, use `$zaip-skill-meta-ads-setup`. Esses escopos não autorizam escrita; só declare falha MCP quando uma falha for observada.
16
+
17
+ Não execute chamadas, grave `.env` ou renove token só porque esta skill foi lida. Um pedido explícito de configurar, trocar ou testar autoriza os passos necessários daquele fluxo, sem ampliar para escrita. Use os prompts sem segredo e as referências de política no guia.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Onboarding de Token Meta"
3
+ short_description: "Guia local de token para Graph API e MCP Meta"
4
+ default_prompt: "Use $zaip-skill-meta-token-onboarding para testar Graph API e MCP Meta com token local, sem receber segredos no chat."
@@ -0,0 +1,96 @@
1
+ # Teste simplificado: Graph API primeiro, MCP depois
2
+
3
+ Este roteiro é para a pessoa testar os próprios ativos, sem virar Tech Provider. Ele não cria acesso a uma conta, não publica anúncios e não substitui as políticas atuais da Meta. Pense em três coisas: o **app** é o cadastro da integração, a **BM** é o portfólio empresarial que reúne ou compartilha contas de anúncio, e o **token** é uma chave temporária para a pessoa provar o próprio acesso.
4
+
5
+ ## O que a pessoa precisa preparar
6
+
7
+ 1. Abrir [Meta for Developers](https://developers.facebook.com/), escolher **Entrar** ou **Começar** e usar o próprio login Meta. Concluir as verificações que a tela solicitar.
8
+ 2. Abrir **Meus apps** e escolher **Criar app**. Dar um nome, seguir o caso de uso que o painel apresentar para Marketing API ou gerenciamento de anúncios e confirmar o próprio papel no app. O nome e o tipo disponíveis podem mudar; para este teste, o app é só o cadastro da integração e não exige programar ou publicar um software.
9
+ 3. Anotar o App ID; o App Secret continua privado.
10
+ 4. Confirmar que a própria pessoa tem um papel adequado no app e acesso aos ativos que pretende consultar. Não exija que ela seja administradora de todos os ativos. Para uma prova de leitura de ativos próprios, normalmente não é preciso concluir app review; isso não garante acesso a qualquer BM, conta ou recurso. A Meta pode exigir verificações específicas, aprovações e níveis de acesso conforme o caso.
11
+ 5. Abrir o [Graph API Explorer](https://developers.facebook.com/tools/explorer/). Escolher o app, **Token do usuário**, marcar `ads_read` e `business_management` e clicar em **Gerar token**, como no exemplo fornecido. Se o painel atual exigir as dependências `pages_read_engagement` e `pages_show_list`, marque-as para completar o consentimento. Se também for testar o ramo MCP bearer, selecione `ads_mcp_management` nesse momento. Caso adicione esse escopo depois, gere um novo token, conclua o consentimento e repita a troca; escopos não são acrescentados editando `.env`. O token temporário é uma credencial: não envie por chat, e-mail, issue, log ou captura de tela.
12
+
13
+ `ads_read` permite as leituras de marketing descritas aqui. `business_management` permite descobrir os negócios que o usuário pode administrar. Alguns desses escopos também podem permitir operações de escrita em outros fluxos, mas este roteiro autoriza somente `GET` e ferramentas read-only. Escopos adicionais só devem ser solicitados se a resposta da Meta ou o painel atual mostrar que são necessários para um recurso específico.
14
+
15
+ ## Arquivo local e troca por token de longa duração
16
+
17
+ O `.env` fica na raiz do repositório, deve estar ignorado pelo Git e só pode ser escrito após a pessoa pedir explicitamente essa ação. É uma persistência local, não um mecanismo automático do host.
18
+
19
+ | Chave local | Valor que a pessoa preenche | Uso |
20
+ | --- | --- | --- |
21
+ | `META_APP_ID` | ID do app próprio | troca server-side |
22
+ | `META_APP_SECRET` | segredo do mesmo app | troca server-side |
23
+ | `META_GRAPH_API_VERSION` | versão Graph escolhida para o teste | endpoints Graph |
24
+ | `META_GRAPH_ACCESS_TOKEN` | token de usuário temporário ou renovado | leituras Graph |
25
+
26
+ Use a versão selecionada no painel, por exemplo `vNN.0`; não trate uma versão como universal. Um `.env` local terá somente placeholders neste guia:
27
+
28
+ ```dotenv
29
+ META_APP_ID=PREENCHA_LOCALMENTE
30
+ META_APP_SECRET=PREENCHA_LOCALMENTE
31
+ META_GRAPH_API_VERSION=vNN.0
32
+ META_GRAPH_ACCESS_TOKEN=PREENCHA_LOCALMENTE
33
+ ```
34
+
35
+ Antes de gravar, valide que `.env` é ignorado e não rastreado com `git check-ignore .env` e `git ls-files --error-unmatch .env`; ambos os comandos tratam apenas o caminho, não o valor. Ao atualizar, preserve comentários e chaves não relacionadas.
36
+
37
+ O App Secret fica em **App Settings > Basic > Show** no painel do app. Antes da troca, o agente autorizado valida o token temporário em `GET /me?fields=id,name`; uma resposta com `id` e `name` mostra quem foi autenticado. A troca é um `GET https://graph.facebook.com/{META_GRAPH_API_VERSION}/oauth/access_token` com os parâmetros `grant_type=fb_exchange_token`, `client_id`, `client_secret` e `fb_exchange_token`. O processo monta os valores somente em memória, usa HTTPS para `graph.facebook.com` e não imprime nem registra a URL completa, argumentos ou logs com credenciais. A troca usa token válido, App ID e App Secret do mesmo app. A Meta normalmente devolve um token de longa duração em torno de 60 dias, mas o retorno, a expiração e a elegibilidade pertencem à resposta atual da Meta. Se o token expirar, é preciso fazer novo login e gerar um novo token temporário; não há renovação infinita garantida.
38
+
39
+ Após uma troca bem-sucedida, o agente valida de novo `GET /me` usando o token retornado e confirma o mesmo `id` antes de substituir `META_GRAPH_ACCESS_TOKEN` localmente. Quando disponível, também confere metadados redigidos em `debug_token` — `app_id`, `is_valid`, escopos e expiração. A atualização do `.env` é atômica, preserva comentários e chaves não relacionadas e interpreta dotenv como dados, sem `source` ou `eval`. Qualquer erro de escopo, validade, aplicação ou permissão deve ser comunicado sem copiar a credencial.
40
+
41
+ ## Prova de leitura da API
42
+
43
+ Peça leituras apenas, com campos mínimos, `limit` moderado e paginação até o fim ou até um limite declarado.
44
+
45
+ 1. **Identidade.** `GET /me?fields=id,name`. Guarde apenas os valores de negócio necessários para a resposta; não o token.
46
+ 2. **BMs disponíveis.** `GET /me/businesses?fields=id,name`. A pessoa escolhe uma BM à qual tenha acesso. Para um cenário de teste mais representativo, escolha uma BM que tenha pelo menos um conjunto de anúncios ativo e válido; isso é uma verificação adicional do cenário, não requisito de autenticação.
47
+ 3. **Contas da BM.** Leia as duas relações, sempre paginando: `GET /BM_ID/owned_ad_accounts?fields=id,name,account_status` e `GET /BM_ID/client_ad_accounts?fields=id,name,account_status`. Una as listas e remova duplicatas pelo `id`. A pessoa escolhe uma conta cujo ID é `act_...`.
48
+ 4. **Campanhas.** `GET /act_ID/campaigns?fields=id,name,status,effective_status`, com `ads_read`. A resposta com dados ou uma lista vazia prova a leitura para a conta escolhida; uma lista vazia não significa falha de autorização. Para conferir o cenário de conjunto ativo, a leitura adicional filtra `adsets` por `effective_status=ACTIVE`. Esse status não comprova entrega, validade comercial ou performance e o roteiro nunca ativa anúncios.
49
+
50
+ Registre para a pessoa somente: endpoint, data/hora, ID selecionado, número de páginas, resultado `dados`, `vazio`, `scope-insufficient` ou `erro`. Não coloque tokens, secrets, headers de autorização, URLs completas ou payloads brutos em evidência.
51
+
52
+ ## Prova da API e prova do MCP
53
+
54
+ Uma resposta Graph API prova o token e os endpoints Graph; `ads_read` não valida sozinho o MCP. Ela não prova que um MCP foi instalado, autenticado ou autorizou a mesma conta. OAuth é o caminho padrão para o MCP oficial Meta Ads configurado por ZAIP. A metadata atual do recurso Meta Ads anuncia bearer header e inclui `ads_read`, `business_management`, `pages_show_list` e `ads_mcp_management` entre os scopes; isso permite testar o ramo bearer quando ele for explicitamente solicitado, mas não prova antecipadamente que um token de usuário será aceito.
55
+
56
+ Se `tools/list` ou a documentação atual do MCP exigirem `ads_mcp_management`, peça esse escopo apenas no ramo de teste MCP e respeite suas dependências atuais no painel. Ele não substitui `ads_read` para a consulta Graph de campanhas nem autoriza escrita. O vídeo de operações de escrita citado pela Meta para App Review não é etapa deste tutorial.
57
+
58
+ No ramo bearer explicitamente solicitado, confira primeiro o contrato de recurso atual em `https://mcp.facebook.com/ads`. Se ele continuar aceitando bearer e exigir `ads_mcp_management`, obtenha o escopo no token, respeitando dependências mostradas no painel. Há duas opções: configurar o host para mapear a variável local de token para `bearer_token_env_var`, sem gravar valor literal; ou usar um agente HTTP direto que mantenha a variável somente em memória. `.env` não é carregado automaticamente: o processo do host precisa receber a variável por um carregamento dotenv local e seguro. Em ambos os casos, envie POST para `initialize`, `notifications/initialized`, `tools/list` e `tools/call` de leitura; mantenha os headers de sessão e da versão de protocolo conforme a resposta do servidor. Chame uma ferramenta de leitura de campanhas para a mesma `act_ID` já escolhida. Não altere TOML ou configuração de host sem esse pedido explícito; se ele existir, a edição é permitida dentro desse escopo. Declare falha apenas pela resposta observada, nunca por suposição. OAuth continua disponível como o caminho padrão, sem forçar uma troca de volta.
59
+
60
+ Para validar um MCP após configurá-lo, o agente deve: (1) obter `tools/list` e seus schemas; (2) executar uma ferramenta de leitura real; e (3) informar se recebeu dados, vazio, falta de escopo, política bloqueada ou erro de transporte. Descobrir ferramentas ou concluir OAuth não é leitura real. Para o MCP oficial, use `$zaip-skill-meta-ads-setup` e depois `$zaip-skill-meta-ads`.
61
+
62
+ ## Prompts copiáveis, sem segredo
63
+
64
+ Após salvar as credenciais localmente, fora do chat, a pessoa pode pedir:
65
+
66
+ > Use esta skill para verificar localmente se as chaves Meta necessárias existem no `.env` da raiz, sem mostrar valores. Valide `GET /me` antes de qualquer troca de token.
67
+
68
+ > Com minha autorização para trocar o token, use `META_GRAPH_API_VERSION` e faça a troca local do token Graph temporário. Não mostre nem grave segredos em logs, URLs, argumentos, records ou evidências. Valide `/me` com o token retornado antes de atualizar o `.env`.
69
+
70
+ > Faça somente leituras Graph paginadas: minhas BMs, as contas próprias e de cliente da BM que eu escolher e as campanhas da conta `act_...` que eu escolher. Não altere ativos; informe cobertura e qualquer limitação.
71
+
72
+ > Com minha autorização para configurar e testar o ramo bearer MCP, confira o contrato atual, mapeie a variável local no host sem valor literal, recarregue, liste as tools e faça uma leitura de campanhas na mesma conta `act_...`. Não escreva nem declare falha sem uma resposta observada.
73
+
74
+ ## Sobre acesso permanente e a Zaip
75
+
76
+ Este fluxo é intencionalmente temporário e adequado a um teste simples. Acesso duradouro, automação em produção e uso com terceiros dependem do produto Meta, do modelo de token, da revisão, das permissões e das políticas aplicáveis. Para cenários elegíveis, um system user pode ter token sem expiração conforme a documentação atual da Meta no Postman; ele continua revogável e não depende de uma parceria universal.
77
+
78
+ A [Zaip](https://zaip.com.br/) se apresenta institucionalmente como Parceiro Oficial Tech Provider no contexto WhatsApp. Pode ajudar a estruturar soluções e conformidade com as políticas aplicáveis, sem afirmar auditoria independente, selo de Ads ou MCP, nem token permanente exclusivo de parceiro.
79
+
80
+ ## Referências oficiais e limite de política
81
+
82
+ - [Meta: tokens de longa duração](https://developers.facebook.com/docs/facebook-login/guides/access-tokens/get-long-lived/) — página verificada em 2026-09-06: troca server-side requer token válido, App ID e App Secret; token de usuário costuma durar cerca de 60 dias.
83
+ - [Meta: autorização da Marketing API](https://developers.facebook.com/docs/marketing-api/overview/authorization/) — página verificada em 2026-09-06: testes de contas próprias têm limites e os níveis Limited e Full Access são avaliados pela Meta; não confunda com acesso garantido a todos os ativos.
84
+ - [Meta Ads MCP: recurso OAuth protegido](https://mcp.facebook.com/.well-known/oauth-protected-resource/ads) — metadata verificada em 2026-09-06; suporta bearer header e anuncia scopes, mas não atesta a aceitação de um token específico.
85
+ - [Meta: permissões](https://developers.facebook.com/docs/permissions/) — consulte para `ads_mcp_management` e dependências atuais antes do ramo bearer.
86
+ - [Meta Graph API: negócios do usuário](https://developers.facebook.com/docs/graph-api/reference/user/businesses/), [contas próprias da BM](https://developers.facebook.com/docs/marketing-api/reference/business/owned_ad_accounts/), [contas de cliente da BM](https://developers.facebook.com/docs/marketing-api/reference/business/client_ad_accounts/) e [campanhas da conta](https://developers.facebook.com/docs/marketing-api/reference/ad-account/campaigns/) — referências das edges usadas nas leituras.
87
+ - [Meta Postman: Facebook Marketing API](https://www.postman.com/meta/facebook-marketing-api/documentation/0zr4mes/facebook-marketing-api-mapi?entity=request-31691153-6b7e9445-1832-42ae-b40a-bdd1b831f714) — coleção direta da Meta sobre tokens de usuário e system user; consulte antes de afirmar elegibilidade ou expiração.
88
+ - [Meta Graph API Explorer](https://developers.facebook.com/tools/explorer/) — a interface e as permissões disponíveis podem mudar; siga a tela atual da Meta.
89
+
90
+ ## Como concluir o teste
91
+
92
+ - **API validada:** o novo token respondeu o mesmo `id` em `/me`, a BM e uma conta `act_...` foram selecionadas e a leitura de campanhas devolveu dados ou vazio legítimo.
93
+ - **MCP validado:** depois de `initialize` ou reload, `tools/list` e uma ferramenta de leitura de campanhas para a mesma `act_ID` responderam de forma observável.
94
+ - **Cenário ativo confirmado:** a leitura opcional de `adsets` encontrou um conjunto com status ativo e válido. Isso confirma o cenário de teste, não a autenticação.
95
+
96
+ As políticas e os produtos Meta mudam. Quando a tela ou a resposta da API divergir deste guia, trate a fonte Meta atual como autoridade e reporte a divergência antes de ampliar permissões ou mudar o fluxo.
@@ -0,0 +1,14 @@
1
+ ---
2
+ name: zaip-skill-module-scaffold
3
+ description: Scaffold a safe minimal application module from the declared ZAIP profile and preserve existing work.
4
+ ---
5
+
6
+ # Scaffold a module
7
+
8
+ Use when a capability needs a new module shell, not to overwrite an existing implementation.
9
+
10
+ 1. Read `.agents/config/project.yaml` and verify that the profile declares a supported relative modules path.
11
+ 2. Run `node .agents/skills/zaip-skill-module-scaffold/scripts/scaffold.mjs <name> [--root <root>] [--dry-run]`; read its grammar before automation.
12
+ 3. The scaffold rejects traversal, absolute paths, Windows reserved names, case collisions, and paths that resolve through a junction outside the root.
13
+ 4. It is idempotent for identical generated files and refuses partial or divergent files; resolve those edits manually with their owner.
14
+ 5. Keep the generated domain/application shell free of database and framework imports. Add adapters only after a bounded contract exists and validate the module with its declared test command.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Module Scaffold"
3
+ short_description: "Create a safe minimal module shell"
4
+ default_prompt: "Use $zaip-skill-module-scaffold to create a minimal module for this capability."
@@ -0,0 +1,9 @@
1
+ # Scaffold grammar and output
2
+
3
+ Run `node .agents/skills/zaip-skill-module-scaffold/scripts/scaffold.mjs <module-name> [--root <directory>] [--dry-run]`.
4
+
5
+ The module name is lowercase kebab-case. `--root` defaults to the current directory; `--dry-run` writes nothing. Repeated flags are rejected. The helper requires stack id `zaip-aios-stack`, language `typescript`, and a safe relative `stack.layout.modules` path. It emits schema version, stack id, relative module path, dry-run state, and sorted `created` and `unchanged` paths.
6
+
7
+ The generated shell has a domain type, an application factory, a public index, and a co-located TypeScript behavior check. It deliberately has no database, Hono, Kysely, Supabase, Redis, or BullMQ import.
8
+
9
+ The consumer must provide TypeScript and `@types/node`. Compile with its project `tsconfig` or a portable temporary tsconfig that sets Node types and emits JavaScript, then run `node --test <emitted>/application.test.js`. This generated check is Node-test compatible; it does not promise automatic Vitest discovery.