ワンクリックで
planforge-new-repository
Scaffold a repository class with interface, parameterized queries, connection management, and async patterns.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Scaffold a repository class with interface, parameterized queries, connection management, and async patterns.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Run a comprehensive code review across architecture, security, testing, naming, and patterns. Invokes relevant reviewer agents in sequence. Use before merging features or at the end of a phase. With --quorum, dispatches multi-model analysis for higher confidence.
Audit UI components for WCAG 2.2 compliance, semantic HTML, ARIA labels, keyboard navigation, color contrast, and responsive design.
Audit API endpoints for backward compatibility, versioning, OpenAPI compliance, pagination, rate limiting, and RFC 9457 error responses.
Review code for architecture violations: layer separation, sync-over-async, missing CancellationToken, improper DI. Use for PR reviews or code audits.
Fix a bug using TDD: reproduce with a failing test first, then implement the fix, then verify. Prevents regressions.
Review CI/CD pipelines for best practices: environment promotion, secrets management, rollback strategies, build caching, and deployment safety.
| name | planforge-new-repository |
| description | Scaffold a repository class with interface, parameterized queries, connection management, and async patterns. |
| metadata | {"author":"plan-forge","source":".github/prompts/new-repository.prompt.md"} |
Scaffold a data access repository following clean architecture.
I{EntityName}Repository.cs)public interface I{EntityName}Repository
{
Task<{EntityName}Dto?> GetByIdAsync(Guid id, CancellationToken ct = default);
Task<IEnumerable<{EntityName}Dto>> GetAllAsync(int page, int pageSize, CancellationToken ct = default);
Task<{EntityName}Dto> InsertAsync(Create{EntityName}Request request, CancellationToken ct = default);
Task<bool> UpdateAsync(Guid id, Update{EntityName}Request request, CancellationToken ct = default);
Task<bool> DeleteAsync(Guid id, CancellationToken ct = default);
}
{EntityName}Repository.cs)public sealed class {EntityName}Repository(IDbConnectionFactory connectionFactory) : I{EntityName}Repository
{
public async Task<{EntityName}Dto?> GetByIdAsync(Guid id, CancellationToken ct = default)
{
const string sql = """
SELECT id AS Id, name AS Name, created_at AS CreatedAt
FROM {entity_name}s
WHERE id = @Id
""";
using var connection = await connectionFactory.CreateConnectionAsync(ct);
return await connection.QuerySingleOrDefaultAsync<{EntityName}Dto>(sql, new { Id = id });
}
}
{EntityName}Repository.cs)public sealed class {EntityName}Repository(AppDbContext context) : I{EntityName}Repository
{
public async Task<{EntityName}Dto?> GetByIdAsync(Guid id, CancellationToken ct = default)
{
return await context.{EntityName}s
.Where(e => e.Id == id)
.Select(e => new {EntityName}Dto(e.Id, e.Name, e.CreatedAt))
.FirstOrDefaultAsync(ct);
}
}
@Param) — NEVER string interpolationCancellationToken on every async methodusing or await using for connection disposalSELECT snake_col AS PascalPropScoped in DI