From mblode-agent-skills
Generates folder structures, module contracts, middleware pipelines, and frontend/backend boundaries for TypeScript full-stack apps. Useful for project setup, monorepos, and architecture design.
npx claudepluginhub joshuarweaver/cascade-code-general-misc-4 --plugin mblode-agent-skillsThis skill uses the workspace's default tool permissions.
Define durable, easy-to-change architecture defaults for TypeScript apps.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Define durable, easy-to-change architecture defaults for TypeScript apps.
Copy and track this checklist:
Architecture progress:
- [ ] Step 1: Determine context (new vs existing codebase) and pick workflow
- [ ] Step 2: Run the chosen workflow end-to-end
- [ ] Step 3: Produce architecture brief using Output template
- [ ] Step 4: Run Validation loop (consistency, quality gates, operability)
- [ ] Step 5: Address any failed checks and re-run Validation loop
Architecture setup workflow.Adoption workflow.Output template.Validation loop before finalizing.Load references only when needed:
apps/ for deployable surfaces (api, web, admin).packages/ for shared libraries (shared, ui, icons, auth, proto).handler: transport only.service: business orchestration.dao: database access only.mapper: DB/proto/domain transformations.constants and types: module-local contracts.RequestContext:
import { AsyncLocalStorage } from "node:async_hooks";
type RequestContext = { tenantId: string; userId: string; traceId: string };
const store = new AsyncLocalStorage<RequestContext>();
export const getContext = () => store.getStore()!;
export const runWithContext = (ctx: RequestContext, fn: () => void) => store.run(ctx, fn);
getContext(); do not thread context params through business functions.registerServiceWithPolicies."use client" only for client-only behavior.Use references/stack-defaults.md as the default baseline. Deviate only when constraints require it.
Run this loop before finalizing architecture decisions:
npm run lintnpm run check-typesnpm run test --workspace=<pkg> (or equivalent targeted tests)Use this structure for architecture recommendations:
# Architecture brief
## Context and constraints
## Repo shape
## Backend module contracts
## Request context and middleware policy
## Frontend boundaries
## Testing strategy
## Rollout and rollback plan
## Open risks and follow-ups
ui-audit for final UI quality checks.ui-animation for motion-specific guidance.package.json in a monorepo — each app owns its deps.packages/.