create-starter
create-starter scaffolds projects from Starter Series templates and audits repos for release, CD, CI-security, and agent-instruction hygiene — 9 read-only-or-dry-run MCP tools sharing one engine with the CLI.
Scaffold —
create_projectbuilds a new repo from a template with a validated name (^[A-Za-z0-9][A-Za-z0-9_-]*$), optional description, output dir, and git init.Discover —
list_templatesreturns the template table (id, name, stack, category, description).Audit release readiness —
audit_releasereports matched starter, version/last-tag drift, CHANGELOG drift vs merged PRs, publish-workflow kind, and a ship-ready verdict with blockers/warnings.Audit publishing —
audit_cdprobes npm, PyPI, Open VSX, VS Marketplace, AMO, and GitHub Releases for per-destination drift (in-sync / needs-publish / local-stale / not-found / unsupported).Audit security hygiene —
audit_securitychecks 9 items (gitleaks, CodeQL, dep audit, license check,--ignore-scripts, Dependabot, secret scanning, claude-code-security-review, security guidance) and returns hardened / needs-attention / soft.Audit agent instructions —
audit_instructionsfinds exact duplicates, cross-file surface overlap, and advisory keyword risk summaries (not semantic drift detection).Produce a handoff —
generate_launch_proof_reportruns all four audits and returns a client-ready Markdown Launch Proof Report with gates, blockers, and an overall verdict.Remediate —
add_componentdry-run lifts a starter's CI/CD layer (ci / security / dependabot / maintenance / all) into an existing repo;seed_security_guidancedraftsclaude-security-guidance.md.Safe by design — audits are read-only,
add_componentwrites nothing unlessdry_run: false, and nothing rewrites app code or secrets-bearing workflows.Note — the schema's
create_projecttemplate enum lists 11 templates (incl. discord-bot, telegram-bot, electron-app, react-native, cloudflare-pages) while the README says only 6 public templates are generatable; the README's note that other former templates can still be audited may explain the gap.
Scaffolds browser extensions targeting Chrome Web Store (MV3) and audits CD status.
Scaffolds projects for Cloudflare Pages using Wrangler.
Scaffolds Discord bots using discord.js v14 with Docker support.
Scaffolds Docker-deployable projects for any language with GHCR and SSH deploy.
Scaffolds cross-platform Electron apps with code signing.
Scaffolds React Native (Expo) projects with EAS build.
Scaffolds browser extensions targeting Firefox (MV3) and audits CD status.
Audits GitHub Releases publication status.
Audits npm package publication status against the repository.
Audits PyPI package publication status against the repository.
Scaffolds Python MCP server projects using FastMCP.
Planned support for auditing Railway deployments.
Scaffolds Telegram bots using grammY with Docker support.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@create-starter list available templates"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
create-starter
Scaffold and audit Starter Series projects — MCP server, Claude Code skill, and CLI in one package.
Part of: Human-Controlled AI Systems — scaffolding is the easy half. What keeps a shipped repo trustworthy is the audit primitives (audit, audit-cd, audit-security) verifying release, CD, and CI security hygiene against a known bar — gating each merge instead of asking a human to re-check by hand.
Korean documentation is maintained under docs/ko/README.md; the root README stays English-only.
Security checks inspect local workflow definitions and referenced starter-series/.github policy, including composite actions and invoked scripts. Evidence includes source paths and content hashes. Unreadable or unsupported reusable workflows are reported as unverified; this checks configuration, not the latest Actions run or a live vulnerability scan.
Currently implemented
CLI — package and binary identity are
starter-series;npx starter-series my-package --template npm-packagescaffolds one of 6 public templates with Zod-validated input, atomic rename on success, retry + timeout + 50 MB download cap.MCP server — nine stdio tools:
list_templates,create_project,audit_release,audit_cd,audit_security,audit_instructions,generate_launch_proof_report,seed_security_guidance,add_component. One binary chooses the mode by argv (positional -> CLI, none -> MCP stdio).Claude Desktop extension —
.mcpbbundle on every release; drag onto the Claude Desktop settings window.Claude Code plugin + skill —
/plugin install create-starter@starter-seriesships the MCP server and the conversationalcreateskill together.MCP Registry metadata —
io.github.starter-series/create-starter; registry submission is gated on the unscoped npm package being live and tarball-verified.audit_release— detects matched starter, version vs last-tag drift, CHANGELOG drift vs merged PRs (git log <tag>..HEAD), publish-workflow kind (release-please / publish-on-tag / auto-release).audit_cd— probes npm, PyPI, Open VSX, VS Marketplace, AMO, GitHub Releases for per-destination publish drift (in-sync / needs-publish / local-stale / not-found / unsupported).audit_security— checks 9 items: 8 core CI primitives (gitleaks with pin check, CodeQL, dependency audit, license check,--ignore-scripts, Dependabot grouped, secret-scanning hint, claude-code-security-review Action) plus the optional repo-authorclaude-security-guidance.md. The 8 core checks gate the HARDENED verdict; this repo passes 8/8 core.audit_instructions/audit-instructions— reviews agent instruction files (AGENTS.md,CLAUDE.md,GEMINI.md, Copilot instructions) for exact same-file duplicates, cross-file surface overlap, and keyword-based risk reminders. Duplicate/overlap findings need review; keyword risk summaries are advisory only and not exhaustive safety or semantic drift detection.proof-report/generate_launch_proof_report— runs release, CD, security, and instruction-review audits together and writes a client-readyLaunch Proof Report. This is the monetizable handoff surface: evidence first, no "certified" claim, exit code 1 unless the repo is actually launch-ready.add_component— the remediation half of the audit loop: lifts a starter's CI/CD layer (ci / security / dependabot / maintenance / all) into an existing repo without re-scaffolding. Dry-run by default with a per-file plan (create / identical / skip-exists / overwrite); refuses a dirty git tree unless forced; never touches app code or secrets-bearing CD workflows. The dry-run plan doubles as a drift report against the starter.Graduation guide —
docs/graduation-from-vibe-coding.md(+ Korean): five-step path from Lovable/Bolt/v0 exports to GitHub Actions + a real deploy target, using the release/CD/security audit primitives.
Related MCP server: MCP Server Boilerplate
Planned
audit_cdsupport for Chrome Web Store, EAS, Railway, Fly, and GHCR. Currently reported asunsupportedbecause those destinations require auth or have no public read API.
Design intent
One binary, two surfaces. CLI and MCP stdio share one scaffolding engine. Argv decides which surface answers. No duplicated logic for "the same thing called from a human vs an agent".
Atomic on failure. Extraction happens in a sibling
.<name>-incomplete-<rand>directory and only renames into the final path on success. Network failure, corrupt archive, partial write — none of them leaves a half-scaffolded directory behind.Audit is first-class. Templates ship a security baseline (gitleaks pinned to SHA, CodeQL, Dependabot grouped,
--ignore-scripts, claude-code-security-review). The audit commands check whether a downstream repo still matches that bar — turning the baseline from a one-time scaffold into an ongoing gate.Eat your own dogfood. This repo passes
audit_security8/8 core checks (HARDENED); the 9th is the optionalclaude-security-guidance.md. If the tool that audits other repos can't pass its own bar, the bar isn't real.Read-only outside its sandbox. Downloads are capped (50 MB, 30 s timeout, 3 retries). Relative output paths cannot escape cwd; absolute paths are accepted only as explicit user intent.
git initfailure is logged but non-fatal.
Non-goals
Full vendor parity in
audit_cd. Destinations without a public read API stayunsupportedrather than reporting confidently-wrong state.Rewriting app code. The graduation flow lifts CI/CD from the matching starter; it never touches application code.
A general-purpose project generator. Templates are the 6 public Starter Series templates. New stacks land as new starters, not as flags on
create_project.Semantic instruction drift or AI safety enforcement.
audit_instructionsis a review aid for exact duplicate/surface overlap and keyword reminders. It is not a semantic similarity engine, runtime guardrail, red-team harness, or exhaustive safety/security linter.
Quick start — CLI
npx starter-series my-package --template npm-package
# Or build from a create-starter checkout:
npm ci
npm run build
node dist/index.js my-package --template npm-packagestarter-series — scaffold a project from the Starter Series.
Usage
starter-series <name> --template <id> [options]
starter-series audit [path]
starter-series audit-cd [path]
starter-series audit-security [path]
starter-series check [path] [--instructions]
starter-series audit-instructions [path]
starter-series proof-report [path] [--output <file>] [--stdout]
starter-series seed-security-guidance [path] [--force]
starter-series add-component [path] [--component <g>] [--starter <id>] [--apply] [--force]
starter-series --list
starter-series --help
Options
-t, --template <id> Template ID (see --list)
-d, --description <text> One-line project description
-o, --output-dir <path> Output directory (default: ./<name>)
--no-git Skip "git init" after scaffold
--output <file> proof-report output (default: <path>/launch-proof-report.md)
--stdout print proof-report Markdown; with --output, also writes the file
--component <group> add-component group: ci, security, dependabot, maintenance, all
--starter <id> add-component source starter override
--apply Write the add-component plan (default is dry-run)
--force Overwrite differing component files or guidance
--list List templates and exit
-h, --help Show help and exit
-v, --version Print version and exit
Environment
CREATE_STARTER_DEBUG=1 Emit verbose stderr logsAvailable templates
ID | Stack |
| TypeScript + |
| Python + FastMCP |
| Jest + ESLint + OIDC publish |
| Chrome/Firefox MV3 |
| VS Marketplace + Open VSX |
| any language + GHCR + SSH |
Only the six public templates listed here are available for generation and component downloads. Existing projects based on former templates can still be audited.
Run starter-series --list (CLI) or call list_templates (MCP) for the authoritative, up-to-date list.
Graduating from Lovable / Bolt / v0
Already have a working app on a vibe-coding platform and want to graduate to GitHub Actions + your own deploy target? Read docs/graduation-from-vibe-coding.md (한국어) — a 5-step path that uses audit, audit-cd, and audit-security to diagnose your repo, then lifts CI/CD from the matching starter without rewriting your app code.
Install from source
git clone https://github.com/starter-series/create-starter
cd create-starter
npm install
npm run buildRequires Node.js ≥22.
One-click install in Claude Desktop
Grab the latest .mcpb bundle from the Releases page and drag it onto the Claude Desktop settings window. Claude Desktop unpacks the bundled dist/ and node_modules/ and registers create-starter as an MCP server — no npm, no config file, no absolute path.
.mcpb(MCP Bundle, formerly.dxt) is Anthropic's packaged extension format for MCP servers. See Desktop Extensions.
To rebuild the bundle locally:
npm ci
npm run bundle:mcpb # produces create-starter-<version>.mcpbUse as MCP server
Register the built binary in your MCP client (Claude Desktop, Cursor, etc.):
{
"mcpServers": {
"create-starter": {
"command": "node",
"args": ["/absolute/path/to/create-starter/dist/index.js"]
}
}
}Then ask your agent: "Use create-starter to scaffold a new discord bot named my-bot." The agent will call list_templates if needed and then create_project.
The binary speaks MCP stdio when called with no extra arguments, and switches to CLI mode when given any positional argument or flag. Both modes share the same scaffolding engine.
Use as Claude Code plugin
The plugin bundles both the MCP server and the create skill — one install wires them up together.
From the Claude Code REPL:
/plugin marketplace add starter-series/create-starter
/plugin install create-starter@starter-seriesThen ask Claude: "scaffold a new discord bot named my-bot" and the create-starter:create skill guides the conversation into the MCP tools.
For local development (no marketplace round-trip):
claude --plugin-dir /path/to/create-starterPoint at a git clone so edits in skills/create/SKILL.md or dist/index.js take effect the moment the session starts.
Use via MCP Registry
After registry publication, this server uses the Official MCP Registry namespace:
io.github.starter-series/create-starterMCP-compatible clients that integrate registry discovery can install it by name without manual path wiring. The registry entry points at the npm package starter-series, so the registry step must run only after the npm package is published and verified.
Ownership is verified through GitHub OIDC (namespace io.github.starter-series/*) and npm tarball inspection (package.json#mcpName). See .github/workflows/publish-mcp-registry.yml for the publish flow.
For npm release setup (trusted-publisher registration, including the post-2026-05-20 allowed-action step), see docs/RELEASING.md.
Tools
Scaffolding:
list_templates— returns the full template table as JSON.create_project— args:template(required) — template ID from the table above.name(required) — project name matching^[A-Za-z0-9][A-Za-z0-9_-]*$.description(optional) — one-line description.output_dir(optional) — defaults to./<name>relative to the MCP server's cwd. Relative paths must stay inside cwd; absolute paths are accepted as explicit user intent.init_git(optional, defaulttrue) — rungit initafter scaffold.
Audit (each takes an optional path arg, default = MCP server cwd; all read-only):
audit_release— release-readiness diagnosis. CLI mirror:starter-series audit [path].audit_cd— per-destination publish-drift probe. CLI mirror:starter-series audit-cd [path].audit_security— baseline CI security hygiene check. CLI mirror:starter-series audit-security [path].audit_instructions— agent-instruction duplicate and surface-overlap review, with advisory keyword risk summaries. CLI mirror:starter-series audit-instructions [path].generate_launch_proof_report— combined Markdown launch handoff from release, CD, security, and instruction-review audits. CLI mirror:starter-series proof-report [path] [--output <file>] [--stdout].seed_security_guidance— generate a starter-awareclaude-security-guidance.mddraft. CLI mirror:starter-series seed-security-guidance [path] [--force].add_component— propose or apply starter CI/CD components to an existing repo as a dry-run plan. CLI mirror:starter-series add-component [path] [--component <g>] [--starter <id>] [--apply] [--force].
Safety & reliability
Project names are regex-validated before any filesystem touch; relative output paths are rejected if they escape the working directory.
Downloads enforce a 30 s timeout, 3-attempt exponential backoff, and a 50 MB size cap.
Extraction happens in a sibling
.<name>-incomplete-<rand>dir; on any failure (network, corrupt archive, extraction error) the tmp dir is removed. The final path only appears via an atomicrenameonce everything succeeded.git initfailures are logged to stderr but do not fail the scaffold; the project is usable without a.gitdirectory.
Supply-chain security pre-wired
Every Starter Series template ships with the 9 checks audit_security looks for — no opt-in required:
Check | What it catches |
gitleaks (SHA256-pinned manual install) | Committed secrets in code or history |
CodeQL (weekly + PR) | Static analysis for JS/TS/Python |
Dependency audit ( | Known CVEs in transitive deps |
License check | GPL/AGPL contamination |
| Malicious postinstall scripts |
Dependabot grouped updates | Lockfile-conflict storms from one-by-one bumps |
GitHub secret scanning + push protection | Tokens leaked at push time |
| AI-based diff review |
| Org-specific rules consumed by Anthropic's in-session Claude Code Security Guidance Plugin (released 2026-05-26) |
This was Vercel's stack during their 2026-04-21 npm supply-chain incident — they pre-empted compromise via the same pre-wired checks plus Socket/npm/GitHub coordination. The Starter Series ships those checks pre-wired in every starter.
License
MIT © heznpc
Instruction checks
starter-series check --instructions [path]
starter-series check --instructions [path] --json
starter-series check --instructions [path] --update-statecheck without --instructions runs the existing release, CD, security and instruction audits. audit-instructions remains a compatible alias. MCP clients keep using audit_instructions(path?, update_state?); the library entry remains auditInstructions(path?, { updateState? }).
One scan covers AGENTS/CLAUDE/GEMINI, overrides, Copilot instructions, Cursor rules, Claude rules/skills and .agents rules/skills/workflows. The check reports import and symlink aliases, verbatim mirrors, local overrides, exact duplicates and cross-file overlap. Canonical selection is inferred from links and filenames unless explicitly configured. It does not detect semantic similarity. Instruction source files are never rewritten.
Optional .starter-series/instructions.json selects a canonical source and records owner decisions. Copy the exact id, evidenceHash and paths from the JSON report into a decision's id, evidenceHash and scope; then explicitly supply the owner's reason, identity and approval date:
{
"schemaVersion": 1,
"canonical": "AGENTS.md",
"decisions": []
}Each decision requires reason, approvedBy, approvedAt (YYYY-MM-DD), and at least one of reviewAfter, expiresAt (YYYY-MM-DD) or reviewReason. A decision only accepts its exact finding and scope. Evidence changes, expiry or a due review make it stale; approval is never generated by the checker. Accepted findings remain visible. This file records owner approval; it is not an authentication mechanism.
Checks are read-only by default. --update-state (or MCP update_state: true) explicitly saves .starter-series/instructions-state.json for new/changed/known/resolved delta comparison. State contains identities and evidence hashes, not instruction text; commit it only if the team wants a shared baseline. Malformed metadata fails the check. Exit codes remain 0 for clean/advisory or accepted findings, 1 for pending/stale review findings, and 2 for usage or operational errors.
Available Tools
9 toolsadd_componentA
Lift a starter's CI/CD layer into an EXISTING repo without re-scaffolding — the remediation half of the audit loop (audit_security/audit_release diagnose; this installs the missing files from the matching starter). Components: ci (.github/workflows/ci.yml), security (codeql.yml + SECURITY.md), dependabot (dependabot.yml + auto-merge), maintenance (stale + weekly health check), or all. DRY-RUN BY DEFAULT: returns a per-file plan (create / identical / skip-exists / overwrite) and writes nothing until dry_run is false. Existing-but-different files are skipped unless force — so the dry-run plan doubles as a drift report against the starter. Never touches app code or secrets-bearing CD workflows.
Inputs: path, force, dry_run, starter, +1 more. Returns: plan, dryRun, starter, written, +4 more
audit_cdA
Check whether the local repo's version has been published to its destination registries (npm, PyPI, Open VSX, VS Marketplace, AMO, GitHub Releases). Makes outbound HTTPS requests to public registry APIs; never mutates. Reports per-destination drift (in-sync / needs-publish / local-stale / not-found).
Inputs: path. Returns: overall, repoPath, destinations, localVersion, +2 more
audit_instructionsA
Check local instruction discovery, source topology, exact duplicates/overlap, owner decisions and previous-run delta. Read-only by default; update_state explicitly saves the baseline, never source instructions. No semantic or safety enforcement.
Inputs: path, update_state. Returns: files, review, overall, repoPath, +4 more
audit_releaseA
Audit a local repo for release-readiness against the Starter Series quality bar. Detects matched starter, CHANGELOG drift vs merged PRs, version-bump status, and publish-workflow presence. Read-only; never mutates the repo.
Inputs: path. Returns: version, repoPath, changelog, shipReady, +2 more
audit_securityA
Audit a local repo for baseline security CI hygiene against the Starter Series quality bar: gitleaks, CodeQL, dependency audit, license check, --ignore-scripts, Dependabot, secret-scanning hints, claude-code-security-review Action, and claude-security-guidance.md. Read-only.
Inputs: path. Returns: checks, overall, summary, repoPath, +1 more
create_projectC
Scaffold a new project from a Starter Series template
Inputs: name (required), template (required), init_git, output_dir, +1 more. Returns: path, filesReplaced, filesExtracted, gitInitialized
generate_launch_proof_reportA
Run audit_release, audit_cd, audit_security, and audit_instructions together, then return a client-ready Markdown Launch Proof Report. Read-only by default; set write=true to write launch-proof-report.md or output_path inside the target repo.
Inputs: path, write, output_path. Returns: gates, overall, blockers, markdown, +4 more
list_templatesA
List all available Starter Series project templates
Inputs: no named parameters. Returns: templates
seed_security_guidanceA
Generate a starter claude-security-guidance.md at the repo root, tailored to the detected Starter Series template. The file is consumed in-session by Anthropic's Claude Code Security Guidance Plugin (released 2026-05-26) as a guard while Claude writes code. Use force: true to overwrite an existing file.
Inputs: path, force. Returns: status, filePath, repoPath, bytesWritten, +2 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
The four audits target clearly distinct concerns (security CI, release-readiness, CD publishing, instruction discovery), and create_project vs add_component differ by new-vs-existing repo. The only mild overlaps are generate_launch_proof_report aggregating the audits and seed_security_guidance vs audit_security (one generates, one audits), but descriptions make these boundaries clear.
All tools use consistent snake_case verb_noun naming (audit_security, list_templates, add_component, create_project, audit_release, audit_cd, audit_instructions, generate_launch_proof_report, seed_security_guidance). The pattern is predictable throughout, with 'audit_' prefixing the diagnostic family.
Nine tools is well-scoped for a scaffolding/audit server, with each tool earning its place across scaffolding, component installation, four distinct audit domains, an aggregate report, and guidance seeding.
The surface covers the full scaffold-audit-remediate loop (create_project, add_component, four audits, aggregate report, guidance seed, template listing). Minor gaps exist, such as no get_template details or project update/removal, but core lifecycle workflows are covered.
Maintenance
Related MCP Connectors
Build, deploy and manage MaShop e-commerce projects from Claude, Cursor or any MCP client.
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Scan AI agent skills, MCP server packages and MCP configs before you install them. Static analysis.
Related MCP Servers
- FlicenseAqualityDmaintenanceA starter template for building custom MCP servers with example implementations of tools, resources, and prompts. Includes TypeScript support and installation scripts for Claude Desktop, Cursor, and other MCP-compatible clients.28 npm-
- AlicenseAqualityDmaintenanceProduction-ready MCP server starter templates in TypeScript and Python. Includes tool, resource, and prompt patterns with Claude Desktop integration configs.25 npm2MIT
- AlicenseAqualityDmaintenanceDiagnose, secure, and benchmark your MCP servers. Zero-config CLI for Claude Code, Cursor, VS Code, and Windsurf.48 npm3MIT
- AlicenseAqualityDmaintenanceMaintenance, recovery, and observability for Claude Code. CLI + MCP server + dashboard.4047 npm109MIT