[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C0VCBJHDPCSYZHNFSQ6V1W":3,"skill-same:01M6C0VCBJHDPCSYZHNFSQ6V1W":58},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":14,"repositoryHtmlUrl":40,"repositoryHomepageUrl":6,"ownerHtmlUrl":41,"ownerBlogUrl":6,"ownerDescription":42,"updatedAt":43,"install":44,"resources":57},"01M6C0VCBJHDPCSYZHNFSQ6V1W","domain-modeling",null,"Construir e afiar o modelo de domínio do Aprender Sistema — glossário de termos e ADRs — durante uma conversa de design. Use ao discutir terminologia do negócio, editar o glossário, ou registrar\u002Feditar um ADR. Para só consultar regras RF\u002FRD\u002FPA\u002FCP, use `aprender-domain`.","matheusnorjosa\u002Faprender_sistema","matheusnorjosa","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F117673804?v=4","01M6C0S19FG12BDFBTRWY9TTEQ","Matheus Norjosa","01M6C0S1DF0YB17TKGEYC70GSP",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fdomain-modeling\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31],"domain modeling","domain","modeling","design","para","adr","use","rd","ao","do","cp","de","registrar","2026-11-10 10:12:30",false,"---\nname: domain-modeling\ndescription: Construir e afiar o modelo de domínio do Aprender Sistema — glossário de termos e ADRs — durante uma conversa de design. Use ao discutir terminologia do negócio, editar o glossário, ou registrar\u002Feditar um ADR. Para só consultar regras RF\u002FRD\u002FPA\u002FCP, use `aprender-domain`.\n---\n\n# Domain Modeling (Aprender Sistema)\n\nAdaptado de `mattpocock\u002Fskills` (MIT) para as convenções deste repo (ADR-017, SDD).\n\nDisciplina *ativa*: desafiar termos, inventar cenários de borda e registrar glossário e\ndecisões no momento em que se firmam. Só *ler* o glossário não é esta skill.\n\n## Onde as coisas moram\n\n| O quê | Onde |\n|---|---|\n| Glossário | `v2\u002Fdocs\u002Fspecs\u002Fdomain\u002Fglossario.spec.md` |\n| ADR | `docs\u002Farchitecture\u002Fproject-decisions\u002FADR-NNN-slug.md` |\n| Índice de ADRs | `docs\u002Farchitecture\u002Fproject-decisions\u002FREADME.md` |\n| Índice de specs | `v2\u002Fdocs\u002Fspecs\u002FINDEX_SDD.md` e `v2\u002Fdocs\u002Fspecs\u002Fdomain\u002FREADME.md` |\n\nCrie arquivos só quando houver algo a escrever. Ao criar o glossário, registre-o nos dois\níndices de specs **no mesmo commit** (ADR-017: nada vivo fora do índice).\n\n## Durante a sessão\n\n### Desafie contra o glossário\nTermo usado em conflito com o glossário → aponte na hora: \"O glossário define 'Evento' como X,\nmas você parece querer dizer Y. Qual dos dois?\"\n\n### Afie linguagem vaga\nTermo ambíguo ou sobrecarregado → proponha o termo canônico: \"'Usuário' aqui é o Formador ou o\nCoordenador? São coisas diferentes.\"\n\n### Cenários concretos\nAo discutir relações do domínio, teste com cenários de borda que forcem a fronteira entre\nconceitos (ex.: formador em dois municípios no mesmo dia; projeto que muda de fluxo SUPER).\n\n### Confira com o código\nQuando a pessoa afirmar como algo funciona, verifique em `v2\u002Fbackend\u002Fapps\u002F` (models, services).\nContradição → mostre: \"O código cancela a Solicitação inteira, mas você disse que cancelamento\nparcial existe. Qual está certo?\"\n\n### Atualize o glossário na hora\nTermo resolvido → escreva no glossário imediatamente, não acumule para o fim.\n\nO glossário é **só vocabulário**: nada de implementação, spec ou rascunho. Regra de negócio\nnumerada (RF\u002FRD\u002FPA\u002FCP) já tem spec própria — linke, não duplique.\n\n## Formato do glossário\n\n```md\n---\ntitle: Glossário do Domínio\nstatus: canonical\nlast_verified: AAAA-MM-DD\nowner: domain\nsources_of_truth:\n  - v2\u002Fbackend\u002Fapps\u002Fcore\u002Fmodels\u002F\n---\n\n# Glossário do Domínio\n\nVocabulário canônico do negócio. Voltar ao [índice SDD](..\u002FINDEX_SDD.md).\n\n## {Agrupamento, quando surgir}\n\n**Solicitação**:\nPedido de agendamento de um evento de formação, sujeito à política de aprovação (PA).\n_Model_: `Solicitacao`\n_Evitar_: pedido, requisição\n```\n\nRegras:\n- **Seja opinativo.** Várias palavras para um conceito → escolha uma, liste as outras em `_Evitar_`.\n- **Definição curta.** Uma ou duas frases. Diga o que a coisa *é*, não o que faz.\n- **Só termos deste negócio.** Conceito genérico de programação não entra.\n- `_Model_` só quando existe um model Django correspondente — confira que existe.\n- Atualize `last_verified` e `sources_of_truth` ao conferir termos contra o código.\n\n## ADRs, com parcimônia\n\nOfereça um ADR só quando as três forem verdadeiras:\n\n1. **Difícil de reverter** — mudar de ideia depois custa caro.\n2. **Surpreendente sem contexto** — um leitor futuro vai perguntar \"por que assim?\".\n3. **Resultado de trade-off real** — havia alternativas genuínas.\n\nFaltou uma → sem ADR. A decisão fica na conversa (ou numa spec, se for contrato).\n\n### Numeração\n`docs\u002Farchitecture\u002Fproject-decisions\u002F` e `v2\u002Fdocs\u002Fadr\u002F` **compartilham um espaço de numeração**.\nPróximo número = maior das duas pastas + 1. Depois de criar, rode\n`python v2\u002Fbackend\u002Fscripts\u002Fcheck_adr_numbers.py` e adicione a linha no índice `README.md`.\n\n### Template (o do repo, em pt-BR)\n\n```md\n# ADR-NNN: {Título}\n\n**Status:** Accepted | Deprecated | Superseded by ADR-YYY\n**Date:** AAAA-MM-DD\n**Decider:** {nome}\n\n## Context\n{O problema que levou à decisão}\n\n## Decision\n{O que foi escolhido e por quê}\n\n## Consequences\n{O que muda, o que fica proibido, o que é recomendado}\n\n## References\n{Specs, código, outros ADRs}\n```\n\nUm ADR curto é válido: o valor está em registrar *que* decidiu e *por quê*.\n","# Domain Modeling (Aprender Sistema)\n\nAdaptado de `mattpocock\u002Fskills` (MIT) para as convenções deste repo (ADR-017, SDD).\n\nDisciplina *ativa*: desafiar termos, inventar cenários de borda e registrar glossário e\ndecisões no momento em que se firmam. Só *ler* o glossário não é esta skill.\n\n## Onde as coisas moram\n\n| O quê | Onde |\n|---|---|\n| Glossário | `v2\u002Fdocs\u002Fspecs\u002Fdomain\u002Fglossario.spec.md` |\n| ADR | `docs\u002Farchitecture\u002Fproject-decisions\u002FADR-NNN-slug.md` |\n| Índice de ADRs | `docs\u002Farchitecture\u002Fproject-decisions\u002FREADME.md` |\n| Índice de specs | `v2\u002Fdocs\u002Fspecs\u002FINDEX_SDD.md` e `v2\u002Fdocs\u002Fspecs\u002Fdomain\u002FREADME.md` |\n\nCrie arquivos só quando houver algo a escrever. Ao criar o glossário, registre-o nos dois\níndices de specs **no mesmo commit** (ADR-017: nada vivo fora do índice).\n\n## Durante a sessão\n\n### Desafie contra o glossário\nTermo usado em conflito com o glossário → aponte na hora: \"O glossário define 'Evento' como X,\nmas você parece querer dizer Y. Qual dos dois?\"\n\n### Afie linguagem vaga\nTermo ambíguo ou sobrecarregado → proponha o termo canônico: \"'Usuário' aqui é o Formador ou o\nCoordenador? São coisas diferentes.\"\n\n### Cenários concretos\nAo discutir relações do domínio, teste com cenários de borda que forcem a fronteira entre\nconceitos (ex.: formador em dois municípios no mesmo dia; projeto que muda de fluxo SUPER).\n\n### Confira com o código\nQuando a pessoa afirmar como algo funciona, verifique em `v2\u002Fbackend\u002Fapps\u002F` (models, services).\nContradição → mostre: \"O código cancela a Solicitação inteira, mas você disse que cancelamento\nparcial existe. Qual está certo?\"\n\n### Atualize o glossário na hora\nTermo resolvido → escreva no glossário imediatamente, não acumule para o fim.\n\nO glossário é **só vocabulário**: nada de implementação, spec ou rascunho. Regra de negócio\nnumerada (RF\u002FRD\u002FPA\u002FCP) já tem spec própria — linke, não duplique.\n\n## Formato do glossário\n\n```md\n---\ntitle: Glossário do Domínio\nstatus: canonical\nlast_verified: AAAA-MM-DD\nowner: domain\nsources_of_truth:\n  - v2\u002Fbackend\u002Fapps\u002Fcore\u002Fmodels\u002F\n---\n\n# Glossário do Domínio\n\nVocabulário canônico do negócio. Voltar ao [índice SDD](..\u002FINDEX_SDD.md).\n\n## {Agrupamento, quando surgir}\n\n**Solicitação**:\nPedido de agendamento de um evento de formação, sujeito à política de aprovação (PA).\n_Model_: `Solicitacao`\n_Evitar_: pedido, requisição\n```\n\nRegras:\n- **Seja opinativo.** Várias palavras para um conceito → escolha uma, liste as outras em `_Evitar_`.\n- **Definição curta.** Uma ou duas frases. Diga o que a coisa *é*, não o que faz.\n- **Só termos deste negócio.** Conceito genérico de programação não entra.\n- `_Model_` só quando existe um model Django correspondente — confira que existe.\n- Atualize `last_verified` e `sources_of_truth` ao conferir termos contra o código.\n\n## ADRs, com parcimônia\n\nOfereça um ADR só quando as três forem verdadeiras:\n\n1. **Difícil de reverter** — mudar de ideia depois custa caro.\n2. **Surpreendente sem contexto** — um leitor futuro vai perguntar \"por que assim?\".\n3. **Resultado de trade-off real** — havia alternativas genuínas.\n\nFaltou uma → sem ADR. A decisão fica na conversa (ou numa spec, se for contrato).\n\n### Numeração\n`docs\u002Farchitecture\u002Fproject-decisions\u002F` e `v2\u002Fdocs\u002Fadr\u002F` **compartilham um espaço de numeração**.\nPróximo número = maior das duas pastas + 1. Depois de criar, rode\n`python v2\u002Fbackend\u002Fscripts\u002Fcheck_adr_numbers.py` e adicione a linha no índice `README.md`.\n\n### Template (o do repo, em pt-BR)\n\n```md\n# ADR-NNN: {Título}\n\n**Status:** Accepted | Deprecated | Superseded by ADR-YYY\n**Date:** AAAA-MM-DD\n**Decider:** {nome}\n\n## Context\n{O problema que levou à decisão}\n\n## Decision\n{O que foi escolhido e por quê}\n\n## Consequences\n{O que muda, o que fica proibido, o que é recomendado}\n\n## References\n{Specs, código, outros ADRs}\n```\n\nUm ADR curto é válido: o valor está em registrar *que* decidiu e *por quê*.\n",{"name":5,"description":7},"main","9e3a882d83e0853bdc570ae9d89c02d2a53bed82",".claude\u002Fskills\u002Fdomain-modeling","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa","Dev Python | IA | Automation | HTML | CSS | Data | Process | Projects","2026-11-11 08:34:26",{"source":8,"skillName":5,"commands":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add matheusnorjosa\u002Faprender_sistema --skill domain-modeling",{"tool":50,"command":51},"bunx","bunx skills add matheusnorjosa\u002Faprender_sistema --skill domain-modeling",{"tool":53,"command":54},"pnpm","pnpm dlx skills add matheusnorjosa\u002Faprender_sistema --skill domain-modeling","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fdomain-modeling\u002FSKILL.md",true,[],[59,98,121,143,153,185],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":75,"publishedAt":32},"01M6C0WHSP7S2QMJGGMQRXJ6PD","writing-standards","Apply AS v2 technical-writing standards (clarity, brevity, active voice, Python\u002FDjango conventions). Use when writing a README, a docstring (PEP 257), a commit message, a PR description, an error message, or any technical doc.","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwriting-standards\u002FSKILL.md",[65,70],{"categoryNo":66,"categoryName":67,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":71,"categoryName":72,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],"writing","writing standards","standards","python","commit","pr","pr description","commit message","doc","voice","clarity","django","technical","README","message","active","as","error","technical-writing","brevity","docstring","when",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":32},"01M6C0WG2SBP9PJG1YQFGGVJAR","verification-gate","Verify before claiming success. Use when about to say something works\u002Fis done, after implementing a feature, after a bugfix, or before pushing — run the proof command and confirm output first.","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fverification-gate\u002FSKILL.md",[],[105,106,107,108,109,110,111,25,112,113,114,115,116,117,118,119,120,97],"verification","verification gate","gate","run","first","verify","command","verify before claiming","say","done","feature","proof","bugfix","output","about","implementing",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":130,"publishedAt":32},"01M6C0WE010G12KH45YZW6M7K5","test-driven-development","Write the failing test before the implementation in AS v2 (pytest + Django\u002FDRF). Use when implementing a feature or fixing a bug, before any production code is written.","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ftest-driven-development\u002FSKILL.md",[127],{"categoryNo":128,"categoryName":129,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000008","测试与质量",[131,132,133,134,135,136,87,137,25,138,139,140,115,92,141,120,97,142],"test","test driven development","development","driven","code","Production","write","bug","implementation","pytest","drf","failing",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":32},"01M6C0WC6Y81XRVBJQSTKA96XQ","subagent-development","Orquestra subagents no AS v2 — decompõe a tarefa em domínios independentes, paraleliza e revisa em 2 estágios. Use ao delegar exploração, implementação ou validação cross-arquivo para acelerar o trabalho e poupar o contexto principal.","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fsubagent-development\u002FSKILL.md",[],[133,150,151,23,152,25,27,92],"subagent","subagent development","subagents",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":32},"01M6C0W9W8D6JJWXW28Q7ZHAC9","security-scan","Automated security scanning for AS v2. Use before commits or when reviewing changes for vulnerabilities. Runs dependency audit (pip-audit, npm audit), secret detection (grep patterns), and code pattern scanning (SQL injection, XSS, eval, pickle, hardcoded secrets). Integrates with project hooks system.","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fsecurity-scan\u002FSKILL.md",[],[160,161,162,163,164,135,165,166,167,168,169,170,171,172,173,174,175,176,25,177,178,179,92,180,181,182,183,184,97],"security","security scan","scan","vulnerabilities","sql","npm","audit","dependency audit","detection","injection","xss","secrets","pip-audit","commits","system","grep","eval","hooks","security scanning","project","with","true","pip","for","changes",{"skillNo":186,"name":187,"nameZh":6,"description":188,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":189,"categories":190,"keywords":194,"publishedAt":32},"01M6C0W7RE3G3C2852YXQKR5J9","resume-handoff","Resume work from a saved handoff document, validating its state against the current codebase before continuing. Use when resuming work from a saved handoff after a context clear or in a new session (path, session name, or GitHub issue).","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fresume-handoff\u002FSKILL.md",[191],{"categoryNo":192,"categoryName":193,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000038","人力资源",[195,196,197,198,199,200,201,202,203,25,204,205,206,207,208,209,210,211,97,212],"handoff","resume handoff","resume","github","state","new session","work","context","session","github issue","issue","document","clear","name","saved","codebase","resuming","new"]