← スキル一覧に戻る

noop-architecture
by HDeibler
Production-ready Express + TypeScript + PostgreSQL + Redis project generator for Claude Code
⭐ 0🍴 0📅 2026年1月7日
SKILL.md
name: noop-architecture description: Guide for implementing code following the noop function-first, layered architecture. Use when writing handlers, services, database operations, or middleware. Automatically invoked when working on noop-based projects.
Noop Architecture Guide
This skill provides guidance on implementing code that follows the noop architectural patterns.
When Claude Should Use This
Automatically use this skill when:
- Writing new handlers or services in a noop project
- Implementing database operations
- Adding middleware
- Reviewing code for architectural compliance
- The user asks about noop patterns or conventions
Framework Context
Core Philosophy (MUST FOLLOW)
@docs/universal-framework/PHILOSOPHY.md
Architecture Specification (LAYER RULES)
@docs/universal-framework/ARCHITECTURE_SPEC.md
Coding Conventions (NAMING & STYLE)
@docs/universal-framework/CONVENTIONS.md
Layer Summary
Handlers - Orchestration Only
export const create = asyncHandler(async (req, res) => {
const { name } = req.body
if (!name) throw createError.requiredField('name')
const dbStore = getDbStore()
const item = await service.create(data, req.user.organizationId, dbStore)
return sendSuccess(res, item, 'Created', 201)
})
Services - Business Logic
export async function create(
data: CreateInput,
organizationId: string,
dbStore: DbStore
): Promise<ItemInfo> {
if (!organizationId) throw new Error('organizationId required')
return dbStore.items.create(data, organizationId)
}
Ops - Database Operations
async create(data: CreateInput, organizationId: string): Promise<ItemInfo> {
if (!organizationId) throw new Error('organization_id required')
const result = await this.pgClient.executeQuery(
'INSERT INTO items (...) VALUES ($1, $2, $3) RETURNING *',
[id, data.name, organizationId]
)
return this.mapRowToItem(result.rows[0])
}
Critical Anti-Patterns (NEVER DO)
// 1. Silent fallbacks
catch { return defaultValue } // ❌ NEVER
// 2. Any types
function process(data: any) { } // ❌ NEVER
// 3. Missing org scoping
async getById(id: string) { } // ❌ NEVER
// 4. Field fallbacks
id = a.id || a.data.id // ❌ NEVER
// 5. Logic in handlers
const x = items.map(transform) // ❌ NEVER (in handler)
Import Rules
// Always .js extension
import { config } from './config.js'
// Type imports
import type { UserInfo } from '../types/user.types.js'
Response Utilities
import { createError } from '../utils/errors.js'
import { sendSuccess, sendPaginatedResponse } from '../utils/standardResponse.js'
// Validation
if (!name) throw createError.requiredField('name')
if (!item) throw createError.notFound('Item', id)
// Success responses
return sendSuccess(res, item, 'Created', 201)
return sendPaginatedResponse(res, items, pagination)
スコア
総合スコア
50/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
レビュー
💬
レビュー機能は近日公開予定です