Use when extracting a working project into a create-faster blueprint - triggers on phrases like "turn my project into a blueprint", "extract blueprint from my CRM", "make this project a create-faster template"
Use when extracting a working project into a create-faster blueprint - triggers on phrases like "turn my project into a blueprint", "extract blueprint from my CRM", "make this project a create-faster template"
Extracting Blueprints from External Projects
Overview
Extract a real-world project and convert it into a generic, functional create-faster blueprint. The external project is a reference for understanding the architecture and patterns, not a source to copy-paste from.
Core principle: Understand the project's architecture, identify the generic patterns, strip the business logic, verify everything against current library docs, then build a clean blueprint. The project shows you WHAT to build — the docs tell you HOW to build it correctly.
When to Use
Use this skill when:
You have a working project and want to make it a create-faster blueprint
The user says "I built a CRM, let's extract a dashboard blueprint from it"
Converting project-specific code into a generic starter
Do NOT use for:
Creating a blueprint from scratch without a reference project (use adding-blueprints skill directly)
Extracting a single library integration (use extracting-templates skill)
Blueprint templates are collected from templates/blueprints/{name}/
Blueprint templates override structural templates with the same destination path
Blueprint packageJson is merged into app packages
Blueprint envs are collected alongside library/project envs
Key distinction from library extraction: Extracting a library (extracting-templates) is surgical — one concern, one setup. Extracting a blueprint is architectural — you're extracting an entire application's structure, patterns, and flows while stripping domain-specific business logic.
Focus on the GENERIC patterns, not the domain-specific implementations.
The CRM's client list page uses a data table with server-side pagination — that's a generic pattern worth keeping. The specific columns (client name, email, contract value) are business logic to strip.
Phase 3: Classify Every File
For each file in the project, classify it:
Classification
Action
Example
Already covered by create-faster
Skip — stacks/libraries/addons handle this
tailwind.config.ts, next.config.ts, auth setup, DB schema
Verify each library exists in META.libraries. If a library the project uses doesn't exist in create-faster yet, it must be added FIRST via the adding-templates skill before the blueprint can reference it.
Validate the composition: Check META dependency rules (orm requires database, better-auth requires orm, etc.).
Phase 5: Research Library Docs (context7) — HARD GATE
THIS IS A BLOCKING PREREQUISITE. You CANNOT proceed to Phase 6 without completing this.
You MUST use context7 (or web search) to read documentation for EVERY library in the composition AND every extra dependency. No exceptions — not for libraries you "know well," not because "the project already works," not because "I can just copy the project's pattern."
Baseline testing showed agents skip this 100% of the time when not enforced. The result: code copied directly from the project with patterns described as "identical to CRM" — no verification that the APIs are current, that the patterns are recommended, or that the versions are stable.
The project is ONE implementation, possibly months or years old. The docs are the source of truth.
For EVERY library in the composition AND every extra dependency:
Official setup guide — current recommended setup
Latest API — current imports, function signatures, component APIs
Integration patterns — how libraries work together in the current version
SSR/RSC patterns — 'use client' requirements, server component compatibility
Breaking changes — has the API changed since the project was built?
Current stable version — don't use the project's version blindly. Check npm/docs.
What to verify against docs:
Are the project's imports correct and up-to-date?
Is there a newer/better API for what the project does?
Are there deprecated patterns the project uses that should be updated?
What's the correct way to set up each library with the chosen stack?
Output requirement: Document specific findings for each library. Don't just say "verified."
Example:
Finding: recharts v2.15 has a new `ResponsiveContainer` that auto-sizes without
explicit width/height props when using CSS container queries.
Differs: Project uses explicit width="100%" height={350} pattern.
Impact: Blueprint templates should use the current pattern but keep explicit
sizing as it's more predictable across browsers.
Finding: framer-motion was renamed to just "motion" in v12. Import is now
`import { motion } from "motion/react"`.
Differs: Project uses `import { motion } from "framer-motion"` (v11 API).
Impact: Check latest stable version — if v11 is still widely used, keep it.
If v12 is stable, use the new import.
If you catch yourself thinking any of these, STOP:
"The project works, the patterns are fine" → The project may use deprecated APIs. Check.
"I'll just templatize the project's code" → That's copy-paste, not extraction. Verify against docs.
"I know this library" → You might know an old version. Check.
"Context7 is too slow" → Broken blueprints from wrong APIs are slower to debug. Use it.
Phase 5b: Verify Existing Create-Faster Templates
Before genericizing anything, read what create-faster already generates.
Read templates/stack/{stackName}/ — what files does the stack produce?
Read templates/libraries/{lib}/ — for each library in the composition
Read existing blueprint templates in templates/blueprints/
Why this matters: Baseline testing showed agents assume files exist (e.g., "this overrides the structural proxy.ts") without checking. This produces overrides that target nonexistent files, or duplicate files that are already generated by the structural templates.
For each file classified as "Already covered by create-faster" in Phase 3, VERIFY by reading the actual template. Don't assume — read.
Phase 6: Design the META Entry
Before designing, read apps/cli/src/types/meta.ts to verify the MetaBlueprint interface.
Based on Phase 4 (composition) and Phase 5 (research):