Skip to content

Commit e80ade6

Browse files
committed
Merge upstream/main: Resolve conflicts preserving mode-aware features
- Accept upstream's advanced create-new-feature.sh with smart branch naming - Preserve HEAD's MCP Configuration and Framework Options in checklist.md - Keep HEAD's TRIAGE REQUIREMENT and mode-specific rules in plan.md - Maintain mode-aware validation in specify.md and clarify.md - Retain advanced constitution setup with validation scripts - Keep [SYNC]/[ASYNC] classification in tasks.md - Preserve comprehensive technology patterns in implement.md
2 parents 6bb4c88 + e6d6f3c commit e80ade6

36 files changed

+644
-359
lines changed

.github/workflows/lint.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: Lint
2+
3+
on:
4+
push:
5+
branches: ["main"]
6+
pull_request:
7+
8+
jobs:
9+
markdownlint:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Checkout
13+
uses: actions/checkout@v4
14+
15+
- name: Run markdownlint-cli2
16+
uses: DavidAnson/markdownlint-cli2-action@v19
17+
with:
18+
globs: '**/*.md'

.github/workflows/scripts/create-github-release.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ TAG_PREFIX="agentic-sdlc-v"
1919
VERSION_NO_V=${VERSION#v}
2020

2121
ASSETS=()
22-
AGENTS=(copilot claude gemini cursor-agent opencode qwen windsurf codex kilocode auggie roo codebuddy q)
22+
AGENTS=(copilot claude gemini cursor-agent opencode qwen windsurf codex kilocode auggie roo codebuddy amp q)
2323
SCRIPTS=(sh ps)
2424

2525
for agent in "${AGENTS[@]}"; do

.github/workflows/scripts/create-release-packages.sh

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ set -euo pipefail
66
# Usage: .github/workflows/scripts/create-release-packages.sh <version>
77
# Version argument should include leading 'v'.
88
# Optionally set AGENTS and/or SCRIPTS env vars to limit what gets built.
9-
# AGENTS : space or comma separated subset of: claude gemini copilot cursor-agent qwen opencode windsurf codex (default: all)
9+
# AGENTS : space or comma separated subset of: claude gemini copilot cursor-agent qwen opencode windsurf codex amp (default: all)
1010
# SCRIPTS : space or comma separated subset of: sh ps (default: both)
1111
# Examples:
1212
# AGENTS=claude SCRIPTS=sh $0 v0.2.0
@@ -182,7 +182,9 @@ build_variant() {
182182
codebuddy)
183183
mkdir -p "$base_dir/.codebuddy/commands"
184184
generate_commands codebuddy md "\$ARGUMENTS" "$base_dir/.codebuddy/commands" "$script" ;;
185-
185+
amp)
186+
mkdir -p "$base_dir/.agents/commands"
187+
generate_commands amp md "\$ARGUMENTS" "$base_dir/.agents/commands" "$script" ;;
186188
q)
187189
mkdir -p "$base_dir/.amazonq/prompts"
188190
generate_commands q md "\$ARGUMENTS" "$base_dir/.amazonq/prompts" "$script" ;;
@@ -192,7 +194,7 @@ build_variant() {
192194
}
193195

194196
# Determine agent list
195-
ALL_AGENTS=(claude gemini copilot cursor-agent qwen opencode windsurf codex kilocode auggie roo codebuddy q)
197+
ALL_AGENTS=(claude gemini copilot cursor-agent qwen opencode windsurf codex kilocode auggie roo codebuddy amp q)
196198
ALL_SCRIPTS=(sh ps)
197199

198200
norm_list() {

.github/workflows/scripts/generate-release-notes.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ fi
3131
cat > release_notes.md << EOF
3232
This is the latest set of releases that you can use with your agent of choice. We recommend using the Specify CLI to scaffold your projects, however you can download these independently and manage them yourself.
3333
34+
## Changelog
35+
36+
$COMMITS
37+
3438
EOF
3539

3640
echo "Generated release notes:"

.markdownlint-cli2.jsonc

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
// https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md
3+
"config": {
4+
"default": true,
5+
"MD003": {
6+
"style": "atx"
7+
},
8+
"MD007": {
9+
"indent": 2
10+
},
11+
"MD013": false,
12+
"MD024": {
13+
"siblings_only": true
14+
},
15+
"MD033": false,
16+
"MD041": false,
17+
"MD049": {
18+
"style": "asterisk"
19+
},
20+
"MD050": {
21+
"style": "asterisk"
22+
}
23+
}
24+
}

AGENTS.md

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ Specify supports multiple AI agents by generating agent-specific command files a
4444
| **Roo Code** | `.roo/rules/` | Markdown | N/A (IDE-based) | Roo Code IDE |
4545
| **CodeBuddy CLI** | `.codebuddy/commands/` | Markdown | `codebuddy` | CodeBuddy CLI |
4646
| **Amazon Q Developer CLI** | `.amazonq/prompts/` | Markdown | `q` | Amazon Q Developer CLI |
47+
| **Amp** | `.agents/commands/` | Markdown | `amp` | Amp CLI |
4748

4849
### Step-by-Step Integration Guide
4950

@@ -68,12 +69,14 @@ AGENT_CONFIG = {
6869
```
6970

7071
**Key Design Principle**: The dictionary key should match the actual executable name that users install. For example:
72+
7173
- ✅ Use `"cursor-agent"` because the CLI tool is literally called `cursor-agent`
7274
- ❌ Don't use `"cursor"` as a shortcut if the tool is `cursor-agent`
7375

7476
This eliminates the need for special-case mappings throughout the codebase.
7577

7678
**Field Explanations**:
79+
7780
- `name`: Human-readable display name shown to users
7881
- `folder`: Directory where agent-specific files are stored (relative to project root)
7982
- `install_url`: Installation documentation URL (set to `None` for IDE-based agents)
@@ -102,12 +105,14 @@ Update the **Supported AI Agents** section in `README.md` to include the new age
102105

103106
Modify `.github/workflows/scripts/create-release-packages.sh`:
104107

105-
##### Add to ALL_AGENTS array:
108+
##### Add to ALL_AGENTS array
109+
106110
```bash
107111
ALL_AGENTS=(claude gemini copilot cursor-agent qwen opencode windsurf q)
108112
```
109113

110-
##### Add case statement for directory structure:
114+
##### Add case statement for directory structure
115+
111116
```bash
112117
case $agent in
113118
# ... existing cases ...
@@ -131,14 +136,16 @@ gh release create "$VERSION" \
131136

132137
#### 5. Update Agent Context Scripts
133138

134-
##### Bash script (`scripts/bash/update-agent-context.sh`):
139+
##### Bash script (`scripts/bash/update-agent-context.sh`)
135140

136141
Add file variable:
142+
137143
```bash
138144
WINDSURF_FILE="$REPO_ROOT/.windsurf/rules/specify-rules.md"
139145
```
140146

141147
Add to case statement:
148+
142149
```bash
143150
case "$AGENT_TYPE" in
144151
# ... existing cases ...
@@ -151,14 +158,16 @@ case "$AGENT_TYPE" in
151158
esac
152159
```
153160

154-
##### PowerShell script (`scripts/powershell/update-agent-context.ps1`):
161+
##### PowerShell script (`scripts/powershell/update-agent-context.ps1`)
155162

156163
Add file variable:
164+
157165
```powershell
158166
$windsurfFile = Join-Path $repoRoot '.windsurf/rules/specify-rules.md'
159167
```
160168

161169
Add to switch statement:
170+
162171
```powershell
163172
switch ($AgentType) {
164173
# ... existing cases ...
@@ -200,13 +209,15 @@ elif selected_ai == "windsurf":
200209
**CRITICAL**: When adding a new agent to AGENT_CONFIG, always use the **actual executable name** as the dictionary key, not a shortened or convenient version.
201210

202211
**Why this matters:**
212+
203213
- The `check_tool()` function uses `shutil.which(tool)` to find executables in the system PATH
204214
- If the key doesn't match the actual CLI tool name, you'll need special-case mappings throughout the codebase
205215
- This creates unnecessary complexity and maintenance burden
206216

207217
**Example - The Cursor Lesson:**
208218

209219
**Wrong approach** (requires special-case mapping):
220+
210221
```python
211222
AGENT_CONFIG = {
212223
"cursor": { # Shorthand that doesn't match the actual tool
@@ -222,6 +233,7 @@ if agent_key == "cursor":
222233
```
223234

224235
**Correct approach** (no mapping needed):
236+
225237
```python
226238
AGENT_CONFIG = {
227239
"cursor-agent": { # Matches the actual executable name
@@ -234,6 +246,7 @@ AGENT_CONFIG = {
234246
```
235247

236248
**Benefits of this approach:**
249+
237250
- Eliminates special-case logic scattered throughout the codebase
238251
- Makes the code more maintainable and easier to understand
239252
- Reduces the chance of bugs when adding new agents
@@ -289,23 +302,28 @@ echo "✅ Done"
289302
### CLI-Based Agents
290303

291304
Require a command-line tool to be installed:
305+
292306
- **Claude Code**: `claude` CLI
293307
- **Gemini CLI**: `gemini` CLI
294308
- **Cursor**: `cursor-agent` CLI
295309
- **Qwen Code**: `qwen` CLI
296310
- **opencode**: `opencode` CLI
297311
- **Amazon Q Developer CLI**: `q` CLI
298312
- **CodeBuddy CLI**: `codebuddy` CLI
313+
- **Amp**: `amp` CLI
299314

300315
### IDE-Based Agents
316+
301317
Work within integrated development environments:
318+
302319
- **GitHub Copilot**: Built into VS Code/compatible editors
303320
- **Windsurf**: Built into Windsurf IDE
304321

305322
## Command File Formats
306323

307324
### Markdown Format
308-
Used by: Claude, Cursor, opencode, Windsurf, Amazon Q Developer
325+
326+
Used by: Claude, Cursor, opencode, Windsurf, Amazon Q Developer, Amp
309327

310328
```markdown
311329
---
@@ -316,6 +334,7 @@ Command content with {SCRIPT} and $ARGUMENTS placeholders.
316334
```
317335

318336
### TOML Format
337+
319338
Used by: Gemini, Qwen
320339

321340
```toml
@@ -351,6 +370,7 @@ The CLI automatically selects the appropriate implementation based on the `--scr
351370
## Argument Patterns
352371

353372
Different agents use different argument placeholders:
373+
354374
- **Markdown/prompt-based**: `$ARGUMENTS`
355375
- **TOML-based**: `{{args}}`
356376
- **Script placeholders**: `{SCRIPT}` (replaced with actual script path)
@@ -386,4 +406,3 @@ When adding new agents:
386406
---
387407

388408
*This documentation should be updated whenever new agents are added to maintain accuracy and completeness.*
389-

CHANGELOG.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6363

6464
- 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.
6565
- 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`.
66-
- Note: Constitution rules are explicitly treated as non-negotiable; any conflict is a CRITICAL finding requiring artifact remediation, not weakening of principles.
66+
- Note: Constitution rules are explicitly treated as non-negotiable; any conflict is a CRITICAL finding requiring artifact remediation, not weakening of principles.
6767

6868
## [0.0.16] - 2025-09-22
6969

@@ -140,7 +140,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
140140
- Updated command instructions in the CLI.
141141
- Cleaned up the code to not render agent-specific information when it's generic.
142142

143-
144143
## [0.0.6] - 2025-09-17
145144

146145
### Added
@@ -166,4 +165,3 @@ N/A
166165
### Changed
167166

168167
N/A
169-

CODE_OF_CONDUCT.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,21 @@ orientation.
1414
Examples of behavior that contributes to creating a positive environment
1515
include:
1616

17-
* Using welcoming and inclusive language
18-
* Being respectful of differing viewpoints and experiences
19-
* Gracefully accepting constructive criticism
20-
* Focusing on what is best for the community
21-
* Showing empathy towards other community members
17+
- Using welcoming and inclusive language
18+
- Being respectful of differing viewpoints and experiences
19+
- Gracefully accepting constructive criticism
20+
- Focusing on what is best for the community
21+
- Showing empathy towards other community members
2222

2323
Examples of unacceptable behavior by participants include:
2424

25-
* The use of sexualized language or imagery and unwelcome sexual attention or
25+
- The use of sexualized language or imagery and unwelcome sexual attention or
2626
advances
27-
* Trolling, insulting/derogatory comments, and personal or political attacks
28-
* Public or private harassment
29-
* Publishing others' private information, such as a physical or electronic
27+
- Trolling, insulting/derogatory comments, and personal or political attacks
28+
- Public or private harassment
29+
- Publishing others' private information, such as a physical or electronic
3030
address, without explicit permission
31-
* Other conduct which could reasonably be considered inappropriate in a
31+
- Other conduct which could reasonably be considered inappropriate in a
3232
professional setting
3333

3434
## Our Responsibilities

CONTRIBUTING.md

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,28 @@ When working on Agentic SDLC Spec Kit:
8080
3. Test script functionality in the `scripts/` directory
8181
4. Ensure memory files (`memory/constitution.md`) are updated if major process changes are made
8282

83+
### Testing template and command changes locally
84+
85+
Running `uv run specify init` pulls released packages, which won’t include your local changes.
86+
To test your templates, commands, and other changes locally, follow these steps:
87+
88+
1. **Create release packages**
89+
90+
Run the following command to generate the local packages:
91+
```
92+
./.github/workflows/scripts/create-release-packages.sh v1.0.0
93+
```
94+
95+
2. **Copy the relevant package to your test project**
96+
97+
```
98+
cp -r .genreleases/sdd-copilot-package-sh/. <path-to-test-project>/
99+
```
100+
101+
3. **Open and test the agent**
102+
103+
Navigate to your test project folder and open the agent to verify your implementation.
104+
83105
## AI contributions in Agentic SDLC Spec Kit
84106

85107
> [!IMPORTANT]
@@ -143,4 +165,3 @@ Please be respectful to maintainers and disclose AI assistance.
143165
- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)
144166
- [Using Pull Requests](https://help.github.com/articles/about-pull-requests/)
145167
- [GitHub Help](https://help.github.com)
146-

0 commit comments

Comments
 (0)