A project override silently turns off presets for that template
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 73/100
Piste de recherche
L’issue indique preset resolve et la documentation des presets comme points de départ ; lis comment artifact info signale les changements de preset masqués et trouve la documentation qui explique les surcharges des modèles de projet. Documente le fait qu’une surcharge masque les changements du preset et fais en sorte que preset resolve signale le preset masqué si ce comportement entre dans le périmètre. Le travail est terminé lorsque les utilisateurs peuvent découvrir pourquoi le contenu du preset est absent.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
What happens (v1.2.6)
A team installs a preset that adds a section to the plan template. Later, a developer copies the plan template into .specify/templates/overrides/ to tweak one line. From then on, the preset's section is gone from every plan, and nothing says so:
specify preset resolve plan-templateshows only the override.specify preset liststill shows the preset as enabled.- Only
specify artifact info plan-template --kind template --jsonreveals it, ashidden: true.
This matches the rule that project overrides always win, so it isn't a bug. It's just invisible.
Reproduction script
#!/usr/bin/env bash
# u5: a project override on a template silently drops every preset layer on it, and the CLI says nothing.
# A team preset that appends a section (the documented "append" strategy), plus a developer's own
# override of the same template (the documented .specify/templates/overrides/ folder). Stock CLI only.
set -uo pipefail
REF="${REF:-v1.2.6}"
WORK="$(mktemp -d)"
cd "$WORK"
SPECIFY=(uvx -q --from "git+https://github.com/github/spec-kit.git@$REF" specify)
"${SPECIFY[@]}" init --here --force --non-interactive --integration claude --script sh --ignore-agent-tools >/dev/null 2>&1 || { echo "init failed"; exit 2; }
echo "spec-kit $REF in $WORK"
mkdir -p preset-src/templates
cat > preset-src/preset.yml <<'YML'
schema_version: "1.0"
preset:
id: "team-governance"
name: "Team Governance"
version: "0.1.0"
description: "Appends a compliance appendix to every plan"
author: "repro"
requires:
speckit_version: ">=1.2.0"
provides:
templates:
- type: "template"
name: "plan-template"
file: "templates/plan-template.md"
strategy: "append"
description: "Compliance appendix appended to the plan"
tags: ["governance"]
YML
printf '\n## Compliance Appendix\n\nList every regulated data field the change touches.\n' > preset-src/templates/plan-template.md
echo "1. team installs the preset"
"${SPECIFY[@]}" preset add --dev ./preset-src </dev/null 2>&1 | tail -1
echo " preset resolve plan-template:"
"${SPECIFY[@]}" preset resolve plan-template 2>&1 | sed 's/^/ /'
echo "2. a developer overrides the plan template for this project (copies it and edits a line)"
mkdir -p .specify/templates/overrides
sed 's/^# Implementation Plan/# Implementation Plan (our team)/' .specify/templates/plan-template.md > .specify/templates/overrides/plan-template.md
echo " preset resolve plan-template:"
"${SPECIFY[@]}" preset resolve plan-template 2>&1 | sed 's/^/ /'
echo " artifact info plan-template --kind template:"
"${SPECIFY[@]}" artifact info plan-template --kind template --json 2>&1 | python3 -c "import json,sys;d=json.load(sys.stdin);print(json.dumps(d,indent=1)[:1500])" 2>&1 | sed 's/^/ /'
echo " preset list:"
"${SPECIFY[@]}" preset list 2>&1 | sed 's/^/ /' | head -8
o=.specify/templates/overrides/plan-template.md
if [ -f "$o" ] && [ "$(awk '/Compliance Appendix/{n++} END{print n+0}' "$o")" = "0" ]; then
echo "RESULT: plan-template now resolves to $o, which has no Compliance Appendix. Read the output above for any warning that the preset is hidden."
fi
Suggested fix (small)
- One sentence in the presets docs: a project override replaces the template and hides every preset change to it.
- One line from
preset resolvewhen that happens, for example "team-governance (append) is hidden by a project override". The information is already computed forartifact info, so this is a few lines. Happy to open a PR for it if that direction works for you.
AI disclosure: drafted with Claude Code (Claude Opus 5.5, default settings) from runs in a throwaway sandbox; I checked it before filing.
- Langage dominant
- Python
- Étoiles
- 149k
- Forks
- 13.4k
- Merge moyen
- 1 j 5 h
- PR mergées (30 j)
- 223
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de github/spec-kit
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
triage-must-have
Difficulté 1/5 Moins d'une heure Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
Workflow-step verifier test fixture breaks when the checkout path contains whitespace (4 failures on macOS)Peut-être pris @mehdikarimi55 l’a pris il y a 3 jours. Ouvertetriage-can-wait
Difficulté 2/5 1-3 heures Accessibilité débutants 83/100
Les mainteneurs répondent en général sous 1 jour
-
Parity tests fail under the documented direct pytest invocation when the ambient python3 lacks PyYAML (11 failures)Peut-être pris @mehdikarimi55 l’a pris il y a 3 jours. Ouvertetriage-must-have
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour
-
bug triage-out-of-scope
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de github/spec-kit
Issues similaires
-
SslLibrary crashes with unhandled OSError: port/proto not found on non-standard SSL portsPeut-être pris @himanchalkaushale l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
OWASP/Nettacker#1884 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
A-connection-core C-enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
aws-samples/sample-per-model-bedrock#869 ·
Les mainteneurs répondent en général sous 1 jour
-
Spec: say that included_antigen_sources gates LENS labels; do not merge it into antigen kindsOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
fzn0x/watchtower#17 ·