@ai-outfitter/outfitter 0.11.0 → 1.0.2

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 (308) hide show
  1. package/.outfitter/skills/outfitter/SKILL.md +67 -37
  2. package/README.md +63 -35
  3. package/code/enterprise/cli/privateCatalogSettings.cjs +2 -2
  4. package/code/enterprise/pi-extension/privateCatalogOnboarding.js +5 -8
  5. package/code/enterprise/shared/privateCatalogPolicy.cjs +5 -5
  6. package/code/pi-extension/src/outfitter-extension.js +353 -553
  7. package/code/pi-extension/src/outfitter-runtime-extension.js +160 -0
  8. package/dist/agents/AgentLaunch.d.ts +9 -1
  9. package/dist/agents/AgentLaunch.js +19 -0
  10. package/dist/agents/AgentLaunch.js.map +1 -1
  11. package/dist/agents/PiCredentialPersistence.d.ts +6 -0
  12. package/dist/agents/PiCredentialPersistence.js +33 -0
  13. package/dist/agents/PiCredentialPersistence.js.map +1 -0
  14. package/dist/cli/OutfitterCli.js +10 -18
  15. package/dist/cli/OutfitterCli.js.map +1 -1
  16. package/dist/cli/commands/CommandObject.d.ts +0 -5
  17. package/dist/cli/commands/CommandObject.js +1 -4
  18. package/dist/cli/commands/CommandObject.js.map +1 -1
  19. package/dist/cli/commands/DumpCommand.d.ts +19 -0
  20. package/dist/cli/commands/DumpCommand.js +54 -0
  21. package/dist/cli/commands/DumpCommand.js.map +1 -0
  22. package/dist/cli/commands/ListCommand.d.ts +17 -0
  23. package/dist/cli/commands/ListCommand.js +77 -0
  24. package/dist/cli/commands/ListCommand.js.map +1 -0
  25. package/dist/cli/commands/PiRuntimeLaunch.d.ts +8 -0
  26. package/dist/cli/commands/PiRuntimeLaunch.js +47 -0
  27. package/dist/cli/commands/PiRuntimeLaunch.js.map +1 -0
  28. package/dist/cli/commands/ProcessDefaults.d.ts +2 -0
  29. package/dist/cli/commands/ProcessDefaults.js +5 -0
  30. package/dist/cli/commands/ProcessDefaults.js.map +1 -0
  31. package/dist/cli/commands/RunAgentCommand.d.ts +46 -0
  32. package/dist/cli/commands/RunAgentCommand.js +176 -0
  33. package/dist/cli/commands/RunAgentCommand.js.map +1 -0
  34. package/dist/cli/commands/SetupCommand.d.ts +38 -6
  35. package/dist/cli/commands/SetupCommand.js +194 -232
  36. package/dist/cli/commands/SetupCommand.js.map +1 -1
  37. package/dist/cli/commands/ValidateCommand.d.ts +20 -0
  38. package/dist/cli/commands/ValidateCommand.js +54 -0
  39. package/dist/cli/commands/ValidateCommand.js.map +1 -0
  40. package/dist/composer/Composer.d.ts +11 -0
  41. package/dist/composer/Composer.js +72 -0
  42. package/dist/composer/Composer.js.map +1 -0
  43. package/dist/composer/Composition.d.ts +33 -0
  44. package/dist/composer/Composition.js +2 -0
  45. package/dist/composer/Composition.js.map +1 -0
  46. package/dist/dump/Containment.d.ts +8 -0
  47. package/dist/dump/Containment.js +22 -0
  48. package/dist/dump/Containment.js.map +1 -0
  49. package/dist/dump/Dump.d.ts +8 -0
  50. package/dist/dump/Dump.js +182 -0
  51. package/dist/dump/Dump.js.map +1 -0
  52. package/dist/extensions/PiExtensionCache.d.ts +30 -0
  53. package/dist/extensions/PiExtensionCache.js +92 -0
  54. package/dist/extensions/PiExtensionCache.js.map +1 -0
  55. package/dist/fs/TypeConflict.d.ts +6 -0
  56. package/dist/fs/TypeConflict.js +21 -0
  57. package/dist/fs/TypeConflict.js.map +1 -0
  58. package/dist/paths/OutfitterCache.d.ts +6 -0
  59. package/dist/paths/OutfitterCache.js +17 -0
  60. package/dist/paths/OutfitterCache.js.map +1 -0
  61. package/dist/projection/Materialize.d.ts +24 -0
  62. package/dist/projection/Materialize.js +83 -0
  63. package/dist/projection/Materialize.js.map +1 -0
  64. package/dist/projection/ProjectHarness.d.ts +5 -0
  65. package/dist/projection/ProjectHarness.js +77 -0
  66. package/dist/projection/ProjectHarness.js.map +1 -0
  67. package/dist/projection/Projection.d.ts +23 -0
  68. package/dist/projection/Projection.js +2 -0
  69. package/dist/projection/Projection.js.map +1 -0
  70. package/dist/resolver/AgentDefinition.d.ts +30 -0
  71. package/dist/resolver/AgentDefinition.js +123 -0
  72. package/dist/resolver/AgentDefinition.js.map +1 -0
  73. package/dist/resolver/Layer.d.ts +12 -0
  74. package/dist/resolver/Layer.js +30 -0
  75. package/dist/resolver/Layer.js.map +1 -0
  76. package/dist/resolver/Resolver.d.ts +3 -0
  77. package/dist/resolver/Resolver.js +163 -0
  78. package/dist/resolver/Resolver.js.map +1 -0
  79. package/dist/resolver/ResolverContext.d.ts +15 -0
  80. package/dist/resolver/ResolverContext.js +11 -0
  81. package/dist/resolver/ResolverContext.js.map +1 -0
  82. package/dist/resolver/ResolverValidation.d.ts +11 -0
  83. package/dist/resolver/ResolverValidation.js +112 -0
  84. package/dist/resolver/ResolverValidation.js.map +1 -0
  85. package/dist/resolver/Resource.d.ts +88 -0
  86. package/dist/resolver/Resource.js +34 -0
  87. package/dist/resolver/Resource.js.map +1 -0
  88. package/dist/schemas/agent.schema.json +48 -0
  89. package/dist/schemas/settings.schema.json +32 -9
  90. package/dist/settings/Settings.d.ts +34 -5
  91. package/dist/settings/Settings.js +3 -1
  92. package/dist/settings/Settings.js.map +1 -1
  93. package/dist/settings/SettingsLoader.d.ts +1 -1
  94. package/dist/settings/SettingsLoader.js +23 -22
  95. package/dist/settings/SettingsLoader.js.map +1 -1
  96. package/dist/settings/SettingsMerger.js +12 -10
  97. package/dist/settings/SettingsMerger.js.map +1 -1
  98. package/dist/setup/DefaultCatalog.d.ts +20 -0
  99. package/dist/setup/DefaultCatalog.js +89 -0
  100. package/dist/setup/DefaultCatalog.js.map +1 -0
  101. package/dist/setup/Setup.d.ts +43 -0
  102. package/dist/setup/Setup.js +261 -0
  103. package/dist/setup/Setup.js.map +1 -0
  104. package/dist/skills/SkillDocument.d.ts +6 -1
  105. package/dist/skills/SkillDocument.js.map +1 -1
  106. package/dist/sources/SourceCache.d.ts +19 -0
  107. package/dist/{profiles/ProfileCache.js → sources/SourceCache.js} +22 -18
  108. package/dist/sources/SourceCache.js.map +1 -0
  109. package/dist/validation/SchemaValidator.d.ts +1 -1
  110. package/dist/validation/SchemaValidator.js +4 -13
  111. package/dist/validation/SchemaValidator.js.map +1 -1
  112. package/docs/architecture/state_writeback_strategy.md +54 -122
  113. package/docs/documentation/README.md +33 -12
  114. package/docs/documentation/actions.md +35 -52
  115. package/docs/documentation/agents.md +109 -0
  116. package/docs/documentation/best-practices.md +25 -63
  117. package/docs/documentation/catalogs.md +126 -0
  118. package/docs/documentation/cli.md +39 -41
  119. package/docs/documentation/concepts.md +66 -23
  120. package/docs/documentation/dump-and-bake.md +30 -0
  121. package/docs/documentation/first-time-cli-agent-users.md +8 -8
  122. package/docs/documentation/getting-started.md +28 -8
  123. package/docs/documentation/hooks.md +20 -0
  124. package/docs/documentation/iterating-on-profiles.md +56 -70
  125. package/docs/documentation/local-development.md +84 -0
  126. package/docs/documentation/migration.md +39 -0
  127. package/docs/documentation/personas.md +41 -0
  128. package/docs/documentation/porting-claude.md +54 -0
  129. package/docs/documentation/profiles.md +16 -169
  130. package/docs/documentation/settings.md +61 -0
  131. package/docs/documentation/skills.md +93 -334
  132. package/docs/documentation/state.md +24 -62
  133. package/docs/documentation/subagents.md +37 -0
  134. package/docs/documentation/support-matrix.md +40 -35
  135. package/docs/documentation/switching-to-outfitter.md +75 -81
  136. package/docs/documentation/tasks.md +13 -0
  137. package/docs/documentation/usecases/engineering.md +67 -84
  138. package/docs/documentation/usecases/organization-profile-catalog.md +83 -111
  139. package/docs/documentation/usecases/persona-reviews.md +133 -139
  140. package/docs/philosophy.md +2 -2
  141. package/package.json +3 -3
  142. package/src/schemas/agent.schema.json +48 -0
  143. package/src/schemas/settings.schema.json +32 -9
  144. package/dist/agents/AdapterProfileControls.d.ts +0 -21
  145. package/dist/agents/AdapterProfileControls.js +0 -76
  146. package/dist/agents/AdapterProfileControls.js.map +0 -1
  147. package/dist/agents/AdapterStatePaths.d.ts +0 -12
  148. package/dist/agents/AdapterStatePaths.js +0 -46
  149. package/dist/agents/AdapterStatePaths.js.map +0 -1
  150. package/dist/agents/AgentAdapter.d.ts +0 -44
  151. package/dist/agents/AgentAdapter.js +0 -2
  152. package/dist/agents/AgentAdapter.js.map +0 -1
  153. package/dist/agents/AgentRegistry.d.ts +0 -6
  154. package/dist/agents/AgentRegistry.js +0 -17
  155. package/dist/agents/AgentRegistry.js.map +0 -1
  156. package/dist/agents/LaunchResources.d.ts +0 -17
  157. package/dist/agents/LaunchResources.js +0 -61
  158. package/dist/agents/LaunchResources.js.map +0 -1
  159. package/dist/agents/OutfitterSkill.d.ts +0 -11
  160. package/dist/agents/OutfitterSkill.js +0 -128
  161. package/dist/agents/OutfitterSkill.js.map +0 -1
  162. package/dist/agents/ResourceIdentity.d.ts +0 -2
  163. package/dist/agents/ResourceIdentity.js +0 -51
  164. package/dist/agents/ResourceIdentity.js.map +0 -1
  165. package/dist/agents/claude/ClaudeAdapter.d.ts +0 -2
  166. package/dist/agents/claude/ClaudeAdapter.js +0 -148
  167. package/dist/agents/claude/ClaudeAdapter.js.map +0 -1
  168. package/dist/agents/claude/ClaudeCompositeProfileWriter.d.ts +0 -5
  169. package/dist/agents/claude/ClaudeCompositeProfileWriter.js +0 -7
  170. package/dist/agents/claude/ClaudeCompositeProfileWriter.js.map +0 -1
  171. package/dist/agents/pi/PiAdapter.d.ts +0 -2
  172. package/dist/agents/pi/PiAdapter.js +0 -363
  173. package/dist/agents/pi/PiAdapter.js.map +0 -1
  174. package/dist/agents/pi/PiArgs.d.ts +0 -2
  175. package/dist/agents/pi/PiArgs.js +0 -15
  176. package/dist/agents/pi/PiArgs.js.map +0 -1
  177. package/dist/agents/pi/PiCompositeProfileWriter.d.ts +0 -5
  178. package/dist/agents/pi/PiCompositeProfileWriter.js +0 -7
  179. package/dist/agents/pi/PiCompositeProfileWriter.js.map +0 -1
  180. package/dist/agents/pi/PiExtensionCache.d.ts +0 -12
  181. package/dist/agents/pi/PiExtensionCache.js +0 -195
  182. package/dist/agents/pi/PiExtensionCache.js.map +0 -1
  183. package/dist/agents/pi/PiMcpConfig.d.ts +0 -2
  184. package/dist/agents/pi/PiMcpConfig.js +0 -114
  185. package/dist/agents/pi/PiMcpConfig.js.map +0 -1
  186. package/dist/agents/pi/PiSettingsMergePolicy.d.ts +0 -17
  187. package/dist/agents/pi/PiSettingsMergePolicy.js +0 -59
  188. package/dist/agents/pi/PiSettingsMergePolicy.js.map +0 -1
  189. package/dist/agents/pi/PiSkillSources.d.ts +0 -8
  190. package/dist/agents/pi/PiSkillSources.js +0 -73
  191. package/dist/agents/pi/PiSkillSources.js.map +0 -1
  192. package/dist/cli/commands/FirstRunWelcomeProfile.d.ts +0 -11
  193. package/dist/cli/commands/FirstRunWelcomeProfile.js +0 -110
  194. package/dist/cli/commands/FirstRunWelcomeProfile.js.map +0 -1
  195. package/dist/cli/commands/PiLoginLaunch.d.ts +0 -22
  196. package/dist/cli/commands/PiLoginLaunch.js +0 -170
  197. package/dist/cli/commands/PiLoginLaunch.js.map +0 -1
  198. package/dist/cli/commands/RunCommand.d.ts +0 -36
  199. package/dist/cli/commands/RunCommand.js +0 -345
  200. package/dist/cli/commands/RunCommand.js.map +0 -1
  201. package/dist/cli/commands/SyncCommand.d.ts +0 -46
  202. package/dist/cli/commands/SyncCommand.js +0 -244
  203. package/dist/cli/commands/SyncCommand.js.map +0 -1
  204. package/dist/cli/commands/WelcomeCommand.d.ts +0 -56
  205. package/dist/cli/commands/WelcomeCommand.js +0 -224
  206. package/dist/cli/commands/WelcomeCommand.js.map +0 -1
  207. package/dist/cli/commands/assets/outfitter-ascii.txt +0 -5
  208. package/dist/cli/commands/profile/Command.d.ts +0 -7
  209. package/dist/cli/commands/profile/Command.js +0 -24
  210. package/dist/cli/commands/profile/Command.js.map +0 -1
  211. package/dist/cli/commands/profile/CreateCommand.d.ts +0 -19
  212. package/dist/cli/commands/profile/CreateCommand.js +0 -115
  213. package/dist/cli/commands/profile/CreateCommand.js.map +0 -1
  214. package/dist/cli/commands/profile/LintCommand.d.ts +0 -19
  215. package/dist/cli/commands/profile/LintCommand.js +0 -155
  216. package/dist/cli/commands/profile/LintCommand.js.map +0 -1
  217. package/dist/cli/commands/profile/ListCommand.d.ts +0 -19
  218. package/dist/cli/commands/profile/ListCommand.js +0 -91
  219. package/dist/cli/commands/profile/ListCommand.js.map +0 -1
  220. package/dist/cli/commands/profile/Shared.d.ts +0 -9
  221. package/dist/cli/commands/profile/Shared.js +0 -10
  222. package/dist/cli/commands/profile/Shared.js.map +0 -1
  223. package/dist/cli/commands/run/RunFirstRunOnboarding.d.ts +0 -7
  224. package/dist/cli/commands/run/RunFirstRunOnboarding.js +0 -52
  225. package/dist/cli/commands/run/RunFirstRunOnboarding.js.map +0 -1
  226. package/dist/cli/commands/run/RunLaunchSummary.d.ts +0 -2
  227. package/dist/cli/commands/run/RunLaunchSummary.js +0 -35
  228. package/dist/cli/commands/run/RunLaunchSummary.js.map +0 -1
  229. package/dist/cli/commands/run/RunProfileResolution.d.ts +0 -39
  230. package/dist/cli/commands/run/RunProfileResolution.js +0 -128
  231. package/dist/cli/commands/run/RunProfileResolution.js.map +0 -1
  232. package/dist/cli/commands/run/RunStateWritePrompt.d.ts +0 -2
  233. package/dist/cli/commands/run/RunStateWritePrompt.js +0 -29
  234. package/dist/cli/commands/run/RunStateWritePrompt.js.map +0 -1
  235. package/dist/cli/commands/setup/SetupPrompts.d.ts +0 -14
  236. package/dist/cli/commands/setup/SetupPrompts.js +0 -296
  237. package/dist/cli/commands/setup/SetupPrompts.js.map +0 -1
  238. package/dist/cli/commands/setup/SetupSourceImport.d.ts +0 -5
  239. package/dist/cli/commands/setup/SetupSourceImport.js +0 -177
  240. package/dist/cli/commands/setup/SetupSourceImport.js.map +0 -1
  241. package/dist/cli/commands/setup/SetupSourceLaunch.d.ts +0 -4
  242. package/dist/cli/commands/setup/SetupSourceLaunch.js +0 -65
  243. package/dist/cli/commands/setup/SetupSourceLaunch.js.map +0 -1
  244. package/dist/cli/commands/setup/SetupStarterSource.d.ts +0 -21
  245. package/dist/cli/commands/setup/SetupStarterSource.js +0 -133
  246. package/dist/cli/commands/setup/SetupStarterSource.js.map +0 -1
  247. package/dist/cli/commands/setup/SetupTypes.d.ts +0 -91
  248. package/dist/cli/commands/setup/SetupTypes.js +0 -26
  249. package/dist/cli/commands/setup/SetupTypes.js.map +0 -1
  250. package/dist/compositeProfile/CompositeProfile.d.ts +0 -8
  251. package/dist/compositeProfile/CompositeProfile.js +0 -6
  252. package/dist/compositeProfile/CompositeProfile.js.map +0 -1
  253. package/dist/compositeProfile/CompositeProfileAssembler.d.ts +0 -12
  254. package/dist/compositeProfile/CompositeProfileAssembler.js +0 -32
  255. package/dist/compositeProfile/CompositeProfileAssembler.js.map +0 -1
  256. package/dist/compositeProfile/CompositeProfileCleanup.d.ts +0 -9
  257. package/dist/compositeProfile/CompositeProfileCleanup.js +0 -87
  258. package/dist/compositeProfile/CompositeProfileCleanup.js.map +0 -1
  259. package/dist/compositeProfile/CompositeProfileFile.d.ts +0 -16
  260. package/dist/compositeProfile/CompositeProfileFile.js +0 -16
  261. package/dist/compositeProfile/CompositeProfileFile.js.map +0 -1
  262. package/dist/compositeProfile/CompositeProfileTemplate.d.ts +0 -15
  263. package/dist/compositeProfile/CompositeProfileTemplate.js +0 -65
  264. package/dist/compositeProfile/CompositeProfileTemplate.js.map +0 -1
  265. package/dist/compositeProfile/CompositeProfileWatcher.d.ts +0 -18
  266. package/dist/compositeProfile/CompositeProfileWatcher.js +0 -46
  267. package/dist/compositeProfile/CompositeProfileWatcher.js.map +0 -1
  268. package/dist/compositeProfile/StatePersistence.d.ts +0 -39
  269. package/dist/compositeProfile/StatePersistence.js +0 -249
  270. package/dist/compositeProfile/StatePersistence.js.map +0 -1
  271. package/dist/fs/SafeSymlink.d.ts +0 -13
  272. package/dist/fs/SafeSymlink.js +0 -50
  273. package/dist/fs/SafeSymlink.js.map +0 -1
  274. package/dist/profiles/Profile.d.ts +0 -60
  275. package/dist/profiles/Profile.js +0 -7
  276. package/dist/profiles/Profile.js.map +0 -1
  277. package/dist/profiles/ProfileCache.d.ts +0 -8
  278. package/dist/profiles/ProfileCache.js.map +0 -1
  279. package/dist/profiles/ProfileLoader.d.ts +0 -28
  280. package/dist/profiles/ProfileLoader.js +0 -299
  281. package/dist/profiles/ProfileLoader.js.map +0 -1
  282. package/dist/profiles/ProfileMerger.d.ts +0 -19
  283. package/dist/profiles/ProfileMerger.js +0 -112
  284. package/dist/profiles/ProfileMerger.js.map +0 -1
  285. package/dist/profiles/ProfileSource.d.ts +0 -35
  286. package/dist/profiles/ProfileSource.js +0 -13
  287. package/dist/profiles/ProfileSource.js.map +0 -1
  288. package/dist/profiles/PromptIncludes.d.ts +0 -32
  289. package/dist/profiles/PromptIncludes.js +0 -147
  290. package/dist/profiles/PromptIncludes.js.map +0 -1
  291. package/dist/prompts/SystemPromptExport.d.ts +0 -16
  292. package/dist/prompts/SystemPromptExport.js +0 -81
  293. package/dist/prompts/SystemPromptExport.js.map +0 -1
  294. package/dist/schemas/profile-source.schema.json +0 -29
  295. package/dist/schemas/profile.schema.json +0 -200
  296. package/dist/skills/ProfileSkillResolution.d.ts +0 -21
  297. package/dist/skills/ProfileSkillResolution.js +0 -88
  298. package/dist/skills/ProfileSkillResolution.js.map +0 -1
  299. package/dist/skills/SkillCatalog.d.ts +0 -41
  300. package/dist/skills/SkillCatalog.js +0 -119
  301. package/dist/skills/SkillCatalog.js.map +0 -1
  302. package/dist/skills/SkillResolution.d.ts +0 -34
  303. package/dist/skills/SkillResolution.js +0 -369
  304. package/dist/skills/SkillResolution.js.map +0 -1
  305. package/docs/documentation/profile-repository.md +0 -179
  306. package/src/schemas/SchemaDocument.ts +0 -20
  307. package/src/schemas/profile-source.schema.json +0 -29
  308. package/src/schemas/profile.schema.json +0 -200
@@ -1,20 +1,33 @@
1
1
  ---
2
2
  name: outfitter
3
- description: Explain Outfitter and help users create, inspect, and maintain Outfitter profiles, settings, skills, and setup sources. Use when a user asks about Outfitter itself — profiles, profile.yml files, profile sources and catalogs, skills, state persistence, launch configuration — or asks to set up, change, or debug an Outfitter-managed launch.
3
+ description: Explain Outfitter and help users compose, inspect, and maintain .agents resources, agents and their loadouts, personas, skills, and settings. Use when a user asks about Outfitter itself — the .agents protocol, agent profiles and personas, catalogs, skills, state persistence, launch configuration — or asks to set up, change, debug, or migrate an Outfitter-managed launch.
4
4
 
5
+ # TODO: once directory reference materialization lands, collapse the list
6
+ # below to a single `- file: docs/documentation` entry so the whole
7
+ # documentation tree ships with this skill. Kept per-file until then.
5
8
  references:
6
9
  - file: docs/documentation/README.md
7
10
  - file: docs/documentation/getting-started.md
8
11
  - file: docs/documentation/concepts.md
12
+ - file: docs/documentation/settings.md
9
13
  - file: docs/documentation/cli.md
10
14
  - file: docs/documentation/profiles.md
11
- - file: docs/documentation/profile-repository.md
15
+ - file: docs/documentation/personas.md
16
+ - file: docs/documentation/subagents.md
17
+ - file: docs/documentation/agents.md
12
18
  - file: docs/documentation/skills.md
19
+ - file: docs/documentation/tasks.md
20
+ - file: docs/documentation/dump-and-bake.md
21
+ - file: docs/documentation/catalogs.md
13
22
  - file: docs/documentation/state.md
14
23
  - file: docs/documentation/support-matrix.md
15
24
  - file: docs/documentation/best-practices.md
16
25
  - file: docs/documentation/actions.md
26
+ - file: docs/documentation/hooks.md
17
27
  - file: docs/documentation/switching-to-outfitter.md
28
+ - file: docs/documentation/porting-claude.md
29
+ - file: docs/documentation/local-development.md
30
+ - file: docs/documentation/migration.md
18
31
  - file: docs/documentation/first-time-cli-agent-users.md
19
32
  - file: docs/documentation/iterating-on-profiles.md
20
33
  ---
@@ -22,36 +35,54 @@ references:
22
35
  # Outfitter
23
36
 
24
37
  Use this skill to answer questions about Outfitter and to guide changes to
25
- Outfitter-managed profiles, settings, and launches. Classify the request, read
26
- only the relevant reference, and follow its cross-references before answering
27
- or editing configuration.
38
+ `.agents` resources, agents and their loadouts, and launches. Classify the
39
+ request, read only the relevant reference, and follow its cross-references
40
+ before answering or editing configuration.
28
41
 
29
42
  ## Routing
30
43
 
31
44
  - New to Outfitter, installing, or first launch: read
32
45
  `references/getting-started.md`.
33
- - How a launch works — settings, profile resolution, layering, composite
34
- profiles: read `references/concepts.md`.
35
- - Command flags and syntax for `outfitter run`, `setup`, `sync`, or
36
- `profile ...`: read `references/cli.md`.
37
- - Writing or editing profiles, profile layouts, inheritance, prompt includes:
38
- read `references/profiles.md`.
39
- - Shared profile catalogs, setup sources, publishing profiles or skills for
40
- other users: read `references/profile-repository.md`.
46
+ - How a launch works — the `.agents` protocol, layers, resolver, composition:
47
+ read `references/concepts.md`.
48
+ - Settings scopes, schema, or `settings.local.yml`: read
49
+ `references/settings.md`.
50
+ - Command flags and syntax for `outfitter run`, `setup`, `sync`, `list`,
51
+ `validate`, or `dump`: read `references/cli.md`.
52
+ - Agent profiles an agent and its loadout (skills, subagents, mcp,
53
+ extensions, plugins, model, thinking, tools): read `references/profiles.md`.
54
+ - The `agents/<id>/agent.md` resource format and loadout fields: read
55
+ `references/agents.md`.
56
+ - Personas — the base-agent-plus-persona-documents convention: read
57
+ `references/personas.md`.
58
+ - Subagents and leader-agent delegation: read `references/subagents.md`.
41
59
  - Authoring or selecting skills, SKILL.md layout, skill references: read
42
60
  `references/skills.md`.
61
+ - Tasks and bake (a separate upcoming RFC): read `references/tasks.md`.
62
+ - Dumping the composed tree: read `references/dump-and-bake.md`.
63
+ - Shared catalogs, standalone `.agents` repositories, remote sources,
64
+ publishing resources: read `references/catalogs.md`.
43
65
  - What persists between runs, state persistence strategies, prompt choices:
44
66
  read `references/state.md`.
45
- - What Outfitter can control per agent CLI (pi, Claude Code): read
67
+ - What Outfitter can project per agent CLI (pi, Claude Code): read
46
68
  `references/support-matrix.md`.
47
- - Structuring profiles versus skills, keeping instructions in one place: read
48
- `references/best-practices.md`.
49
- - Running profiles headlessly in GitHub Actions: read `references/actions.md`.
69
+ - Structuring agent identity versus skills, keeping instructions in one place:
70
+ read `references/best-practices.md`.
71
+ - Running tasks headlessly in GitHub Actions: read `references/actions.md`.
72
+ - Getting hooks working per harness: read `references/hooks.md`.
50
73
  - Migrating from another agent CLI setup: read
51
74
  `references/switching-to-outfitter.md`.
75
+ - Porting an existing `~/.claude` directory into `~/.agents`: read
76
+ `references/porting-claude.md`.
77
+ - Developing a personal `.agents` repository and upstreaming changes: read
78
+ `references/local-development.md`.
79
+ - **Migrating from legacy `.outfitter` profiles** (`profile.yml`,
80
+ `.outfitter/profiles`, `--profile` file ids): read `references/migration.md`.
81
+ The runtime has no legacy compatibility; this reference is the manual
82
+ migration path.
52
83
  - Never used a CLI coding agent before: read
53
84
  `references/first-time-cli-agent-users.md`.
54
- - Improving the currently active profile, including this launch's own
85
+ - Improving the currently active agent, including this launch's own
55
86
  configuration: read `references/iterating-on-profiles.md`.
56
87
 
57
88
  `references/README.md` is the documentation index if no entry above fits.
@@ -59,28 +90,27 @@ or editing configuration.
59
90
  ## Working on Outfitter configuration
60
91
 
61
92
  1. Inspect the current configuration before editing:
62
- - `.outfitter/settings.yml` and `.outfitter/local/settings.yml`
63
- - `.outfitter/profiles/` and `.outfitter/skills/`
64
- - `~/.outfitter/settings.yml` and `~/.outfitter/profiles/`
65
- 2. Prefer Outfitter commands over manual file edits:
66
- - `outfitter profile list` to inspect available profiles
67
- - `outfitter profile create <id> --scope user|project|project-local` to
68
- scaffold profiles
69
- - `outfitter profile lint` to validate profiles and skill references
70
- - `outfitter setup <source>` to import setup sources
71
- - `outfitter sync` to refresh remote profile sources
72
- - `outfitter run --profile <id>` to verify launch behavior
73
- 3. Keep each instruction in one place: durable operating context belongs in
74
- the profile, per-capability procedure belongs in a skill
93
+ - `.agents/settings.yml` and `.agents/settings.local.yml`
94
+ - `.agents/agents/` and `.agents/skills/`
95
+ - `~/.agents/settings.yml` and the `~/.agents/` tree
96
+ 2. Prefer Outfitter commands over manual inspection:
97
+ - `outfitter list` to inspect resolvable resources and their sources
98
+ - `outfitter validate` to check layout, loadouts, and references
99
+ - `outfitter setup <source>` to import catalogs
100
+ - `outfitter sync` to refresh remote sources
101
+ - `outfitter run <agent-id>` to verify launch behavior
102
+ - `outfitter dump --out <dir>` to inspect exactly what a run composes
103
+ 3. Keep each instruction in one place: durable identity belongs in the agent
104
+ definition, per-capability procedure belongs in a skill
75
105
  (`references/best-practices.md`).
76
- 4. Validate changes with `outfitter profile lint` and, when possible, a smoke
77
- test such as `outfitter run --profile <id> -- --help`.
106
+ 4. Validate changes with `outfitter validate --strict` and, when possible, a
107
+ smoke test such as `outfitter run <agent-id> -- --help`.
78
108
 
79
109
  ## Default behavior
80
110
 
81
111
  If the user asks for help with Outfitter without a specific request:
82
112
 
83
- 1. Run `outfitter profile list` to show available profiles.
84
- 2. Summarize the profiles by name, scope or source, and default status.
85
- 3. Ask whether the user wants to create or change a profile, and read
86
- `references/profiles.md` before scaffolding one.
113
+ 1. Run `outfitter list agents` to show resolvable agents and resources.
114
+ 2. Summarize the agents by name, scope or source, and default status.
115
+ 3. Ask whether the user wants to compose or change an agent, and read
116
+ `references/profiles.md` and `references/agents.md` before editing.
package/README.md CHANGED
@@ -1,68 +1,96 @@
1
1
  # Outfitter
2
2
 
3
- Outfitter builds effective agent profiles and launches them through wrapped agent CLIs like [`pi`](https://github.com/earendil-works/pi-coding-agent), Claude Code, and future adapters. Individuals, teams, and organizations can share and compose repeatable agent profiles.
3
+ Outfitter is the toolchain for the [Dotagents `.agents` protocol](https://dotagentsprotocol.com/): it resolves agent configuration from local and remote `.agents` trees, composes personas, skills, and tasks by slug, bakes tasks into deterministic execution artifacts, and launches the result through wrapped agent CLIs like [`pi`](https://github.com/earendil-works/pi-coding-agent) and Claude Code.
4
4
 
5
- If you have not tried [Pi](https://pi.dev) yet, Outfitter is the quickest path to a recommended Pi loadout for engineering work.
5
+ Outfitter does not own a configuration format. Your `.agents/` directory is the source of truth useful without Outfitter, committed and reviewed like any other code.
6
6
 
7
- ## Quick start
7
+ > **Status:** these docs describe the target architecture of [RFC #165](https://github.com/ai-outfitter/outfitter/issues/165) (protocol revision `502a9d5`). Implementation is landing as a chain of PRs; the released CLI still runs the legacy profile system until then.
8
8
 
9
- The first time outfitter runs it will start the setup flow to choose profiles and setup a model if pi is not already configured with one.
9
+ ## Quick start
10
10
 
11
- Run without installing.
11
+ Run without installing:
12
12
 
13
13
  ```bash
14
14
  npx @ai-outfitter/outfitter
15
15
  ```
16
16
 
17
- Full install
17
+ Full install:
18
18
 
19
19
  ```bash
20
20
  npm install -g @ai-outfitter/outfitter
21
21
  outfitter
22
22
  ```
23
23
 
24
- Outfitter launches agent CLIs; install the agents you plan to use separately.
24
+ Pi is bundled and also hosts Outfitter's setup walkthrough. Install other runtime harnesses, such as
25
+ Claude Code, separately. For the full walkthrough, see [Getting started](./docs/documentation/getting-started.md).
25
26
 
26
- For the full walkthrough, see [Getting started](./docs/documentation/getting-started.md).
27
+ ## Already have a `.agents/` directory?
27
28
 
28
- ## Profiles
29
+ Then you already have Outfitter configuration. Each agent's loadout references your existing skills, subagents, MCP, knowledge, and commands by slug with zero porting:
29
30
 
30
- [Profiles](./docs/documentation/profiles.md) compose the context, tools, prompts, skills, extensions, subagents, and DeepWork workflows that shape an agent. Profiles can be shared using [Profile Catalog Repos](./docs/documentation/profile-repository.md).
31
+ ```
32
+ <!-- .agents/agents/engineer/agent.md -->
33
+ ---
34
+ name: engineer
35
+ skills: [wiki, research]
36
+ subagents: [code-reviewer]
37
+ mcp: [github]
38
+ ---
39
+ ```
31
40
 
32
41
  ```yaml
33
- # ~/.outfitter/profiles/home-default.yml
34
- id: home-default
35
- label: Home Default
36
- description: Reusable personal defaults for Outfitter-managed Pi runs.
37
- controls:
38
- provider: openai-codex
39
- model: gpt-5.5
40
- thinking: high
41
- append_system_prompt:
42
- - |
43
- Use concise, evidence-backed engineering prose.
44
- Prefer small, reviewable changes.
45
- Keep durable decisions in repo files.
46
- - repo_file: docs/architecture.md
42
+ # .agents/settings.yml
43
+ default_agent: engineer
44
+ ```
45
+
46
+ `outfitter setup` restores the original Pi-native profile-catalog walkthrough on top of `.agents`:
47
+ choose the default Outfitter catalog, create your own profile, or provide another catalog, then pick
48
+ the home/project target and default CLI agent. The default picker is fetched from the immutable
49
+ `ai-outfitter/default-profiles` Release Please tag pinned by Outfitter—never from a sibling checkout.
50
+ Managed porting and persistent harness symlinks are deferred to
51
+ [#187](https://github.com/ai-outfitter/outfitter/issues/187).
52
+
53
+ ## The `.agents` protocol in 30 seconds
54
+
55
+ ```text
56
+ .agents/
57
+ agents.md # shared operating context
58
+ system-prompt.md # base system prompt
59
+ mcp.json # MCP servers
60
+ models.json # model configuration
61
+ agents/<id>/agent.md # identities + loadouts — run directly or as subagents
62
+ skills/<id>/... # capability packages
63
+ knowledge/ # reference documents
64
+ commands/ # slash commands
47
65
  ```
48
66
 
67
+ Layers merge by ID: `<project>/.agents/` over `~/.agents/` over pinned remote [catalogs](./docs/documentation/catalogs.md). An [agent](./docs/documentation/agents.md) carries both its identity and its loadout — an [agent profile](./docs/documentation/profiles.md) — and is what you run; a [persona](./docs/documentation/personas.md) is a review convention layered on a base agent; a [subagent](./docs/documentation/subagents.md) is an agent a run delegates to, including through [GitHub Actions](./docs/documentation/actions.md).
68
+
69
+ Agents can also run headlessly in GitHub Actions via [`ai-outfitter/actions`](https://github.com/ai-outfitter/actions).
70
+
49
71
  ## Documentation
50
72
 
51
73
  - [Getting started](./docs/documentation/getting-started.md)
52
- - [What works today: adapter support matrix](./docs/documentation/support-matrix.md)
53
- - [Profiles](./docs/documentation/profiles.md)
54
- - [Skills](./docs/documentation/skills.md)
55
- - [Best practices](./docs/documentation/best-practices.md)
56
- - [Profile repositories](./docs/documentation/profile-repository.md)
57
- - [State persistence](./docs/documentation/state.md)
58
- - [First-time CLI agent users](./docs/documentation/first-time-cli-agent-users.md)
59
- - [Switching to Outfitter](./docs/documentation/switching-to-outfitter.md)
74
+ - [Concepts](./docs/documentation/concepts.md)
75
+ - [Settings](./docs/documentation/settings.md)
76
+ - [Agents](./docs/documentation/agents.md) · [Agent profiles](./docs/documentation/profiles.md) · [Personas](./docs/documentation/personas.md) · [Subagents](./docs/documentation/subagents.md)
77
+ - [Skills](./docs/documentation/skills.md) · [Tasks (future RFC)](./docs/documentation/tasks.md)
78
+ - [Catalogs](./docs/documentation/catalogs.md) · [Dump](./docs/documentation/dump-and-bake.md)
79
+ - [Running an agent in GitHub Actions](./docs/documentation/actions.md)
80
+ - [Hooks](./docs/documentation/hooks.md) · [State persistence](./docs/documentation/state.md)
81
+ - [Adapter support matrix](./docs/documentation/support-matrix.md)
82
+ - [Local dotagents development](./docs/documentation/local-development.md)
83
+ - [Switching to Outfitter](./docs/documentation/switching-to-outfitter.md) · [Migration from legacy profiles](./docs/documentation/migration.md)
60
84
  - [Documentation index](./docs/documentation/README.md)
61
85
 
62
86
  Use cases:
63
87
 
64
- - [Organization profile catalog](./docs/documentation/usecases/organization-profile-catalog.md) — Publish shared team roles so new users can start with organization-approved defaults.
65
- - [Engineering profile catalog](./docs/documentation/usecases/engineering.md) — Package coding, platform, and review profiles for repeatable engineering workflows.
66
- - [Persona reviews](./docs/documentation/usecases/persona-reviews.md) — Create customer personas to get feedback on ideas, documentation, and designs.
88
+ - [Organization catalog](./docs/documentation/usecases/organization-profile-catalog.md) — Publish shared org resources and defaults through an `owner/.outfitter` control repository.
89
+ - [Engineering catalog](./docs/documentation/usecases/engineering.md) — Package engineering personas, skills, and tasks for repeatable workflows.
90
+ - [Persona reviews](./docs/documentation/usecases/persona-reviews.md) — Compose customer personas to get feedback on ideas, documentation, and designs.
67
91
 
68
92
  For local development, repository structure, and release workflow details, see [Contributing](./CONTRIBUTING.md).
93
+
94
+ ## License
95
+
96
+ Outfitter is [MIT licensed](./LICENSE.md), except for code in `code/enterprise/`, which is under the [Unsupervised Enterprise license](./code/enterprise/LICENSE). Production use of that code requires a valid Unsupervised Enterprise license.
@@ -27,7 +27,7 @@ const enablePrivateProfileCatalogs = (settingsPath) => {
27
27
  ...document,
28
28
  enterprise: {
29
29
  ...enterprise,
30
- private_profile_catalogs: true,
30
+ private_catalogs: true,
31
31
  },
32
32
  }),
33
33
  );
@@ -38,7 +38,7 @@ const readPrivateProfileCatalogsSetting = (value) => {
38
38
  return undefined;
39
39
  }
40
40
 
41
- return value.enterprise?.private_profile_catalogs;
41
+ return value.enterprise?.private_catalogs;
42
42
  };
43
43
 
44
44
  const readSettingsRecord = (settingsPath) => {
@@ -20,27 +20,24 @@ export const confirmPrivateCatalog = async (ctx, selectDescribedOption, reposito
20
20
  export const readPrivateProfileCatalogsEnabled = (fs, settingsPath) => {
21
21
  if (!fs.existsSync(settingsPath)) return false;
22
22
  const content = fs.readFileSync(settingsPath, 'utf8');
23
- return /^enterprise:\s*(?:\n\s+[A-Za-z0-9_-]+:\s*[^\n]*)*\n\s+private_profile_catalogs:\s*true\s*$/mu.test(content);
23
+ return /^enterprise:\s*(?:\n\s+[A-Za-z0-9_-]+:\s*[^\n]*)*\n\s+private_catalogs:\s*true\s*$/mu.test(content);
24
24
  };
25
25
 
26
26
  export const writePrivateProfileCatalogsEnabled = (fs, settingsPath) => {
27
27
  fs.mkdirSync(fs.dirname(settingsPath), { recursive: true });
28
28
  const content = fs.existsSync(settingsPath) ? fs.readFileSync(settingsPath, 'utf8') : '';
29
- if (/^\s*private_profile_catalogs:\s*(?:true|false)\s*$/mu.test(content)) {
29
+ if (/^\s*private_catalogs:\s*(?:true|false)\s*$/mu.test(content)) {
30
30
  fs.writeFileSync(
31
31
  settingsPath,
32
- content.replace(/^\s*private_profile_catalogs:\s*(?:true|false)\s*$/gmu, ' private_profile_catalogs: true'),
32
+ content.replace(/^\s*private_catalogs:\s*(?:true|false)\s*$/gmu, ' private_catalogs: true'),
33
33
  );
34
34
  return;
35
35
  }
36
36
  if (/^enterprise:\s*$/mu.test(content)) {
37
- fs.writeFileSync(
38
- settingsPath,
39
- content.replace(/^enterprise:\s*$/mu, 'enterprise:\n private_profile_catalogs: true'),
40
- );
37
+ fs.writeFileSync(settingsPath, content.replace(/^enterprise:\s*$/mu, 'enterprise:\n private_catalogs: true'));
41
38
  return;
42
39
  }
43
- fs.writeFileSync(settingsPath, content.replace(/\s*$/u, '\n') + 'enterprise:\n private_profile_catalogs: true\n');
40
+ fs.writeFileSync(settingsPath, content.replace(/\s*$/u, '\n') + 'enterprise:\n private_catalogs: true\n');
44
41
  };
45
42
 
46
43
  export const classifyGitHubRepositoryVisibility = async (repository) => {
@@ -18,15 +18,15 @@ const formatPrivateCatalogCliPrompt = (repository) =>
18
18
  'Private profile catalog support is covered by the Outfitter Enterprise license.',
19
19
  'Review code/enterprise/LICENSE or your enterprise agreement before enabling.',
20
20
  '',
21
- 'Enable private profile catalogs in ~/.outfitter/settings.yml? [y/N] ',
21
+ 'Enable private profile catalogs in ~/.agents/settings.yml? [y/N] ',
22
22
  ].join('\n');
23
23
 
24
24
  const formatPrivateCatalogSkippedMessage = (repository, interactive) =>
25
25
  interactive
26
26
  ? `info: Private profile catalog setup was skipped for ${repository}; no settings were changed.`
27
- : `info: Private GitHub profile catalog detected: ${repository}. Enable enterprise.private_profile_catalogs in ~/.outfitter/settings.yml after reviewing code/enterprise/LICENSE or your enterprise agreement.`;
27
+ : `info: Private GitHub profile catalog detected: ${repository}. Enable enterprise.private_catalogs in ~/.agents/settings.yml after reviewing code/enterprise/LICENSE or your enterprise agreement.`;
28
28
 
29
- const privateCatalogEnabledMessage = 'info: Enabled private profile catalogs in ~/.outfitter/settings.yml.';
29
+ const privateCatalogEnabledMessage = 'info: Enabled private profile catalogs in ~/.agents/settings.yml.';
30
30
 
31
31
  const formatPrivateCatalogSkipResultMessage = (repository) =>
32
32
  `Private profile catalog setup was skipped for ${repository}; no settings were changed.`;
@@ -35,7 +35,7 @@ const privateCatalogPiPromptItems = Object.freeze([
35
35
  Object.freeze({
36
36
  value: 'enable',
37
37
  label: 'Enable and continue',
38
- description: 'Write enterprise.private_profile_catalogs: true to ~/.outfitter/settings.yml and save this catalog.',
38
+ description: 'Write enterprise.private_catalogs: true to ~/.agents/settings.yml and save this catalog.',
39
39
  }),
40
40
  Object.freeze({
41
41
  value: 'cancel',
@@ -50,7 +50,7 @@ const formatPrivateCatalogPiPromptTitle = (repository) => [
50
50
  'Private profile catalog support is covered by the Outfitter Enterprise license.',
51
51
  'Review code/enterprise/LICENSE or your enterprise agreement before enabling.',
52
52
  '',
53
- 'Enable private profile catalogs in ~/.outfitter/settings.yml and use this catalog?',
53
+ 'Enable private profile catalogs in ~/.agents/settings.yml and use this catalog?',
54
54
  ];
55
55
 
56
56
  module.exports = {