.faf Format Specification
May 20, 2026 · View on GitHub
Version: 1.2.0 Status: Stable Released: October 2025 License: MIT
Overview
.faf (Foundational AI-context Format) is a universal format for representing project context in an AI-optimized structure.
Standard Filename: project.faf (visible standard, like package.json)
Legacy Filename: .faf (hidden, still supported for backward compatibility)
Filename Standard
As of v1.2.0, the standard filename is project.faf (visible, next to package.json).
Why the change?
- Improved discoverability (visible in standard tools)
- Easier evangelism ("show, don't tell")
- Universal like package.json, README.md
- Path-based identity (no UUID needed)
Legacy support:
.faf(hidden filename) still works- Backward compatible with all tools
- Optional migration via
faf migratecommand
File lookup priority:
project.faf(standard, preferred).faf(legacy, shows deprecation warning)
Format
.faf files use a structured key-value format for human readability and machine parsing.
Required Fields
version: 1.0 # Specification version
score: 85 # Context completeness (0-100)
type: "package" # File type category
content: {} # Extracted content (type-specific)
Optional Fields
confidence: 0.92 # Extraction confidence (0-1)
metadata: # Processing metadata
source: "file.ext" # Original filename
processed: "ISO8601" # Processing timestamp
engine: "engine-id" # Processing engine identifier
size: 1024 # Original file size (bytes)
tags: [] # Descriptive tags
skills: [] # Claude Code skills (v1.1.0+)
skills (v1.1.0+)
List of Claude Code skill names to use with this project. Skills are loaded from ~/.claude/skills/ and provide specialized expertise for specific tasks.
skills:
- faf # .faf format expertise
- wjttc-tester # Championship testing
- nextjs-builder # Next.js development patterns
When to use:
- Document which skills are relevant to the project
- Help team members know which skills to enable
- Track recommended skills for specific tech stacks
Notes:
- Skills must exist in
~/.claude/skills/directory - Each skill name matches its directory name
- Skills are loaded dynamically by Claude Code
- See: https://github.com/anthropics/skills for skill format
Type Categories
Common types and their expected content structure:
package - Package managers
type: "package"
content:
name: "project-name"
version: "1.0.0"
dependencies: ["dep1", "dep2"]
devDependencies: ["dev1", "dev2"]
scripts: ["build", "test", "dev"]
config - Configuration files
type: "config"
content:
framework: "vite"
settings:
key: value
documentation - Docs/README
type: "documentation"
content:
title: "Project Title"
sections: ["intro", "usage", "api"]
keywords: ["keyword1", "keyword2"]
code - Source code files
type: "code"
content:
language: "typescript"
imports: ["react", "vite"]
exports: ["Component", "function"]
classes: ["MyClass"]
functions: ["myFunction"]
data - Data files
type: "data"
content:
format: "json"
schema: {}
records: 100
Scoring Algorithm
Context score (0-100) based on:
-
Type recognition (20 points)
- File type identified correctly
-
Content extraction (50 points)
- Key information extracted
- Completeness of extraction
-
Metadata quality (20 points)
- Dependencies identified
- Relationships mapped
- Configuration detected
-
AI optimization (10 points)
- Structure clarity
- Relevance to common queries
Example Files
High Score (95%)
version: 1.0
score: 95
type: "package"
confidence: 0.98
content:
name: "enterprise-app"
version: "2.0.0"
description: "Production application"
dependencies: ["react", "typescript", "vite"]
devDependencies: ["vitest", "eslint"]
scripts: ["dev", "build", "test", "lint"]
engines:
node: ">=20.0.0"
metadata:
source: "package.json"
processed: "2024-01-26T12:00:00Z"
size: 2048
tags: ["frontend", "typescript", "production"]
Low Score (45%)
version: 1.0
score: 45
type: "unknown"
confidence: 0.4
content:
raw: "partial content extracted"
metadata:
source: "mystery.dat"
processed: "2024-01-26T12:00:00Z"
Validation
A valid .faf file must:
- Be valid structured syntax
- Include all required fields
- Have score between 0-100
- Include version number
Future Versions
Future versions may add:
- Binary encoding options
- Compression support
- Signature/verification
- Extended metadata
Version History
v1.2.0 (October 2025)
- Standard filename:
project.faf(visible, like package.json) - Legacy filename:
.faf(hidden, still supported) - Improved discoverability and evangelism
- Backward compatible with v1.1.0 and v1.0.0
- Path-based identity (no UUID needed)
- Shareable, fork-friendly format
v1.1.0 (October 2025)
- Project-level context support (not just file-level)
- Architecture and pattern fields
- Human context (6 W's: who/what/why/where/when/how)
- Multiple scoring types (faf_score, ai_compatibility_score, completeness_score)
- Agent context for AI workflows
- Source data preservation
- Universal Intelligence Pattern support
- Enhanced metadata fields
v1.0.0 (January 2025)
- Initial stable release
- Universal format specification
- Core type categories defined
- Basic scoring algorithm documented
Maintained by wolfejam.dev | faf.one