mirror of
https://github.com/github/spec-kit.git
synced 2026-01-30 04:32:02 +00:00
Merge branch 'localden/vscode' of https://github.com/github/spec-kit into localden/vscode
This commit is contained in:
18
.github/workflows/lint.yml
vendored
Normal file
18
.github/workflows/lint.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
name: Lint
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: ["main"]
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
markdownlint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Run markdownlint-cli2
|
||||||
|
uses: DavidAnson/markdownlint-cli2-action@v19
|
||||||
|
with:
|
||||||
|
globs: '**/*.md'
|
||||||
24
.markdownlint-cli2.jsonc
Normal file
24
.markdownlint-cli2.jsonc
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
// https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md
|
||||||
|
"config": {
|
||||||
|
"default": true,
|
||||||
|
"MD003": {
|
||||||
|
"style": "atx"
|
||||||
|
},
|
||||||
|
"MD007": {
|
||||||
|
"indent": 2
|
||||||
|
},
|
||||||
|
"MD013": false,
|
||||||
|
"MD024": {
|
||||||
|
"siblings_only": true
|
||||||
|
},
|
||||||
|
"MD033": false,
|
||||||
|
"MD041": false,
|
||||||
|
"MD049": {
|
||||||
|
"style": "asterisk"
|
||||||
|
},
|
||||||
|
"MD050": {
|
||||||
|
"style": "asterisk"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -63,7 +63,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
- New `/clarify` command template to surface up to 5 targeted clarification questions for an existing spec and persist answers into a Clarifications section in the spec.
|
- New `/clarify` command template to surface up to 5 targeted clarification questions for an existing spec and persist answers into a Clarifications section in the spec.
|
||||||
- New `/analyze` command template providing a non-destructive cross-artifact discrepancy and alignment report (spec, clarifications, plan, tasks, constitution) inserted after `/tasks` and before `/implement`.
|
- New `/analyze` command template providing a non-destructive cross-artifact discrepancy and alignment report (spec, clarifications, plan, tasks, constitution) inserted after `/tasks` and before `/implement`.
|
||||||
- Note: Constitution rules are explicitly treated as non-negotiable; any conflict is a CRITICAL finding requiring artifact remediation, not weakening of principles.
|
- Note: Constitution rules are explicitly treated as non-negotiable; any conflict is a CRITICAL finding requiring artifact remediation, not weakening of principles.
|
||||||
|
|
||||||
## [0.0.16] - 2025-09-22
|
## [0.0.16] - 2025-09-22
|
||||||
|
|
||||||
|
|||||||
@@ -14,21 +14,21 @@ orientation.
|
|||||||
Examples of behavior that contributes to creating a positive environment
|
Examples of behavior that contributes to creating a positive environment
|
||||||
include:
|
include:
|
||||||
|
|
||||||
* Using welcoming and inclusive language
|
- Using welcoming and inclusive language
|
||||||
* Being respectful of differing viewpoints and experiences
|
- Being respectful of differing viewpoints and experiences
|
||||||
* Gracefully accepting constructive criticism
|
- Gracefully accepting constructive criticism
|
||||||
* Focusing on what is best for the community
|
- Focusing on what is best for the community
|
||||||
* Showing empathy towards other community members
|
- Showing empathy towards other community members
|
||||||
|
|
||||||
Examples of unacceptable behavior by participants include:
|
Examples of unacceptable behavior by participants include:
|
||||||
|
|
||||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
- The use of sexualized language or imagery and unwelcome sexual attention or
|
||||||
advances
|
advances
|
||||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
- Trolling, insulting/derogatory comments, and personal or political attacks
|
||||||
* Public or private harassment
|
- Public or private harassment
|
||||||
* Publishing others' private information, such as a physical or electronic
|
- Publishing others' private information, such as a physical or electronic
|
||||||
address, without explicit permission
|
address, without explicit permission
|
||||||
* Other conduct which could reasonably be considered inappropriate in a
|
- Other conduct which could reasonably be considered inappropriate in a
|
||||||
professional setting
|
professional setting
|
||||||
|
|
||||||
## Our Responsibilities
|
## Our Responsibilities
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
## Contributing to Spec Kit
|
# Contributing to Spec Kit
|
||||||
|
|
||||||
Hi there! We're thrilled that you'd like to contribute to Spec Kit. Contributions to this project are [released](https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license) to the public under the [project's open source license](LICENSE).
|
Hi there! We're thrilled that you'd like to contribute to Spec Kit. Contributions to this project are [released](https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license) to the public under the [project's open source license](LICENSE).
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<img src="./media/logo_small.webp"/>
|
<img src="./media/logo_small.webp" alt="Spec Kit Logo"/>
|
||||||
<h1>🌱 Spec Kit</h1>
|
<h1>🌱 Spec Kit</h1>
|
||||||
<h3><em>Build high-quality software faster.</em></h3>
|
<h3><em>Build high-quality software faster.</em></h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -253,7 +253,7 @@ Additional commands for enhanced quality and validation:
|
|||||||
|
|
||||||
Spec-Driven Development is a structured process that emphasizes:
|
Spec-Driven Development is a structured process that emphasizes:
|
||||||
|
|
||||||
- **Intent-driven development** where specifications define the "_what_" before the "_how_"
|
- **Intent-driven development** where specifications define the "*what*" before the "*how*"
|
||||||
- **Rich specification creation** using guardrails and organizational principles
|
- **Rich specification creation** using guardrails and organizational principles
|
||||||
- **Multi-step refinement** rather than one-shot code generation from prompts
|
- **Multi-step refinement** rather than one-shot code generation from prompts
|
||||||
- **Heavy reliance** on advanced AI model capabilities for specification interpretation
|
- **Heavy reliance** on advanced AI model capabilities for specification interpretation
|
||||||
@@ -383,7 +383,7 @@ This step creates or updates the `.specify/memory/constitution.md` file with you
|
|||||||
With your project principles established, you can now create the functional specifications. Use the `/speckit.specify` command and then provide the concrete requirements for the project you want to develop.
|
With your project principles established, you can now create the functional specifications. Use the `/speckit.specify` command and then provide the concrete requirements for the project you want to develop.
|
||||||
|
|
||||||
>[!IMPORTANT]
|
>[!IMPORTANT]
|
||||||
>Be as explicit as possible about _what_ you are trying to build and _why_. **Do not focus on the tech stack at this point**.
|
>Be as explicit as possible about *what* you are trying to build and *why*. **Do not focus on the tech stack at this point**.
|
||||||
|
|
||||||
An example prompt:
|
An example prompt:
|
||||||
|
|
||||||
|
|||||||
18
SECURITY.md
18
SECURITY.md
@@ -1,6 +1,6 @@
|
|||||||
Thanks for helping make GitHub safe for everyone.
|
# Security Policy
|
||||||
|
|
||||||
# Security
|
Thanks for helping make GitHub safe for everyone.
|
||||||
|
|
||||||
GitHub takes the security of our software products and services seriously, including all of the open source code repositories managed through our GitHub organizations, such as [GitHub](https://github.com/GitHub).
|
GitHub takes the security of our software products and services seriously, including all of the open source code repositories managed through our GitHub organizations, such as [GitHub](https://github.com/GitHub).
|
||||||
|
|
||||||
@@ -16,13 +16,13 @@ Instead, please send an email to opensource-security[@]github.com.
|
|||||||
|
|
||||||
Please include as much of the information listed below as you can to help us better understand and resolve the issue:
|
Please include as much of the information listed below as you can to help us better understand and resolve the issue:
|
||||||
|
|
||||||
* The type of issue (e.g., buffer overflow, SQL injection, or cross-site scripting)
|
- The type of issue (e.g., buffer overflow, SQL injection, or cross-site scripting)
|
||||||
* Full paths of source file(s) related to the manifestation of the issue
|
- Full paths of source file(s) related to the manifestation of the issue
|
||||||
* The location of the affected source code (tag/branch/commit or direct URL)
|
- The location of the affected source code (tag/branch/commit or direct URL)
|
||||||
* Any special configuration required to reproduce the issue
|
- Any special configuration required to reproduce the issue
|
||||||
* Step-by-step instructions to reproduce the issue
|
- Step-by-step instructions to reproduce the issue
|
||||||
* Proof-of-concept or exploit code (if possible)
|
- Proof-of-concept or exploit code (if possible)
|
||||||
* Impact of the issue, including how an attacker might exploit the issue
|
- Impact of the issue, including how an attacker might exploit the issue
|
||||||
|
|
||||||
This information will help us triage your report more quickly.
|
This information will help us triage your report more quickly.
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ Auto-generated from all feature plans. Last updated: [DATE]
|
|||||||
|
|
||||||
## Project Structure
|
## Project Structure
|
||||||
|
|
||||||
```
|
```text
|
||||||
[ACTUAL STRUCTURE FROM PLANS]
|
[ACTUAL STRUCTURE FROM PLANS]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -93,11 +93,11 @@ Execution steps:
|
|||||||
- Each question must be answerable with EITHER:
|
- Each question must be answerable with EITHER:
|
||||||
- A short multiple‑choice selection (2–5 distinct, mutually exclusive options), OR
|
- A short multiple‑choice selection (2–5 distinct, mutually exclusive options), OR
|
||||||
- A one-word / short‑phrase answer (explicitly constrain: "Answer in <=5 words").
|
- A one-word / short‑phrase answer (explicitly constrain: "Answer in <=5 words").
|
||||||
- Only include questions whose answers materially impact architecture, data modeling, task decomposition, test design, UX behavior, operational readiness, or compliance validation.
|
- Only include questions whose answers materially impact architecture, data modeling, task decomposition, test design, UX behavior, operational readiness, or compliance validation.
|
||||||
- Ensure category coverage balance: attempt to cover the highest impact unresolved categories first; avoid asking two low-impact questions when a single high-impact area (e.g., security posture) is unresolved.
|
- Ensure category coverage balance: attempt to cover the highest impact unresolved categories first; avoid asking two low-impact questions when a single high-impact area (e.g., security posture) is unresolved.
|
||||||
- Exclude questions already answered, trivial stylistic preferences, or plan-level execution details (unless blocking correctness).
|
- Exclude questions already answered, trivial stylistic preferences, or plan-level execution details (unless blocking correctness).
|
||||||
- Favor clarifications that reduce downstream rework risk or prevent misaligned acceptance tests.
|
- Favor clarifications that reduce downstream rework risk or prevent misaligned acceptance tests.
|
||||||
- If more than 5 categories remain unresolved, select the top 5 by (Impact * Uncertainty) heuristic.
|
- If more than 5 categories remain unresolved, select the top 5 by (Impact * Uncertainty) heuristic.
|
||||||
|
|
||||||
4. Sequential questioning loop (interactive):
|
4. Sequential questioning loop (interactive):
|
||||||
- Present EXACTLY ONE question at a time.
|
- Present EXACTLY ONE question at a time.
|
||||||
@@ -115,8 +115,8 @@ Execution steps:
|
|||||||
|--------|-------------|
|
|--------|-------------|
|
||||||
| A | <Option A description> |
|
| A | <Option A description> |
|
||||||
| B | <Option B description> |
|
| B | <Option B description> |
|
||||||
| C | <Option C description> | (add D/E as needed up to 5)
|
| C | <Option C description> (add D/E as needed up to 5) |
|
||||||
| Short | Provide a different short answer (<=5 words) | (Include only if free-form alternative is appropriate)
|
| Short | Provide a different short answer (<=5 words) (Include only if free-form alternative is appropriate) |
|
||||||
|
|
||||||
- After the table, add: `You can reply with the option letter (e.g., "A"), accept the recommendation by saying "yes" or "recommended", or provide your own short answer.`
|
- After the table, add: `You can reply with the option letter (e.g., "A"), accept the recommendation by saying "yes" or "recommended", or provide your own short answer.`
|
||||||
- For short‑answer style (no meaningful discrete options):
|
- For short‑answer style (no meaningful discrete options):
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ You **MUST** consider the user input before proceeding (if not empty).
|
|||||||
- Incomplete items: Lines matching `- [ ]`
|
- Incomplete items: Lines matching `- [ ]`
|
||||||
- Create a status table:
|
- Create a status table:
|
||||||
|
|
||||||
```
|
```text
|
||||||
| Checklist | Total | Completed | Incomplete | Status |
|
| Checklist | Total | Completed | Incomplete | Status |
|
||||||
|-----------|-------|-----------|------------|--------|
|
|-----------|-------|-----------|------------|--------|
|
||||||
| ux.md | 12 | 12 | 0 | ✓ PASS |
|
| ux.md | 12 | 12 | 0 | ✓ PASS |
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ You **MUST** consider the user input before proceeding (if not empty).
|
|||||||
|
|
||||||
2. **Generate and dispatch research agents**:
|
2. **Generate and dispatch research agents**:
|
||||||
|
|
||||||
```
|
```text
|
||||||
For each unknown in Technical Context:
|
For each unknown in Technical Context:
|
||||||
Task: "Research {unknown} for {feature context}"
|
Task: "Research {unknown} for {feature context}"
|
||||||
For each technology choice:
|
For each technology choice:
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
### Documentation (this feature)
|
### Documentation (this feature)
|
||||||
|
|
||||||
```
|
```text
|
||||||
specs/[###-feature]/
|
specs/[###-feature]/
|
||||||
├── plan.md # This file (/speckit.plan command output)
|
├── plan.md # This file (/speckit.plan command output)
|
||||||
├── research.md # Phase 0 output (/speckit.plan command)
|
├── research.md # Phase 0 output (/speckit.plan command)
|
||||||
@@ -55,7 +55,7 @@ specs/[###-feature]/
|
|||||||
not include Option labels.
|
not include Option labels.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
```
|
```text
|
||||||
# [REMOVE IF UNUSED] Option 1: Single project (DEFAULT)
|
# [REMOVE IF UNUSED] Option 1: Single project (DEFAULT)
|
||||||
src/
|
src/
|
||||||
├── models/
|
├── models/
|
||||||
@@ -96,7 +96,7 @@ directories captured above]
|
|||||||
|
|
||||||
## Complexity Tracking
|
## Complexity Tracking
|
||||||
|
|
||||||
*Fill ONLY if Constitution Check has violations that must be justified*
|
> **Fill ONLY if Constitution Check has violations that must be justified**
|
||||||
|
|
||||||
| Violation | Why Needed | Simpler Alternative Rejected Because |
|
| Violation | Why Needed | Simpler Alternative Rejected Because |
|
||||||
|-----------|------------|-------------------------------------|
|
|-----------|------------|-------------------------------------|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
description: "Task list template for feature implementation"
|
description: "Task list template for feature implementation"
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -80,7 +81,7 @@ Examples of foundational tasks (adjust based on your project):
|
|||||||
|
|
||||||
### Tests for User Story 1 (OPTIONAL - only if tests requested) ⚠️
|
### Tests for User Story 1 (OPTIONAL - only if tests requested) ⚠️
|
||||||
|
|
||||||
**NOTE: Write these tests FIRST, ensure they FAIL before implementation**
|
> **NOTE: Write these tests FIRST, ensure they FAIL before implementation**
|
||||||
|
|
||||||
- [ ] T010 [P] [US1] Contract test for [endpoint] in tests/contract/test_[name].py
|
- [ ] T010 [P] [US1] Contract test for [endpoint] in tests/contract/test_[name].py
|
||||||
- [ ] T011 [P] [US1] Integration test for [user journey] in tests/integration/test_[name].py
|
- [ ] T011 [P] [US1] Integration test for [user journey] in tests/integration/test_[name].py
|
||||||
|
|||||||
Reference in New Issue
Block a user