Use when the user asks to "set up authentication", "add login", "add logout", "add sign in", "enable auth", "add role-based access", "add authorization", "protect routes", "configure identity provider", "configure Entra ID", "configure Entra External ID", "configure OpenID Connect", "add OIDC", "set up SAML", "set up WS-Federation", "set up local login", "add username password", "add Facebook login", "add Google sign in", "add Microsoft Account", "set up invitation login", or otherwise wants to set up authentication (login/logout) and role-based authorization for their Power Pages code site using any supported identity provider (Microsoft Entra ID, Entra External ID, OpenID Connect, SAML2, WS-Federation, local authentication, Microsoft Account, Facebook, or Google).
49
56%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./plugins/power-pages/skills/setup-auth/SKILL.mdQuality
Discovery
72%Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.
The description excels at trigger term coverage and distinctiveness, providing an exhaustive list of natural phrases users might say and clearly scoping to Power Pages. However, it is heavily weighted toward 'when to use' at the expense of clearly describing 'what the skill does' — the concrete actions, outputs, or steps it performs are largely absent. The description reads more like a trigger phrase index than a balanced skill description.
Suggestions
Add a clear opening sentence describing what the skill concretely does, e.g., 'Configures identity providers, generates authentication settings, creates login/logout pages, and sets up role-based access control for Power Pages code sites.'
Reduce the exhaustive trigger phrase list to the most common variations and consolidate the rest into a summary clause, e.g., 'or any supported identity provider (Entra ID, OIDC, SAML2, WS-Federation, local auth, social providers).'
| Dimension | Reasoning | Score |
|---|---|---|
Specificity | The description names the domain (Power Pages authentication/authorization) and mentions some actions like 'set up authentication', 'add login', 'protect routes', 'add role-based access', but it doesn't list concrete specific actions the skill performs (e.g., 'configures identity providers', 'generates authentication middleware', 'creates login pages'). It focuses more on trigger phrases than describing what the skill actually does. | 2 / 3 |
Completeness | The 'when' is extremely well-covered with explicit trigger phrases and a 'Use when...' clause. However, the 'what does this do' part is weak — it only vaguely states 'set up authentication (login/logout) and role-based authorization for their Power Pages code site' without describing the concrete outputs or steps the skill performs. The what is implied through the trigger terms rather than explicitly stated. | 2 / 3 |
Trigger Term Quality | Excellent coverage of natural trigger terms users would say, including variations like 'add login', 'add sign in', 'enable auth', 'configure Entra ID', 'add OIDC', 'set up SAML', 'add Facebook login', 'add Google sign in', 'add username password', etc. These are highly natural phrases a user would actually type. | 3 / 3 |
Distinctiveness Conflict Risk | Very clearly scoped to Power Pages authentication and authorization with specific identity providers listed. The mention of 'Power Pages code site' and specific providers like 'Entra ID', 'Entra External ID', 'WS-Federation' creates a distinct niche that is unlikely to conflict with general authentication skills. | 3 / 3 |
Total | 10 / 12 Passed |
Implementation
39%Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
This skill demonstrates exceptional workflow design with clear phasing, validation checkpoints, and comprehensive decision trees covering every provider type and edge case. However, it is severely undermined by its extreme length — the SKILL.md body is a monolithic document of thousands of lines that inlines content belonging in reference files (optional settings tables, provider walkthroughs, detailed implementation notes). The verbosity wastes context window budget and makes the skill harder to follow despite its logical structure.
Suggestions
Move the optional/advanced settings tables (OIDC, SAML2, WS-Fed, social, local, session/cookie — ~300+ lines) into a separate advanced-settings-reference.md file and reference it with a single link from Phase 2.1.1.
Move the Entra External ID 4-step walkthrough (~200+ lines) into a separate entra-external-id-setup.md reference file, keeping only a brief summary and link in the main SKILL.md.
Deduplicate the AllowContactMappingWithEmail security warning — it's copy-pasted verbatim in the OIDC, SAML2, WS-Federation, and social optional settings tables. Define it once in a reference and link to it.
Remove explanatory content Claude already knows (e.g., what PKCE is, how session cookies work with SlidingExpiration, what OWIN middleware does) — these add hundreds of tokens without teaching Claude anything new.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | This skill is extraordinarily verbose — thousands of lines of inline detail that could be split into reference files. It explains concepts Claude already knows (what OIDC is, how session cookies work, what PKCE is), repeats the same warnings multiple times (e.g., AllowContactMappingWithEmail security caveat is copy-pasted verbatim for every provider type), and includes massive inline tables of optional settings that belong in a reference file. | 1 / 3 |
Actionability | The skill provides concrete commands (create-site-setting.js invocations, specific file paths, exact site setting names/values) and detailed decision trees, but most code examples are fragments or pseudocode rather than complete executable implementations. The actual auth service code, component implementations, and page code are deferred to authentication-reference.md rather than shown inline, making the skill dependent on external files for executability. | 2 / 3 |
Workflow Clarity | The 8-phase workflow is clearly sequenced with explicit validation checkpoints (Phase 7 verifies file inventory, build success, and UI rendering), feedback loops (re-prompt on invalid input, fix-and-rebuild on build failure), and detailed branching logic at every decision point. Phase 1.5's discovery-and-merge flow and Phase 8.1's collision detection are particularly well-structured with explicit error recovery paths. | 3 / 3 |
Progressive Disclosure | This is a monolithic wall of text — the SKILL.md body is thousands of lines long with massive inline tables of optional settings, provider-specific walkthroughs, and detailed implementation notes that should be in separate reference files. While it references authentication-reference.md and authorization-reference.md, the vast majority of content that belongs in those files is duplicated inline. The optional settings tables alone (OIDC, SAML2, WS-Fed, social, local, session/cookie, global toggles) consume hundreds of lines that should be in a reference. | 1 / 3 |
Total | 7 / 12 Passed |
Validation
72%Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.
Validation — 8 / 11 Passed
Validation for skill structure
| Criteria | Description | Result |
|---|---|---|
skill_md_line_count | SKILL.md is long (2919 lines); consider splitting into references/ and linking | Warning |
allowed_tools_field | 'allowed-tools' contains unusual tool name(s) | Warning |
frontmatter_unknown_keys | Unknown frontmatter key(s) found; consider removing or moving to metadata | Warning |
Total | 8 / 11 Passed | |
b4c46e9
Table of Contents
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.