Skip to content
Back to skills

Architecture Awareness

ASecurity

Detects project type, analyzes existing patterns, generates architecture specifications, and maintains architectural consistency across sessions. The key innovation that turns CLAUDE.md-style contracts into automatic, evolving project specifications.

  • 7 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 27, 2026
developmentjavascripttypescriptpythonrustgojavakotlinreactvuenextjs

Works with

  • api

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add Vimalk0703/shipworthy --skill architecture-awareness --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Architecture Awareness?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Architecture Awareness
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vimalk0703-architecture-awareness/badge)](https://www.skillsdirectory.com/skills/vimalk0703-architecture-awareness)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: architecture-awareness
description: Detects project type, analyzes existing patterns, generates architecture specifications, and maintains architectural consistency across sessions. The key innovation that turns CLAUDE.md-style contracts into automatic, evolving project specifications.
invoke_when: Use when a project has no .shipworthy/architecture.md, running /scaffold, adding new technology to the project, or making a significant architectural decision during brainstorming.
---

# Architecture Awareness

## Purpose

This skill solves the critical problem of **architectural amnesia** — when AI coding assistants forget project constraints between sessions. It generates and maintains an architecture specification that acts as a persistent, enforceable contract.

## When This Skill Activates

1. **No architecture spec exists** — first interaction with a new project
2. **User runs `/scaffold`** — explicit regeneration request
3. **New technology detected** — package.json/requirements.txt changes
4. **Architectural decision made** — during brainstorming, a decision warrants documentation

## User Tier Detection

The session-start hook detects a project's maturity tier based on these signals. Architecture awareness should adapt its behavior to the detected tier.

### Tier Signals

| Signal | How to Detect | What It Means |
|--------|--------------|---------------|
| Has code | `package.json`, `requirements.txt`, `go.mod`, `Cargo.toml`, `pom.xml`, `setup.py`, `pyproject.toml` exist | Project has been initialized with a language/framework |
| Has tests | `tests/`, `__tests__/`, `test/`, `spec/` directories exist, or files matching `*.test.*`, `*.spec.*`, `test_*.py`, `*_test.go` | Project has some test coverage |
| Has CI | `.github/workflows/`, `.gitlab-ci.yml`, `.circleci/`, `Jenkinsfile`, `.travis.yml`, `.buildkite/` exist | Project has automated quality checks |
| Has architecture | `.shipworthy/architecture.md` exists | Project has documented constraints |

### Tier Definitions

- **Builder** (no code OR no tests): Focus on getting working code first. Architecture spec should be lightweight — just Project Identity and 3-5 Mandatory Rules. Do not overwhelm with sections the project is not ready for yet.
- **Maker** (code + tests, no CI/architecture): Standard architecture spec with all sections. Recommend CI setup as part of architecture generation.
- **Engineer** (code + tests + CI/architecture): Full architecture spec with strict rules. Include Quality Gate Levels and Performance Budgets sections.

### Adapting Spec Generation to Tier

- **Builder**: Generate a minimal spec (Project Identity, Mandatory Rules, Directory Structure, Testing Strategy). Skip Quality Gate Levels and Performance Budgets unless the user asks.
- **Maker**: Generate a standard spec (all sections). Keep Common Mistakes to 5 items. Suggest but do not require CI configuration.
- **Engineer**: Generate a comprehensive spec (all sections fully populated). Include 8-10 Common Mistakes. Require CI configuration documentation.

## Coexistence with CLAUDE.md

Many projects already have a `CLAUDE.md` file that defines project-specific rules and conventions for AI assistants. When both `CLAUDE.md` and `architecture.md` exist (or when generating a new `architecture.md`), follow these rules:

### Detection
Check for `CLAUDE.md` (or `.claude/CLAUDE.md`) in the project root when generating or updating architecture.md.

### Incorporation Rules
1. **Read CLAUDE.md first**: Before generating architecture.md, read any existing CLAUDE.md and extract its rules.
2. **Do not conflict**: If CLAUDE.md says "use snake_case for files" and architecture.md would default to kebab-case, architecture.md MUST adopt snake_case. CLAUDE.md rules about the specific project take priority over template defaults.
3. **Do not duplicate**: If a rule exists in CLAUDE.md, reference it rather than copying it verbatim. Example: "See CLAUDE.md for commit message format" rather than restating the same rule.
4. **Complement, do not compete**: architecture.md should add engineering structure (Quality Gates, Performance Budgets, Testing Strategy) that CLAUDE.md typically does not cover. CLAUDE.md typically covers conventions and preferences.
5. **Document the relationship**: Include a note in architecture.md:
   ```
   ## Relationship to CLAUDE.md
   This project has a CLAUDE.md file. Rules in CLAUDE.md take priority for project-specific
   conventions. This architecture spec adds engineering structure (quality gates, testing
   strategy, performance budgets) that complements CLAUDE.md.
   ```

### Conflict Resolution
If there is a genuine conflict between CLAUDE.md and what architecture.md would recommend:
1. Flag the conflict to the user
2. Ask which rule should win
3. Document the resolution in architecture.md

## Context Budget

For large projects, the session-start hook has a 4000-character context budget. Architecture specs that exceed this limit will be summarized to just the Mandatory Rules section.

### Summary Section Requirement
Every architecture.md SHOULD have a Summary section at the top (under 500 characters) for quick context injection when the full spec exceeds the budget.

```markdown
# Architecture Specification: [Project Name]

## Summary
[Under 500 characters. Project type, language, framework, and the 3 most critical rules.
This section is used for context injection when the full spec is too large.]

## Project Identity
...
```

### How Summarization Works
1. The session-start hook checks if combined context exceeds 4000 characters
2. If it does, it extracts only the Mandatory Rules section
3. A note is added telling the assistant to read the full file for details
4. Skills that need full architecture context should read the file directly

### Best Practices for Budget-Friendly Specs
- Keep Mandatory Rules to 5-15 items, each on one line
- Use the Summary section for the essential identity and top 3 rules
- Move detailed examples and rationale into separate ADR files in `.shipworthy/decisions/`
- Prefer terse, actionable rules over verbose explanations

## Polyglot Projects

For projects with multiple languages (e.g., TypeScript frontend + Python backend, Go services + React UI), generate a composite architecture spec.

### Detection
A project is polyglot if it has multiple language indicators:
- `package.json` + `requirements.txt` (JS + Python)
- `package.json` + `go.mod` (JS + Go)
- `pom.xml` + `package.json` (Java + JS)
- Multiple `go.mod` files in subdirectories (Go monorepo)
- `Cargo.toml` + `package.json` (Rust + JS)

### Composite Spec Structure
For polyglot projects, the architecture spec should:

1. **Shared sections at the top**: Project Identity, Summary, and Mandatory Rules that apply to ALL languages.
2. **Language-specific sections**: Clearly scoped by directory path.

```markdown
## Mandatory Rules (All Languages)
1. All code must have tests
2. No secrets in source code
3. Use conventional commits

## TypeScript Rules (applies to: src/frontend/, src/shared/)
4. Strict mode enabled
5. No any types
6. Use React functional components

## Python Rules (applies to: src/backend/, scripts/)
7. Type hints required on all public functions
8. Use FastAPI for API endpoints
9. Format with black, lint with ruff

## Go Rules (applies to: services/)
10. Use standard library where possible
11. Error wrapping with fmt.Errorf
12. Table-driven tests
```

3. **Directory mapping**: Include a clear mapping of which rules apply where.
4. **Shared types/contracts**: Document how types are shared between languages (API schemas, protobuf, GraphQL, etc.).
5. **Build coordination**: Document how the different language components are built and tested together.

### Common Pitfalls in Polyglot Projects
- Applying JavaScript conventions to Python code (or vice versa)
- Missing integration tests between language boundaries
- Inconsistent error handling across language boundaries
- Different naming conventions in shared API contracts

## Phase 1: Project Detection

Analyze the project to understand its technology stack. Check for:

### Language & Framework Indicators
- `package.json` -> Node.js (check for Next.js, Express, React, Vue, etc.)
- `tsconfig.json` -> TypeScript (check strict mode, target, module system)
- `requirements.txt` / `pyproject.toml` / `setup.py` -> Python (check for FastAPI, Django, Flask)
- `go.mod` -> Go
- `Cargo.toml` -> Rust
- `pom.xml` / `build.gradle` -> Java/Kotlin

### Structure Indicators
- `src/app/` or `app/` -> Next.js App Router / framework convention
- `src/pages/` -> Next.js Pages Router or similar
- `src/components/` -> Component-based frontend
- `src/routes/` or `routes/` -> Express/backend routing
- `prisma/` or `drizzle.config.*` -> ORM usage
- `.github/workflows/` -> CI/CD with GitHub Actions
- `Dockerfile` / `docker-compose.yml` -> Containerized deployment
- `tests/` or `__tests__/` or `*.test.*` -> Testing patterns

### Existing Convention Indicators
- Read existing source files to detect naming patterns (camelCase, snake_case, PascalCase)
- Check import patterns (relative, absolute, aliases)
- Check error handling patterns
- Check existing test patterns (framework, location, naming)

## Phase 2: Template Selection

Select the most appropriate template from `templates/`:
- `nextjs.md` — Next.js applications (App Router or Pages Router)
- `express.md` — Express/Node.js API services
- `fastapi.md` — Python FastAPI services
- `go-service.md` — Go microservices
- `react-spa.md` — React single-page applications
- `generic-typescript.md` — TypeScript projects without specific framework
- `generic-python.md` — Python projects without specific framework
- `monorepo.md` — Multi-package repositories

If the project doesn't match any template, use the closest one and adapt.

For polyglot projects, combine relevant templates and use the composite spec structure described above.

## Phase 3: Specification Generation

### For Greenfield Projects (no existing code)
Fill the template with sensible defaults and best practices for the detected stack. **Prescribe what SHOULD BE.**

### For Brownfield Projects (existing code)
Analyze existing patterns and document them as-is. **Describe what IS.**

Critical rule: Do NOT impose alien patterns on existing codebases. If the project uses `snake_case` for files, the spec should say `snake_case`, not `kebab-case`. The spec should codify existing conventions, making them explicit and enforceable.

### Specification Structure

Generate `.shipworthy/architecture.md` with these sections:

```markdown
# Architecture Specification: [Project Name]

## Summary
[Under 500 characters. Project type, language, framework, and the 3 most critical rules.
Used for context injection when the full spec exceeds the budget.]

## Project Identity
- **Type**: [e.g., Next.js 14 App Router application]
- **Language**: [e.g., TypeScript 5.x strict mode]
- **Runtime**: [e.g., Node.js 20+]
- **Primary Framework**: [e.g., Next.js 14]
- **Package Manager**: [e.g., npm/pnpm/yarn/bun]

## Relationship to CLAUDE.md
[If CLAUDE.md exists: note the relationship. If not: omit this section.]

## Mandatory Rules
[Numbered list of 5-15 inviolable constraints specific to this project]
[These become the CLAUDE.md-style rules enforced at every session]

## Directory Structure
[Expected layout with purpose annotations]

## Naming Conventions
[File naming, variable naming, component naming, test naming]

## Type System
[Where types live, how shared between modules, strict mode rules]

## Testing Strategy
[Framework, file locations, naming patterns, coverage expectations]
[What MUST be tested vs what's optional]

## Error Handling
[Stack-specific error handling pattern]

## Security Baseline
[Stack-specific security requirements]

## Performance Budgets
[Default thresholds — bundle size, API response time, query limits]

## Quality Gate Levels
[Graduated thresholds configuration]
Level 1 (always): [checks]
Level 2 (10+ files): [checks]
Level 3 (50+ files): [checks]
Level 4 (100+ files): [checks]

## Common Mistakes
[5-10 documented pitfalls specific to this stack/project]
```

## Phase 4: User Approval

Present the generated specification to the user with:
1. Summary of what was detected
2. The full specification
3. Invitation to modify before saving

**Do NOT save architecture.md without user approval.** This is their project; the spec is a suggestion until they accept it.

## Phase 5: Evolution

When the architecture needs to change:
1. Identify what changed (new dependency, new pattern, architectural decision)
2. Propose specific updates to the relevant sections
3. Show the diff (old -> new)
4. Get user approval before updating

Track significant decisions as Architecture Decision Records in `.shipworthy/decisions/`:
```markdown
# ADR-NNN: [Decision Title]

## Status: [Accepted/Superseded/Deprecated]
## Date: [YYYY-MM-DD]

## Context
[What prompted this decision]

## Decision
[What was decided]

## Consequences
[What this means going forward]
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…