Documentation Quality Overhaul — Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.
Goal: Bring all 25 hand-written documentation pages up to consistent quality — fix frontmatter, code examples, broken content, marketing fluff, stub pages, and component usage across the entire site.
Architecture: 10 sequential task groups covering: frontmatter sweep, WebSocket file rename, index rewrite, changelog cleanup, camera guide code fixes, component fixes, stub page rewrites, integration fixes, WebSocket content fixes, and final validation. Each task produces a commit.
Tech Stack: Mintlify, MDX, OpenAPI spec for endpoint research
Spec: docs/superpowers/specs/2026-04-09-autonomous-api-docs-design.md + audit findings from 4 parallel review agents
Answers to key questions (from user):
- Staging URL
wss://ws.itg.rhombussystems.com:8443/websocket— REMOVE, internal only - Rhombus CLI at
github.com/RhombusSystems/rhombus-cli— EXISTS, keep reference but do not expand (separate article later) - Support email — always
support@rhombus.com(neverapi@rhombus.com) - Docs URL — always
https://api-docs.rhombus.community(neverapidocs.rhombussystems.com) - Endpoint count — use stable phrase “800+” everywhere (actual count: 892, changes nightly)
- Stub pages — build from actual OpenAPI spec endpoints
- WebSocket filenames — rename to remove redundant
websocket-prefix
Task 1: Frontmatter Sweep — All 25 Pages
Files: All.mdx files in root, implementations/, low-code-no-code/, websocket/, api-reference/
Add missing keywords and icon fields, fix descriptions over 160 characters. This is a mechanical sweep — no content changes.
- Step 1: Add keywords and fix frontmatter on root pages
keywords array and icon if missing. Fix descriptions over 160 chars.
index.mdx — Shorten description to: "Build security integrations with the Rhombus REST API for cameras, access control, sensors, and analytics." Add keywords: ["api", "developer", "documentation", "rhombus", "security", "REST API", "getting started"]
resources.mdx — Already has icon and keywords. No change needed.
rate-limits.mdx — Fix title casing to "Rate Limits". Add keywords: ["rate limits", "throttling", "API limits", "retry", "429"]
changelog.mdx — Fix description to: "Track new endpoints, breaking changes, and updates to the Rhombus API." (under 160 chars). Add keywords: ["changelog", "updates", "new endpoints", "API changes"]
webhooks.mdx — Add keywords: ["webhooks", "event notifications", "HTTP callbacks", "real-time"]
documentation-mcp.mdx — Add icon: "robot". Add keywords: ["MCP", "model context protocol", "AI", "Claude", "Cursor", "VS Code"]
- Step 2: Add keywords and fix frontmatter on implementation pages
implementations/streaming-video.mdx — Add keywords: ["video streaming", "camera", "thumbnail", "HLS", "live video"]
implementations/video-player.mdx — Shorten description to: "Build a custom video player for Rhombus camera streams with HLS playback and timeline controls." Add keywords: ["video player", "HLS", "playback", "camera stream"]
implementations/advanced-implementation.mdx — Fix keywords from ["rtsp", "sync video"] to ["ISOBMFF", "timestamp", "synchronization", "multi-camera", "video sync"]. Add icon: "microscope"
implementations/retrieving-audio.mdx — Add keywords: ["audio", "DASH", "MPD", "media", "recording"]
implementations/backup-footage-local-storage.mdx — Add keywords: ["backup", "footage", "local storage", "download", "archive"]
implementations/qr-code-access-control.mdx — Add keywords: ["QR code", "access control", "door unlock", "touchless", "credentials"]
implementations/alarm-monitoring.mdx — Add keywords: ["alarm", "monitoring", "threat case", "alert", "security"]
implementations/iot-sensors.mdx — Add keywords: ["IoT", "sensors", "climate", "temperature", "humidity", "air quality"]
implementations/webhook-listener.mdx — Add keywords: ["webhook", "listener", "reverse proxy", "SSH tunnel", "ngrok"]
- Step 3: Add keywords and fix frontmatter on integration pages
low-code-no-code/zapier.mdx — Add icon: "bolt". Expand keywords from ["Zapier"] to ["Zapier", "automation", "no-code", "workflow", "integration"]
low-code-no-code/make.mdx — Add icon: "wand". Add keywords: ["Make", "Integromat", "automation", "no-code", "workflow"]
low-code-no-code/n8n.mdx — Add icon: "workflow". Add keywords: ["n8n", "self-hosted", "automation", "workflow", "AI agents"]
- Step 4: Add keywords and fix frontmatter on WebSocket pages
websocket/websocket-overview.mdx — Add keywords: ["WebSocket", "real-time", "STOMP", "event streaming"]
websocket/websocket-authentication.mdx — Add keywords: ["WebSocket", "authentication", "API token", "STOMP connect"]
websocket/websocket-event-monitoring.mdx — Add keywords: ["WebSocket", "events", "monitoring", "subscription", "filtering"]
websocket/websocket-connection-lifecycle.mdx — Add keywords: ["WebSocket", "connection", "lifecycle", "heartbeat", "reconnection"]
websocket/websocket-stomp-protocol.mdx — Add keywords: ["STOMP", "protocol", "WebSocket", "frames", "messaging"]
websocket/websocket-code-examples.mdx — Add keywords: ["WebSocket", "code examples", "Python", "JavaScript", "Go"]
websocket/websocket-troubleshooting.mdx — Add keywords: ["WebSocket", "troubleshooting", "debugging", "connection issues"]
- Step 5: Validate and commit
Task 2: Rename WebSocket Files — Remove Redundant Prefix
Files:-
Rename:
websocket/websocket-overview.mdx→websocket/overview.mdx -
Rename:
websocket/websocket-authentication.mdx→websocket/authentication.mdx -
Rename:
websocket/websocket-event-monitoring.mdx→websocket/event-monitoring.mdx -
Rename:
websocket/websocket-connection-lifecycle.mdx→websocket/connection-lifecycle.mdx -
Rename:
websocket/websocket-stomp-protocol.mdx→websocket/stomp-protocol.mdx -
Rename:
websocket/websocket-code-examples.mdx→websocket/code-examples.mdx -
Rename:
websocket/websocket-troubleshooting.mdx→websocket/troubleshooting.mdx -
Modify:
docs.json(WebSocket navigation group) -
Modify: All WebSocket
.mdxfiles (internal links) - Step 1: Rename all 7 files
- Step 2: Update docs.json navigation
docs.json, find the WebSocket group and replace the page references:
Old:
- Step 3: Update all internal links in WebSocket pages
.mdx files for /websocket/websocket- and replace with /websocket/:
-
websocket/overview.mdx: Update 4 Card hrefs from/websocket/websocket-*to/websocket/* -
websocket/authentication.mdx: Update link to/websocket/connection-lifecycle -
websocket/stomp-protocol.mdx: Update link to/websocket/code-examples - Any other cross-references between WebSocket pages
- Step 4: Validate and commit
Task 3: Rewrite index.mdx
Files:- Modify:
index.mdx
- Step 1: Remove the marketing Info callout and “Why Choose Rhombus” section
- Step 2: Fix code examples with real endpoints
JavaScript
cURL
- Step 3: Fix the auth headers display
- Step 4: Stabilize endpoint count and add links to “What You Can Build” cards
href attributes to the “What You Can Build” cards:
-
Camera Management →
/implementations/streaming-video -
Access Control →
/implementations/qr-code-access-control -
Environmental Monitoring →
/implementations/iot-sensors -
Analytics & Insights →
/api-reference/overview -
Event Management →
/webhooks -
Device Administration →
/api-reference/overview - Step 5: Validate and commit
Task 4: Clean Up Changelog
Files:- Modify:
changelog.mdx
- Step 1: Fix endpoint totals
<Update> entries and ensure the running totals are internally consistent. Where numbers contradict, replace specific counts with relative changes only (e.g., “+29 endpoints” rather than “Total: 892”). Remove absolute totals that will go stale.
- Step 2: Trim the November 2025 “New Documentation Launch” entry
- Step 3: Trim the November 2025 “Documentation Navigation Restructure” entry
- Step 4: Remove emoji from headings
<Update> headings and sub-headings (e.g., ”✨ Major API Expansion” → “Major API Expansion”).
- Step 5: Remove internal endpoint references
sendShipmentShippedEmail) from public changelog entries.
- Step 6: Validate and commit
Task 5: Fix Code Examples in Camera Guides
Files:-
Modify:
implementations/streaming-video.mdx -
Modify:
implementations/video-player.mdx -
Modify:
implementations/advanced-implementation.mdx -
Modify:
implementations/retrieving-audio.mdx -
Modify:
implementations/backup-footage-local-storage.mdx - Step 1: Fix streaming-video.mdx
- Fix syntax error around line 83-84: broken header object
'x-auth-apikey: YOUR_API_KEY'should be'x-auth-apikey': 'YOUR_API_KEY' - Fix unused
apiKeyparameter around line 62 — use it instead of hardcoding - Fix incorrect thumbnail URL around line 799 to match the pattern from line 25
- Replace generic “Next Steps” section with linked Cards to related pages
- Fix
jsonlanguage tag on binary layout example (line ~43) totext
- Step 2: Fix video-player.mdx
- Fix duplicate
streamingkey inplayer.updateSettings()(around line 270-296) — merge into one object - Fix email mismatch: change
mailto:api@rhombus.comtomailto:support@rhombus.com(around line 699) - Add auth headers to troubleshooting curl examples (around lines 545-553)
- Step 3: Fix advanced-implementation.mdx
- Fix keywords: replace
["rtsp", "sync video"]with["ISOBMFF", "timestamp", "synchronization", "multi-camera", "video sync"] - Fix
jsonlanguage tag on binary layout example totext - Fix email mismatch: change
mailto:api@rhombus.comtomailto:support@rhombus.com - Update deprecated
datetime.datetime.utcfromtimestamp()calls todatetime.datetime.fromtimestamp(ts, tz=datetime.timezone.utc) - Add
#include <iostream>to C++ example
- Step 4: Fix retrieving-audio.mdx
- Remove unnecessary
---horizontal rules (lines 39, 152, 248, 265, 308) - Fix off-by-one:
range(1, int(num_segments))→range(1, int(num_segments) + 1)(line ~226) - Link API Reference endpoint names to actual documentation pages
- Step 5: Fix backup-footage-local-storage.mdx
- Fix Steps component misuse (lines 29-49): replace
### Headingmarkdown inside<Steps>with proper<Step title="...">components - Fix
jsonlanguage tag on file naming convention totext - Use environment variable pattern for email credentials instead of hardcoded placeholders
- Add missing
import datetimein webhook example
- Step 6: Validate and commit
Task 6: Fix Integration Pages
Files:-
Modify:
low-code-no-code/zapier.mdx -
Modify:
low-code-no-code/make.mdx -
Modify:
low-code-no-code/n8n.mdx -
Modify:
documentation-mcp.mdx - Step 1: Fix zapier.mdx
- Remove specific “8,000+” app count from description — replace with “thousands of apps”
- Fix Authentication code block (line ~56-62): the
https://console...URL in a bash fence is not a command. Change to plain text or wrap in a Note callout with a link. - Replace the pricing table with a link to Zapier’s pricing page:
For current pricing, see [Zapier Pricing](https://zapier.com/pricing).
- Step 2: Fix make.mdx
- Fix Authentication code block — same issue as Zapier (URL in bash fence)
- Replace pricing table with link:
For current pricing, see [Make Pricing](https://www.make.com/en/pricing). - Verify rate limit claim (“1000 req/hr”) — add link to
/rate-limitspage
- Step 3: Fix n8n.mdx
- Either complete the Custom Rhombus Node TypeScript example (lines ~409-451) or remove it — incomplete skeletons violate content standards
- Remove or rephrase the community templates claim if Rhombus-specific templates don’t actually exist on n8n’s site
- Update Docker Compose environment variables to current n8n conventions (remove deprecated
N8N_BASIC_AUTH_*vars)
- Step 4: Fix documentation-mcp.mdx
- Verify link
/implementations/video-playeris not broken - Tighten the introductory paragraph (single long sentence)
- Step 5: Validate and commit
Task 7: Rewrite Alarm Monitoring Guide
Files:- Modify:
implementations/alarm-monitoring.mdx
-
Alert Monitoring:
orgStatus,locationStatus,enableMonitoringForLocation,disableMonitoringForLocation,getAlertMonitoringSettingsForLocation -
Threat Cases:
getAlertMonitoringThreatCases,escalateThreatCaseToAlarm,dismissThreatCase,cancelThreatCase -
PINs:
createPinForLocation,deletePinForLocation -
Policy Alerts:
getPolicyAlerts,dismissPolicyAlertV2 - Step 1: Write the new page content
- Overview — What alarm monitoring does, how it integrates with Rhombus cameras and sensors
- Prerequisites — API key, alarm monitoring license, configured location
- Check Monitoring Status —
orgStatusandlocationStatuswith CodeGroup (Python, JavaScript, cURL) - Enable/Disable Monitoring —
enableMonitoringForLocation/disableMonitoringForLocationwith CodeGroup - Manage Threat Cases —
getAlertMonitoringThreatCases,escalateThreatCaseToAlarm,dismissThreatCasewith CodeGroup and response examples - Manage PINs —
createPinForLocation,deletePinForLocationwith CodeGroup - Work with Policy Alerts —
getPolicyAlerts,dismissPolicyAlertV2with CodeGroup - Next Steps — Cards linking to related pages
- Use CodeGroup with Python, JavaScript, and cURL
-
Include auth headers (
x-auth-scheme: api-token,x-auth-apikey: YOUR_API_KEY) -
Use
https://api2.rhombussystems.combase URL - Include realistic response examples
- Be complete and runnable
- Step 2: Validate and commit
Task 8: Rewrite IoT Sensors Guide
Files:- Modify:
implementations/iot-sensors.mdx
-
Climate:
getMinimalClimateStateList,getClimateEventsForSensor,getConfig,updateDetails -
Climate Policies:
createClimatePolicy,getClimatePolicies,updateClimatePolicy -
Environmental Gateways:
getMinimalEnvironmentalGatewayStates,getEventsForEnvironmentalGateway - Related sensors: Door (4 endpoints), Occupancy (4 endpoints)
- Step 1: Write the new page content
- Overview — Rhombus IoT sensor capabilities (temperature, humidity, air quality, occupancy, door sensors)
- Prerequisites — API key, sensors deployed
- List All Sensors —
getMinimalClimateStateListwith CodeGroup (Python, JavaScript, cURL) and response example - Read Sensor Data —
getClimateEventsForSensorwith CodeGroup, showing temperature/humidity data - Configure Sensors —
getConfigandupdateDetailswith CodeGroup - Set Up Climate Alerts —
createClimatePolicywith CodeGroup showing threshold configuration - Environmental Gateways —
getMinimalEnvironmentalGatewayStateswith CodeGroup - Export Sensor Data —
/api/export/climateEventsfor CSV download - Next Steps — Cards linking to related pages
- Step 2: Validate and commit
Task 9: Fix WebSocket Content Issues
Files:- Modify:
websocket/overview.mdx(after Task 2 rename) - Modify:
websocket/event-monitoring.mdx - Modify:
websocket/connection-lifecycle.mdx - Modify:
websocket/stomp-protocol.mdx - Modify:
websocket/code-examples.mdx - Modify:
websocket/troubleshooting.mdx - Modify:
websocket/authentication.mdx
websocket- prefixed names.
- Step 1: Fix overview.mdx
wss://ws.itg.rhombussystems.com:8443/websocket (around line 29). Keep only the production URL.
- Step 2: Fix event-monitoring.mdx
- Expand the entity types table (line ~70-71): replace vague “Other entities” with known types from the API, or add a Note stating the full list is available via the WebSocket connection itself
- Rewrite line ~74: remove the
--all-eventsCLI flag reference. Replace with: “To receive all event types, omit the entity-type filter from your SUBSCRIBE destination.” - Add error handling to integration pattern examples (Slack webhook, webhook relay)
- Step 3: Fix connection-lifecycle.mdx
- Fix the reconnection example (line ~299-322): implement actual exponential backoff instead of flat
time.sleep(5):
- Step 4: Fix stomp-protocol.mdx
heart-beat:10000,0 but lines ~75 and ~108 show heart-beat:10000,10000. Check the actual server behavior and make all examples consistent.
- Step 5: Fix code-examples.mdx
<Tabs> component for Python/JavaScript/Go instead of sequential sections. This reduces the 675-line page to a more navigable format:
- Step 6: Fix troubleshooting.mdx
- Fix the docs URL: change
https://apidocs.rhombussystems.comtohttps://api-docs.rhombus.community - Fix the wscat/websocat section (line ~229-248): rename section to “Test with websocat” since that’s what the content actually demonstrates
- Supplement the curl connectivity test with a proper TCP check:
nc -zv ws.rhombussystems.com 8443
- Step 7: Fix authentication.mdx
- Fix Go snippet missing imports (
time,log,fmt) - Standardize placeholder tokens: use
YOUR_API_KEYconsistently (notyour-api-token)
- Step 8: Validate and commit
Task 10: Fix Remaining Page Issues
Files:-
Modify:
resources.mdx -
Modify:
webhooks.mdx -
Modify:
implementations/qr-code-access-control.mdx -
Modify:
implementations/webhook-listener.mdx - Step 1: Fix resources.mdx
- Step 2: Fix webhooks.mdx
- Fix the generic
/api-referencelink (line ~57) — link to a more specific section or remove the link text and say “See the API Reference for webhook integration endpoints” - Add a sample webhook payload (JSON) showing what a typical event notification looks like — this is the most common thing developers look for
- Link each CRUD operation bullet (Create, List, Update, Delete) to corresponding API endpoint descriptions
- Step 3: Fix qr-code-access-control.mdx
- Replace external API URL (line ~73) with internal root-relative link
- Remove or condense the “Benefits” section (lines ~419-447) — it reads like marketing
- Update the stale date in example response (
2024-08-01)
- Step 4: Fix webhook-listener.mdx
- Fix broken bold formatting on line ~684:
****Third Party Integrations ->Webhooks****→ proper markdown - Merge redundant “Next Steps” and “Additional Resources” sections into one
- Step 5: Validate and commit
Task 11: Final Validation
Run all Mintlify CLI validation commands and content quality checks to confirm everything is clean.- Step 1: Run mint validate
success build validation passed — zero warnings, zero errors.
- Step 2: Run mint broken-links
success no broken links found
- Step 3: Run mint a11y
- Step 4: Run content quality check
- Step 5: Verify page count and structure
- Step 6: Start dev server for manual spot check