doc-identity — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited doc-identity (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
internal/identity/)Authentication, authorization, SSO, team management, and daemon node onboarding.
domain/types.go)UserID, TeamID — UUID-based identifiersMemberRole — "admin" or "member"Team — ID, Name, Slug, Description, timestampsUser — ID, Email, DisplayName, PasswordHash, SSOProvider, SSOSubject, Role, TeamID, timestampsActor — UserID, Email, Role + IsAdmin() method (request-scoped auth context)DaemonActor — NodeID, OwnerUserID, Mode + IsZero() methoddomain/node.go)NodeID, OnboardingCodeID — UUID-based identifiersNodeMode — "default" or "shared"NodeStatus — "active" or "revoked"Node — ID, OwnerUserID, Name, Mode, Status, RefreshTokenHash, LastSeenAt, RevokedAt, timestampsOnboardingCode — ID, Code (6-digit), CreatedByUserID, NodeMode, NodeName, ExpiresAt, UsedAt, UsedByNodeIDNodeAccess — ID, NodeID, UserID (nullable), TeamID (nullable)domain/ssoconfig.go)SsoProvider — Name, Icon, SAML (nullable), OIDC (nullable)OIDCConfig — IssuerURL, ClientID, ClientSecret, RedirectURL, ScopesSAMLConfig — MetadataURL, EntityID, ACSURL, Certificate (not yet supported)domain/ttl.go)domain/errors.go)ErrUnauthorized, ErrForbidden, ErrUserNotFound, ErrInvalidCredentials, ErrEmailAlreadyExists, ErrSSOUserNoPassword, ErrTeamNotFound, ErrTeamSlugConflict, ErrSSOProviderNotFound, ErrSSONotSupported, ErrNodeNotFound, ErrNodeRevoked, ErrOnboardingCodeNotFound/Expired/Used
UserRepository — Create, FindByID, FindByEmail, FindBySSO, Update, ListAll, ListByTeamTeamRepository — Create, FindByID, FindBySlug, List, Update, DeleteNodeRepository — Create, FindByID, ListByOwner, ListActiveByOwner, Update, UpdateLastSeenOnboardingCodeRepository — Create, FindByCode, MarkUsed (FOR UPDATE lock), DeleteExpiredNodeAccessRepository — GrantUser/Team, RevokeUser/Team, ListByNode, HasAccess (ON CONFLICT DO NOTHING)AuthCommands — Register, Login, LoginSSO, RefreshToken, Logout, UpdateProfile, ChangePassword, RefreshDaemonTokenAuthQueries — ValidateJWT, ValidateDaemonJWT, GetCurrentUserTeamCommands — CreateTeam, UpdateTeam, DeleteTeam, AddUserToTeam, RemoveUserFromTeam, SetUserRoleTeamQueries — ListTeams, GetTeam, ListUsers, ListTeamMembersOnboardingCommands — GenerateCode, CompleteOnboardingNodeCommands — RevokeNode, UpdateNodeAccess, RenameNodeNodeQueries — ListNodes, GetNodeapp/auth.go)app/sso.go)app/teams.go)actor.IsAdmin()app/onboarding.go)app/nodes.go)POST /api/auth/register — Register new user
POST /api/auth/login — Login (email/password, remember_me)
POST /api/auth/refresh — Refresh access token (refresh_token cookie)
POST /api/auth/logout — Clear refresh_token cookie
GET /api/auth/me — Get current user
PATCH /api/auth/me — Update display name
POST /api/auth/me/password — Change passwordGET /api/auth/sso/providers — List configured providers
GET /api/auth/sso/{provider}/authorize — OIDC authorization initiation
GET /api/auth/sso/{provider}/callback — OIDC callback (returns #sso_token=...)GET /api/identity/teams — List teams
POST /api/identity/teams — Create team (admin)
DELETE /api/identity/teams/{id} — Delete team (admin)
GET /api/identity/users — List users (admins see emails)
PUT /api/identity/users/{id}/team — Add user to team (admin)
DELETE /api/identity/users/{id}/team — Remove from team (admin)
PUT /api/identity/users/{id}/role — Set user role (admin)POST /api/onboarding/codes — Generate onboarding code (auth required)
POST /api/onboarding/complete — Complete onboarding (unauthenticated)
POST /api/daemon/refresh — Refresh daemon token (unauthenticated)
GET /api/nodes — List nodes (auth required)
GET /api/nodes/{id} — Get node (ownership required)
DELETE /api/nodes/{id} — Revoke node (ownership required)
PATCH /api/nodes/{id}/name — Rename node
PUT /api/nodes/{id}/access — Update access grants (shared mode only)init.go)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.