A2A agent protocol interoperability, Agent Cards, and MCP bridging / Protokol agen A2A, Agent Cards, dan integrasi MCP.
日本語の概要は準備中です。原文の説明を表示しています。
Software architecture guidelines to maintain code readability (Clean Code, SOLID, DRY) and application scalability / Panduan arsitektur perangkat lunak untuk menjaga keterbacaan kode (Clean Code, SOLID, DRY) dan kemampuan skalabilitas aplikasi.
日本語の概要は準備中です。原文の説明を表示しています。
実行スコア 未検証
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
<a name="english"></a>
zero-to-prod-orchestrator (Phase 2 foundation & Phase 5 refactoring), brainstorming, session-memory-manager.domain-driven-design-expert (bounded contexts & entities), living-codebase-ast-graph (symbol dependency mapping & blast radius).anti-slop (Hyper-YAGNI & zero placeholder enforcement), zero-tech-debt-auditor (code smells & dead code removal), biome-linter-formatter-expert.legacy-code-translator (strangler fig architecture), typescript-expert (type-safe clean patterns).Software architecture guidelines for writing clean, scalable, and maintainable code. Covers SOLID principles, DRY/YAGNI/KISS, Clean Architecture layers, Vertical Slice Architecture (the modern alternative to layered architecture), Domain-Driven Design (DDD) patterns, and practical refactoring techniques.
A module/class/function should have one reason to change. In 2026 React/Node.js context:
useUserQuery() hook (fetch), transformUser() util (transform), UserCard component (render).Open for extension, closed for modification. Use composition and strategy pattern:
// Bad: modify existing code every time a new payment provider is added
function processPayment(type: 'stripe' | 'polar' | 'paypal', amount: number) {
if (type === 'stripe') { /* ... */ }
else if (type === 'polar') { /* ... */ }
}
// Good: extend by adding new providers, not modifying existing code
interface PaymentProvider {
charge(amount: number): Promise<Receipt>;
}
class StripeProvider implements PaymentProvider { ... }
class PolarProvider implements PaymentProvider { ... }
function processPayment(provider: PaymentProvider, amount: number) {
return provider.charge(amount);
}
High-level modules should not depend on low-level modules — both should depend on abstractions:
// Bad: handler directly imports concrete DB client
import { db } from './postgres-client';
// Good: inject the repository interface
interface UserRepository {
findById(id: string): Promise<User | null>;
save(user: User): Promise<void>;
}
async function getUser(repo: UserRepository, id: string) {
return repo.findById(id);
}
The modern alternative to traditional layered architecture (Controller → Service → Repository). Organize code by feature (vertical slice) rather than by technical layer (horizontal slice):
Traditional (Layered):
src/
controllers/ ← all controllers together
services/ ← all services together
repositories/ ← all repositories together
Vertical Slice:
src/
features/
users/
create-user.handler.ts ← all logic for "create user" in one place
create-user.schema.ts
create-user.test.ts
products/
list-products.handler.ts
list-products.schema.ts
Benefits of VSA:
// features/users/create-user.handler.ts
// One file contains the complete "create user" vertical slice
import { z } from 'zod';
import { db } from '@/lib/db';
import { sendWelcomeEmail } from '@/lib/email';
export const CreateUserSchema = z.object({
name: z.string().min(2),
email: z.string().email(),
});
export type CreateUserInput = z.infer<typeof CreateUserSchema>;
export async function handleCreateUser(input: CreateUserInput) {
const validated = CreateUserSchema.parse(input);
const user = await db.user.create({ data: validated });
await sendWelcomeEmail(user.email, user.name);
return user;
}
getUsersByWorkspace() not getData().userCount, activeWorkspaces).fetchUser, validateInput, sendEmail).isActive, hasPermission, canEdit).workspace not ws, configuration not cfg.// TODO or // .... All code must be 100% complete and operational.// return user, // increment count). Comments must explain non-obvious business invariants or vendor bugs only.anti-slop compliance via node scripts/check-anti-slop.js --strict.| Smell | Symptom | Refactoring |
|---|---|---|
| God Class | Class does everything | Extract Class, Move Method |
| Long Method | Method > 30 lines | Extract Method |
| Feature Envy | Method uses another class's data excessively | Move Method |
| Data Clumps | Same 3+ params appear together repeatedly | Introduce Parameter Object |
| Magic Numbers | if (status === 3) | Extract Constant |
| Shotgun Surgery | One change requires edits in many places | Move Method, Inline Class |
| Primitive Obsession | Using string/int for domain concepts | Replace with Value Object |
When choosing an architecture, ask:
<a name="bahasa-indonesia"></a>
zero-to-prod-orchestrator (Pondasi Fase 2 & refaktor Fase 5), brainstorming, session-memory-manager.domain-driven-design-expert (bounded context & entitas), living-codebase-ast-graph (pemetaan dependensi simbol & radius dampak).anti-slop (penegakan Hyper-YAGNI & nol placeholder), zero-tech-debt-auditor (pembersihan code smell & kode mati), biome-linter-formatter-expert.legacy-code-translator (arsitektur strangler fig), typescript-expert (pola clean type-safe).Panduan arsitektur perangkat lunak untuk menulis kode yang bersih, skalabel, dan mudah dirawat. Mencakup prinsip SOLID, DRY/YAGNI/KISS, lapisan Clean Architecture, Vertical Slice Architecture (alternatif modern dari layered architecture), pola Domain-Driven Design (DDD), dan teknik refactoring praktis.
Setiap modul/kelas/fungsi harus memiliki satu alasan untuk berubah. Pisahkan pengambilan data, transformasi data, dan rendering UI.
Terbuka untuk ekstensi, tertutup untuk modifikasi. Gunakan komposisi dan pola strategi — tambah provider baru tanpa mengubah kode yang ada.
Modul tingkat tinggi tidak boleh bergantung pada modul tingkat rendah — keduanya harus bergantung pada abstraksi (interface).
Alternatif modern dari layered architecture tradisional. Organisasikan kode berdasarkan fitur (irisan vertikal), bukan lapisan teknis (irisan horizontal).
Keuntungan VSA:
getUsersByWorkspace() bukan getData().jumlahPengguna, workspaceAktif).ambilPengguna, validasiInput).aktif, punyaIzin, bisaEdit).// TODO atau // .... Seluruh kode harus 100% lengkap dan fungsional.// return user, // increment count). Komentar hanya untuk menjelaskan alasan arsitektural atau aturan bisnis non-obvious.anti-slop via node scripts/check-anti-slop.js --strict.Identifikasi dan perbaiki: God Class, Long Method, Feature Envy, Data Clumps, Magic Numbers, Shotgun Surgery, Primitive Obsession.
まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
A2A agent protocol interoperability, Agent Cards, and MCP bridging / Protokol agen A2A, Agent Cards, dan integrasi MCP.
日本語の概要は準備中です。原文の説明を表示しています。
Expert guide for automated and manual Web Accessibility (a11y) testing — axe-core, Pa11y, Playwright a11y, screen reader testing, and WCAG 2.2 Level AA/AAA compliance / Panduan ahli pengujian aksesibilitas web.
日本語の概要は準備中です。原文の説明を表示しています。
Web accessibility testing with axe-core, Playwright, and WCAG 2.2 / Pengujian aksesibilitas web axe-core, Playwright, dan WCAG 2.2.
日本語の概要は準備中です。原文の説明を表示しています。
Model cascading & complexity-scored routing (Grok, Gemini, Claude) / Routing kaskade model & scoring kompleksitas (Grok, Gemini, Claude).
日本語の概要は準備中です。原文の説明を表示しています。
Expert guide for intelligent model cascading and routing — complexity-scored task routing from Flash/Haiku to Sonnet/Opus/Astra, dynamic escalation with quality gates, 40-60% token cost reduction while maintaining output quality / Panduan ahli untuk kaskade dan routing model cerdas — routing tugas berbasis skor kompleksitas dari Flash/Haiku ke Sonnet/Opus/Astra, eskalasi dinamis dengan gerbang kualitas, pengurangan biaya token 40-60% dengan kualitas output terjaga.
日本語の概要は準備中です。原文の説明を表示しています。
Affective computing, emotion AI, and multimodal sentiment analysis / Komputasi afektif, AI emosional, dan analisis sentimen multimodal.
日本語の概要は準備中です。原文の説明を表示しています。