@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.
- package/.outfitter/skills/outfitter/SKILL.md +67 -37
- package/README.md +63 -35
- package/code/enterprise/cli/privateCatalogSettings.cjs +2 -2
- package/code/enterprise/pi-extension/privateCatalogOnboarding.js +5 -8
- package/code/enterprise/shared/privateCatalogPolicy.cjs +5 -5
- package/code/pi-extension/src/outfitter-extension.js +353 -553
- package/code/pi-extension/src/outfitter-runtime-extension.js +160 -0
- package/dist/agents/AgentLaunch.d.ts +9 -1
- package/dist/agents/AgentLaunch.js +19 -0
- package/dist/agents/AgentLaunch.js.map +1 -1
- package/dist/agents/PiCredentialPersistence.d.ts +6 -0
- package/dist/agents/PiCredentialPersistence.js +33 -0
- package/dist/agents/PiCredentialPersistence.js.map +1 -0
- package/dist/cli/OutfitterCli.js +10 -18
- package/dist/cli/OutfitterCli.js.map +1 -1
- package/dist/cli/commands/CommandObject.d.ts +0 -5
- package/dist/cli/commands/CommandObject.js +1 -4
- package/dist/cli/commands/CommandObject.js.map +1 -1
- package/dist/cli/commands/DumpCommand.d.ts +19 -0
- package/dist/cli/commands/DumpCommand.js +54 -0
- package/dist/cli/commands/DumpCommand.js.map +1 -0
- package/dist/cli/commands/ListCommand.d.ts +17 -0
- package/dist/cli/commands/ListCommand.js +77 -0
- package/dist/cli/commands/ListCommand.js.map +1 -0
- package/dist/cli/commands/PiRuntimeLaunch.d.ts +8 -0
- package/dist/cli/commands/PiRuntimeLaunch.js +47 -0
- package/dist/cli/commands/PiRuntimeLaunch.js.map +1 -0
- package/dist/cli/commands/ProcessDefaults.d.ts +2 -0
- package/dist/cli/commands/ProcessDefaults.js +5 -0
- package/dist/cli/commands/ProcessDefaults.js.map +1 -0
- package/dist/cli/commands/RunAgentCommand.d.ts +46 -0
- package/dist/cli/commands/RunAgentCommand.js +176 -0
- package/dist/cli/commands/RunAgentCommand.js.map +1 -0
- package/dist/cli/commands/SetupCommand.d.ts +38 -6
- package/dist/cli/commands/SetupCommand.js +194 -232
- package/dist/cli/commands/SetupCommand.js.map +1 -1
- package/dist/cli/commands/ValidateCommand.d.ts +20 -0
- package/dist/cli/commands/ValidateCommand.js +54 -0
- package/dist/cli/commands/ValidateCommand.js.map +1 -0
- package/dist/composer/Composer.d.ts +11 -0
- package/dist/composer/Composer.js +72 -0
- package/dist/composer/Composer.js.map +1 -0
- package/dist/composer/Composition.d.ts +33 -0
- package/dist/composer/Composition.js +2 -0
- package/dist/composer/Composition.js.map +1 -0
- package/dist/dump/Containment.d.ts +8 -0
- package/dist/dump/Containment.js +22 -0
- package/dist/dump/Containment.js.map +1 -0
- package/dist/dump/Dump.d.ts +8 -0
- package/dist/dump/Dump.js +182 -0
- package/dist/dump/Dump.js.map +1 -0
- package/dist/extensions/PiExtensionCache.d.ts +30 -0
- package/dist/extensions/PiExtensionCache.js +92 -0
- package/dist/extensions/PiExtensionCache.js.map +1 -0
- package/dist/fs/TypeConflict.d.ts +6 -0
- package/dist/fs/TypeConflict.js +21 -0
- package/dist/fs/TypeConflict.js.map +1 -0
- package/dist/paths/OutfitterCache.d.ts +6 -0
- package/dist/paths/OutfitterCache.js +17 -0
- package/dist/paths/OutfitterCache.js.map +1 -0
- package/dist/projection/Materialize.d.ts +24 -0
- package/dist/projection/Materialize.js +83 -0
- package/dist/projection/Materialize.js.map +1 -0
- package/dist/projection/ProjectHarness.d.ts +5 -0
- package/dist/projection/ProjectHarness.js +77 -0
- package/dist/projection/ProjectHarness.js.map +1 -0
- package/dist/projection/Projection.d.ts +23 -0
- package/dist/projection/Projection.js +2 -0
- package/dist/projection/Projection.js.map +1 -0
- package/dist/resolver/AgentDefinition.d.ts +30 -0
- package/dist/resolver/AgentDefinition.js +123 -0
- package/dist/resolver/AgentDefinition.js.map +1 -0
- package/dist/resolver/Layer.d.ts +12 -0
- package/dist/resolver/Layer.js +30 -0
- package/dist/resolver/Layer.js.map +1 -0
- package/dist/resolver/Resolver.d.ts +3 -0
- package/dist/resolver/Resolver.js +163 -0
- package/dist/resolver/Resolver.js.map +1 -0
- package/dist/resolver/ResolverContext.d.ts +15 -0
- package/dist/resolver/ResolverContext.js +11 -0
- package/dist/resolver/ResolverContext.js.map +1 -0
- package/dist/resolver/ResolverValidation.d.ts +11 -0
- package/dist/resolver/ResolverValidation.js +112 -0
- package/dist/resolver/ResolverValidation.js.map +1 -0
- package/dist/resolver/Resource.d.ts +88 -0
- package/dist/resolver/Resource.js +34 -0
- package/dist/resolver/Resource.js.map +1 -0
- package/dist/schemas/agent.schema.json +48 -0
- package/dist/schemas/settings.schema.json +32 -9
- package/dist/settings/Settings.d.ts +34 -5
- package/dist/settings/Settings.js +3 -1
- package/dist/settings/Settings.js.map +1 -1
- package/dist/settings/SettingsLoader.d.ts +1 -1
- package/dist/settings/SettingsLoader.js +23 -22
- package/dist/settings/SettingsLoader.js.map +1 -1
- package/dist/settings/SettingsMerger.js +12 -10
- package/dist/settings/SettingsMerger.js.map +1 -1
- package/dist/setup/DefaultCatalog.d.ts +20 -0
- package/dist/setup/DefaultCatalog.js +89 -0
- package/dist/setup/DefaultCatalog.js.map +1 -0
- package/dist/setup/Setup.d.ts +43 -0
- package/dist/setup/Setup.js +261 -0
- package/dist/setup/Setup.js.map +1 -0
- package/dist/skills/SkillDocument.d.ts +6 -1
- package/dist/skills/SkillDocument.js.map +1 -1
- package/dist/sources/SourceCache.d.ts +19 -0
- package/dist/{profiles/ProfileCache.js → sources/SourceCache.js} +22 -18
- package/dist/sources/SourceCache.js.map +1 -0
- package/dist/validation/SchemaValidator.d.ts +1 -1
- package/dist/validation/SchemaValidator.js +4 -13
- package/dist/validation/SchemaValidator.js.map +1 -1
- package/docs/architecture/state_writeback_strategy.md +54 -122
- package/docs/documentation/README.md +33 -12
- package/docs/documentation/actions.md +35 -52
- package/docs/documentation/agents.md +109 -0
- package/docs/documentation/best-practices.md +25 -63
- package/docs/documentation/catalogs.md +126 -0
- package/docs/documentation/cli.md +39 -41
- package/docs/documentation/concepts.md +66 -23
- package/docs/documentation/dump-and-bake.md +30 -0
- package/docs/documentation/first-time-cli-agent-users.md +8 -8
- package/docs/documentation/getting-started.md +28 -8
- package/docs/documentation/hooks.md +20 -0
- package/docs/documentation/iterating-on-profiles.md +56 -70
- package/docs/documentation/local-development.md +84 -0
- package/docs/documentation/migration.md +39 -0
- package/docs/documentation/personas.md +41 -0
- package/docs/documentation/porting-claude.md +54 -0
- package/docs/documentation/profiles.md +16 -169
- package/docs/documentation/settings.md +61 -0
- package/docs/documentation/skills.md +93 -334
- package/docs/documentation/state.md +24 -62
- package/docs/documentation/subagents.md +37 -0
- package/docs/documentation/support-matrix.md +40 -35
- package/docs/documentation/switching-to-outfitter.md +75 -81
- package/docs/documentation/tasks.md +13 -0
- package/docs/documentation/usecases/engineering.md +67 -84
- package/docs/documentation/usecases/organization-profile-catalog.md +83 -111
- package/docs/documentation/usecases/persona-reviews.md +133 -139
- package/docs/philosophy.md +2 -2
- package/package.json +3 -3
- package/src/schemas/agent.schema.json +48 -0
- package/src/schemas/settings.schema.json +32 -9
- package/dist/agents/AdapterProfileControls.d.ts +0 -21
- package/dist/agents/AdapterProfileControls.js +0 -76
- package/dist/agents/AdapterProfileControls.js.map +0 -1
- package/dist/agents/AdapterStatePaths.d.ts +0 -12
- package/dist/agents/AdapterStatePaths.js +0 -46
- package/dist/agents/AdapterStatePaths.js.map +0 -1
- package/dist/agents/AgentAdapter.d.ts +0 -44
- package/dist/agents/AgentAdapter.js +0 -2
- package/dist/agents/AgentAdapter.js.map +0 -1
- package/dist/agents/AgentRegistry.d.ts +0 -6
- package/dist/agents/AgentRegistry.js +0 -17
- package/dist/agents/AgentRegistry.js.map +0 -1
- package/dist/agents/LaunchResources.d.ts +0 -17
- package/dist/agents/LaunchResources.js +0 -61
- package/dist/agents/LaunchResources.js.map +0 -1
- package/dist/agents/OutfitterSkill.d.ts +0 -11
- package/dist/agents/OutfitterSkill.js +0 -128
- package/dist/agents/OutfitterSkill.js.map +0 -1
- package/dist/agents/ResourceIdentity.d.ts +0 -2
- package/dist/agents/ResourceIdentity.js +0 -51
- package/dist/agents/ResourceIdentity.js.map +0 -1
- package/dist/agents/claude/ClaudeAdapter.d.ts +0 -2
- package/dist/agents/claude/ClaudeAdapter.js +0 -148
- package/dist/agents/claude/ClaudeAdapter.js.map +0 -1
- package/dist/agents/claude/ClaudeCompositeProfileWriter.d.ts +0 -5
- package/dist/agents/claude/ClaudeCompositeProfileWriter.js +0 -7
- package/dist/agents/claude/ClaudeCompositeProfileWriter.js.map +0 -1
- package/dist/agents/pi/PiAdapter.d.ts +0 -2
- package/dist/agents/pi/PiAdapter.js +0 -363
- package/dist/agents/pi/PiAdapter.js.map +0 -1
- package/dist/agents/pi/PiArgs.d.ts +0 -2
- package/dist/agents/pi/PiArgs.js +0 -15
- package/dist/agents/pi/PiArgs.js.map +0 -1
- package/dist/agents/pi/PiCompositeProfileWriter.d.ts +0 -5
- package/dist/agents/pi/PiCompositeProfileWriter.js +0 -7
- package/dist/agents/pi/PiCompositeProfileWriter.js.map +0 -1
- package/dist/agents/pi/PiExtensionCache.d.ts +0 -12
- package/dist/agents/pi/PiExtensionCache.js +0 -195
- package/dist/agents/pi/PiExtensionCache.js.map +0 -1
- package/dist/agents/pi/PiMcpConfig.d.ts +0 -2
- package/dist/agents/pi/PiMcpConfig.js +0 -114
- package/dist/agents/pi/PiMcpConfig.js.map +0 -1
- package/dist/agents/pi/PiSettingsMergePolicy.d.ts +0 -17
- package/dist/agents/pi/PiSettingsMergePolicy.js +0 -59
- package/dist/agents/pi/PiSettingsMergePolicy.js.map +0 -1
- package/dist/agents/pi/PiSkillSources.d.ts +0 -8
- package/dist/agents/pi/PiSkillSources.js +0 -73
- package/dist/agents/pi/PiSkillSources.js.map +0 -1
- package/dist/cli/commands/FirstRunWelcomeProfile.d.ts +0 -11
- package/dist/cli/commands/FirstRunWelcomeProfile.js +0 -110
- package/dist/cli/commands/FirstRunWelcomeProfile.js.map +0 -1
- package/dist/cli/commands/PiLoginLaunch.d.ts +0 -22
- package/dist/cli/commands/PiLoginLaunch.js +0 -170
- package/dist/cli/commands/PiLoginLaunch.js.map +0 -1
- package/dist/cli/commands/RunCommand.d.ts +0 -36
- package/dist/cli/commands/RunCommand.js +0 -345
- package/dist/cli/commands/RunCommand.js.map +0 -1
- package/dist/cli/commands/SyncCommand.d.ts +0 -46
- package/dist/cli/commands/SyncCommand.js +0 -244
- package/dist/cli/commands/SyncCommand.js.map +0 -1
- package/dist/cli/commands/WelcomeCommand.d.ts +0 -56
- package/dist/cli/commands/WelcomeCommand.js +0 -224
- package/dist/cli/commands/WelcomeCommand.js.map +0 -1
- package/dist/cli/commands/assets/outfitter-ascii.txt +0 -5
- package/dist/cli/commands/profile/Command.d.ts +0 -7
- package/dist/cli/commands/profile/Command.js +0 -24
- package/dist/cli/commands/profile/Command.js.map +0 -1
- package/dist/cli/commands/profile/CreateCommand.d.ts +0 -19
- package/dist/cli/commands/profile/CreateCommand.js +0 -115
- package/dist/cli/commands/profile/CreateCommand.js.map +0 -1
- package/dist/cli/commands/profile/LintCommand.d.ts +0 -19
- package/dist/cli/commands/profile/LintCommand.js +0 -155
- package/dist/cli/commands/profile/LintCommand.js.map +0 -1
- package/dist/cli/commands/profile/ListCommand.d.ts +0 -19
- package/dist/cli/commands/profile/ListCommand.js +0 -91
- package/dist/cli/commands/profile/ListCommand.js.map +0 -1
- package/dist/cli/commands/profile/Shared.d.ts +0 -9
- package/dist/cli/commands/profile/Shared.js +0 -10
- package/dist/cli/commands/profile/Shared.js.map +0 -1
- package/dist/cli/commands/run/RunFirstRunOnboarding.d.ts +0 -7
- package/dist/cli/commands/run/RunFirstRunOnboarding.js +0 -52
- package/dist/cli/commands/run/RunFirstRunOnboarding.js.map +0 -1
- package/dist/cli/commands/run/RunLaunchSummary.d.ts +0 -2
- package/dist/cli/commands/run/RunLaunchSummary.js +0 -35
- package/dist/cli/commands/run/RunLaunchSummary.js.map +0 -1
- package/dist/cli/commands/run/RunProfileResolution.d.ts +0 -39
- package/dist/cli/commands/run/RunProfileResolution.js +0 -128
- package/dist/cli/commands/run/RunProfileResolution.js.map +0 -1
- package/dist/cli/commands/run/RunStateWritePrompt.d.ts +0 -2
- package/dist/cli/commands/run/RunStateWritePrompt.js +0 -29
- package/dist/cli/commands/run/RunStateWritePrompt.js.map +0 -1
- package/dist/cli/commands/setup/SetupPrompts.d.ts +0 -14
- package/dist/cli/commands/setup/SetupPrompts.js +0 -296
- package/dist/cli/commands/setup/SetupPrompts.js.map +0 -1
- package/dist/cli/commands/setup/SetupSourceImport.d.ts +0 -5
- package/dist/cli/commands/setup/SetupSourceImport.js +0 -177
- package/dist/cli/commands/setup/SetupSourceImport.js.map +0 -1
- package/dist/cli/commands/setup/SetupSourceLaunch.d.ts +0 -4
- package/dist/cli/commands/setup/SetupSourceLaunch.js +0 -65
- package/dist/cli/commands/setup/SetupSourceLaunch.js.map +0 -1
- package/dist/cli/commands/setup/SetupStarterSource.d.ts +0 -21
- package/dist/cli/commands/setup/SetupStarterSource.js +0 -133
- package/dist/cli/commands/setup/SetupStarterSource.js.map +0 -1
- package/dist/cli/commands/setup/SetupTypes.d.ts +0 -91
- package/dist/cli/commands/setup/SetupTypes.js +0 -26
- package/dist/cli/commands/setup/SetupTypes.js.map +0 -1
- package/dist/compositeProfile/CompositeProfile.d.ts +0 -8
- package/dist/compositeProfile/CompositeProfile.js +0 -6
- package/dist/compositeProfile/CompositeProfile.js.map +0 -1
- package/dist/compositeProfile/CompositeProfileAssembler.d.ts +0 -12
- package/dist/compositeProfile/CompositeProfileAssembler.js +0 -32
- package/dist/compositeProfile/CompositeProfileAssembler.js.map +0 -1
- package/dist/compositeProfile/CompositeProfileCleanup.d.ts +0 -9
- package/dist/compositeProfile/CompositeProfileCleanup.js +0 -87
- package/dist/compositeProfile/CompositeProfileCleanup.js.map +0 -1
- package/dist/compositeProfile/CompositeProfileFile.d.ts +0 -16
- package/dist/compositeProfile/CompositeProfileFile.js +0 -16
- package/dist/compositeProfile/CompositeProfileFile.js.map +0 -1
- package/dist/compositeProfile/CompositeProfileTemplate.d.ts +0 -15
- package/dist/compositeProfile/CompositeProfileTemplate.js +0 -65
- package/dist/compositeProfile/CompositeProfileTemplate.js.map +0 -1
- package/dist/compositeProfile/CompositeProfileWatcher.d.ts +0 -18
- package/dist/compositeProfile/CompositeProfileWatcher.js +0 -46
- package/dist/compositeProfile/CompositeProfileWatcher.js.map +0 -1
- package/dist/compositeProfile/StatePersistence.d.ts +0 -39
- package/dist/compositeProfile/StatePersistence.js +0 -249
- package/dist/compositeProfile/StatePersistence.js.map +0 -1
- package/dist/fs/SafeSymlink.d.ts +0 -13
- package/dist/fs/SafeSymlink.js +0 -50
- package/dist/fs/SafeSymlink.js.map +0 -1
- package/dist/profiles/Profile.d.ts +0 -60
- package/dist/profiles/Profile.js +0 -7
- package/dist/profiles/Profile.js.map +0 -1
- package/dist/profiles/ProfileCache.d.ts +0 -8
- package/dist/profiles/ProfileCache.js.map +0 -1
- package/dist/profiles/ProfileLoader.d.ts +0 -28
- package/dist/profiles/ProfileLoader.js +0 -299
- package/dist/profiles/ProfileLoader.js.map +0 -1
- package/dist/profiles/ProfileMerger.d.ts +0 -19
- package/dist/profiles/ProfileMerger.js +0 -112
- package/dist/profiles/ProfileMerger.js.map +0 -1
- package/dist/profiles/ProfileSource.d.ts +0 -35
- package/dist/profiles/ProfileSource.js +0 -13
- package/dist/profiles/ProfileSource.js.map +0 -1
- package/dist/profiles/PromptIncludes.d.ts +0 -32
- package/dist/profiles/PromptIncludes.js +0 -147
- package/dist/profiles/PromptIncludes.js.map +0 -1
- package/dist/prompts/SystemPromptExport.d.ts +0 -16
- package/dist/prompts/SystemPromptExport.js +0 -81
- package/dist/prompts/SystemPromptExport.js.map +0 -1
- package/dist/schemas/profile-source.schema.json +0 -29
- package/dist/schemas/profile.schema.json +0 -200
- package/dist/skills/ProfileSkillResolution.d.ts +0 -21
- package/dist/skills/ProfileSkillResolution.js +0 -88
- package/dist/skills/ProfileSkillResolution.js.map +0 -1
- package/dist/skills/SkillCatalog.d.ts +0 -41
- package/dist/skills/SkillCatalog.js +0 -119
- package/dist/skills/SkillCatalog.js.map +0 -1
- package/dist/skills/SkillResolution.d.ts +0 -34
- package/dist/skills/SkillResolution.js +0 -369
- package/dist/skills/SkillResolution.js.map +0 -1
- package/docs/documentation/profile-repository.md +0 -179
- package/src/schemas/SchemaDocument.ts +0 -20
- package/src/schemas/profile-source.schema.json +0 -29
- package/src/schemas/profile.schema.json +0 -200
|
@@ -1,183 +1,30 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Agent profiles
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
"Profile" is a description, not a resource or a settings key. There is no `profile.yml`, no `profiles:` map, and no profile file format. What earlier drafts modeled as a standalone profile — a named selection of skills, subagents, model, and so on — is now just an [agent](./agents.md) and its loadout.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Profiles are agents
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- model and provider settings
|
|
9
|
-
- Pi extensions
|
|
10
|
-
- skills
|
|
11
|
-
- subagents
|
|
12
|
-
- DeepWork workflows
|
|
13
|
-
- agent-specific CLI flags and environment variables
|
|
7
|
+
An **agent profile** is the whole bundle an agent carries: its identity (`agent.md`) plus the loadout declared in that agent's frontmatter or `config.json` — skills, MCP servers, subagents, extensions, plugins, model, thinking level, and tool policy. When someone says "the engineer profile," they mean the `engineer` agent with everything it composes.
|
|
14
8
|
|
|
15
|
-
|
|
9
|
+
Folding profiles into agents removes a layer of indirection. Instead of a settings map that points at resources that point at an identity, one agent directory holds identity and loadout together, resolves by slug like any other resource, and is what you run:
|
|
16
10
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
### Flat profile layout
|
|
22
|
-
|
|
23
|
-
Use the flat layout for small profile catalogs where each profile is mostly YAML and does not need its own resource folder. Each `*.yml` or `*.yaml` file directly under the profile source is a profile. If the file omits `id`, Outfitter uses the filename stem as the profile id.
|
|
24
|
-
|
|
25
|
-
```text
|
|
26
|
-
~/.outfitter/profiles/
|
|
27
|
-
founder.yml
|
|
28
|
-
engineer.yml
|
|
29
|
-
data-analyst.yaml
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
```yaml
|
|
33
|
-
# ~/.outfitter/profiles/founder.yml
|
|
34
|
-
label: Founder
|
|
35
|
-
description: Founder-operator defaults for product, engineering, research, and prose.
|
|
36
|
-
controls:
|
|
37
|
-
append_system_prompt: |
|
|
38
|
-
Think like a founder-operator: connect product judgment, implementation, and evidence.
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Flat profiles are easy to scan, diff, and copy between setup repositories. Generated Pi prompt exports for flat profiles are written beside the flat file as `<profile-id>.generated-system-prompt.md` when `profile_export` is enabled.
|
|
42
|
-
|
|
43
|
-
### Directory profile layout
|
|
44
|
-
|
|
45
|
-
The original layout is one folder per profile with a required `profile.yml`. Use it when a profile owns prompts, skills, extensions, DeepWork jobs, or CLI-specific files that should travel with that profile.
|
|
46
|
-
|
|
47
|
-
```text
|
|
48
|
-
~/.outfitter/profiles/
|
|
49
|
-
home-default/
|
|
50
|
-
profile.yml
|
|
51
|
-
prompts/
|
|
52
|
-
system.md
|
|
53
|
-
skills/
|
|
54
|
-
extensions/
|
|
55
|
-
deepwork/
|
|
56
|
-
jobs/
|
|
57
|
-
cli_specific/
|
|
58
|
-
pi/
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
```yaml
|
|
62
|
-
# ~/.outfitter/profiles/home-default/profile.yml
|
|
63
|
-
id: home-default
|
|
64
|
-
label: Home Default
|
|
65
|
-
controls:
|
|
66
|
-
system_prompt: ./prompts/system.md
|
|
67
|
-
skills:
|
|
68
|
-
- ./skills/review
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
Directory profiles keep bundled resources close to the profile that references them. Generated Pi prompt exports for directory profiles are written as `generated-system-prompt.md` inside the profile directory when `profile_export` is enabled.
|
|
72
|
-
|
|
73
|
-
## Home and project example
|
|
74
|
-
|
|
75
|
-
A home profile SHOULD hold reusable defaults for one developer.
|
|
76
|
-
A project profile SHOULD live with the repository and add only the behavior that project needs.
|
|
77
|
-
The comments below name the files; each `---` starts a separate YAML document in the same example block.
|
|
78
|
-
|
|
79
|
-
```yaml
|
|
80
|
-
# ~/.outfitter/settings.yml
|
|
81
|
-
default_profile: home-default
|
|
82
|
-
default_agent: pi
|
|
83
|
-
profile_sources:
|
|
84
|
-
- path: ./profiles
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
# ~/.outfitter/profiles/home-default.yml
|
|
88
|
-
id: home-default
|
|
89
|
-
label: Home Default
|
|
90
|
-
description: Reusable personal defaults for Outfitter-managed Pi runs.
|
|
91
|
-
controls:
|
|
92
|
-
provider: openai-codex
|
|
93
|
-
model: gpt-5.5
|
|
94
|
-
thinking: high
|
|
95
|
-
append_system_prompt:
|
|
96
|
-
- |
|
|
97
|
-
Use concise, evidence-backed engineering prose.
|
|
98
|
-
Prefer small, reviewable changes.
|
|
99
|
-
Keep durable decisions in repo files.
|
|
100
|
-
- file: prompts/personal-policy.md
|
|
101
|
-
- repo_file: docs/mission.md
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
# ~/repos/acme/example/.outfitter/settings.yml
|
|
105
|
-
default_profile: acme-example
|
|
106
|
-
profile_export: true
|
|
107
|
-
profile_sources:
|
|
108
|
-
# Relative to this settings.yml; exposes ~/.outfitter/profiles to the project.
|
|
109
|
-
- path: ../../../../.outfitter/profiles
|
|
110
|
-
only:
|
|
111
|
-
- home-default
|
|
112
|
-
- path: ./profiles
|
|
113
|
-
|
|
114
|
-
---
|
|
115
|
-
# ~/repos/acme/example/.outfitter/profiles/acme-example/profile.yml
|
|
116
|
-
id: acme-example
|
|
117
|
-
label: Acme Example
|
|
118
|
-
description: Checked-in project profile for ~/repos/acme/example.
|
|
119
|
-
inherits:
|
|
120
|
-
- home-default
|
|
121
|
-
controls:
|
|
122
|
-
thinking: xhigh
|
|
123
|
-
append_system_prompt:
|
|
124
|
-
- |
|
|
125
|
-
You are working in ~/repos/acme/example.
|
|
126
|
-
Honor the project test contract before calling work complete.
|
|
127
|
-
Prefer repository-local conventions over personal defaults.
|
|
128
|
-
- file: .outfitter/prompts/review-policy.md
|
|
129
|
-
environment:
|
|
130
|
-
ACME_PROJECT: example
|
|
11
|
+
```bash
|
|
12
|
+
outfitter run engineer
|
|
13
|
+
outfitter run engineer --harness claude
|
|
131
14
|
```
|
|
132
15
|
|
|
133
|
-
`
|
|
134
|
-
`acme-example` is the project profile: it inherits those defaults, then overrides the thinking level and adds project-specific prompt and environment settings.
|
|
135
|
-
When a project `settings.yml` declares `profile_sources`, it SHOULD include any home profile source that project profiles inherit from.
|
|
136
|
-
Because `append_system_prompt` composes instead of replacing, the higher-precedence project prompt is passed first and the inherited home prompt follows.
|
|
137
|
-
Typed prompt includes read `{ file: string }` entries before launch and pass the file contents as repeated append-prompt text. Raw strings remain literal prompt text; if a raw string looks like a whole file path, Outfitter warns so the profile can be migrated to `{ file: ... }`.
|
|
138
|
-
|
|
139
|
-
### Append prompt file includes
|
|
140
|
-
|
|
141
|
-
`append_system_prompt` accepts a literal string, a multiline string, `{ file: string }`, `{ repo_file: string }`, or an ordered list mixing those entry types. Outfitter does not support `{ text: ... }`; use raw YAML strings for inline prompt text, `{ file: ... }` for maintained profile/catalog files, and `{ repo_file: ... }` for files that should come from the active project.
|
|
16
|
+
`outfitter list agents` shows every resolvable agent and where each resolves from, including shadowed IDs. Set `default_agent` in [settings](./settings.md) to choose what plain `outfitter` runs.
|
|
142
17
|
|
|
143
|
-
|
|
18
|
+
## Where the loadout lives
|
|
144
19
|
|
|
145
|
-
|
|
146
|
-
| ---------------------------------------------------------------------------------- | -------------------------- |
|
|
147
|
-
| `~/.outfitter/profiles/<id>/profile.yml` or `~/.outfitter/profiles/<id>.yml` | `~/.outfitter` |
|
|
148
|
-
| `<project>/.outfitter/profiles/<id>/profile.yml` | `<project>` |
|
|
149
|
-
| Catalog repo `outfitter/profiles/<id>/profile.yml` | Catalog repository root |
|
|
150
|
-
| Explicit `profile_sources[].path` without `.outfitter/` or `outfitter/` convention | The configured source path |
|
|
20
|
+
The loadout lives on the agent, not in settings. Add or change what an agent composes by editing that agent's `agents/<id>/agent.md` frontmatter or `config.json` — see [Agents](./agents.md#loadout-fields) for the field list. To override just one field from a higher layer (swap the model, add an extension) without redefining the agent, put it in the agent's `config.json`: JSON files shallow-merge by key across layers. An `agent.md` resolves whole-resource by ID — the winning layer's `agent.md` replaces lower ones rather than field-merging — so a partial `agent.md` would discard the base identity.
|
|
151
21
|
|
|
152
|
-
|
|
22
|
+
Settings ([settings.md](./settings.md)) is left with just resolution and launch concerns — `default_agent`, `default_harness`, `sources`, and state policy — not resource selection.
|
|
153
23
|
|
|
154
|
-
|
|
24
|
+
## Composing from a base
|
|
155
25
|
|
|
156
|
-
|
|
157
|
-
For this example, the generated prompt fallback would show the composed prompt inputs like this:
|
|
26
|
+
To share behavior across several agents, keep shared operating context in the tree's `system-prompt.md` and `agents.md` — every agent in the tree inherits those — and put shared procedures in [skills](./skills.md) each agent selects. Selecting an agent as a subagent does _not_ share its policy; it only makes that agent available as a delegation target. The [persona](./personas.md) convention builds on the shared-context idea: one base review agent, many interchangeable persona description documents fed as input.
|
|
158
27
|
|
|
159
|
-
|
|
160
|
-
<!-- Generated by Outfitter from Pi runtime ctx.getSystemPrompt(). Safe to review or git-ignore. Do not edit by hand. -->
|
|
161
|
-
# Generated Pi runtime system prompt
|
|
28
|
+
## Migrating from authored profiles
|
|
162
29
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
Available tools:
|
|
166
|
-
- read: Read file contents
|
|
167
|
-
- bash: Execute bash commands (ls, grep, find, etc.)
|
|
168
|
-
- edit: Make precise file edits with exact text replacement, including multiple disjoint edits in one call
|
|
169
|
-
|
|
170
|
-
....
|
|
171
|
-
|
|
172
|
-
## append_system_prompt[0]
|
|
173
|
-
|
|
174
|
-
You are working in ~/repos/acme/example.
|
|
175
|
-
Honor the project test contract before calling work complete.
|
|
176
|
-
Prefer repository-local conventions over personal defaults.
|
|
177
|
-
|
|
178
|
-
## append_system_prompt[1]
|
|
179
|
-
|
|
180
|
-
Use concise, evidence-backed engineering prose.
|
|
181
|
-
Prefer small, reviewable changes.
|
|
182
|
-
Keep durable decisions in repo files.
|
|
183
|
-
```
|
|
30
|
+
Earlier Outfitter versions defined profiles as authored YAML files (`.outfitter/profiles/`, `profile.yml`, inheritance, `controls`). That system is removed with no compatibility mode. See the [migration reference](./migration.md) for the manual mapping from the legacy format to agents and their loadouts.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Settings
|
|
2
|
+
|
|
3
|
+
Outfitter settings configure how resources are resolved and launched. They live inside the `.agents` tree so a tree carries everything it needs, and they are the only Outfitter-specific files in it — deleting them leaves a pure protocol payload.
|
|
4
|
+
|
|
5
|
+
Settings do not carry resource selections. An agent's loadout — its skills, subagents, model, and so on — lives on the [agent](./agents.md), not here. Settings is only about where resources come from and how a run launches.
|
|
6
|
+
|
|
7
|
+
## Scopes
|
|
8
|
+
|
|
9
|
+
| Scope | File | Purpose |
|
|
10
|
+
| ------------- | ---------------------------------------------------------- | -------------------------------------------------------------- |
|
|
11
|
+
| Project-local | `<project>/.agents/settings.local.yml` | Personal, uncommitted overrides for one machine. Gitignore it. |
|
|
12
|
+
| Project | `<project>/.agents/settings.yml` | Committed settings shared by everyone on the project. |
|
|
13
|
+
| User | `~/.agents/settings.yml` (+ optional `settings.local.yml`) | Personal defaults across projects. |
|
|
14
|
+
| Remote | Cached files from `remote_settings` | Organization-distributed defaults. |
|
|
15
|
+
|
|
16
|
+
`settings.local.yml` is a flat file beside `settings.yml` — there is no nested local directory. It overlays its sibling with the same schema and higher precedence, and is the natural home for machine-specific values such as absolute paths to local checkouts (see [Local development](./local-development.md)).
|
|
17
|
+
|
|
18
|
+
In a standalone `.agents` repository the repository root is the tree, so the files are simply `settings.yml` and `settings.local.yml` at the root.
|
|
19
|
+
|
|
20
|
+
## Schema
|
|
21
|
+
|
|
22
|
+
```yaml
|
|
23
|
+
# .agents/settings.yml
|
|
24
|
+
default_agent: engineer # which agent runs by default
|
|
25
|
+
default_harness: pi # which harness to launch: pi or claude
|
|
26
|
+
|
|
27
|
+
# Where protocol resources come from, beyond this tree and ~/.agents.
|
|
28
|
+
sources:
|
|
29
|
+
- github: ai-outfitter/.agent # owner/repo shorthand
|
|
30
|
+
ref: 2f9c1ab0d3e44b6f9d2c8a17e5b40c91d6f3a8e2 # pin a commit, tag, or branch
|
|
31
|
+
# path: optional subdirectory containing the payload
|
|
32
|
+
- uri: git+https://git.example.com/team/agents.git
|
|
33
|
+
ref: v1.2.0
|
|
34
|
+
- path: ../shared-agents # local directory, read live from disk
|
|
35
|
+
|
|
36
|
+
# Organization-distributed settings, layered below local settings.
|
|
37
|
+
remote_settings:
|
|
38
|
+
- github: my-org/.outfitter
|
|
39
|
+
path: .agents/settings.yml
|
|
40
|
+
ref: 9c47d1e2b8a05f36c4d7e90a12b3f8c5d6e71a04
|
|
41
|
+
|
|
42
|
+
cache_directory: ~/.agents/cache
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
- `default_agent` / `default_harness` — which agent plain `outfitter` runs, and the harness it launches in.
|
|
46
|
+
- `sources` — ordered list of remote or local `.agents` payloads. Remote entries (`github:` / `uri:`) accept `ref:` pinning and an optional `path:` to the payload inside the repository; see [Catalogs](./catalogs.md) for conventions and trust guidance.
|
|
47
|
+
- `remote_settings` — shared settings a repository distributes; cached locally and merged below your project and user settings, so anything you set locally wins.
|
|
48
|
+
- `cache_directory` — where remote sources are cached (`outfitter sync` updates them).
|
|
49
|
+
|
|
50
|
+
## Precedence
|
|
51
|
+
|
|
52
|
+
Higher wins:
|
|
53
|
+
|
|
54
|
+
1. `<project>/.agents/settings.local.yml`
|
|
55
|
+
2. `<project>/.agents/settings.yml`
|
|
56
|
+
3. `~/.agents/settings.local.yml`
|
|
57
|
+
4. `~/.agents/settings.yml`
|
|
58
|
+
5. Cached remote settings (in configured order)
|
|
59
|
+
6. Built-in defaults
|
|
60
|
+
|
|
61
|
+
Scalar settings override; list-valued settings such as `sources` follow last-wins ordering per scope so a local file can reorder or replace where resources come from.
|