shared-signals
Skill1 starsChanged 31 days agoMITView on GitHub
Shared Signals (SSF, CAEP, RISC): send and receive security events between identity providers, apps and services. Use when building or reviewing an OpenID Shared Signals Framework transmitter or receiver: /.well-known/ssf-configuration discovery, stream management, subjects, verification events, push delivery (RFC 8935) or poll delivery (RFC 8936), and Security Event Token validation (RFC 8417). Also use it to emit or act on CAEP events such as session-revoked, credential-change, token-claims-change, assurance-level-change, device-compliance-change and risk-level-change, or RISC account events; to apply the CAEP Interoperability Profile or the OpenID SSF conformance tests; and to feed OpenID Connect Back-Channel Logout into revocation. Triggers: SSF, CAEP, RISC, shared signals, continuous access evaluation, security event token, SET, secevent+jwt, sub_id, subject identifiers, RFC 9493, session revocation, logout token.
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 48
Pick the event payloads: Use the CAEP and RISC event types with their required claims.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Shared Signals
The OpenID Shared Signals Framework (SSF) lets a transmitter send signed security events to receivers over managed streams. CAEP defines session and access events; RISC defines account events. With this skill an agent builds or reviews a transmitter or receiver, its event payloads, and its delivery and validation logic.
Follow the workflow below step by step. Every rule here comes from a source in Sources, with the section it cites. When a rule and the pinned source disagree, the source wins; when the source has a newer revision than the pin, follow the refresh steps.
Inputs (fill in, or ask before starting)
- Role: transmitter, receiver, or both.
- Delivery: push (
urn:ietf:rfc:8935), poll (urn:ietf:rfc:8936), or both. - Events: which CAEP, RISC or custom event types the stream carries.
- Profile: plain SSF 1.0, or the CAEP Interoperability Profile (pinned ID1, with the working-group draft tracked).
- Revision: the pinned revision in Sources, unless the user names another.
- Sources: when refreshing this skill or when a rule looks out of date, re-read every URL in Sources first, check the Shared Signals WG specifications page for a newer revision, and update the pins.
Invariants
These come from SSF 1.0 unless another document is named.
- Discovery is bound to the issuer (SSF §7.2, §7.2.4). Metadata lives at
/.well-known/ssf-configuration, inserted between host and path. Itsissuerequals the issuer URL used for discovery and theissof every SET. - Each SET is a typed JWT with one event (SSF §4.1.1, §4.2.1; RFC 8417 §2.3). The header
typissecevent+jwt. Each SET carries exactly one event inevents. - Subjects use
sub_id, neversub(SSF §3.1, §4.1.2; RFC 9493 §4.1). The top-levelsub_idholds a subject identifier with aformat. New event types MUST NOT use thesubjectevent member (§3.1.2). - No
expon SETs (SSF §4.1.7). Theissmatches the stream configuration (§4.1.6), andaudnames the receiver (§4.1.8). - Receivers validate before acting (RFC 8935 §2, SSF §4.1, RFC 8417). They check the signature against the transmitter's
jwks_urikeys, theniss,aud,typand the event type, and they ignore unknown members (SSF §4.2.3). - Delivery acknowledges correctly (RFC 8935 §2.2, RFC 8936 §2). A push endpoint returns 202 with an empty body, or 400 with an
errcode. A poll receiver acknowledges every SET byjti. - Streams are managed over authenticated HTTP (SSF §8). Creating a stream returns 201, and the receiver checks the
issin the response. Deleting a stream returns 204. - Status changes are announced (SSF §8.1.5). Before pausing or disabling a stream, and when re-enabling it, the transmitter sends
stream-updated. A paused stream holds events in order. - Verification proves the path (SSF §8.1.4). A verification event's
sub_idisopaquewith thestream_id. The receiver checks thatstatematches, and answersinvalid_stateif it does not. - Subject handling is privacy-safe (SSF §9.1, §9.3). An add-subject success does not mean the subject exists or that events will follow. Receivers tolerate events for subjects they removed.
Workflow
- Pin role, delivery, events and profile. Record the inputs. ✓ The event list and delivery method are named for each stream.
- Model SETs and subjects. Build or parse the SET claims and subject identifiers.
->
references/sets-and-subjects.md✓ Every SET hastypsecevent+jwt, one event, asub_id, and nosuborexp. - Pick the event payloads. Use the CAEP and RISC event types with their required claims.
->
references/events.md✓ Each event carries its required claims, using the spec's values. - Implement the transmitter. Metadata, stream configuration, status, subjects, verification and delivery.
->
references/transmitter.md✓ The well-known document, stream CRUD, status and verify endpoints answer with the status codes in the reference. - Implement the receiver. Discovery, stream creation, SET validation and push or poll handling.
->
references/receiver.md✓ A SET with a bad signature, wrongiss, wrongaudor wrongtypis rejected with the RFC 8935 error code. - Apply the CAEP Interoperability Profile if required. It pins mandatory endpoints, scopes, formats, algorithms and use cases.
->
references/caep-interop.md✓ Every MUST in the profile for the chosen role holds. - Connect Back-Channel Logout if relevant. Validate logout tokens and map them to session revocation.
->
references/backchannel-logout.md✓ Logout tokens are validated per Back-Channel Logout §2.6 and end the matching sessions.
Verify before done
GET /.well-known/ssf-configurationreturns metadata whoseissuerequals the discovery URL issuer.- Every SET header has
typ: secevent+jwt; every payload hasiss,jti,iat,aud,sub_idand exactly one event, and nosuborexp. - The receiver rejects a SET signed with an unknown key, with a wrong
issoraud, or with an unknown critical subject member. - Push returns 202 with no body on success, and 400 with
erranddescriptionon failure. - Poll acknowledges each processed
jtiand reports failures insetErrs. - A verification request returns 204, and the resulting event echoes
state. - Pausing or disabling a stream emits
stream-updatedfirst. - If the CAEP Interoperability Profile applies, the SSF conformance test plan for the role passes.
Reference index
references/sets-and-subjects.md: RFC 8417 SET claims, SSF restrictions, RFC 9493 subject formats and complex subjects.references/events.md: CAEP and RISC event types, their claims, and the SSF stream events.references/transmitter.md: metadata, stream management API, status, subjects, verification and delivery.references/receiver.md: discovery checks, stream creation, SET validation, push and poll handling, with TypeScript.references/caep-interop.md: CAEP Interoperability Profile ID1, the working-group draft changes, and SSF conformance testing.references/backchannel-logout.md: OpenID Connect Back-Channel Logout tokens and validation.
Related skills
jwtfor JWS signing and verification of SETs:npx skills add ScaleDockHQ/scaledock-skills --skill jwt.oauthfor the access tokens that protect the stream management API:npx skills add ScaleDockHQ/scaledock-skills --skill oauth.openid-connectfor the sessions and logout that CAEP events revoke:npx skills add ScaleDockHQ/scaledock-skills --skill openid-connect.openidfor an overview of OpenID Foundation specifications:npx skills add ScaleDockHQ/scaledock-skills --skill openid.fapifor high-security OAuth deployments that consume these signals:npx skills add ScaleDockHQ/scaledock-skills --skill fapi.
Sources
Status uses the publishing body's own maturity term. Checked is the date the source was last read.
- OpenID Shared Signals Framework Specification 1.0: Final, published 29 August 2025, checked 2026-10-02.
- OpenID Continuous Access Evaluation Profile 1.0: Final, published 29 August 2025, checked 2026-10-02.
- OpenID RISC Profile Specification 1.0: Final, published 29 August 2025, checked 2026-10-02.
- CAEP Interoperability Profile: Implementer's Draft, ID1 (document labelled draft 00, 25 June 2024), checked 2026-10-02. Draft posture: build, pinned to ID1.
- CAEP Interoperability Profile, working-group draft: WG draft, draft 01, 1 September 2026, checked 2026-10-02. Draft posture: track, because the SSF conformance tests already follow it.
- RFC 8417: Security Event Token (SET): RFC, July 2018, checked 2026-10-02.
- RFC 8935: Push-Based SET Delivery Using HTTP: RFC, November 2020, checked 2026-10-02.
- RFC 8936: Poll-Based SET Delivery Using HTTP: RFC, November 2020, checked 2026-10-02.
- RFC 9493: Subject Identifiers for Security Event Tokens: RFC, December 2023, checked 2026-10-02.
- OpenID Connect Back-Channel Logout 1.0: Final, 1.0 incorporating errata set 1, 15 December 2023, checked 2026-10-02.
- Shared Signals WG specifications: Index, page as read 2026-10-02, checked 2026-10-02.
- OpenID Shared Signals conformance testing: Published (tests in alpha), page as read 2026-10-02, checked 2026-10-02.
In this repository40 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- find-skillsSkill
- a2aSkill
- ag-uiSkill
- ap2Skill
- asyncapiSkill
- authzenSkill
- cedarSkill
- cloudeventsSkill
- eu-ai-actSkill
- fapiSkill
- gnapSkill
- jwtSkill
- mcp-authorizationSkill
- oauthSkill
- ocsfSkill
- openapi-arazzoSkill
- openapi-overlaySkill
- openapiSkill
- openfeatureSkill
- openid4vcSkill
- openid-connectSkill
- openid-federationSkill
- openidSkill
- opentelemetry-genaiSkill
- owasp-agenticSkill
- problem-detailsSkill
- ratelimit-headersSkill
- scaledock-agent-permissionsSkill
- scaledock-enterprise-identitySkill
- scaledock-http-apiSkill
- scaledock-mcp-serverSkill
- scaledock-repo-standardSkill
- scimSkill
- spiffeSkill
- standard-schemaSkill
- typespecSkill
- web-bot-authSkill
- webmcpSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

