A persistent project assistant for Claude Code. Bootstraps new projects, softly adopts existing ones, and stays as a quiet helper — maintaining the wiki, recommending the right model per task, surfacing past decisions, and tracking how the project evolves.
Built for vibe-coders first: people who describe ideas in plain language and want the right defaults picked for them. Works for technically literate users too — every decision is optional, and you can switch off anything that gets in the way.
# 1. Install the skill in your project
npx skills add dtdesigner36/jarvis-starter --yes# 2a. New project? Start fresh:
> jarvis start: Telegram bot for reminders with a Next.js admin panel
# 2b. Existing project? Adopt without breaking anything:
> jarvis adopt
# 3. That's it. JARVIS lives in .jarvis/ and runs via hooks.
# Need something? Ask it:
> jarvis status
> jarvis route "refactor the auth module"
> jarvis find "pdf parser"
> jarvis audit
Starting a Claude Code project means re-inventing the same scaffolding every time: CLAUDE.md rules, hooks, wiki, which skills to install, which model to pick for which task. And once the project grows, keeping docs and decisions in sync with the code is a losing battle.
JARVIS solves both:
- On start — sets up architecture for the project type (Telegram bot, web app, API, landing, game, parser, mobile, library, CLI, LLM-agent, and more) using archetype-specific overlays.
- On adopt — for existing projects, runs a gap analysis and installs only the features you're missing. Adds a single marker line to
CLAUDE.md; never overwrites your existing rules. Doesn't replace your hooks — wraps legacy hook names with a sentinel-guarded block or installs newjarvis-*.shfiles alongside. Everything new lives in.jarvis/or in separatejarvis-*.shhook files. - Ongoing — passive hooks maintain the wiki, recommend the right model (Opus / Sonnet / Haiku) and plan-mode for each task, resurface already-solved problems, and track project evolution. 0 tokens until a hook fires — each core hook runs once per tool-use or user turn, then returns silently when there's nothing to say.
> jarvis start: <description of what you want to build>
JARVIS walks you through:
- Requirements clarification
- Stack selection
- Relevant skill picks from the curated registry, ranked by archetype + stack overlap (GitHub-query discovery is model-guided — the install step is yours)
- Infrastructure rollout (CLAUDE.md, hooks, wiki/)
- Initial optimization advice
> jarvis adopt
Soft integration via gap analysis. JARVIS:
- Reads your project (stack, CLAUDE.md, hooks, docs, secret-scanners, issue tracking)
- Detects what you already have (living docs, husky pre-commit, linear integration, etc.)
- Shows a gap matrix — proposes only the features you're missing
- Installs those features in
.jarvis/namespace + newjarvis-*.shhook files - Adds one marker line to your
CLAUDE.md(<!-- jarvis-starter-adopt: see .jarvis/state.md -->); your own rules are never rewritten - Leaves your existing hooks and docs in place — pre-existing legacy hook files are wrapped in a sentinel-guarded block you can undo with
safe-uninstall.sh, anddocs/is never overwritten
If you run jarvis start in an existing project, JARVIS detects the dev-stage (git history, mature lockfile, existing CLAUDE.md, living docs, CI) and auto-switches to Adopt. Force full bootstrap with jarvis start --force if you really mean it.
JARVIS commands come in two flavours. The executable ones run shell scripts directly. The model-prompted ones are markdown instruction files that Claude reads on demand — they guide Claude through a workflow, they are not standalone programs.
Executable shell commands:
| Command | What it does |
|---|---|
jarvis self-audit |
Inventories which JARVIS hooks actually fired, usage counts, stale wiki, real shell output |
jarvis adopt |
Soft-integrate into an existing project (gap analysis, no overwrite) |
Model-prompted workflows (markdown Claude reads when invoked):
| Command | What it does |
|---|---|
jarvis or jarvis status |
Brief project summary (Claude reads .jarvis/state.md + focus.md) |
jarvis route "<task>" |
Model / plan-mode recommendation for a task |
jarvis find "<need>" |
Claude searches the curated registry + suggests a GitHub query (no install) |
jarvis evolve <layer> |
Claude applies an archetype overlay |
jarvis decide "<q>" |
Help with an architectural decision |
jarvis suggest |
Quality improvement suggestions |
jarvis docs |
Check wiki freshness |
jarvis audit |
Comprehensive project audit |
jarvis security |
Security audit |
jarvis remember "<fact>" |
Record a decision in project memory |
jarvis history |
Timeline of project events |
> jarvis school on
Creates a school-wiki/ with a topic index for your stack. Each topic is a short stub — what it is, where it lives in this project. When you want to go deep:
> jarvis school topic prisma-migrations
JARVIS: Let's walk through migrations. In your project:
- 3 migrations (latest one 5 days ago)
- Schema has X models
What do you already know about migrations in general? Have you ever
dropped a column from an existing table?
...
Turn off with jarvis school off. JARVIS never proactively suggests school-mode — it's your call.
jarvis-starter/
├── SKILL.md # Entry point
├── README.md # This file
├── NOTICE.md # Attributions
│
├── core/ # Always-on hooks (0 tokens until a hook fires)
│ ├── wiki-maintenance/ # Watches code → proposes wiki updates
│ ├── task-routing/ # Classifies prompts → recommends model
│ ├── memory-recall/ # Surfaces already-resolved topics
│ ├── focus-tracker/ # Passively tracks current focus
│ └── security-watch/ # Detects hardcoded secrets and .env leaks
│
├── on-demand/ # Markdown instructions Claude reads on demand
│ ├── skill-discovery/ # jarvis find — registry match + GitHub query hints
│ ├── security/ # jarvis security — audit workflow
│ ├── evolve.md # jarvis evolve
│ ├── decide.md # jarvis decide
│ ├── suggest.md # jarvis suggest
│ ├── docs.md # jarvis docs
│ ├── audit.md # jarvis audit
│ └── self-audit/ # jarvis self-audit — real shell script (scripts + report.sh)
│
├── plugins/ # Optional extensions (off by default)
│ └── school-mode/
│
└── archive/ # Rarely needed after bootstrap
├── bootstrap/ # Phase 0-6 bootstrap + brownfield-adopt
├── archetypes/ # Tier 1 (10 full) + Tier 2 (19 descriptions)
├── templates/ # Universal + archetype overlays
└── subcommands-rare/ # remember, forget, history, focus, optimize
- Quality > optimization — but both matter
- Quiet butler — silent until called
- Plain language — for vibe-coders
- Wiki as first-class — always current, via hooks
- Respect what's already there — brownfield-safe by default (Adopt mode)
- Extensible — plugins for different work modes
- Planned features and current priorities → GitHub Issues and Releases
- Full changelog → CHANGELOG.md
Issues, feature suggestions, and PRs welcome. See CONTRIBUTING.md for how to file a good bug report or propose a feature. Discussion happens in GitHub Discussions.
If you've built a related Claude Code skill, open an issue — happy to add it to the known-skills registry referenced by jarvis find.
JARVIS-Starter stands on the shoulders of others:
- @alinaqi — orchestration patterns, Stop Hooks approach, and persistent memory concepts in claude-bootstrap
- @pbakaus — Context Gathering Protocol,
.impeccable.mdpersistence pattern, design philosophy, and design-skill templates. The foundation for JARVIS's "context first" approach - Emil Kowalski — UI polish philosophy and the "invisible details" design engineering mindset
- @leonxlnx — agency-level design direction and the visual taste framework
- Anthropic — skill-creator patterns (progressive disclosure, description optimization, subagent testing loops)
- @wcpaxx — brownfield detection approach and the "analyze before asking" idea
- @travisvn/awesome-claude-skills — curated community registry as a reference for our skill-discovery
Each solved a piece of the puzzle of embedding Claude into a workflow. JARVIS combines these ideas and adds its own angle: a persistent assistant across the project's lifetime, not a one-shot bootstrap.