grimoire
claudeAll grimoire skills across all domains
200 skills
All engineering skills (17 sub-domains)
Plugin grimoire-engineering from marketplace grimoire in jeffreytse/grimoire-core. Commands read from the repo's manifest — 28 days ago.
apply-bm25-rankingUse when building or tuning full-text search relevance, scoring documents against a keyword query, or building the sparse/keyword leg of a hybrid RAG retriever — including deciding between BM25, raw TF-IDF, and dense/vector search, or diagnosing why keyword search results feel poorly ranked.
apply-deterministic-verifier-chainUse when deciding whether AI-generated code can be trusted without reading it line by line — instead of reading the target code, build or generate small, deterministic, narrowly-scoped verification tools (coverage checkers, complexity linters, mutation testers) to check it, and trust those tools not
apply-evaluation-driven-developmentUse when building or iterating on an LLM feature, prompt, or agentic system — to measure improvement objectively rather than speculating about what the model needs.
apply-llm-output-sanitizationUse when rendering LLM-generated text in a browser, executing LLM-generated code, or inserting LLM output into a database or downstream system — any place LLM output leaves the AI layer and enters another execution context.
apply-llm-resource-limitsUse when building applications that make LLM API calls, run inference locally, or build agentic systems — to prevent runaway costs, infinite loops, and denial of service via unrestricted model consumption.
audit-llm-data-disclosureUse when deploying an LLM application that may have been trained on or given access to sensitive data — to assess the risk of the model leaking PII, proprietary information, or confidential context through its outputs.
audit-llm-outputUse when evaluating, auditing, or improving the quality, factual accuracy, or safety of LLM-generated outputs
audit-model-fairnessUse when deploying ML models that make decisions affecting people (hiring, lending, healthcare, content moderation) or when required by regulation to assess algorithmic bias
audit-training-data-integrityUse when curating, collecting, or managing datasets for training or fine-tuning machine learning models — to detect and mitigate poisoned, biased, mislabeled, or adversarially crafted training data.
design-agentic-workflowUse when building or prompting a multi-step agentic system — to structure execution so the agent plans before acting, creates verifiable checkpoints, and avoids irreversible mistakes.
design-ai-governance-frameworkUse when an organization is establishing oversight for how it develops, deploys, or uses AI systems — classifying AI use cases by risk level, assigning accountable owners, and applying oversight proportionate to each use case's actual risk, rather than applying either no governance or the same unifo
design-llm-action-boundariesUse when building LLM agents that can take actions in the world — sending emails, modifying files, making API calls, or executing code — to prevent the model from taking actions beyond its intended scope.
design-llm-plugin-securityUse when building tools, plugins, or function-calling integrations for LLM systems — defining what actions the model can invoke, how those invocations are validated, and how to prevent misuse of plugin capabilities.
design-ml-pipelineUse when building or refactoring machine learning systems that need to move from experimentation to reliable production deployment
design-model-based-reinforcement-learningUse when training a reinforcement-learning agent where real-environment interaction is expensive, slow, or limited — robotics, game-playing agents, or any control task — by training a model of the environment's dynamics from real interaction data, then planning or training the policy against simulat
design-prompt-injection-defenseUse when building LLM-powered applications that process user input alongside system instructions — chatbots, AI agents, document processors, code assistants, or any system where untrusted text reaches an LLM.
design-prompt-templateUse when building LLM-powered features that require consistent, reliable outputs across varied inputs, or when prompt quality is causing inconsistent application behavior
design-promptUse when crafting or improving prompts for large language models — including system prompts, user-facing instructions, evaluation prompts, RAG query templates, agent tool descriptions, or any text that instructs an LLM to perform a task. Trigger when prompt outputs are inconsistent, too long, off-fo
design-rag-pipelineUse when designing a retrieval-augmented generation (RAG) pipeline for grounding LLM outputs in external knowledge
design-rag-systemUse when building LLM applications that need to answer questions about proprietary, recent, or domain-specific knowledge that is not in the model's training data
validate-llm-outputUse when LLM outputs are used to make decisions, generate content, answer questions, or drive application logic — to detect hallucinations, verify factual grounding, and prevent over-reliance on unverified AI-generated content.
write-eval-suiteUse when building a test suite to evaluate LLM model performance, prompt quality, or AI system behavior
apply-abstract-factory-patternUse when a system must create families of related objects and must remain independent of how those objects are created — so that swapping one product family for another requires no changes to client code.
apply-abstractionUse when designing modules, services, or class hierarchies — especially when callers depend on concrete implementations, when swapping one provider requires changing multiple call sites, or when tests require the real implementation to run.
apply-adapter-patternUse when you need to use an existing class but its interface is incompatible with what your code expects — converting one interface into another without modifying either.
apply-bridge-patternUse when you need to vary both an abstraction and its implementation independently — avoiding an exponential class hierarchy that results from combining them through inheritance.
apply-builder-patternUse when constructing a complex object requires many steps or parameters — especially when the same construction process should produce different representations, or when telescoping constructors become unreadable.
apply-chain-of-responsibility-patternUse when more than one object may handle a request and the handler isn't known a priori — letting you pass the request along a chain of handlers until one handles it, without coupling the sender to any specific handler.
apply-command-patternUse when you need to parameterize objects with operations, queue or log requests, support undoable operations, or implement transactional behavior — by encapsulating each request as an object with a uniform execute interface.
apply-composable-designUse when designing modules, services, or functions — especially when units are hard to reuse independently, replacements require touching many files, or combining two features requires coupling their internals.
apply-composite-patternUse when you need to represent part-whole hierarchies of objects and want clients to treat individual objects and compositions of objects uniformly — without special-casing leaf vs. container nodes.
apply-composition-over-inheritanceUse when designing relationships between classes or modules — especially when tempted to extend a class to reuse its behavior, or when an inheritance hierarchy is becoming deep or brittle.
apply-controller-patternUse when deciding which non-UI class should handle a system operation or external event — especially when business logic leaks into UI handlers, or when the same system operation is triggered from multiple interfaces (web, CLI, API).
apply-creator-patternUse when deciding which class should be responsible for creating instances of another class — especially when object creation is scattered across the codebase, or when constructors are called in classes that have no other relationship to the created object.
apply-decorator-patternUse when you need to add responsibilities to individual objects dynamically — without modifying the class and without the combinatorial explosion that results from subclassing every combination of features.
apply-domain-based-namingUse when naming variables, functions, classes, modules, or directories — especially when new team members struggle to connect code to domain concepts, or when domain experts and engineers use different terms for the same thing.
apply-domain-driven-designUse when designing complex business software where the domain logic is the primary source of complexity and where miscommunication between technical and business teams causes bugs
apply-encapsulationUse when a class's internal state is accessed or mutated from outside — especially when callers reach into fields directly, when invariants are violated by external setters, or when internal data structures leak into the public API.
apply-facade-patternUse when you want to provide a simple, unified interface to a complex subsystem — reducing the number of objects clients must interact with and lowering the coupling between client code and subsystem internals.
apply-factory-method-patternUse when a class must create objects but should not be responsible for deciding which concrete class to instantiate — letting subclasses or configuration determine the type at runtime.
apply-flyweight-patternUse when an application creates a very large number of fine-grained objects whose combined memory cost is prohibitive — by sharing the intrinsic (immutable) state across instances and storing only extrinsic (context-specific) state outside.
apply-high-cohesionUse when assigning responsibilities to classes — especially when a class is hard to name, does work unrelated to its core concept, or a single change requires understanding an entire class to avoid breaking something.
apply-indirectionUse when two components are directly coupled and that coupling causes problems — especially when changing one component forces changes in the other, or when a component cannot be tested without its direct dependency.
apply-information-expertUse when deciding which class should be responsible for a computation, validation, or operation — especially when the same data is accessed from multiple places to perform the same calculation, or when a class delegates all its work to another class that holds the actual data.
apply-inheritance-correctlyUse when deciding whether a class should extend another — especially when tempted to inherit for code reuse, when instanceof checks appear in callers, or when an override weakens the parent's contract.
apply-interpreter-patternUse when you need to interpret sentences in a simple language — defining a grammar as a class hierarchy where each rule is a class and interpreting an expression is traversing that hierarchy.
apply-iterator-patternUse when you need to access elements of a collection sequentially without exposing its underlying representation — decoupling traversal logic from the collection's data structure.
apply-law-of-demeterUse when a class reaches through intermediate objects to access deep properties, when a change to an internal object forces changes in unrelated callers, or when code chains method calls three or more levels deep.
apply-low-couplingUse when assigning responsibilities to classes — especially when a change to one class ripples into many others, classes are hard to test in isolation, or reusing a class requires dragging in unrelated dependencies.
apply-mediator-patternUse when many objects communicate with each other in complex, tangled ways — centralizing all interaction in a mediator object so that components only talk to the mediator, not to each other.
apply-memento-patternUse when you need to capture and restore an object's internal state — for undo/redo, rollback, or snapshot functionality — without exposing or violating the object's encapsulation.
apply-object-design-heuristicsUse when reviewing or refactoring an OOP codebase — especially when classes are hard to name, methods reach into other objects' internals, or responsibilities feel wrong but it's unclear exactly why.
apply-observer-patternUse when a change in one object must automatically notify and update an open-ended set of dependent objects — without the subject knowing which specific objects depend on it.
apply-omakase-philosophyUse when designing a framework, library, API, or developer tool and deciding how much of the stack to curate for users vs. how much to leave open for user assembly — especially when targeting a specific use case or audience.
apply-polymorphismUse when behavior varies based on type — especially when if/switch statements check the type of an object to decide what to do, or when adding a new variant requires editing an existing class.
apply-protected-variationsUse when a point of variation or instability is identified in a design — especially when a third-party dependency, algorithm, or external interface is likely to change and other components should not be affected.
apply-prototype-patternUse when creating a new object by copying an existing instance is cheaper or simpler than constructing from scratch — especially when object initialization is expensive or when the exact type of object to create is determined at runtime.
apply-proxy-patternUse when you need to control access to an object — adding lazy initialization, access control, logging, caching, or remote access — without changing the object's interface or the client's code.
apply-pure-fabricationUse when no domain class is a suitable home for a responsibility — especially when assigning a responsibility to a domain object would violate high cohesion or low coupling by introducing infrastructure concerns (database, email, logging) into domain objects.
apply-singleton-patternUse when exactly one instance of a class must exist across the entire application — such as a configuration store, connection pool, or logger — and global access to that instance is required.
apply-solid-principlesUse when designing or reviewing classes and modules in OOP code — especially when tests are hard to write, changes ripple unexpectedly, or classes accumulate unrelated responsibilities.
apply-state-patternUse when an object's behavior changes based on its internal state and the logic for each state is complex — replacing large conditional chains with state objects where each state encapsulates its own behavior.
apply-strangler-fig-patternUse when replacing a legacy system or component incrementally without a full rewrite, by routing traffic progressively from the old system to a new implementation.
apply-strategy-patternUse when you have multiple algorithms or behaviors that can be swapped for a given task — encapsulating each algorithm in its own class and making them interchangeable at runtime.
apply-template-method-patternUse when multiple classes share the same algorithm skeleton but differ in specific steps — defining the invariant structure once in a base class and letting subclasses override only the varying parts.
apply-unix-philosophyUse when designing tools, services, CLIs, or modules — especially when a component accumulates responsibilities over time, changes to one feature break unrelated features, or the component is hard to test in isolation.
apply-visitor-patternUse when you need to perform many distinct operations on a stable object structure — adding new operations without modifying the element classes by separating the operation from the data structure.
audit-technical-debtUse when assessing, cataloging, or prioritizing technical debt in an existing codebase or system
design-api-versioning-strategyUse when designing public or partner APIs that must evolve without breaking existing integrations, or when API changes are causing client disruption
design-apiUse when designing a new REST API, adding endpoints to an existing API, or reviewing an API design for correctness, consistency, and long-term maintainability.
design-cqrs-architectureUse when designing a system where read and write workloads have significantly different scaling, consistency, or model requirements that a single unified model cannot serve efficiently.
design-data-mesh-architectureUse when a centralized data platform has become a bottleneck, when data teams cannot keep up with business demand, or when designing data architecture for a large organization with multiple autonomous business domains
design-event-driven-architectureUse when designing systems that need loose coupling between services, asynchronous processing of high-volume events, or real-time data propagation across multiple consumers
design-event-driven-systemUse when designing systems that communicate through events, including event sourcing and CQRS architectures
design-greenfield-brownfield-strategyUse when starting a new software project or major initiative — classifying it as greenfield (no existing system or constraints), brownfield (must integrate with or replace an existing system), or retrofit (upgrading an existing system in place) before choosing an architecture and rollout strategy.
design-microservicesUse when decomposing a monolith or designing a new system using microservices architecture
design-system-architectureUse when asked to design, evaluate, or document the high-level architecture of a system — including new systems, major feature additions, or scaling a system beyond its current design limits.
write-adrUse when a significant technical decision is being made or has just been made — including technology choices, architectural patterns, API contracts, data models, or security boundaries. Use before implementing a decision that would be costly to reverse.
apply-smart-contract-access-controlUse when writing Solidity contracts with admin functions, upgradeable proxies, or multi-role permissions — implementing Ownable, role-based access control, and two-step ownership transfer to prevent unauthorized function execution.
apply-smart-contract-randomnessUse when writing Solidity contracts that need randomness — NFT mints, lotteries, games — replacing insecure block variable entropy with Chainlink VRF or commit-reveal to prevent miner manipulation.
design-oracle-securityprevent-front-runningprevent-reentrancyreview-smart-contract-securityapply-cloud-runtime-securityapply-serverless-function-securityapply-serverless-least-privilegeapply-serverless-secretsapply-twelve-factor-appcalculate-cloud-costsdesign-cloud-network-segmentationdesign-cloud-workload-identitydesign-disaster-recovery-plandesign-multi-region-architecturedesign-serverless-cost-protectiondesign-serverless-observabilityoptimize-cloud-spendreview-cloud-native-securitydesign-access-governance-reviewdesign-data-governance-policydesign-data-modeldesign-data-pipelinedesign-data-quality-frameworkdesign-data-stewardship-programwrite-sql-queryapply-api-first-designapply-branch-by-abstractionapply-changesetsapply-convention-over-configurationapply-defensive-copyapply-dry-principleapply-fail-fastapply-forking-workflowapply-gitflowapply-github-flowapply-gitlab-flowapply-hyrums-lawapply-idiomatic-codeapply-kiss-principleapply-pair-programmingapply-parallel-changeapply-predictable-codeapply-ship-show-askapply-small-clsapply-trunk-based-developmentapply-yagni-principlebisect-regressiondesign-branching-strategydesign-code-review-processdesign-grpc-servicedesign-naming-conventiondesign-restful-apidiagnose-bugpropose-conventional-commitreview-code-stylereview-pull-requestrun-changelog-automationtriage-bug-reportwrite-changelogwrite-database-migrationwrite-openapi-specwrite-regression-testwrite-review-commentsapply-docker-securityapply-feature-togglesapply-iac-securityapply-kubernetes-securityaudit-infra-driftdesign-ci-pipelinedesign-cicd-pipeline-securitydesign-deployment-strategydesign-gitops-workflowdesign-it-governance-steering-committeedesign-platform-engineering-modelplan-incident-responsereview-kubernetes-top10write-post-mortemdesign-contribution-standardwrite-tech-specdesign-component-apidesign-componentapply-iot-device-hardeningapply-iot-network-hardeningdesign-iot-device-managementdesign-iot-secure-bootreview-iot-securityapply-mobile-code-hardeningapply-mobile-cryptographyapply-secure-mobile-storageaudit-mobile-performancedesign-mobile-privacy-controlsdesign-offline-firstwrite-push-notificationaudit-network-securitydesign-network-segmentationdiagnose-network-latencyaudit-bundle-sizeaudit-performancecalculate-capacity-plandesign-caching-strategydiagnose-memory-leakprofile-web-vitalsrun-load-testdesign-experimentwrite-prdwrite-prfaqwrite-release-notewrite-user-storyapply-monte-carlo-risk-simulationdesign-risk-registerplan-retrospectiveplan-sprintapply-five-whysapply-fmea-analysisaudit-error-budgetdesign-slo-sla-frameworkdesign-slorun-chaos-engineeringrun-game-daywrite-sre-runbookAll grimoire skills across all domains
200 skills
Business: strategy, operations, entrepreneurship, leadership, management
200 skills
Finance: investing, personal finance, accounting, financial modeling
131 skills
Design: graphic design, UI/UX, visual communication, branding, typography
65 skills
Health: fitness, nutrition, mental health, wellness, sleep, habit formation
52 skills
Law: legal literacy, contracts, IP, compliance, regulatory, dispute resolution
52 skills
This page updates itself from your repo. Add the badge to your README, or get it Featured to pin it above the organic results with a followed link to your site.