app-renderer-systems
Guides creation and modification of domain feature systems organized under a systems/ directory.
Skill by Pedro Nauck
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/haryelramalho-app-renderer-systems
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: frontend, backend
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/app-renderer-systems
Tools it pre-approves 3
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Read,Grep,Glob
What's inside
- Skill name
app-renderer-systems- Description
- Guides creation and modification of domain feature systems organized under a systems/ directory. Covers directory layout, API service layer patterns, TanStack Query hooks (queries, mutations, optimistic updates), React context and XState store conventions, hook organization, and public API barrel exports. Use when adding a new domain system, extending an existing one, or fixing bugs in a system-layer codebase. Don't use for generic React component work, backend API implementation, or codebases not organized around a systems/ domain pattern.
- License
- MIT
- Allowed tools
- Read,, Grep,, Glob
- Metadata
- author: Pedro Nauck · github: https://github.com/pedronauck · repository: https://github.com/pedronauck/skills
- Instructions
- 203 lines in SKILL.md · view on GitHub
Files (3)
- SKILL.md
- directory-layout.md · references/
- patterns.md · references/
SKILL.md (first lines)
# Feature Systems Guide
A "system" is a self-contained, domain-driven module that owns everything related to one domain: its API calls, query layer, hooks, components, and public API. Systems live under a `systems/<domain>/` directory.
Read `references/directory-layout.md` for the full directory structure and naming conventions.
Read `references/patterns.md` for annotated implementation patterns per layer.
## Quick Reference
### Mandatory Companion Skills
Activate alongside this skill — systems span multiple technical domains:
| Situation | Activate |
| --------------------- | ----------------------------------------- |
| Any hook or component | `react` + `tanstack-query-best-practices` |
| Data fetching/caching | `tanstack-query-best-practices` |
| Mutations | `tanstack-query-best-practices` |
| XState store | `xstate` |
| Utility functions | `es-toolkit` |
| Writing/fixing tests | `test-antipatterns` + `vitest` |
| Bug fix | `systematic-debugging` + `no-workarounds` |
### System Directory at a Glance
```
systems/<domain>/
├── index.ts # Public API barrel — required for every system
├── types.ts # TypeScript types for this domain
├── adapters/ # API service layer (HTTP calls, error types)
│ └── <domain>-api.ts
├── lib/ # Pure utilities, schemas, constants, query keys
│ ├── query-keys.ts # TanStack Query key factory
│ ├── query-options.ts # Reusable queryOptions / mutationOptions
│ ├── <domain>-schemas.ts
│ └── constants.ts
├── hooks/ # React hooks (queries, mutations, view-models)
│ ├── __tests__/
│ ├── use-<action>.ts # Query hooks
│ ├── use-create-<entity>.ts # Mutation hooks
│ ├── use-update-<entity>.ts
│ ├── use-delete-<entity>.ts
│ └── use-<domain>-view-model.ts
├── contexts/ # React contexts + providers
│ └── <domain>-context.tsx
├── stores/ # XState stores (complex async state machines)
│ └── <domain>-store.ts
├── components/ # React UI components
│ ├── stories/
│ └── index.ts
└── guards/ # Route guards / access checks
```
## Step-by-Step: Creating a New System
### Step 1 — Define types.ts
- Export clean domain types; never expose raw API response shapes.
- Derive from the project's API contract types when available.
- Document complex aggregated types with JSDoc explaining derivation rules and invariants.
### Step 2 — Build the API service layer
- Create `adapters/<domain>-api.ts`.
- Use the project's HTTP client for API calls.
- Export a single namespace object: `export const <domain>Api = { list, create, update, delete }`.
- Export a typed error class: `export class <Domain>ApiError extends Error { ... }`.
- Accept `signal?: AbortSignal` on every function to support query cancellation.
- Keep all internal helpers (error extraction, response normalization) private to the module.
### Step 3 — Add lib/query-keys.ts
```ts
export const <domain>Keys = {
all: ["<domain>"] as const,
lists: () => [...<domain>Keys.all, "list"] as const,
list: (scopeId: string | null) => [...<domain>Keys.lists(), scopeId] as const,
details: () => [...<domain>Keys.all, "detail"] as const,
detail: (id: string) => [...<domain>Keys.details(), id] as const,
};
```
- Use hierarchical key structure for granular invalidation.
- Scope keys with any identifier (userId, orgId, etc.) that isolates the cache correctly.
- Use `as const` on every key tuple.
### Step 4 — Add lib/query-options.ts
```ts
import { queryOptions } from "@tanstack/react-query";
import { <domain>Api } from "../adapters/<domain>-api";
import { <domain>Keys } from "./query-keys";
export function <domain>ListOptions(scopeId: string | null) {
return queryOptions({
queryKey: <domain>Keys.list(scopeId),
queryFn: ({ signal }) => <domain>Api.list(scopeId!, signal),
staleTime: 60_000,
enabled: Boolean(scopeId),
});
}
export function <domain>DetailOptions(id: string) {
return queryOptions({
queryKey: <domain>Keys.detail(id),
queryFn: ({ signal }) => <domain>Api.get(id, signal),
enabled: Boolean(id),
});
}
```
- Co-locate `queryKey` and `queryFn` via `queryOptions` for type safety and reuse.
- Export each option factory for use in hooks, prefetching, and route loaders.
- Always pass `signal` from the query context through to the API layer.
### Step 5 — Write hooks
- **Query hooks**: Wrap `useQuery` with the `queryOptions` factories; accept a scope ID + optional `{ enabled? }`.
- **Mutation hooks**: Use `useMutation` with proper `onMutate` / `onError` / `onSettled` callbacks for optimistic updates.
- **View-model hooks**: Compose multiple hooks for a page/shell component; return a flat object.From haryelramalho/skills, MIT.
More from haryelramalho/skills
- 0.479score
cmux-orchestration
Pedro Nauck
Control cmux panes and surfaces to coordinate terminal agent workers.
SkillCFreshness: CClaude Code +9 - 0.479score
architecture-placement
haryelramalho
Guides architecture placement decisions for codebases using Domain-Driven Design, Clean Architecture, Onion Architecture, or Ports and Adapters.
SkillCFreshness: CClaude Code +9 - 0.479score
compozy
haryelramalho
Explains Compozy capabilities, CLI commands, core workflow skills, optional extension skills, configuration, artifact structure, reusable agents, and…
SkillCFreshness: CClaude Code +9 - 0.476score
cmux-workspace
haryelramalho
Work inside the current cmux workspace and terminal.
SkillCFreshness: CClaude Code +9 - 0.476score
agh
haryelramalho
AGH runtime and contribution guide.
SkillCFreshness: CClaude Code +9 - 0.475score
agent-exploration
Pedro Nauck
Dispatches scoped-write explorer agents in parallel for general research and exploration of any codebase, topic, or domain.
SkillCFreshness: CClaude Code +9 - 0.475score
agent-output-audit
Pedro Nauck
Audits AI-implemented work for honest completion.
SkillCFreshness: CClaude Code +9 - 0.474score
chronicle
haryelramalho
Allows you to view the user's screen as well as several hours of history.
SkillCFreshness: CClaude Code +9 - 0.455score
diagnosing-bugs
haryelramalho
Diagnosis loop for hard bugs and performance regressions.
SkillCFreshness: CClaude Code +9 - 0.450score
codebase-design
haryelramalho
Shared vocabulary for designing deep modules.
SkillCFreshness: CClaude Code +9 - 0.450score
design-an-interface
haryelramalho
Generate multiple radically different interface designs for a module using parallel sub-agents.
SkillCFreshness: CClaude Code +9 - 0.450score
domain-modeling
haryelramalho
Build and sharpen a project's domain model.
SkillCFreshness: CClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Jun 30, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/haryelramalho/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Pedro Nauck
- 0.768score
bubbletea
Pedro Nauck
Build interactive Go TUIs with Bubbletea, Elm architecture, Lipgloss, layouts, and keyboard/mouse handling.
SkillBFreshness: B★ 641Claude Code +9 - 0.768score
rust-best-practices
Pedro Nauck
Write, review, refactor, or optimize Rust, including ownership, errors, Tokio, traits, tests, benchmarks, Clippy, and documentation.
SkillBFreshness: B★ 641Claude Code +9 - 0.762score
drizzle-safe-migrations
Pedro Nauck
Plan safe Drizzle backfills, enum/check/default changes, constraint tightening, migration ordering, and rollback.
SkillBFreshness: B★ 641Claude Code +9 - 0.762score
glassmorphism
Pedro Nauck
Create or refine glass UI with accessible solid fallbacks.
SkillBFreshness: B★ 641Claude Code +9 - 0.762score
ddd-master
Pedro Nauck
Assess DDD fit; discover domains with EventStorming, define language and bounded contexts, and design aggregates, value objects, events, and repositories.
SkillBFreshness: B★ 641Claude Code +9 - 0.762score
golang-master
Pedro Nauck
Write or review production Go: errors, concurrency, context, types, generics, safety, tests, benchmarks, profiling, modernization, and module structure.
SkillBFreshness: B★ 641Claude Code +9
Cite this page
app-renderer-systems skill. Agent Mart. https://agentmart.dev/skills/haryelramalho-app-renderer-systems (last updated 2026-10-24)