tdsk-admin

Documents the architecture, routing, and state management of the Threaded Stack admin dashboard.

Updated Jan 4, 2026
One-click install
npx skills add https://github.com/threadedstack/threadedstack --skill tdsk-admin-threadedstack
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: tdsk-admin
Source: https://github.com/threadedstack/threadedstack/tree/main/.claude/skills/tdsk-admin
Command: npx skills add https://github.com/threadedstack/threadedstack --skill tdsk-admin-threadedstack

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Developers working on the Threaded Stack admin SPA need a consolidated reference for its React Router v7 routing tree, Jotai state layers, API service architecture, and action patterns to navigate and modify the codebase correctly. ## Core Features & Use Cases - Architecture Reference: Documents the full directory structure, 22 action domains, 29 service classes, and 23 Jotai atom files of the admin dashboard. - Routing & Loaders Guide: Details the React Router v7 route tree, 26 loaders with criticalFetch/safeFetch patterns, and the ERoutePath enum with buildRoute utility. - State & API Patterns: Explains the three-layer Jotai design (atoms, accessors, selectors) and the ApiService/BaseApi/domain-API service hierarchy with TanStack Query caching. - Use Case: When adding a new org-scoped page, consult this Skill to follow the established loader hierarchy, action split (api/ + local/), and sidebar nav grouping conventions. ## Quick Start Ask the AI to explain how to add a new org-scoped resource page to the admin dashboard following the documented routing, loader, and state patterns.

Frequently Asked Questions about tdsk-admin

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add a new route to a React Router v7 admin dashboard?▼

Add the route path to the ERoutePath enum in src/types/routes.types.ts, register it in Routes.tsx using the SuspensePage helper for lazy loading, and create a loader in loaders.ts using criticalFetch or safeFetch. Pages must use default exports.

How does Jotai state management work with React Query in this dashboard?▼

The dashboard uses a three-layer Jotai design: atom files define state, accessors.ts provides imperative get/set/reset functions for use outside React, and selectors.ts exposes useRecState and useDerivedState hooks. API services cache responses via TanStack Query while actions sync results into Jotai atoms.

What is the difference between api actions and local actions?▼

API actions in actions/<domain>/api/ are async functions that call a service, update Jotai state, and return the response. Local actions in actions/<domain>/local/ are synchronous functions that directly mutate Jotai state, and API actions delegate to them after successful responses.

Does the admin dashboard support OAuth social login?▼

Yes, authentication uses Neon Auth via @neondatabase/neon-js with social OAuth providers including GitHub, GitLab, Google, and Vercel, plus an email login form. Providers are configured through the TDSK_AUTH_PROVIDERS environment variable.

Why does a loader render an error page instead of returning undefined?▼

Loaders using criticalFetch throw on error, which triggers the route's errorElement boundary. Use safeFetch instead when the data is optional, since it returns undefined on failure without breaking the route render.