product-forge 0.2.0__tar.gz

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 (398) hide show
  1. product_forge-0.2.0/.agents/agents/agent-ops-coordinator.md +17 -0
  2. product_forge-0.2.0/.agents/agents/data-analyst-coordinator.md +18 -0
  3. product_forge-0.2.0/.agents/agents/executors/pf-extractor.md +16 -0
  4. product_forge-0.2.0/.agents/agents/executors/pf-judge.md +16 -0
  5. product_forge-0.2.0/.agents/agents/executors/pf-synthesizer.md +14 -0
  6. product_forge-0.2.0/.agents/agents/executors/pf-verifier.md +14 -0
  7. product_forge-0.2.0/.agents/agents/integration-coordinator.md +16 -0
  8. product_forge-0.2.0/.agents/agents/planning-coordinator.md +17 -0
  9. product_forge-0.2.0/.agents/agents/product-intel-coordinator.md +19 -0
  10. product_forge-0.2.0/.agents/skills/pf-agent-factory/SKILL.md +45 -0
  11. product_forge-0.2.0/.agents/skills/pf-agent-factory/agents/openai.yaml +4 -0
  12. product_forge-0.2.0/.agents/skills/pf-analytics/SKILL.md +43 -0
  13. product_forge-0.2.0/.agents/skills/pf-analytics/agents/openai.yaml +4 -0
  14. product_forge-0.2.0/.agents/skills/pf-apis/SKILL.md +40 -0
  15. product_forge-0.2.0/.agents/skills/pf-apis/agents/openai.yaml +4 -0
  16. product_forge-0.2.0/.agents/skills/pf-aws/SKILL.md +39 -0
  17. product_forge-0.2.0/.agents/skills/pf-aws/agents/openai.yaml +4 -0
  18. product_forge-0.2.0/.agents/skills/pf-azure/SKILL.md +38 -0
  19. product_forge-0.2.0/.agents/skills/pf-azure/agents/openai.yaml +4 -0
  20. product_forge-0.2.0/.agents/skills/pf-dashboards/SKILL.md +42 -0
  21. product_forge-0.2.0/.agents/skills/pf-dashboards/agents/openai.yaml +4 -0
  22. product_forge-0.2.0/.agents/skills/pf-data-products/SKILL.md +39 -0
  23. product_forge-0.2.0/.agents/skills/pf-data-products/agents/openai.yaml +4 -0
  24. product_forge-0.2.0/.agents/skills/pf-finops/SKILL.md +39 -0
  25. product_forge-0.2.0/.agents/skills/pf-finops/agents/openai.yaml +4 -0
  26. product_forge-0.2.0/.agents/skills/pf-governance/SKILL.md +39 -0
  27. product_forge-0.2.0/.agents/skills/pf-governance/agents/openai.yaml +4 -0
  28. product_forge-0.2.0/.agents/skills/pf-knowledge/SKILL.md +41 -0
  29. product_forge-0.2.0/.agents/skills/pf-knowledge/agents/openai.yaml +4 -0
  30. product_forge-0.2.0/.agents/skills/pf-prioritization/SKILL.md +39 -0
  31. product_forge-0.2.0/.agents/skills/pf-prioritization/agents/openai.yaml +4 -0
  32. product_forge-0.2.0/.agents/skills/pf-product-discovery/SKILL.md +42 -0
  33. product_forge-0.2.0/.agents/skills/pf-product-discovery/agents/openai.yaml +4 -0
  34. product_forge-0.2.0/.agents/skills/pf-product-strategy/SKILL.md +44 -0
  35. product_forge-0.2.0/.agents/skills/pf-product-strategy/agents/openai.yaml +4 -0
  36. product_forge-0.2.0/.agents/skills/pf-reporting/SKILL.md +39 -0
  37. product_forge-0.2.0/.agents/skills/pf-reporting/agents/openai.yaml +4 -0
  38. product_forge-0.2.0/.agents/skills/pf-requirements/SKILL.md +39 -0
  39. product_forge-0.2.0/.agents/skills/pf-requirements/agents/openai.yaml +4 -0
  40. product_forge-0.2.0/.agents/skills/pf-sql/SKILL.md +45 -0
  41. product_forge-0.2.0/.agents/skills/pf-sql/agents/openai.yaml +4 -0
  42. product_forge-0.2.0/.devin/skills/pf-agent-factory/SKILL.md +45 -0
  43. product_forge-0.2.0/.devin/skills/pf-agent-factory/agents/openai.yaml +4 -0
  44. product_forge-0.2.0/.devin/skills/pf-analytics/SKILL.md +43 -0
  45. product_forge-0.2.0/.devin/skills/pf-analytics/agents/openai.yaml +4 -0
  46. product_forge-0.2.0/.devin/skills/pf-apis/SKILL.md +40 -0
  47. product_forge-0.2.0/.devin/skills/pf-apis/agents/openai.yaml +4 -0
  48. product_forge-0.2.0/.devin/skills/pf-aws/SKILL.md +39 -0
  49. product_forge-0.2.0/.devin/skills/pf-aws/agents/openai.yaml +4 -0
  50. product_forge-0.2.0/.devin/skills/pf-azure/SKILL.md +38 -0
  51. product_forge-0.2.0/.devin/skills/pf-azure/agents/openai.yaml +4 -0
  52. product_forge-0.2.0/.devin/skills/pf-dashboards/SKILL.md +42 -0
  53. product_forge-0.2.0/.devin/skills/pf-dashboards/agents/openai.yaml +4 -0
  54. product_forge-0.2.0/.devin/skills/pf-data-products/SKILL.md +39 -0
  55. product_forge-0.2.0/.devin/skills/pf-data-products/agents/openai.yaml +4 -0
  56. product_forge-0.2.0/.devin/skills/pf-finops/SKILL.md +39 -0
  57. product_forge-0.2.0/.devin/skills/pf-finops/agents/openai.yaml +4 -0
  58. product_forge-0.2.0/.devin/skills/pf-governance/SKILL.md +39 -0
  59. product_forge-0.2.0/.devin/skills/pf-governance/agents/openai.yaml +4 -0
  60. product_forge-0.2.0/.devin/skills/pf-knowledge/SKILL.md +41 -0
  61. product_forge-0.2.0/.devin/skills/pf-knowledge/agents/openai.yaml +4 -0
  62. product_forge-0.2.0/.devin/skills/pf-prioritization/SKILL.md +39 -0
  63. product_forge-0.2.0/.devin/skills/pf-prioritization/agents/openai.yaml +4 -0
  64. product_forge-0.2.0/.devin/skills/pf-product-discovery/SKILL.md +42 -0
  65. product_forge-0.2.0/.devin/skills/pf-product-discovery/agents/openai.yaml +4 -0
  66. product_forge-0.2.0/.devin/skills/pf-product-strategy/SKILL.md +44 -0
  67. product_forge-0.2.0/.devin/skills/pf-product-strategy/agents/openai.yaml +4 -0
  68. product_forge-0.2.0/.devin/skills/pf-reporting/SKILL.md +39 -0
  69. product_forge-0.2.0/.devin/skills/pf-reporting/agents/openai.yaml +4 -0
  70. product_forge-0.2.0/.devin/skills/pf-requirements/SKILL.md +39 -0
  71. product_forge-0.2.0/.devin/skills/pf-requirements/agents/openai.yaml +4 -0
  72. product_forge-0.2.0/.devin/skills/pf-sql/SKILL.md +45 -0
  73. product_forge-0.2.0/.devin/skills/pf-sql/agents/openai.yaml +4 -0
  74. product_forge-0.2.0/.gitignore +11 -0
  75. product_forge-0.2.0/AGENTS.md +68 -0
  76. product_forge-0.2.0/CHANGELOG.md +57 -0
  77. product_forge-0.2.0/CLAUDE.md +33 -0
  78. product_forge-0.2.0/LICENSE +182 -0
  79. product_forge-0.2.0/PKG-INFO +175 -0
  80. product_forge-0.2.0/README.md +114 -0
  81. product_forge-0.2.0/agents/agent-ops-coordinator.md +17 -0
  82. product_forge-0.2.0/agents/data-analyst-coordinator.md +18 -0
  83. product_forge-0.2.0/agents/executors/pf-extractor.md +16 -0
  84. product_forge-0.2.0/agents/executors/pf-judge.md +16 -0
  85. product_forge-0.2.0/agents/executors/pf-synthesizer.md +14 -0
  86. product_forge-0.2.0/agents/executors/pf-verifier.md +14 -0
  87. product_forge-0.2.0/agents/integration-coordinator.md +16 -0
  88. product_forge-0.2.0/agents/planning-coordinator.md +17 -0
  89. product_forge-0.2.0/agents/product-intel-coordinator.md +19 -0
  90. product_forge-0.2.0/docs/API.md +145 -0
  91. product_forge-0.2.0/docs/AUTHZ.md +48 -0
  92. product_forge-0.2.0/docs/BEDROCK_SSO.md +50 -0
  93. product_forge-0.2.0/docs/INSTALL.md +165 -0
  94. product_forge-0.2.0/docs/MCP.md +40 -0
  95. product_forge-0.2.0/docs/adr/ADR-001-architecture-and-persistence.md +33 -0
  96. product_forge-0.2.0/docs/assets/logo.png +0 -0
  97. product_forge-0.2.0/docs/audit/CYCLE13_BASELINE_AUDIT.md +41 -0
  98. product_forge-0.2.0/docs/audit/DEPENDENCY_RISK_REGISTER.md +21 -0
  99. product_forge-0.2.0/docs/audit/FORGE_ECOSYSTEM_AUDIT.md +35 -0
  100. product_forge-0.2.0/docs/audit/IMPLEMENTATION_GAP_MATRIX.md +92 -0
  101. product_forge-0.2.0/docs/audit/INTEGRATION_CONTRACTS.md +43 -0
  102. product_forge-0.2.0/docs/audit/PRODUCT_FORGE_ARCHITECTURE.md +35 -0
  103. product_forge-0.2.0/docs/audit/PRODUCT_FORGE_PRODUCTION_READINESS_REPORT.md +74 -0
  104. product_forge-0.2.0/docs/audit/REUSE_COMPATIBILITY_MATRIX.md +24 -0
  105. product_forge-0.2.0/docs/audits/CRITICAL_GAPS_REGISTER.md +36 -0
  106. product_forge-0.2.0/docs/audits/CROSS_REPO_COMPATIBILITY_MATRIX.md +42 -0
  107. product_forge-0.2.0/docs/audits/ECOSYSTEM_CYCLE25_BASELINE.md +56 -0
  108. product_forge-0.2.0/docs/audits/PRODUCT_ECOSYSTEM_DEFINITIVE_CYCLE49_58.md +51 -0
  109. product_forge-0.2.0/docs/audits/PRODUCT_FINAL_CYCLE_2026-11-02.md +38 -0
  110. product_forge-0.2.0/docs/audits/RELEASE_READINESS_BASELINE.md +22 -0
  111. product_forge-0.2.0/docs/audits/portal-full-audit-2026-11-02.md +152 -0
  112. product_forge-0.2.0/docs/audits/three-repo-review-2026-11-02.md +94 -0
  113. product_forge-0.2.0/docs/audits/ui-ux-graph-audit-2026-11-02.md +53 -0
  114. product_forge-0.2.0/docs/codebase/.codebase-scan.txt +381 -0
  115. product_forge-0.2.0/docs/codebase/ARCHITECTURE.md +58 -0
  116. product_forge-0.2.0/docs/codebase/CONCERNS.md +58 -0
  117. product_forge-0.2.0/docs/codebase/CONVENTIONS.md +43 -0
  118. product_forge-0.2.0/docs/codebase/INTEGRATIONS.md +45 -0
  119. product_forge-0.2.0/docs/codebase/STACK.md +53 -0
  120. product_forge-0.2.0/docs/codebase/STRUCTURE.md +45 -0
  121. product_forge-0.2.0/docs/codebase/TESTING.md +48 -0
  122. product_forge-0.2.0/docs/design/product-portal-design-contract.md +33 -0
  123. product_forge-0.2.0/factory/README.md +20 -0
  124. product_forge-0.2.0/factory/prompts/deep-regression-suite.implement.claude.md +56 -0
  125. product_forge-0.2.0/factory/prompts/deep-regression-suite.review.codex.md +54 -0
  126. product_forge-0.2.0/factory/prompts/ecosystem-p0-hardening.implement.codex.md +82 -0
  127. product_forge-0.2.0/factory/prompts/ecosystem-p0-hardening.review.codex.md +72 -0
  128. product_forge-0.2.0/factory/reviews/2026-11-02-deep-regression-suite-codex.md +32 -0
  129. product_forge-0.2.0/factory/reviews/2026-11-02-ecosystem-baseline.md +29 -0
  130. product_forge-0.2.0/factory/reviews/2026-11-02-release-gate-closure.md +28 -0
  131. product_forge-0.2.0/factory/reviews/2026-loop-pass-1.md +39 -0
  132. product_forge-0.2.0/factory/runs/2026-10-30T115216Z0000.deep-regression-suite.json +15 -0
  133. product_forge-0.2.0/factory/runs/2026-11-02T155508Z0000.ecosystem-p0-hardening.json +15 -0
  134. product_forge-0.2.0/factory/specs/active/ecosystem-p0-hardening.md +73 -0
  135. product_forge-0.2.0/factory/specs/archive/2026-11-02/deep-regression-suite.md +49 -0
  136. product_forge-0.2.0/factory/specs/archive/2026-11-02/notification-delivery.md +36 -0
  137. product_forge-0.2.0/factory/specs/archive/2026-11-02/portal-angular-module.md +41 -0
  138. product_forge-0.2.0/factory/specs/archive/2026-11-02/postgres-backend.md +34 -0
  139. product_forge-0.2.0/factory/specs/archive/2026-11-02/unified-local-runtime.md +48 -0
  140. product_forge-0.2.0/factory/specs/archive/2026-11-02/unified-workspace-surface.md +41 -0
  141. product_forge-0.2.0/factory/specs/archive/inter-forge-delegation.md +44 -0
  142. product_forge-0.2.0/factory/specs/archive/llm-gateway-integration.md +34 -0
  143. product_forge-0.2.0/factory/specs/archive/mcp-http-transport.md +32 -0
  144. product_forge-0.2.0/factory/specs/archive/native-agent-templates.md +32 -0
  145. product_forge-0.2.0/factory/specs/inbox/live-provider-homologation.md +47 -0
  146. product_forge-0.2.0/factory/specs/inbox/real-authz-multi-tenant.md +47 -0
  147. product_forge-0.2.0/factory/specs/inbox/real-provider-system-harness.md +40 -0
  148. product_forge-0.2.0/forge.agentic.json +41 -0
  149. product_forge-0.2.0/forge.json +25 -0
  150. product_forge-0.2.0/pyproject.toml +129 -0
  151. product_forge-0.2.0/rules/catalog/pf-agent.yaml +21 -0
  152. product_forge-0.2.0/rules/catalog/pf-cloud.yaml +21 -0
  153. product_forge-0.2.0/rules/catalog/pf-know.yaml +21 -0
  154. product_forge-0.2.0/rules/catalog/pf-sql.yaml +21 -0
  155. product_forge-0.2.0/skills/index.json +70 -0
  156. product_forge-0.2.0/skills/pf-agent-factory/SKILL.md +45 -0
  157. product_forge-0.2.0/skills/pf-agent-factory/agents/openai.yaml +4 -0
  158. product_forge-0.2.0/skills/pf-analytics/SKILL.md +43 -0
  159. product_forge-0.2.0/skills/pf-analytics/agents/openai.yaml +4 -0
  160. product_forge-0.2.0/skills/pf-apis/SKILL.md +40 -0
  161. product_forge-0.2.0/skills/pf-apis/agents/openai.yaml +4 -0
  162. product_forge-0.2.0/skills/pf-aws/SKILL.md +39 -0
  163. product_forge-0.2.0/skills/pf-aws/agents/openai.yaml +4 -0
  164. product_forge-0.2.0/skills/pf-azure/SKILL.md +38 -0
  165. product_forge-0.2.0/skills/pf-azure/agents/openai.yaml +4 -0
  166. product_forge-0.2.0/skills/pf-dashboards/SKILL.md +42 -0
  167. product_forge-0.2.0/skills/pf-dashboards/agents/openai.yaml +4 -0
  168. product_forge-0.2.0/skills/pf-data-products/SKILL.md +39 -0
  169. product_forge-0.2.0/skills/pf-data-products/agents/openai.yaml +4 -0
  170. product_forge-0.2.0/skills/pf-finops/SKILL.md +39 -0
  171. product_forge-0.2.0/skills/pf-finops/agents/openai.yaml +4 -0
  172. product_forge-0.2.0/skills/pf-governance/SKILL.md +39 -0
  173. product_forge-0.2.0/skills/pf-governance/agents/openai.yaml +4 -0
  174. product_forge-0.2.0/skills/pf-knowledge/SKILL.md +41 -0
  175. product_forge-0.2.0/skills/pf-knowledge/agents/openai.yaml +4 -0
  176. product_forge-0.2.0/skills/pf-prioritization/SKILL.md +39 -0
  177. product_forge-0.2.0/skills/pf-prioritization/agents/openai.yaml +4 -0
  178. product_forge-0.2.0/skills/pf-product-discovery/SKILL.md +42 -0
  179. product_forge-0.2.0/skills/pf-product-discovery/agents/openai.yaml +4 -0
  180. product_forge-0.2.0/skills/pf-product-strategy/SKILL.md +44 -0
  181. product_forge-0.2.0/skills/pf-product-strategy/agents/openai.yaml +4 -0
  182. product_forge-0.2.0/skills/pf-reporting/SKILL.md +39 -0
  183. product_forge-0.2.0/skills/pf-reporting/agents/openai.yaml +4 -0
  184. product_forge-0.2.0/skills/pf-requirements/SKILL.md +39 -0
  185. product_forge-0.2.0/skills/pf-requirements/agents/openai.yaml +4 -0
  186. product_forge-0.2.0/skills/pf-sql/SKILL.md +45 -0
  187. product_forge-0.2.0/skills/pf-sql/agents/openai.yaml +4 -0
  188. product_forge-0.2.0/src/forge_agent_bridge/__init__.py +11 -0
  189. product_forge-0.2.0/src/forge_agent_bridge/acp.py +171 -0
  190. product_forge-0.2.0/src/forge_agent_bridge/adapter.py +57 -0
  191. product_forge-0.2.0/src/forge_agent_bridge/approvals.py +113 -0
  192. product_forge-0.2.0/src/forge_agent_bridge/backup.py +67 -0
  193. product_forge-0.2.0/src/forge_agent_bridge/broker.py +103 -0
  194. product_forge-0.2.0/src/forge_agent_bridge/budgets.py +104 -0
  195. product_forge-0.2.0/src/forge_agent_bridge/cli.py +191 -0
  196. product_forge-0.2.0/src/forge_agent_bridge/collab.py +133 -0
  197. product_forge-0.2.0/src/forge_agent_bridge/context.py +254 -0
  198. product_forge-0.2.0/src/forge_agent_bridge/contracts.py +113 -0
  199. product_forge-0.2.0/src/forge_agent_bridge/events.py +209 -0
  200. product_forge-0.2.0/src/forge_agent_bridge/files.py +134 -0
  201. product_forge-0.2.0/src/forge_agent_bridge/install/__init__.py +1 -0
  202. product_forge-0.2.0/src/forge_agent_bridge/install/cli.py +99 -0
  203. product_forge-0.2.0/src/forge_agent_bridge/install/lifecycle.py +254 -0
  204. product_forge-0.2.0/src/forge_agent_bridge/integrity.py +112 -0
  205. product_forge-0.2.0/src/forge_agent_bridge/intelligence.py +261 -0
  206. product_forge-0.2.0/src/forge_agent_bridge/local_bridge.py +1430 -0
  207. product_forge-0.2.0/src/forge_agent_bridge/metadata.py +72 -0
  208. product_forge-0.2.0/src/forge_agent_bridge/orchestrator.py +126 -0
  209. product_forge-0.2.0/src/forge_agent_bridge/pairing.py +144 -0
  210. product_forge-0.2.0/src/forge_agent_bridge/pf_context.py +122 -0
  211. product_forge-0.2.0/src/forge_agent_bridge/providers/__init__.py +0 -0
  212. product_forge-0.2.0/src/forge_agent_bridge/providers/acp_adapter.py +233 -0
  213. product_forge-0.2.0/src/forge_agent_bridge/providers/claude.py +292 -0
  214. product_forge-0.2.0/src/forge_agent_bridge/providers/codex.py +223 -0
  215. product_forge-0.2.0/src/forge_agent_bridge/providers/copilot.py +116 -0
  216. product_forge-0.2.0/src/forge_agent_bridge/providers/fake.py +88 -0
  217. product_forge-0.2.0/src/forge_agent_bridge/recovery.py +44 -0
  218. product_forge-0.2.0/src/forge_agent_bridge/registry.py +189 -0
  219. product_forge-0.2.0/src/forge_agent_bridge/runners.py +111 -0
  220. product_forge-0.2.0/src/forge_agent_bridge/secrets.py +116 -0
  221. product_forge-0.2.0/src/forge_agent_bridge/ssrf.py +108 -0
  222. product_forge-0.2.0/src/forge_agent_bridge/ui/__init__.py +29 -0
  223. product_forge-0.2.0/src/forge_agent_bridge/ui/i18n.py +143 -0
  224. product_forge-0.2.0/src/forge_agent_bridge/ui/kit.py +689 -0
  225. product_forge-0.2.0/src/forge_agent_bridge/ui/wizard.py +317 -0
  226. product_forge-0.2.0/src/product_forge/__init__.py +13 -0
  227. product_forge-0.2.0/src/product_forge/__main__.py +4 -0
  228. product_forge-0.2.0/src/product_forge/_forge_portal.py +1165 -0
  229. product_forge-0.2.0/src/product_forge/_installkit.py +1825 -0
  230. product_forge-0.2.0/src/product_forge/agents/__init__.py +0 -0
  231. product_forge-0.2.0/src/product_forge/agents/bedrock_provider.py +120 -0
  232. product_forge-0.2.0/src/product_forge/agents/evals.py +53 -0
  233. product_forge-0.2.0/src/product_forge/agents/llm_runtime.py +143 -0
  234. product_forge-0.2.0/src/product_forge/agents/policy.py +108 -0
  235. product_forge-0.2.0/src/product_forge/agents/routing.py +54 -0
  236. product_forge-0.2.0/src/product_forge/agents/runtime.py +139 -0
  237. product_forge-0.2.0/src/product_forge/agents/tools.py +155 -0
  238. product_forge-0.2.0/src/product_forge/agents/workflows.py +98 -0
  239. product_forge-0.2.0/src/product_forge/analytics/__init__.py +0 -0
  240. product_forge-0.2.0/src/product_forge/analytics/connectors.py +204 -0
  241. product_forge-0.2.0/src/product_forge/analytics/engine.py +163 -0
  242. product_forge-0.2.0/src/product_forge/analytics/metrics.py +70 -0
  243. product_forge-0.2.0/src/product_forge/analytics/sqlvalidate.py +150 -0
  244. product_forge-0.2.0/src/product_forge/api/__init__.py +0 -0
  245. product_forge-0.2.0/src/product_forge/api/app.py +1625 -0
  246. product_forge-0.2.0/src/product_forge/cli/__init__.py +706 -0
  247. product_forge-0.2.0/src/product_forge/config.py +120 -0
  248. product_forge-0.2.0/src/product_forge/dashboards/__init__.py +0 -0
  249. product_forge-0.2.0/src/product_forge/dashboards/render.py +70 -0
  250. product_forge-0.2.0/src/product_forge/delegates/__init__.py +1 -0
  251. product_forge-0.2.0/src/product_forge/delegates/catalog.py +45 -0
  252. product_forge-0.2.0/src/product_forge/delegates/runner.py +66 -0
  253. product_forge-0.2.0/src/product_forge/domain/__init__.py +1 -0
  254. product_forge-0.2.0/src/product_forge/domain/models.py +365 -0
  255. product_forge-0.2.0/src/product_forge/errors.py +68 -0
  256. product_forge-0.2.0/src/product_forge/gateway/__init__.py +1 -0
  257. product_forge-0.2.0/src/product_forge/gateway/synthesis.py +85 -0
  258. product_forge-0.2.0/src/product_forge/install/__init__.py +1 -0
  259. product_forge-0.2.0/src/product_forge/install/cli.py +89 -0
  260. product_forge-0.2.0/src/product_forge/install/lifecycle.py +348 -0
  261. product_forge-0.2.0/src/product_forge/install/managed_runtime.py +192 -0
  262. product_forge-0.2.0/src/product_forge/integrations/__init__.py +0 -0
  263. product_forge-0.2.0/src/product_forge/integrations/apispec.py +115 -0
  264. product_forge-0.2.0/src/product_forge/integrations/aws.py +155 -0
  265. product_forge-0.2.0/src/product_forge/integrations/azure.py +100 -0
  266. product_forge-0.2.0/src/product_forge/integrations/datacontract.py +71 -0
  267. product_forge-0.2.0/src/product_forge/intel/__init__.py +1 -0
  268. product_forge-0.2.0/src/product_forge/intel/experiments.py +74 -0
  269. product_forge-0.2.0/src/product_forge/intel/health.py +116 -0
  270. product_forge-0.2.0/src/product_forge/intel/notebooks.py +58 -0
  271. product_forge-0.2.0/src/product_forge/jobs/__init__.py +1 -0
  272. product_forge-0.2.0/src/product_forge/jobs/registry.py +140 -0
  273. product_forge-0.2.0/src/product_forge/knowledge/__init__.py +0 -0
  274. product_forge-0.2.0/src/product_forge/knowledge/extract.py +88 -0
  275. product_forge-0.2.0/src/product_forge/knowledge/graph.py +41 -0
  276. product_forge-0.2.0/src/product_forge/knowledge/ingest.py +46 -0
  277. product_forge-0.2.0/src/product_forge/mcp/__init__.py +0 -0
  278. product_forge-0.2.0/src/product_forge/mcp/server.py +197 -0
  279. product_forge-0.2.0/src/product_forge/notifications.py +86 -0
  280. product_forge-0.2.0/src/product_forge/operations/__init__.py +0 -0
  281. product_forge-0.2.0/src/product_forge/operations/approvals.py +46 -0
  282. product_forge-0.2.0/src/product_forge/operations/proposals.py +90 -0
  283. product_forge-0.2.0/src/product_forge/operations/reports.py +57 -0
  284. product_forge-0.2.0/src/product_forge/operations/watches.py +98 -0
  285. product_forge-0.2.0/src/product_forge/planning/__init__.py +0 -0
  286. product_forge-0.2.0/src/product_forge/planning/prd.py +54 -0
  287. product_forge-0.2.0/src/product_forge/planning/prioritize.py +41 -0
  288. product_forge-0.2.0/src/product_forge/planning/roadmap.py +34 -0
  289. product_forge-0.2.0/src/product_forge/portal/__init__.py +0 -0
  290. product_forge-0.2.0/src/product_forge/portal/adapter.py +1030 -0
  291. product_forge-0.2.0/src/product_forge/portal/runtime.py +519 -0
  292. product_forge-0.2.0/src/product_forge/portal_assets/angular/3rdpartylicenses.txt +378 -0
  293. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-1Rc4lGsF.js +1 -0
  294. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-3CbjAJ_e.js +1 -0
  295. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-6Q7VGqCu.js +5 -0
  296. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-7Pu1Blam.js +1 -0
  297. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-9tQEpXMK.js +1 -0
  298. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-B3Nny4Hq.js +1 -0
  299. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-B57_NLXQ.js +1 -0
  300. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BB5JZCTs.js +1 -0
  301. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BE-Wy_fS.js +1 -0
  302. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BF7hAyQJ.js +1 -0
  303. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BUHV7CDc.js +1 -0
  304. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BXHyUfJw.js +1 -0
  305. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BYYLUO5t.js +1 -0
  306. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BabKVLA2.js +1 -0
  307. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BaebHyDv.js +1 -0
  308. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BcvxjRzt.js +6 -0
  309. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BpaNj9LV.js +5 -0
  310. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-Bsd27yxw.js +1 -0
  311. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BuoTaa1i.js +1 -0
  312. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BvumviSm.js +1 -0
  313. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-Bx56UW4B.js +1 -0
  314. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-C-syDP2A.js +1 -0
  315. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-C0Y1QJAk.js +1 -0
  316. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-C0nXO1-7.js +1 -0
  317. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-C18uha2k.js +1 -0
  318. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-CBAf-gZm.js +1 -0
  319. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-CFk9O-Id.js +1 -0
  320. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-CI7NSb1M.js +1 -0
  321. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-CLPLzFYs.js +322 -0
  322. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-COrc5dSH.js +1 -0
  323. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-CSXp8raW.js +1 -0
  324. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-CTSic6yw.js +5 -0
  325. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-C_7Rm93G.js +1 -0
  326. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-Cbyie2QS.js +3 -0
  327. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-Ci5zXqV6.js +1 -0
  328. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-CkDgYK04.js +5 -0
  329. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-CsgUuQ0S.js +1 -0
  330. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-Ct1MVd7z.js +1 -0
  331. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-Cut2Ourb.js +1 -0
  332. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-D-7Jr8A3.js +1 -0
  333. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DJsvMftW.js +1 -0
  334. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DUq33ZpV.js +1 -0
  335. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DaUeWbRk.js +1 -0
  336. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DfrvIVuy.js +1 -0
  337. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DicAb5_-.js +1 -0
  338. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DixPCieV.js +1 -0
  339. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DtpQQeVl.js +1 -0
  340. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DuZy_X7l.js +1 -0
  341. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DvwzUgSZ.js +3 -0
  342. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-EiSuk_kZ.js +1 -0
  343. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-H_dZuloj.js +1 -0
  344. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-JrAEILC6.js +1 -0
  345. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-S0yVTZM9.js +1 -0
  346. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-Tfobdq9w.js +1 -0
  347. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-Wd_5yY1t.js +1 -0
  348. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-X_IBVudt.js +1 -0
  349. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-XtegKBNb.js +1 -0
  350. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-jdQ8jbI8.js +1 -0
  351. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-k_4TaJG-.js +1 -0
  352. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-kwRnGzdM.js +1 -0
  353. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-nGNTa8fb.js +1 -0
  354. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-nf7vIxR7.js +1 -0
  355. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/favicon.ico +0 -0
  356. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/index.html +13 -0
  357. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/main-SCGIMYBN.js +1 -0
  358. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/manifest.json +11 -0
  359. product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/styles-WNQNXSWU.css +1 -0
  360. product_forge-0.2.0/src/product_forge/portal_assets/app.js +16 -0
  361. product_forge-0.2.0/src/product_forge/portal_assets/index.html +28 -0
  362. product_forge-0.2.0/src/product_forge/portal_assets/style.css +7 -0
  363. product_forge-0.2.0/src/product_forge/reports/__init__.py +0 -0
  364. product_forge-0.2.0/src/product_forge/security.py +158 -0
  365. product_forge-0.2.0/src/product_forge/services/__init__.py +0 -0
  366. product_forge-0.2.0/src/product_forge/store/__init__.py +3 -0
  367. product_forge-0.2.0/src/product_forge/store/postgres.py +265 -0
  368. product_forge-0.2.0/src/product_forge/store/sqlite.py +373 -0
  369. product_forge-0.2.0/src/product_forge/ui/__init__.py +29 -0
  370. product_forge-0.2.0/src/product_forge/ui/i18n.py +143 -0
  371. product_forge-0.2.0/src/product_forge/ui/kit.py +689 -0
  372. product_forge-0.2.0/src/product_forge/ui/wizard.py +282 -0
  373. product_forge-0.2.0/tests/system/test_installed_composition.py +122 -0
  374. product_forge-0.2.0/tests/test_context_api.py +100 -0
  375. product_forge-0.2.0/tests/test_contract_sweep.py +70 -0
  376. product_forge-0.2.0/tests/test_core.py +140 -0
  377. product_forge-0.2.0/tests/test_cycle1011.py +131 -0
  378. product_forge-0.2.0/tests/test_cycle13.py +247 -0
  379. product_forge-0.2.0/tests/test_cycle15.py +99 -0
  380. product_forge-0.2.0/tests/test_cycle18.py +187 -0
  381. product_forge-0.2.0/tests/test_cycle3.py +86 -0
  382. product_forge-0.2.0/tests/test_cycle4.py +133 -0
  383. product_forge-0.2.0/tests/test_cycle5.py +151 -0
  384. product_forge-0.2.0/tests/test_cycle67.py +125 -0
  385. product_forge-0.2.0/tests/test_cycle89.py +166 -0
  386. product_forge-0.2.0/tests/test_delegates.py +106 -0
  387. product_forge-0.2.0/tests/test_gateway.py +91 -0
  388. product_forge-0.2.0/tests/test_homologation.py +217 -0
  389. product_forge-0.2.0/tests/test_install.py +143 -0
  390. product_forge-0.2.0/tests/test_mcp_http.py +69 -0
  391. product_forge-0.2.0/tests/test_negative.py +104 -0
  392. product_forge-0.2.0/tests/test_notifications.py +18 -0
  393. product_forge-0.2.0/tests/test_oidc_isolation.py +49 -0
  394. product_forge-0.2.0/tests/test_portal_adapter.py +478 -0
  395. product_forge-0.2.0/tests/test_portal_runtime.py +109 -0
  396. product_forge-0.2.0/tests/test_regression_methods.py +310 -0
  397. product_forge-0.2.0/tests/test_skills.py +44 -0
  398. product_forge-0.2.0/tests/test_templates.py +65 -0
@@ -0,0 +1,17 @@
1
+ ---
2
+ name: agent-ops-coordinator
3
+ description: Coordinator for agent lifecycle and product operations — evals, publishing, watches, alerts, approvals. Use for "publish agent", "agent eval", "watch", "alert", "approval".
4
+ rule_areas: [PF-AGENT, PF-OPS]
5
+ skills: [pf-agent-factory, pf-governance, pf-reporting]
6
+ ---
7
+ # Agent Ops Coordinator
8
+
9
+ ## Playbook
10
+
11
+ 1. `pf-extractor` — agent definitions, eval scores, runs, watches, alerts, approvals.
12
+ 2. `pf-judge` — PF-AGENT (tools_allowed, eval >= 0.5, injection policy) and PF-OPS (watch breach → alert, approval gate).
13
+ 3. `pf-verifier` — run eval/publish/watch as evidence.
14
+ 4. `pf-synthesizer` — report with run/eval/alert ids.
15
+
16
+ ## Não faz
17
+ - Does not publish below-gate agents; does not fire alerts without a breach.
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: data-analyst-coordinator
3
+ description: Coordinator for analytics work — sources, schemas, queries, dashboards. Use for "explore this data", "why this metric", "build a query/dashboard".
4
+ rule_areas: [PF-SQL, PF-SRC, PF-DASH]
5
+ skills: [pf-sql, pf-analytics, pf-dashboards]
6
+ ---
7
+ # Data Analyst Coordinator
8
+
9
+ ## Playbook
10
+
11
+ 1. `pf-extractor` — verify sources, pull schemas, inspect stored query runs.
12
+ 2. `pf-judge` — PF-SQL (read-only, limits), PF-SRC (healthy vs unverified), PF-DASH (widget→run bindings).
13
+ 3. `pf-verifier` — execute the validated query / render the dashboard as evidence.
14
+ 4. `pf-synthesizer` — answer with run ids and row counts, never invented numbers.
15
+
16
+ ## Não faz
17
+ - Never executes write/multi-statement SQL; rejected statements stay rejected.
18
+ - Never reports unverified sources as healthy.
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: pf-extractor
3
+ description: Collects facts from the Product Forge store/API — never judges. Use as first executor in any coordinator playbook.
4
+ ---
5
+ # pf-extractor
6
+
7
+ Collects `Fact`s: context packages, entity graphs, source schemas, query runs, eval scores, audit events.
8
+
9
+ ## Pressupõe
10
+ - Store/API reachable; product_id known.
11
+
12
+ ## Entrega
13
+ - Structured facts with ids and raw fields only — no interpretation.
14
+
15
+ ## Não faz
16
+ - No judgments, no thresholds, no recommendations. Numbers without interpretation.
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: pf-judge
3
+ description: Applies rules/catalog/*.yaml to extracted facts — emits Findings with fact_id evidence. Use after pf-extractor.
4
+ ---
5
+ # pf-judge
6
+
7
+ Every `Finding` carries `rule_id` + non-empty `evidence[]` of fact_ids.
8
+
9
+ ## Pressupõe
10
+ - Facts from pf-extractor; catalog under `rules/catalog/`.
11
+
12
+ ## Entrega
13
+ - findings[] {rule_id, severity, evidence, area} — sorted deterministically.
14
+
15
+ ## Não faz
16
+ - No rules not in the catalog; no findings with empty evidence; no cost estimates.
@@ -0,0 +1,14 @@
1
+ ---
2
+ name: pf-synthesizer
3
+ description: Composes the final answer from facts+findings+evidence — with citations and ids, advisory tone. Use last.
4
+ ---
5
+ # pf-synthesizer
6
+
7
+ ## Pressupõe
8
+ - Facts, findings, verification evidence.
9
+
10
+ ## Entrega
11
+ - Answer citing entity ids, rule_ids, run ids; marks uncertain items `unresolved`.
12
+
13
+ ## Não faz
14
+ - No new facts; no silent promotion of `inferred` to `observed`; no invented metrics.
@@ -0,0 +1,14 @@
1
+ ---
2
+ name: pf-verifier
3
+ description: Runs the real command to prove a claim — executes query, renders dashboard, runs eval, fires watch. Use before any "it works" statement.
4
+ ---
5
+ # pf-verifier
6
+
7
+ ## Pressupõe
8
+ - A concrete claim and the verb that proves it.
9
+
10
+ ## Entrega
11
+ - Evidence block: command, run_id, status, output hash/rows.
12
+
13
+ ## Não faz
14
+ - Never claims success without an execution result; never weakens criteria to pass.
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: integration-coordinator
3
+ description: Coordinator for AWS/Azure/API/data-contract intelligence. Use for "AWS inventory", "Azure resources", "API diff", "breaking change", "data contract".
4
+ rule_areas: [PF-CLOUD, PF-API, PF-CONTRACT]
5
+ skills: [pf-aws, pf-azure, pf-apis, pf-data-products]
6
+ ---
7
+ # Integration Coordinator
8
+
9
+ ## Playbook
10
+
11
+ 1. `pf-extractor` — cloud inventory states, imported API specs, contracts.
12
+ 2. `pf-judge` — PF-CLOUD (ok/unverified/error honesty), PF-API (breaking changes), PF-CONTRACT (validation errors).
13
+ 3. `pf-synthesizer` — report each item with its actual status field.
14
+
15
+ ## Não faz
16
+ - NEVER fabricates cloud resources — missing credentials produce `unverified`, not inventory.
@@ -0,0 +1,17 @@
1
+ ---
2
+ name: planning-coordinator
3
+ description: Coordinator for discovery, prioritization, PRDs, roadmaps, decisions. Use for "prioritize", "write PRD", "roadmap", "opportunity".
4
+ rule_areas: [PF-PLAN, PF-DEC]
5
+ skills: [pf-prioritization, pf-requirements, pf-reporting]
6
+ ---
7
+ # Planning Coordinator
8
+
9
+ ## Playbook
10
+
11
+ 1. `pf-extractor` — initiatives, hypotheses, decisions, knowledge citations.
12
+ 2. `pf-judge` — PF-PLAN (score inputs present, PRD citations) and PF-DEC (decisions linked to evidence).
13
+ 3. `pf-verifier` — run prioritize/PRD/roadmap and check output contract fields.
14
+ 4. `pf-synthesizer` — report with initiative/decision ids.
15
+
16
+ ## Não faz
17
+ - Does not pick priorities by intuition — deterministic scoring only.
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: product-intel-coordinator
3
+ description: Coordinator for product intelligence questions — decides which executor runs next. Use for "understand this product", "product context", "product health".
4
+ rule_areas: [PF-KNOW, PF-CTX, PF-HEALTH]
5
+ skills: [pf-knowledge, pf-product-strategy, pf-product-discovery]
6
+ ---
7
+ # Product Intelligence Coordinator
8
+
9
+ Routes work to executors. Never executes itself.
10
+
11
+ ## Playbook
12
+
13
+ 1. `pf-extractor` — pull context package, knowledge stats, entity graph.
14
+ 2. `pf-judge` — apply PF-KNOW/PF-HEALTH rules (coverage, orphan entities, stale docs).
15
+ 3. `pf-synthesizer` — compose the answer with citations.
16
+
17
+ ## Não faz
18
+ - Does not query data sources or run SQL (that is data-analyst-coordinator).
19
+ - Does not invent coverage: absent knowledge is reported as absent.
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: pf-agent-factory
3
+ description: Create, evaluate and publish product agents. Use for 'create agent', 'run agent', 'agent eval', 'publish agent', 'Agent Factory'.
4
+ metadata:
5
+ version: "1.0.0"
6
+ forge: product-forge
7
+ manifest: forge/Skill/v1
8
+ ---
9
+ # Agent Factory
10
+
11
+ ## Objetivo
12
+ Build product-scoped agents with declared tools, pass evals, gate publication.
13
+
14
+ ## Pré-condições
15
+ - Product exists; knowledge imported for knowledge-backed agents
16
+
17
+ ## Instruções
18
+ 1. Create: `productforge agent create <pid> '<name>' --tools knowledge_query`.
19
+ 2. Run: `productforge agent run <pid> <aid> '<input>'` — deterministic + policy-checked.
20
+ 3. Eval: `productforge agent eval <pid> <aid>` → persisted score.
21
+ 4. Publish: `productforge agent publish` — requires tools_allowed AND eval score ≥ 0.5.
22
+
23
+ ## Ferramentas
24
+ - `productforge agent create|run|eval|publish`
25
+ - `GET /agents/{aid}/runs`
26
+ - `POST /runs/{rid}/cancel`
27
+ - `POST /workflows/run` (multi-agent)
28
+
29
+ ## Exemplos
30
+ - Agent w/ knowledge_query → run 'summarize onboarding' → cited template output.
31
+
32
+ ## Limitações
33
+ - Injection attempts → run status=blocked (policy engine).
34
+ - Default runtime is deterministic template; real LLM loop (`llm_runtime.py`)
35
+ activates only with a configured provider subprocess — tool calls remain
36
+ policy-gated, tokens land in the budget ledger, no provider → honest
37
+ deterministic fallback (never simulated).
38
+
39
+ ## Evals
40
+ - No tools_allowed → publish 400; eval 0.3 → publish rejected; score 0.7 → ok.
41
+
42
+ ## Referências
43
+ - API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
44
+ - Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
45
+ - Source: `src/product_forge/`
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "PF Agent Factory"
3
+ short_description: "Create, eval and publish product agents"
4
+ default_prompt: "Use $pf-agent-factory to create, evaluate, or publish a Product Forge agent."
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: pf-analytics
3
+ description: Explore product data sources, schemas and analytical queries without deep SQL. Use for 'explore data', 'what tables', 'metrics', 'analytics'.
4
+ metadata:
5
+ version: "1.0.0"
6
+ forge: product-forge
7
+ manifest: forge/Skill/v1
8
+ ---
9
+ # Analytics
10
+
11
+ ## Objetivo
12
+ Let a PM/PA answer data questions via schema explorer + compiled/NL queries.
13
+
14
+ ## Pré-condições
15
+ - Data source registered and verified (`POST /data-sources/{sid}/verify` → healthy)
16
+
17
+ ## Instruções
18
+ 1. Verify connectivity: `POST /data-sources/{sid}/verify`.
19
+ 2. Check the metric catalog first: `GET /products/{pid}/metrics` — reuse
20
+ governed metrics instead of re-deriving KPIs.
21
+ 3. Browse schema: `GET /data-sources/{sid}/schema` → tables/columns/types.
22
+ 4. Ask in NL: `POST /queries/nl` — `via: semantic-catalog` (metric match) or
23
+ `deterministic-nl` fallback → review → execute.
24
+ 5. Persist useful runs — every execution stores a query run with provenance.
25
+
26
+ ## Ferramentas
27
+ - `productforge source list|add|verify|schema`
28
+ - `POST /queries/nl|compile|execute`
29
+
30
+ ## Exemplos
31
+ - 'revenue by month' → NL scaffold SQL → execute → rows + run id.
32
+
33
+ ## Limitações
34
+ - NL translation is deterministic scaffolding — always review generated SQL before execute.
35
+ - Missing/unreachable sources report error status, never fake rows.
36
+
37
+ ## Evals
38
+ - Empty table → `rows: 0` honest result; bad locator → status=error.
39
+
40
+ ## Referências
41
+ - API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
42
+ - Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
43
+ - Source: `src/product_forge/`
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "PF Analytics"
3
+ short_description: "Schema exploration and assisted queries"
4
+ default_prompt: "Use $pf-analytics to explore governed product data and build a safe query."
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: pf-apis
3
+ description: API intelligence — import OpenAPI/AsyncAPI, diff versions, detect breaking changes. Use for 'API spec', 'breaking change', 'API diff', 'import OpenAPI'.
4
+ metadata:
5
+ version: "1.0.0"
6
+ forge: product-forge
7
+ manifest: forge/Skill/v1
8
+ ---
9
+ # Apis
10
+
11
+ ## Objetivo
12
+ Turn API specs into knowledge-graph entities + flag breaking changes across versions.
13
+
14
+ ## Pré-condições
15
+ - OpenAPI/AsyncAPI spec file or URL
16
+
17
+ ## Instruções
18
+ 1. Import: `POST /products/{pid}/apis/import` {name, spec} → operations parsed to entities.
19
+ 2. List: `GET /products/{pid}/apis`.
20
+ 3. Diff: `POST /apis/{aid}/diff` {spec:new_version} → added/removed/breaking arrays.
21
+
22
+ ## Ferramentas
23
+ - `POST /apis/import`
24
+ - `GET /apis`
25
+ - `POST /apis/{aid}/diff`
26
+ - `GET /impact/{eid}`
27
+
28
+ ## Exemplos
29
+ - v2 removes `POST /charge` → diff flags breaking removal + impact lists dependents.
30
+
31
+ ## Limitações
32
+ - JSON/YAML OpenAPI 3.x + AsyncAPI 2.x; exotic $ref forms flagged, not guessed.
33
+
34
+ ## Evals
35
+ - Removed endpoint → appears in `breaking`; added → `added`; graph gains operation entities.
36
+
37
+ ## Referências
38
+ - API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
39
+ - Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
40
+ - Source: `src/product_forge/`
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "PF Apis"
3
+ short_description: "OpenAPI/AsyncAPI import, diff, breaking changes"
4
+ default_prompt: "Use $pf-apis to import an API contract and assess breaking changes."
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: pf-aws
3
+ description: AWS product intelligence — inventory, Athena/Glue/QuickSight states. Use for 'AWS resources', 'Athena', 'Glue catalog', 'QuickSight', 'AWS cost'.
4
+ metadata:
5
+ version: "1.0.0"
6
+ forge: product-forge
7
+ manifest: forge/Skill/v1
8
+ ---
9
+ # Aws
10
+
11
+ ## Objetivo
12
+ Report AWS integration state honestly: real inventory when configured, `unverified` when not.
13
+
14
+ ## Pré-condições
15
+ - AWS config/credentials present for real data
16
+
17
+ ## Instruções
18
+ 1. Inventory: `GET /products/{pid}/cloud/aws/inventory` — services grouped by provider.
19
+ 2. Check each service status field: `ok|unverified|error` — never present unverified as fact.
20
+ 3. On unverified: surface exactly which config is missing.
21
+
22
+ ## Ferramentas
23
+ - `GET /products/{pid}/cloud/aws/inventory`
24
+ - `GET /cloud/aws/{service}`
25
+
26
+ ## Exemplos
27
+ - No creds → `{status:'unverified', missing:['AWS_PROFILE']}`.
28
+
29
+ ## Limitações
30
+ - NEVER fabricate resources — absent creds = unverified. This is a hard invariant.
31
+ - Read-only discovery; no provisioning/mutation.
32
+
33
+ ## Evals
34
+ - Without creds → unverified; with bad creds → error; both recorded in audit.
35
+
36
+ ## Referências
37
+ - API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
38
+ - Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
39
+ - Source: `src/product_forge/`
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "PF Aws"
3
+ short_description: "AWS product intelligence with honest states"
4
+ default_prompt: "Use $pf-aws to inspect AWS product intelligence with honest credential states."
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: pf-azure
3
+ description: Azure product intelligence — Fabric, Power BI, KQL workspaces. Use for 'Azure resources', 'Fabric', 'Power BI', 'KQL', 'Log Analytics'.
4
+ metadata:
5
+ version: "1.0.0"
6
+ forge: product-forge
7
+ manifest: forge/Skill/v1
8
+ ---
9
+ # Azure
10
+
11
+ ## Objetivo
12
+ Report Azure/Fabric/PowerBI/KQL state honestly — configured vs unverified vs error.
13
+
14
+ ## Pré-condições
15
+ - Azure tenant/subscription configured for real data
16
+
17
+ ## Instruções
18
+ 1. Inventory: `GET /products/{pid}/cloud/azure/inventory`.
19
+ 2. Per-service probes surface structured `status` + `missing` fields.
20
+ 3. Never present unverified items as discovered resources.
21
+
22
+ ## Ferramentas
23
+ - `GET /products/{pid}/cloud/azure/inventory`
24
+ - `GET /cloud/azure/{service}`
25
+
26
+ ## Exemplos
27
+ - Missing tenant → `unverified` + which env vars to set.
28
+
29
+ ## Limitações
30
+ - Same honesty invariant as AWS — no fabricated inventory.
31
+
32
+ ## Evals
33
+ - No config → unverified with missing list; audit event recorded.
34
+
35
+ ## Referências
36
+ - API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
37
+ - Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
38
+ - Source: `src/product_forge/`
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "PF Azure"
3
+ short_description: "Azure/Fabric/PowerBI intelligence, honest states"
4
+ default_prompt: "Use $pf-azure to inspect Azure product intelligence and configuration gaps."
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: pf-dashboards
3
+ description: Build and render product dashboards from real query runs. Use for 'create dashboard', 'KPI card', 'chart', 'dashboard'.
4
+ metadata:
5
+ version: "1.0.0"
6
+ forge: product-forge
7
+ manifest: forge/Skill/v1
8
+ ---
9
+ # Dashboards
10
+
11
+ ## Objetivo
12
+ Compose KPI/chart widgets bound to executed query runs — rendered data is real data.
13
+
14
+ ## Pré-condições
15
+ - ≥1 completed query run for the product
16
+
17
+ ## Instruções
18
+ 1. Prefer catalog metrics for KPIs — `GET /products/{pid}/metrics` gives
19
+ governed names + SQL; never invent a KPI formula when a catalog metric exists.
20
+ 2. Create: `POST /products/{pid}/dashboards` with widgets [{type,title,query_run_id,config}].
21
+ 3. Render: `POST /dashboards/{did}/render` → each widget resolved against its stored run.
22
+ 4. Types: `kpi`, `line`, `bar`, `table`; filters in config.
23
+
24
+ ## Ferramentas
25
+ - `productforge dashboard create|list`
26
+ - `POST /dashboards`
27
+ - `POST /dashboards/{did}/render`
28
+
29
+ ## Exemplos
30
+ - KPI 'MAU' bound to run q_abc → render returns value + refreshed_at.
31
+
32
+ ## Limitações
33
+ - Widgets render from stored runs only — no live source hits at render time.
34
+ - Missing run → widget error state, not zeros.
35
+
36
+ ## Evals
37
+ - Render of 2 widgets → 2 resolved blocks; deleted run → widget shows error.
38
+
39
+ ## Referências
40
+ - API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
41
+ - Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
42
+ - Source: `src/product_forge/`
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "PF Dashboards"
3
+ short_description: "Dashboards rendered from real query runs"
4
+ default_prompt: "Use $pf-dashboards to build a dashboard from real, executed query runs."
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: pf-data-products
3
+ description: Data product contracts — define schemas, validate payloads, lineage/impact. Use for 'data contract', 'schema validation', 'lineage', 'data product'.
4
+ metadata:
5
+ version: "1.0.0"
6
+ forge: product-forge
7
+ manifest: forge/Skill/v1
8
+ ---
9
+ # Data Products
10
+
11
+ ## Objetivo
12
+ Enforce declared data contracts and trace impact through the knowledge graph.
13
+
14
+ ## Pré-condições
15
+ - Product exists
16
+
17
+ ## Instruções
18
+ 1. Define: `POST /products/{pid}/contracts` {name, schema{fields:[{name,type,required}]}}.
19
+ 2. Validate payload: `POST /contracts/{cid}/validate` {payload} → errors[] field-level.
20
+ 3. Impact: `GET /products/{pid}/impact/{eid}` → graph traversal of dependents.
21
+
22
+ ## Ferramentas
23
+ - `POST /contracts`
24
+ - `POST /contracts/{cid}/validate`
25
+ - `GET /impact/{eid}`
26
+
27
+ ## Exemplos
28
+ - Contract requires `user_id:string` → payload missing it → explicit error entry.
29
+
30
+ ## Limitações
31
+ - Validation is structural (types/required); semantic rules are advisory.
32
+
33
+ ## Evals
34
+ - Type mismatch → error naming field+expected; valid payload → `{valid:true}`
35
+
36
+ ## Referências
37
+ - API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
38
+ - Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
39
+ - Source: `src/product_forge/`
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "PF Data Products"
3
+ short_description: "Data contracts, validation and impact"
4
+ default_prompt: "Use $pf-data-products to define, validate, and trace a data product contract."
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: pf-finops
3
+ description: Product FinOps — agent run budgets, cloud cost honesty. Use for 'cost', 'budget', 'FinOps', 'spend'.
4
+ metadata:
5
+ version: "1.0.0"
6
+ forge: product-forge
7
+ manifest: forge/Skill/v1
8
+ ---
9
+ # Finops
10
+
11
+ ## Objetivo
12
+ Track agent/token budgets in the ledger and report cloud costs only when verifiable.
13
+
14
+ ## Pré-condições
15
+ - Agents running (ledger auto-records); cloud config for cost probes
16
+
17
+ ## Instruções
18
+ 1. Budgets: `GET /products/{pid}/budgets` → ledger of per-run token/cost estimates.
19
+ 2. Cloud cost: via `GET /cloud/{aws|azure}/cost` — unverified without creds.
20
+ 3. Set routing profile so expensive models are chosen only for complex task classes.
21
+
22
+ ## Ferramentas
23
+ - `GET /products/{pid}/budgets`
24
+ - `GET /cloud/{p}/cost`
25
+ - `POST /routing/route`
26
+
27
+ ## Exemplos
28
+ - 5 agent runs → ledger shows 5 entries with model + token estimate.
29
+
30
+ ## Limitações
31
+ - Estimates are declared/config-derived, not metered billing; cloud costs unverified w/o creds.
32
+
33
+ ## Evals
34
+ - Each run appends a ledger entry; no creds → cost probe returns unverified.
35
+
36
+ ## Referências
37
+ - API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
38
+ - Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
39
+ - Source: `src/product_forge/`
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "PF Finops"
3
+ short_description: "Agent budgets and honest cloud cost states"
4
+ default_prompt: "Use $pf-finops to review agent budgets and verifiable cloud cost signals."
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: pf-governance
3
+ description: Product governance — approvals, audit trail, policy gates. Use for 'approval', 'audit', 'who changed', 'governance'.
4
+ metadata:
5
+ version: "1.0.0"
6
+ forge: product-forge
7
+ manifest: forge/Skill/v1
8
+ ---
9
+ # Governance
10
+
11
+ ## Objetivo
12
+ Keep mutating actions gated and every state change auditable.
13
+
14
+ ## Pré-condições
15
+ - Product Forge API in use (audit events accumulate automatically)
16
+
17
+ ## Instruções
18
+ 1. Request approval: `POST /products/{pid}/approvals` {kind, subject_id, reason}.
19
+ 2. Decide: `POST /approvals/{aid}/decision` {decision:approve|reject, actor}.
20
+ 3. Inspect trail: `GET /api/v1/audit` — actor/action/resource/timestamp for every change.
21
+
22
+ ## Ferramentas
23
+ - `POST /approvals`
24
+ - `POST /approvals/{aid}/decision`
25
+ - `GET /audit`
26
+
27
+ ## Exemplos
28
+ - Publish-gated agent → approval request → approve → publish proceeds.
29
+
30
+ ## Limitações
31
+ - Gates enforce within Product Forge only; external systems need their own controls.
32
+
33
+ ## Evals
34
+ - Mutating call emits audit event; rejected decision blocks the gated action.
35
+
36
+ ## Referências
37
+ - API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
38
+ - Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
39
+ - Source: `src/product_forge/`
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "PF Governance"
3
+ short_description: "Approvals, audit trail and policy gates"
4
+ default_prompt: "Use $pf-governance to gate changes with approvals and an auditable trail."
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: pf-knowledge
3
+ description: Knowledge management — import docs, FTS search with citations, entity graph, health. Use for 'import document', 'search knowledge', 'knowledge graph', 'context'.
4
+ metadata:
5
+ version: "1.0.0"
6
+ forge: product-forge
7
+ manifest: forge/Skill/v1
8
+ ---
9
+ # Knowledge
10
+
11
+ ## Objetivo
12
+ Grow trustworthy product knowledge: chunked docs + citations + entity graph + health score.
13
+
14
+ ## Pré-condições
15
+ - Product exists
16
+
17
+ ## Instruções
18
+ 1. Import: `productforge knowledge import <pid> <file>` or `POST /documents/import` {title,text}.
19
+ 2. Query: `productforge knowledge query <pid> '<q>'` → cited chunks (FTS5, punctuation-safe).
20
+ 3. Extract: `POST /knowledge/extract` → entities + edges into the product graph.
21
+ 4. Health: `GET /knowledge-health` → coverage/citation metrics.
22
+
23
+ ## Ferramentas
24
+ - `productforge knowledge import|query|extract`
25
+ - `GET /graph`
26
+ - `GET /knowledge-health`
27
+
28
+ ## Exemplos
29
+ - Import runbook.md → query 'rollback procedure' → top chunk + document citation.
30
+
31
+ ## Limitações
32
+ - No LLM summarization w/o gateway — returns chunks, not prose answers.
33
+ - Heuristic entity extraction — verify high-impact edges manually.
34
+
35
+ ## Evals
36
+ - Imported doc retrievable by FTS with citation; health endpoint counts it.
37
+
38
+ ## Referências
39
+ - API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
40
+ - Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
41
+ - Source: `src/product_forge/`
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "PF Knowledge"
3
+ short_description: "Doc import, cited search, entity graph"
4
+ default_prompt: "Use $pf-knowledge to import, search, cite, and assess product knowledge."