Vibe architect
vibe-* is a collection of Claude Code CLI skills. Each skill is a structured instruction set that tells Claude Code exactly what to do at a specific moment in a project — how to plan it, build it, review it, test it, deploy it, and hand it off.
npx -y skills add aakashdhar/vibe-skill --skill vibe-architectAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Architecture planning workflow for establishing code structure, patterns, and principles before any code is written. Runs after brainstorm: and before new: on every project. Triggers on "architect:" prefix, "plan the architecture", "architect this", "how should we structure this", "what patterns should we use". Always runs on every project — no exceptions, no shortcuts. Reads BRIEF.md stack decisions and confirms them explicitly before asking any questions — prevents scaffolding with wrong framework (e.g. Next.js when React+Vite is specified). Produces ARCHITECTURE.md from canonical template — structurally consistent so review:, fix-bug:, and add-feature: can parse it reliably every session. review: uses ARCHITECTURE.md as its primary reference for drift detection. Handles gracefully if BRIEF.md is missing. Detects existing ARCHITECTURE.md before overwriting.
SKILL.md
11.3 KB, as published. Nobody here has run it
Vibe Architect Skill
Establishes the architectural foundation before a single line of spec or code is written. Every pattern, convention, and structural decision made here becomes the law for the entire build.
Always run in Plan Mode (Shift+Tab). No code. No project files.
The O'Reilly principle this enforces
Spec before code — and architecture before spec. Without deliberate architecture decisions, agents make reasonable but unconsidered defaults. Folder structure, naming conventions, state management, error handling — these just happen, inconsistently.
ARCHITECTURE.md is the agent's constitution for the project.
Not what gets built (SPEC.md does that) — how everything gets built.
Every task from Phase 1 through Phase 3 is measured against it.
review: detects drift from it at every phase gate.
Good architecture on a small project costs 20 minutes. Bad architecture on a small project costs days of refactoring.
Step 0 — Read BRIEF.md, confirm stack, classify project type
Check for existing ARCHITECTURE.md first: If ARCHITECTURE.md already exists at the project root:
"An ARCHITECTURE.md already exists for this project. Do you want to update it (add new decisions) or start fresh (replace it entirely)?" Wait for answer before proceeding.
Check for BRIEF.md: If BRIEF.md does not exist:
"BRIEF.md not found. Ideally run
brainstorm:first — it captures the problem, user, stack preferences, and constraints that make architecture decisions meaningful.I can proceed without it by asking those questions now, or you can run brainstorm: first. Which do you prefer?"
- If proceeding without: ask for app name, core purpose, platform, and rough stack preference before Step 1.
- If running brainstorm first: stop here and tell user to run
brainstorm:then return.
If BRIEF.md exists: read it fully. Extract:
- Core problem and user
- Platform (mobile-first, desktop, both)
- v1 feature set and complexity
- Tech stack preferences or mandates ← CRITICAL
- Compliance requirements (affects architecture choices)
- Known risks
- Agentic flag (if true — agent: should have run before this)
Stack confirmation — mandatory before asking any questions:
After reading BRIEF.md, immediately confirm the stack out loud:
"Stack from BRIEF.md: Frontend: [exact value from brief] Backend: [exact value from brief] Database: [exact value from brief] Auth: [exact value from brief]
Proceeding with this stack. I will NOT suggest alternatives unless a technical constraint discovered during this session requires it."
This one explicit confirmation step prevents the most common architect: failure: silently defaulting to a popular framework (Next.js, Create React App) instead of the stack already decided in brainstorm:.
If the stack seems mismatched for the requirements (e.g. brief says "mobile app" but stack says "Next.js") — flag it now:
"I notice the brief specifies [requirement] but the stack is [choice]. This may cause [issue]. Recommend [alternative]. Proceed with brief's choice or switch?"
Wait for answer before continuing.
Classify project type:
- Web app — frontend (React/Vue/Svelte/Next.js etc) + optional backend
- Mobile app — React Native / Expo / Flutter
- API service — backend only, no UI
- CLI tool — command line
- Static site — HTML/CSS/JS, minimal interactivity
- Library / package — reusable code
Tell the user: "This is a [type] project. I'll ask about [relevant areas]."
Branch questions:
- Web app / Mobile app → Steps 1, 2 (if backend), 3, 4, 5
- API service → Steps 2, 3, 4, 5
- CLI / Library → Steps 3, 4, 5
- Static site → Step 1 (light), 4, 5
Step 1 — Frontend architecture (web/mobile only)
Present as recommendations. User says "sounds good" or overrides.
Frontend structure — my recommendations:
Folder approach: [Feature-based / Type-based] — I recommend [choice] because [one sentence reason based on BRIEF.md size and complexity]. Sound good, or do you have a preference?
State management: For [app name], data is [describe from brief]. I recommend [Context+localStorage / Zustand / Redux / other] because [one sentence reason]. Sound good?
TypeScript: Strict mode, no
any— the O'Reilly framework requires this. Any reason to deviate?Component library: [Recommend based on design direction — Tailwind only / shadcn/ui / Radix / none / existing if mandated]. Does this fit?
Lock in recommendations if user agrees. Note any overrides.
Step 2 — Backend architecture (if project has backend)
Skip entirely if client-only with no API.
Backend structure — my recommendations:
API style: REST with clear resource naming. Reason to use tRPC or GraphQL instead?
Business logic: [Route handlers / Service layer] — I recommend [choice] because [reason based on complexity].
Input validation: [Zod / Joi / yup] at route entry before any logic. For this stack, [Zod] is the best fit. Agree?
Error responses: Consistent envelope —
{ success: false, error: { code, message } }. This is what review: checks for. Agree?
Step 3 — Testing philosophy
Testing approach:
My recommended approach for [app name]:
- Unit: pure functions, utilities, calculations — always
- Component: user interactions, state changes, conditional rendering — always
- Integration: [if backend] API endpoints with real DB — always
- E2E: skip for v1 unless a flow is genuinely high-risk
The O'Reilly framework requires tests for every task — what gets tested matters more than coverage numbers. Stricter or lighter than this?
Lock the testing philosophy.
Step 4 — Code quality and git conventions
Code quality:
Linter: ESLint strict —
no-any,no-unused-vars,react-hooks/exhaustive-deps. Existing config to follow?Formatter: Prettier — single quotes, semicolons, 2-space indent, 100 char line length. Standard?
Dependencies: Pin exact versions,
npm auditbefore every commit, prefer packages >1M weekly downloads. Sound reasonable?Git commits: Conventional format —
feat(scope),fix(scope),docs(scope),design(scope). Doc commits always separate from code. This is what the framework uses throughout. Agree?Pre-commit hooks: Linter + tests before every commit?
Step 5 — Synthesise and confirm
Architecture summary for [App Name]:
Project type: [type] Frontend: [structure] · [state] · TypeScript strict · [component library] Backend: [API style] · [logic layer] · [validation] · [error format] (if applicable) Testing: [philosophy summary] Quality: ESLint strict + Prettier + conventional commits + pre-commit hooks Dependencies: pinned, npm audit before commit
Does this look right? Any changes before I write ARCHITECTURE.md?
Wait for confirmation.
Step 6 — Generate ARCHITECTURE.md
Read references/ARCHITECTURE_MD.md for the full canonical template.
Generate ARCHITECTURE.md by filling every section of the template:
- Project type section: Copy stack from BRIEF.md verbatim. Include the "Do NOT scaffold with alternatives" warning with the specific stack chosen.
- Folder structure: Generate the actual project tree, not a generic example. Match what PLAN.md will define in the next step.
- Never list: Always include the 6 universal P0 items plus 2 project-specific ones derived from the conversation (e.g. "no direct Supabase calls outside repositories").
- Testing table: Adjust for project complexity (S/M/L from BRIEF.md).
- Architecture decisions log: Fill with the decisions made in Steps 1-5.
- Delete inapplicable sections: Backend section for client-only projects, database section if no DB, etc.
If updating existing ARCHITECTURE.md: add changelog entry and update affected sections only. Never overwrite the Never list or decisions log.
Save as ARCHITECTURE.md at project root.
(Moved to vibe/ARCHITECTURE.md when new: runs.)
Step 7 — Update BRIEF.md
Append to BRIEF.md:
---
## Architecture decisions
> Decided during architect: — [date]
> Full detail in ARCHITECTURE.md
- Project type: [type]
- Frontend structure: [choice] — [reason]
- State management: [choice] — [reason]
- TypeScript: strict mode, no any
- Testing: [philosophy summary]
- Backend: [choice if applicable]
- Code quality: ESLint strict + Prettier + conventional commits
- Dependencies: pinned, npm audit before commit
Step 8 — Tell the user
✅ Architecture locked.
Decisions made: [N] O'Reilly principles: enforced in every session via ARCHITECTURE.md
Every task Phase 1 through Phase 3 follows these patterns. No agent defaults. No inconsistent conventions. No architectural drift.
review:uses ARCHITECTURE.md as primary reference — drift caught at every gate.To generate your project kit:
new: [your app description]
How the agent uses ARCHITECTURE.md every session
Session startup order:
- Read CLAUDE.md
- Read vibe/CODEBASE.md
- Read vibe/ARCHITECTURE.md — check patterns for today's task
- Read vibe/SPEC_INDEX.md
- Read vibe/TASKS.md
Before writing code: does this follow ARCHITECTURE.md patterns? After writing code: did I introduce a new pattern not in ARCHITECTURE.md? → Yes: update ARCHITECTURE.md before marking task done. → Yes, and it was a necessary deviation: log in DECISIONS.md, update ARCHITECTURE.md.
Document update rules
| Document | Updated when |
|---|---|
| ARCHITECTURE.md | New pattern, library added, tech decision changed |
| BRIEF.md | Scope changes, core value refined, stack changed |
| SPEC.md + SPEC_INDEX.md | Always together — any scope change |
| PLAN.md | Architecture changes, phase structure changes |
| TASKS.md | After every single task — no exceptions |
| CODEBASE.md | New file, route, schema, or pattern added |
| DECISIONS.md | Every drift, scope change, tech choice mid-build |
| FEATURE_TASKS.md | Task done, decisions filled, checklist ticked |
| CLAUDE.md | Conventions change, active feature changes |
The rule: if something changed in the codebase, something changed in the docs. If the docs aren't updated, the task isn't done.