@bongos/core 1.20.9 → 1.20.11

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 (91) hide show
  1. package/.bongos-core.json +101 -96
  2. package/.claude/skills/ask-for-help/SKILL.md +6 -0
  3. package/.claude/skills/backlog-review/SKILL.md +6 -0
  4. package/.claude/skills/blocker-review/SKILL.md +6 -0
  5. package/.claude/skills/blocker-solve/SKILL.md +6 -0
  6. package/.claude/skills/bug-triage/SKILL.md +6 -0
  7. package/.claude/skills/builder-backup/SKILL.md +6 -0
  8. package/.claude/skills/builder-claim/SKILL.md +6 -0
  9. package/.claude/skills/builder-cost/SKILL.md +6 -0
  10. package/.claude/skills/builder-end/SKILL.md +6 -0
  11. package/.claude/skills/builder-exit/SKILL.md +6 -0
  12. package/.claude/skills/builder-key/SKILL.md +6 -0
  13. package/.claude/skills/builder-reauth/SKILL.md +6 -0
  14. package/.claude/skills/builder-redteam/SKILL.md +6 -0
  15. package/.claude/skills/builder-release/SKILL.md +6 -0
  16. package/.claude/skills/builder-sequence/SKILL.md +6 -0
  17. package/.claude/skills/builder-setup/SKILL.md +6 -0
  18. package/.claude/skills/builder-ship/SKILL.md +6 -0
  19. package/.claude/skills/builder-stage/SKILL.md +6 -0
  20. package/.claude/skills/builder-start/SKILL.md +6 -0
  21. package/.claude/skills/collab-review/SKILL.md +6 -0
  22. package/.claude/skills/design/SKILL.md +6 -0
  23. package/.claude/skills/design-sync/SKILL.md +6 -0
  24. package/.claude/skills/feedback/SKILL.md +6 -0
  25. package/.claude/skills/figma-design-sync/SKILL.md +6 -0
  26. package/.claude/skills/fix-task/SKILL.md +6 -0
  27. package/.claude/skills/goal-create/SKILL.md +6 -0
  28. package/.claude/skills/goal-review/SKILL.md +6 -0
  29. package/.claude/skills/goal-uat/SKILL.md +6 -0
  30. package/.claude/skills/grade-audit/SKILL.md +6 -0
  31. package/.claude/skills/grade-recover/SKILL.md +6 -0
  32. package/.claude/skills/grader-health/SKILL.md +6 -0
  33. package/.claude/skills/idea-triage/SKILL.md +6 -0
  34. package/.claude/skills/merge-mode/SKILL.md +6 -0
  35. package/.claude/skills/new-project/SKILL.md +6 -0
  36. package/.claude/skills/otb-character-review/SKILL.md +6 -0
  37. package/.claude/skills/otb-design-review/SKILL.md +6 -0
  38. package/.claude/skills/otb-feedback-capture/SKILL.md +6 -0
  39. package/.claude/skills/otb-figma-sync/SKILL.md +6 -0
  40. package/.claude/skills/otb-tile-generate/SKILL.md +6 -0
  41. package/.claude/skills/planning-session/SKILL.md +6 -0
  42. package/.claude/skills/priority-session/SKILL.md +6 -0
  43. package/.claude/skills/read-session-export/SKILL.md +6 -0
  44. package/.claude/skills/recall/SKILL.md +6 -0
  45. package/.claude/skills/scan-before-install/SKILL.md +6 -0
  46. package/.claude/skills/session-handoff/SKILL.md +6 -0
  47. package/.claude/skills/ship-check/SKILL.md +6 -0
  48. package/.claude/skills/status/SKILL.md +6 -0
  49. package/.claude/skills/strand-fix/SKILL.md +6 -0
  50. package/.claude/skills/tweak/SKILL.md +6 -0
  51. package/.claude/skills/worktree-clean/SKILL.md +6 -0
  52. package/clients/bongos-client/README.md +1 -1
  53. package/clients/bongos-client/bongos-client.global.js +2 -0
  54. package/clients/bongos-client/index.cjs +2 -0
  55. package/clients/bongos-client/index.d.ts +3 -0
  56. package/clients/bongos-client/index.mjs +2 -0
  57. package/docs/api/openapi.json +50 -3
  58. package/docs/api-reference.md +3 -2
  59. package/docs/copy-inventory.md +60 -52
  60. package/docs/copy-registry.json +126 -54
  61. package/docs/module-api-changelog.md +4 -0
  62. package/docs/page-inventory.json +2 -1
  63. package/docs/page-readings.json +131 -119
  64. package/modules/hall-ui/public/panel.css +4 -4
  65. package/modules/hall-ui/public/settings-specialities.js +139 -2
  66. package/modules/hall-ui/public/settings.css +26 -0
  67. package/modules/hall-ui/public/settings.html +4 -0
  68. package/modules/hall-ui/public/settings.states.json +1 -0
  69. package/modules/hall-ui/records/panel-family.md +2 -0
  70. package/modules/specialities/routes/specialities.js +16 -0
  71. package/modules/ui-design/skills/brandkit/SKILL.md +6 -0
  72. package/modules/ui-design/skills/design-taste-frontend/SKILL.md +6 -0
  73. package/modules/ui-design/skills/design-taste-frontend-v1/SKILL.md +6 -0
  74. package/modules/ui-design/skills/gpt-taste/SKILL.md +6 -0
  75. package/modules/ui-design/skills/high-end-visual-design/SKILL.md +6 -0
  76. package/modules/ui-design/skills/image-to-code/SKILL.md +6 -0
  77. package/modules/ui-design/skills/imagegen-frontend-mobile/SKILL.md +6 -0
  78. package/modules/ui-design/skills/imagegen-frontend-web/SKILL.md +6 -0
  79. package/modules/ui-design/skills/impeccable/SKILL.md +6 -0
  80. package/modules/ui-design/skills/industrial-brutalist-ui/SKILL.md +6 -0
  81. package/modules/ui-design/skills/minimalist-ui/SKILL.md +6 -0
  82. package/modules/ui-design/skills/redesign-existing-projects/SKILL.md +6 -0
  83. package/modules/ui-design/skills/stitch-design-taste/SKILL.md +6 -0
  84. package/modules/ui-design/skills/style/SKILL.md +6 -0
  85. package/package-lock.json +2 -2
  86. package/package.json +1 -1
  87. package/release-notes.json +12 -0
  88. package/scripts/hall-preview/server.js +4 -0
  89. package/src/module-api.js +1 -1
  90. package/tests/speciality_offer_ui.mjs +185 -0
  91. package/tests/speciality_skills.mjs +51 -0
@@ -2,6 +2,12 @@
2
2
  name: scan-before-install
3
3
  description: >-
4
4
  Vet a third-party GitHub repo or Claude plugin BEFORE installing: quarantined fetch, deterministic floor, subagent panel over a scrubbed mirror, arithmetic verdict, evidence-gated landings. The scanner never installs. Triggers: "/scan-before-install", "is this plugin safe to install", "vet this GitHub repo".
5
+ plain: >-
6
+ Checks an outside add-on or code project for safety problems before you install it.
7
+ reach-for: >-
8
+ Before adding anything to the project that someone else wrote.
9
+ cost: >-
10
+ Uses your session, more than most because several reviewers read the code. It never installs anything itself.
5
11
  ---
6
12
 
7
13
  You are scanning a third-party artifact someone wants to install. The engine lives in `modules/security/artifact-scan/` — this skill is the orchestration wrapper: it runs the pipeline, spawns the panel, and lands one of three offers. Every load-bearing decision below is an owner decision; do not soften any of them.
@@ -2,6 +2,12 @@
2
2
  name: session-handoff
3
3
  description: >-
4
4
  Emit a paste-ready next-steps prompt so a FRESH session starts with curated context. Read-only. Triggers: "/session-handoff", "hand off to a fresh session", "give me a handoff prompt", "wrap up context for next time", "write the next-steps prompt", "I want to continue this in a new session", "context is getting heavy, prep a fresh start".
5
+ plain: >-
6
+ Writes a ready-to-paste note so a fresh conversation can pick up exactly where this one left off.
7
+ reach-for: >-
8
+ When this conversation is getting long and you want to continue in a new one.
9
+ cost: >-
10
+ Free, and it changes nothing. It only writes the note for you to copy.
5
11
  ---
6
12
 
7
13
  You are producing a **handoff prompt**: a single, self-contained block of text the builder will **copy and paste as the first message of a brand-new session** to continue this work with a clean, light context.
@@ -2,6 +2,12 @@
2
2
  name: ship-check
3
3
  description: >-
4
4
  Run every freshness and fitness check ship.js will run, and get the healing command for each stale file. Triggers: "/ship-check", "am I ready to ship", "what will ship trip on", "check before I ship", "is anything stale".
5
+ plain: >-
6
+ Runs the same checks a hand-in will run, and tells you how to fix anything that would fail.
7
+ reach-for: >-
8
+ Before handing in work, to avoid a failed attempt.
9
+ cost: >-
10
+ Free. It only checks; fixing is up to you.
5
11
  ---
6
12
 
7
13
  # /ship-check — the pre-ship table
@@ -2,6 +2,12 @@
2
2
  name: status
3
3
  description: >-
4
4
  Roll up a version or criterion in one call — its gating tasks, their live statuses, and what is blocking. Read-only. Answers "what's the status of X" and "what's left for criterion Cn". Triggers: "/status", "what's left for C8", "status of GDS-V3", "how far along is the memory criterion", "what tasks remain to complete X".
5
+ plain: >-
6
+ Shows how far along a version or goal is: what is finished, what is left, and what is holding it up.
7
+ reach-for: >-
8
+ When you want to know how much is left before something is done.
9
+ cost: >-
10
+ Free, and it changes nothing. It only reads.
5
11
  ---
6
12
 
7
13
  You are answering a project-status question. Before this skill existed, doing so meant ~10 sequential Bongos calls (grep the seed file for which tasks map to a criterion, eyeball a "Gates R55–R63" sentence, then re-query each task's status). The structured criterion↔task link (`task_criteria`, migration 055) + the `/status` CLI collapse that to one call. See ADR 0025 and task #435.
@@ -3,6 +3,12 @@ name: strand-fix
3
3
  description: >-
4
4
  Land ONE stranded ship — a task parked at confirmed that the reconciler gave up on. Also the fix for a claim refused 409 REBASE_REQUIRED. Triggers: "/strand-fix N", "task N is stranded", "land the strand", "my claim says REBASE_REQUIRED".
5
5
  requires: [gh]
6
+ plain: >-
7
+ Rescues one piece of approved work that got stuck on its way into the project, and gets it merged.
8
+ reach-for: >-
9
+ When work is approved but never reached the live code, or a task refuses to start because older work is stuck.
10
+ cost: >-
11
+ Uses your session. It gets the stuck work merged into the live code.
6
12
  ---
7
13
 
8
14
  You are landing one stranded task. The reconciler is not coming back for it — a strand produces no signal of its own, so nothing happens until someone walks it.
@@ -2,6 +2,12 @@
2
2
  name: tweak
3
3
  description: >-
4
4
  Apply the next submitted page tweak: claim the round, apply every line, render the page before and after, attach the renders and ship it to wait for the artist. Metic+. Triggers: "/tweak", "apply the next page tweak", "work the tweak queue".
5
+ plain: >-
6
+ Applies the next set of change requests someone made to a page, and shows before and after pictures for the artist to approve.
7
+ reach-for: >-
8
+ When page change requests are waiting to be done.
9
+ cost: >-
10
+ Handing it in runs a paid quality review, usually a few dollars charged to the project. The change waits for the artist's approval.
5
11
  ---
6
12
 
7
13
  You are applying ONE page an artist rewrote in the studio (Tweak Mode, ADR 0341). The artist wrote the words; your job is to transcribe them faithfully, show the artist the result, and park it. **You never land it.** The artist approves the applied page first (ADR 0341 D7), and nothing here arms a merge.
@@ -2,6 +2,12 @@
2
2
  name: worktree-clean
3
3
  description: >-
4
4
  Remove per-claim worktrees whose work landed, and sweep the husks a locked remove leaves, via junction-safe worktree.js — never raw git worktree remove, which follows the node_modules junction. Triggers: "/worktree-clean", "prune stale worktrees", "worktree husks".
5
+ plain: >-
6
+ Tidies away old workspace folders on your computer whose work has already been merged.
7
+ reach-for: >-
8
+ When your computer is collecting old workspaces.
9
+ cost: >-
10
+ Free. It deletes only workspaces whose work is already safe in the project.
5
11
  ---
6
12
 
7
13
  **Script skill (authoritative).** Two scripts do the work; this skill only sequences them and shows the list before anything is removed.
@@ -5,7 +5,7 @@ A **generated**, zero-dependency typed client for the Bongos API — produced fr
5
5
  by hand; it regenerates when the spec changes, so it can never drift from the routes.
6
6
 
7
7
  - API version: **v1** (served at `/api/bongos/v1`)
8
- - 460 operations across 70 resource groups
8
+ - 461 operations across 70 resource groups
9
9
 
10
10
  ## Use it from your project
11
11
 
@@ -997,6 +997,8 @@ function createClient(opts = {}) {
997
997
  putSpecialitiesIdSkills: (args) => request("PUT", "/specialities/{id}/skills", { hasBody: true }, args),
998
998
  // POST /specialities/{id}/unoffer — rank: metic+archon — POST /specialities/:id/unoffer
999
999
  postSpecialitiesIdUnoffer: (args) => request("POST", "/specialities/{id}/unoffer", { hasBody: true }, args),
1000
+ // GET /specialities/installed-skills — rank: any-builder — GET /specialities/installed-skills
1001
+ getSpecialitiesInstalledSkills: (args) => request("GET", "/specialities/installed-skills", { hasBody: false }, args),
1000
1002
  // GET /specialities/offered — rank: any-builder — GET /specialities/offered
1001
1003
  getSpecialitiesOffered: (args) => request("GET", "/specialities/offered", { hasBody: false }, args),
1002
1004
  },
@@ -996,6 +996,8 @@ function createClient(opts = {}) {
996
996
  putSpecialitiesIdSkills: (args) => request("PUT", "/specialities/{id}/skills", { hasBody: true }, args),
997
997
  // POST /specialities/{id}/unoffer — rank: metic+archon — POST /specialities/:id/unoffer
998
998
  postSpecialitiesIdUnoffer: (args) => request("POST", "/specialities/{id}/unoffer", { hasBody: true }, args),
999
+ // GET /specialities/installed-skills — rank: any-builder — GET /specialities/installed-skills
1000
+ getSpecialitiesInstalledSkills: (args) => request("GET", "/specialities/installed-skills", { hasBody: false }, args),
999
1001
  // GET /specialities/offered — rank: any-builder — GET /specialities/offered
1000
1002
  getSpecialitiesOffered: (args) => request("GET", "/specialities/offered", { hasBody: false }, args),
1001
1003
  },
@@ -158,6 +158,7 @@ export interface GetSoftwareUpdateResponse { ok: boolean; update: unknown; door:
158
158
  export interface GetSpecialitiesIdDocumentsResponse { documents: unknown }
159
159
  export interface GetSpecialitiesIdResponse { speciality: unknown }
160
160
  export interface GetSpecialitiesIdSkillsResponse { speciality: unknown; adopted: boolean; enabled: unknown; skills: unknown }
161
+ export interface GetSpecialitiesInstalledSkillsResponse { skills: unknown }
161
162
  export interface GetSpecialitiesOfferedResponse { suggestions: unknown }
162
163
  export interface GetSpecialitiesResponse { specialities: unknown }
163
164
  export interface GetSsoPubkeyResponse { alg: unknown; format: unknown; public_key_b64: unknown }
@@ -1422,6 +1423,8 @@ export interface BongosClient {
1422
1423
  putSpecialitiesIdSkills(args: RequestArgs & { body: PutSpecialitiesIdSkillsRequest }): Promise<PutSpecialitiesIdSkillsResponse>;
1423
1424
  /** POST /specialities/{id}/unoffer — rank: metic+archon */
1424
1425
  postSpecialitiesIdUnoffer(args?: RequestArgs): Promise<PostSpecialitiesIdUnofferResponse>;
1426
+ /** GET /specialities/installed-skills — rank: any-builder */
1427
+ getSpecialitiesInstalledSkills(args?: RequestArgs): Promise<GetSpecialitiesInstalledSkillsResponse>;
1425
1428
  /** GET /specialities/offered — rank: any-builder */
1426
1429
  getSpecialitiesOffered(args?: RequestArgs): Promise<GetSpecialitiesOfferedResponse>;
1427
1430
  };
@@ -993,6 +993,8 @@ export function createClient(opts = {}) {
993
993
  putSpecialitiesIdSkills: (args) => request("PUT", "/specialities/{id}/skills", { hasBody: true }, args),
994
994
  // POST /specialities/{id}/unoffer — rank: metic+archon — POST /specialities/:id/unoffer
995
995
  postSpecialitiesIdUnoffer: (args) => request("POST", "/specialities/{id}/unoffer", { hasBody: true }, args),
996
+ // GET /specialities/installed-skills — rank: any-builder — GET /specialities/installed-skills
997
+ getSpecialitiesInstalledSkills: (args) => request("GET", "/specialities/installed-skills", { hasBody: false }, args),
996
998
  // GET /specialities/offered — rank: any-builder — GET /specialities/offered
997
999
  getSpecialitiesOffered: (args) => request("GET", "/specialities/offered", { hasBody: false }, args),
998
1000
  },
@@ -17805,6 +17805,44 @@
17805
17805
  ]
17806
17806
  }
17807
17807
  },
17808
+ "/specialities/installed-skills": {
17809
+ "get": {
17810
+ "operationId": "get_specialities_installed_skills",
17811
+ "tags": [
17812
+ "specialities"
17813
+ ],
17814
+ "summary": "GET /specialities/installed-skills",
17815
+ "description": "GET /specialities/installed-skills — every skill THIS instance has, each explained the way the adoption walkthrough explains it, so a speciality's owner can choose what it offers from the hall (task 1004404). The CHOICES only: the POST/PATCH `skills` check (unknown_skill) is still the rule, so a stale page that sends a name removed since is refused, not trusted. Nothing here is per-builder and the list is public knowledge of the install — every name is already materialised into each checkout's .claude/skills/. Mounted before '/specialities/:id' would capture it as an id. Read-only; rank: any builder.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
17816
+ "x-rank": "any-builder",
17817
+ "x-source": "modules/specialities/routes/specialities.js",
17818
+ "responses": {
17819
+ "200": {
17820
+ "description": "Success.",
17821
+ "content": {
17822
+ "application/json": {
17823
+ "schema": {
17824
+ "$ref": "#/components/schemas/GetSpecialitiesInstalledSkillsResponse"
17825
+ }
17826
+ }
17827
+ }
17828
+ },
17829
+ "400": {
17830
+ "$ref": "#/components/responses/BadRequest"
17831
+ },
17832
+ "401": {
17833
+ "$ref": "#/components/responses/Unauthorized"
17834
+ },
17835
+ "403": {
17836
+ "$ref": "#/components/responses/Forbidden"
17837
+ }
17838
+ },
17839
+ "security": [
17840
+ {
17841
+ "builderSession": []
17842
+ }
17843
+ ]
17844
+ }
17845
+ },
17808
17846
  "/specialities/offered": {
17809
17847
  "get": {
17810
17848
  "operationId": "get_specialities_offered",
@@ -23643,6 +23681,15 @@
23643
23681
  "skills"
23644
23682
  ]
23645
23683
  },
23684
+ "GetSpecialitiesInstalledSkillsResponse": {
23685
+ "type": "object",
23686
+ "properties": {
23687
+ "skills": {}
23688
+ },
23689
+ "required": [
23690
+ "skills"
23691
+ ]
23692
+ },
23646
23693
  "GetSpecialitiesOfferedResponse": {
23647
23694
  "type": "object",
23648
23695
  "properties": {
@@ -29474,9 +29521,9 @@
29474
29521
  "description": "A required dependency/feature is not configured or is temporarily down."
29475
29522
  }
29476
29523
  },
29477
- "x-endpoint-count": 460,
29478
- "x-schema-count": 492,
29524
+ "x-endpoint-count": 461,
29525
+ "x-schema-count": 493,
29479
29526
  "x-undocumented-bodies": 12,
29480
- "x-response-schemas": 334,
29527
+ "x-response-schemas": 335,
29481
29528
  "x-generated-by": "scripts/gds/gen-api-docs.js"
29482
29529
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Bongos API reference
4
4
 
5
- > **Generated from the live route files** — the route file is authoritative. 460 endpoints across 82 route files.
5
+ > **Generated from the live route files** — the route file is authoritative. 461 endpoints across 82 route files.
6
6
  > Machine-readable spec: [`docs/api/openapi.json`](api/openapi.json) (OpenAPI 3.1). Rendered docs site: **`/docs`** (e.g. `cloudbongos.com/docs`).
7
7
 
8
8
  Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust-boundary-server-enforced-permissions.md)): `public` < `any-builder` < `metic+archon` < `archon`.
@@ -698,7 +698,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
698
698
  |---|---|---|---|---|
699
699
  | GET | `/api/bongos/software-update` | `any-builder` | — | GET /software-update — Settings → Software update (task 1004296): this project's core, the newest release its channel allows, what the ve… |
700
700
 
701
- ## `specialities` (14)
701
+ ## `specialities` (15)
702
702
 
703
703
  | Method | Path | Rank | Body | Description |
704
704
  |---|---|---|---|---|
@@ -715,6 +715,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
715
715
  | GET | `/api/bongos/specialities/:id/skills` | `any-builder` | — | GET /specialities/:id/skills — what the adoption WALKTHROUGH shows (task 1004073, ADR 0310 §3): each skill the speciality offers, explain… |
716
716
  | PUT | `/api/bongos/specialities/:id/skills` | `any-builder` | `enabled_skills` | PUT /specialities/:id/skills — the caller's ENABLED set for a speciality they hold (task 1004072, ADR 0310 §2). |
717
717
  | POST | `/api/bongos/specialities/:id/unoffer` | `metic+archon` | — | |
718
+ | GET | `/api/bongos/specialities/installed-skills` | `any-builder` | — | GET /specialities/installed-skills — every skill THIS instance has, each explained the way the adoption walkthrough explains it, so a spe… |
718
719
  | GET | `/api/bongos/specialities/offered` | `any-builder` | — | GET /specialities/offered — the suggestions for THIS builder. |
719
720
 
720
721
  ## `sso` (8)