Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
pproenca avatar

Nginx C Module Design

  • 253 installs
  • 191 repo stars
  • Updated July 24, 2026
  • pproenca/dot-skills

nginx-c-module-design: A skill for development. This provides functionality for development workflows.

Key points

  • nginx-c-module-design

Nginx C Module Design by the numbers

  • 253 all-time installs (skills.sh)
  • +10 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #1,518 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/pproenca/dot-skills --skill nginx-c-module-design

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs253
repo stars191
Last updatedJuly 24, 2026
Repositorypproenca/dot-skills

How do I use nginx-c-module-design for development tasks?

Use nginx-c-module-design for development tasks

Who is it for?

Best when you're working on backend & apis and need structured help with nginx-c-module-design.

Skip if: Teams with no backend & apis needs, or anyone wanting a generic chat assistant without this specific workflow.

When should I use this skill?

When you need to use nginx-c-module-design for development tasks, or when nginx-c-module-design: a skill for development. this provides functionality for development workflows.

What you get

Structured output aligned to nginx-c-module-design: nginx-c-module-design.

Files

SKILL.mdMarkdownGitHub ↗

nginx.org C Module Directive Design Best Practices

Comprehensive directive design guide for nginx C module authors, focused on creating clear, consistent, and admin-friendly configuration interfaces. Contains 46 rules across 8 categories, prioritized by impact to guide decisions about what to expose, how to name it, and how to evolve it safely.

When to Apply

Reference these guidelines when:

  • Deciding which values to expose as directives vs hardcode
  • Naming new directives and choosing argument types
  • Selecting scope placement (http, server, location)
  • Setting default values and validation behavior
  • Designing nginx variables for runtime data
  • Deprecating or renaming existing directives

Companion Skills

This skill focuses on design decisions (the "what" and "why"). For implementation mechanics, see:

  • nginx-c-modules — C implementation: memory pools, request lifecycle, config parsing, handlers, filters
  • nginx-c-perf — Performance: buffers, connections, locks, caching, timeouts
  • nginx-c-debug — Debugging: crash diagnosis, GDB, tracing, sanitizers

Rule Categories by Priority

PriorityCategoryImpactPrefix
1Exposure DecisionsCRITICALexpose-
2Naming ConventionsCRITICALnaming-
3Directive TypesHIGHtype-
4Scope DesignHIGHscope-
5Default ValuesMEDIUM-HIGHdefault-
6Validation & Error MessagesMEDIUMvalid-
7Variable DesignMEDIUMvar-
8Evolution & CompatibilityLOW-MEDIUMcompat-

Quick Reference

1. Exposure Decisions (CRITICAL)

  • `expose-configurable-vs-hardcode` - Framework for Configurable vs Hardcoded Values
  • `expose-escape-hatch` - Provide Escape Hatches for Hardcoded Defaults
  • `expose-feature-gate` - Use Feature Gates for Optional Behavior
  • `expose-too-many-directives` - Avoid Over-Configuration
  • `expose-path-resource` - Always Expose External Resource Paths
  • `expose-security-surface` - Audit Security Implications of Every Exposed Directive
  • `expose-environment-dependent` - Expose Values That Vary by Deployment Environment

2. Naming Conventions (CRITICAL)

  • `naming-module-prefix` - Use a Consistent Module Prefix for All Directives
  • `naming-sub-prefix-groups` - Group Related Directives with Sub-Prefixes
  • `naming-noun-over-verb` - Prefer Noun Phrases for Directive Names
  • `naming-no-abbreviations` - Avoid Custom Abbreviations in Directive Names
  • `naming-cross-module-consistency` - Mirror Nginx Core Suffix Patterns for Analogous Directives
  • `naming-lowercase-underscore` - Use Lowercase with Underscores Only

3. Directive Types (HIGH)

  • `type-flag-for-toggles` - Use NGX_CONF_FLAG for Binary Toggles
  • `type-enum-over-string` - Use Enum Slot for Known Value Sets
  • `type-time-size-units` - Use Time and Size Slot Functions for Time and Size Values
  • `type-take-n-fixed-args` - Use TAKE1/TAKE2/TAKE12 for Fixed Argument Counts
  • `type-one-more-lists` - Use 1MORE for Variable-Length Value Lists
  • `type-avoid-block` - Avoid Block Directives for Features
  • `type-custom-handler-complex` - Use Custom Handlers for Complex Directive Parsing

4. Scope Design (HIGH)

  • `scope-default-three-levels` - Default to http + server + location Scope
  • `scope-http-only-shared-resources` - Restrict Shared Resource Directives to http Level Only
  • `scope-server-connection-level` - Use http + server Scope for Connection-Level Settings
  • `scope-avoid-if-context` - Do Not Support the if Context Unless Fully Tested
  • `scope-location-path-operations` - Restrict Path-Routing Directives to Location Context

5. Default Values (MEDIUM-HIGH)

  • `default-zero-config-safe` - Ensure Zero-Config Produces Safe Behavior
  • `default-performance-optin` - Make Performance Features Opt-In
  • `default-safety-on` - Default Security Settings to Restrictive Values
  • `default-generous-timeouts` - Default Timeouts to Generous Values
  • `default-zero-unlimited` - Use Zero to Mean Unlimited or Disabled for Numeric Limits
  • `default-platform-aware-buffers` - Use Platform-Aware Buffer Size Defaults

6. Validation & Error Messages (MEDIUM)

  • `valid-parse-time-check` - Validate All Directive Values at Config Parse Time
  • `valid-show-invalid-value` - Include the Invalid Value in Error Messages
  • `valid-suggest-range` - Include Valid Range or Format in Error Messages
  • `valid-conflict-detection` - Detect Conflicting Directives at Merge Time
  • `valid-actionable-guidance` - Provide Actionable Guidance in Error Messages

7. Variable Design (MEDIUM)

  • `var-runtime-data-only` - Expose Variables for Per-Request Runtime Data Only
  • `var-naming-convention` - Name Variables with Module Prefix and Descriptive Suffix
  • `var-dynamic-prefix` - Use Dynamic Prefix Variables for Key-Value Data
  • `var-lazy-evaluation` - Leverage Lazy Evaluation for Expensive Variables
  • `var-in-directive-values` - Support Variables in Directive Values Only When Per-Request Variation Is Needed
  • `var-read-only-diagnostics` - Expose Read-Only Diagnostic Variables for Observability

8. Evolution & Compatibility (LOW-MEDIUM)

  • `compat-deprecation-warning` - Log Warnings for Deprecated Directives Before Removal
  • `compat-alias-old-directive` - Keep Old Directive Name as an Alias
  • `compat-multi-version-window` - Maintain a Multi-Version Deprecation Window
  • `compat-document-migration` - Document Migration Path in Both Old and New Directive Documentation

How to Use

Read individual reference files for detailed explanations and code examples:

  • Section definitions - Category structure and impact levels
  • Rule template - Template for adding new rules

Reference Files

FileDescription
references/_sections.mdCategory definitions and ordering
assets/templates/_template.mdTemplate for new rules
metadata.jsonVersion and reference information

Related skills

FAQ

What does nginx-c-module-design do?

nginx-c-module-design: A skill for development. This provides functionality for development workflows.

When should I use nginx-c-module-design?

When you need to use nginx-c-module-design for development tasks, or when nginx-c-module-design: a skill for development. this provides functionality for development workflows.

What are the main capabilities?

nginx-c-module-design.

Backend & APIsbackendintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.