agentboot 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -7
- package/agentboot.config.json +4 -1
- package/package.json +2 -2
- package/scripts/cli.ts +42 -14
- package/scripts/compile.ts +30 -7
- package/scripts/dev-sync.ts +1 -1
- package/scripts/lib/config.ts +17 -1
- package/scripts/validate.ts +12 -7
- package/.github/ISSUE_TEMPLATE/persona-request.md +0 -62
- package/.github/ISSUE_TEMPLATE/quality-feedback.md +0 -67
- package/.github/workflows/cla.yml +0 -25
- package/.github/workflows/validate.yml +0 -49
- package/.idea/agentboot.iml +0 -9
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/vcs.xml +0 -6
- package/CLAUDE.md +0 -230
- package/CONTRIBUTING.md +0 -168
- package/PERSONAS.md +0 -156
- package/core/instructions/baseline.instructions.md +0 -133
- package/core/instructions/security.instructions.md +0 -186
- package/core/personas/code-reviewer/SKILL.md +0 -175
- package/core/personas/security-reviewer/SKILL.md +0 -233
- package/core/personas/test-data-expert/SKILL.md +0 -234
- package/core/personas/test-generator/SKILL.md +0 -262
- package/core/traits/audit-trail.md +0 -182
- package/core/traits/confidence-signaling.md +0 -172
- package/core/traits/critical-thinking.md +0 -129
- package/core/traits/schema-awareness.md +0 -132
- package/core/traits/source-citation.md +0 -174
- package/core/traits/structured-output.md +0 -199
- package/docs/ci-cd-automation.md +0 -548
- package/docs/claude-code-reference/README.md +0 -21
- package/docs/claude-code-reference/agentboot-coverage.md +0 -484
- package/docs/claude-code-reference/feature-inventory.md +0 -906
- package/docs/cli-commands-audit.md +0 -112
- package/docs/cli-design.md +0 -924
- package/docs/concepts.md +0 -1117
- package/docs/config-schema-audit.md +0 -121
- package/docs/configuration.md +0 -645
- package/docs/delivery-methods.md +0 -758
- package/docs/developer-onboarding.md +0 -342
- package/docs/extending.md +0 -448
- package/docs/getting-started.md +0 -298
- package/docs/knowledge-layer.md +0 -464
- package/docs/marketplace.md +0 -822
- package/docs/org-connection.md +0 -570
- package/docs/plans/architecture.md +0 -2429
- package/docs/plans/design.md +0 -2018
- package/docs/plans/prd.md +0 -1862
- package/docs/plans/stack-rank.md +0 -261
- package/docs/plans/technical-spec.md +0 -2755
- package/docs/privacy-and-safety.md +0 -807
- package/docs/prompt-optimization.md +0 -1071
- package/docs/test-plan.md +0 -972
- package/docs/third-party-ecosystem.md +0 -496
- package/domains/compliance-template/README.md +0 -173
- package/domains/compliance-template/traits/compliance-aware.md +0 -228
- package/examples/enterprise/agentboot.config.json +0 -184
- package/examples/minimal/agentboot.config.json +0 -46
- package/tests/REGRESSION-PLAN.md +0 -705
- package/tests/TEST-PLAN.md +0 -111
- package/tests/cli.test.ts +0 -705
- package/tests/pipeline.test.ts +0 -608
- package/tests/validate.test.ts +0 -278
- package/tsconfig.json +0 -62
package/docs/configuration.md
DELETED
|
@@ -1,645 +0,0 @@
|
|
|
1
|
-
# Configuration Reference
|
|
2
|
-
|
|
3
|
-
This document is the complete reference for `agentboot.config.json`. Every field is
|
|
4
|
-
documented with its type, default value, and an example.
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## JSON Schema
|
|
9
|
-
|
|
10
|
-
The config file is validated against the following JSON Schema on every `npm run build`
|
|
11
|
-
and `npm run validate` invocation. Validation errors block the build.
|
|
12
|
-
|
|
13
|
-
```json
|
|
14
|
-
{
|
|
15
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
16
|
-
"$id": "https://agentboot.dev/schema/config/v1",
|
|
17
|
-
"title": "AgentBoot Configuration",
|
|
18
|
-
"type": "object",
|
|
19
|
-
"required": ["org"],
|
|
20
|
-
"additionalProperties": false,
|
|
21
|
-
"properties": {
|
|
22
|
-
"org": {
|
|
23
|
-
"type": "string",
|
|
24
|
-
"description": "Your organization identifier. Used as a namespace in generated files.",
|
|
25
|
-
"pattern": "^[a-z0-9][a-z0-9-]*[a-z0-9]$"
|
|
26
|
-
},
|
|
27
|
-
"groups": {
|
|
28
|
-
"type": "object",
|
|
29
|
-
"description": "Group definitions. Keys are group names; values describe the group.",
|
|
30
|
-
"additionalProperties": {
|
|
31
|
-
"$ref": "#/definitions/GroupConfig"
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
"personas": {
|
|
35
|
-
"$ref": "#/definitions/PersonasConfig"
|
|
36
|
-
},
|
|
37
|
-
"traits": {
|
|
38
|
-
"$ref": "#/definitions/TraitsConfig"
|
|
39
|
-
},
|
|
40
|
-
"sync": {
|
|
41
|
-
"$ref": "#/definitions/SyncConfig"
|
|
42
|
-
},
|
|
43
|
-
"output": {
|
|
44
|
-
"$ref": "#/definitions/OutputConfig"
|
|
45
|
-
},
|
|
46
|
-
"extend": {
|
|
47
|
-
"$ref": "#/definitions/ExtendConfig"
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
"definitions": {
|
|
51
|
-
"GroupConfig": {
|
|
52
|
-
"type": "object",
|
|
53
|
-
"required": ["teams"],
|
|
54
|
-
"additionalProperties": false,
|
|
55
|
-
"properties": {
|
|
56
|
-
"teams": {
|
|
57
|
-
"type": "array",
|
|
58
|
-
"items": { "type": "string" },
|
|
59
|
-
"description": "List of team names within this group."
|
|
60
|
-
},
|
|
61
|
-
"personas": {
|
|
62
|
-
"$ref": "#/definitions/PersonasConfig",
|
|
63
|
-
"description": "Group-level persona overrides. Merged with org-level config."
|
|
64
|
-
},
|
|
65
|
-
"traits": {
|
|
66
|
-
"$ref": "#/definitions/TraitsConfig",
|
|
67
|
-
"description": "Group-level trait overrides."
|
|
68
|
-
},
|
|
69
|
-
"extend": {
|
|
70
|
-
"type": "string",
|
|
71
|
-
"description": "Path to group-level persona extensions directory."
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
"PersonasConfig": {
|
|
76
|
-
"type": "object",
|
|
77
|
-
"additionalProperties": false,
|
|
78
|
-
"properties": {
|
|
79
|
-
"enabled": {
|
|
80
|
-
"type": "array",
|
|
81
|
-
"items": { "type": "string" },
|
|
82
|
-
"description": "List of persona IDs to include in the build.",
|
|
83
|
-
"default": ["code-reviewer", "security-reviewer", "test-generator", "test-data-expert"]
|
|
84
|
-
},
|
|
85
|
-
"extend": {
|
|
86
|
-
"type": ["string", "null"],
|
|
87
|
-
"description": "Path to a directory containing additional persona definitions.",
|
|
88
|
-
"default": null
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
"TraitsConfig": {
|
|
93
|
-
"type": "object",
|
|
94
|
-
"additionalProperties": false,
|
|
95
|
-
"properties": {
|
|
96
|
-
"enabled": {
|
|
97
|
-
"type": "array",
|
|
98
|
-
"items": { "type": "string" },
|
|
99
|
-
"description": "List of trait IDs to include. All listed traits must exist in core/traits/ or an extension directory.",
|
|
100
|
-
"default": ["critical-thinking", "structured-output", "source-citation", "confidence-signaling", "audit-trail"]
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
},
|
|
104
|
-
"SyncConfig": {
|
|
105
|
-
"type": "object",
|
|
106
|
-
"additionalProperties": false,
|
|
107
|
-
"properties": {
|
|
108
|
-
"repos": {
|
|
109
|
-
"type": ["string", "array"],
|
|
110
|
-
"description": "Path to repos.json file, or an inline array of RepoConfig objects.",
|
|
111
|
-
"default": "./repos.json"
|
|
112
|
-
},
|
|
113
|
-
"mode": {
|
|
114
|
-
"type": "string",
|
|
115
|
-
"enum": ["local", "github-api"],
|
|
116
|
-
"description": "Sync mode. 'local' writes to local filesystem paths. 'github-api' creates PRs via the GitHub API.",
|
|
117
|
-
"default": "local"
|
|
118
|
-
},
|
|
119
|
-
"pr": {
|
|
120
|
-
"$ref": "#/definitions/SyncPrConfig"
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
},
|
|
124
|
-
"SyncPrConfig": {
|
|
125
|
-
"type": "object",
|
|
126
|
-
"additionalProperties": false,
|
|
127
|
-
"properties": {
|
|
128
|
-
"enabled": {
|
|
129
|
-
"type": "boolean",
|
|
130
|
-
"description": "When true (and mode is 'local'), the sync script commits and opens a PR in each target repo after writing files.",
|
|
131
|
-
"default": false
|
|
132
|
-
},
|
|
133
|
-
"branch_prefix": {
|
|
134
|
-
"type": "string",
|
|
135
|
-
"description": "Git branch prefix for sync PRs.",
|
|
136
|
-
"default": "agentboot/sync-"
|
|
137
|
-
},
|
|
138
|
-
"title_template": {
|
|
139
|
-
"type": "string",
|
|
140
|
-
"description": "PR title template. Supports {version} and {date} placeholders.",
|
|
141
|
-
"default": "chore: AgentBoot persona sync {version}"
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
|
-
"OutputConfig": {
|
|
146
|
-
"type": "object",
|
|
147
|
-
"additionalProperties": false,
|
|
148
|
-
"properties": {
|
|
149
|
-
"dir": {
|
|
150
|
-
"type": "string",
|
|
151
|
-
"description": "Subdirectory within each target repo where compiled output is written.",
|
|
152
|
-
"default": ".claude"
|
|
153
|
-
},
|
|
154
|
-
"personas_registry": {
|
|
155
|
-
"type": "boolean",
|
|
156
|
-
"description": "When true, generates PERSONAS.md in the root of the personas repo after each build.",
|
|
157
|
-
"default": true
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
},
|
|
161
|
-
"ExtendConfig": {
|
|
162
|
-
"type": "object",
|
|
163
|
-
"additionalProperties": false,
|
|
164
|
-
"properties": {
|
|
165
|
-
"domains": {
|
|
166
|
-
"type": "array",
|
|
167
|
-
"items": { "type": "string" },
|
|
168
|
-
"description": "Array of paths to domain layer directories. Applied in order.",
|
|
169
|
-
"default": []
|
|
170
|
-
},
|
|
171
|
-
"instructions": {
|
|
172
|
-
"type": ["string", "null"],
|
|
173
|
-
"description": "Path to an org-level always-on instruction fragment. Prepended to the generated CLAUDE.md.",
|
|
174
|
-
"default": null
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
---
|
|
183
|
-
|
|
184
|
-
## Field Reference
|
|
185
|
-
|
|
186
|
-
### `org`
|
|
187
|
-
|
|
188
|
-
**Type:** `string`
|
|
189
|
-
**Required:** Yes
|
|
190
|
-
**Pattern:** Lowercase alphanumeric and hyphens, no leading/trailing hyphen
|
|
191
|
-
|
|
192
|
-
Your organization identifier. Used as a namespace prefix in generated file headers and
|
|
193
|
-
in the PERSONAS.md registry. Does not need to match your GitHub organization name,
|
|
194
|
-
but using the same value reduces confusion.
|
|
195
|
-
|
|
196
|
-
```json
|
|
197
|
-
"org": "acme-corp"
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
---
|
|
201
|
-
|
|
202
|
-
### `groups`
|
|
203
|
-
|
|
204
|
-
**Type:** `object`
|
|
205
|
-
**Required:** No
|
|
206
|
-
**Default:** `{}`
|
|
207
|
-
|
|
208
|
-
Defines the group structure of your organization. Keys are group names (lowercase,
|
|
209
|
-
hyphen-separated). Values are `GroupConfig` objects.
|
|
210
|
-
|
|
211
|
-
Groups represent horizontal slices of your organization — typically engineering
|
|
212
|
-
departments or platform areas. A group has teams and can have group-level persona
|
|
213
|
-
and trait overrides.
|
|
214
|
-
|
|
215
|
-
```json
|
|
216
|
-
"groups": {
|
|
217
|
-
"platform": {
|
|
218
|
-
"teams": ["api", "infra", "data"],
|
|
219
|
-
"personas": {
|
|
220
|
-
"enabled": ["code-reviewer", "security-reviewer", "test-generator", "api-contract-reviewer"]
|
|
221
|
-
}
|
|
222
|
-
},
|
|
223
|
-
"product": {
|
|
224
|
-
"teams": ["web", "mobile", "growth"]
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
Repos registered to a team inherit the group's configuration on top of the org default.
|
|
230
|
-
In the example above, repos in the `platform` group receive the `api-contract-reviewer`
|
|
231
|
-
persona in addition to the org default set; repos in the `product` group receive only
|
|
232
|
-
the org defaults.
|
|
233
|
-
|
|
234
|
-
---
|
|
235
|
-
|
|
236
|
-
### `groups[name].teams`
|
|
237
|
-
|
|
238
|
-
**Type:** `string[]`
|
|
239
|
-
**Required:** Yes within a group definition
|
|
240
|
-
|
|
241
|
-
List of team names that belong to this group. Team names are used to match repos in
|
|
242
|
-
`repos.json` to their group for layered configuration.
|
|
243
|
-
|
|
244
|
-
---
|
|
245
|
-
|
|
246
|
-
### `groups[name].personas`
|
|
247
|
-
|
|
248
|
-
**Type:** `PersonasConfig`
|
|
249
|
-
**Required:** No
|
|
250
|
-
**Default:** Inherits org-level `personas` config
|
|
251
|
-
|
|
252
|
-
Group-level persona configuration. If specified, the group's `enabled` list is **merged
|
|
253
|
-
with** the org-level list — it does not replace it. The group can add personas; it cannot
|
|
254
|
-
remove org-level personas.
|
|
255
|
-
|
|
256
|
-
---
|
|
257
|
-
|
|
258
|
-
### `groups[name].traits`
|
|
259
|
-
|
|
260
|
-
**Type:** `TraitsConfig`
|
|
261
|
-
**Required:** No
|
|
262
|
-
**Default:** Inherits org-level `traits` config
|
|
263
|
-
|
|
264
|
-
Group-level trait configuration. Same merge semantics as `groups[name].personas`.
|
|
265
|
-
|
|
266
|
-
---
|
|
267
|
-
|
|
268
|
-
### `groups[name].extend`
|
|
269
|
-
|
|
270
|
-
**Type:** `string`
|
|
271
|
-
**Required:** No
|
|
272
|
-
**Default:** `null`
|
|
273
|
-
|
|
274
|
-
Path to a directory containing group-level persona extensions. Same format as
|
|
275
|
-
`personas.extend` at the org level.
|
|
276
|
-
|
|
277
|
-
---
|
|
278
|
-
|
|
279
|
-
### `personas`
|
|
280
|
-
|
|
281
|
-
**Type:** `PersonasConfig`
|
|
282
|
-
**Required:** No
|
|
283
|
-
|
|
284
|
-
Org-level persona configuration.
|
|
285
|
-
|
|
286
|
-
---
|
|
287
|
-
|
|
288
|
-
### `personas.enabled`
|
|
289
|
-
|
|
290
|
-
**Type:** `string[]`
|
|
291
|
-
**Required:** No
|
|
292
|
-
**Default:** `["code-reviewer", "security-reviewer", "test-generator", "test-data-expert"]`
|
|
293
|
-
|
|
294
|
-
List of persona IDs to include in the build. IDs must match the directory name under
|
|
295
|
-
`core/personas/` or the ID declared in a persona SKILL.md frontmatter in an extension
|
|
296
|
-
directory.
|
|
297
|
-
|
|
298
|
-
Removing a persona from `enabled` removes it from the build output and from all synced
|
|
299
|
-
repos.
|
|
300
|
-
|
|
301
|
-
```json
|
|
302
|
-
"personas": {
|
|
303
|
-
"enabled": ["code-reviewer", "security-reviewer"]
|
|
304
|
-
}
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
---
|
|
308
|
-
|
|
309
|
-
### `personas.extend`
|
|
310
|
-
|
|
311
|
-
**Type:** `string | null`
|
|
312
|
-
**Required:** No
|
|
313
|
-
**Default:** `null`
|
|
314
|
-
|
|
315
|
-
Path to a directory containing additional persona definitions, relative to
|
|
316
|
-
`agentboot.config.json`. Personas in this directory are added to the build on top of
|
|
317
|
-
the `enabled` list from core. The directory must follow the same structure as
|
|
318
|
-
`core/personas/`: one subdirectory per persona, each containing a `SKILL.md`.
|
|
319
|
-
|
|
320
|
-
```json
|
|
321
|
-
"personas": {
|
|
322
|
-
"enabled": ["code-reviewer", "security-reviewer"],
|
|
323
|
-
"extend": "./personas"
|
|
324
|
-
}
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
---
|
|
328
|
-
|
|
329
|
-
### `traits`
|
|
330
|
-
|
|
331
|
-
**Type:** `TraitsConfig`
|
|
332
|
-
**Required:** No
|
|
333
|
-
|
|
334
|
-
Org-level trait configuration.
|
|
335
|
-
|
|
336
|
-
---
|
|
337
|
-
|
|
338
|
-
### `traits.enabled`
|
|
339
|
-
|
|
340
|
-
**Type:** `string[]`
|
|
341
|
-
**Required:** No
|
|
342
|
-
**Default:** All traits in `core/traits/`
|
|
343
|
-
|
|
344
|
-
List of trait IDs to include in the build. Trait IDs must match the filename (without
|
|
345
|
-
`.md`) under `core/traits/` or in a domain layer's `traits/` directory.
|
|
346
|
-
|
|
347
|
-
You rarely need to set this explicitly. The default includes all core traits. Only set
|
|
348
|
-
this if you want to deliberately exclude a core trait from your org's builds (unusual).
|
|
349
|
-
|
|
350
|
-
---
|
|
351
|
-
|
|
352
|
-
### `sync`
|
|
353
|
-
|
|
354
|
-
**Type:** `SyncConfig`
|
|
355
|
-
**Required:** No
|
|
356
|
-
|
|
357
|
-
Controls how compiled output is distributed to target repos.
|
|
358
|
-
|
|
359
|
-
---
|
|
360
|
-
|
|
361
|
-
### `sync.repos`
|
|
362
|
-
|
|
363
|
-
**Type:** `string | RepoConfig[]`
|
|
364
|
-
**Required:** No
|
|
365
|
-
**Default:** `"./repos.json"`
|
|
366
|
-
|
|
367
|
-
Path to a JSON file containing the list of repos, or an inline array. When a string,
|
|
368
|
-
the path is relative to `agentboot.config.json`. The referenced file (or inline array)
|
|
369
|
-
must be an array of `RepoConfig` objects:
|
|
370
|
-
|
|
371
|
-
```json
|
|
372
|
-
[
|
|
373
|
-
{
|
|
374
|
-
"name": "my-org/my-repo",
|
|
375
|
-
"path": "/absolute/path/to/my-repo",
|
|
376
|
-
"team": "api",
|
|
377
|
-
"group": "platform"
|
|
378
|
-
}
|
|
379
|
-
]
|
|
380
|
-
```
|
|
381
|
-
|
|
382
|
-
`name` is the GitHub repo slug (used in PR titles and sync commit messages). `path` is
|
|
383
|
-
the absolute local filesystem path used in `local` sync mode. `team` and `group` must
|
|
384
|
-
match values declared in the `groups` config. `platform` determines which output format
|
|
385
|
-
the repo receives:
|
|
386
|
-
|
|
387
|
-
```json
|
|
388
|
-
[
|
|
389
|
-
{
|
|
390
|
-
"name": "my-org/my-repo",
|
|
391
|
-
"path": "/absolute/path/to/my-repo",
|
|
392
|
-
"team": "api",
|
|
393
|
-
"group": "platform",
|
|
394
|
-
"platform": "claude-code"
|
|
395
|
-
}
|
|
396
|
-
]
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
Valid `platform` values: `"claude-code"` (default), `"copilot"`, `"cross-platform"`.
|
|
400
|
-
When `output.format` is `"both"`, the sync script uses this field to select the right
|
|
401
|
-
output for each repo.
|
|
402
|
-
|
|
403
|
-
---
|
|
404
|
-
|
|
405
|
-
### `sync.mode`
|
|
406
|
-
|
|
407
|
-
**Type:** `"local" | "github-api"`
|
|
408
|
-
**Required:** No
|
|
409
|
-
**Default:** `"local"`
|
|
410
|
-
|
|
411
|
-
Controls how the sync script delivers compiled output.
|
|
412
|
-
|
|
413
|
-
- `"local"`: Writes files directly to `path` in each repo entry. Fastest for local
|
|
414
|
-
development and CI workflows where you check out the repos.
|
|
415
|
-
- `"github-api"`: Creates a PR in each target repo via the GitHub API without requiring
|
|
416
|
-
a local checkout. Requires a `GITHUB_TOKEN` environment variable with write access to
|
|
417
|
-
all target repos.
|
|
418
|
-
|
|
419
|
-
---
|
|
420
|
-
|
|
421
|
-
### `sync.pr.enabled`
|
|
422
|
-
|
|
423
|
-
**Type:** `boolean`
|
|
424
|
-
**Required:** No
|
|
425
|
-
**Default:** `false`
|
|
426
|
-
|
|
427
|
-
When `true` in `local` mode, the sync script automatically commits the written files
|
|
428
|
-
and opens a PR in each target repo. Requires the local repo to have a clean working
|
|
429
|
-
tree and a configured git identity.
|
|
430
|
-
|
|
431
|
-
---
|
|
432
|
-
|
|
433
|
-
### `sync.pr.branch_prefix`
|
|
434
|
-
|
|
435
|
-
**Type:** `string`
|
|
436
|
-
**Required:** No
|
|
437
|
-
**Default:** `"agentboot/sync-"`
|
|
438
|
-
|
|
439
|
-
Git branch prefix for sync PRs. A timestamp or version suffix is appended automatically.
|
|
440
|
-
Example result: `agentboot/sync-2026-03-17`.
|
|
441
|
-
|
|
442
|
-
---
|
|
443
|
-
|
|
444
|
-
### `sync.pr.title_template`
|
|
445
|
-
|
|
446
|
-
**Type:** `string`
|
|
447
|
-
**Required:** No
|
|
448
|
-
**Default:** `"chore: AgentBoot persona sync {version}"`
|
|
449
|
-
|
|
450
|
-
PR title template. Supported placeholders: `{version}` (the AgentBoot version from
|
|
451
|
-
package.json), `{date}` (ISO date of the sync run), `{org}` (the org identifier).
|
|
452
|
-
|
|
453
|
-
---
|
|
454
|
-
|
|
455
|
-
### `output.dir`
|
|
456
|
-
|
|
457
|
-
**Type:** `string`
|
|
458
|
-
**Required:** No
|
|
459
|
-
**Default:** `".claude"`
|
|
460
|
-
|
|
461
|
-
The subdirectory within each target repo where the sync script writes compiled output.
|
|
462
|
-
Defaults to `.claude`, which is the directory Claude Code reads for always-on
|
|
463
|
-
instructions, personas, and path-scoped instructions.
|
|
464
|
-
|
|
465
|
-
Change this if you want to use AgentBoot with a different AI agent tool that reads
|
|
466
|
-
from a different directory (e.g., `.github/copilot-instructions.md` for GitHub Copilot).
|
|
467
|
-
|
|
468
|
-
---
|
|
469
|
-
|
|
470
|
-
### `output.personas_registry`
|
|
471
|
-
|
|
472
|
-
**Type:** `boolean`
|
|
473
|
-
**Required:** No
|
|
474
|
-
**Default:** `true`
|
|
475
|
-
|
|
476
|
-
When `true`, the build step generates `PERSONAS.md` in the root of the personas repo.
|
|
477
|
-
This file is the human-readable registry of all compiled personas. CI checks that this
|
|
478
|
-
file is up to date on every PR.
|
|
479
|
-
|
|
480
|
-
---
|
|
481
|
-
|
|
482
|
-
### `output.format`
|
|
483
|
-
|
|
484
|
-
**Type:** `"claude-code" | "cross-platform" | "both"`
|
|
485
|
-
**Required:** No
|
|
486
|
-
**Default:** `"both"`
|
|
487
|
-
|
|
488
|
-
Controls which compilation target the build produces.
|
|
489
|
-
|
|
490
|
-
- `"claude-code"`: Generates Claude Code-native output using the full feature surface —
|
|
491
|
-
`.claude/agents/` with rich frontmatter (model, tools, hooks, MCP), `.claude/skills/`
|
|
492
|
-
with `context: fork`, `.claude/rules/` with `paths:` frontmatter, `.claude/traits/` as
|
|
493
|
-
separate files for `@import`, `.claude/CLAUDE.md` using `@imports`, `.claude/settings.json`
|
|
494
|
-
with hook entries, and `.claude/.mcp.json`. This is the optimal output for organizations
|
|
495
|
-
using Claude Code.
|
|
496
|
-
|
|
497
|
-
- `"cross-platform"`: Generates standalone output that works across all agent platforms —
|
|
498
|
-
inlined SKILL.md (agentskills.io format), `copilot-instructions.md`, and a flattened
|
|
499
|
-
`CLAUDE.md`. Traits are baked into each persona file. No @imports, no hooks, no MCP
|
|
500
|
-
config.
|
|
501
|
-
|
|
502
|
-
- `"both"`: Generates both formats. Use this when your organization has repos using
|
|
503
|
-
different agent platforms. The sync script writes the appropriate format per repo
|
|
504
|
-
based on the repo's `platform` field in `repos.json`.
|
|
505
|
-
|
|
506
|
-
---
|
|
507
|
-
|
|
508
|
-
### `output.hooks`
|
|
509
|
-
|
|
510
|
-
**Type:** `boolean`
|
|
511
|
-
**Required:** No
|
|
512
|
-
**Default:** `true`
|
|
513
|
-
|
|
514
|
-
When `true` and output format includes `claude-code`, the build step generates
|
|
515
|
-
`.claude/settings.json` with hook entries from domain layer hook configurations.
|
|
516
|
-
Hooks are merged across scopes (org → group → team) with the same precedence rules
|
|
517
|
-
as other configuration.
|
|
518
|
-
|
|
519
|
-
---
|
|
520
|
-
|
|
521
|
-
### `output.mcp`
|
|
522
|
-
|
|
523
|
-
**Type:** `boolean`
|
|
524
|
-
**Required:** No
|
|
525
|
-
**Default:** `true`
|
|
526
|
-
|
|
527
|
-
When `true` and output format includes `claude-code`, the build step generates
|
|
528
|
-
`.claude/.mcp.json` with MCP server configurations referenced by agent frontmatter.
|
|
529
|
-
|
|
530
|
-
---
|
|
531
|
-
|
|
532
|
-
### `output.managed`
|
|
533
|
-
|
|
534
|
-
**Type:** `boolean`
|
|
535
|
-
**Required:** No
|
|
536
|
-
**Default:** `false`
|
|
537
|
-
|
|
538
|
-
When `true`, the build step generates managed settings artifacts in `dist/managed/`
|
|
539
|
-
for MDM deployment. These are the non-overridable HARD guardrail files:
|
|
540
|
-
- `managed-settings.json` — hooks and permissions that no user can override
|
|
541
|
-
- `managed-mcp.json` — MCP servers that are always active
|
|
542
|
-
- `CLAUDE.md` — instructions that are always prepended
|
|
543
|
-
|
|
544
|
-
Managed settings are deployed to system paths via MDM (JumpCloud, Jamf, Intune), not
|
|
545
|
-
via the sync script. The build generates the artifacts; your MDM pipeline distributes
|
|
546
|
-
them.
|
|
547
|
-
|
|
548
|
-
---
|
|
549
|
-
|
|
550
|
-
### `extend.domains`
|
|
551
|
-
|
|
552
|
-
**Type:** `string[]`
|
|
553
|
-
**Required:** No
|
|
554
|
-
**Default:** `[]`
|
|
555
|
-
|
|
556
|
-
Array of paths to domain layer directories, relative to `agentboot.config.json`.
|
|
557
|
-
Domain layers are applied in order — traits and personas from later domains are merged
|
|
558
|
-
on top of earlier ones. No domain can override a core trait or persona that has been
|
|
559
|
-
marked required.
|
|
560
|
-
|
|
561
|
-
```json
|
|
562
|
-
"extend": {
|
|
563
|
-
"domains": ["./domains/healthcare", "./domains/federal"]
|
|
564
|
-
}
|
|
565
|
-
```
|
|
566
|
-
|
|
567
|
-
---
|
|
568
|
-
|
|
569
|
-
### `extend.instructions`
|
|
570
|
-
|
|
571
|
-
**Type:** `string | null`
|
|
572
|
-
**Required:** No
|
|
573
|
-
**Default:** `null`
|
|
574
|
-
|
|
575
|
-
Path to a Markdown file containing org-level always-on instructions. The content is
|
|
576
|
-
prepended to the generated `CLAUDE.md` in every synced repo, before group, team, and
|
|
577
|
-
path-scoped instructions. Use this for universal rules that must be active in every
|
|
578
|
-
Claude Code session across your entire organization.
|
|
579
|
-
|
|
580
|
-
```json
|
|
581
|
-
"extend": {
|
|
582
|
-
"instructions": "./instructions/org-always-on.md"
|
|
583
|
-
}
|
|
584
|
-
```
|
|
585
|
-
|
|
586
|
-
---
|
|
587
|
-
|
|
588
|
-
## Complete example
|
|
589
|
-
|
|
590
|
-
```jsonc
|
|
591
|
-
{
|
|
592
|
-
"org": "acme-corp",
|
|
593
|
-
"groups": {
|
|
594
|
-
"platform": {
|
|
595
|
-
"teams": ["api", "infra", "data"],
|
|
596
|
-
"personas": {
|
|
597
|
-
"enabled": [
|
|
598
|
-
"code-reviewer",
|
|
599
|
-
"security-reviewer",
|
|
600
|
-
"test-generator",
|
|
601
|
-
"test-data-expert",
|
|
602
|
-
"api-contract-reviewer"
|
|
603
|
-
]
|
|
604
|
-
}
|
|
605
|
-
},
|
|
606
|
-
"product": {
|
|
607
|
-
"teams": ["web", "mobile", "growth"]
|
|
608
|
-
}
|
|
609
|
-
},
|
|
610
|
-
"personas": {
|
|
611
|
-
"enabled": ["code-reviewer", "security-reviewer", "test-generator"],
|
|
612
|
-
"extend": "./personas"
|
|
613
|
-
},
|
|
614
|
-
"traits": {
|
|
615
|
-
"enabled": [
|
|
616
|
-
"critical-thinking",
|
|
617
|
-
"structured-output",
|
|
618
|
-
"source-citation",
|
|
619
|
-
"confidence-signaling",
|
|
620
|
-
"audit-trail"
|
|
621
|
-
]
|
|
622
|
-
},
|
|
623
|
-
"sync": {
|
|
624
|
-
"repos": "./repos.json",
|
|
625
|
-
"mode": "local",
|
|
626
|
-
"pr": {
|
|
627
|
-
"enabled": true,
|
|
628
|
-
"branch_prefix": "agentboot/sync-",
|
|
629
|
-
"title_template": "chore: AgentBoot persona sync {version}"
|
|
630
|
-
}
|
|
631
|
-
},
|
|
632
|
-
"output": {
|
|
633
|
-
"dir": ".claude",
|
|
634
|
-
"format": "both",
|
|
635
|
-
"personas_registry": true,
|
|
636
|
-
"hooks": true,
|
|
637
|
-
"mcp": true,
|
|
638
|
-
"managed": false
|
|
639
|
-
},
|
|
640
|
-
"extend": {
|
|
641
|
-
"domains": ["./domains/fintech-compliance"],
|
|
642
|
-
"instructions": "./instructions/acme-always-on.md"
|
|
643
|
-
}
|
|
644
|
-
}
|
|
645
|
-
```
|