Skip to content

Commit 0f48f95

Browse files
louis-preclaude
andcommitted
Use relative cross-section paths for HTML links instead of absolute URLs
GitBook resolves HTML <a href> cross-section links correctly, so use relative file paths instead of absolute docs.seam.co URLs. Also skip the cross-section check for HTML links in the validator. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent eb82548 commit 0f48f95

13 files changed

Lines changed: 34 additions & 16 deletions

File tree

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
name: Don't delegate simple bulk edits to agents
3+
description: Prefer doing bulk file edits directly rather than spawning slow agents
4+
type: feedback
5+
---
6+
7+
Don't delegate simple bulk file edits (like fixing broken links across files) to subagents — they're too slow. Just do the work directly with Edit/Grep tools.
8+
9+
**Why:** A subagent took 8 minutes to fix 20 links when it should have been quick.
10+
**How to apply:** For repetitive edits across files, use Grep to find occurrences and Edit to fix them directly. Only use agents for genuinely complex research tasks.

codegen/validate-links.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,12 @@ function checkAbsoluteUrl(file: string, line: number, rawUrl: string): void {
9393
}
9494
}
9595

96-
function checkRelativeLink(file: string, line: number, rawLink: string): void {
96+
function checkRelativeLink(
97+
file: string,
98+
line: number,
99+
rawLink: string,
100+
{ allowCrossSection = false } = {},
101+
): void {
97102
// Strip GitBook "mention" hint and anchor
98103
const linkPath = rawLink.replace(/ "mention"$/, '').split('#')[0]
99104
if (linkPath == null || linkPath === '') return
@@ -131,6 +136,9 @@ function checkRelativeLink(file: string, line: number, rawLink: string): void {
131136
}
132137

133138
// Check that relative links don't cross site section boundaries
139+
// (HTML href links are allowed to cross sections in GitBook)
140+
if (allowCrossSection) return
141+
134142
const sourceSection = findSiteSection(file)
135143
const targetSection = findSiteSection(resolved)
136144
if (
@@ -170,11 +178,11 @@ for (const file of files) {
170178
checkRelativeLink(file, i + 1, rawLink)
171179
}
172180

173-
// Check HTML href links (relative)
181+
// Check HTML href links (relative, cross-section allowed)
174182
for (const match of lineText.matchAll(htmlRelativeLinkPattern)) {
175183
const rawLink = match[1]
176184
if (rawLink == null) continue
177-
checkRelativeLink(file, i + 1, rawLink)
185+
checkRelativeLink(file, i + 1, rawLink, { allowCrossSection: true })
178186
}
179187

180188
// Check HTML href links (absolute docs.seam.co URLs)

docs/brand-guides/assa-abloy-visionline-access-control-system/mobile-credential-related-properties.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ When issuing a guest mobile credential, you can use the following relevant prope
1212

1313
These properties are applicable to [guest](configuring-visionline-mobile-credentials/#issuing-guest-mobile-credentials) credentials for the Visionline ACS.
1414

15-
<table><thead><tr><th width="260">Property</th><th width="116">Type</th><th width="290">Description</th></tr></thead><tbody><tr><td><code>is_multi_phone_sync_credential</code></td><td>Boolean<br><em>Optional</em></td><td>Indicates whether the credential is a <a href="https://docs.seam.co/latest/capability-guides/mobile-access/issuing-mobile-credentials-from-an-access-control-system#what-are-multi-phone-sync-credentials">multi-phone sync credential</a>.<br>When creating a Seam mobile key for a Visionline ACS, you must set this property to <code>true</code>.</td></tr><tr><td><code>allowed_acs_entrance_ids</code></td><td>Array of strings <em>Optional</em></td><td>List of ACS entrance IDs to which you want to grant the specified ACS user access. </td></tr><tr><td><code>starts_at</code></td><td><a href="https://www.iso.org/iso-8601-date-and-time-format.html">ISO 8601</a> format<br><em>Optional</em></td><td>Starting timestamp for credential activation.</td></tr><tr><td><code>ends_at</code></td><td><a href="https://www.iso.org/iso-8601-date-and-time-format.html">ISO 8601</a> format<br><em>Optional</em></td><td>Ending timestamp for credential expiration.</td></tr></tbody></table>
15+
<table><thead><tr><th width="260">Property</th><th width="116">Type</th><th width="290">Description</th></tr></thead><tbody><tr><td><code>is_multi_phone_sync_credential</code></td><td>Boolean<br><em>Optional</em></td><td>Indicates whether the credential is a <a href="../../guides/capability-guides/mobile-access/issuing-mobile-credentials-from-an-access-control-system.md#what-are-multi-phone-sync-credentials">multi-phone sync credential</a>.<br>When creating a Seam mobile key for a Visionline ACS, you must set this property to <code>true</code>.</td></tr><tr><td><code>allowed_acs_entrance_ids</code></td><td>Array of strings <em>Optional</em></td><td>List of ACS entrance IDs to which you want to grant the specified ACS user access. </td></tr><tr><td><code>starts_at</code></td><td><a href="https://www.iso.org/iso-8601-date-and-time-format.html">ISO 8601</a> format<br><em>Optional</em></td><td>Starting timestamp for credential activation.</td></tr><tr><td><code>ends_at</code></td><td><a href="https://www.iso.org/iso-8601-date-and-time-format.html">ISO 8601</a> format<br><em>Optional</em></td><td>Ending timestamp for credential expiration.</td></tr></tbody></table>
1616

1717
***
1818

docs/brand-guides/latch-access-control-system/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ The following diagram shows the Seam resources for a Latch ACS and the relations
2626

2727
The following table provides a brief description of each of the Seam resources for the Latch ACS:
2828

29-
<table><thead><tr><th width="233">Seam Resource</th><th>Description</th></tr></thead><tbody><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-user_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-user_light.png" alt="" data-size="line"></picture></p><p> <a href="https://docs.seam.co/latest/api/acs/users"><code>acs_user</code></a></p></td><td>Individual who has been granted access to specific entrances within a building. A user could be a resident or temporary guest.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-entrance_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-entrance_light.png" alt="" data-size="line"></picture></p><p> <a href="https://docs.seam.co/latest/api/acs/entrances"><code>acs_entrance</code></a></p></td><td>Physical points of entry within a property that are secured with Latch's smart access devices.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-credential_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-credential_light.png" alt="" data-size="line"></picture></p><p> <a href="https://docs.seam.co/latest/api/acs/credentials"><code>acs_credential</code></a></p></td><td>PIN codes or mobile keys. You can only assign one entrance to a key code-based credential. You can assign multiple entrances to mobile keys.</td></tr></tbody></table>
29+
<table><thead><tr><th width="233">Seam Resource</th><th>Description</th></tr></thead><tbody><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-user_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-user_light.png" alt="" data-size="line"></picture></p><p> <a href="../../api-reference/acs/users/README.md"><code>acs_user</code></a></p></td><td>Individual who has been granted access to specific entrances within a building. A user could be a resident or temporary guest.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-entrance_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-entrance_light.png" alt="" data-size="line"></picture></p><p> <a href="../../api-reference/acs/entrances/README.md"><code>acs_entrance</code></a></p></td><td>Physical points of entry within a property that are secured with Latch's smart access devices.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-credential_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-credential_light.png" alt="" data-size="line"></picture></p><p> <a href="../../api-reference/acs/credentials/README.md"><code>acs_credential</code></a></p></td><td>PIN codes or mobile keys. You can only assign one entrance to a key code-based credential. You can assign multiple entrances to mobile keys.</td></tr></tbody></table>
3030

3131
For more information about managing your Latch ACS through Seam, see the following topics:
3232

docs/brand-guides/salto-ks-access-control-system/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ The following diagram shows the Seam resources for a Salto KS ACS and the relati
2424

2525
The following table provides a brief description of each of the Seam resources for the Salto Space ACS:
2626

27-
<table><thead><tr><th width="233">Seam Resource</th><th>Description</th></tr></thead><tbody><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-user_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-user_light.png" alt="" data-size="line"></picture></p><p> <a href="https://docs.seam.co/latest/api/acs/users"><code>acs_user</code></a></p></td><td>Individual who has been granted access to specific entrances within a property. ACS users could include employees, residents, and temporary guests. You can configure access schedules for users, if desired. You assign a unique credential to each user.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-access-group_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-access-group_light.png" alt="" data-size="line"></picture></p><p> <a href="https://docs.seam.co/latest/api/acs/access_groups"><code>acs_access_group</code></a></p></td><td>Collection of users with shared access permissions. Instead of assigning permissions individually, users are grouped based on their access needs. Access groups streamline the management of access rights and ensure consistency.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-schedule_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-schedule_light.png" alt="" data-size="line"></picture></p><p> <code>access_schedule</code></p></td><td>Timeframe during which access is permitted. By associating schedules with ACS users and then assigning users to access groups, property managers can control when users can enter specific areas, enhancing security and operational efficiency.<br>If you set an access schedule for a Salto KS ACS user, the user appears as "unsubscribed" in the ACS until the <code>starts_at</code> time. Once the start time arrives, Seam switches the ACS user to "subscribed," which activates their access.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-entrance_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-entrance_light.png" alt="" data-size="line"></picture></p><p> <a href="https://docs.seam.co/latest/api/acs/entrances"><code>acs_entrance</code></a></p></td><td>Physical points of entry within a property that are secured with Salto KS smart access devices. Access permissions are assigned to these entrances through access groups and access schedules.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-credential_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-credential_light.png" alt="" data-size="line"></picture></p><p> <a href="https://docs.seam.co/latest/api/acs/credentials"><code>acs_credential</code></a></p></td><td><p>PINs, key cards or tags, or mobile keys.</p><ul><li>PINs: Unique personal identification numbers assigned to each user. For Salto KS, you cannot specify a custom PIN code. Instead, Salto KS generates the PIN code.</li><li>Key cards or tags: Physical cards that users can swipe or tap at access points.</li><li>Mobile keys: Digital keys stored on users' mobile devices, enabling them to access entrances using their smartphones.</li></ul></td></tr></tbody></table>
27+
<table><thead><tr><th width="233">Seam Resource</th><th>Description</th></tr></thead><tbody><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-user_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-user_light.png" alt="" data-size="line"></picture></p><p> <a href="../../api-reference/acs/users/README.md"><code>acs_user</code></a></p></td><td>Individual who has been granted access to specific entrances within a property. ACS users could include employees, residents, and temporary guests. You can configure access schedules for users, if desired. You assign a unique credential to each user.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-access-group_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-access-group_light.png" alt="" data-size="line"></picture></p><p> <a href="../../api-reference/acs/access_groups/README.md"><code>acs_access_group</code></a></p></td><td>Collection of users with shared access permissions. Instead of assigning permissions individually, users are grouped based on their access needs. Access groups streamline the management of access rights and ensure consistency.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-schedule_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-schedule_light.png" alt="" data-size="line"></picture></p><p> <code>access_schedule</code></p></td><td>Timeframe during which access is permitted. By associating schedules with ACS users and then assigning users to access groups, property managers can control when users can enter specific areas, enhancing security and operational efficiency.<br>If you set an access schedule for a Salto KS ACS user, the user appears as "unsubscribed" in the ACS until the <code>starts_at</code> time. Once the start time arrives, Seam switches the ACS user to "subscribed," which activates their access.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-entrance_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-entrance_light.png" alt="" data-size="line"></picture></p><p> <a href="../../api-reference/acs/entrances/README.md"><code>acs_entrance</code></a></p></td><td>Physical points of entry within a property that are secured with Salto KS smart access devices. Access permissions are assigned to these entrances through access groups and access schedules.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-credential_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-credential_light.png" alt="" data-size="line"></picture></p><p> <a href="../../api-reference/acs/credentials/README.md"><code>acs_credential</code></a></p></td><td><p>PINs, key cards or tags, or mobile keys.</p><ul><li>PINs: Unique personal identification numbers assigned to each user. For Salto KS, you cannot specify a custom PIN code. Instead, Salto KS generates the PIN code.</li><li>Key cards or tags: Physical cards that users can swipe or tap at access points.</li><li>Mobile keys: Digital keys stored on users' mobile devices, enabling them to access entrances using their smartphones.</li></ul></td></tr></tbody></table>
2828

2929
For more information about managing your Salto KS ACS through Seam, see the following topics:
3030

docs/brand-guides/salto-proaccess-space-access-system/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ The following diagram shows the Seam resources for a Salto Space access system a
2626

2727
The following table provides a brief description of each of the Seam resources for the Salto Space access system:
2828

29-
<table><thead><tr><th width="233">Seam Resource</th><th>Description</th></tr></thead><tbody><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-user_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-user_light.png" alt=""></picture></p><p><a href="https://docs.seam.co/latest/api/acs/users"><code>acs_user</code></a></p></td><td>Individual who has been granted access to specific entrances within a property. Access system users could include employees, residents, and visitors. You assign a unique credential to each user.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-access-group_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-access-group_light.png" alt=""></picture></p><p><a href="https://docs.seam.co/latest/api/acs/access_groups"><code>acs_access_group</code></a></p></td><td>Collection of users with shared access permissions, called "user access levels" in Salto Space. Instead of assigning permissions individually, users are grouped based on their access needs. Access groups streamline the management of access rights and ensure consistency.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-entrance_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-entrance_light.png" alt=""></picture></p><p><a href="https://docs.seam.co/latest/api/acs/entrances"><code>acs_entrance</code></a></p></td><td>Physical points of entry within a property that are secured with Salto smart access devices, called "access points" in Salto Space. Salto Space supports both online and offline entrances. Access permissions are assigned to these entrances through access groups.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-credential_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-credential_light.png" alt=""></picture></p><p><a href="https://docs.seam.co/latest/api/acs/credentials"><code>acs_credential</code></a></p></td><td><p>Key cards or mobile keys.</p><ul><li>Key cards: Physical cards that users can swipe or tap at access points. For Salto Space, you encode credentials onto cards.</li><li>Mobile keys: Digital keys stored on users' mobile devices, enabling them to access entrances using their smartphones.</li></ul><div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>For each access system user, Salto Space supports a maximum of one key card credential and one mobile key credential.</p></div></td></tr></tbody></table>
29+
<table><thead><tr><th width="233">Seam Resource</th><th>Description</th></tr></thead><tbody><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-user_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-user_light.png" alt=""></picture></p><p><a href="../../api-reference/acs/users/README.md"><code>acs_user</code></a></p></td><td>Individual who has been granted access to specific entrances within a property. Access system users could include employees, residents, and visitors. You assign a unique credential to each user.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-access-group_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-access-group_light.png" alt=""></picture></p><p><a href="../../api-reference/acs/access_groups/README.md"><code>acs_access_group</code></a></p></td><td>Collection of users with shared access permissions, called "user access levels" in Salto Space. Instead of assigning permissions individually, users are grouped based on their access needs. Access groups streamline the management of access rights and ensure consistency.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-entrance_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-entrance_light.png" alt=""></picture></p><p><a href="../../api-reference/acs/entrances/README.md"><code>acs_entrance</code></a></p></td><td>Physical points of entry within a property that are secured with Salto smart access devices, called "access points" in Salto Space. Salto Space supports both online and offline entrances. Access permissions are assigned to these entrances through access groups.</td></tr><tr><td><p><picture><source srcset="../../.gitbook/assets/acs-credential_dark.png" media="(prefers-color-scheme: dark)"><img src="../../.gitbook/assets/acs-credential_light.png" alt=""></picture></p><p><a href="../../api-reference/acs/credentials/README.md"><code>acs_credential</code></a></p></td><td><p>Key cards or mobile keys.</p><ul><li>Key cards: Physical cards that users can swipe or tap at access points. For Salto Space, you encode credentials onto cards.</li><li>Mobile keys: Digital keys stored on users' mobile devices, enabling them to access entrances using their smartphones.</li></ul><div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>For each access system user, Salto Space supports a maximum of one key card credential and one mobile key credential.</p></div></td></tr></tbody></table>
3030

3131
For more information about managing your Salto Space access system through Seam, see the following topics:
3232

0 commit comments

Comments
 (0)