feature-plan
Use when the user asks to plan a Foundation SoftwareFeature — orchestrates planning of all child UserStories via /userstory-plan, then moves the Feature from "Pendente" to "Planejado". Skill name follows entity-action convention.
Install
mkdir -p .claude/skills/feature-plan && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/13325" && unzip -o skill.zip -d .claude/skills/feature-plan && rm skill.zipInstalls to .claude/skills/feature-plan
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Use when the user asks to plan a Foundation SoftwareFeature — orchestrates planning of all child UserStories via /userstory-plan, then moves the Feature from "Pendente" to "Planejado". Skill name follows entity-action convention.About this skill
Plan Software Feature
Skill que conduz uma foundation:SoftwareFeature da fase Pendente para Planejado, orquestrando o planejamento de todas as foundation:UserStory filhas.
Pendente → Planejado → Pronto para Dev → Em Progresso → Testando → Concluído
Esta skill cobre apenas a transição Pendente → Planejado da Feature, delegando o planejamento individual de cada US filha à skill /userstory-plan.
Pré-requisitos
A skill recebe a IRI da SoftwareFeature como argumento (ex. foundation:SoftwareFeature_1777574442863).
Se o usuário não informar, peça antes de prosseguir.
Instruções
Passo 1 — Carregar Feature + US filhas
Em paralelo:
describe_individual([<FeatureIRI>])— pegapartOfProject,partOfProduct,solvesProblem,successCriteria,hasStatuse os backlinks.search(class_iri: "foundation:UserStory", filters: [{detail: "foundation:partOfFeature", value: "<FeatureIRI>"}], limit: 100)— lista todas as US filhas.- Resolva
partOfProject→describe_individual([<ProjectIRI>])para o contexto do plano.
Valide:
- A Feature precisa ter um contrato observável. A skill resolve o contrato nesta ordem:
- Se
successCriteriaestá preenchido na Feature → use-o como contrato. - Se vazio, mas a Feature tem ≥1 US filha com
acceptanceCriteriapreenchido → o conjunto agregado dos AC das US filhas é osuccessCriteriaefetivo (a convenção do FOUNDATION é manter o contrato nas US, não na Feature). - Se nenhuma US filha tem AC e a Feature não tem
successCriteria→ pare e peça ao usuário definir o contrato (ou criar pelo menos uma US com AC).
- Se
solvesProblemé opcional — se preenchido, registre no relatório; se ausente, prossiga sem bloquear (apenas 4 de 50 Features do projeto usam).- O
hasStatusatual deve permitir transição. Casos válidos:foundation:Pending(Pendente) — fluxo normal.foundation:Status_1773581282341(Mudança Pendente) — replanejamento após mudança de escopo.foundation:Status_1772596341042(Planejado) — replanejamento explícito; confirme com o usuário antes.
- Se já estiver em
InProgress,Testando,Completed,CanceladoouRejected, pare e avise.
Passo 2 — Mapear gap de cobertura
Só aplicável quando a Feature tem successCriteria próprio (cenário 1 do Passo 1).
Compare cada item de successCriteria da Feature com a capability das US filhas:
- Liste cada item de
successCriteria(uma linha por critério). - Para cada critério, identifique qual US filha o cobre (por correspondência semântica entre
successCriteriaecapability/acceptanceCriteria). - Critérios sem US → liste como gaps. Pare e mostre ao usuário o gap. Pergunte se ele quer:
- (a) criar User Stories faltantes manualmente antes de planejar, OU
- (b) avançar com cobertura parcial (registre essa decisão no changelog da Feature).
Não invente User Stories nesta skill — criar US é responsabilidade do usuário ou de /feature-code-sync. Aqui apenas planejamos as que existem.
Quando o contrato vem dos AC das US filhas (cenário 2 do Passo 1), pule este passo — não há gap a calcular, o contrato é o próprio conjunto de US existentes.
Passo 3 — Planejar cada US filha
Para cada US filha em status foundation:Pending, foundation:Status_1773581282341 (Mudança Pendente) ou foundation:Status_1772596341042 (Planejado, se for replanejamento explícito):
- Invoque
/userstory-plan <UserStoryIRI>— uma US por vez, sequencialmente, para evitar conflitos de escrita. - Se a skill
/userstory-planparar (por falta decapability/benefit/acceptanceCriteria), pare o ciclo e reporte ao usuário qual US precisa ser corrigida antes.
US filhas que já estão em Pronto para Dev, InProgress, Testando ou Completed são ignoradas — não replanejar trabalho em andamento.
Passo 4 — Persistir status da Feature
Quando todas as US filhas elegíveis estiverem em pelo menos Planejado:
replace_property_values(operations: [
{
iri: "<FeatureIRI>",
property_iri: "foundation:hasStatus",
values: ["foundation:Status_1772596341042"]
}
])
foundation:Status_1772596341042 é o IRI fixo de Planejado — nunca substituir pelo label.
Se houver gaps aceitos pelo usuário no Passo 2, registre via add_property_values em foundation:changelog:
<YYYY-MM-DD> — Feature planejada com cobertura parcial. Critérios sem US: <lista>.
Passo 5 — Reportar
Mostre ao usuário, em até 8 linhas:
- IRI e label da Feature.
- Status anterior →
Planejado. - Quantas US filhas foram planejadas, quantas ignoradas e por quê.
- Lista de gaps identificados (se houver).
- Próximo passo sugerido:
/feature-implement <FeatureIRI>quando o usuário quiser começar a entrega.
Regras
- NEVER invente IRIs de status — use
foundation:Status_1772596341042para "Planejado". - NEVER crie User Stories dentro desta skill — apenas orquestre o planejamento das existentes.
- NEVER planeje a Feature sem antes ter passado por todas as US filhas elegíveis em
/userstory-plan. - NEVER mude US filhas que já estão em
Pronto para Devou estágios posteriores. - ALWAYS resolva o contrato da Feature antes de prosseguir —
successCriteriapróprio OU agregado dos AC das US filhas. Sem nenhum dos dois, pare. - ALWAYS rode
/userstory-plansequencialmente, uma US por vez. - ALWAYS responda ao usuário em português (CLAUDE.md).
When NOT to use this skill
- Planejar uma única US →
/userstory-plan - Implementar a Feature após planejar →
/feature-implement - Criar US a partir do código existente →
/feature-code-sync - Remover Feature →
/feature-remove