A feature is content per provider, deliberately written independently rather than templated from a shared skeleton.
features/<feature-id>/
manifest.json { id, name, description, category, providers }
providers/<technology-id>/
plan.md the step-by-step implementation plan
checklist.md what to verify before shipping
prompts/*.md ready to hand to an AI assistant
scaffold/** mirrored into the project's source layoutFollow an existing sibling as a structural reference — not as a template to fill in blanks on. Two providers must produce genuinely different content, grounded in that technology's actual APIs and gotchas. Its own cursor-rule.mdc and setup.md are the best source for those.
If you are not confident about a specific SDK detail, say so in the content and point at the current official docs rather than asserting something you are unsure of.
# generate a project with that provider selected, then inside it: npm install && npx tsc --noEmit && npx eslint .
This is exactly how three real bugs — two bad relative import paths and a listener-reference mismatch — were caught while building the first three features. None of them would have been found by the test suite alone.