
Generate a branded Arabic PDF report from an HTML template using Puppeteer. Use for contracts, invoices, CMA reports, commission statements.
Create an automation workflow trigger that fires on entity events (lead created, deal stage changed, etc.) and executes a sequence of actions. Use when building the automation engine.
Finalize the current enhancement session — write the Sessions/E{n} retro note, tick the row in the master plan, update Timeline, and commit. Use when the user says "we're done with E4", "wrap this up", or after the last task in a session is checked off.
Run TypeScript type-check on both apps/web and apps/api in parallel and report errors. Use after any code change before saying work is "done", and as a precondition for /complete-session and /commit-and-track.
Create a new Architecture Decision Record in the vault Decisions/ folder, update the ADR Index, and cross-link from related notes. Use when a meaningful trade-off is made, an architectural pattern is chosen, or the user says "we decided to X because Y".
Scaffold a Claude API powered endpoint with system prompt, structured output, token tracking, and rate limiting. Use when adding AI features like chatbot, matching, or text generation.
Scaffold a new Express API route file with JWT auth, org-isolation middleware, zod validation, Prisma queries, and standard error handling. Use when the user asks to "add an API endpoint", "create a route", or "expose X over HTTP".
Add vector similarity search using embeddings for smart matching (property matching, lead-to-listing, similar items). Use when building AI-powered search and recommendations.
Build a complete vertical slice for a new feature — Prisma model + API route + react-query hook + UI page + sidebar entry + vault Features note. Use when the user asks for "a full new feature", "add X end-to-end", or "scaffold a feature".
Audit every page to ensure it uses React.lazy() in App.tsx for code-splitting, and that the Suspense fallback delegates to the page's own skeleton. Use after adding pages, before /complete-session, and during performance audits.
Find hardcoded hex/rgb/hsl colors in frontend files that should be using CSS variable tokens (bg-background, text-foreground, etc.). Use after UI changes and during design-system audits.
Add TSDoc/JSDoc comment blocks to every exported function, route, hook, and component in a single file, following the project's Source/Consumer convention. Use when the user asks to "comment this file", "document file X", or as a sub-step of /comment-batch.
Create a git commit AND update the vault changelog/timeline so history stays in sync. Use after any meaningful change instead of plain git commit. Use when the user says "commit this", "save the work", or "ship it".
Report TSDoc/JSDoc coverage across the codebase — what % of exported symbols have documentation blocks, and which files have the worst coverage. Use after /comment-batch sessions and as the C20 verification step.
Extract clean markdown content from web pages using Defuddle CLI, removing clutter and navigation to save tokens. Use instead of WebFetch when the user provides a URL to read or analyze, for online documentation, articles, blog posts, or any standard web page. Do NOT use for URLs ending in .md — those are already markdown, use WebFetch directly.
Create and edit JSON Canvas files (.canvas) with nodes, edges, groups, and connections. Use when working with .canvas files, creating visual canvases, mind maps, flowcharts, or when the user mentions Canvas files in Obsidian.
Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries. Use when working with .base files, creating database-like views of notes, or when the user mentions Bases, table views, card views, filters, or formulas in Obsidian.
Interact with Obsidian vaults using the Obsidian CLI to read, create, search, and manage notes, tasks, properties, and more. Also supports plugin and theme development with commands to reload plugins, run JavaScript, capture errors, take screenshots, and inspect the DOM. Use when the user asks to interact with their Obsidian vault, manage notes, search vault content, perform vault operations from the command line, or develop and debug Obsidian plugins and themes.
At the end of a Claude session, write a History/Conversations note summarizing what was asked and done, update the Timeline, and refresh memory if needed. Use when the user says "wrap up", "end of session", or before they're about to /clear.
After making any meaningful change, propagate it to the right vault notes and auto-memory. Use whenever you ship something — feature, fix, refactor, decision — so the knowledge base stays in sync without the user having to ask.
Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries. Use when working with .base files, creating database-like views of notes, or when the user mentions Bases, table views, card views, filters, or formulas in Obsidian.
Create and edit Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties, and other Obsidian-specific syntax. Use when working with .md files in Obsidian, or when the user mentions wikilinks, callouts, frontmatter, tags, embeds, or Obsidian notes.
Create and edit Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties, and other Obsidian-specific syntax. Use when working with .md files in Obsidian, or when the user mentions wikilinks, callouts, frontmatter, tags, embeds, or Obsidian notes.
Interact with Obsidian vaults using the Obsidian CLI to read, create, search, and manage notes, tasks, properties, and more. Also supports plugin and theme development with commands to reload plugins, run JavaScript, capture errors, take screenshots, and inspect the DOM. Use when the user asks to interact with their Obsidian vault, manage notes, search vault content, perform vault operations from the command line, or develop and debug Obsidian plugins and themes.
Pick up the next pending enhancement session (E4–E20) from the master plan, break it into TaskCreate items, and start work. Use when the user says "let's do the next session", "continue with E4", or "what's next on the plan".
Verify a listing form, deal, or property route satisfies Saudi REGA compliance — FAL license, ad license, GASTAT category, Saudi address, photos, commission cap. Use when adding listing-related features or before shipping property changes.
Run /comment-file across a glob of files (e.g., one Comment Plan session at a time). Tracks progress with TaskCreate, runs /typecheck after each batch, and commits at the end. Use to execute one C-session of the Comment Plan.
Create and edit JSON Canvas files (.canvas) with nodes, edges, groups, and connections. Use when working with .canvas files, creating visual canvases, mind maps, flowcharts, or when the user mentions Canvas files in Obsidian.
Create a scheduled background job using node-cron with logging, error handling, and health tracking. Use for nightly recalculations, campaign processing, alert checks.
Add Arabic translations for new strings, following the project's Arabic-first conventions and IBM Plex Sans Arabic. Use when introducing user-facing text or when the user says a label "should be in Arabic".
Add an analytics chart or metric card to a dashboard or report page. Handles the API aggregation query, react-query hook, and Recharts visualization. Use when building analytics features.
Add a data visualization layer to the Mapbox GL map page (heatmap, markers, clusters, isochrones). Use when building geospatial features like price heat maps or catchment analysis.
Scaffold a new agent platform page with the project's standard layout, RTL Arabic, react-query data fetch, skeleton, and sidebar entry. Use when the user asks to "add a page", "create a new page", or "build a screen for X".
Add Progressive Web App capabilities — manifest, service worker, offline cache, install prompt, or background sync. Use when building mobile-first features.
Add a typed useQuery or useMutation hook for an existing API endpoint, following the project's TanStack Query conventions. Use when the user asks to "fetch X from the frontend", "call the new endpoint", or "wire up the data".
Add a real-time WebSocket event with server emit, client hook, and org-scoped rooms. Use when adding live updates like new leads, deal changes, or chat messages.
Find Express route handlers that touch multi-tenant Prisma models without going through injectOrgFilter / injectWriteFilter. Use after adding new routes, before committing, and during security review.
Find LTR-only Tailwind classes (ml-, mr-, pl-, pr-, left-, right-, text-left, text-right) in JSX files. These break the Arabic-first layout. Use after editing pages and before /complete-session.
Audit every page to ensure it has a layout-accurate skeleton loading state using useMinLoadTime, matching the page's actual structure (cards, grids, tables, charts, sidebars). Use after adding pages, before /complete-session, and during UX audits.
Sync the Prisma schema to PostgreSQL using prisma db push (no migration files), regenerate the client, and restart the API server if needed. Use after editing schema.prisma.
Propose 3-5 baby-step enhancements for an existing page following the E1-E20 pattern (frontend + backend + database). Use when the user asks "what can we add to page X", "improve the leads page", or "enhance Y".
Find every page, component, hook, or route that imports or uses a given symbol — function, type, component. Use before refactoring, deleting, or renaming anything to know the blast radius.
Drop all data and re-seed the database with realistic Saudi demo data. Use when the user says "reset the demo data", "fresh seed", or after a schema change that invalidated existing rows. ALWAYS confirm before running.
Start the full local dev environment — frontend, backend, and database — and surface anything that's broken on startup. Use when the user says "start the app", "run dev", or you need a working environment to test a change.
Extract clean markdown content from web pages using Defuddle CLI, removing clutter and navigation to save tokens. Use instead of WebFetch when the user provides a URL to read or analyze, for online documentation, articles, blog posts, or any standard web page. Do NOT use for URLs ending in .md — those are already markdown, use WebFetch directly.
Scaffold a payment gateway integration (HyperPay/Moyasar) with checkout, webhook, and transaction tracking. Use when adding payment capabilities.
Add a new Prisma model to schema.prisma, push it to PostgreSQL, regenerate the client, and document it in the vault. Use when the user asks to "add a table", "create a model", or "add X to the database".