Install
openclaw skills install skills-sh:samber/developer-platform-skills/api-status-communicationAPI Status Communication You are designing how an API platform tells its external consumers what is happening - the status page, incident updates, public postmortems, SLA/SLO reporting, and maintenance notices. The deliverable is a communication practice, not a monitoring…
openclaw skills install skills-sh:samber/developer-platform-skills/api-status-communicationYou are designing how an API platform tells its external consumers what is happening - the status page, incident updates, public postmortems, SLA/SLO reporting, and maintenance notices. The deliverable is a communication practice, not a monitoring stack: measurement belongs to the platform's observability tooling; you own what the outside world sees and when.
Trustworthiness is the design constraint every step below serves. A status page is a trust signal before it is a technical tool, and the documented failure mode is status theater: one sourced case (OneUptime) shows a page reading green for the first 35 minutes of a 54-minute incident because a human had to decide to flip it.
The visible symptom of lost trust is migration to third-party complaint aggregators (DownDetector et al.) - users prefer them not because they are more accurate but because they aren't controlled by the company having the outage. Treat that migration as this practice's failure metric, and tie status to real monitoring rather than human gatekeeping throughout.
Memory (advised): When memory lives in a file, consider using developer-platform-context.md; if a different memory system is in use, rely on that instead. The file is an advisory reference, not a mandatory requirement. Separate task info in different sections. Remove finished tasks. Add a date to a task; no date for general project context. Some interview responses may differ between 2 tasks.
Ask these before designing anything; each answer changes a later step. Batch them - this is a tactical design task, not a strategy interview.
Question 7 exists because the channel and postmortem menus diverge sharply on effort and on how long the payoff lasts, and neither ranking in steps 3 and 5 can be picked without it.
If your harness has persistent memory, store the practice's core decisions: component model and blend rule, escalation thresholds, channel set, postmortem-depth policy, published SLA edge cases. Later runs - a live incident, a postmortem, a maintenance notice - start from the practice instead of re-deriving it.
Regardless of whoever bought the product, the people reading a status page during an incident split by role, and the two roles want different pages:
Audience-tiered pages are the established pattern for API providers when the mix demands it:
Default to one public developer-facing page and add tiers only when question 3 shows a real second audience - every extra tier is another surface to keep consistent during a live incident.
Each step has a section below, in order.
A status page is a pull channel - the customer has to go check it. Subscriptions (email, RSS, webhook, SMS) are push. Cloudflare's own self-critique of its pull-only page - it creates "confusion and wasted resources" during live incidents - is the design argument: a mature practice needs both, not either.
efficiency: page + built-in email/RSS subscription > webhook push > SMS push
value during a live incident: any push channel > the pull page alone
effort: SMS push > webhook push > page + email/RSS subscription
Default rung: the status page with email and RSS subscription enabled. With hosted status tooling this comes nearly free, and subscription is a support-load lever, not a courtesy - letting affected users self-serve the answer measurably reduces inbound tickets during an incident (Atlassian).
Promote webhook push when question 3 says developers: an integrator audience wires status into its own alerting, and machine-readable push is what makes that possible. If the platform already runs webhook infrastructure, this rung gets cheap - the delivery machinery is sibling samber/developer-platform-skills@webhook-platform-design territory; you only define the status event.
Promote SMS/phone-grade push for enterprise customers with contractual SLAs - the audience whose contracts (question 4) often expect it, and the only rung whose per-message cost and deliverability work justify the effort.
Deleted, not demoted: SMS/phone-grade push with no contractual audience. When question 4 returns no SLAs with consequences and question 3 no enterprise tier, this rung leaves the menu rather than sitting at its bottom - per-message cost and deliverability work bought for nobody. Not parked last, because "we could add SMS later" reappears as scope every time an incident feels loud. Re-promotion trigger: the first contract that specifies a notification channel.
The starved option: out-of-band redundancy - hosting the page off the platform's own infrastructure and keeping at least one channel that works when your DNS or CDN is down. Highest effort, invisible value on a good day, so it loses every efficiency round; question 5 is what promotes it, because a status page that dies with the platform is worth nothing at the only moment it matters. Status pages becoming unreachable during the outage they should be reporting is a documented failure mode.
This ranking is a default, not a law. Re-rank against what you know about the user and say which answer moved which rung:
Run every incident through the four statuses of step 1, writing updates against Atlassian's five practices - the industry checklist:
Title incidents in plain language stating the nature of the problem ("Elevated error rates on the REST API in eu-west"), never internal codenames - internal template names exist for team organization and must not surface publicly. Map your internal severity vocabulary (SEV1-4 or equivalent) onto component states once, in writing, so responders know what to flip without debating it mid-incident.
See references/incident-update-templates.md for per-status update templates, a severity-to-component-state mapping, and good/bad update pairs.
Publishing a postmortem externally is a deliberate decision - it affects legal exposure, customer trust, and reliability culture. The sourced default for developer platforms leans toward publishing anyway.
Google SRE's position is that a postmortem's value is proportional to the learning it creates, so sharing it "perhaps even with your customers" multiplies that value. Google SRE also calls a thoughtful and honest postmortem "a key tool in restoring shaken trust."
Depth ladder for what to publish per incident:
value for rebuilding developer trust: engineering-blog postmortem > status-page summary postmortem > resolved-note only
effort: engineering-blog postmortem > status-page summary postmortem > resolved-note only
compliance cost: engineering-blog postmortem > status-page summary postmortem > resolved-note only - the deep write-up triggers legal and comms sign-off on cause language and named third parties, and every rung is irreversible once published: you can append a correction, never unpublish an admission an enterprise customer already screenshotted.
efficiency: status-page summary postmortem > resolved-note only > engineering-blog postmortem
Default rung: the status-page summary postmortem - impact, cause, fix, prevention in a few paragraphs, attached to the incident. Owed for any incident that consumers visibly felt.
Step down to a resolved-note only for brief blips with no consumer-visible impact beyond the incident entry itself.
Promote to a full public postmortem for major (P1-class) incidents - Cloudflare mandates a published incident report at that tier - and whenever trust is visibly shaken. For an API audience the engineering blog is the right channel: that audience is technical and reads the deep version for trust-building, not just resolution confirmation.
The full blog write-up is the starved rung - highest value, highest effort, loses every efficiency round - and the promotion conditions above are exactly what override that. This ranking is a default, not a law: re-rank against question 7 and the user's assets, and say which answer moved which rung.
An active engineering blog and practiced writers get the deep write-up nearly free, which flips the effort line.
A one-off fix under a hard deadline holds every incident at the summary rung.
Structure the external document around the three questions a customer actually has - why did this happen, could it have been worse, how do you make sure it won't happen again - and keep it blameless in the concrete sense: never name an individual human. Postmortems without follow-through are theater; action-item completion is part of this skill's measurement, not an afterthought.
See references/public-postmortem-structure.md for the full structure, the internal-to-external filtering step, blameless-writing rules, and a skeleton.
See references/sla-maintenance-reporting.md for edge-case definitions, the percentage-to-minutes table, and worked examples.
This skill owns the 24-hour-to-2-week notice horizon. The 6-12-month runway for deprecations and breaking changes is sibling samber/developer-platform-skills@api-versioning-policy territory - a maintenance window and a deprecation are different communications with different timelines; never blend them into one announcement.
Notice templates live in references/sla-maintenance-reporting.md.
Anti-pattern checklist - each is a direct audit finding:
The first three are gates - iterate the design until they pass. The last two are trends to watch afterwards, never pass thresholds.
See also, same collection:
samber/developer-platform-skills@api-error-design - designs what a single failed request returns; when the failure is the platform's fault at scale, this skill owns telling everyone.samber/developer-platform-skills@api-versioning-policy - deprecation and breaking-change communication on the 6-12-month horizon; this skill stops at the 2-week maintenance notice.samber/developer-platform-skills@webhook-platform-design - the webhook delivery machinery a status webhook-push channel rides on, and delivery status of webhooks themselves.samber/developer-platform-skills@integration-error-observability - per-integration error surfacing to an individual consumer, versus this skill's one-to-many broadcast.samber/developer-platform-skills@developer-portal-design - the portal that links the status page as a first-class entry point.samber/developer-platform-skills@public-roadmap-strategy - a slipped roadmap item is a roadmap update, not an incident; it never goes on the status page.436d806c08ec