-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Strict test coverage ratio #1199
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
hcnimi
wants to merge
66
commits into
github:main
Choose a base branch
from
hcnimi:strict-test-coverage-ratio
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
+20,597
−1,102
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…s/spec-kit
- Add install_claude_commands() function to copy command templates
- Integrate Claude command installation into init workflow
- Add tracker step for command installation progress
- Update next steps message to inform users of installed commands
- Only install commands when --ai claude is selected
- Support configurable repo owner/name/branch for template downloads
- Fixed package configuration to include templates/ directory in wheel - Updated install_claude_commands function to find templates in multiple locations - Added MANIFEST.in for better template file inclusion - Bumped version to 0.0.4 This resolves the 'templates/commands not found' error when running uvx --from git+https://github.com/hcnimi/spec-kit.git@prps-spec specify init --here --ai claude
Update release script to install Claude commands to .claude/commands/spec-kit
instead of .claude/commands for better organization
- Add transform_branch_structure() to detect and fix raw branch downloads
- Move memory/, scripts/, templates/ to .specify/ directory structure
- Filter scripts by variant (sh/ps) and remove unused variants
- Generate AI-specific commands from templates/commands/*.md files
- Apply transformation automatically after branch extraction
- Ensure consistent folder pattern regardless of download source
Prevent overwriting user documentation in specs/ when running
install command with --here flag. Framework files are still
updated while preserving custom documentation.
…dation
Update regex patterns in bash and PowerShell scripts to allow lowercase
ticket prefixes (e.g., proxy-929) instead of requiring uppercase only.
Also make setup-plan.sh executable.
Add deep analysis prompts to strategic decision points in: - /specify command Phase 1 research - /plan command execution flow steps 2-3 - /review command context engineering section - /debug command root cause analysis Enhances reasoning quality at critical architectural and debugging decisions.
…jects - Add --force flag to init command (only usable with --here) - Force overwrites existing directories/files instead of merging - Enhanced user warnings for force operations - Preserves specs folder unless template doesn't contain it - Enables updating projects with fresh template versions from releases 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Change from 001-... to JIRA-123-feature-name.md pattern - Updated create-new-feature.sh for flat file structure - Updated common.sh get_feature_paths() function - All spec-related files now use JIRA key prefix
Create new constitution.md command template for interactive constitution
management with placeholder handling, version control, and dependency
propagation features.
The main change is converting the JIRA issue key format from uppercase (PROJ-123) to lowercase
(proj-123) throughout all documentation, templates, and scripts. This affects:
- Documentation files (README.md, quickstart.md)
- Script functionality for branch naming and file structure
- Template examples and command outputs
- PowerShell and bash script consistency
The changes also include improvements to the init.sh script with better constitution.md
preservation handling and more flexible copy operations.
Introduces /decompose command to break large features (>500 LOC) into
atomic capabilities (200-500 LOC each), enabling:
- Atomic PRs instead of massive monolithic PRs
- Parallel development across independent capabilities
- Faster code reviews (1-2 days vs 7+ days)
- TDD at manageable scope (RED-GREEN-REFACTOR within 500 LOC)
Changes:
- Add decompose-template.md for capability breakdown structure
- Add capability-spec-template.md for scoped specifications
- Add /decompose command and supporting scripts (bash/PowerShell)
- Modify /plan to support --capability flag for scoped planning
- Add LOC budget tracking (200-500 LOC targets) to plan/tasks templates
- Update create-new-feature.sh with --capability mode
- Document workflows in README.md and spec-driven.md
Completes integration of decompose functionality (from commit 5d8e32b) into constitutional framework. Article VIII establishes: - 200-500 LOC per capability/PR targets - /decompose workflow for >500 LOC features - Justification requirements for exceptions - Benefits: faster reviews, manageable TDD, parallel development Updated constitution_update_checklist.md with Article VIII guidance and sync status reflecting 2025-10-05 decompose changes.
- Add --capability flag to setup-plan.sh/ps1 to create separate branches per capability
- Update /plan command to create branch username/jira-123.feature-cap-001 for each
capability
- Document atomic PR workflow: cap-XXX → main (200-500 LOC per PR)
- Update templates to reflect branch-per-capability model
- Enable parallel development with fast review cycles (1-2 days vs 7+ days)
Problem: Previous implementation created ONE branch for ALL capabilities,
resulting in massive PRs (1500+ LOC) defeating atomic PR goals.
Solution: Each capability now gets dedicated branch from parent, enabling:
- True atomic PRs (200-500 LOC each)
- Independent merges to main
- Team parallelization across capabilities
- Add --capability flag to setup-plan.sh/ps1 to create separate branches
per capability
- Update /plan command to create branch username/jira-123.feature-cap-001
for each capability
- Fix critical bug: /plan command now passes {ARGS} to script (was missing,
causing branch creation to fail)
- Document atomic PR workflow: cap-XXX → main (200-500 LOC per PR)
- Update templates to reflect branch-per-capability model
- Enable parallel development with fast review cycles (1-2 days vs 7+ days)
Problem: Previous implementation created ONE branch for ALL capabilities,
resulting in massive PRs (1500+ LOC) defeating atomic PR goals.
Solution: Each capability now gets dedicated branch from parent, enabling:
- True atomic PRs (200-500 LOC each)
- Independent merges to main
- Team parallelization across capabilities
Bugfix: The /plan command's YAML frontmatter wasn't passing user arguments
to setup-plan.sh, preventing capability branch creation entirely.
- Add capability branch detection to bash/PowerShell scripts
- Implement check-task-prerequisites scripts for /tasks command
- Update /implement to use capability-aware paths
- Document atomic PR workflow in README-WORKFLOW-GUIDE.md
- Add decompose workflow to docs/quickstart.md
Enables /tasks and /implement commands to automatically detect
capability branches (username/jira-123.feature-cap-001) and work
with capability subdirectories for atomic PRs (200-500 LOC each)?
Update regex patterns in common.sh to match capability IDs with optional
letter suffix (e.g., cap-002a). Fixes issue where /plan created sibling
directories instead of subdirectories for capabilities with letter suffixes.
Fixes path duplication bug causing .specify/.specify/ errors when
running /implement command. Template paths should be relative (scripts/,
memory/) to allow init.sh substitution to add .specify/ prefix for
initialized projects while working directly in spec-kit repo.
…own generation commands - Add UTF-8 encoding directive to /specify command (spec.md generation) - Add UTF-8 encoding to /plan template (research.md, data-model.md, quickstart.md, contracts) - Add UTF-8 encoding to /tasks command (tasks.md generation) - Add UTF-8 encoding to /decompose command (capabilities.md and capability specs) - Add UTF-8 encoding to /product-vision command (product-vision.md generation) - Add UTF-8 encoding to /constitution command (constitution.md updates) Fixes inconsistent encoding issues across platforms by explicitly instructing Claude Code to use UTF-8 when writing all generated markdown files.
- Move all AI assistant commands to spec-kit/ subfolders to prevent overwriting user's custom
commands
- Update Gemini, Copilot, and Cursor to match Claude's subfolder isolation pattern
- Increase default search depth from 2 to 3 for multi-repo mode
- Add documentation comment explaining subfolder protection strategy
…quirements
- Change ideal LOC from 400-1000 range to ~1000 (800-1200 acceptable)
- Update implementation target from 200-500 to 400-600 LOC
- Update test target from 200-500 to 400-600 LOC
- Add minimum test-to-implementation ratio requirement (≥0.8:1, ideal ≥1:1)
- Replace separate impl/test limits with unified total + ratio validation
- Update all templates and command docs for consistency (9 files)
Promotes better test coverage with 1:1 ratio while maintaining
manageable capability sizes for atomic PRs and fast reviews.
Automatically detect GitHub host per repository and enforce Jira key
requirements accordingly. Enables mixed workspaces with conditional
Jira policies based on GitHub host (github.marqeta.com vs github.com).
Changes:
- Auto-detect GitHub host during workspace initialization
- Add github_host and require_jira fields to workspace.yml
- Strip Jira keys for convention matching (proj-123.backend-api → backend-)
- Prompt for Jira key when targeting repos that require it
- Add comprehensive documentation and examples
- Support enterprise GitHub hosts (github.{company}.com)
Implementation:
- workspace-discovery.sh: GitHub host detection and Jira requirement logic
- create-new-feature.sh: Per-repo Jira key validation in workspace mode
- multi-repo-workspaces.md: New section on GitHub host conventions
- example-workspace.yml: Mixed GitHub host example configuration
- specify.md: Command template updates with Jira key examples
Add adaptive depth system to spec-kit with three modes: - Quick mode (<200 LOC): minimal spec for bug fixes - Lightweight mode (200-800 LOC): compact spec for simple features - Full mode (800+ LOC): comprehensive spec (existing default) Changes: - Add mode detection to /specify command with AI-guided questions - Create spec-template-quick.md for minimal specifications - Create spec-template-lightweight.md for compact specifications - Create plan-template-lightweight.md for essential planning - Add template selection logic to create-new-feature.sh based on --mode flag - Add Change History section to spec-template.md for delta tracking - Create /archive command to move completed features to archive/ - Update README-WORKFLOW-GUIDE.md with adaptive workflow documentation Preserves all existing functionality: - All 12 slash commands work unchanged without flags - Workspace mode fully compatible - Capability mode fully compatible - Jira integration unchanged - Atomic PR workflow unchanged - Backward compatible (opt-in via flags) Benefits: - 80% of OpenSpec benefits without integration complexity - Single mental model with progressive disclosure - Reduces token consumption for simple changes - Beginner-friendly guided mode selection - Fast path for bug fixes and small features
Surgically removes workspace functionality while preserving: - feat(adaptive): OpenSpec workflows - docs(templates): LOC limit updates - fix: relative path issue (bash scripts in src/specify_cli/) Deleted files: - docs/MULTI_REPO_IMPLEMENTATION.md - docs/multi-repo-workspaces.md - docs/multi-repo-testing.md - docs/multi-repo-modes-comparison.md - docs/example-workspace.yml - scripts/bash/workspace-discovery.sh - scripts/bash/init-workspace.sh - src/specify_cli/scripts/bash/workspace-discovery.sh - src/specify_cli/scripts/bash/init-workspace.sh Reverted changes in: - Python CLI: removed --workspace and --auto-init flags - Bash scripts: removed workspace mode detection and handling - Templates: removed workspace metadata sections
This reverts commit 47543cd.
- Move installation.md and quickstart.md to docs/getting-started/ - Create getting-started/README.md with navigation - Add comprehensive first-spec.md walkthrough tutorial - Establish first section of new Divio documentation structure
- Add guides/README.md with decision tree and patterns - Create simple-features.md for quick mode (<200 LOC) - Create complex-features.md for substantial features (800-1000 LOC) - Create atomic-prs.md for large features as multiple PRs (>1000 LOC) - Move multi-repo-workspaces.md to guides/ - Establish task-oriented Divio documentation section
- Add concepts/README.md with navigation to all concepts - Create spec-driven-philosophy.md explaining core ideas - Create three-tier-hierarchy.md explaining product vision, spec, and plan layers - Create development-workflow.md explaining the three-phase process - Create atomic-decomposition.md explaining capability breakdown - Create architecture-evolution.md explaining version and change types - Create phase-specification.md explaining requirements gathering - Create phase-planning.md explaining technical planning - Create phase-implementation.md explaining implementation validation - Create multi-repo-architecture.md explaining multi-repo patterns - Create brownfield-development.md explaining extending existing systems - Create team-patterns.md explaining team-scale workflows - Establish understanding-oriented Divio documentation section
- Add reference/README.md with navigation to all references - Create cli-commands.md with specify CLI documentation - Create slash-commands.md documenting /specify, /plan, /tasks, etc. - Create templates.md documenting all available templates - Create configuration.md explaining project structure - Create workspace-config.md for multi-repo configuration - Create api-contracts.md for API documentation - Move example-workspace.yml to reference/examples/ - Establish information-oriented Divio documentation section
- Move validation docs to docs/validation/ for consistency - Keeps quality gates and review checklists accessible - Part of documentation reorganization into Divio structure
- Add contributing/README.md with contributor guidelines - Move local-development.md to contributing/development-setup.md - Move multi-repo implementation docs to contributing/architecture/ - Create architecture/README.md explaining design decisions - Separate contributor docs from user docs - Part of Divio documentation reorganization
- Rename ai_docs/ to .ai/ (convention for hidden AI-specific content) - Add .ai/README.md with AI agent guidelines - Document prompt engineering tips - Explain context loading for AI agents - Separate AI-specific docs from user/contributor docs
- Reorganize table of contents for Divio documentation system - Add Getting Started, Guides, Concepts, Reference, Validation sections - Update navigation hierarchy for new file locations - Enable proper DocFX site generation
- Update docs homepage with Divio-based navigation - Add quick links to common tasks - Reference all new documentation sections - Improve discoverability of documentation
…ture - Update table of contents to reference new Documentation section - Remove obsolete "Detailed process" section (now in getting-started/first-spec.md) - Update references from spec-driven.md to new documentation paths - Streamline README to focus on quick start and point to comprehensive docs
- Update SUPPORT.md to reference new docs directory - Update CONTRIBUTING.md to reference docs/ instead of spec-driven.md - Update constitution.md template to reference new doc paths - Remove README-WORKFLOW-GUIDE.md distribution from init.sh
Remove spec-driven.md and README-WORKFLOW-GUIDE.md as their content has been reorganized into the new documentation structure: - spec-driven.md → docs/concepts/ and docs/guides/ - README-WORKFLOW-GUIDE.md → docs/getting-started/first-spec.md All references have been updated in previous commits.
Remove obsolete files that have been reorganized into new structure: - installation.md, quickstart.md → docs/getting-started/ - multi-repo-*.md → docs/guides/ and contributing/architecture/ - local-development.md → contributing/development-setup.md - example-workspace.yml → docs/reference/examples/
Major milestone release featuring: - OpenSpec-inspired adaptive workflows (quick/lightweight/full modes) - Multi-repo workspace support with convention-based targeting - Capability-based atomic PR workflow - Breaking change: .spec-kit → .specify directory rename - Complete documentation restructure - Multiple bug fixes and improvements See RELEASE_NOTES_v0.4.0.md for full details. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
BREAKING: Attribution and ownership updates - Update LICENSE to reflect fork copyright (hcnimi) based on GitHub's original - Update README maintainers: hcnimi maintains this fork, credit original creators - Add comprehensive ATTRIBUTION.md documenting all project influences - Update SUPPORT.md to clarify this is an independent fork - Update CODE_OF_CONDUCT.md to use GitHub issues instead of [email protected] - Update RELEASE_NOTES_v0.4.0.md with attribution section Attribution sources: - Original: github/spec-kit by Den Delimarsky & John Lam - Inspiration: Wirasm/PRPs-agentic-eng (agentic engineering patterns) - Inspiration: Fission-AI/OpenSpec (adaptive workflow modes) Maintains MIT License while clarifying fork ownership and proper credit. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
…control
Add comprehensive documentation addressing the gap that workspace directories
must be git repositories for multi-repo mode. This is a critical requirement
that was previously undocumented, leading to potential issues with untracked
specifications.
Changes:
- Add 'ersion Controlling Your Workspace' section to multi-repo guide with
setup instructions, team onboarding, and alternative patterns
- Document industry precedents (Kubernetes KEPs, Rust RFCs, AOSP)
- Add version control requirements to workspace config reference
- Include best practices, CI/CD examples, and troubleshooting
- Add conceptual explanation of workspace-as-repository pattern
- Update installation guide with workspace version control note
- Add pattern comparison (workspace repo vs separate specs repo vs dominant repo)
Impact: prevents critical misunderstanding that would result in untracked specs
Implement comprehensive git worktree support for multi-repo workspaces:
- Auto-detect worktrees and execute git operations in correct location
- Add idempotency to /specify command (prevents overwriting existing specs)
- Auto-checkout existing branches instead of failing
- Support running commands from anywhere (workspace root, repos, or worktrees)
Key changes:
- workspace-discovery.sh: Add worktree detection and execution path resolution
- common.sh: Update get_repo_root() to return parent repo for worktrees
- create-new-feature.sh: Add spec/branch existence checks and smart execution
- Documentation: Add comprehensive worktree guide and existing spec workflows
…ples
Update /implement workflow to reference unified python testing standard
and provide pytest-style examples for contract, unit, and integration tests.
Changes:
- Add 'Testing Standards Reference' section with 5-layer explanation
- Update test examples to pure pytest-style (functions + fixtures + assert)
- Add test directory structure from unified standard
- Update constitution template to reference python/testing.md
Integrates with vibe-coding unified standard for zero-conflict TDD workflow.
Add minimal references to new testing-quality-check skill in spec-kit templates:
- plan-template.md: Add test quality guidance to Testing section
- tasks-template.md: Reference skill in Phase 3.2 test creation
- implement.md: Add skill reference in Testing Standards Reference
- Update .gitignore for new framework artifacts
Changes align spec-kit workflow with context-sensitive test quality standards
without breaking existing specs or TDD workflow.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.