@bongos/core 1.17.3 → 1.18.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 (95) hide show
  1. package/.bongos-core.json +161 -91
  2. package/.devcontainer/healthcheck.sh +0 -0
  3. package/.devcontainer/init-firewall.sh +0 -0
  4. package/.devcontainer/post-create.sh +0 -0
  5. package/GOVERNANCE.md +1 -1
  6. package/README.md +26 -22
  7. package/bin/bongos.js +0 -0
  8. package/docker-entrypoint.sh +0 -0
  9. package/docs/adr/0139-platform-history-migration-to-cloudbongos.md +94 -0
  10. package/docs/adr/0140-cloudbongos-standalone-reprovision.md +43 -0
  11. package/docs/adr/README.md +3 -0
  12. package/docs/api/openapi.json +4 -345
  13. package/docs/api-reference.md +5 -17
  14. package/docs/file-map.md +7 -25
  15. package/docs/onboarding/diagrams/05-versioning.mmd +4 -6
  16. package/docs/onboarding/diagrams/assertions.json +5 -9
  17. package/modules/hall-ui/public/builders.js +37 -0
  18. package/modules/hall-ui/public/goals-page.js +98 -176
  19. package/modules/hall-ui/public/goals.css +183 -0
  20. package/modules/hall-ui/public/goals.html +35 -261
  21. package/modules/hall-ui/public/goals.js +7 -2
  22. package/modules/hall-ui/public/hall-widgets.js +12 -4
  23. package/modules/hall-ui/public/settings.css +355 -0
  24. package/modules/hall-ui/public/settings.html +86 -414
  25. package/modules/hall-ui/public/settings.js +96 -35
  26. package/modules/hall-ui/public/style.css +31 -0
  27. package/modules/hall-ui/public/watch.css +184 -0
  28. package/modules/hall-ui/public/watch.html +111 -285
  29. package/modules/hall-ui/public/watch.js +59 -21
  30. package/package-lock.json +2 -2
  31. package/package.json +1 -1
  32. package/public-landing/create.html +83 -7
  33. package/public-landing/index.html +11 -76
  34. package/scripts/cron/style_guide_audit.sh +0 -0
  35. package/scripts/gds/api.js +0 -0
  36. package/scripts/gds/architect-audit.js +0 -0
  37. package/scripts/gds/audit-authorship.sh +0 -0
  38. package/scripts/gds/audit-replay.sh +0 -0
  39. package/scripts/gds/box.js +0 -0
  40. package/scripts/gds/capture.js +0 -0
  41. package/scripts/gds/conductor-dispatch.js +0 -0
  42. package/scripts/gds/coreB-carve-proof.sh +0 -0
  43. package/scripts/gds/db-backup-nightly.sh +0 -0
  44. package/scripts/gds/db-backup-offsite.sh +0 -0
  45. package/scripts/gds/doctor.js +0 -0
  46. package/scripts/gds/grade-smoke.js +0 -0
  47. package/scripts/gds/hooks/pre-push.js +0 -0
  48. package/scripts/gds/install-git-hooks.js +0 -0
  49. package/scripts/gds/main-audit.js +0 -0
  50. package/scripts/gds/oauth-secret.js +0 -0
  51. package/scripts/gds/onboarding-analyze.js +0 -0
  52. package/scripts/gds/onboarding-ship.js +0 -0
  53. package/scripts/gds/paste-token.js +0 -0
  54. package/scripts/gds/portability-smoke-art.sh +0 -0
  55. package/scripts/gds/portability-smoke-memory.sh +0 -0
  56. package/scripts/gds/provision.js +125 -4
  57. package/scripts/gds/push-main.js +0 -0
  58. package/scripts/gds/render-ideas.js +0 -0
  59. package/scripts/gds/security-baseline-check.sh +0 -0
  60. package/scripts/gds/session.js +0 -0
  61. package/scripts/gds/ship.js +11 -1
  62. package/scripts/gds/smoke-batch-claim.sh +0 -0
  63. package/scripts/gds/smoke-batch-release.sh +0 -0
  64. package/scripts/gds/smoke-box.sh +0 -0
  65. package/scripts/gds/smoke-claim-consistency.sh +0 -0
  66. package/scripts/gds/smoke-dependencies.sh +0 -0
  67. package/scripts/gds/smoke-write.sh +0 -0
  68. package/scripts/hall-preview/fixtures/access-requests.json +20 -1
  69. package/scripts/hall-preview/fixtures/audit-log.json +68 -1
  70. package/scripts/hall-preview/fixtures/blockers__detail.json +12 -0
  71. package/scripts/hall-preview/fixtures/box__me.json +5 -0
  72. package/scripts/hall-preview/fixtures/boxes__cost-ledger.json +69 -1
  73. package/scripts/hall-preview/fixtures/builders__roster.json +48 -1
  74. package/scripts/hall-preview/fixtures/grades__by-builder.json +32 -1
  75. package/scripts/hall-preview/fixtures/inbox__detail.json +15 -0
  76. package/scripts/hall-preview/fixtures/me__art-key__own.json +6 -0
  77. package/scripts/hall-preview/fixtures/me__event-sound-prefs.json +209 -0
  78. package/scripts/hall-preview/fixtures/me__render.json +5 -0
  79. package/scripts/hall-preview/fixtures/me__skill-prefs.json +143 -0
  80. package/scripts/hall-preview/fixtures/me__sound-prefs.json +67 -0
  81. package/scripts/hall-preview/fixtures/me__wandering.json +43 -0
  82. package/scripts/hall-preview/fixtures/override-requests.json +15 -1
  83. package/scripts/hall-preview/fixtures/security__docs.json +10 -1
  84. package/scripts/hall-preview/fixtures/security__reports.json +31 -1
  85. package/scripts/hall-preview/fixtures/sessions__search.json +9 -1
  86. package/scripts/hall-preview/server.js +18 -1
  87. package/scripts/migrate.sh +0 -0
  88. package/scripts/migrate_cost_ledger.sh +0 -0
  89. package/scripts/render-diagrams.sh +0 -0
  90. package/scripts/security/dep-audit.js +0 -0
  91. package/scripts/setup-builder.js +0 -0
  92. package/scripts/setup-builder.sh +0 -0
  93. package/scripts/snapshots/maybe-render-on-deploy.sh +0 -0
  94. package/src/module-api.js +20 -1
  95. package/tests/provision.mjs +69 -0
@@ -1 +1,20 @@
1
- { "requests": [] }
1
+ {
2
+ "requests": [
3
+ {
4
+ "id": "901",
5
+ "display_name": "Preview Applicant",
6
+ "github_login": "preview-applicant",
7
+ "note": "Synthetic access request for the preview harness.",
8
+ "created_at": "2026-07-08T14:02:00.000Z",
9
+ "status": "pending"
10
+ },
11
+ {
12
+ "id": "902",
13
+ "display_name": null,
14
+ "github_login": "sample-builder",
15
+ "note": null,
16
+ "created_at": "2026-07-09T09:41:00.000Z",
17
+ "status": "pending"
18
+ }
19
+ ]
20
+ }
@@ -1 +1,68 @@
1
- { "rows": [] }
1
+ {
2
+ "rows": [
3
+ {
4
+ "recorded_at": "2026-07-10T18:00:00.000Z",
5
+ "builder_id": "90",
6
+ "surface": "cli",
7
+ "method": "POST",
8
+ "route": "/api/bongos/claims",
9
+ "response_status": 200
10
+ },
11
+ {
12
+ "recorded_at": "2026-07-10T18:01:00.000Z",
13
+ "builder_id": "91",
14
+ "surface": "web",
15
+ "method": "PATCH",
16
+ "route": "/api/bongos/tasks/:id",
17
+ "response_status": 200
18
+ },
19
+ {
20
+ "recorded_at": "2026-07-10T18:02:00.000Z",
21
+ "builder_id": "92",
22
+ "surface": "cli",
23
+ "method": "POST",
24
+ "route": "/api/bongos/goals/:id/join",
25
+ "response_status": 200
26
+ },
27
+ {
28
+ "recorded_at": "2026-07-10T18:03:00.000Z",
29
+ "builder_id": "90",
30
+ "surface": "web",
31
+ "method": "DELETE",
32
+ "route": "/api/bongos/me/sound-prefs",
33
+ "response_status": 200
34
+ },
35
+ {
36
+ "recorded_at": "2026-07-10T18:04:00.000Z",
37
+ "builder_id": "91",
38
+ "surface": "cli",
39
+ "method": "POST",
40
+ "route": "/api/bongos/claims",
41
+ "response_status": 200
42
+ },
43
+ {
44
+ "recorded_at": "2026-07-10T18:05:00.000Z",
45
+ "builder_id": "92",
46
+ "surface": "web",
47
+ "method": "PATCH",
48
+ "route": "/api/bongos/tasks/:id",
49
+ "response_status": 403
50
+ },
51
+ {
52
+ "recorded_at": "2026-07-10T18:06:00.000Z",
53
+ "builder_id": "90",
54
+ "surface": "cli",
55
+ "method": "POST",
56
+ "route": "/api/bongos/goals/:id/join",
57
+ "response_status": 200
58
+ },
59
+ {
60
+ "recorded_at": "2026-07-10T18:07:00.000Z",
61
+ "builder_id": "91",
62
+ "surface": "web",
63
+ "method": "DELETE",
64
+ "route": "/api/bongos/me/sound-prefs",
65
+ "response_status": 200
66
+ }
67
+ ]
68
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "blocker": {
3
+ "id": "1",
4
+ "title": "Preview-harness blocker record — serves any #/blocker/N deep-link",
5
+ "body_md": "Synthetic record for the shared deep-link overlay (task-detail.js). One fixture serves every id via the blockers/\\d+ fallback.",
6
+ "status": "open",
7
+ "created_at": "2026-07-01T12:00:00.000Z",
8
+ "source": "manual",
9
+ "source_ref": null,
10
+ "blocking_task_ids": []
11
+ }
12
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "box": { "state": "none" },
3
+ "open_intent": null,
4
+ "cost": null
5
+ }
@@ -1 +1,69 @@
1
- { "totals_by_builder": [], "ledger": [] }
1
+ {
2
+ "totals_by_builder": [
3
+ {
4
+ "builder_id": "90",
5
+ "builder_login": "preview-alpha",
6
+ "total_usd": 12.4
7
+ },
8
+ {
9
+ "builder_id": "91",
10
+ "builder_login": "preview-beta",
11
+ "total_usd": 7.15
12
+ },
13
+ {
14
+ "builder_id": "92",
15
+ "builder_login": "preview-gamma",
16
+ "total_usd": 2.5
17
+ }
18
+ ],
19
+ "ledger": [
20
+ {
21
+ "recorded_at": "2026-07-10T17:50:00.000Z",
22
+ "builder_id": "90",
23
+ "builder_login": "preview-alpha",
24
+ "source": "box-compute",
25
+ "amount_usd": 0.42,
26
+ "description": "Synthetic ledger row for the preview harness"
27
+ },
28
+ {
29
+ "recorded_at": "2026-07-10T17:43:00.000Z",
30
+ "builder_id": "91",
31
+ "builder_login": "preview-beta",
32
+ "source": "box-storage",
33
+ "amount_usd": 0.08,
34
+ "description": "Synthetic ledger row for the preview harness"
35
+ },
36
+ {
37
+ "recorded_at": "2026-07-10T17:36:00.000Z",
38
+ "builder_id": "92",
39
+ "builder_login": "preview-gamma",
40
+ "source": "box-spinup",
41
+ "amount_usd": 1.2,
42
+ "description": "Synthetic ledger row for the preview harness"
43
+ },
44
+ {
45
+ "recorded_at": "2026-07-10T17:29:00.000Z",
46
+ "builder_id": "90",
47
+ "builder_login": "preview-alpha",
48
+ "source": "box-compute",
49
+ "amount_usd": 0.42,
50
+ "description": "Synthetic ledger row for the preview harness"
51
+ },
52
+ {
53
+ "recorded_at": "2026-07-10T17:22:00.000Z",
54
+ "builder_id": "91",
55
+ "builder_login": "preview-beta",
56
+ "source": "box-storage",
57
+ "amount_usd": 0.08,
58
+ "description": "Synthetic ledger row for the preview harness"
59
+ },
60
+ {
61
+ "recorded_at": "2026-07-10T17:15:00.000Z",
62
+ "builder_id": "92",
63
+ "builder_login": "preview-gamma",
64
+ "source": "box-spinup",
65
+ "amount_usd": 1.2,
66
+ "description": "Synthetic ledger row for the preview harness"
67
+ }
68
+ ]
69
+ }
@@ -1 +1,48 @@
1
- { "builders": [] }
1
+ {
2
+ "builders": [
3
+ {
4
+ "id": "90",
5
+ "display_name": "Preview Alpha",
6
+ "github_login": "preview-alpha",
7
+ "rank": "archon",
8
+ "total_credits": 9200,
9
+ "karma": 4,
10
+ "active_claim_count": 1,
11
+ "stale_claim": false,
12
+ "status": "active"
13
+ },
14
+ {
15
+ "id": "91",
16
+ "display_name": "Preview Beta",
17
+ "github_login": "preview-beta",
18
+ "rank": "metic",
19
+ "total_credits": 5100,
20
+ "karma": 2,
21
+ "active_claim_count": 2,
22
+ "stale_claim": true,
23
+ "status": "active"
24
+ },
25
+ {
26
+ "id": "92",
27
+ "display_name": "Preview Gamma",
28
+ "github_login": "preview-gamma",
29
+ "rank": "thetes",
30
+ "total_credits": 830,
31
+ "karma": 1,
32
+ "active_claim_count": 0,
33
+ "stale_claim": false,
34
+ "status": "active"
35
+ },
36
+ {
37
+ "id": "93",
38
+ "display_name": "Preview Delta",
39
+ "github_login": "preview-delta",
40
+ "rank": "xenos",
41
+ "total_credits": 40,
42
+ "karma": 0,
43
+ "active_claim_count": 0,
44
+ "stale_claim": false,
45
+ "status": "inactive"
46
+ }
47
+ ]
48
+ }
@@ -1 +1,32 @@
1
- { "builders": [] }
1
+ {
2
+ "window_days": 30,
3
+ "builders": [
4
+ {
5
+ "builder_id": "90",
6
+ "display_name": "Preview Alpha",
7
+ "github_login": "preview-alpha",
8
+ "n": 14,
9
+ "avg_score": "8.6",
10
+ "pass_rate": 0.93,
11
+ "last_graded_at": "2026-07-10T11:00:00.000Z"
12
+ },
13
+ {
14
+ "builder_id": "91",
15
+ "display_name": "Preview Beta",
16
+ "github_login": "preview-beta",
17
+ "n": 9,
18
+ "avg_score": "7.9",
19
+ "pass_rate": 0.78,
20
+ "last_graded_at": "2026-07-09T16:20:00.000Z"
21
+ },
22
+ {
23
+ "builder_id": "92",
24
+ "display_name": "Preview Gamma",
25
+ "github_login": "preview-gamma",
26
+ "n": 4,
27
+ "avg_score": "9.1",
28
+ "pass_rate": 1.0,
29
+ "last_graded_at": "2026-07-08T08:05:00.000Z"
30
+ }
31
+ ]
32
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "idea": {
3
+ "id": "1",
4
+ "title": "Preview-harness idea record — serves any #/idea/N deep-link",
5
+ "body_md": "Synthetic record for the shared deep-link overlay (task-detail.js). One fixture serves every id via the inbox/\\d+ fallback.",
6
+ "kind": "feature",
7
+ "suggested_version": "BONGOS-V1",
8
+ "suggested_priority": null,
9
+ "captured_at": "2026-07-01T12:00:00.000Z",
10
+ "captured_by": "1",
11
+ "status": "open",
12
+ "promoted_to_task_id": null,
13
+ "reviewed_at": null
14
+ }
15
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "set": false,
3
+ "last4": null,
4
+ "set_at": null,
5
+ "storage_configured": true
6
+ }
@@ -0,0 +1,209 @@
1
+ {
2
+ "prefs": {},
3
+ "effective": [
4
+ {
5
+ "event": "user-input",
6
+ "label": "Awaiting Thy Counsel",
7
+ "desc": "Claude has paused and needs thy response",
8
+ "variants": [
9
+ {
10
+ "id": "lyre-pluck",
11
+ "label": "Lyre Pluck",
12
+ "wav": "alert",
13
+ "is_default": true
14
+ },
15
+ {
16
+ "id": "chime-soft",
17
+ "label": "Chime Soft",
18
+ "wav": "chime",
19
+ "is_default": false
20
+ }
21
+ ],
22
+ "selected": "lyre-pluck",
23
+ "wav": "alert"
24
+ },
25
+ {
26
+ "event": "task-shipped",
27
+ "label": "Task Shipped",
28
+ "desc": "A task has been confirmed and merged",
29
+ "variants": [
30
+ {
31
+ "id": "bronze-fanfare",
32
+ "label": "Bronze Fanfare",
33
+ "wav": "ship",
34
+ "is_default": true
35
+ },
36
+ {
37
+ "id": "triumph-call",
38
+ "label": "Triumph Call",
39
+ "wav": "triumph",
40
+ "is_default": false
41
+ }
42
+ ],
43
+ "selected": "bronze-fanfare",
44
+ "wav": "ship"
45
+ },
46
+ {
47
+ "event": "credits-awarded",
48
+ "label": "Drachmae Awarded",
49
+ "desc": "Drachmae have been credited to thy treasury",
50
+ "variants": [
51
+ {
52
+ "id": "coin-clink",
53
+ "label": "Coin Clink",
54
+ "wav": "chime",
55
+ "is_default": true
56
+ },
57
+ {
58
+ "id": "herald-short",
59
+ "label": "Herald Short",
60
+ "wav": "alert",
61
+ "is_default": false
62
+ }
63
+ ],
64
+ "selected": "coin-clink",
65
+ "wav": "chime"
66
+ },
67
+ {
68
+ "event": "rank-promoted",
69
+ "label": "Rank Promotion",
70
+ "desc": "Thou hast advanced to a new rank",
71
+ "variants": [
72
+ {
73
+ "id": "herald-call",
74
+ "label": "Herald Call",
75
+ "wav": "fanfare",
76
+ "is_default": true
77
+ },
78
+ {
79
+ "id": "grand-fanfare",
80
+ "label": "Grand Fanfare",
81
+ "wav": "triumph",
82
+ "is_default": false
83
+ }
84
+ ],
85
+ "selected": "herald-call",
86
+ "wav": "fanfare"
87
+ },
88
+ {
89
+ "event": "achievement",
90
+ "label": "Achievement Unlocked",
91
+ "desc": "A badge or milestone has been earned",
92
+ "variants": [
93
+ {
94
+ "id": "harp-flourish",
95
+ "label": "Harp Flourish",
96
+ "wav": "triumph",
97
+ "is_default": true
98
+ },
99
+ {
100
+ "id": "brass-flourish",
101
+ "label": "Brass Flourish",
102
+ "wav": "fanfare",
103
+ "is_default": false
104
+ }
105
+ ],
106
+ "selected": "harp-flourish",
107
+ "wav": "triumph"
108
+ }
109
+ ],
110
+ "effective_wav": {
111
+ "user-input": "alert",
112
+ "task-shipped": "ship",
113
+ "credits-awarded": "chime",
114
+ "rank-promoted": "fanfare",
115
+ "achievement": "triumph"
116
+ },
117
+ "events": [
118
+ {
119
+ "id": "user-input",
120
+ "label": "Awaiting Thy Counsel",
121
+ "desc": "Claude has paused and needs thy response",
122
+ "variants": [
123
+ {
124
+ "id": "lyre-pluck",
125
+ "label": "Lyre Pluck",
126
+ "wav": "alert",
127
+ "isDefault": true
128
+ },
129
+ {
130
+ "id": "chime-soft",
131
+ "label": "Chime Soft",
132
+ "wav": "chime"
133
+ }
134
+ ]
135
+ },
136
+ {
137
+ "id": "task-shipped",
138
+ "label": "Task Shipped",
139
+ "desc": "A task has been confirmed and merged",
140
+ "variants": [
141
+ {
142
+ "id": "bronze-fanfare",
143
+ "label": "Bronze Fanfare",
144
+ "wav": "ship",
145
+ "isDefault": true
146
+ },
147
+ {
148
+ "id": "triumph-call",
149
+ "label": "Triumph Call",
150
+ "wav": "triumph"
151
+ }
152
+ ]
153
+ },
154
+ {
155
+ "id": "credits-awarded",
156
+ "label": "Drachmae Awarded",
157
+ "desc": "Drachmae have been credited to thy treasury",
158
+ "variants": [
159
+ {
160
+ "id": "coin-clink",
161
+ "label": "Coin Clink",
162
+ "wav": "chime",
163
+ "isDefault": true
164
+ },
165
+ {
166
+ "id": "herald-short",
167
+ "label": "Herald Short",
168
+ "wav": "alert"
169
+ }
170
+ ]
171
+ },
172
+ {
173
+ "id": "rank-promoted",
174
+ "label": "Rank Promotion",
175
+ "desc": "Thou hast advanced to a new rank",
176
+ "variants": [
177
+ {
178
+ "id": "herald-call",
179
+ "label": "Herald Call",
180
+ "wav": "fanfare",
181
+ "isDefault": true
182
+ },
183
+ {
184
+ "id": "grand-fanfare",
185
+ "label": "Grand Fanfare",
186
+ "wav": "triumph"
187
+ }
188
+ ]
189
+ },
190
+ {
191
+ "id": "achievement",
192
+ "label": "Achievement Unlocked",
193
+ "desc": "A badge or milestone has been earned",
194
+ "variants": [
195
+ {
196
+ "id": "harp-flourish",
197
+ "label": "Harp Flourish",
198
+ "wav": "triumph",
199
+ "isDefault": true
200
+ },
201
+ {
202
+ "id": "brass-flourish",
203
+ "label": "Brass Flourish",
204
+ "wav": "fanfare"
205
+ }
206
+ ]
207
+ }
208
+ ]
209
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "widgets_enabled": false,
3
+ "default_enabled": true,
4
+ "override": false
5
+ }
@@ -0,0 +1,143 @@
1
+ {
2
+ "prefs": {},
3
+ "effective": [
4
+ {
5
+ "skill": "builder-start",
6
+ "default_model": "script",
7
+ "override_model": null,
8
+ "effective_model": "script"
9
+ },
10
+ {
11
+ "skill": "builder-claim",
12
+ "default_model": "script",
13
+ "override_model": null,
14
+ "effective_model": "script"
15
+ },
16
+ {
17
+ "skill": "builder-ship",
18
+ "default_model": "sonnet",
19
+ "override_model": null,
20
+ "effective_model": "sonnet"
21
+ },
22
+ {
23
+ "skill": "builder-release",
24
+ "default_model": "script",
25
+ "override_model": null,
26
+ "effective_model": "script"
27
+ },
28
+ {
29
+ "skill": "builder-exit",
30
+ "default_model": "script",
31
+ "override_model": null,
32
+ "effective_model": "script"
33
+ },
34
+ {
35
+ "skill": "builder-cost",
36
+ "default_model": "script",
37
+ "override_model": null,
38
+ "effective_model": "script"
39
+ },
40
+ {
41
+ "skill": "idea-triage",
42
+ "default_model": "opus",
43
+ "override_model": null,
44
+ "effective_model": "opus"
45
+ },
46
+ {
47
+ "skill": "blocker-review",
48
+ "default_model": "opus",
49
+ "override_model": null,
50
+ "effective_model": "opus"
51
+ },
52
+ {
53
+ "skill": "merge-mode",
54
+ "default_model": "opus",
55
+ "override_model": null,
56
+ "effective_model": "opus"
57
+ },
58
+ {
59
+ "skill": "planning-session",
60
+ "default_model": "opus",
61
+ "override_model": null,
62
+ "effective_model": "opus"
63
+ },
64
+ {
65
+ "skill": "priority-session",
66
+ "default_model": "opus",
67
+ "override_model": null,
68
+ "effective_model": "opus"
69
+ },
70
+ {
71
+ "skill": "builder-setup",
72
+ "default_model": "sonnet",
73
+ "override_model": null,
74
+ "effective_model": "sonnet"
75
+ },
76
+ {
77
+ "skill": "otb-tile-generate",
78
+ "default_model": "sonnet",
79
+ "override_model": null,
80
+ "effective_model": "sonnet"
81
+ },
82
+ {
83
+ "skill": "otb-design-review",
84
+ "default_model": "sonnet",
85
+ "override_model": null,
86
+ "effective_model": "sonnet"
87
+ },
88
+ {
89
+ "skill": "otb-feedback-capture",
90
+ "default_model": "sonnet",
91
+ "override_model": null,
92
+ "effective_model": "sonnet"
93
+ },
94
+ {
95
+ "skill": "otb-figma-sync",
96
+ "default_model": "script",
97
+ "override_model": null,
98
+ "effective_model": "script"
99
+ }
100
+ ],
101
+ "defaults": {
102
+ "builder-start": "script",
103
+ "builder-claim": "script",
104
+ "builder-release": "script",
105
+ "builder-exit": "script",
106
+ "builder-cost": "script",
107
+ "otb-figma-sync": "script",
108
+ "builder-ship": "sonnet",
109
+ "idea-triage": "opus",
110
+ "blocker-review": "opus",
111
+ "merge-mode": "opus",
112
+ "planning-session": "opus",
113
+ "priority-session": "opus",
114
+ "builder-setup": "sonnet",
115
+ "otb-tile-generate": "sonnet",
116
+ "otb-design-review": "sonnet",
117
+ "otb-feedback-capture": "sonnet"
118
+ },
119
+ "known_skills": [
120
+ "builder-start",
121
+ "builder-claim",
122
+ "builder-ship",
123
+ "builder-release",
124
+ "builder-exit",
125
+ "builder-cost",
126
+ "idea-triage",
127
+ "blocker-review",
128
+ "merge-mode",
129
+ "planning-session",
130
+ "priority-session",
131
+ "builder-setup",
132
+ "otb-tile-generate",
133
+ "otb-design-review",
134
+ "otb-feedback-capture",
135
+ "otb-figma-sync"
136
+ ],
137
+ "allowed_models": [
138
+ "opus",
139
+ "sonnet",
140
+ "haiku",
141
+ "script"
142
+ ]
143
+ }