Install
$ agentstack add skill-gianverdum-ai-dev-skillset-workflow-iniciar-aplicacao ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Iniciar Aplicação
Use esta skill quando o pedido criar software novo ou uma funcionalidade sem estrutura existente clara.
Decisões Iniciais
- Leia a estrutura existente antes de criar arquivos.
- Se houver padrão claro no projeto, use esse padrão e informe a suposição.
- Quando criar ou reorganizar estrutura, nomes de arquivos, pacotes, módulos, classes, funções ou testes, consulte a rule da linguagem em
.agents/rules. - Se a linguagem não estiver explícita e o pedido for uma CLI, utilitário local ou ferramenta pequena sem requisito de stack, use Python com
uvcomo padrão e informe a suposição. - Se a linguagem, runtime ou framework não estiverem explícitos e a escolha afetar arquitetura, deploy, UI, integração externa ou custo relevante, pergunte antes de implementar.
- Se o pedido for pequeno, ainda trate como módulo evolutivo quando a skill de arquitetura estiver ativa.
Escopo do Projeto
- Trate a raiz do repositório como a raiz do projeto. Manifesto (
pyproject.toml,package.json,pom.xml,Cargo.toml,go.mod,.sln/.csproj, etc.),src/,tests/,README.md,.gitignoree lockfile ficam na raiz do repositório. - Não crie uma pasta intermediária com o nome do projeto na raiz do repo para depois colocar
src/dentro dela. Layout errado:/calculadora/src/calculadora/.... Layout correto:/src/calculadora/.... - O nome do módulo aparece apenas dentro de
src/(e em manifestos como[project] nameoupackage.jsonname), não como diretório irmão desrc/. - Exceção: monorepo explícito com mais de um deliverable independente. Nesse caso, cada projeto fica em
apps//,packages//ouservices//, mantendo seu próprio manifesto esrc/interno. Só adote esse layout quando já existir mais de um projeto no repositório ou o usuário pedir explicitamente; não crie monorepo preventivamente para abrigar um único projeto. - Se o repositório já tiver convenção diferente (ex.: várias pastas-projeto no topo), preserve-a e informe a suposição.
Quando Criar Modulo Separado vs Submodulo de Camada
Modulo = bounded context (DDD). Camada/adapter dentro de um modulo NAO e modulo separado.
Vale tanto na criacao inicial quanto em qualquer extensao (adicionar feature/funcionalidade nova num projeto existente). Ao estender, reaplique os criterios abaixo SEMPRE — nao caia em "preservar o padrao local" por inercia quando a feature nova introduz vocabulario, ciclo de vida ou regra com identidade propria. "Preservar padrao local" vale para conveções de naming/estilo/layout, nao para misturar bounded contexts no mesmo modulo.
Crie modulo SEPARADO quando ao menos um destes for verdade:
- O vocabulario/linguagem ubiqua e diferente (
taskxproject,paymentxnotification,inventoryxpricing). - O ciclo de vida das regras e independente (mudam por motivos diferentes, em ritmos diferentes).
- Modelos com mesmo nome tem significados distintos (um
Useremauthe diferente doUserembilling). - Existe possibilidade real e prevista de extrair o modulo como servico/biblioteca separada.
NAO crie modulo separado para o que e claramente parte do mesmo bounded context:
- Adapter de persistencia da entidade do proprio modulo (
task-storage,task-repository,task-db). Isso e submodulo de infraestrutura/adapter, NAO modulo irmao. - Cliente HTTP que serve o nucleo do modulo (
payment-api-cliente adapter de saida depayment). - Utilitarios, helpers, value objects, mappers.
- Camadas tecnicas (controllers, handlers, repositories, schemas).
Sintomas de vazamento de bounded context (DESVIO)
Quando uma extensao precisaria ser modulo novo mas foi enxertada no existente, normalmente aparecem estes sintomas. Cada um sozinho ja sinaliza problema:
- Tipo de uma entidade existente ganhou campos com vocabulario do novo dominio (ex.:
Task.completedBillingMonth,User.subscriptionTier,Order.crmContactId). - O
State/agregado do modulo existente ganhou novo campo com colecao do novo dominio (ex.:ProjectManagementState.monthlyCharges,ShopState.shippingLabels). - Constantes/regras com vocabulario do novo dominio aparecem em arquivos do dominio existente (ex.:
COMPLETED_TASK_CHARGE_CENTSemdomain/project.ts). - A policy table do modulo existente ganhou actions do novo dominio (
issue_monthly_charges,print_shipping_label). - Parametros de comando da UX existente passam a exigir campos do novo dominio (ex.:
complete-task --billing-month 2026-06). - README do modulo existente passa a citar dominios novos no titulo/responsabilidade ("gerencia projetos, tasks e cobrancas", "gerencia pedidos e envios").
Quando 2+ desses sintomas estao presentes, extraia o novo dominio para src// e ligue por porta. Os campos/regras que vazaram para o modulo existente voltam a ser primitivos genericos (Task.completedAt: Date, Task.completedBy: UserId) e o novo modulo deriva os conceitos proprios a partir dai.
Exemplos
Errado — storage como modulo irmao de task:
src/
task/
domain/
application/
interface/
storage/ # NAO e bounded context, e adapter de saida de task
file-task-repository.ts
Certo (Clean Arch) — storage vive dentro de task:
src/
task/
domain/
application/
interface/
infrastructure/
file-task-repository.ts # adapter de saida do proprio modulo
Certo (Hexagonal) — adapter de saida em adapters/out/:
src/
task/
domain/
application/
ports/task-repository.ts
use-cases/add-task.ts
adapters/
in/cli/
out/file-task-repository.ts
config/
Certo (multi-modulo real) — dois bounded contexts distintos:
src/
task/ # gestao de tarefas
domain/ application/ interface/ ...
project/ # gestao de projetos (linguagem propria)
domain/ application/ interface/ ...
# cada um com seu README; integracao via porta declarada no nucleo
Em duvida, comece com um modulo unico. Quebrar dois modulos juntos depois e barato; reverter uma quebra prematura e custoso.
Organização Mínima
- Não crie arquivos soltos na raiz para código de produção, exceto manifests, configuração, documentação essencial ou entrypoints esperados pela stack.
- Na ausência de padrão local, aplique a rule de nomenclatura e estrutura da linguagem escolhida.
- Crie ou atualize o manifesto da stack quando a aplicação precisar de dependências, ferramentas de teste, comandos ou metadados de pacote.
- Instale e registre dependências no projeto, usando o gerenciador idiomático da stack; não dependa de pacotes globais ou instruções manuais quando o projeto puder declarar a dependência.
- Para Python, use sempre
uv: inicializepyproject.tomlquando necessário, adicione dependências comuv addouuv add --dev, execute comandos comuv rune mantenhauv.lockquando ele for gerado. - Para Python novo, crie
pyproject.tomlcom metadados mínimos,requires-python, entrypoint quando houver CLI, build backend simples e configuração das ferramentas usadas. - Crie ou atualize
.gitignoreantes do primeiro commit. Esta é uma exigência obrigatória, não recomendação. Cubra no mínimo, por stack: - Python:
.venv/,.coverage,coverage.xml,htmlcov/,__pycache__/,*.pyc,.pytest_cache/,.ruff_cache/,.mypy_cache/,dist/,build/,*.egg-info/. - JavaScript/TypeScript:
node_modules/,dist/,build/,.next/,.turbo/,coverage/,.cache/,.env*exceto.env.example. - Java/Kotlin:
target/,build/,.gradle/,*.class. - C#/.NET:
bin/,obj/,*.user,.vs/. - Go: binários compilados na raiz,
vendor/quando não versionado. - Rust:
target/,Cargo.lockapenas em bibliotecas publicadas. - Se algum desses artefatos já estiver versionado por engano, remova do índice (
git rm --cached) ao adicionar a entrada no.gitignore. - Coloque módulos, aplicações, CLIs, serviços e bibliotecas dentro do
src/da raiz do repositório, criando/src/quando não houver padrão mais específico. - Não crie diretórios de aplicação diretamente na raiz do repositório, como
calculator_cli/oucalculadora/, salvo quando a stack exigir esse formato, o repositório for um monorepo explícito ou o padrão existente já use esse layout. - Crie sempre as camadas minimas obrigatorias no modulo, conforme a skill de arquitetura ativa:
- Clean Architecture (default):
domain,aggregates,value-objects,applicationeinterface. Carreguearchitecture-ddd-clean-arch. - Hexagonal:
domain,aggregates,value-objects,applicationeadapters/in+adapters/out. Carreguearchitecture-ddd-hexagonal. - Escolha por precedencia: (1) padrao do projeto existente; (2) solicitacao explicita do usuario; (3) default Clean Architecture.
aggregates/evalue-objects/ficam no mesmo nivel dedomain/(irmaos), nao dentro dedomain/. Cada aggregate root e cada VO em arquivo proprio.- VOs de identidade compartilhados entre BCs ficam em
src/shared-kernel/value-objects/na RAIZ desrc/, NUNCA dentro de outro modulo. - Bounded contexts separados sao modulos irmaos em
src/(cada um com sua estrutura completa). Subpastas dentro dedomain/com nomes de BC nao contam como BCs separados. - Vale tambem para CLIs e utilitarios pequenos: a camada
application(ou caso de uso ligado a porta de entrada, em Hexagonal) nao pode ser omitida por simplicidade aparente. A interface (ouadapters/in) chama o caso de uso, nunca o dominio direto. - A colocacao dos testes unitarios e decidida pela rule da linguagem em
.agents/rules, nao por preferencia global. Resumo das convencoes modernas: Go e Rust colocalizam unitarios junto ao codigo (Rust em modulo#[cfg(test)]); TypeScript e JavaScript preferem colocalizado (foo.test.tsao lado defoo.ts); Python, Java, C# e PHP usam diretorio espelhado (tests/na raiz,src/test/java, projeto*.Tests, etc.). Siga sempre o padrao da rule da linguagem usada. - Use
tests/no mesmo nivel desrc/para integracao, contrato, ponta a ponta, fixtures compartilhadas e suites que cruzam modulos, independentemente de onde ficam os unitarios. - Tudo que entrar em
tests/(unitarios em Python/PHP, integracao/contrato/e2e em qualquer linguagem) deve ser agrupado primeiro pelo TIPO em subpastas comotests/unit/,tests/integration/,tests/contract/,tests/e2e/,tests/acceptance/. Dentro de cada subpasta de tipo, espelhe a estrutura desrc/: um teste desrc///viratests////test_(com o sufixo do framework). Excecoes: Java/Kotlin (sufixo*Test/*ITsobresrc/test/java) e C#/.NET (projetos*.UnitTests/*.IntegrationTestsseparados) seguem a convencao da stack. - Carregue e aplique a skill
documentation-modulos-projetosempre que criar ou reorganizar um projeto ou modulo. Crie, na mesma mudanca, oREADME.mdda raiz do repositorio e umREADME.mdproprio para cada modulo de aplicacao criado (o pacote principal dentro desrc/, ou cada projeto emapps//,packages//ouservices//em monorepo). Submodulos de camada comodomain,application,interface,adaptersou equivalentes NAO recebem README proprio: sao descritos dentro do README do modulo. README de modulo nao e opcional: a tarefa so termina quando todo modulo novo tem o seu. - Mantenha artefatos gerados, cache e build fora do versionamento quando aplicável.
CLI
- Para uma CLI, crie um entrypoint claro e uma camada de interface responsável apenas por parsing, validação de entrada textual e apresentação de saída.
- Mantenha cálculo, decisão e regra de negócio fora do arquivo de CLI.
- Exponha comandos de execução e teste na resposta final.
- Para CLI Python, prefira entrypoint em
pyproject.tomle documente execução poruv run; useuv run python -mapenas quando um entrypoint ainda não fizer sentido. - Em CLI Python, mantenha
__main__.pyapenas como glue fino parapython -mquando isso agregar compatibilidade; não coloque regra de negócio nele.
Dependências e Ambiente
- Configure as ferramentas necessárias para cumprir os requisitos do pedido, incluindo teste, cobertura, lint ou build quando exigidos por outras skills.
- Carregue e aplique a skill
quality-lint-format: todo projeto novo deve nascer com linter e formatter idiomaticos instalados, configurados e com scriptslinteformatdeclarados no manifesto. O scriptlintinvoca o linter real (nao alias detypecheckoubuild). A escolha do linter por linguagem esta na rule da linguagem em.agents/rules. - Antes de dizer que uma ferramenta não está instalada, tente adicioná-la ao projeto pelo gerenciador da stack e valide pelo comando do projeto.
- Não instale dependências de forma global, não use
pip installdireto em Python e não crie ambientes virtuais manualmente quandouvpuder gerenciar o ambiente. - Se uma instalação precisar de rede, permissão externa ou ferramenta ausente, solicite a aprovação necessária ou registre o bloqueio concreto na resposta final.
Checklist
- A linguagem ou stack foi confirmada ou inferida por padrão existente.
- Em CLI/utilitário pequeno sem stack explícita, Python com
uvfoi usado como padrão ou outra escolha foi justificada. - O manifesto da stack foi criado ou atualizado quando havia dependências, comandos ou ferramentas.
- Dependências necessárias foram adicionadas ao projeto pelo gerenciador correto; em Python, por
uv. - Linter e formatter idiomaticos foram instalados e configurados; scripts
linteformatno manifesto invocam ferramentas reais, nao aliases. .gitignorecobre ambiente local, caches e artefatos gerados pela stack, conforme a lista mínima por linguagem.- Nenhum dos artefatos listados (ex.:
.venv/,.coverage,node_modules/,target/,bin/,obj/) está versionado. - Código de produção não ficou espalhado na raiz.
src/,tests/e manifesto estão na raiz do repositório, não dentro de uma pasta com o nome do projeto.- A funcionalidade nasceu dentro de
/src/com as camadas minimas exigidas pela skill de arquitetura ativa (Clean Arch:domain/application/interface; Hexagonal:domain/application/adapters/in+adapters/out). - Modulos irmaos em
src/representam BOUNDED CONTEXTS distintos. Persistencia, cliente HTTP, parser, mapper e demais adapters do proprio modulo NAO sao modulos irmaos — ficam como submodulo de camada dentro do modulo dono. - A camada de entrada (interface ou
adapters/in) delega para um caso de uso deapplication; nao chama odomaindiretamente. - A precedencia de arquitetura foi respeitada: padrao do projeto > pedido do usuario > default Clean Architecture.
- Testes unitários ficaram próximos do código ou no padrão da stack.
- Testes de integração e outros testes amplos ficaram em
tests/no mesmo nível desrc/. README.mdda raiz do repositorio foi criado ou atualizado.- Cada modulo de aplicacao criado tem o seu proprio
README.md; submodulos de camada nao recebem README proprio. - A skill
documentation-modulos-projetofoi carregada e seu checklist foi cumprido. - Rules aplicáveis de nomenclatura e estrutura foram consultadas quando não havia padrão local suficiente.
- A resposta final informa como executar e validar.
- A skill
quality-revisao-aderenciafoi rodada antes do resumo final e os desvios encontrados foram corrigidos. - O resumo final inclui secao "Revisao de aderencia" com status ❌/✅ item-a-item da checklist objetiva. Frases de conclusao ("pronto", "concluido", "feito", "complete", "done") so foram usadas se ≤1 item vermelho.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: gianverdum
- Source: gianverdum/ai-dev-skillset
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.