A project override silently turns off presets for that template
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 73/100
Direção de pesquisa
A issue identifica preset resolve e a documentação de presets como pontos de partida; leia como artifact info informa alterações ocultas de presets e encontre a documentação que explica substituições de templates de projeto. Documente que uma substituição oculta alterações do preset e faça preset resolve informar o preset oculto se esse comportamento estiver dentro do escopo. O trabalho estará concluído quando os usuários puderem descobrir por que o conteúdo do preset está ausente.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- Python
- Estrelas
- 149k
- Forks
- 13.4k
- Merge médio
- 1d 5h
- PRs com merge (30d)
- 223
Preparar o ambiente
Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de github/spec-kit
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 1 dia
-
triage-must-have
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
Workflow-step verifier test fixture breaks when the checkout path contains whitespace (4 failures on macOS)Talvez já em andamento @mehdikarimi55 assumiu há 3 dias. Abertatriage-can-wait
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
Mantenedores costumam responder em até 1 dia
-
Parity tests fail under the documented direct pytest invocation when the ambient python3 lacks PyYAML (11 failures)Talvez já em andamento @mehdikarimi55 assumiu há 3 dias. Abertatriage-must-have
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
Mantenedores costumam responder em até 1 dia
-
bug triage-out-of-scope
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 64/100
Mantenedores costumam responder em até 1 dia
Todas as issues de github/spec-kit
Issues semelhantes
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 80/100
glossyio/traffic-monitor#312 ·
Mantenedores costumam responder em até 1 dia
-
local devenv exampleAbertadocumentation enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
es-ude/elastic-ai.creator#1046 ·
Mantenedores costumam responder em até 3 dias
-
ENH: permit cachetools >= 7Abertafeature request
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
confident-ai/deepteam#306 ·
Mantenedores costumam responder em até 1 dia
-
SslLibrary crashes with unhandled OSError: port/proto not found on non-standard SSL portsTalvez já em andamento @himanchalkaushale assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
OWASP/Nettacker#1884 · 1 comentário ·
Mantenedores costumam responder em até 1 dia