From noop
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.
How this skill is triggered — by the user, by Claude, or both
Slash command
/noop:architecture-guideThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill provides guidance on implementing code that follows the noop architectural patterns.
This skill provides guidance on implementing code that follows the noop architectural patterns.
Automatically use this skill when:
@docs/universal-framework/PHILOSOPHY.md
@docs/universal-framework/ARCHITECTURE_SPEC.md
@docs/universal-framework/CONVENTIONS.md
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)
})
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)
}
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])
}
// 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)
// Always .js extension
import { config } from './config.js'
// Type imports
import type { UserInfo } from '../types/user.types.js'
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)
npx claudepluginhub joshuarweaver/cascade-code-general-misc-4 --plugin hdeibler-noopGuides reception of code review feedback: verify before implementing, avoid performative agreement, push back with technical reasoning when needed.
Design banners for social media, ads, website heroes, and print with multiple art direction options and AI-generated visuals.