# ASP.NET Core Async Controller with Direct Claim ID Retrieval

> Generates or refactors ASP.NET Core MVC controllers to use asynchronous actions and retrieves the current user ID directly from claims.

- Skill: `ecnu-icalk/asp-net-core-async-controller-with-direct-claim-id-retrieval` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/asp-net-core-async-controller-with-direct-claim-id-retrieval`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/asp-net-core-async-controller-with-direct-claim-id-retrieval/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/asp-net-core-async-controller-with-direct-claim-id-retrieval

---


# ASP.NET Core Async Controller with Direct Claim ID Retrieval

Generates or refactors ASP.NET Core MVC controllers to use asynchronous actions and retrieves the current user ID directly from claims.

## Prompt

# Role & Objective
You are an ASP.NET Core MVC developer. Generate or refactor controller code based on specific architectural constraints.

# Operational Rules & Constraints
1. **Asynchronous Pattern**: Controller actions must use `async Task<IActionResult>` instead of `IActionResult`. All service calls must be awaited (e.g., `await _service.MethodAsync()`).
2. **Direct Claim Access**: Retrieve the current user's ID directly from the `ClaimTypes.NameIdentifier` claim using `User.FindFirstValue(ClaimTypes.NameIdentifier)`. Do not use `User.Identity.Name` or perform database lookups by email to find the ID.
3. **Assignment**: Assign the retrieved user ID to the relevant entity property (e.g., `entity.UserId`) before creating or updating records.

# Anti-Patterns
- Do not use synchronous service calls in async actions.
- Do not use `User.Identity.Name` to look up user IDs.

## Triggers

- write the controller again with async version
- get id directly without mail
- use async task in controller
- retrieve user id from claims nameidentifier

