| name | speckit-brownfield-validate |
| description | Verify bootstrap output matches actual project structure and conventions |
| compatibility | Requires spec-kit project structure with .specify/ directory |
| metadata | {"author":"github-spec-kit","source":"brownfield:commands/speckit.brownfield.validate.md"} |
Validate Bootstrap
Verify that the spec-kit configuration generated by /speckit.brownfield.bootstrap accurately reflects the actual project structure, conventions, and architecture. Reports mismatches and suggests corrections.
User Input
$ARGUMENTS
You MUST consider the user input before proceeding (if not empty). The user may specify a focus area (e.g., "only constitution", "only templates") or request verbose output.
Prerequisites
- Verify a spec-kit project exists by checking for
.specify/ directory
- Verify git is available and the project is a git repository
- Verify at least one bootstrap artifact exists (constitution, customized templates, or AGENTS.md)
Outline
-
Validate constitution: Check .specify/memory/constitution.md against the actual codebase:
| Check | How |
|---|
| Language references | Verify mentioned languages actually exist in the codebase |
| Directory references | Verify all referenced paths (client/, server/, etc.) exist |
| Framework references | Verify mentioned frameworks are in dependency files |
| Naming conventions | Sample 20 files and check if naming rules match reality |
| Test location | Verify test directories mentioned in constitution exist |
| Branch pattern | Check if branch naming rules match actual branches in git branch -a |
-
Validate templates: Check customized spec/plan/tasks templates:
| Check | How |
|---|
| Module references | Verify template sections reference actual modules/directories |
| Test commands | Verify test commands in tasks template actually work |
| Build commands | Verify build commands reference real scripts from package files |
| Section relevance | Flag template sections that reference non-existent project aspects |
-
Validate AGENTS.md (if exists): Check agent configuration:
| Check | How |
|---|
| Directory ownership | Verify each agent's directories exist |
| No overlaps | Check that no directory is owned by multiple agents |
| No orphans | Check that all source directories are covered by at least one agent |
-
Detect drift: Check if the project has changed since bootstrap:
- New directories or modules added since constitution was generated
- Dependencies added or removed since bootstrap
- New branch patterns that don't match constitution rules
-
Output validation report:
# Validation Report
## Constitution
| Rule | Status | Detail |
|------|--------|--------|
| Primary language: TypeScript | ✅ Pass | 68% of source files |
| Frontend in `client/` | ✅ Pass | Directory exists, contains React code |
| Backend in `server/` | ✅ Pass | Directory exists, contains FastAPI code |
| Test location: `__tests__/` | ⚠️ Drift | Also found tests in `tests/` (not mentioned) |
| Branch pattern: `feat/*` | ✅ Pass | 8/10 recent branches match |
## Templates
| Template | Status | Detail |
|----------|--------|--------|
| Spec template | ✅ Pass | All custom sections map to real project aspects |
| Plan template | ⚠️ Drift | References `shared/` module — directory renamed to `common/` |
| Tasks template | ✅ Pass | Test commands verified |
## Summary
- **Checks passed**: 9/11
- **Drift detected**: 2 items
- **Action needed**: Update plan template (`shared/` → `common/`), add `tests/` to constitution
Rules
- Read-only — this command never modifies any files
- Evidence-based — every pass/fail must cite specific files or directories as evidence
- Actionable output — for every failure or drift, suggest the specific fix
- Non-blocking — drift warnings don't mean the configuration is broken, just that it could be improved
- Respect .gitignore — never scan ignored directories when validating