@cavuno/board 3.0.0 → 3.1.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/CHANGELOG.md +6 -0
- package/README.md +11 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
- package/skills/cavuno-board-account/SKILL.md +4 -0
- package/skills/cavuno-board-api-client/SKILL.md +4 -0
- package/skills/cavuno-board-applications/SKILL.md +4 -0
- package/skills/cavuno-board-auth/SKILL.md +4 -0
- package/skills/cavuno-board-blog/SKILL.md +4 -0
- package/skills/cavuno-board-companies/SKILL.md +4 -0
- package/skills/cavuno-board-errors/SKILL.md +4 -0
- package/skills/cavuno-board-filters/SKILL.md +4 -0
- package/skills/cavuno-board-format/SKILL.md +4 -0
- package/skills/cavuno-board-i18n/SKILL.md +4 -0
- package/skills/cavuno-board-job-alerts/SKILL.md +4 -0
- package/skills/cavuno-board-jobs/SKILL.md +4 -0
- package/skills/cavuno-board-messaging/SKILL.md +4 -0
- package/skills/cavuno-board-paywall/SKILL.md +4 -0
- package/skills/cavuno-board-post-a-job/SKILL.md +4 -0
- package/skills/cavuno-board-salaries/SKILL.md +4 -0
- package/skills/cavuno-board-search-suggestions/SKILL.md +4 -0
- package/skills/cavuno-board-seo/SKILL.md +4 -0
- package/skills/cavuno-board-server-sessions/SKILL.md +4 -0
- package/skills/cavuno-board-setup/SKILL.md +4 -0
- package/skills/cavuno-board-sitemap/SKILL.md +4 -0
- package/skills/cavuno-board-smoke-test/SKILL.md +4 -0
- package/skills/manifest.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
This changelog records changes that affect Board API compatibility, exported
|
|
4
4
|
types, runtime behavior, or supported integration patterns.
|
|
5
5
|
|
|
6
|
+
## 3.1.0 — 2026-08-03
|
|
7
|
+
|
|
8
|
+
- Added direct skills.sh installation guidance and repository grouping for all
|
|
9
|
+
22 Cavuno Board SDK skills.
|
|
10
|
+
- Linked every independently installable skill to the Cavuno SDK documentation.
|
|
11
|
+
|
|
6
12
|
## 3.0.0 — 2026-08-03
|
|
7
13
|
|
|
8
14
|
- Removed runtime theme data from `board.context()` and removed the
|
package/README.md
CHANGED
|
@@ -19,6 +19,17 @@ other compatible coding agents. It teaches them how to wire a board correctly
|
|
|
19
19
|
auth and session ownership, pagination, gating, error handling, and a
|
|
20
20
|
runtime smoke test:
|
|
21
21
|
|
|
22
|
+
Install the latest skills directly from the public SDK repository:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npx skills add wollemiahq/cavuno-sdk --skill cavuno-board-setup
|
|
26
|
+
# Or install the complete Cavuno skill set:
|
|
27
|
+
npx skills add wollemiahq/cavuno-sdk --skill '*'
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
For skills matched exactly to an installed SDK version, copy them from the
|
|
31
|
+
package instead:
|
|
32
|
+
|
|
22
33
|
```bash
|
|
23
34
|
npm install @cavuno/board # or: pnpm add / yarn add / bun add
|
|
24
35
|
npx @cavuno/board setup # copies version-matched Agent Skills
|
package/dist/index.d.mts
CHANGED
|
@@ -141,7 +141,7 @@ declare function paginate<Q extends Record<string, unknown>, P extends PageShape
|
|
|
141
141
|
* constant because the package is platform-neutral and cannot read
|
|
142
142
|
* package.json at runtime.
|
|
143
143
|
*/
|
|
144
|
-
declare const SDK_VERSION = "3.
|
|
144
|
+
declare const SDK_VERSION = "3.1.0";
|
|
145
145
|
|
|
146
146
|
type SavedJob = Schemas['SavedJob'];
|
|
147
147
|
type SavedJobsListQuery = {
|
package/dist/index.d.ts
CHANGED
|
@@ -141,7 +141,7 @@ declare function paginate<Q extends Record<string, unknown>, P extends PageShape
|
|
|
141
141
|
* constant because the package is platform-neutral and cannot read
|
|
142
142
|
* package.json at runtime.
|
|
143
143
|
*/
|
|
144
|
-
declare const SDK_VERSION = "3.
|
|
144
|
+
declare const SDK_VERSION = "3.1.0";
|
|
145
145
|
|
|
146
146
|
type SavedJob = Schemas['SavedJob'];
|
|
147
147
|
type SavedJobsListQuery = {
|
package/dist/index.js
CHANGED
package/dist/index.mjs
CHANGED
package/package.json
CHANGED
|
@@ -133,3 +133,7 @@ await board.me.notificationPreferences.unsubscribeWithToken({
|
|
|
133
133
|
- Uploaded `avatarUrl` renders.
|
|
134
134
|
- Resume parsing reaches `parsed`, reports `parseFailureReason`, or reaches the explicit delayed state without blocking editing.
|
|
135
135
|
- Anonymous unsubscribe works in a logged-out browser.
|
|
136
|
+
|
|
137
|
+
## Cavuno SDK reference
|
|
138
|
+
|
|
139
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -72,3 +72,7 @@ const data = await board.client.fetch<{
|
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
**Complete when:** the call uses a board-relative path, supplies an honest response type, and no parallel raw-fetch client was introduced.
|
|
75
|
+
|
|
76
|
+
## Cavuno SDK reference
|
|
77
|
+
|
|
78
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -94,3 +94,7 @@ await board.me.savedJobs.unsave(job.id);
|
|
|
94
94
|
- `myApplication` plus `isNotFound` drives the apply-button state.
|
|
95
95
|
- Re-fetching after withdrawal removes the application.
|
|
96
96
|
- Repeating `unsave` leaves the saved list consistent.
|
|
97
|
+
|
|
98
|
+
## Cavuno SDK reference
|
|
99
|
+
|
|
100
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -86,3 +86,7 @@ await board.auth.resetPassword({ token, password: 'a-new-password' });
|
|
|
86
86
|
The signed-in OTP verification, resend, magic-link, and OAuth branches use their corresponding `board.auth` methods. Password-reset requests preserve account privacy; a successful single-use reset invalidates existing sessions.
|
|
87
87
|
|
|
88
88
|
**Complete when:** each implemented auth route exercises its success state and typed failure state, with bearer tokens absent from server-rendered browser payloads.
|
|
89
|
+
|
|
90
|
+
## Cavuno SDK reference
|
|
91
|
+
|
|
92
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -108,3 +108,7 @@ Finish only after every applicable check passes:
|
|
|
108
108
|
- Featured archives send the exact string `featured: 'true'`.
|
|
109
109
|
- Cursor paging reaches `nextCursor: null` without relying on count or offset.
|
|
110
110
|
- Newest and oldest posts handle the null side of `adjacent`.
|
|
111
|
+
|
|
112
|
+
## Cavuno SDK reference
|
|
113
|
+
|
|
114
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -115,3 +115,7 @@ Finish only after every applicable check passes:
|
|
|
115
115
|
- A non-canonical market or salary-category route returns a 308 to the slug
|
|
116
116
|
supplied by the API.
|
|
117
117
|
- Salary figures and comparisons come directly from `CompanySalary` fields.
|
|
118
|
+
|
|
119
|
+
## Cavuno SDK reference
|
|
120
|
+
|
|
121
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -67,3 +67,7 @@ try {
|
|
|
67
67
|
The grant is board access, not a user session. Server-rendered apps keep it in the app-owned grant cookie and pass it per request; `cavuno-board-server-sessions` defines that cookie and redirect contract. A fresh `board_password_required` response means the grant expired or the password rotated, so return to the challenge flow.
|
|
68
68
|
|
|
69
69
|
**Complete when:** a valid password unlocks one retry, an invalid password renders its typed error, and a stale server grant is cleared before rechallenge.
|
|
70
|
+
|
|
71
|
+
## Cavuno SDK reference
|
|
72
|
+
|
|
73
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -123,3 +123,7 @@ Finish only after every applicable check passes:
|
|
|
123
123
|
- Category and skill filtering sends `sourceSlug`, while links use
|
|
124
124
|
`canonicalSlug`.
|
|
125
125
|
- Every paged taxonomy request forwards the previous opaque `nextCursor`.
|
|
126
|
+
|
|
127
|
+
## Cavuno SDK reference
|
|
128
|
+
|
|
129
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -97,3 +97,7 @@ Finish only after every applicable check passes:
|
|
|
97
97
|
- Cards use `cardLocationLabel`; full jobs use `locationLabel`; saved full jobs
|
|
98
98
|
are converted with `fullJobToCard` before card rendering.
|
|
99
99
|
- Formatting changes neither salary amounts nor currency.
|
|
100
|
+
|
|
101
|
+
## Cavuno SDK reference
|
|
102
|
+
|
|
103
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -50,3 +50,7 @@ A compile-time i18n system can replace the seam's backing source. Keep the seam
|
|
|
50
50
|
- Server HTML uses the active locale in `<html lang>` with no hydration mismatch.
|
|
51
51
|
- Canonical, `hreflang`, and sitemap URLs agree for every locale route.
|
|
52
52
|
- Missing translation keys fail generation or tests rather than appearing as raw keys.
|
|
53
|
+
|
|
54
|
+
## Cavuno SDK reference
|
|
55
|
+
|
|
56
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -124,3 +124,7 @@ Removal is the signed-in lane's stop action; there is no pause state.
|
|
|
124
124
|
- Manage reads use `subscription`; manage writes use `subscriptionId`.
|
|
125
125
|
- Editing one field preserves every other field in both full-replace APIs.
|
|
126
126
|
- UI promises only weekly delivery filtered by job function, place, and remote option.
|
|
127
|
+
|
|
128
|
+
## Cavuno SDK reference
|
|
129
|
+
|
|
130
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -130,3 +130,7 @@ Finish only after every applicable check passes:
|
|
|
130
130
|
entitled request renders the ungated view.
|
|
131
131
|
- Full-catalog code uses `paginate()` and any order-sensitive walk has an
|
|
132
132
|
explicit sort or search.
|
|
133
|
+
|
|
134
|
+
## Cavuno SDK reference
|
|
135
|
+
|
|
136
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -112,3 +112,7 @@ Report reasons are `'spam' | 'harassment' | 'misrepresentation' | 'other'`. `boa
|
|
|
112
112
|
- Opening a thread calls `markRead`; the sender later sees `readAt`.
|
|
113
113
|
- Unsend renders a tombstone in place.
|
|
114
114
|
- Messaging policy errors produce deliberate UI states rather than a generic success path.
|
|
115
|
+
|
|
116
|
+
## Cavuno SDK reference
|
|
117
|
+
|
|
118
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -100,3 +100,7 @@ A lifetime grant produces `paywall_no_recurring_subscription` for `portal`.
|
|
|
100
100
|
- Test checkout reaches `complete`, then bounded grant polling reaches `hasAccess: true` after webhook delivery.
|
|
101
101
|
- UI access decisions read `grant().hasAccess`.
|
|
102
102
|
- Recurring grants open the portal; lifetime grants show a deliberate non-portal state.
|
|
103
|
+
|
|
104
|
+
## Cavuno SDK reference
|
|
105
|
+
|
|
106
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -116,3 +116,7 @@ Bare-email billing lookup is intentionally absent because it would expose whethe
|
|
|
116
116
|
- Free unmoderated submission returns a resolving `jobSlug`.
|
|
117
117
|
- Missing domain logos leave submission usable without `logoUrl`.
|
|
118
118
|
- Existing credit is selectable only after token verification.
|
|
119
|
+
|
|
120
|
+
## Cavuno SDK reference
|
|
121
|
+
|
|
122
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -108,3 +108,7 @@ Finish only after every applicable check passes:
|
|
|
108
108
|
- `overallSalary: null` renders an empty state rather than `0` or `NaN`.
|
|
109
109
|
- Every salary, comparison, and sample size maps directly to a response field
|
|
110
110
|
and uses the response currency.
|
|
111
|
+
|
|
112
|
+
## Cavuno SDK reference
|
|
113
|
+
|
|
114
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -80,3 +80,7 @@ Unknown slugs are dropped server-side. If none resolve, the listing has `count:
|
|
|
80
80
|
- Excluded companies disappear without changing the relative order of other items.
|
|
81
81
|
- Selecting a company writes its slug to the URL and sends `companySlug` directly.
|
|
82
82
|
- Teardown unsubscribes listeners and calls `dispose`.
|
|
83
|
+
|
|
84
|
+
## Cavuno SDK reference
|
|
85
|
+
|
|
86
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -45,3 +45,7 @@ Finish only after every applicable branch check passes:
|
|
|
45
45
|
requires it, and rendered figures match the returned salary read model.
|
|
46
46
|
- Listing head output supplies title, description, Open Graph descriptors,
|
|
47
47
|
and canonical link for the requested absolute origin and path.
|
|
48
|
+
|
|
49
|
+
## Cavuno SDK reference
|
|
50
|
+
|
|
51
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -141,3 +141,7 @@ const restored = parseSessionCookie(cookieHeader, scope);
|
|
|
141
141
|
```
|
|
142
142
|
|
|
143
143
|
Single-board origins omit the scope.
|
|
144
|
+
|
|
145
|
+
## Cavuno SDK reference
|
|
146
|
+
|
|
147
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -80,3 +80,7 @@ Run `cavuno-board-smoke-test` with the real `pk_…` value. Its runtime probes a
|
|
|
80
80
|
Pause with a concrete blocker when the board identifier or a required test credential is unavailable, or the public API probe fails before it reaches app code.
|
|
81
81
|
|
|
82
82
|
**Complete when:** doctor, direct API probes, implemented-surface checks, and the production-build probe all pass or each skipped credentialed check is reported.
|
|
83
|
+
|
|
84
|
+
## Cavuno SDK reference
|
|
85
|
+
|
|
86
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -128,3 +128,7 @@ Finish only after every applicable check passes:
|
|
|
128
128
|
dropping or duplicating a URL.
|
|
129
129
|
- robots.txt points to the absolute `/sitemap.xml` URL.
|
|
130
130
|
- No excluded N+1 URL family is enumerated outside the walker.
|
|
131
|
+
|
|
132
|
+
## Cavuno SDK reference
|
|
133
|
+
|
|
134
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
@@ -67,3 +67,7 @@ Run the app's production build, boot that output, and repeat the three app probe
|
|
|
67
67
|
**Complete when:** the build succeeds and the running production artifact passes the shell, listing/detail-link, and not-found probes.
|
|
68
68
|
|
|
69
69
|
The smoke test covers Cavuno board wiring. Performance, visual regression, and broader SEO scoring belong to their dedicated project checks.
|
|
70
|
+
|
|
71
|
+
## Cavuno SDK reference
|
|
72
|
+
|
|
73
|
+
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
package/skills/manifest.json
CHANGED