1
0
Fork
You've already forked super-simple-includes
0
This is an attempt to do something actually useful with agentic LLM code generation.
  • Rust 45.8%
  • HTML 33.4%
  • Python 18.5%
  • Shell 1%
  • CSS 1%
  • Other 0.3%
Matthew Miller 8425f79417 Benchmark results for v0.208.32 after validation test fix
Performance remains stable after symlink validation optimization.
Note: performance-test-external-sources excluded from validation benchmarks
(supports_validate=false due to dual-flag handling complexity)
2026年01月16日 02:09:05 -05:00
.agents/skills Implement timing-first benchmark workflow 2026年01月15日 19:07:12 -05:00
.cargo Add debug output for RSS measurement and configure glibc build 2026年01月03日 11:21:41 -05:00
.claude Update .claude/hooks.json to use consolidated policy scripts 2026年01月11日 16:02:26 -05:00
.codeberg Major documentation reorganization and cleanup 2025年07月20日 13:13:02 -04:00
.cursor Implement timing-first benchmark workflow 2026年01月15日 19:07:12 -05:00
benchmarks fix: honor supports_validate metadata in validation-commands.py 2026年01月16日 02:03:58 -05:00
containers Restore musl as default build target 2025年12月28日 13:47:46 -07:00
crates fix: honor supports_validate metadata in validation-commands.py 2026年01月16日 02:03:58 -05:00
docs Benchmark results for v0.208.32 after validation test fix 2026年01月16日 02:09:05 -05:00
examples Add phase marker detection and fix test parallelism 2026年01月14日 19:15:34 -05:00
messages Fix deploy_dir canonicalization with proper error handling 2026年01月14日 08:05:04 -05:00
scripts Increase aggregate trend display to 25 circles 2026年01月15日 20:04:11 -05:00
test-deploy-git Remove handler pattern status file (summary reports forbidden) 2026年01月04日 14:41:36 -05:00
test-suite fix: honor supports_validate metadata in validation-commands.py 2026年01月16日 02:03:58 -05:00
todo Add todo for benchmark rewind mode implementation 2026年01月15日 19:08:26 -05:00
.agent Rename .agent to .agents with backwards-compatibility 2026年01月02日 12:36:55 -05:00
.env WIP: Test infrastructure improvements 2025年07月08日 15:52:57 -04:00
.gitattributes Improve test coverage to catch subtle behavioral bugs 2025年11月23日 17:30:56 -05:00
.gitignore Add warn-bulk-operations hook and update skill 2026年01月11日 10:56:36 -05:00
.human-files-checksums Enable recursive directory copying for processing=copy 2026年01月15日 10:56:39 -05:00
.linthtmlrc.yaml Version 0.17.435: HTML validation improvements and code quality enhancements 2025年07月11日 16:18:12 -04:00
.pre-commit-config.yaml Update ruff hook to ruff-check (remove legacy alias) 2026年01月04日 09:53:43 -05:00
AGENTS.md Add crate analysis to planning workflow 2026年01月13日 15:30:04 -05:00
ARCHITECTURE-draft.md fix: Address standards checker violations for Epic 200 2026年01月09日 05:30:27 -05:00
ARCHITECTURE.md Enable recursive directory copying for processing=copy 2026年01月15日 10:56:39 -05:00
Cargo.lock fix: honor supports_validate metadata in validation-commands.py 2026年01月16日 02:03:58 -05:00
Cargo.toml Rename ssi-validation to ssi-validation-checks 2026年01月12日 22:17:55 -05:00
CLAUDE.md Consolidate AI agent instructions in AGENTS.md and update Cursor rules 2025年12月21日 15:58:14 -05:00
CONTRIBUTING.md Fix .agent -> .agents path consistency and use openskills read command 2026年01月09日 16:56:22 -05:00
LICENSE.md WIP: Fix missing emoji violations - 8+ error messages now have 2025年08月25日 21:14:42 -04:00
README.md Rename .agent to .agents with backwards-compatibility 2026年01月02日 12:36:55 -05:00
version.toml fix: honor supports_validate metadata in validation-commands.py 2026年01月16日 02:03:58 -05:00

Super-Simple Includes

A fast, flexible static site generator for content inclusion and variable substitution.

Note

: This README was AI-generated and needs human review for accuracy and completeness.

Installation

From Source

cargo build --release --target x86_64-unknown-linux-musl

The binary will be at target/x86_64-unknown-linux-musl/release/ssi.

Quick Demo

# Deploy a simple site
ssi deploy examples/02-simple-page/site my-deploy
# Create a new project
ssi new my-project
# Validate configuration
ssi validate config my-site

Examples

The examples/ directory contains a progressive learning path from basics to production. See examples/README.md for the complete guide.

Quick reference:

  • 01-copy-only - Absolute minimum configuration
  • 02-simple-page - First template processing
  • 03-markdown-content - Markdown conversion
  • 04-page-with-assets - Multiple processing steps
  • 05-type-auto - Auto-detect content types
  • 06-html-blocks - Reusable HTML components
  • 07-toml-data - Structured data
  • 08-inline-content - Inline vs block includes
  • 09-page-specific - Per-page content resolution
  • 11-builtin-sources - System integration (datetime, git, env)
  • 12-css-js-templates - Process CSS/JS as templates
  • 13-preserve - Incremental builds
  • 20-full-site - Complete production example

Documentation

See the docs/ directory for detailed documentation:

Performance & Architecture

No Regex Ever 🚫

Super-Simple Includes is 100% regex-free by design. We use simple string operations instead of regular expressions for several important reasons:

Why No Regex?

  1. 🚀 Performance: No regex compilation overhead - simple string operations are faster
  2. 🔒 Security: Eliminates regex injection vulnerabilities and ReDoS attacks
  3. 🧹 Simplicity: Clear, readable code that's easy to understand and maintain
  4. 🌍 Unicode: Proper Unicode segmentation handles complex emojis correctly

What We Use Instead

  • String Operations: find(), starts_with(), ends_with(), character iteration
  • Unicode Segmentation: Proper grapheme cluster handling for emojis like 👨‍👩‍👧‍👦
  • Character Validation: Simple character-by-character checks for patterns
  • Fast Search: Daachorse multi-pattern matching for token finding

Benefits for Users

  • Faster Builds: No regex compilation means faster site generation
  • Better Security: No risk of regex-based denial-of-service attacks
  • Reliable Unicode: Complex emojis and international text work correctly
  • Predictable Performance: String operations have consistent, linear performance

💡 For Developers: See our standards check at tests/standards/no-regex-ever.sh that enforces this policy across the entire codebase.

Unified Key-Based Discovery

SSI uses a single unified pattern for discovering both templates and includes. Instead of separate code paths, everything works through the same key-based abstraction:

The Pattern

  • One Discovery Method: list_keys() finds available content by abstract keys
  • One Resolution Method: resolve_key() maps keys to files with extensions
  • Works Everywhere: Templates, includes, and any content source

Why It Matters

  1. 🎯 Simplicity: One pattern instead of multiple special cases
  2. Performance: Single filesystem scan, O(1) lookups
  3. 🔧 Type Auto-Detection: Extensions returned with paths enable type = "auto"
  4. 🔄 Consistency: Templates and includes work identically

Key Abstraction: Filename stems for directories ("header" from "header.html"), literal keys for TOML sources.

For technical details, see ARCHITECTURE-draft.md.

Security

SSI implements comprehensive security protections:

Unicode Security

  • Bidirectional Text Injection Protection: Blocks all 9 dangerous bidi control characters
  • Zero-Width Attack Prevention: Rejects invisible characters used for content hiding
  • Control Character Validation: Blocks C0/C1 ranges that can cause injection attacks

Multi-Layer Defense: Validation at config parsing, file reading, and output writing ensures attacks are caught even through complex token substitution.

International Text Support: Full support for Arabic, Hebrew, emoji, and all legitimate Unicode without needing control characters.

See docs/SECURITY.md for details.

Path Security

  • Write Protection: Prevents writes to system directories (/etc, /bin, etc.)
  • Source Path Validation: Blocks absolute paths and parent directory references in config
  • Symlink Security: Validates symlinks stay within site directory

Testing

# Run all tests
python scripts/run-all-tests.py
# Run specific category
python scripts/run-all-tests.py functional

Test Documentation

  • Test README - Test organization and structure
  • Testing Guide: Load ssi-testing skill for complete testing documentation

Test Quality

All tests are verified by automated meta-testing to ensure:

  • No test bypasses or skips
  • Proper test categorization
  • CLI interface compliance (except unit tests)
  • Test execution in all output modes

For AI Agents

This project uses OpenSkills for modular agent instructions:

  • Core rules: AGENTS.md - Branch workflow, testing, communication standards
  • Specialized workflows: Read .agents/skills/<skill-name>/SKILL.md
  • Project skills: .agents/skills/ssi-*/ (SSI-specific knowledge)
  • Global skills: ~/.agents/skills/ (skill-creator, xlsx, pdf)

Install OpenSkills: npm install -g openskills

Available skills: Run openskills list to see all available skills.

See CONTRIBUTING.md for complete AI agent setup.

License

See LICENSE.md for details.