CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

authentication-portal-api

Build or troubleshoot portal JSON/native login clients, refresh, Documents, profile and admin APIs, and public JWKS. Use for HTTP contracts; portal Caddyfile wiring belongs to configuration-authentication.

Quality

80%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./.codex/skills/authentication-portal-api/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

75%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-built, highly specific HTTP contract skill: exact endpoints, headers, bodies, and status semantics with real error-recovery guidance and a clean one-level-deep reference structure. Main improvement room is in tightening the two longest sections, adding a verbatim JSON example or two, and expressing the refresh/JWKS flows as numbered sequences like the login challenge.

Suggestions

Tighten 'Portal Refresh Transports' and 'Public Signing-Key Discovery' into bullet-style contract statements (endpoint, headers, body, response, status codes) to cut token cost while keeping every fact.

Add one or two verbatim JSON examples (a login challenge response and a successful rotation response) so the wire contracts are copy-paste verifiable instead of described by field lists.

Present the refresh and JWKS flows as short numbered sequences like the login challenge steps, with explicit checkpoints for the 401/403/503 failure statuses.

DimensionReasoningScore

Conciseness

The body is dense with project-specific contract facts Claude cannot know elsewhere (e.g., 'X-Authcrunch-Refresh: 1', 'sandbox_secret' rotation rules, JWKS mount boundary) and explains no general concepts, but the long prose paragraphs in 'Portal Refresh Transports' and 'Public Signing-Key Discovery' could be tightened into leaner contract statements. This fits 'Efficient; minor instances of over-explanation that could be trimmed' better than the anchor above (5), since some multi-clause sentences carry redundancy ('A 401 denial is a different status, but also does not authorize retry...').

4 / 5

Actionability

Concrete, near-executable guidance throughout: exact endpoints ('POST <base>/api/refresh_token'), exact headers, exact bodies ("{'refresh_token':'<credential>'}", 'POST {}'), status-code semantics (401/403/503/405), and a fully specified login challenge sequence with field names. It falls short of 5 only because no verbatim JSON request/response examples are shown; response shapes are listed as field names rather than copy-paste examples, and some shapes are deferred to references.

4 / 5

Workflow Clarity

The login challenge sequence is a clean numbered 5-step flow with success conditions ('When all checkpoints pass...'), and the Troubleshooting section gives symptom-to-cause-to-fix recovery ('Login sequence fails after password: verify the client preserved the latest sandbox_id...'). Not 5 because the refresh and JWKS flows are prose rather than sequenced steps, so checkpoints across those flows are implicit rather than explicit.

4 / 5

Progressive Disclosure

All 8 references/*.md files referenced in the body exist and are clearly signaled with a consistent 'For X, read [Y]' pattern, one level deep, organized under topic sections. It misses 5 because substantial inline contract detail (the ~60-line 'Portal Refresh Transports' section, ~50-line 'Public Signing-Key Discovery') remains in SKILL.md where a reference split, like the login section's use of native-client.md, would apply.

4 / 5

Total

16

/

20

Passed

Description

78%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong, specific description that names concrete capabilities, gives an explicit use-for clause plus a boundary statement that cleanly separates it from sibling configuration skills. The main gains left are a richer set of natural trigger phrases and a slightly expanded 'when' clause naming user-mentionable operations.

Suggestions

Expand the 'Use for' clause with concrete trigger phrases users would actually say, e.g., 'Use when building or debugging portal login, token refresh, whoami, admin API, or JWKS clients'.

Name the status/identity endpoints (/whoami, /beacon) among the capabilities so the what-clause covers every major body section.

DimensionReasoningScore

Specificity

It names several concrete capabilities — 'Build or troubleshoot portal JSON/native login clients, refresh, Documents, profile and admin APIs, and public JWKS' — covering nearly every body section. Not 5 because coverage is compressed ('refresh' alone is terse) and omits capability areas present in the body such as the /whoami and /beacon status/identity endpoints; clearly above 3, which expects only 1-2 concrete actions.

4 / 5

Completeness

Both parts are present: 'Build or troubleshoot portal JSON/native login clients...' answers what, and 'Use for HTTP contracts' explicitly answers when, further sharpened by the boundary clause 'portal Caddyfile wiring belongs to configuration-authentication'. Not 5 because the when-clause is terse and abstract — it lacks concrete user-mentionable trigger phrases like 'when building or debugging portal login, refresh, or JWKS clients' — so 'when could be more explicit or specific' is the closest anchor.

4 / 5

Trigger Term Quality

Good natural keyword coverage for this domain: 'login', 'refresh', 'Documents', 'profile', 'admin APIs', 'public JWKS', plus the trigger phrase 'HTTP contracts'. A few natural terms users would mention are missing ('token refresh', 'session', 'whoami', 'beacon'), so it fits 'good keyword coverage; a few natural terms missing' rather than the comprehensive-synonyms anchor at 5.

4 / 5

Distinctiveness Conflict Risk

Clear niche with distinct triggers ('portal', 'JSON/native login clients', 'public JWKS') and an explicit de-confliction sentence routing Caddyfile wiring to the sibling skill: 'portal Caddyfile wiring belongs to configuration-authentication'. This is exactly the minimal-conflict pattern of the 5 anchor; nothing pushes toward 4.

5 / 5

Total

17

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

relative_links

Relative link issues: 11 suspicious

Warning

Total

15

/

16

Passed

Repository

greenpau/caddy-security

Path

.codex/skills/authentication-portal-api/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.