backend-development
バックエンドAPIの設計、データベースアーキテクチャ、マイクロサービスパターン、テスト駆動開発を支援するスキル。API設計やデータベーススキーマの構築、バックエンドシステムのアーキテクチャ設計が必要なときに活用してください。
description の原文を見る
Backend API design, database architecture, microservices patterns, and test-driven development. Use for designing APIs, database schemas, or backend system architecture.
SKILL.md 本文
バックエンド開発
API設計
RESTful規約
GET /users # ユーザー一覧取得
POST /users # ユーザー作成
GET /users/:id # ユーザー取得
PUT /users/:id # ユーザー更新(全項目)
PATCH /users/:id # ユーザー更新(部分更新)
DELETE /users/:id # ユーザー削除
GET /users/:id/posts # ユーザーの投稿一覧取得
POST /users/:id/posts # ユーザーの投稿作成
レスポンス形式
{
"data": { ... },
"meta": {
"page": 1,
"per_page": 20,
"total": 100
}
}
エラー形式
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid input",
"details": [
{ "field": "email", "message": "Invalid format" }
]
}
}
データベースパターン
スキーマ設計
-- 公開IDにはUUIDを使用
CREATE TABLE users (
id SERIAL PRIMARY KEY,
public_id UUID DEFAULT gen_random_uuid() UNIQUE,
email VARCHAR(255) UNIQUE NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- ソフトデリート
ALTER TABLE users ADD COLUMN deleted_at TIMESTAMPTZ;
-- インデックス
CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_users_created ON users(created_at DESC);
クエリパターン
-- カーソルを使用したページネーション
SELECT * FROM posts
WHERE created_at < $cursor
ORDER BY created_at DESC
LIMIT 20;
-- 効率的なカウント
SELECT reltuples::bigint AS estimate
FROM pg_class WHERE relname = 'users';
認証
JWTパターン
interface TokenPayload {
sub: string; // ユーザーID
iat: number; // 発行時刻
exp: number; // 有効期限
scope: string[]; // パーミッション
}
function verifyToken(token: string): TokenPayload {
return jwt.verify(token, SECRET) as TokenPayload;
}
ミドルウェア
async function authenticate(req: Request, res: Response, next: Next) {
const token = req.headers.authorization?.replace('Bearer ', '');
if (!token) {
return res.status(401).json({ error: 'Unauthorized' });
}
try {
req.user = verifyToken(token);
next();
} catch {
res.status(401).json({ error: 'Invalid token' });
}
}
キャッシング戦略
// キャッシュアサイドパターン
async function getUser(id: string): Promise<User> {
const cached = await redis.get(`user:${id}`);
if (cached) return JSON.parse(cached);
const user = await db.users.findById(id);
await redis.setex(`user:${id}`, 3600, JSON.stringify(user));
return user;
}
// キャッシュ無効化
async function updateUser(id: string, data: Partial<User>) {
await db.users.update(id, data);
await redis.del(`user:${id}`);
}
レート制限
const limiter = rateLimit({
windowMs: 60 * 1000, // 1分
max: 100, // ウィンドウあたり100リクエスト
keyGenerator: (req) => req.ip,
handler: (req, res) => {
res.status(429).json({ error: 'Too many requests' });
}
});
可観測性
- ロギング: リクエストIDを含む構造化JSONログ
- メトリクス: リクエストレイテンシ、エラー率、キューの深さ
- トレーシング: 相関IDによる分散トレーシング
- ヘルスチェック:
/healthと/readyエンドポイント
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- skillcreatorai
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/skillcreatorai/ai-agent-skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。