Changelog - Version 1.x
All notable changes for major version 1 of the SDD plugin.
---
[1.10.29] - 2026-01-18
Added
- **TDD Red-Green-Refactor methodology** to backend-dev agent
- The Cycle: RED (failing test) β GREEN (minimal code) β REFACTOR
- TDD by Layer table: test locations for Model, DAL, Controller, Server
- TDD Rules: file naming, fake dependencies, behavior-focused tests
- Updated Build Order to integrate RED/GREEN steps
[1.10.28] - 2026-01-18
Fixed
- **QUICKSTART.md installation commands**: Use correct Claude Code plugin syntax
- Step 1: `/plugin marketplace add LiorCohen/claude-code-plugins`
- Step 2: `/plugin install sdd@lior-cohen-cc-plugins`
[1.10.27] - 2026-01-18
Changed
- **QUICKSTART.md installation steps**: Split into two clear steps
- Step 1: Install the marketplace (`claude mcp add-json`)
- Step 2: Install the SDD plugin from marketplace (`claude plugin install sdd --marketplace`)
[1.10.26] - 2026-01-18
Changed
- **Server layer owns DB connections**: Clarified database connection handling
- Server layer creates connection pool on startup using Config values
- Passes database client to Controller (which passes to DAL via Dependencies)
- Closes connections on graceful shutdown
[1.10.25] - 2026-01-18
Added
- **Controller http_handlers structure**: Clarified controller layer organization
- Added `http_handlers/` directory with one file per API namespace
- Each handler file exports a router (e.g., `usersRouter`)
- `create_controller.ts` assembles routers and creates Dependencies for Model
- Added template files: `http_handlers/users.ts`, `http_handlers/index.ts`
- Updated `create_controller.ts` to use the new structure
[1.10.24] - 2026-01-18
Changed
- **Refined backend-dev.md**: Keep explanations, remove inline code examples (305 lines)
- Preserved all verbal explanations, rules, and guidelines
- Removed inline code examples (now in template files)
- Each layer section points to its template for code patterns
- Kept directory structure diagrams (not code)
- Kept all tables (log levels, metrics, span attributes, etc.)
[1.10.23] - 2026-01-18
Changed
- **Restored backend-dev.md explanatory content**: Reverted over-consolidation that removed essential guidance
- Restored detailed layer explanations with code examples
- Restored Definitions Rules (TypeScript types only, no Zod)
- Restored Use Case Pattern and DAL Function Pattern examples
- Restored complete Telemetry section (logging, metrics, spans)
- Added template references to each layer section while preserving explanations
- File now 680 lines with full guidance + template references
[1.10.22] - 2026-01-18
Changed
- **Consolidated backend-dev.md**: Reduced from 663 to 142 lines by removing redundancies
- Merged Templates table and Layer Overview into single Architecture table
- Replaced inline code examples with template file references
- Removed redundant TypeScript Standards section (now references `typescript-standards` skill)
- Consolidated duplicate environment variable rules
- Simplified Telemetry section with table format
[1.10.21] - 2026-01-18
Added
- **Server templates**: Added comprehensive template files for all 5 backend layers
- `model/` - definitions, dependencies, use-cases with example user CRUD
- `dal/` - data access functions (find_user_by_id, find_user_by_email, insert_user)
- `controller/` - request/response handling with health check endpoints
- `telemetry/` - OpenTelemetry logging and metrics setup
- Updated `index.ts` to import telemetry first
[1.10.20] - 2026-01-18
Removed
- **Debug banners**: Removed banner printing instructions from all agents and skills
- Removed from 10 agents: api-designer, backend-dev, ci-dev, db-advisor, devops, frontend-dev, planner, reviewer, spec-writer, tester
- Removed from 5 SDD skills: planning, spec-index, spec-writing, testing, typescript-standards
- Removed from marketplace commit skill
---
Infrastructure - 2026-01-17
Added
- **Commit skill**: Added `/commit` skill for marketplace development
- Version bump workflow
- CHANGELOG entry generation
- Commit message formatting
---
[1.10.19] - 2026-01-17
Changed
- **Refactored MVVM architecture**: Moved models from root-level directory to page-specific files
- Removed `src/models/` directory from frontend structure
- Each page now contains its own model file (e.g., `user_profile_model.ts`)
- Models contain page-specific business logic (data transformation, validation, domain rules)
- Services (`src/services/`) remain shared for API communication
- Updated Page Structure example to show model file usage with ViewModel integration
Rationale
Page-specific models provide:
- **Colocation**: Business logic lives alongside its View and ViewModel
- **Clarity**: Each page's model contains only relevant logic
- **Simplicity**: No need for a shared models directory with unclear ownership
- **Consistency**: Follows the same pattern as page-specific ViewModels
[1.10.18] - 2026-01-17
Changed
- **Simplified plugin.json**: Removed explicit commands, agents, and skills arrays - Claude Code auto-discovers these from directory structure
[1.10.17] - 2026-01-17
Added
- **Explicit agents and skills paths in plugin.json**: Added `agents` and `skills` directory references to plugin manifest for better plugin discovery
[1.10.16] - 2026-01-17
Changed
- **Reorganized skills into dedicated folders**: Each skill now has its own directory
- `skills/<skill-name>.md` β `skills/<skill-name>/SKILL.md`
- Prepares for skills to have additional resources (templates, examples)
[1.10.15] - 2026-01-17
Added
- **Debug banners for agents and skills**: All agents and skills now print a colorful banner when invoked
- Agents display: `π€ AGENT: <name>` with description
- Skills display: `π§ SKILL: <name>` with description
- Helps identify which agents/skills are active during command execution
[1.10.14] - 2026-01-17
Changed
- **Renamed commands from `/project:<command>` to `/sdd-<command>`**: Updated all command references
- `/project:init` β `/sdd-init`
- `/project:new-feature` β `/sdd-new-feature`
- `/project:implement-plan` β `/sdd-implement-plan`
- `/project:verify-spec` β `/sdd-verify-spec`
- `/project:generate-snapshot` β `/sdd-generate-snapshot`
- Updated command files and project templates
[1.10.13] - 2026-01-17
Changed
- **Extracted inline templates to templates/ directory**: Code templates now live in separate files
- Server templates: `src/index.ts`, `src/config/load_config.ts`, `src/config/index.ts`, `src/server/create_server.ts`, `src/server/index.ts`, `.gitignore`
- Webapp templates: `src/main.tsx`, `src/app.tsx`, `src/index.css`, `.gitignore`
- sdd-init.md now references template files instead of inline code blocks
- Renamed `App.tsx` to `app.tsx` to follow lowercase naming convention
Rationale
Extracting templates to separate files provides:
- **Maintainability**: Templates can be edited as real TypeScript files with IDE support
- **Testability**: Template files can be validated independently
- **Clarity**: sdd-init.md is more concise and easier to read
[1.10.12] - 2026-01-17
Fixed
- **Moved `dotenv.config()` inside `loadConfig()` function**: Fixed side effect on import
- `dotenv.config()` is now called inside `loadConfig()`, not at module level
- Config module has no side effects when imported
- Only `src/index.ts` has side effects (application entry point)
- Updated both `backend-dev` agent and `sdd-init` command
- **Changed `interface` to `type` in code templates**: Consistency with typescript-standards
- Config and Server types now use `type` with `Readonly<>` wrapper
- Follows the pattern shown in typescript-standards examples
- **Clarified entry point exception**: `src/index.ts` is allowed to have side effects as application entry point
- This is an explicit exception to the "index.ts exports only" rule
- Application entry points need to run code on import
- **Moved logic out of module index.ts files**: All index.ts files now contain only exports
- `src/config/load_config.ts` contains the `loadConfig` function and `Config` type
- `src/config/index.ts` re-exports from `load_config.ts`
- `src/server/create_server.ts` contains the `createServer` function
- `src/server/index.ts` re-exports from `create_server.ts`
- Updated both `backend-dev` agent and `sdd-init` command
Rationale
These fixes ensure all code templates follow the established standards:
- **Testability**: Modules can be imported in tests without triggering side effects (except entry point)
- **Standards compliance**: All `index.ts` files contain only exports (except application entry point)
[1.10.11] - 2026-01-17
Removed
- **sdd-init command**: Removed tech stack confirmation prompt
- The tech stack is fixed (React, Node.js, TypeScript, PostgreSQL, Kubernetes)
- No need to ask for confirmation since it cannot be changed during init
- Streamlines the initialization flow
[1.10.10] - 2026-01-17
Changed
- **sdd-init command**: Changed argument syntax from positional to named
- Project name now uses `--name <project-name>` instead of positional argument
- Examples updated: `/sdd-init --name my-app` instead of `/sdd-init my-app`
- Consistent with `--spec` argument style
Rationale
Named arguments provide:
- **Clarity**: Explicit intent when specifying project name
- **Consistency**: Both arguments now use `--` prefix style
- **Flexibility**: Arguments can be provided in any order
[1.10.9] - 2026-01-16
Enhanced
- **sdd-init command**: Now follows `backend-dev` agent and `typescript-standards` skill when generating code
- Added CRITICAL note requiring all generated code to follow agent/skill standards
- Server component: Generates proper 5-layer architecture scaffolding
- Minimal `src/index.ts` entry point (only file with side effects)
- `src/config/index.ts` with dotenv and type-safe config
- `src/server/index.ts` with server factory pattern
- Webapp component: Generates MVVM architecture scaffolding
- Creates full MVVM directory structure (`pages/`, `components/`, `viewmodels/`, `models/`, `services/`, `stores/`, `types/`, `utils/`)
- `src/main.tsx` entry point
- `src/App.tsx` with TailwindCSS
- `src/index.css` with Tailwind directives
- Tailwind config file
- All generated TypeScript follows `typescript-standards` (readonly, arrow functions, named exports)
Rationale
Ensuring sdd-init follows the same standards as implementation:
- **Consistency**: Initial scaffolding matches what implementation phases produce
- **No refactoring needed**: Developers don't need to restructure after init
- **Learning**: New developers see correct patterns from the start
- **Standards enforcement**: Agent/skill rules apply from day one
[1.10.8] - 2026-01-16
Added
- **planning skill**: Added Phase 0 (Domain Documentation) as mandatory prerequisite
- Phase 0 MUST be completed before any code implementation begins
- Tasks: Update glossary, create/update definition specs, document use cases, update architecture docs
- Includes verification checklist to ensure all domain concepts are documented
- Phases renumbered: Domain Documentation (0) β API Contract (1) β Backend (2) β Frontend (3) β Testing (4) β Review (5)
- **sdd-implement-plan command**: Updated to explicitly reference Phase 0
- Step 2 now titled "Execute Phase 0: Domain Documentation"
- Clear blocking requirement: Cannot proceed to Phase 1 until Phase 0 is complete
- Updated example to show Phase 0 execution flow
Rationale
Domain documentation as a prerequisite ensures:
- **Shared understanding**: All domain concepts documented before implementation
- **No drift**: Code implementation follows documented domain model
- **Traceability**: Clear path from spec β domain docs β implementation
- **Quality**: Forces thinking through domain model before writing code
[1.10.7] - 2026-01-16
Added
- **backend-dev agent**: Entry point rules for `src/index.ts`
- `src/index.ts` is the ONLY file with side effects when imported
- All other files must be pure exports with no side effects on import
- `src/index.ts` must be minimal: import server, start server, nothing else
- NO logic, configuration loading, or setup in the root index file
- Added code example showing the correct minimal entry point pattern
- Added corresponding rule to Rules section
Rationale
Isolating side effects to `src/index.ts` provides:
- **Testability**: All modules can be imported in tests without triggering side effects
- **Clarity**: Easy to understand what runs at startup vs what's pure code
- **Modularity**: Each module is self-contained and doesn't depend on import order
- **Debugging**: Side effects are predictable and traceable to one location
[1.10.6] - 2026-01-16
Changed
- **Terminology clarification**: "Model" always refers to Domain Model layer, never database models
- Updated `frontend-dev` agent: `src/models/` description changed from "Business logic and data models" to "Domain logic (the 'M' in MVVM)"
- Updated `README.md`: Same clarification for frontend directory structure
- Updated `planning.md` skill: Backend tasks now specify "Add domain definitions to `model/definitions/`" instead of ambiguous "Add model definitions"
- Updated historical CHANGELOG entry for v1.7.0 to use consistent terminology
Rationale
The term "Model" in this plugin exclusively refers to:
- **Backend**: The Model layer containing domain definitions and use-cases (`src/model/`)
- **Frontend**: The Model layer in MVVM containing domain/business logic (`src/models/`)
The term "data model" was removed as it could be confused with database models. This plugin does not use "Model" to refer to database-related concepts.
[1.10.5] - 2026-01-15
Added
- **typescript-standards skill**: Added "No Classes or Inheritance" rule
- CRITICAL: Never use classes or inheritance unless creating a subclass of Error
- Classes encourage mutation and tight coupling
- Inheritance creates fragile hierarchies
- Functions with explicit dependencies are easier to test and reason about
- Error subclasses are the only exception (for `instanceof` checks and stack traces)
- Added code examples showing correct patterns (types + functions) vs incorrect (classes, inheritance, service classes)
- Updated Summary Checklist with new rule
Rationale
Avoiding classes and inheritance provides:
- **Immutability**: Functions don't have `this` to mutate
- **Simplicity**: No inheritance hierarchies to navigate
- **Testability**: Pure functions with explicit dependencies are trivial to test
- **Clarity**: Data flows through function parameters, not hidden state
[1.10.4] - 2026-01-15
Changed
- **backend-dev agent**: Model definitions must use TypeScript types only
- NO Zod, Yup, io-ts, or similar validation libraries in `model/definitions/`
- Definitions are compile-time type constructs, not runtime validators
- Validation belongs in Controller layer (input) or Server layer (middleware)
- Added code examples showing correct TypeScript types vs incorrect Zod usage
Rationale
Keeping model definitions as pure TypeScript types:
- **Separation of concerns**: Validation is an infrastructure concern, not domain logic
- **Simplicity**: Types are sufficient for domain modeling
- **No runtime overhead**: Compile-time checks only
- **Cleaner imports**: Model layer stays dependency-free
[1.10.3] - 2026-01-15
Enhanced
- **backend-dev agent**: Added explicit info logging guidelines for telemetry
- Log **before** starting a domain action (`info`)
- Log **after** success (`info`) or failure (`error`)
- Applies to: database writes, user actions, outgoing calls, state transitions, business events
- Added code examples showing proper before/after logging pattern
Rationale
Consistent info logging enables:
- **Observability**: Track all significant operations in production
- **Debugging**: Trace the path of requests through the system
- **Auditing**: Record business-relevant events for compliance
- **Monitoring**: Alert on missing expected logs
[1.10.2] - 2026-01-15
Changed
- **Terminology update**: Renamed `entities` to `definitions` throughout the plugin
- `specs/domain/entities/` β `specs/domain/definitions/`
- Updated all agents, skills, commands, and templates
- Updated README.md, CHANGELOG.md, and documentation
- Affects: spec-writer agent, spec-writing skill, planning skill, sdd-init command, sdd-implement-plan command, sdd-verify-spec command, glossary template
Rationale
The term "definitions" is more generic and inclusive:
- **Broader scope**: Covers entities, value objects, aggregates, and other domain concepts
- **Less prescriptive**: Doesn't impose DDD terminology on projects
- **Clearer intent**: "Definitions" better describes the purpose of documenting domain concepts
[1.10.1] - 2026-01-15
Changed
- **backend-dev agent**: Replaced repository pattern with data access functions in DAL layer
- One function per file, named after the function (e.g., `find_user_by_id.ts`)
- Each function receives its dependencies as the first argument
- No classes, repository interfaces, or abstraction layers
- Direct database queries with proper parameterization
- `index.ts` re-exports all functions
- No assumed grouping - subdirectories only if explicitly instructed
Rationale
Data access functions provide:
- **Simplicity**: Direct, focused functions without abstraction overhead
- **Flexibility**: Functions can query across multiple tables without definition-based constraints
- **Clarity**: Each file does one thing, named after what it does
- **No assumptions**: Developer controls structure, no forced definition grouping
[1.10.0] - 2026-01-14
Added
- **specs/domain/use-cases/ directory**: New directory for business use case definitions
- Added to sdd-init command directory creation
- Documented in README "Key Files in specs/" table
- Documented in QUICKSTART "Key Files" table
- Added to spec-writer agent Location Rules table
- Use cases provide a structured location for documenting key business workflows and scenarios
Rationale
The use-cases directory provides:
- **Structured Documentation**: Dedicated location for business workflows and scenarios
- **Domain Clarity**: Separates use cases from definitions and glossary for better organization
- **Spec Coverage**: Ensures business logic and user journeys are explicitly documented
- **Consistency**: Follows the same domain-driven structure as definitions and glossary
**Version Note**: This is a minor version bump (1.9.x β 1.10.0) because it adds a new feature (directory structure) that extends functionality without breaking existing behavior.
[1.9.3] - 2026-01-13
Fixed
- **sdd-init command smart directory handling**: Prevent redundant nested directories
- Checks if current directory basename matches the project name
- If in an empty directory with matching name, asks to initialize in place
- Avoids creating `test-app/test-app/*` when already in `test-app/`
- Uses `TARGET_DIR` variable throughout to handle both cases (current dir or subdirectory)
- Updates completion messages to show actual location
- Adjusts `cd` instructions based on whether a subdirectory was created
- Git initialization checks if already in a repository
Rationale
Smart directory detection provides:
- **Better UX**: No redundant nested directories when already in the right place
- **Flexibility**: Supports both "create subdirectory" and "initialize here" workflows
- **Safety**: Checks if directory is empty before initializing in place
- **Clarity**: Always shows absolute path in completion message
[1.9.2] - 2026-01-13
Enhanced
- **External spec handling in sdd-init command**: Improved external spec integration
- External specs are now copied to `specs/external/<original-filename>` for permanent reference
- Feature specs reference the external source via `external_source` frontmatter field
- Added "External Source" section to feature specs with reference to original file
- INDEX.md now includes an "External Specifications" section listing all imported specs
- Directory structure includes `specs/external/` for preserving original source documents
- Completion messages show the location of both the original and integrated specs
- This provides better traceability between the original requirements and the SDD feature specs
Rationale
Copying external specs to `specs/external/` and referencing them provides:
- **Traceability**: Clear link between original requirements and feature specs
- **Version control**: Original specs are preserved in git alongside the project
- **Auditability**: Easy to compare original requirements with implementation
- **Documentation**: Keeps all relevant documentation in one repository
[1.9.1] - 2026-01-13
Enhanced
- **File naming conventions enforced**: All agents now enforce `lowercase_with_underscores` for filenames
- `frontend-dev` agent: Updated all examples and added explicit file naming rules
- Directory names: `home_page/`, `user_profile/`, `button/` (not `HomePage/`, `UserProfile/`, `Button/`)
- Component files: `user_profile.tsx`, `button.tsx` (not `UserProfile.tsx`, `Button.tsx`)
- ViewModel hooks: `use_user_profile_view_model.ts` (not `useUserProfileViewModel.ts`)
- Store files: `auth_store.ts` (not `authStore.ts`)
- `backend-dev` agent: Updated use-case examples and added explicit file naming rules
- Use-case files: `create_user.ts`, `update_user.ts` (not `createUser.ts`, `updateUser.ts`)
- `api-designer` agent: Added file naming rule for schema files (already using correct convention)
- Added clear examples with β
correct and β incorrect patterns
- Component names in code remain PascalCase (e.g., `export const UserProfile = ...`)
Rationale
Lowercase_with_underscores provides:
- **Consistency**: Same convention across frontend, backend, and infrastructure files
- **Portability**: No case-sensitivity issues across operating systems
- **Readability**: Clear word separation without relying on case
- **Best practice**: Common convention in Python, SQL, and many infrastructure tools
[1.9.0] - 2026-01-13
Changed
- **All commands renamed**: Removed `project:` namespace, added `sdd-` prefix to all command names
- `/project:init` β `/sdd-init`
- `/project:new-feature` β `/sdd-new-feature`
- `/project:implement-plan` β `/sdd-implement-plan`
- `/project:verify-spec` β `/sdd-verify-spec`
- `/project:generate-snapshot` β `/sdd-generate-snapshot`
- Command files renamed with `sdd-` prefix (e.g., `init.md` β `sdd-init.md`)
- Frontmatter `name` field updated in all command files
- Heading updated in all command files (e.g., `# /project:init` β `# /sdd-init`)
Updated Files
- `commands/sdd-init.md`: Renamed from `init.md`, updated name and heading
- `commands/sdd-new-feature.md`: Renamed from `new-feature.md`, updated name and heading
- `commands/sdd-implement-plan.md`: Renamed from `implement-plan.md`, updated name and heading
- `commands/sdd-verify-spec.md`: Renamed from `verify-spec.md`, updated name and heading
- `commands/sdd-generate-snapshot.md`: Renamed from `generate-snapshot.md`, updated name and heading
- `plugin/.claude-plugin/plugin.json`: Updated commands array, bumped to 1.9.0
- `.claude-plugin/marketplace.json`: Bumped to 1.9.0
Impact
This change simplifies command naming and removes the redundant namespace:
- **Shorter commands**: Removed `project:` namespace (was redundant with plugin name)
- **Clearer naming**: `sdd-` prefix clearly identifies commands as part of SDD plugin
- **Consistency**: Command file names now match command names exactly
- **Better discoverability**: Commands are more intuitive with plugin-specific prefix
**Migration**: Users should update any scripts or documentation that reference the old command names:
- Old: `/project:init`, `/project:new-feature`, etc.
- New: `/sdd-init`, `/sdd-new-feature`, etc.
**Rationale**: The `project:` namespace was redundant since the plugin is already namespaced as "sdd". Using `sdd-` prefix follows common CLI tool patterns (like `git-`, `npm-`) and makes commands more concise.
---
Infrastructure - 2026-01-13
Added
- **Marketplace structure**: Initial marketplace organization
- Created root `README.md` explaining plugin marketplace
- Created `marketplace.json` manifest
- Renamed plugin directory to `full-stack-spec-driven-dev`
Changed
- **CONTRIBUTING.md**: Updated for marketplace structure
- **CLAUDE.md**: Separated marketplace vs plugin guidance
- **README.md**: Reorganized structure for marketplace vs plugin
---
[1.8.3] - 2026-01-13
Added
- **plugin manifest**: Added commands array to plugin.json for command discovery
- References all 5 command files with relative paths:
- `./commands/init.md`
- `./commands/new-feature.md`
- `./commands/implement-plan.md`
- `./commands/verify-spec.md`
- `./commands/generate-snapshot.md`
- Enables Claude Code to automatically discover and register plugin commands
- Uses relative paths with `./` prefix for portability
Updated Files
- `plugin/.claude-plugin/plugin.json`: Added commands array, bumped to 1.8.3
- `.claude-plugin/marketplace.json`: Bumped to 1.8.3
Impact
This enhancement improves plugin command registration:
- **Automatic discovery**: Claude Code can now discover commands from manifest
- **Better UX**: Commands appear in autocomplete and help documentation
- **Standards compliance**: Follows Claude Code plugin manifest specification
- **Maintainability**: Single source of truth for command references
**Technical Note**: The commands array contains file path references (strings) rather than command metadata objects. Each path points to a command markdown file with frontmatter containing the command's name and description.
[1.8.2] - 2026-01-12
Fixed
- **new-feature command**: Fixed workflow order to collect feature name before branch check
- **Issue**: Command suggested `feature/<feature-name>` branch before collecting the feature name
- **Fix**: Reordered flow to collect feature name first (Step 1), then check branch (Step 2)
- **New flow**:
- Collect feature name (from argument or prompt)
- Check git branch and suggest `feature/<actual-feature-name>`
- Collect remaining information (issue, domain, description)
4-6. Create spec, plan, and review
Updated Files
- `commands/new-feature.md`: Reordered steps, updated examples, clarified important notes
- `plugin/.claude-plugin/plugin.json`: Bumped to 1.8.2
- `.claude-plugin/marketplace.json`: Bumped to 1.8.2
Impact
This fix ensures a logical workflow:
- **Feature name available**: Branch suggestion now uses the actual feature name
- **Better UX**: Users see the correct branch suggestion immediately
- **Logical flow**: Name β Branch β Details makes more sense
- **Examples updated**: All three examples now show correct order
**Before (incorrect):**
Step 0: Check branch (suggests feature/<feature-name> without knowing name)
Step 1: Collect feature name
**After (correct):**
Step 1: Collect feature name
Step 2: Check branch (suggests feature/<actual-feature-name>)
Step 3: Collect remaining information
[1.8.1] - 2026-01-12
Enhanced
- **typescript-standards skill**: Added three critical module system rules
- **Named exports only**: Prohibit default exports, enforce named exports for better IDE support and refactoring
- **ES modules only**: Prohibit CommonJS (`require`/`module.exports`), enforce ES module syntax (`import`/`export`)
- **Import through index.ts only**: Prohibit bypassing module public APIs, enforce importing only from `index.ts` files
New Rules
- **Named Exports Only:**
- β
`export const createUser = ...`
- β
`export interface User { ... }`
- β `export default createUser` (NEVER)
- **Why**: Better IDE autocomplete, explicit imports, easier to find usages, no ambiguity
- **ES Modules Only:**
- β
`import { createUser } from './user.js'`
- β
`export { updateUser } from './user.js'`
- β `const { createUser } = require('./user')` (NEVER)
- β `module.exports = createUser` (NEVER)
- **Why**: Standard JavaScript, statically analyzable (tree-shaking), async by nature, modern tooling requirement
- **Import Through index.ts Only:**
- β
`import { createUser } from '../user'` (from module's public API)
- β `import { createUser } from '../user/createUser.js'` (NEVER bypass index.ts)
- β `import { helper } from '../user/internal/helper.js'` (NEVER access internals)
- **Why**: Module encapsulation, clean public APIs, easier refactoring, clear module boundaries
Updated Files
- `skills/typescript-standards.md`: Added "Module System Rules" section with 3 subsections
- Updated summary checklist with 3 new items
- `plugin/.claude-plugin/plugin.json`: Bumped to 1.8.1
- `.claude-plugin/marketplace.json`: Bumped to 1.8.1
Impact
These rules strengthen code quality and maintainability:
**Named Exports Benefits**:
- IDE can autocomplete exact names
- Refactoring tools work correctly
- Easy to find all usages with search
- Import statements are explicit and clear
**ES Modules Benefits**:
- Standard JavaScript module system
- Tree-shaking works (reduces bundle size)
- Static analysis possible (better tooling)
- Async loading supported natively
- TypeScript tooling expects ES modules
**Index.ts Import Benefits**:
- Modules control what's public vs private
- Internal files can be refactored without breaking imports
- Clear separation of public API from implementation
- Better encapsulation (information hiding)
- Easier to understand module boundaries
**Example:**
// Module structure
user/
βββ index.ts # Public API: export { createUser, User }
βββ createUser.ts # Implementation (private)
βββ internal/ # Internal helpers (private)
βββ validator.ts
// Correct usage (imports from public API)
import { createUser } from '../user';
// Wrong usage (bypasses public API)
import { createUser } from '../user/createUser.js'; // β NEVER
[1.8.0] - 2026-01-12
Enhanced
- **init command**: Added support for external specification files
- **New argument**: `--spec <path>` to initialize project from existing spec
- **Phase 0**: Parse and load external spec, extract project metadata
- **Smart defaults**: Use extracted values (name, description, domain) as defaults in prompts
- **Automatic integration**: External spec becomes initial feature specification
- **Plan generation**: Automatically creates implementation plan from external spec
- **Domain extraction**: Extracts key terms and adds to glossary
- **INDEX/SNAPSHOT updates**: Automatically registers imported spec
New Usage
# Initialize from external spec
/project:init my-app --spec /path/to/requirements.md
# Initialize from spec, will prompt for project name
/project:init --spec /path/to/product-spec.md
Workflow Changes
- **Phase 0 (New)**: Parse arguments and load external spec if provided
- Reads external spec file
- Extracts project name, description, domain, definitions, requirements
- Validates spec file existence and readability
- **Phase 1 (Enhanced)**: Uses extracted values as defaults in prompts
- Prompts show: "Project name [<extracted-default>]: "
- Users can accept defaults or override
- **Step 3 (Enhanced)**: External spec integration after template copy
- Creates `specs/features/YYYY/MM/DD/initial-spec/SPEC.md` from external spec
- Adds proper frontmatter with source tracking
- Generates `PLAN.md` with implementation phases
- Updates INDEX.md and SNAPSHOT.md
- Extracts domain terms to glossary
- **Step 5 (Enhanced)**: Different completion messages
- External spec path: Shows plan review and implementation next steps
- Standard path: Shows feature creation next steps
Updated Files
- `commands/init.md`: Added --spec argument, Phase 0, external spec integration workflow
- `plugin/.claude-plugin/plugin.json`: Bumped to 1.8.0
- `.claude-plugin/marketplace.json`: Bumped to 1.8.0
Impact
This enhancement enables seamless project initialization from existing specifications:
**Use Cases**:
- **Product requirements**: Import PRD documents as initial specs
- **Design documents**: Start implementation from design specs
- **Migration projects**: Import legacy system specs
- **Customer requirements**: Use client-provided specs directly
- **RFP responses**: Initialize from RFP documents
**Benefits**:
- **Time savings**: No manual spec creation or copying
- **Consistency**: Automatic formatting and structure
- **Traceability**: Source tracking in frontmatter
- **Immediate planning**: Auto-generated implementation plan
- **Domain capture**: Automatic glossary population
**Example workflow**:
- Receive product-requirements.md from product team
- Run: `/project:init my-product --spec product-requirements.md`
- Review generated plan: `specs/features/YYYY/MM/DD/initial-spec/PLAN.md`
- Start implementation: `/project:implement-plan specs/features/YYYY/MM/DD/initial-spec/PLAN.md`
[1.7.1] - 2026-01-12
Changed
- **init command**: Renamed from `init-project` to `init` for brevity
- Command file: `commands/init-project.md` β `commands/init.md`
- Command name: `/project:init-project` β `/project:init`
- Updated all documentation references (README.md, QUICKSTART.md, CLAUDE.md)
- Added `namespace: "sdd"` to plugin manifest
Updated Files
- `commands/init.md`: Updated command name and frontmatter
- `plugin/.claude-plugin/plugin.json`: Added namespace, bumped to 1.7.1
- `.claude-plugin/marketplace.json`: Bumped to 1.7.1
- `README.md`: Updated command references
- `QUICKSTART.md`: Updated command references and file tree
- `CLAUDE.md`: Updated command references
Impact
This change simplifies the command interface:
- **Shorter command**: `/project:init` vs `/project:init-project`
- **More intuitive**: Common convention (like `git init`, `npm init`)
- **Consistent naming**: Aligns with industry standards
- **Namespace added**: Ensures plugin uniqueness in marketplace
**Migration**: Users should update any scripts or documentation that reference `/project:init-project` to use `/project:init` instead.
[1.7.0] - 2026-01-11
Enhanced
- **frontend-dev agent**: Major architectural overhaul with MVVM, page-based organization, TanStack ecosystem, and TailwindCSS
- **MVVM Architecture (Mandatory)**:
- Strict separation: Model (business logic) β ViewModel (hooks) β View (React components)
- Page-based organization: `src/pages/<PageName>/` with index.ts, Page.tsx, usePageViewModel.ts
- ViewModels as hooks: One `useXViewModel.ts` per page that connects Model to View
- Model layer separation: Business logic in `src/models/`, API calls in `src/services/`
- **Directory Structure**:
- `src/pages/` - Page components with dedicated subdirectories
- `src/components/` - Shared presentational components
- `src/viewmodels/` - Shared ViewModel hooks
- `src/models/` - Domain logic (the "M" in MVVM)
- `src/services/` - API clients and external services
- `src/stores/` - Global state (Zustand)
- `src/types/` - Generated types from OpenAPI contract
- **TanStack Ecosystem (Mandatory)**:
- **TanStack Router**: All routing and navigation (replaces React Router)
- **TanStack Query**: All server state management (mandatory for API calls)
- **TanStack Table**: All tabular data display
- **TanStack Form**: Complex forms with validation
- **TailwindCSS (Mandatory)**:
- All styling MUST use Tailwind utility classes
- NO inline styles, NO CSS files (except Tailwind setup), NO CSS-in-JS libraries
- Responsive design with mobile-first approach
- Dark mode support with `dark:` variants
- Use `clsx` for conditional classes
- **State Management**:
- Server state: TanStack Query (all API data)
- Global client state: Zustand (auth, theme, preferences)
- Local client state: useState (forms, UI toggles)
- URL state: TanStack Router (pagination, filters)
- **Updated Rules**:
- Strict MVVM - Views never contain business logic
- Page-based organization - Every page in dedicated subdirectory
- ViewModels as hooks - One per page, handles all business logic
- TailwindCSS only - Utility-first styling approach
- TanStack ecosystem - All routing, state, tables, and forms
Updated Files
- **frontend-dev agent**:
- Added comprehensive MVVM architecture section with layer responsibilities
- Added detailed directory structure with 9 subdirectories
- Added mandatory page structure with complete code examples
- Added TanStack ecosystem section (Router, Query, Table, Form)
- Added TailwindCSS section with styling rules and examples
- Updated component standards for presentational components
- Updated state management table with 4 state types and tools
- Added Zustand store example
- Reorganized and expanded Rules section into 4 categories
- Version bumped to 1.7.0 in plugin.json and marketplace.json
Impact
This enhancement transforms frontend development with opinionated, modern architecture:
**MVVM Benefits**:
- **Clear separation of concerns**: Business logic isolated from UI
- **Testability**: ViewModels and Models can be unit tested without UI
- **Reusability**: Shared ViewModels and Models across pages
- **Maintainability**: Easy to locate and modify logic by layer
**Page-Based Organization**:
- **Scalability**: Each page is self-contained with its ViewModel
- **Discoverability**: Clear file structure, easy to find components
- **Code colocation**: Related files grouped together
- **Consistency**: Every page follows the same pattern
**TanStack Ecosystem**:
- **Modern routing**: Type-safe routes with TanStack Router
- **Powerful state**: Server state management with caching, refetching
- **Advanced tables**: Sorting, filtering, pagination out of the box
- **Form validation**: Built-in validation with TanStack Form
**TailwindCSS Benefits**:
- **Rapid development**: No context switching between files
- **Consistency**: Design system through configuration
- **Performance**: Optimized with PurgeCSS in production
- **Responsive**: Mobile-first utilities
- **Dark mode**: Built-in support
**Migration from 1.6.x**: Existing projects will need to:
- Restructure to MVVM with `src/pages/` and ViewModels
- Install TanStack packages (Router, Query, Table, Form)
- Install and configure TailwindCSS
- Migrate React Router to TanStack Router
- Convert inline styles and CSS files to Tailwind utilities
- Extract business logic from components to ViewModels
[1.6.2] - 2026-01-11
Fixed
- **TypeScript standards compliance**: Corrected invalid `readonly interface` syntax across all plugin files
- **typescript-standards skill**: Removed `readonly` keyword from interface declaration (line 40)
- Changed from `readonly interface User {` (invalid TypeScript)
- Changed to `interface User {` (correct - readonly applies to properties, not interface)
- **backend-dev agent**: Fixed all 4 instances of `readonly interface`:
- Line 54: `ServerDependencies` interface
- Line 80: `Config` interface (in main Config layer example)
- Line 213: `DAL` interface
- Line 295: `Config` interface (in logging example)
- **Validation**: Confirmed no other TypeScript standards violations (arrow functions, immutability, native JS)
Updated Files
- `skills/typescript-standards.md`: Fixed interface syntax in immutability example
- `agents/backend-dev.md`: Fixed 4 instances of incorrect interface syntax
- Version bumped to 1.6.2 in plugin.json and marketplace.json
Impact
This fix ensures all code examples in the plugin demonstrate correct TypeScript syntax:
- **Standards compliance**: All examples now follow valid TypeScript syntax
- **Educational accuracy**: Developers using the plugin will learn correct patterns
- **Code generation**: Agents will generate syntactically correct TypeScript code
- **Type checking**: Examples will pass TypeScript compiler validation
**Technical note**: TypeScript does not support `readonly` as a modifier for interface declarations. The `readonly` keyword only applies to interface properties, type properties, and array/object types (e.g., `ReadonlyArray<T>`, `Readonly<T>`).
[1.6.1] - 2026-01-11
Enhanced
- **backend-dev agent**: Enforced dotenv usage and prohibited direct environment variable access
- **Mandatory dotenv**: Config layer must use `dotenv.config()` at the top of src/config/index.ts
- **Config layer ONLY**: `process.env` access is FORBIDDEN outside src/config/
- **Type-safe configuration**: All layers receive typed Config object, never raw environment variables
- **Updated Layer 2 (Config)**: Added comprehensive dotenv example with validation and error handling
- **Updated telemetry/logging**: Logger must receive log level from Config, not process.env
- **Dependency injection**: BaseLogger created from Config, passed down to all layers
- Added 6 explicit environment variable rules
- Added 3 new rules to Rules section
Updated Files
- **backend-dev agent**:
- Layer 2 (Config): Added dotenv.config() requirement and comprehensive example
- Added "Environment Variable Rules" section with 6 rules
- Updated "Structured Logging" section to use Config instead of process.env
- Updated "Logging by Layer" section to show baseLogger dependency injection
- Updated "Build Order" step 2 to emphasize dotenv usage
- Updated "Rules" section with 3 new rules:
- dotenv is mandatory
- NO direct process.env access
- Type-safe configuration only
Impact
This enhancement improves configuration management and type safety:
- **Prevents scattered env access**: All environment variables centralized in Config layer
- **Type safety**: Config interface provides compile-time guarantees
- **Validation**: Required env vars validated at startup with clear error messages
- **Testability**: Config can be mocked/injected for testing
- **Security**: Clearer control over environment variable access
- **Best practices**: Follows 12-factor app configuration principles
[1.6.0] - 2026-01-11
Enhanced
- **/project:implement-plan command**: Added mandatory domain documentation update phase
- **New Step 2: Update Domain Documentation** - Required before any code implementation
- Must update domain docs based on feature spec before writing code:
- **Glossary updates** (`specs/domain/glossary.md`): Add/update domain terms and concepts
- **Definition documentation** (`specs/domain/definitions/`): Create/update definition spec files
- **Architecture documentation** (`specs/architecture/`): Update architectural patterns and integration points
- Includes verification checklist to confirm all documentation areas are addressed
- Explicitly requires noting when no updates are needed (prevents skipping)
- Renumbered subsequent steps (Execute Phases β 3, Track Progress β 4, Final Verification β 5)
Updated Files
- **implement-plan command**:
- Added comprehensive "Step 2: Update Domain Documentation" with three sub-sections
- Each sub-section includes specific tasks and verification requirements
- Added verification checklist with 5 checkboxes
- Added "Important Notes" section explaining why domain docs must come first
- Updated example to show domain documentation update workflow
- Renumbered existing steps (2 β 3, 3 β 4, 4 β 5)
Impact
This enhancement ensures domain knowledge is properly documented:
- **Prevents implementation drift**: Code cannot be written until domain is documented
- **Centralized knowledge**: Glossary, definitions, and architecture serve as single source of truth
- **Improved traceability**: Clear path from spec β domain docs β implementation
- **Better onboarding**: New team members can understand domain through centralized docs
- **Enforces best practices**: Domain-driven design principles built into workflow
- **No shortcuts**: Explicit verification prevents skipping documentation step
[1.5.1] - 2026-01-11
Enhanced
- **/project:new-feature command**: Added git branch check and feature branch suggestion
- **Step 0: Check Git Branch** - New mandatory first step before collecting any information
- Automatically detects if user is on `main` or `master` branch
- Suggests creating a feature branch with naming pattern `feature/<feature-name>`
- Allows user to:
- Accept suggested branch name (creates branch automatically)
- Provide custom branch name
- Decline and proceed on main/master (with warning and confirmation)
- If already on a feature branch, proceeds without interruption
- Follows git workflow best practices while maintaining user control
Updated Files
- **new-feature command**:
- Added Step 0: Check Git Branch (runs before collecting feature information)
- Renumbered existing steps (Collect Info β 1, Create Spec β 2, Create Plan β 3, Review β 4)
- Added "Important Notes" section explaining branch check behavior
- Added three example interactions showing different scenarios:
- Example 1: On main branch (creates feature branch)
- Example 2: Already on feature branch (proceeds normally)
- Example 3: On main branch (user declines, sees warning)
Impact
This enhancement encourages proper git workflow:
- Prevents accidental feature creation directly on main/master
- Suggests consistent branch naming convention (`feature/<name>`)
- Educates users about best practices
- Maintains flexibility for users who need to work on main/master
- Reduces risk of merge conflicts and improves code review process
[1.5.0] - 2026-01-11
Changed
- **Command renamed**: `/project:implement-spec` β `/project:implement-plan`
- Better reflects that the command implements from a plan (which references a spec)
- Command now takes path to PLAN.md instead of SPEC.md
- Example: `/project:implement-plan specs/features/2026/01/11/user-auth/PLAN.md`
Updated Files
- **implement-plan command** (renamed from implement-spec.md):
- Updated command name, description, and usage examples
- Changed to read PLAN.md first, then SPEC.md from same directory
- Updated flow documentation to reflect plan-centric approach
- **Documentation files**: Updated all references to use new command name
- CLAUDE.md
- plugin/README.md
- plugin/QUICKSTART.md
- plugin/templates/project/README.md
- plugin/templates/project/CLAUDE.md
Impact
This change clarifies the implementation workflow:
- Plans are the execution documents, specs are the requirements
- Command name now matches what it operates on (plan, not spec)
- Consistent with the pattern where plan references spec via `./SPEC.md`
- More intuitive for users: "implement the plan" vs "implement the spec"
[1.4.0] - 2026-01-11
Changed
- **Directory structure**: Features now use date-based organization
- Feature specs: `specs/features/YYYY/MM/DD/<feature-name>/SPEC.md` (was: `specs/features/<feature-name>/SPEC.md`)
- Implementation plans: `specs/features/YYYY/MM/DD/<feature-name>/PLAN.md` (was: `specs/plans/YYYY/MM/DD/<feature-name>/PLAN.md`)
- Plans now live alongside their specs in the same directory
- Removed separate `specs/plans/` directory
Updated Files
- **spec-writer agent**: Updated location rules with date-based feature paths
- **planner agent**: Plans now stored alongside specs (not in separate plans/ directory)
- **planning skill**: Updated plan location and template
- **spec-writing skill**: Updated spec locations table with date-based organization
- **new-feature command**: Creates dated feature directories and sets creation date
- **init-project command**: Removed `specs/plans/` from directory structure
- **CLAUDE.md**: Updated examples and Important Files table
Impact
This change provides better organization and traceability:
- Chronological organization of features by creation date
- Specs and plans kept together in one location
- Easier to find features by when they were created
- Cleaner directory structure (no separate plans directory)
- Relative paths in plans (./SPEC.md) instead of absolute paths
Migration Guide
For existing projects using the old structure:
- Move `specs/features/<feature-name>/SPEC.md` to `specs/features/YYYY/MM/DD/<feature-name>/SPEC.md`
- Move `specs/plans/YYYY/MM/DD/<feature-name>/PLAN.md` to `specs/features/YYYY/MM/DD/<feature-name>/PLAN.md`
- Use the `created` date from the spec frontmatter for the YYYY/MM/DD directory
- Delete empty `specs/plans/` directory
[1.3.0] - 2026-01-11
Enhanced
- **/project:init-project command**: Completely redesigned with approval-based workflow
- **Phase 1: Gather Information** - Prompts for project details before any file creation
- Project name and description
- Primary business domain
- Tech stack confirmation
- Component selection (Server, Webapp, Helm, Testing, CI/CD)
- **Phase 2: Show Configuration Summary** - Displays complete plan with directory structure
- **Phase 3: User Approval** - Explicitly asks for confirmation before creating any files
- **Phase 4: Project Creation** - Only executes after user approval
- Customizable component selection (choose which parts to include)
- Template variable substitution for project name, description, and domain
- Conditional directory/file creation based on selected components
- More predictable and transparent initialization process
Impact
This update transforms /project:init-project from an automatic file generator into an interactive, approval-based tool:
- No files created until user explicitly approves
- Users can customize which components to include
- Clear visibility into what will be created before it happens
- Follows same approval pattern as spec-writer and planner agents
- Better user experience with informed decision-making
[1.2.0] - 2026-01-11
Added
- **typescript-standards skill**: New shared skill for TypeScript coding standards
- Consolidates strict TypeScript configuration requirements
- Immutability rules (readonly, ReadonlyArray, spread operators)
- Arrow functions only rule
- Native JavaScript only rule (no lodash, ramda, immer)
- index.ts file rules (only imports/exports)
- Eliminates ~100 lines of duplication between backend-dev and frontend-dev agents
Enhanced
- **backend-dev agent**: Now references `typescript-standards` skill instead of duplicating standards
- Reduced file size by consolidating TypeScript/immutability rules
- Added Skills section pointing to typescript-standards
- **frontend-dev agent**: Now references `typescript-standards` skill instead of duplicating standards
- Added Skills section pointing to typescript-standards
- **tester agent**: Simplified by referencing `testing` skill for patterns
- Removed duplicated spec/issue reference example (kept in testing skill)
- Removed duplicated Testkube setup information (consolidated in testing skill)
- Cleaner, more maintainable agent definition
- **testing skill**: Enhanced with comprehensive Testkube information
- Added detailed Testkube installation instructions
- Added directory structure documentation
- Added test definition examples
- Consolidated running tests commands
- Now serves as single source of truth for all testing patterns
Impact
This release significantly reduces code duplication and improves maintainability:
- Created 1 new shared skill (typescript-standards)
- Eliminated ~150 lines of duplicated content across agent files
- Centralized TypeScript standards in one location
- Centralized Testkube documentation in testing skill
- Improved consistency between backend and frontend development
[1.1.2] - 2026-01-11
Enhanced
- **CLAUDE.md**: Added strict version management workflow
- Enforces required sequence: code changes β version bump β CHANGELOG update β commit
- Prevents version bumps without corresponding CHANGELOG entries
- Includes example workflow for clarity
- Makes version management process explicit and mandatory
This ensures all version changes are properly documented before being committed.
[1.1.1] - 2026-01-11
Enhanced
- **/project:implement-spec command**: Added comprehensive verification requirements
- Mandatory full spec and plan review before starting implementation
- Explicit requirement to read ENTIRE spec and plan documents
- Create complete mental model before proceeding to implementation
- Enhanced testing phase with mandatory test execution and pass requirements
- 6-step final verification process (spec review, testing, functionality, code review, documentation, final report)
- Clear directive to NOT declare implementation complete until all tests pass and all verification steps are finished
- Prevents incomplete implementations and ensures thorough validation
Added
- `.gitignore` file to exclude macOS `.DS_Store` files
This ensures the implement-spec command follows a rigorous, complete workflow that validates all requirements before declaring success.
[1.1.0] - 2026-01-11
Added
- **Version management system**: Automatic version bumping across plugin files
- Updates both `plugin/.claude-plugin/plugin.json` and `.claude-plugin/marketplace.json`
- Added to CLAUDE.md instructions for consistency
Enhanced
- **spec-writer agent**: Added explicit user approval requirements
- Must get user approval before creating/modifying specifications
- Prevents unwanted spec changes
- **planner agent**: Added explicit user approval requirements
- Must get user approval before creating/modifying implementation plans
- Ensures alignment before planning work
[1.0.2] - 2026-01-07
Enhanced
- **backend-dev agent**: Added comprehensive OpenTelemetry guidelines
- Structured logging with Pino and trace context injection
- Required log fields and security rules
- Standard metrics (HTTP, database, business operations)
- OpenTelemetry semantic conventions for metric naming
- Custom spans for business operations
- Span attributes following OTel standards
- Layer-specific telemetry responsibilities
This ensures all backend implementations follow OpenTelemetry best practices with consistent, observable code.
[1.0.1] - 2026-01-07
Enhanced
- **api-designer agent**: Added explicit requirement for `operationId` in camelCase for all endpoints
- **backend-dev agent**: Clarified that controller handler names must match OpenAPI `operationId` with `handle` prefix
- **Template OpenAPI spec**: Added comment showing operationId usage example
This ensures seamless coordination between API design and backend implementation, with clear naming conventions from contract to controller.
[1.0.0] - 2026-01-07
Initial Release
Complete spec-driven development plugin for Claude Code.
Plugin Structure
**Configuration:**
- `plugin.json` - Main plugin manifest
**Documentation:**
- `README.md` - Plugin overview and features
- `QUICKSTART.md` - Getting started guide
- `CHANGELOG.md` - This file
Agents (10 total)
All agents follow the methodology where specs are the source of truth:
- **spec-writer** (opus) - Creates and maintains markdown specifications
- **planner** (opus) - Breaks specs into phased implementation plans
- **api-designer** (sonnet) - Designs OpenAPI contracts in `components/contract/`
- **frontend-dev** (sonnet) - Implements React components consuming contract types
- **backend-dev** (sonnet) - Implements Node.js backend with 5-layer architecture
- **db-advisor** (opus) - Reviews database performance (advisory only)
- **devops** (sonnet) - Manages Kubernetes, Helm, and Testkube
- **ci-dev** (sonnet) - Creates CI/CD pipelines
- **tester** (sonnet) - Writes tests that run via Testkube
- **reviewer** (opus) - Reviews code for spec compliance and quality
Skills (4 total)
Reusable knowledge modules:
- **spec-writing** - Templates and validation for specifications
- **planning** - Templates for implementation plans
- **testing** - Test patterns and Testkube execution
- **spec-index** - Spec registry and snapshot generation
Commands (5 total)
Project lifecycle automation:
- **/project:init** - Initialize new project from templates
- **/project:new-feature** - Start new feature with spec and plan
- **/project:implement-spec** - Orchestrate implementation across agents
- **/project:verify-spec** - Verify implementation against spec
- **/project:generate-snapshot** - Regenerate INDEX.md and SNAPSHOT.md
Templates
Project scaffolding files:
**Project Root:**
- `README.md` - Project documentation template
- `CLAUDE.md` - Claude Code context template
- `package.json` - Workspace configuration
**Specs:**
- `INDEX.md` - Spec registry template
- `SNAPSHOT.md` - Product snapshot template
- `glossary.md` - Domain terminology template
**Components:**
- `contract/openapi.yaml` - Base OpenAPI specification
- `contract/package.json` - Type generation scripts
- `server/package.json` - Backend dependencies
- `server/tsconfig.json` - Strict TypeScript config
- `webapp/package.json` - Frontend dependencies
- `webapp/tsconfig.json` - React TypeScript config
Scripts (3 total)
Python utilities for spec management:
- **validate-spec.py** - Validates spec frontmatter and format
- **generate-index.py** - Generates `specs/INDEX.md` from all specs
- **generate-snapshot.py** - Generates `specs/SNAPSHOT.md` from active specs
All scripts are executable (`chmod +x`).
Key Features
- **Contract-First Development**: OpenAPI drives type generation for both frontend and backend
- **5-Layer Backend Architecture**: Server β Config β Controller β Model β DAL
- **Strict TypeScript**: All `readonly`, no mutations, no `any`
- **Kubernetes-Native**: Helm charts and Testkube for environment parity
- **OpenTelemetry**: Built-in observability with logs, metrics, and traces
- **Git as State Machine**: PR = draft, merged to main = active
- **Issue Tracking**: Every spec must reference a tracking issue
Tech Stack
- **Backend**: Node.js 20, TypeScript 5, Express
- **Frontend**: React 18, TypeScript 5, Vite
- **Testing**: Vitest (unit), Testkube (integration/E2E)
- **Deployment**: Kubernetes, Helm
- **Observability**: OpenTelemetry, Pino
Design Decisions
- 10 specialized agents (not more, not less)
- 5 components: contract, server, webapp, helm, testing
- Required `issue` field in all specs
- Arrow functions only in backend
- Native JavaScript only (no lodash, immer, ramda)
- No implicit global code in frontend
- Testkube for all non-unit tests
File Count
- 36 total files created
- 10 agent definitions
- 4 skill definitions
- 5 command definitions
- 14 template files
- 3 utility scripts
Future Enhancements (Not in v1.0)
The following were explicitly scoped out for future versions:
- MCP (Model Context Protocol) integration
- Custom hooks
- AsyncAPI for event-driven architectures
- Contract testing with Pact
- Additional CI/CD platforms (GitLab, CircleCI)
- Additional deployment targets (AWS ECS, Cloud Run)
---
Infrastructure - 2026-01-11
Added
- **Marketplace**: Initial creation
- Created `marketplace.json`
- Created `CONTRIBUTING.md`