One source rule per technology, rendered into every tool's own format. A module author writes one file, not eight.
One rule per selected technology, plus a stack-agnostic set covering architecture, performance, testing and TypeScript. All of it renders from the same source content, so no two tools can quietly disagree about your conventions.
SKILL.md needs frontmatter Claude can discover a skill by. The builder synthesises it: description from the manifest, and paths from the same globs the module's Cursor rule already declares. Cursor and Claude activate on the same files without a module author maintaining the glob list twice.
They are general project documentation, not per-technology rule output, so they are written regardless of which AI tools you selected.
# edit "aiTools" in ai-project.config.json, then: npx ai-project-bootstrap upgrade