You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .agents/skills/speckit-analyze/SKILL.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,7 +21,7 @@ You **MUST** consider the user input before proceeding (if not empty).
21
21
**Check for extension hooks (before analysis)**:
22
22
- Check if `.specify/extensions.yml` exists in the project root.
23
23
- If it exists, read it and look for entries under the `hooks.before_analyze` key
24
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue normally
24
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue normally
25
25
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
26
26
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
27
27
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
@@ -208,7 +208,7 @@ Ask the user: "Would you like me to suggest concrete remediation edits for the t
208
208
209
209
After reporting, check if `.specify/extensions.yml` exists in the project root.
210
210
- If it exists, read it and look for entries under the `hooks.after_analyze` key
211
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue normally
211
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue normally
212
212
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
213
213
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
214
214
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
Copy file name to clipboardExpand all lines: .agents/skills/speckit-checklist/SKILL.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -51,7 +51,7 @@ You **MUST** consider the user input before proceeding (if not empty).
51
51
**Check for extension hooks (before checklist generation)**:
52
52
- Check if `.specify/extensions.yml` exists in the project root.
53
53
- If it exists, read it and look for entries under the `hooks.before_checklist` key
54
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue normally
54
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue normally
55
55
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
56
56
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
57
57
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
@@ -353,7 +353,7 @@ Sample items:
353
353
**Check for extension hooks (after checklist generation)**:
354
354
Check if `.specify/extensions.yml` exists in the project root.
355
355
- If it exists, read it and look for entries under the `hooks.after_checklist` key
356
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue normally
356
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue normally
357
357
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
358
358
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
359
359
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
Copy file name to clipboardExpand all lines: .agents/skills/speckit-clarify/SKILL.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,7 +21,7 @@ You **MUST** consider the user input before proceeding (if not empty).
21
21
**Check for extension hooks (before clarification)**:
22
22
- Check if `.specify/extensions.yml` exists in the project root.
23
23
- If it exists, read it and look for entries under the `hooks.before_clarify` key
24
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue normally
24
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue normally
25
25
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
26
26
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
27
27
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
@@ -244,7 +244,7 @@ Context for prioritization: $ARGUMENTS
244
244
Check if `.specify/extensions.yml` exists in the project root.
245
245
- If it does not exist, or no hooks are registered under `hooks.after_clarify`, skip to the Completion Report.
246
246
- If it exists, read it and look for entries under the `hooks.after_clarify` key.
247
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue to the Completion Report.
247
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue to the Completion Report.
248
248
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
249
249
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
250
250
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
Copy file name to clipboardExpand all lines: .agents/skills/speckit-constitution/SKILL.md
+5-3Lines changed: 5 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -40,7 +40,7 @@ and commands read the constitution at runtime and are not modified here.
40
40
**Check for extension hooks (before constitution update)**:
41
41
- Check if `.specify/extensions.yml` exists in the project root.
42
42
- If it exists, read it and look for entries under the `hooks.before_constitution` key
43
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue normally
43
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue normally
44
44
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
45
45
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
46
46
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
@@ -108,7 +108,9 @@ Follow this execution flow:
108
108
- Ensure each Principle section: succinct name line, paragraph (or bullet list) capturing non‑negotiable rules, explicit rationale if not obvious.
4. Produce a Sync Impact Report (prepend as an HTML comment at top of the constitution file after update):
111
+
4. Produce a Sync Impact Report as an HTML comment at the top of the constitution file after update.
112
+
This report is temporary scratch material for human review of the amendment, not governance
113
+
content; it is expected to be removed before the amended constitution file is committed.
112
114
- Version change: old → new
113
115
- List of modified principles (old title → new title if renamed)
114
116
- Added sections
@@ -147,7 +149,7 @@ Write only `.specify/memory/constitution.md`; do not create or modify template s
147
149
**Check for extension hooks (after constitution update)**:
148
150
Check if `.specify/extensions.yml` exists in the project root.
149
151
- If it exists, read it and look for entries under the `hooks.after_constitution` key
150
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue normally
152
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue normally
151
153
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
152
154
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
153
155
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
Copy file name to clipboardExpand all lines: .agents/skills/speckit-converge/SKILL.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,7 +22,7 @@ You **MUST** consider the user input before proceeding (if not empty).
22
22
23
23
- Check if `.specify/extensions.yml` exists in the project root.
24
24
- If it exists, read it and look for entries under the `hooks.before_converge` key
25
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue normally
25
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue normally
26
26
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
27
27
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
28
28
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
@@ -241,7 +241,7 @@ Append to the **end** of `tasks.md`, per the append contract:
241
241
After producing the result, check if `.specify/extensions.yml` exists in the project root.
242
242
243
243
- If it exists, read it and look for entries under the `hooks.after_converge` key
244
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue normally
244
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue normally
245
245
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
246
246
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
247
247
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
Copy file name to clipboardExpand all lines: .agents/skills/speckit-implement/SKILL.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,7 +21,7 @@ You **MUST** consider the user input before proceeding (if not empty).
21
21
**Check for extension hooks (before implementation)**:
22
22
- Check if `.specify/extensions.yml` exists in the project root.
23
23
- If it exists, read it and look for entries under the `hooks.before_implement` key
24
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue normally
24
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue normally
25
25
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
26
26
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
27
27
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
@@ -186,7 +186,7 @@ Note: This command assumes a complete task breakdown exists in tasks.md. If task
186
186
Check if `.specify/extensions.yml` exists in the project root.
187
187
- If it does not exist, or no hooks are registered under `hooks.after_implement`, skip to the Completion Report.
188
188
- If it exists, read it and look for entries under the `hooks.after_implement` key.
189
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue to the Completion Report.
189
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue to the Completion Report.
190
190
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
191
191
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
192
192
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
Copy file name to clipboardExpand all lines: .agents/skills/speckit-plan/SKILL.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,7 +21,7 @@ You **MUST** consider the user input before proceeding (if not empty).
21
21
**Check for extension hooks (before planning)**:
22
22
- Check if `.specify/extensions.yml` exists in the project root.
23
23
- If it exists, read it and look for entries under the `hooks.before_plan` key
24
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue normally
24
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue normally
25
25
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
26
26
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
27
27
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
@@ -54,7 +54,7 @@ You **MUST** consider the user input before proceeding (if not empty).
54
54
55
55
## Outline
56
56
57
-
1. **Setup**: Run `.specify/scripts/bash/setup-plan.sh --json` from repo root and parse JSON for FEATURE_SPEC, IMPL_PLAN, SPECS_DIR, BRANCH. For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\''m Groot' (or double-quote if possible: "I'm Groot").
57
+
1. **Setup**: Run `.specify/scripts/bash/setup-plan.sh --json` from repo root and parse JSON for FEATURE_SPEC, IMPL_PLAN, FEATURE_DIR, BRANCH. For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\''m Groot' (or double-quote if possible: "I'm Groot").
@@ -73,7 +73,7 @@ You **MUST** consider the user input before proceeding (if not empty).
73
73
Check if `.specify/extensions.yml` exists in the project root.
74
74
- If it does not exist, or no hooks are registered under `hooks.after_plan`, skip to the Completion Report.
75
75
- If it exists, read it and look for entries under the `hooks.after_plan` key.
76
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue to the Completion Report.
76
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue to the Completion Report.
77
77
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
78
78
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
79
79
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
Copy file name to clipboardExpand all lines: .agents/skills/speckit-specify/SKILL.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,7 +21,7 @@ You **MUST** consider the user input before proceeding (if not empty).
21
21
**Check for extension hooks (before specification)**:
22
22
- Check if `.specify/extensions.yml` exists in the project root.
23
23
- If it exists, read it and look for entries under the `hooks.before_specify` key
24
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue normally
24
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue normally
25
25
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
26
26
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
27
27
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
@@ -239,7 +239,7 @@ Given that feature description, do this:
239
239
Check if `.specify/extensions.yml` exists in the project root.
240
240
- If it does not exist, or no hooks are registered under `hooks.after_specify`, skip to the Completion Report.
241
241
- If it exists, read it and look for entries under the `hooks.after_specify` key.
242
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue to the Completion Report.
242
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue to the Completion Report.
243
243
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
244
244
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
245
245
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
Copy file name to clipboardExpand all lines: .agents/skills/speckit-tasks/SKILL.md
+3-2Lines changed: 3 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,7 +21,7 @@ You **MUST** consider the user input before proceeding (if not empty).
21
21
**Check for extension hooks (before tasks generation)**:
22
22
- Check if `.specify/extensions.yml` exists in the project root.
23
23
- If it exists, read it and look for entries under the `hooks.before_tasks` key
24
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue normally
24
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue normally
25
25
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
26
26
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
27
27
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
@@ -93,7 +93,7 @@ You **MUST** consider the user input before proceeding (if not empty).
93
93
Check if `.specify/extensions.yml` exists in the project root.
94
94
- If it does not exist, or no hooks are registered under `hooks.after_tasks`, skip to the Completion Report.
95
95
- If it exists, read it and look for entries under the `hooks.after_tasks` key.
96
-
- If the YAML cannot be parsed or is invalid, skip hook checking silentlyand continue to the Completion Report.
96
+
- If the YAML cannot be parsed or is invalid, do not skip silently: tell the user that `.specify/extensions.yml` could not be read (include the parser error) and that no hooks were checked, including any mandatory (`optional: false`) hooks registered there, then continue to the Completion Report.
97
97
- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
98
98
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
99
99
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
@@ -192,6 +192,7 @@ Every task MUST strictly follow this format:
192
192
- Map each entity to the user story(ies) that need it
193
193
- If entity serves multiple stories: Put in earliest story or Setup phase
194
194
- Relationships → service layer tasks in appropriate story phase
195
+
- For each field with constraints in data-model.md (max length, nullable/required, enum values, validation rules), quote the constraint verbatim in the task description so it is not left to implementation-time discretion
0 commit comments