Project Scaffolder User Guide¶
Project Scaffolder transforms project context—a PRD file, existing project directory, or free-text description—into a ranked Bundle of Claude Code artifacts ready to deploy. Use it to bootstrap new projects with matched artifacts or add a feature to an existing project without re-deploying what you already have.
Overview¶
Project Scaffolder automates artifact discovery and Bundle assembly. Instead of manually browsing the marketplace or spending hours selecting skills, agents, and commands, you describe your project once and Scaffolder returns a curated, ranked Bundle of artifacts that fit your tech stack and requirements.
What it does: - Analyzes your project context (extracts technology intents, architecture patterns, and required capabilities) - Optionally interviews you if intent confidence is low (≤3 clarifying questions) - Searches local and marketplace artifact sources with semantic and metadata ranking - Deduplicates and ranks candidates deterministically - Creates a Bundle and optionally deploys it to your project
Timeline: 5 minutes from context to deployed artifacts (vs 2+ hours manual setup).
For complete technical details, see .claude/skills/project-scaffolder/SKILL.md.
When to Use¶
Use Project Scaffolder in these scenarios:
- Starting a new project from a PRD — You have a product requirements document and want a complete artifact set to begin development.
- Adding a feature to an existing project — You want artifacts for a new feature without re-deploying existing skills and agents already in your project.
- Exploring available artifacts — You describe a tech stack and want to see what artifacts the collection recommends.
- Scaffolding from an implementation plan — You have a detailed plan file describing architecture and want matched artifacts.
- Quick bootstrap with free text — You describe your stack in natural language and Scaffolder assembles a Bundle.
Two Ways to Invoke¶
Option 1: Interactive Claude Code Commands (Recommended)¶
Use Claude Code's interactive /scaffold commands for high-quality intent extraction and real-time curation. These commands invoke the Project Scaffolder skill with full subagent orchestration.
For new projects:
Claude Code will prompt you for project context (PRD path, directory, or description) and guide you through the full pipeline interactively.
For adding a feature to an existing project:
Scaffolder reads your existing .claude/ inventory and excludes already-deployed artifacts before recommending new ones.
Mode differences: | Mode | Input | Output | Use When | |------|-------|--------|----------| | Project | PRD, directory, or description | Whole-project Bundle (all capabilities) | Starting fresh | | Feature | Feature description, PRD, or plan | Feature-scoped Bundle (excludes deployed artifacts) | Adding to existing project |
Option 2: CLI (Deterministic, Scriptable)¶
Use the CLI for non-interactive, scriptable scaffolding. The CLI applies deterministic heuristic-based intent detection instead of LLM analysis.
Basic syntax:
Required arguments:
- --from-context — Path to PRD/plan file, project directory, or free-text description
- --project — Target directory where artifacts will be deployed
CLI Flags Reference¶
| Flag | Type | Default | Description |
|---|---|---|---|
--from-context |
path or string | (required if no --from-repo or --bundle) | PRD file, implementation plan, project directory, or free-text description |
--from-repo |
HTTPS URL or shorthand | (optional) | Clone a remote git repository (HTTPS URL or owner/repo shorthand); shallow clone with --depth=1. Temp directory is removed after command completes. Mutually exclusive with --from-context and --bundle. |
--project |
path | (required) | Target project directory |
--scope |
choice | whole-project |
Curation scope: whole-project or feature |
--auto-confirm |
flag | false | Skip interactive confirmation (useful for CI/scripts) |
--dry-run |
flag | false | Preview intent detection and candidate artifacts without writing files |
--intent-set-dir |
path | project dir | Directory where the Intent Set YAML sidecar is written |
--use-llm-analyzer / --no-llm-analyzer |
flag | auto-detect | Explicitly control LLM-powered project analysis. Omit both to auto-detect based on Claude Code environment (CLAUDECODE or CLAUDE_CODE_ENTRYPOINT env vars). --use-llm-analyzer always uses the project-analyzer agent. --no-llm-analyzer always uses heuristic fallback. |
--output-pr |
owner/repo or GitHub URL |
(optional) | Create a pull request on the specified GitHub repository instead of writing files locally. Only valid with --from-context or --from-repo. Accepts shorthand (owner/repo) or full URL. Local deployment is skipped; PR is created against repo's default branch. |
--bundle |
bundle ID | (optional) | Bundle ID to scaffold using legacy direct Bundle deployment. Mutually exclusive with --from-context and --from-repo. |
Mutual exclusivity rules:
- One of --from-context, --from-repo, or --bundle is required
- --from-context and --from-repo are mutually exclusive with each other and --bundle
- --output-pr is only valid with --from-context or --from-repo (not with --bundle)
Complete Walkthroughs¶
Example 1: Scaffold a New Project from a PRD¶
You have a PRD describing a FastAPI backend with React frontend and PostgreSQL database.
What happens:
- Loading context — Scaffolder reads your PRD file (up to 10K tokens)
- Detecting intents — Analyzer extracts capabilities: "python-backend", "web-frontend", "sql-database", "async-workers"
- Confidence check — If aggregate confidence > 0.65 and <2 high-priority intents are below 0.5, proceeds directly to curation
- Searching — Curator searches local and marketplace for artifacts matching each capability
- Ranking — Candidates ranked by: 50% semantic match + 30% metadata + 20% marketplace popularity
- Preview — Displays table of ranked artifacts:
TYPE NAME SOURCE CONFIDENCE INTENT
skill fastapi-server-core local 0.92 python-backend
skill postgres-migrations local 0.88 sql-database
agent backend-developer local 0.85 python-backend
skill react-typescript marketplace 0.79 web-frontend
command deploy-to-railway marketplace 0.71 devops
- Confirm or abort — You review the list and confirm. Files are previewed but not written (due to
--dry-run)
To proceed and write files:
Example 2: Scaffold a Feature in an Existing Project¶
You're adding OAuth2 authentication to your existing project.
skillmeat scaffold --from-context "add oauth2 authentication with google and github" \
--project . \
--scope feature \
--auto-confirm
What happens:
- Reading inventory — Scaffolder checks your
.claude/directory and notes existing artifacts: 8 skills, 3 agents, 2 commands - Detecting intents — Analyzer extracts: "authentication", "oauth2", "google-oauth", "github-oauth"
- Excluding deployed — Any existing auth skills/agents are marked as excluded (will not be re-recommended)
- Searching — Curator searches for auth-specific artifacts not already in your project
- Auto-confirming — With
--auto-confirm, skips the preview step - Deploying — Creates a Feature Bundle and deploys selected artifacts to
.claude/
Example 3: Dry-Run with Free-Text Context¶
You describe your stack in natural language:
skillmeat scaffold --from-context "fastapi postgres react tailwind" \
--project /tmp/test \
--dry-run \
--auto-confirm
Output preview:
Loading context...
Detecting intents from free-text description...
Intent Set Summary:
┌─────────────────────────────────┐
│ SCAFFOLD_RUN_ID: scaf_20260408_a7b2 │
│ SOURCE: fastapi postgres react tailwind │
│ AGGREGATE_CONFIDENCE: 0.72 │
│ INTENTS EXTRACTED: 5 │
└─────────────────────────────────┘
Searching for candidates...
Candidates Found (5 intents, 12 artifacts):
TYPE NAME CONFIDENCE INTENT
skill fastapi-boilerplate 0.91 python-backend
skill postgres-alembic 0.87 sql-database
skill react-components 0.84 web-frontend
skill tailwind-config 0.79 css-framework
command dev-server 0.68 devops
Dry run complete — 5 candidate(s) would be deployed.
No files are written; you can review and adjust before running again without --dry-run.
Scope Variants¶
Whole-Project Mode (Default)¶
Flag: --scope whole-project (or omit; it's the default)
Scaffolder considers all available artifacts in your collection and marketplace. Use this for new projects or when you want a complete re-evaluation of your artifact set.
Feature Mode¶
Flag: --scope feature
Scaffolder reads your existing .claude/ directory, excludes already-deployed artifacts, and recommends only new ones. Use this when adding a feature to an existing project without risk of duplicating or overwriting what you already have.
Interview Flow¶
When intent confidence is low, Scaffolder asks clarifying questions before proceeding.
Interview triggers when: - Aggregate confidence is below 0.65, OR - Two or more high-priority intents have confidence below 0.5
Example interaction:
Confidence is moderate (0.61). I have a few clarifying questions:
1. Your PRD mentions "async processing" but doesn't specify Celery, ARQ, or RQ.
Which task queue will you use? (or skip if not needed)
> Celery
2. I see PostgreSQL mentioned, but also some key-value cache patterns.
Will you use Redis, or a simpler in-memory cache?
> Redis
3. Your architecture mentions webhooks. Will you rely on a specific webhook framework,
or build them from FastAPI routes?
> FastAPI routes (skip specialized framework)
Confidence updated to 0.78. Proceeding to curation...
Answers are fed back to the analyzer for a refined Intent Set before artifact search begins.
Intent Set YAML Sidecar¶
Each Scaffolder run generates and persists an Intent Set YAML file alongside your Bundle manifest. This captures:
- Run metadata — Run ID, timestamp, scope variant
- Extracted intents — Capability, stack, confidence score, source citation, priority
- Aggregate confidence — Weighted mean confidence across all intents
- Interview history — Questions asked and answers (if triggered)
File location: scaf_YYYYMMDD_<hash>.intent-set.yaml (by default in your project root, or --intent-set-dir <path>)
Example:
scaffold_run_id: scaf_20260408_a7b2c1d9
generated_at: 2026-04-08T14:32:15Z
source_summary: "FastAPI + React + PostgreSQL with Redis for caching"
scope_variant: whole-project
intents:
- id: int_001
capability: python-backend
stack: fastapi
confidence: 0.95
source: "PRD §2 — Tech Stack (FastAPI explicitly named)"
priority: high
- id: int_002
capability: web-frontend
stack: react
confidence: 0.91
source: "PRD §3 — Frontend Framework (React explicitly named)"
priority: high
- id: int_003
capability: sql-database
stack: postgresql
confidence: 0.88
source: "PRD §2 — Database (PostgreSQL explicitly named)"
priority: high
- id: int_004
capability: caching
stack: redis
confidence: 0.72
source: "PRD §5 — Performance patterns (Redis mentioned once)"
priority: medium
aggregate_confidence: 0.87
interview_triggered: false
Uses: - Audit trail — see what Scaffolder extracted and why - Re-run — edit intents and re-run with the same file to refine recommendations - Future features — context packing, marketplace analytics, recommendation refinement
Troubleshooting¶
"No candidate artifacts found"¶
Cause: The collection is sparse, or the intent query didn't match available artifacts.
Solution:
1. Check that your collection is seeded with at least 20 artifacts: skillmeat list | wc -l
2. Review the Intent Set YAML to see what intents were extracted. Are they accurate?
3. Try broadening the scope: remove --scope feature if present, or use --from-context with a longer, more detailed description
4. Search manually for your stack keywords in the marketplace: skillmeat search fastapi
"Marketplace timeout"¶
Cause: The marketplace API is unreachable or responding slowly.
Behavior: Scaffolder logs a warning and continues with local-only search results. No error; just fewer candidates.
Solution:
1. Verify the SkillMeat API is running: skillmeat web dev in another terminal
2. Check your network connection to the marketplace (if using a remote instance)
3. Retry with --dry-run to skip marketplace and use local results only: skillmeat scaffold --from-context ... --dry-run
"API unavailable in dry-run"¶
Behavior: In --dry-run mode, if the API is unavailable, Scaffolder synthesizes an empty candidate list and still shows the Intent Set YAML. No error; just an empty artifact table.
Solution:
1. Start the API: skillmeat web dev
2. Re-run without --dry-run to perform the full curation and deployment
Interview loop or unclear questions¶
Solution:
1. Simplify your input — instead of a long free-text description, provide a structured file (PRD or implementation plan)
2. Use --auto-confirm to skip interview and proceed with current confidence
3. Edit the generated Intent Set YAML manually, then re-run with --from-context <yaml-file> for fine-tuned recommendations
Related Documentation¶
- Skill Reference — Technical architecture, subagent definitions, API integration
- Project Mode Detail — Full project scaffolding pipeline
- Feature Mode Detail — Feature-scoped scaffolding with inventory exclusion
- Bundles User Guide — Understanding and managing Bundles after scaffolding
- Intent Schema — YAML schema definition and examples