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.2Or update:
npm update -g faf-cliThe Numbers
- v4.2.2 - Released February 8, 2026
- 673/687 - Tests passing (14 dev-only)
- 100% - Trophy score 🏆
- 21,000+ - npm downloads