agentboot 0.1.0 → 0.3.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.
Files changed (78) hide show
  1. package/README.md +9 -8
  2. package/agentboot.config.json +4 -1
  3. package/package.json +2 -2
  4. package/scripts/cli.ts +465 -18
  5. package/scripts/compile.ts +724 -75
  6. package/scripts/dev-sync.ts +1 -1
  7. package/scripts/lib/config.ts +259 -1
  8. package/scripts/lib/frontmatter.ts +3 -1
  9. package/scripts/validate.ts +12 -7
  10. package/website/docusaurus.config.ts +117 -0
  11. package/website/package-lock.json +18448 -0
  12. package/website/package.json +47 -0
  13. package/website/sidebars.ts +53 -0
  14. package/website/src/css/custom.css +23 -0
  15. package/website/src/pages/index.module.css +23 -0
  16. package/website/src/pages/index.tsx +125 -0
  17. package/website/static/.nojekyll +0 -0
  18. package/website/static/CNAME +1 -0
  19. package/website/static/img/favicon.ico +0 -0
  20. package/website/static/img/logo.svg +1 -0
  21. package/.github/ISSUE_TEMPLATE/persona-request.md +0 -62
  22. package/.github/ISSUE_TEMPLATE/quality-feedback.md +0 -67
  23. package/.github/workflows/cla.yml +0 -25
  24. package/.github/workflows/validate.yml +0 -49
  25. package/.idea/agentboot.iml +0 -9
  26. package/.idea/misc.xml +0 -6
  27. package/.idea/modules.xml +0 -8
  28. package/.idea/vcs.xml +0 -6
  29. package/CLAUDE.md +0 -230
  30. package/CONTRIBUTING.md +0 -168
  31. package/PERSONAS.md +0 -156
  32. package/core/instructions/baseline.instructions.md +0 -133
  33. package/core/instructions/security.instructions.md +0 -186
  34. package/core/personas/code-reviewer/SKILL.md +0 -175
  35. package/core/personas/security-reviewer/SKILL.md +0 -233
  36. package/core/personas/test-data-expert/SKILL.md +0 -234
  37. package/core/personas/test-generator/SKILL.md +0 -262
  38. package/core/traits/audit-trail.md +0 -182
  39. package/core/traits/confidence-signaling.md +0 -172
  40. package/core/traits/critical-thinking.md +0 -129
  41. package/core/traits/schema-awareness.md +0 -132
  42. package/core/traits/source-citation.md +0 -174
  43. package/core/traits/structured-output.md +0 -199
  44. package/docs/ci-cd-automation.md +0 -548
  45. package/docs/claude-code-reference/README.md +0 -21
  46. package/docs/claude-code-reference/agentboot-coverage.md +0 -484
  47. package/docs/claude-code-reference/feature-inventory.md +0 -906
  48. package/docs/cli-commands-audit.md +0 -112
  49. package/docs/cli-design.md +0 -924
  50. package/docs/concepts.md +0 -1117
  51. package/docs/config-schema-audit.md +0 -121
  52. package/docs/configuration.md +0 -645
  53. package/docs/delivery-methods.md +0 -758
  54. package/docs/developer-onboarding.md +0 -342
  55. package/docs/extending.md +0 -448
  56. package/docs/getting-started.md +0 -298
  57. package/docs/knowledge-layer.md +0 -464
  58. package/docs/marketplace.md +0 -822
  59. package/docs/org-connection.md +0 -570
  60. package/docs/plans/architecture.md +0 -2429
  61. package/docs/plans/design.md +0 -2018
  62. package/docs/plans/prd.md +0 -1862
  63. package/docs/plans/stack-rank.md +0 -261
  64. package/docs/plans/technical-spec.md +0 -2755
  65. package/docs/privacy-and-safety.md +0 -807
  66. package/docs/prompt-optimization.md +0 -1071
  67. package/docs/test-plan.md +0 -972
  68. package/docs/third-party-ecosystem.md +0 -496
  69. package/domains/compliance-template/README.md +0 -173
  70. package/domains/compliance-template/traits/compliance-aware.md +0 -228
  71. package/examples/enterprise/agentboot.config.json +0 -184
  72. package/examples/minimal/agentboot.config.json +0 -46
  73. package/tests/REGRESSION-PLAN.md +0 -705
  74. package/tests/TEST-PLAN.md +0 -111
  75. package/tests/cli.test.ts +0 -705
  76. package/tests/pipeline.test.ts +0 -608
  77. package/tests/validate.test.ts +0 -278
  78. package/tsconfig.json +0 -62
@@ -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
- ```