TL;DR: We built slot-ignore years ago but never properly documented it. Like .gitignore for files and .fafignore for scanning, slot-ignore marks context slots as "not applicable" to your project type. Now it's fully documented with comprehensive specs and examples.

What's Slot-Ignore?

FAF has 21 context slots. Not all slots apply to every project type. Slot-ignore handles this elegantly:

# CLI Tool - 21 slots total
stack:
  database: None           # ✅ Ignored (CLI doesn't need database)
  css_framework: None      # ✅ Ignored (no web UI)
  backend: Node.js         # ✅ Filled (has value)
  # ... other slots

Score: (Filled + Ignored) / 21 = 100% 🏆

The Formula

Total Slots: 21 (constant)

├── Filled: 15 (has values)

├── Ignored: 6 (set to 'None' - not applicable)

└── Missing: 0 (undefined - needs attention)

Score: (15 + 6) / 21 = 100%

Common Patterns

CLI Tools: Ignore database, css_framework, frontend

Backend APIs: Ignore css_framework, frontend, ui_library

Static Sites: Ignore backend, database, api_type

Libraries: Ignore hosting, cicd, database

What's New in v4.2.2

✨ Comprehensive Documentation

  • Full specification in docs/SLOT-IGNORE.md
  • Quick reference in docs/SLOT-IGNORE-QUICK-REF.md
  • README section with examples
  • 🎯 SLOT-IGNORE markers throughout codebase

✨ Improvements

6 Ws Extraction - Transformed

  • WHO: Checks package.json author first (TIER 1 authoritative)
  • WHAT: package.json description now TIER 1 (was TIER 2)
  • WHY: Targets Mission sections, uses keywords as fallback
  • WHERE: npm packages → "npm registry + GitHub" (authoritative)
  • WHEN: Version number is TIER 1 (0.x = beta, ≥1.0 = production)
  • HOW: Tech stack analysis is TIER 1 (inferred from dependencies)
  • Added getCleanedReadme() helper to strip HTML/badges/noise

Slot-Ignore Mechanism - Overhauled

  • Standardized to 'None' (was inconsistent: 'N/A (CLI)', 'None', etc.)
  • Added database: 'None' for Node.js CLI projects
  • Improved yaml-generator logic: if (!database && database !== 'None')
  • CLI projects now correctly exclude non-applicable slots from missing_context

README - Added WHO Section

Better target audience extraction for the WHO field.

📈 Results

  • Score improvement: 74% → 86% → 100% (after faf auto)
  • All dogfooding tests passing (7/7)
  • missing_context: None - fully specified!
  • 673/687 tests passing (14 dev-only tests)

The Philosophy

Ignored ≠ Missing

Ignored = "Doesn't apply, and that's correct."

Missing = "Should be filled but isn't."

Slot-ignore makes the 21-slot system work for any project type. A CLI tool doesn't need a database slot. A static site doesn't need a backend slot. Setting these to 'None' tells the scoring engine: "We checked. Doesn't apply. That's correct."

Try It

npm install -g faf-cli@4.2.2

Or update:

npm update -g faf-cli

GitHub

View the source and release notes.

v4.2.2 Release

npm

Install the latest version.

faf-cli

The Numbers

  • v4.2.2 - Released February 8, 2026
  • 673/687 - Tests passing (14 dev-only)
  • 100% - Trophy score 🏆
  • 21,000+ - npm downloads