Files
spec-kit/presets/scaffold/README.md
Manfred Riem abf4aebdb3 feat(presets): pluggable preset system with template/command overrides, catalog, and resolver
- Rename 'template packs' to 'presets' to avoid naming collision with core templates
- PresetManifest, PresetRegistry, PresetManager, PresetCatalog, PresetResolver in presets.py
- Extract CommandRegistrar to agents.py as shared infrastructure
- CLI: specify preset list/add/remove/search/resolve/info
- CLI: specify preset catalog list/add/remove
- --preset option on specify init
- Priority-based preset stacking (--priority, lower = higher precedence)
- Command overrides registered into all detected agent directories (17+ agents)
- Extension command safety: skip registration if target extension not installed
- Multi-catalog support: env var, project config, user config, built-in defaults
- resolve_template() / Resolve-Template in bash/PowerShell scripts
- Self-test preset: overrides all 6 core templates + 1 command
- Scaffold with 4 examples: core/extension template and command overrides
- Preset catalog (catalog.json, catalog.community.json)
- Documentation: README.md, ARCHITECTURE.md, PUBLISHING.md
- 110 preset tests, 253 total tests passing
2026-03-10 14:17:44 -05:00

1.7 KiB

My Preset

A custom preset for Spec Kit. Copy this directory and customize it to create your own.

Templates Included

Template Type Description
spec-template template Custom feature specification template (overrides core and extensions)
myext-template template Override of the myext extension's report template
speckit.specify command Custom specification command (overrides core)
speckit.myext.myextcmd command Override of the myext extension's myextcmd command

Development

  1. Copy this directory: cp -r presets/scaffold my-preset
  2. Edit preset.yml — set your preset's ID, name, description, and templates
  3. Add or modify templates in templates/
  4. Test locally: specify preset add --dev ./my-preset
  5. Verify resolution: specify preset resolve spec-template
  6. Remove when done testing: specify preset remove my-preset

Manifest Reference (preset.yml)

Required fields:

  • schema_version — always "1.0"
  • preset.id — lowercase alphanumeric with hyphens
  • preset.name — human-readable name
  • preset.version — semantic version (e.g. 1.0.0)
  • preset.description — brief description
  • requires.speckit_version — version constraint (e.g. >=0.1.0)
  • provides.templates — list of templates with type, name, and file

Template Types

  • template — Document scaffolds (spec-template.md, plan-template.md, tasks-template.md, etc.)
  • command — AI agent workflow prompts (e.g. speckit.specify, speckit.plan)
  • script — Custom scripts (reserved for future use)

Publishing

See the Preset Publishing Guide for details on submitting to the catalog.

License

MIT