fraim 2.0.362-next.4 → 2.0.362-next.5

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 (277) hide show
  1. package/dist/registry/scripts/domains/folders.js +55 -0
  2. package/dist/registry/scripts/learning/entry-authoring.js +13 -24
  3. package/dist/registry/scripts/learning/run-publication.js +5 -30
  4. package/dist/registry/stubs/jobs/ai-employee/ai-engineering/aeo-optimization.md +43 -0
  5. package/dist/registry/stubs/jobs/ai-employee/ai-engineering/author-ai-evals.md +33 -0
  6. package/dist/registry/stubs/jobs/ai-employee/ai-engineering/create-ai-agent.md +33 -0
  7. package/dist/registry/stubs/jobs/ai-employee/ai-engineering/create-hub-configured-agent.md +34 -0
  8. package/dist/registry/stubs/jobs/ai-employee/ai-engineering/enable-web-mcp.md +33 -0
  9. package/dist/registry/stubs/jobs/ai-employee/ai-engineering/evaluate-ai-agent.md +32 -0
  10. package/dist/registry/stubs/jobs/ai-employee/ai-engineering/mcp-server-creation.md +35 -0
  11. package/dist/registry/stubs/jobs/ai-employee/ai-engineering/publish-mcp-app.md +28 -0
  12. package/dist/registry/stubs/jobs/ai-employee/bank-compliance/banking-evidence-audit.md +32 -0
  13. package/dist/registry/stubs/jobs/ai-employee/bank-operations/kyc-case-review.md +32 -0
  14. package/dist/registry/stubs/jobs/ai-employee/career/career-networking.md +46 -0
  15. package/dist/registry/stubs/jobs/ai-employee/career/career-spec.md +41 -0
  16. package/dist/registry/stubs/jobs/ai-employee/career/career-trajectory-planning.md +41 -0
  17. package/dist/registry/stubs/jobs/ai-employee/career/job-applications-and-networking.md +40 -0
  18. package/dist/registry/stubs/jobs/ai-employee/career/job-search-strategy-and-application-plan.md +41 -0
  19. package/dist/registry/stubs/jobs/ai-employee/career/offer-negotiation.md +42 -0
  20. package/dist/registry/stubs/jobs/ai-employee/career/pitch-and-interview-prep.md +43 -0
  21. package/dist/registry/stubs/jobs/ai-employee/career/public-profile-updates.md +41 -0
  22. package/dist/registry/stubs/jobs/ai-employee/career/resilience-planning.md +38 -0
  23. package/dist/registry/stubs/jobs/ai-employee/career/resume-creation.md +40 -0
  24. package/dist/registry/stubs/jobs/ai-employee/customer/crm-case-resolution.md +33 -0
  25. package/dist/registry/stubs/jobs/ai-employee/customer/customer-health-review.md +36 -0
  26. package/dist/registry/stubs/jobs/ai-employee/customer/loyalty-program-management.md +35 -0
  27. package/dist/registry/stubs/jobs/ai-employee/customer/support-case-resolution.md +39 -0
  28. package/dist/registry/stubs/jobs/ai-employee/customer/support-playbook-evaluation.md +37 -0
  29. package/dist/registry/stubs/jobs/ai-employee/customer/support-queue-management.md +36 -0
  30. package/dist/registry/stubs/jobs/ai-employee/customer/support-sop-operationalization.md +36 -0
  31. package/dist/registry/stubs/jobs/ai-employee/customer/support-system-operationalization.md +34 -0
  32. package/dist/registry/stubs/jobs/ai-employee/customer/survey-campaign-management.md +36 -0
  33. package/dist/registry/stubs/jobs/ai-employee/customer/update-crm.md +32 -0
  34. package/dist/registry/stubs/jobs/ai-employee/customer/user-survey-management.md +34 -0
  35. package/dist/registry/stubs/jobs/ai-employee/design/brand-creation.md +34 -0
  36. package/dist/registry/stubs/jobs/ai-employee/design/branding-quality-audit.md +32 -0
  37. package/dist/registry/stubs/jobs/ai-employee/design/design-system-creation.md +35 -0
  38. package/dist/registry/stubs/jobs/ai-employee/design/ui-quality-assessment.md +34 -0
  39. package/dist/registry/stubs/jobs/ai-employee/design/user-facing-prototyping.md +31 -0
  40. package/dist/registry/stubs/jobs/ai-employee/design/user-journey-mapping.md +33 -0
  41. package/dist/registry/stubs/jobs/ai-employee/design/ux-research-synthesis.md +33 -0
  42. package/dist/registry/stubs/jobs/ai-employee/design/website-creation.md +32 -0
  43. package/dist/registry/stubs/jobs/ai-employee/dev-ops/cloud-application-deployment.md +35 -0
  44. package/dist/registry/stubs/jobs/ai-employee/dev-ops/cloud-cost-optimization.md +34 -0
  45. package/dist/registry/stubs/jobs/ai-employee/dev-ops/cloud-performance-diagnosis.md +33 -0
  46. package/dist/registry/stubs/jobs/ai-employee/dev-ops/cross-cloud-migration.md +42 -0
  47. package/dist/registry/stubs/jobs/ai-employee/dev-ops/incident-response.md +35 -0
  48. package/dist/registry/stubs/jobs/ai-employee/dev-ops/production-readiness-review.md +31 -0
  49. package/dist/registry/stubs/jobs/ai-employee/dev-ops/reliability-review.md +34 -0
  50. package/dist/registry/stubs/jobs/ai-employee/dev-ops/route-llm-spend-to-cloud-credits.md +36 -0
  51. package/dist/registry/stubs/jobs/ai-employee/dev-ops/run-on-remote-hub.md +30 -0
  52. package/dist/registry/stubs/jobs/ai-employee/dev-ops/set-up-cloud-cost-alerts.md +34 -0
  53. package/dist/registry/stubs/jobs/ai-employee/dev-ops/setup-remote-hub.md +32 -0
  54. package/dist/registry/stubs/jobs/ai-employee/dev-ops/slo-design-and-implementation.md +34 -0
  55. package/dist/registry/stubs/jobs/ai-employee/engineering/application-replication-workflow.md +42 -0
  56. package/dist/registry/stubs/jobs/ai-employee/engineering/code-refactoring.md +35 -0
  57. package/dist/registry/stubs/jobs/ai-employee/engineering/codebase-analysis-and-ideation.md +32 -0
  58. package/dist/registry/stubs/jobs/ai-employee/engineering/create-architecture.md +35 -0
  59. package/dist/registry/stubs/jobs/ai-employee/engineering/data-pipeline-design.md +30 -0
  60. package/dist/registry/stubs/jobs/ai-employee/engineering/data-platform-architecture.md +29 -0
  61. package/dist/registry/stubs/jobs/ai-employee/engineering/data-quality-monitoring.md +29 -0
  62. package/dist/registry/stubs/jobs/ai-employee/engineering/database-schema-design.md +30 -0
  63. package/dist/registry/stubs/jobs/ai-employee/engineering/feature-implementation.md +39 -0
  64. package/dist/registry/stubs/jobs/ai-employee/engineering/github-org-setup.md +32 -0
  65. package/dist/registry/stubs/jobs/ai-employee/engineering/gitlabs-to-github.md +44 -0
  66. package/dist/registry/stubs/jobs/ai-employee/engineering/google-workspace-setup.md +34 -0
  67. package/dist/registry/stubs/jobs/ai-employee/engineering/issue-preparation.md +28 -0
  68. package/dist/registry/stubs/jobs/ai-employee/engineering/large-refactor-plan.md +36 -0
  69. package/dist/registry/stubs/jobs/ai-employee/engineering/mobile-app-development.md +43 -0
  70. package/dist/registry/stubs/jobs/ai-employee/engineering/mobile-app-rejection-response.md +34 -0
  71. package/dist/registry/stubs/jobs/ai-employee/engineering/mobile-app-submission.md +37 -0
  72. package/dist/registry/stubs/jobs/ai-employee/engineering/project-scaffolding.md +39 -0
  73. package/dist/registry/stubs/jobs/ai-employee/engineering/system-migration.md +41 -0
  74. package/dist/registry/stubs/jobs/ai-employee/engineering/technical-design.md +34 -0
  75. package/dist/registry/stubs/jobs/ai-employee/engineering/work-completion.md +29 -0
  76. package/dist/registry/stubs/jobs/ai-employee/engineering/write-dev-docs.md +32 -0
  77. package/dist/registry/stubs/jobs/ai-employee/executive-assistance/analyze-transcript.md +32 -0
  78. package/dist/registry/stubs/jobs/ai-employee/executive-assistance/calendar-triage.md +31 -0
  79. package/dist/registry/stubs/jobs/ai-employee/executive-assistance/chief-of-staff-briefing.md +31 -0
  80. package/dist/registry/stubs/jobs/ai-employee/executive-assistance/executive-assistant.md +31 -0
  81. package/dist/registry/stubs/jobs/ai-employee/executive-assistance/meeting-preparation.md +31 -0
  82. package/dist/registry/stubs/jobs/ai-employee/finance/business-banking-setup.md +29 -0
  83. package/dist/registry/stubs/jobs/ai-employee/finance/cloud-credits-application.md +34 -0
  84. package/dist/registry/stubs/jobs/ai-employee/finance/community-funding-preparation.md +34 -0
  85. package/dist/registry/stubs/jobs/ai-employee/finance/financial-analysis.md +33 -0
  86. package/dist/registry/stubs/jobs/ai-employee/finance/fpa-and-forecasting.md +33 -0
  87. package/dist/registry/stubs/jobs/ai-employee/finance/fundraising-prospect-discovery.md +33 -0
  88. package/dist/registry/stubs/jobs/ai-employee/finance/investor-pitch-preparation.md +40 -0
  89. package/dist/registry/stubs/jobs/ai-employee/finance/invoice-generation.md +35 -0
  90. package/dist/registry/stubs/jobs/ai-employee/finance/monthly-close-review.md +32 -0
  91. package/dist/registry/stubs/jobs/ai-employee/finance/review-funding-preparation.md +33 -0
  92. package/dist/registry/stubs/jobs/ai-employee/finance/tax-strategy-planning.md +33 -0
  93. package/dist/registry/stubs/jobs/ai-employee/fraim/adhoc-prompt.md +33 -0
  94. package/dist/registry/stubs/jobs/ai-employee/fraim/contribute-to-fraim.md +30 -0
  95. package/dist/registry/stubs/jobs/ai-employee/fraim/file-fraim-issue.md +29 -0
  96. package/dist/registry/stubs/jobs/ai-employee/fraim/organizational-learning-synthesis.md +40 -0
  97. package/dist/registry/stubs/jobs/ai-employee/fraim/praise-fraim.md +32 -0
  98. package/dist/registry/stubs/jobs/ai-employee/fraim/share-with-others.md +30 -0
  99. package/dist/registry/stubs/jobs/ai-employee/fraim/sleep-on-learnings.md +41 -0
  100. package/dist/registry/stubs/jobs/ai-employee/fraim/troubleshoot-fraim.md +29 -0
  101. package/dist/registry/stubs/jobs/ai-employee/fraim/video-demo-to-sop.md +35 -0
  102. package/dist/registry/stubs/jobs/ai-employee/go-to-market/ad-performance-analysis.md +32 -0
  103. package/dist/registry/stubs/jobs/ai-employee/go-to-market/aeo-strategy.md +31 -0
  104. package/dist/registry/stubs/jobs/ai-employee/go-to-market/analyze-revenue-system.md +35 -0
  105. package/dist/registry/stubs/jobs/ai-employee/go-to-market/build-gtm-motion.md +37 -0
  106. package/dist/registry/stubs/jobs/ai-employee/go-to-market/build-gtm-stack.md +36 -0
  107. package/dist/registry/stubs/jobs/ai-employee/go-to-market/design-gtm-system.md +34 -0
  108. package/dist/registry/stubs/jobs/ai-employee/go-to-market/developer-advocacy.md +33 -0
  109. package/dist/registry/stubs/jobs/ai-employee/go-to-market/domain-registration-research.md +33 -0
  110. package/dist/registry/stubs/jobs/ai-employee/go-to-market/evangelist-content-development.md +35 -0
  111. package/dist/registry/stubs/jobs/ai-employee/go-to-market/funnel-analysis.md +35 -0
  112. package/dist/registry/stubs/jobs/ai-employee/go-to-market/growth-loop-design.md +35 -0
  113. package/dist/registry/stubs/jobs/ai-employee/go-to-market/linkedin-carousel-from-deck.md +33 -0
  114. package/dist/registry/stubs/jobs/ai-employee/go-to-market/linkedin-company-page-setup.md +32 -0
  115. package/dist/registry/stubs/jobs/ai-employee/go-to-market/marketing-analytics-review.md +34 -0
  116. package/dist/registry/stubs/jobs/ai-employee/go-to-market/marketing-content-creation.md +31 -0
  117. package/dist/registry/stubs/jobs/ai-employee/go-to-market/marketing-strategy-definition.md +35 -0
  118. package/dist/registry/stubs/jobs/ai-employee/go-to-market/notebooklm-content-generation.md +39 -0
  119. package/dist/registry/stubs/jobs/ai-employee/go-to-market/paid-social-strategy.md +34 -0
  120. package/dist/registry/stubs/jobs/ai-employee/go-to-market/plan-gtm-team.md +33 -0
  121. package/dist/registry/stubs/jobs/ai-employee/go-to-market/ppc-campaign-management.md +35 -0
  122. package/dist/registry/stubs/jobs/ai-employee/go-to-market/product-launch-management.md +29 -0
  123. package/dist/registry/stubs/jobs/ai-employee/go-to-market/promo-video-creation.md +33 -0
  124. package/dist/registry/stubs/jobs/ai-employee/go-to-market/seo-strategy.md +34 -0
  125. package/dist/registry/stubs/jobs/ai-employee/go-to-market/social-engagement-campaign.md +31 -0
  126. package/dist/registry/stubs/jobs/ai-employee/go-to-market/thought-leadership-engagement.md +32 -0
  127. package/dist/registry/stubs/jobs/ai-employee/go-to-market/tracking-and-attribution-setup.md +35 -0
  128. package/dist/registry/stubs/jobs/ai-employee/go-to-market/x-account-setup.md +33 -0
  129. package/dist/registry/stubs/jobs/ai-employee/inclusion/ai-fluency-program-design.md +30 -0
  130. package/dist/registry/stubs/jobs/ai-employee/inclusion/ai-governance-for-inclusion.md +33 -0
  131. package/dist/registry/stubs/jobs/ai-employee/inclusion/dei-toolkit-creation.md +31 -0
  132. package/dist/registry/stubs/jobs/ai-employee/inclusion/equity-pattern-analysis.md +31 -0
  133. package/dist/registry/stubs/jobs/ai-employee/inclusion/erg-sop-modernization.md +32 -0
  134. package/dist/registry/stubs/jobs/ai-employee/inclusion/executive-order-dei-impact-analysis.md +33 -0
  135. package/dist/registry/stubs/jobs/ai-employee/inclusion/inclusion-ai-readiness-audit.md +37 -0
  136. package/dist/registry/stubs/jobs/ai-employee/legal/business-annual-report-filing.md +37 -0
  137. package/dist/registry/stubs/jobs/ai-employee/legal/business-tax-registration.md +31 -0
  138. package/dist/registry/stubs/jobs/ai-employee/legal/cap-table-construction.md +31 -0
  139. package/dist/registry/stubs/jobs/ai-employee/legal/contract-review-analysis.md +36 -0
  140. package/dist/registry/stubs/jobs/ai-employee/legal/ein-application.md +31 -0
  141. package/dist/registry/stubs/jobs/ai-employee/legal/employment-structure-decision.md +29 -0
  142. package/dist/registry/stubs/jobs/ai-employee/legal/entity-type-selection.md +31 -0
  143. package/dist/registry/stubs/jobs/ai-employee/legal/founder-and-equity-agreements.md +31 -0
  144. package/dist/registry/stubs/jobs/ai-employee/legal/ip-assignment-agreement-creation.md +29 -0
  145. package/dist/registry/stubs/jobs/ai-employee/legal/nda-creation.md +33 -0
  146. package/dist/registry/stubs/jobs/ai-employee/legal/provisional-patent-application-creation.md +34 -0
  147. package/dist/registry/stubs/jobs/ai-employee/legal/saas-contract-package-creation.md +34 -0
  148. package/dist/registry/stubs/jobs/ai-employee/legal/state-incorporation-filing.md +31 -0
  149. package/dist/registry/stubs/jobs/ai-employee/legal/trademark-registration-management.md +34 -0
  150. package/dist/registry/stubs/jobs/ai-employee/legal/w9-creation.md +37 -0
  151. package/dist/registry/stubs/jobs/ai-employee/management/evolve-employee.md +44 -0
  152. package/dist/registry/stubs/jobs/ai-employee/management/fully-delegate.md +37 -0
  153. package/dist/registry/stubs/jobs/ai-employee/management/generate-productivity-report.md +35 -0
  154. package/dist/registry/stubs/jobs/ai-employee/management/graduate-job.md +24 -0
  155. package/dist/registry/stubs/jobs/ai-employee/management/issue-retrospective.md +30 -0
  156. package/dist/registry/stubs/jobs/ai-employee/management/manager-agreements.md +33 -0
  157. package/dist/registry/stubs/jobs/ai-employee/management/organization-onboarding.md +33 -0
  158. package/dist/registry/stubs/jobs/ai-employee/management/project-onboarding.md +33 -0
  159. package/dist/registry/stubs/jobs/ai-employee/management/send-stakeholder-update.md +31 -0
  160. package/dist/registry/stubs/jobs/ai-employee/people-ops/benefits-analysis-and-enrollment.md +31 -0
  161. package/dist/registry/stubs/jobs/ai-employee/people-ops/hr-business-partner-advisory.md +31 -0
  162. package/dist/registry/stubs/jobs/ai-employee/people-ops/new-hire-onboarding.md +32 -0
  163. package/dist/registry/stubs/jobs/ai-employee/people-ops/payroll-coordination.md +31 -0
  164. package/dist/registry/stubs/jobs/ai-employee/people-ops/performance-review-preparation.md +31 -0
  165. package/dist/registry/stubs/jobs/ai-employee/procurement/equipment-acceptance-and-supplier-retrospective.md +32 -0
  166. package/dist/registry/stubs/jobs/ai-employee/procurement/procurement-intake-and-strategy.md +32 -0
  167. package/dist/registry/stubs/jobs/ai-employee/procurement/procurement-negotiation-prep.md +32 -0
  168. package/dist/registry/stubs/jobs/ai-employee/procurement/proposal-response-evaluation.md +33 -0
  169. package/dist/registry/stubs/jobs/ai-employee/procurement/purchase-approval-and-po-package.md +32 -0
  170. package/dist/registry/stubs/jobs/ai-employee/procurement/rfp-response-preparation.md +30 -0
  171. package/dist/registry/stubs/jobs/ai-employee/procurement/rfx-package-authoring.md +32 -0
  172. package/dist/registry/stubs/jobs/ai-employee/procurement/supplier-discovery-and-qualification.md +32 -0
  173. package/dist/registry/stubs/jobs/ai-employee/procurement/supplier-performance-review.md +32 -0
  174. package/dist/registry/stubs/jobs/ai-employee/product/customer-prospect-discovery.md +42 -0
  175. package/dist/registry/stubs/jobs/ai-employee/product/experiment-tracking.md +30 -0
  176. package/dist/registry/stubs/jobs/ai-employee/product/feature-specification.md +33 -0
  177. package/dist/registry/stubs/jobs/ai-employee/product/independent-implementation-review.md +34 -0
  178. package/dist/registry/stubs/jobs/ai-employee/product/interview-preparation.md +34 -0
  179. package/dist/registry/stubs/jobs/ai-employee/product/mvp-validation-plan.md +30 -0
  180. package/dist/registry/stubs/jobs/ai-employee/product/participant-recruitment.md +38 -0
  181. package/dist/registry/stubs/jobs/ai-employee/product/process-interview-notes.md +42 -0
  182. package/dist/registry/stubs/jobs/ai-employee/product/review-customer-development.md +38 -0
  183. package/dist/registry/stubs/jobs/ai-employee/product/send-newsletter.md +30 -0
  184. package/dist/registry/stubs/jobs/ai-employee/product/send-thank-you-notes.md +30 -0
  185. package/dist/registry/stubs/jobs/ai-employee/product/triage-customer-needs.md +35 -0
  186. package/dist/registry/stubs/jobs/ai-employee/project-management/cross-functional-dependency-management.md +31 -0
  187. package/dist/registry/stubs/jobs/ai-employee/project-management/delivery-governance-review.md +30 -0
  188. package/dist/registry/stubs/jobs/ai-employee/project-management/operational-reporting.md +37 -0
  189. package/dist/registry/stubs/jobs/ai-employee/project-management/project-plan-creation.md +31 -0
  190. package/dist/registry/stubs/jobs/ai-employee/project-management/scrum-sprint-planning.md +33 -0
  191. package/dist/registry/stubs/jobs/ai-employee/project-management/sprint-planning.md +33 -0
  192. package/dist/registry/stubs/jobs/ai-employee/quality-assurance/accessibility-audit.md +33 -0
  193. package/dist/registry/stubs/jobs/ai-employee/quality-assurance/api-testing.md +34 -0
  194. package/dist/registry/stubs/jobs/ai-employee/quality-assurance/codebase-quality-assessment.md +37 -0
  195. package/dist/registry/stubs/jobs/ai-employee/quality-assurance/iterative-quality-improvement.md +37 -0
  196. package/dist/registry/stubs/jobs/ai-employee/quality-assurance/mutation-testing.md +30 -0
  197. package/dist/registry/stubs/jobs/ai-employee/quality-assurance/performance-quality-assessment.md +38 -0
  198. package/dist/registry/stubs/jobs/ai-employee/quality-assurance/stress-test-app-under-load.md +34 -0
  199. package/dist/registry/stubs/jobs/ai-employee/quality-assurance/test-authoring.md +31 -0
  200. package/dist/registry/stubs/jobs/ai-employee/quality-assurance/test-quality-assessment.md +34 -0
  201. package/dist/registry/stubs/jobs/ai-employee/quality-assurance/ui-polish-validation.md +45 -0
  202. package/dist/registry/stubs/jobs/ai-employee/quality-assurance/user-testing-and-bug-bash.md +32 -0
  203. package/dist/registry/stubs/jobs/ai-employee/recruiting/candidate-pipeline-management.md +34 -0
  204. package/dist/registry/stubs/jobs/ai-employee/recruiting/candidate-sourcing-and-ranking.md +35 -0
  205. package/dist/registry/stubs/jobs/ai-employee/recruiting/interview-coordination.md +34 -0
  206. package/dist/registry/stubs/jobs/ai-employee/recruiting/job-posting-and-sourcing.md +32 -0
  207. package/dist/registry/stubs/jobs/ai-employee/recruiting/offer-and-close-management.md +35 -0
  208. package/dist/registry/stubs/jobs/ai-employee/recruiting/role-intake-and-scorecard.md +33 -0
  209. package/dist/registry/stubs/jobs/ai-employee/recruiting/sourcing-funnel-recap.md +35 -0
  210. package/dist/registry/stubs/jobs/ai-employee/sales/account-strategy.md +34 -0
  211. package/dist/registry/stubs/jobs/ai-employee/sales/crm-pipeline-review.md +30 -0
  212. package/dist/registry/stubs/jobs/ai-employee/sales/deal-strategy.md +32 -0
  213. package/dist/registry/stubs/jobs/ai-employee/sales/outbound-sales-strategy.md +34 -0
  214. package/dist/registry/stubs/jobs/ai-employee/sales/proposal-development.md +31 -0
  215. package/dist/registry/stubs/jobs/ai-employee/sales/sales-coaching.md +33 -0
  216. package/dist/registry/stubs/jobs/ai-employee/sales/sales-discovery-preparation.md +33 -0
  217. package/dist/registry/stubs/jobs/ai-employee/salesforce/sf-build-automation.md +34 -0
  218. package/dist/registry/stubs/jobs/ai-employee/salesforce/sf-build-dashboard.md +35 -0
  219. package/dist/registry/stubs/jobs/ai-employee/salesforce/sf-config-deployment.md +35 -0
  220. package/dist/registry/stubs/jobs/ai-employee/salesforce/sf-data-management.md +34 -0
  221. package/dist/registry/stubs/jobs/ai-employee/salesforce/sf-org-health-check.md +38 -0
  222. package/dist/registry/stubs/jobs/ai-employee/salesforce/sf-user-and-access-management.md +35 -0
  223. package/dist/registry/stubs/jobs/ai-employee/security/compliance-continuous-monitoring.md +31 -0
  224. package/dist/registry/stubs/jobs/ai-employee/security/compliance-policy-authoring.md +31 -0
  225. package/dist/registry/stubs/jobs/ai-employee/security/compliance-questionnaire-response.md +32 -0
  226. package/dist/registry/stubs/jobs/ai-employee/security/compliance-requirements-detection.md +30 -0
  227. package/dist/registry/stubs/jobs/ai-employee/security/compliance-review.md +34 -0
  228. package/dist/registry/stubs/jobs/ai-employee/security/generate-audit-evidence.md +34 -0
  229. package/dist/registry/stubs/jobs/ai-employee/security/regulation-evidence-management.md +33 -0
  230. package/dist/registry/stubs/jobs/ai-employee/security/security-baseline-setup.md +32 -0
  231. package/dist/registry/stubs/jobs/ai-employee/security/security-review.md +32 -0
  232. package/dist/registry/stubs/jobs/ai-employee/security/soc2-evidence-management.md +32 -0
  233. package/dist/registry/stubs/jobs/ai-employee/security/vulnerability-triage-and-remediation.md +33 -0
  234. package/dist/registry/stubs/jobs/ai-employee/strategy/advisor-interview.md +29 -0
  235. package/dist/registry/stubs/jobs/ai-employee/strategy/advisory-board-development.md +31 -0
  236. package/dist/registry/stubs/jobs/ai-employee/strategy/advisory-board-selection.md +29 -0
  237. package/dist/registry/stubs/jobs/ai-employee/strategy/blue-sky-brainstorming.md +33 -0
  238. package/dist/registry/stubs/jobs/ai-employee/strategy/business-idea-validation-and-scoping.md +44 -0
  239. package/dist/registry/stubs/jobs/ai-employee/strategy/business-plan-creation.md +38 -0
  240. package/dist/registry/stubs/jobs/ai-employee/strategy/competitive-analysis.md +36 -0
  241. package/dist/registry/stubs/jobs/ai-employee/strategy/founder-market-fit-analysis.md +40 -0
  242. package/dist/registry/stubs/jobs/ai-employee/strategy/pricing-strategy-definition.md +40 -0
  243. package/dist/registry/stubs/jobs/ai-employee/strategy/problem-statement-crystallization.md +37 -0
  244. package/dist/registry/stubs/jobs/ai-employee/strategy/review-business-strategy.md +37 -0
  245. package/dist/registry/stubs/jobs/ai-employee/travel/travel-disruption-rebooking.md +33 -0
  246. package/dist/registry/stubs/jobs/ai-employee/travel/travel-fare-watch.md +33 -0
  247. package/dist/registry/stubs/jobs/ai-employee/travel/travel-planning.md +32 -0
  248. package/dist/registry/stubs/jobs/ai-manager/fraim/instruction-hygiene-review.md +34 -0
  249. package/dist/registry/stubs/jobs/ai-manager/management/analyze-why-you-messed-up.md +29 -0
  250. package/dist/registry/stubs/jobs/ai-manager/management/author-project-rules.md +31 -0
  251. package/dist/registry/stubs/jobs/ai-manager/management/create-clarity.md +30 -0
  252. package/dist/registry/stubs/jobs/ai-manager/management/explain-it.md +30 -0
  253. package/dist/registry/stubs/jobs/ai-manager/management/follow-your-mentor.md +29 -0
  254. package/dist/registry/stubs/jobs/ai-manager/management/hire-right-ai-for-the-job.md +29 -0
  255. package/dist/registry/stubs/jobs/ai-manager/management/hire-the-right-human-ai-manager.md +29 -0
  256. package/dist/registry/stubs/jobs/ai-manager/management/how-should-i-verify.md +32 -0
  257. package/dist/registry/stubs/jobs/ai-manager/management/need-pov.md +30 -0
  258. package/dist/registry/stubs/jobs/ai-manager/management/recognize-good-work.md +29 -0
  259. package/dist/registry/stubs/jobs/ai-manager/management/refine-core-values.md +29 -0
  260. package/dist/registry/stubs/jobs/ai-manager/management/shape-team.md +30 -0
  261. package/dist/registry/stubs/jobs/ai-manager/management/strong-pov.md +30 -0
  262. package/dist/registry/stubs/jobs/ai-manager/management/weak-pov.md +30 -0
  263. package/dist/registry/stubs/jobs/ai-manager/management/what-should-i-review.md +34 -0
  264. package/dist/src/cli/utils/remote-sync.js +0 -7
  265. package/dist/src/cli/utils/script-sync-utils.js +0 -4
  266. package/dist/src/config/learning-domains.js +12 -19
  267. package/dist/src/core/ai-mentor.js +2 -2
  268. package/dist/src/core/utils/domain-rule-assembler.js +78 -153
  269. package/dist/src/core/utils/include-resolver.js +25 -47
  270. package/dist/src/core/utils/local-registry-resolver.js +0 -51
  271. package/dist/src/local-mcp-server/learning-context-builder.js +36 -33
  272. package/dist/src/local-mcp-server/stdio-server.js +27 -59
  273. package/dist/src/services/mcp-service.js +15 -15
  274. package/dist/src/services/registry-service.js +0 -4
  275. package/package.json +3 -3
  276. package/dist/registry/domains.json +0 -159
  277. package/dist/registry/scripts/domains/catalog.js +0 -112
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GLOBAL_RULE_PATHS = void 0;
7
+ exports.isSafeDomainId = isSafeDomainId;
8
+ exports.isSafeRegistryPath = isSafeRegistryPath;
9
+ exports.jobDomainFromRegistryPath = jobDomainFromRegistryPath;
10
+ exports.discoverJobDomains = discoverJobDomains;
11
+ exports.domainRulePath = domainRulePath;
12
+ const node_fs_1 = __importDefault(require("node:fs"));
13
+ const node_path_1 = __importDefault(require("node:path"));
14
+ function isSafeDomainId(domain) {
15
+ return /^[a-z][a-z-]*$/.test(domain) && !['__proto__', 'constructor', 'prototype'].includes(domain);
16
+ }
17
+ function isSafeRegistryPath(value, kind) {
18
+ return typeof value === 'string' && new RegExp(`^${kind}/[a-zA-Z0-9_/-]+\\.md$`).test(value)
19
+ && !value.includes('//') && !value.split('/').some(part => part === '.' || part === '..');
20
+ }
21
+ /** Extract a folder, never a frontmatter declaration, leaf-name alias or employee. */
22
+ function jobDomainFromRegistryPath(path) {
23
+ if (typeof path !== 'string')
24
+ return null;
25
+ const clean = path.replace(/\\/g, '/').replace(/^registry\//, '');
26
+ if (!isSafeRegistryPath(clean, 'jobs'))
27
+ return null;
28
+ const rolePath = /^jobs\/(?:ai-employee|ai-manager|personalized-employee)\//.test(clean);
29
+ const match = clean.match(rolePath
30
+ ? /^jobs\/(?:ai-employee|ai-manager|personalized-employee)\/([a-z][a-z-]*)\/[^/]+\.md$/
31
+ : /^jobs\/([a-z][a-z-]*)\/[^/]+\.md$/);
32
+ return match && isSafeDomainId(match[1]) ? match[1] : null;
33
+ }
34
+ /** Discover domain names from job folders in a registry, synced home or personalized home. */
35
+ function discoverJobDomains(...roots) {
36
+ const domains = new Set();
37
+ for (const root of roots) {
38
+ for (const relative of ['jobs/ai-employee', 'jobs/ai-manager', 'stubs/jobs/ai-employee', 'stubs/jobs/ai-manager', 'jobs', 'ai-employee/jobs', 'ai-manager/jobs']) {
39
+ const directory = node_path_1.default.join(root, relative);
40
+ if (!node_fs_1.default.existsSync(directory))
41
+ continue;
42
+ for (const entry of node_fs_1.default.readdirSync(directory, { withFileTypes: true })) {
43
+ if (entry.isDirectory() && isSafeDomainId(entry.name) && !['ai-employee', 'ai-manager', 'personalized-employee'].includes(entry.name))
44
+ domains.add(entry.name);
45
+ }
46
+ }
47
+ }
48
+ return [...domains].sort();
49
+ }
50
+ exports.GLOBAL_RULE_PATHS = ['rules/constitution.md', 'rules/evidence-cardinality.md'];
51
+ function domainRulePath(domain) {
52
+ if (!isSafeDomainId(domain))
53
+ throw new Error('Invalid domain folder');
54
+ return 'rules/' + domain + '/' + domain + '.md';
55
+ }
@@ -10,23 +10,12 @@ exports.readerWordCount = readerWordCount;
10
10
  exports.validateEntry = validateEntry;
11
11
  exports.renderEntry = renderEntry;
12
12
  exports.isLearningScaffolding = isLearningScaffolding;
13
- const node_fs_1 = __importDefault(require("node:fs"));
14
13
  const node_path_1 = __importDefault(require("node:path"));
15
- const catalog_1 = require("../domains/catalog");
16
- // Relative to the shipped helper, never to the job's working directory.
17
- let catalog = { schemaVersion: 2, mapVersion: 0, domains: {} };
18
- try {
19
- const candidate = JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.join(__dirname, '..', '..', 'domains.json'), 'utf8'));
20
- if (candidate?.schemaVersion !== 2 || !candidate.domains || typeof candidate.domains !== 'object' || Array.isArray(candidate.domains))
21
- throw new Error('Invalid domain catalog');
22
- catalog = candidate;
23
- }
24
- catch {
25
- console.warn('Learning domain catalog unavailable: restore or sync domains.json beside the installed scripts, then retry domain resolution. Existing source files are preserved.');
26
- }
27
- const domainData = (effectiveCatalog) => ({ mapVersion: effectiveCatalog?.mapVersion ?? 0, domains: effectiveCatalog?.schemaVersion === 2 && effectiveCatalog.domains && typeof effectiveCatalog.domains === 'object' && !Array.isArray(effectiveCatalog.domains) ? Object.keys(effectiveCatalog.domains).filter(domain => domain !== 'global' && /^[a-z][a-z-]*$/.test(domain)) : [] });
28
- function deriveDomain(origins, effectiveCatalog = catalog) {
29
- const map = domainData(effectiveCatalog);
14
+ const folders_1 = require("../domains/folders");
15
+ const domains = (0, folders_1.discoverJobDomains)(node_path_1.default.join(__dirname, '../..'));
16
+ const domainData = (effectiveDomains) => ({ mapVersion: 3, domains: effectiveDomains });
17
+ function deriveDomain(origins, effectiveDomains = domains) {
18
+ const map = domainData(effectiveDomains);
30
19
  const unknown = (reason) => ({ status: 'needs-domain', value: null, reason, mapVersion: map.mapVersion });
31
20
  if (!origins.length)
32
21
  return unknown('No originating job recorded');
@@ -34,9 +23,9 @@ function deriveDomain(origins, effectiveCatalog = catalog) {
34
23
  for (const origin of origins) {
35
24
  // Current folder identity wins; job declarations are no longer domain authority.
36
25
  // Missing provenance is not a connect request and must remain unresolved.
37
- const selected = origin.registryPath ? (0, catalog_1.selectCatalogDomain)(effectiveCatalog, origin.registryPath) : null;
38
- if (selected?.selection === 'mapped') {
39
- decisions.push({ value: selected.domain, basis: 'catalog' });
26
+ const selected = origin.registryPath ? (0, folders_1.jobDomainFromRegistryPath)(origin.registryPath) : null;
27
+ if (selected && effectiveDomains.includes(selected)) {
28
+ decisions.push({ value: selected, basis: 'category' });
40
29
  continue;
41
30
  }
42
31
  return unknown(`No current domain folder for ${origin.name}; retain original provenance for review`);
@@ -46,8 +35,8 @@ function deriveDomain(origins, effectiveCatalog = catalog) {
46
35
  return { status: 'resolved', ...decisions[0], mapVersion: map.mapVersion };
47
36
  }
48
37
  /** Resolve an existing entry without rewriting its source, ID, dates or approval. */
49
- function storedEntryDomain(content, storageDomain, effectiveCatalog = catalog) {
50
- const map = domainData(effectiveCatalog);
38
+ function storedEntryDomain(content, storageDomain, effectiveDomains = domains) {
39
+ const map = domainData(effectiveDomains);
51
40
  const unknown = (reason) => ({ status: 'needs-domain', value: null, reason, mapVersion: map.mapVersion });
52
41
  const fields = (label) => [...content.matchAll(new RegExp(`^\\*\\*${label}\\*\\*:\\s*([^\\r\\n]+)\\r?$`, 'gm'))].map(match => match[1].trim());
53
42
  const domains = fields('Domain');
@@ -63,7 +52,7 @@ function storedEntryDomain(content, storageDomain, effectiveCatalog = catalog) {
63
52
  }
64
53
  const origins = fields('Originating job').flatMap(value => value.split(';').map(value => value.trim()).filter(Boolean));
65
54
  if (origins.length)
66
- return deriveDomain(origins.map(registryPath => ({ name: registryPath, registryPath })), effectiveCatalog);
55
+ return deriveDomain(origins.map(registryPath => ({ name: registryPath, registryPath })), effectiveDomains);
67
56
  // Undecorated files contain intentionally global preferences and patterns.
68
57
  // An old umbrella filename alone never proves a current domain assignment.
69
58
  if (storageDomain === 'global' && (!declared || declared === 'global'))
@@ -71,13 +60,13 @@ function storedEntryDomain(content, storageDomain, effectiveCatalog = catalog) {
71
60
  return unknown('Historical entry needs original job provenance or an explicit manager domain decision');
72
61
  }
73
62
  /** Select entry blocks for one job while retaining provenance in the original text. */
74
- function selectStoredLearningEntries(content, storageDomain, targetDomain, includeGlobal = true, effectiveCatalog = catalog) {
63
+ function selectStoredLearningEntries(content, storageDomain, targetDomain, includeGlobal = true, effectiveDomains = domains) {
75
64
  const headings = [...content.matchAll(/^#{2,6}\s+\[(?:P-)?(?:CRITICAL|HIGH|MED|MEDIUM|LOW|IMPORTANT|MONITOR)\].*$/gm)];
76
65
  const blocks = headings.length ? headings.map((heading, index) => content.slice(heading.index, headings[index + 1]?.index ?? content.length).trim()) : [content.trim()].filter(Boolean);
77
66
  const entries = [];
78
67
  let unresolved = 0;
79
68
  for (const block of blocks) {
80
- const decision = storedEntryDomain(block, storageDomain, effectiveCatalog);
69
+ const decision = storedEntryDomain(block, storageDomain, effectiveDomains);
81
70
  if (decision.status === 'needs-domain')
82
71
  unresolved++;
83
72
  else if (decision.value === targetDomain || (includeGlobal && decision.value === 'global'))
@@ -397,7 +397,7 @@ async function verifyCapabilityDelivery(action, input, options) {
397
397
  // publishes supporting edits under the target rule's approval.
398
398
  const registryFile = node_path_1.default.join(options.projectPath, 'registry', normalized);
399
399
  if (!node_fs_1.default.existsSync(registryFile) || !sameDeliveryText(node_fs_1.default.readFileSync(registryFile, 'utf8'), resolved.content)) {
400
- sharedCatalogAvailable = false;
400
+ sharedSourcesAvailable = false;
401
401
  }
402
402
  else {
403
403
  snapshot(registryFile, resolved.content);
@@ -417,43 +417,18 @@ async function verifyCapabilityDelivery(action, input, options) {
417
417
  let reachable = true;
418
418
  const sharedCallers = [];
419
419
  const supportingPublications = new Map();
420
- let sharedCatalogAvailable = true;
420
+ let sharedSourcesAvailable = true;
421
421
  const captureRuleSelection = (callerPath) => {
422
422
  const paths = load('core/utils/project-fraim-paths');
423
423
  const workspace = paths.getWorkspaceFraimPath(options.projectPath);
424
424
  const user = paths.getUserFraimDirPath();
425
425
  snapshot(node_path_1.default.join(workspace, 'config.json'));
426
426
  snapshot(node_path_1.default.join(user, 'config.json'));
427
- const machineCatalog = node_path_1.default.join(user, 'domains.json');
428
- const workspaceCatalog = node_path_1.default.join(workspace, 'domains.json');
429
- const registryCatalog = node_path_1.default.join(options.projectPath, 'registry/domains.json');
430
- const syncedCatalog = node_fs_1.default.existsSync(machineCatalog) ? machineCatalog : workspaceCatalog;
431
- const baselineCatalog = node_fs_1.default.existsSync(syncedCatalog) ? syncedCatalog : registryCatalog;
432
- for (const file of [machineCatalog, workspaceCatalog, registryCatalog])
433
- snapshot(file);
434
427
  for (const [level, root] of [['Project', node_path_1.default.join(workspace, 'personalized-employee')], ['Manager', manager.contentRoot], ['Org', org.contentRoot]]) {
435
- const file = node_path_1.default.join(root, 'domains.json');
436
- snapshot(file);
437
- if (node_fs_1.default.existsSync(file)) {
438
- const sourceHome = (0, owner_identity_1.resolveOwnerHome)(options.projectPath, level, { runtimeModule: options.runtimeModule });
439
- if (sourceHome.requiresPublish)
440
- supportingPublications.set(file, sourceHome);
441
- if (shared && level === 'Project')
442
- sharedCallers.push({ file, expectedHash: snapshots.get(node_path_1.default.resolve(file)).sha256 });
443
- }
444
428
  // An override created after verification must invalidate the proof.
445
429
  snapshot(node_path_1.default.join(root, targetPath));
446
430
  snapshot(node_path_1.default.join(root, callerPath));
447
431
  }
448
- if (shared) {
449
- // An installed catalog alone cannot prove that the shared selection
450
- // shipped in the reviewed repository revision and current remote HEAD.
451
- if (!node_fs_1.default.existsSync(registryCatalog) || !node_fs_1.default.existsSync(baselineCatalog)
452
- || !sameDeliveryText(node_fs_1.default.readFileSync(registryCatalog, 'utf8'), node_fs_1.default.readFileSync(baselineCatalog, 'utf8')))
453
- sharedCatalogAvailable = false;
454
- else
455
- sharedCallers.push({ file: registryCatalog, expectedHash: snapshots.get(node_path_1.default.resolve(registryCatalog)).sha256 });
456
- }
457
432
  };
458
433
  for (const caller of input.callers) {
459
434
  const callerHome = options.resolveHome(caller.owner);
@@ -535,13 +510,13 @@ async function verifyCapabilityDelivery(action, input, options) {
535
510
  }
536
511
  };
537
512
  verifySnapshots();
538
- if (!sharedCatalogAvailable)
513
+ if (!sharedSourcesAvailable)
539
514
  return { published: false, reference: target, contentHash, reachable, localFiles, ...reviewEvidence };
540
515
  for (const [file, sourceHome] of supportingPublications) {
541
516
  if (!options.runtimeModulePath)
542
517
  throw new Error('capability-publication-required');
543
- // Rule approval never authorizes publishing supporting catalog or rule edits.
544
- const supporting = publishRunFile(options.projectPath, file, sourceHome, input.operationKey || 'catalog-delivery-check', snapshots.get(node_path_1.default.resolve(file)).sha256, options.runtimeModulePath, undefined, true);
518
+ // Rule approval never authorizes publishing supporting rule edits.
519
+ const supporting = publishRunFile(options.projectPath, file, sourceHome, input.operationKey || 'rule-delivery-check', snapshots.get(node_path_1.default.resolve(file)).sha256, options.runtimeModulePath, undefined, true);
545
520
  verifySnapshots();
546
521
  if (!supporting.published)
547
522
  return { ...supporting, contentHash, reachable, localFiles, ...reviewEvidence };
@@ -0,0 +1,43 @@
1
+ <!-- FRAIM_DISCOVERY_STUB -->
2
+
3
+ # FRAIM Job: aeo-optimization
4
+
5
+ ## Intent
6
+ Implement verified answer-engine optimization improvements with reusable website source, truthful metadata, regression checks, and comparable deployed results.
7
+
8
+ ## Outcome
9
+ - Tested, reviewable website changes addressing verified AEO findings.
10
+ - Evidence connects each change to its source, built artifact, tests and reviewed revision.
11
+ - After authorized delivery, a deployed-page check and comparable rescan, or an explicit pending measurement record when deployment or provider access is unavailable.
12
+
13
+ ## Steps
14
+ <!-- The discovery stub's phase tracker reads this list; phase bodies and routing are inherited above. -->
15
+ 1. Phase 1: `implement-scoping`
16
+ 2. Phase 2: `aeo-baseline`
17
+ 3. Phase 3: `implement-repro` (bugs only)
18
+ 4. Phase 4: `implement-tests`
19
+ 5. Phase 5: `aeo-source-plan`
20
+ 6. Phase 6: `implement-code`
21
+ 7. Phase 7: `implement-validate`
22
+ 8. Phase 8: `aeo-artifact-validation`
23
+ 9. Phase 9: `implement-security-review`
24
+ 10. Phase 10: `implement-regression`
25
+ 11. Phase 11: `implement-quality`
26
+ 12. Phase 12: `implement-completeness-review`
27
+ 13. Phase 13: `implement-architecture-update`
28
+ 14. Phase 14: `implement-submission`
29
+ 15. Phase 15: `address-feedback`
30
+ 16. Phase 16: `retrospective`
31
+ 17. Phase 17: `aeo-rescan`
32
+
33
+ ---
34
+
35
+ > [!IMPORTANT]
36
+ > **For AI Agents:** Do NOT attempt to execute this job based on the Intent/Outcome above.
37
+ > This stub is for discoverability only. The actual job has multiple phases with
38
+ > detailed steps, validation criteria, and required skills.
39
+ >
40
+ > To get full phase-by-phase instructions, call:
41
+ > `get_fraim_job({ job: "aeo-optimization" })`
42
+ >
43
+ > Then follow all phases using `seekMentoring` at each phase transition.
@@ -0,0 +1,33 @@
1
+ <!-- FRAIM_DISCOVERY_STUB -->
2
+
3
+ # FRAIM Job: author-ai-evals
4
+
5
+ ## Intent
6
+ Author a runner-compatible evaluation suite for an AI agent or model, with dataset provenance, metric definitions, approval-evidenced thresholds, and an executed baseline result.
7
+
8
+ ## Outcome
9
+ - **Eval Suite**: A committed, runner-compatible eval configuration covering task completion, tool use, hallucination, and safety dimensions.
10
+ - **Dataset Manifest**: Provenance, version, retention category, and purpose-limitation for every dataset used.
11
+ - **Thresholds**: Metric thresholds backed by explicit evidence or flagged as open decisions requiring product owner approval.
12
+ - **Baseline Result**: An executed run captured via the repository's eval runner, not compilation alone.
13
+
14
+ ## Steps
15
+ 1. Phase 1: `eval-scoping`
16
+ 2. Phase 2: `eval-authoring`
17
+ 3. Phase 3: `eval-execution`
18
+ 4. Phase 4: `eval-ci-integration`
19
+ 5. Phase 5: `eval-submission`
20
+ 6. Phase 6: `address-feedback`
21
+ 7. Phase 7: `retrospective`
22
+
23
+ ---
24
+
25
+ > [!IMPORTANT]
26
+ > **For AI Agents:** Do NOT attempt to execute this job based on the Intent/Outcome above.
27
+ > This stub is for discoverability only. The actual job has multiple phases with
28
+ > detailed steps, validation criteria, and required skills.
29
+ >
30
+ > To get full phase-by-phase instructions, call:
31
+ > `get_fraim_job({ job: "author-ai-evals" })`
32
+ >
33
+ > Then follow all phases using `seekMentoring` at each phase transition.
@@ -0,0 +1,33 @@
1
+ <!-- FRAIM_DISCOVERY_STUB -->
2
+
3
+ # FRAIM Job: create-ai-agent
4
+
5
+ ## Intent
6
+ Design, configure, and deploy a production AI agent for a named use case and platform, with explicit tool permissions, knowledge configuration, and validation evidence.
7
+
8
+ ## Outcome
9
+ - **Agent Definition**: Instructions, persona, and behavioral guardrails committed to the repository.
10
+ - **Platform Deployment Package**: Platform-specific configuration and deployment artifact.
11
+ - **Tool and Knowledge Configuration**: Explicit tool allowlist and knowledge source manifest.
12
+ - **Validation Evidence**: Tested against intended use cases with a walkthrough record.
13
+
14
+ ## Steps
15
+ 1. Phase 1: `agent-scoping`
16
+ 2. Phase 2: `agent-design`
17
+ 3. Phase 3: `platform-build`
18
+ 4. Phase 4: `agent-validation`
19
+ 5. Phase 5: `agent-submission`
20
+ 6. Phase 6: `address-feedback`
21
+ 7. Phase 7: `retrospective`
22
+
23
+ ---
24
+
25
+ > [!IMPORTANT]
26
+ > **For AI Agents:** Do NOT attempt to execute this job based on the Intent/Outcome above.
27
+ > This stub is for discoverability only. The actual job has multiple phases with
28
+ > detailed steps, validation criteria, and required skills.
29
+ >
30
+ > To get full phase-by-phase instructions, call:
31
+ > `get_fraim_job({ job: "create-ai-agent" })`
32
+ >
33
+ > Then follow all phases using `seekMentoring` at each phase transition.
@@ -0,0 +1,34 @@
1
+ <!-- FRAIM_DISCOVERY_STUB -->
2
+
3
+ # FRAIM Job: create-hub-configured-agent
4
+
5
+ ## Intent
6
+ Help a manager turn a local AI-agent account, cloud-credit route, or provider setup into a Hub configured agent. The job asks which underlying agent to use, creates or reuses the smallest launch command needed, registers the profile in Hub, and validates that the profile appears in Hub settings without storing secrets.
7
+
8
+ ## Outcome
9
+ - A Hub configured-agent profile stored in user-level Hub state, normally `~/.fraim/hub-configured-agents.json`.
10
+ - The configured agent appears in Hub settings with `id`, `label`, `baseHostId`, and one canonical `command`: ordered environment assignments or literal sourced setup files, followed by the bare base CLI and supported settings.
11
+ - Stored `setupScript` is unsupported and fails closed. Explicit recovery replaces that one record with a complete canonical command and removes `setupScript`, preserving script arguments, preparation order, persistent account/home, runner and timeout. No automatic conversion or migration-backup path exists.
12
+ - Existing base-CLI env-prefix commands remain valid. User-authored account wrappers and profile functions require migration: extract their preparation without losing account selection. Standard CLI installation shims on prepared PATH remain supported, including CMD files.
13
+ - Validation proves the registered launch command changes the expected CLI-visible environment or config without printing secret values.
14
+ - If an equivalent command/profile already exists, the job performs no duplicate write and reports the existing profile as the outcome.
15
+
16
+ ## Steps
17
+ 1. Ask which underlying agent or local CLI the manager wants to configure. Do not restrict the answer to today's built-in examples; use the Hub-supported base agent when one exists, and call out missing Hub support when the chosen agent cannot currently be registered.
18
+ 2. **Multi-Agent Request Check**: If the manager's request names more than one base agent/profile in the same message (for example, "configure claude-ios and claude-tpg"), list every named agent back to the manager as `requestedAgents` and confirm the full set before proceeding. Work through `select-base-cli` (steps 3-6 below), `inspect-existing-setup`, `create-local-setup-script`, `register-hub-profile`, and `validate-configured-agent` once per named agent within this same run — do not stop after the first when more were named. If a genuine blocker (missing credentials, missing Hub support, ambiguous identity) stops one agent partway through, record the specific blocker for that agent and continue with the remaining named agents rather than abandoning the whole request.
19
+ 3. Ask for the user-visible label and stable id. If omitted, derive an id from the label using lowercase kebab case.
20
+ 4. Ask whether this profile should use cloud credits, a different endpoint, a different account/subscription, a provider route, or an existing local setup script. Capture only the non-secret intent and paths.
21
+ 5. Infer the setup approach from the manager's answer and local evidence. Common examples include profile/config routing, alternate account setup, an existing script, or cloud-credit/provider routing artifacts already present on the machine.
22
+ 6. If the requested setup depends on missing provider credentials, endpoint access, or model access, stop with the missing prerequisite rather than creating a partial or fake configuration.
23
+
24
+ ---
25
+
26
+ > [!IMPORTANT]
27
+ > **For AI Agents:** Do NOT attempt to execute this job based on the Intent/Outcome above.
28
+ > This stub is for discoverability only. The actual job has multiple phases with
29
+ > detailed steps, validation criteria, and required skills.
30
+ >
31
+ > To get full phase-by-phase instructions, call:
32
+ > `get_fraim_job({ job: "create-hub-configured-agent" })`
33
+ >
34
+ > Then follow all phases using `seekMentoring` at each phase transition.
@@ -0,0 +1,33 @@
1
+ <!-- FRAIM_DISCOVERY_STUB -->
2
+
3
+ # FRAIM Job: enable-web-mcp
4
+
5
+ ## Intent
6
+ Make an existing web product's approved capabilities available through MCP, covering transport, authentication, least-privilege tool selection, validation, and client connection instructions.
7
+
8
+ ## Outcome
9
+ - **MCP Server**: A running MCP server exposing the approved capabilities as validated tools.
10
+ - **Authentication**: Secure authentication wired at the server level using the product's existing auth mechanism.
11
+ - **Tool Manifest**: A documented tool catalog with Zod schemas, descriptions, and example responses.
12
+ - **Client Connection Instructions**: Verified connection instructions for target AI clients (Claude, Cursor, GitHub Copilot, etc.).
13
+
14
+ ## Steps
15
+ 1. Phase 1: `mcp-discovery`
16
+ 2. Phase 2: `mcp-design`
17
+ 3. Phase 3: `mcp-implementation`
18
+ 4. Phase 4: `mcp-validation`
19
+ 5. Phase 5: `mcp-submission`
20
+ 6. Phase 6: `address-feedback`
21
+ 7. Phase 7: `retrospective`
22
+
23
+ ---
24
+
25
+ > [!IMPORTANT]
26
+ > **For AI Agents:** Do NOT attempt to execute this job based on the Intent/Outcome above.
27
+ > This stub is for discoverability only. The actual job has multiple phases with
28
+ > detailed steps, validation criteria, and required skills.
29
+ >
30
+ > To get full phase-by-phase instructions, call:
31
+ > `get_fraim_job({ job: "enable-web-mcp" })`
32
+ >
33
+ > Then follow all phases using `seekMentoring` at each phase transition.
@@ -0,0 +1,32 @@
1
+ <!-- FRAIM_DISCOVERY_STUB -->
2
+
3
+ # FRAIM Job: evaluate-ai-agent
4
+
5
+ ## Intent
6
+ Evaluate an existing AI agent for task completion, tool use, hallucination, safety, and regressions using the target platform's supported evaluation interface or the repository's existing eval harness.
7
+
8
+ ## Outcome
9
+ - **Evaluation Report**: Per-case results with each result linked to its evaluator, dataset version, run timestamp, and trace/evidence location.
10
+ - **Aggregate Metrics**: Pass rates and metric scores for each evaluation dimension.
11
+ - **Regression Assessment**: Comparison against prior baseline where a baseline exists.
12
+ - **Deployment Recommendation**: Pass, hold, or conditional verdict with explicit evidence.
13
+
14
+ ## Steps
15
+ 1. Phase 1: `eval-setup`
16
+ 2. Phase 2: `eval-run`
17
+ 3. Phase 3: `eval-analysis`
18
+ 4. Phase 4: `eval-submission`
19
+ 5. Phase 5: `address-feedback`
20
+ 6. Phase 6: `retrospective`
21
+
22
+ ---
23
+
24
+ > [!IMPORTANT]
25
+ > **For AI Agents:** Do NOT attempt to execute this job based on the Intent/Outcome above.
26
+ > This stub is for discoverability only. The actual job has multiple phases with
27
+ > detailed steps, validation criteria, and required skills.
28
+ >
29
+ > To get full phase-by-phase instructions, call:
30
+ > `get_fraim_job({ job: "evaluate-ai-agent" })`
31
+ >
32
+ > Then follow all phases using `seekMentoring` at each phase transition.
@@ -0,0 +1,35 @@
1
+ <!-- FRAIM_DISCOVERY_STUB -->
2
+
3
+ # FRAIM Job: mcp-server-creation
4
+
5
+ ## Intent
6
+ Create an MCP (Model Context Protocol) server that wraps an application's existing REST API as AI-callable tools, enabling AI agents to interact with the application programmatically.
7
+
8
+ ## Outcome
9
+ - **Functional MCP Server**: A running MCP server exposing application APIs as tools with proper Zod schema validation.
10
+ - **Authentication**: Secure API key or token-based authentication wrapping all tool calls.
11
+ - **Documentation**: Tool catalog with descriptions, input/output schemas, and usage examples.
12
+
13
+ ## Steps
14
+ 1. Phase 1: `api-discovery`
15
+ 2. Phase 2: `server-scaffolding`
16
+ 3. Phase 3: `tool-definition`
17
+ 4. Phase 4: `authentication-setup`
18
+ 5. Phase 5: `build-and-test`
19
+ 6. Phase 6: `documentation`
20
+ 7. Phase 7: `code-change-gate`
21
+ 8. Phase 8: `mcp-server-submission`
22
+ 9. Phase 9: `address-feedback`
23
+ 10. Phase 10: `retrospective`
24
+
25
+ ---
26
+
27
+ > [!IMPORTANT]
28
+ > **For AI Agents:** Do NOT attempt to execute this job based on the Intent/Outcome above.
29
+ > This stub is for discoverability only. The actual job has multiple phases with
30
+ > detailed steps, validation criteria, and required skills.
31
+ >
32
+ > To get full phase-by-phase instructions, call:
33
+ > `get_fraim_job({ job: "mcp-server-creation" })`
34
+ >
35
+ > Then follow all phases using `seekMentoring` at each phase transition.
@@ -0,0 +1,28 @@
1
+ <!-- FRAIM_DISCOVERY_STUB -->
2
+
3
+ # FRAIM Job: publish-mcp-app
4
+
5
+ ## Intent
6
+ Publish and distribute a Model Context Protocol (MCP) server application to major AI marketplaces and app stores (like ChatGPT and Claude).
7
+
8
+ ## Outcome
9
+ - The MCP app is successfully submitted for approval to all targeted platforms.
10
+ - A status report detailing the submission state, verification challenges, and expected wait times.
11
+
12
+ ## Steps
13
+ 1. Phase 1: `verify-assets`
14
+ 2. Phase 2: `publishing-review`
15
+ 3. Phase 3: `execute-publishing`
16
+ 4. Phase 4: `retrospective`
17
+
18
+ ---
19
+
20
+ > [!IMPORTANT]
21
+ > **For AI Agents:** Do NOT attempt to execute this job based on the Intent/Outcome above.
22
+ > This stub is for discoverability only. The actual job has multiple phases with
23
+ > detailed steps, validation criteria, and required skills.
24
+ >
25
+ > To get full phase-by-phase instructions, call:
26
+ > `get_fraim_job({ job: "publish-mcp-app" })`
27
+ >
28
+ > Then follow all phases using `seekMentoring` at each phase transition.
@@ -0,0 +1,32 @@
1
+ <!-- FRAIM_DISCOVERY_STUB -->
2
+
3
+ # FRAIM Job: banking-evidence-audit
4
+
5
+ ## Intent
6
+ Audit a banking or KYC evidence package for source lineage, missing records, exception handling, and reviewer readiness.
7
+
8
+ ## Outcome
9
+ - **Reviewable deliverable**: A human-readable audit report at `docs/banking/{case-id}/{case-id}-{YYYY-MM-DD}-audit-report.docx`.
10
+ - Evidence map tying each requirement to source artifact, evidence id, owner, and time period.
11
+ - Exception report for missing, stale, contradictory, unverifiable, or redacted evidence.
12
+ - Reviewer handoff with recommendation; blocking gaps prevent a pass conclusion.
13
+
14
+ ## Steps
15
+ 1. Phase 1: `audit-scope`
16
+ 2. Phase 2: `evidence-review`
17
+ 3. Phase 3: `exception-analysis`
18
+ 4. Phase 4: `audit-decision`
19
+ 5. Phase 5: `address-feedback`
20
+ 6. Phase 6: `retrospective`
21
+
22
+ ---
23
+
24
+ > [!IMPORTANT]
25
+ > **For AI Agents:** Do NOT attempt to execute this job based on the Intent/Outcome above.
26
+ > This stub is for discoverability only. The actual job has multiple phases with
27
+ > detailed steps, validation criteria, and required skills.
28
+ >
29
+ > To get full phase-by-phase instructions, call:
30
+ > `get_fraim_job({ job: "banking-evidence-audit" })`
31
+ >
32
+ > Then follow all phases using `seekMentoring` at each phase transition.
@@ -0,0 +1,32 @@
1
+ <!-- FRAIM_DISCOVERY_STUB -->
2
+
3
+ # FRAIM Job: kyc-case-review
4
+
5
+ ## Intent
6
+ Prepare a banking KYC case review package from supplied evidence, preserving unresolved checks and routing final approval to an authorized reviewer.
7
+
8
+ ## Outcome
9
+ - **Reviewable deliverable**: A human-readable KYC review artifact at `docs/banking/{case-id}/{case-id}-{YYYY-MM-DD}-kyc-review.docx`.
10
+ - **KYC recommendation**: A clear review posture such as `ready_for_reviewer`, `needs_human_review`, or `blocked_by_missing_evidence`, with reasons.
11
+ - **Evidence pack**: A readable Word artifact tying the recommendation to evidence ids, source notes, observations, and a receipt.
12
+ - **Audit handoff**: Stable artifact paths that `banking-evidence-audit` can consume later.
13
+
14
+ ## Steps
15
+ 1. Phase 1: `case-intake`
16
+ 2. Phase 2: `evidence-collection`
17
+ 3. Phase 3: `kyc-decision`
18
+ 4. Phase 4: `evidence-package`
19
+ 5. Phase 5: `address-feedback`
20
+ 6. Phase 6: `retrospective`
21
+
22
+ ---
23
+
24
+ > [!IMPORTANT]
25
+ > **For AI Agents:** Do NOT attempt to execute this job based on the Intent/Outcome above.
26
+ > This stub is for discoverability only. The actual job has multiple phases with
27
+ > detailed steps, validation criteria, and required skills.
28
+ >
29
+ > To get full phase-by-phase instructions, call:
30
+ > `get_fraim_job({ job: "kyc-case-review" })`
31
+ >
32
+ > Then follow all phases using `seekMentoring` at each phase transition.
@@ -0,0 +1,46 @@
1
+ <!-- FRAIM_DISCOVERY_STUB -->
2
+ ---
3
+ {
4
+ "name": "career-networking",
5
+ "displayName": "Networking Plan"
6
+ }
7
+ ---
8
+
9
+ # FRAIM Job: career-networking
10
+
11
+ ## Intent
12
+ Build and operate a systematic networking strategy: who to contact, when to contact them, how to personalize outreach, and how to turn warm-path intelligence into real application leverage.
13
+
14
+ ## Outcome
15
+ - A `Networking Plan` DOCX at `docs/career/{slug}-career-networking-{YYYY-MM-DD}.docx`
16
+ - Canonical markdown source at `docs/career/{slug}-career-networking-{YYYY-MM-DD}.md`, generated before the DOCX export
17
+ - >=3 connection tiers per target company: Tier 1 (hiring managers), Tier 2 (employees), Tier 3 (thought leaders)
18
+ - Warm connection path research for Tier 1 and Tier 2 contacts
19
+ - Personalized outreach message templates per tier (<=5 sentences, specific to recipient background)
20
+ - Networking calendar covering >=3 weeks with outreach and follow-up timing
21
+ - Status tracker for each target contact
22
+ - Role-linked recommendations about whether to network before applying, after applying, or instead of applying
23
+ - All LinkedIn write actions (connection requests, messages) performed browser-based via existing skills, as a post-approval action after the manager approves the plan
24
+
25
+ ## Steps
26
+ 1. Phase 1: `gather-networking-context`
27
+ 2. Phase 2: `map-target-strategy`
28
+ 3. Phase 3: `identify-and-score-contacts`
29
+ 4. Phase 4: `draft-outreach-messages`
30
+ 5. Phase 5: `plan-public-engagement`
31
+ 6. Phase 6: `assemble-networking-plan`
32
+ 7. Phase 7: `submit`
33
+ 8. Phase 8: `address-feedback`
34
+ 9. Phase 9: `retrospective`
35
+
36
+ ---
37
+
38
+ > [!IMPORTANT]
39
+ > **For AI Agents:** Do NOT attempt to execute this job based on the Intent/Outcome above.
40
+ > This stub is for discoverability only. The actual job has multiple phases with
41
+ > detailed steps, validation criteria, and required skills.
42
+ >
43
+ > To get full phase-by-phase instructions, call:
44
+ > `get_fraim_job({ job: "career-networking" })`
45
+ >
46
+ > Then follow all phases using `seekMentoring` at each phase transition.
@@ -0,0 +1,41 @@
1
+ <!-- FRAIM_DISCOVERY_STUB -->
2
+ ---
3
+ {
4
+ "name": "career-spec",
5
+ "displayName": "Career Strategy"
6
+ }
7
+ ---
8
+
9
+ # FRAIM Job: career-spec
10
+
11
+ ## Intent
12
+ Build a plain-language Career Strategy that helps the user understand where they fit best, what proof they already have, what gaps to close, and which CAREEna job to run next.
13
+
14
+ ## Outcome
15
+ - A `Career Strategy` DOCX at `docs/career/{slug}-career-spec-{YYYY-MM-DD}.docx` using `get_fraim_file({ path: "templates/career/CAREER-STRATEGY-TEMPLATE.md" })`, marked `PERSONAL - CAREER CONFIDENTIAL`
16
+ - Canonical markdown source at `docs/career/{slug}-career-spec-{YYYY-MM-DD}.md`, generated before the DOCX export
17
+ - Customer analysis for hiring companies, family/dependents, and the user
18
+ - Value proposition assessment in plain language, backed by evidence from the user's history
19
+ - Target segment recommendation: company stage, size, industry, and role type
20
+ - Gap analysis and next actions framed as specific steps to close, not permanent deficits
21
+ - Recommended CAREEna path that names the next 1-3 jobs to run based on the user's situation
22
+
23
+ ## Steps
24
+ 1. Phase 1: `gather-career-context`
25
+ 2. Phase 2: `analyze-customers`
26
+ 3. Phase 3: `synthesize-positioning`
27
+ 4. Phase 4: `submit`
28
+ 5. Phase 5: `address-feedback`
29
+ 6. Phase 6: `retrospective`
30
+
31
+ ---
32
+
33
+ > [!IMPORTANT]
34
+ > **For AI Agents:** Do NOT attempt to execute this job based on the Intent/Outcome above.
35
+ > This stub is for discoverability only. The actual job has multiple phases with
36
+ > detailed steps, validation criteria, and required skills.
37
+ >
38
+ > To get full phase-by-phase instructions, call:
39
+ > `get_fraim_job({ job: "career-spec" })`
40
+ >
41
+ > Then follow all phases using `seekMentoring` at each phase transition.