funifier-mcp 0.2.26 → 0.2.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/.cursor/rules/funifier.mdc +38 -41
  2. package/.github/copilot-instructions.md +38 -41
  3. package/AGENTS.md +56 -49
  4. package/README.md +40 -22
  5. package/datasource-funifier-docs/.coverage.json +326 -0
  6. package/datasource-funifier-docs/.validation.json +593 -0
  7. package/datasource-funifier-docs/knowledge/guides/aggregates.md +182 -70
  8. package/datasource-funifier-docs/knowledge/guides/database-access.md +174 -88
  9. package/datasource-funifier-docs/knowledge/guides/java-entities.md +294 -204
  10. package/datasource-funifier-docs/knowledge/guides/java-libraries.md +202 -226
  11. package/datasource-funifier-docs/knowledge/guides/java-managers.md +343 -265
  12. package/datasource-funifier-docs/knowledge/guides/trigger-examples.md +180 -236
  13. package/datasource-funifier-docs/knowledge/guides/triggers-guide.md +273 -191
  14. package/datasource-funifier-docs/knowledge/index.md +4 -1
  15. package/datasource-funifier-docs/knowledge/modules/achievement.md +1126 -28
  16. package/datasource-funifier-docs/knowledge/modules/action-log.md +469 -62
  17. package/datasource-funifier-docs/knowledge/modules/action.md +522 -70
  18. package/datasource-funifier-docs/knowledge/modules/auth.md +718 -69
  19. package/datasource-funifier-docs/knowledge/modules/avatar.md +483 -18
  20. package/datasource-funifier-docs/knowledge/modules/backup.md +603 -25
  21. package/datasource-funifier-docs/knowledge/modules/challenge.md +1048 -220
  22. package/datasource-funifier-docs/knowledge/modules/compact.md +469 -26
  23. package/datasource-funifier-docs/knowledge/modules/competition.md +811 -109
  24. package/datasource-funifier-docs/knowledge/modules/crossword.md +504 -28
  25. package/datasource-funifier-docs/knowledge/modules/csv-data.md +645 -20
  26. package/datasource-funifier-docs/knowledge/modules/custom-object.md +701 -36
  27. package/datasource-funifier-docs/knowledge/modules/database.md +730 -164
  28. package/datasource-funifier-docs/knowledge/modules/folder.md +935 -280
  29. package/datasource-funifier-docs/knowledge/modules/kpi-formulas.md +410 -15
  30. package/datasource-funifier-docs/knowledge/modules/lastmile.md +568 -29
  31. package/datasource-funifier-docs/knowledge/modules/leaderboard.md +595 -126
  32. package/datasource-funifier-docs/knowledge/modules/level.md +536 -54
  33. package/datasource-funifier-docs/knowledge/modules/lottery.md +809 -76
  34. package/datasource-funifier-docs/knowledge/modules/marketplace.md +688 -17
  35. package/datasource-funifier-docs/knowledge/modules/mystery.md +662 -52
  36. package/datasource-funifier-docs/knowledge/modules/notification.md +564 -26
  37. package/datasource-funifier-docs/knowledge/modules/patterns.md +519 -814
  38. package/datasource-funifier-docs/knowledge/modules/player.md +773 -73
  39. package/datasource-funifier-docs/knowledge/modules/point.md +380 -83
  40. package/datasource-funifier-docs/knowledge/modules/public.md +508 -178
  41. package/datasource-funifier-docs/knowledge/modules/question.md +619 -99
  42. package/datasource-funifier-docs/knowledge/modules/quiz.md +565 -120
  43. package/datasource-funifier-docs/knowledge/modules/scheduler.md +1092 -39
  44. package/datasource-funifier-docs/knowledge/modules/security.md +674 -112
  45. package/datasource-funifier-docs/knowledge/modules/staging.md +742 -19
  46. package/datasource-funifier-docs/knowledge/modules/story.md +565 -29
  47. package/datasource-funifier-docs/knowledge/modules/studio-page.md +470 -144
  48. package/datasource-funifier-docs/knowledge/modules/swap.md +552 -84
  49. package/datasource-funifier-docs/knowledge/modules/team.md +563 -45
  50. package/datasource-funifier-docs/knowledge/modules/trigger.md +876 -134
  51. package/datasource-funifier-docs/knowledge/modules/upload.md +468 -95
  52. package/datasource-funifier-docs/knowledge/modules/virtual-good.md +510 -63
  53. package/datasource-funifier-docs/knowledge/modules/webhook.md +375 -28
  54. package/datasource-funifier-docs/knowledge/modules/websocket.md +459 -26
  55. package/datasource-funifier-docs/knowledge/modules/widget.md +613 -27
  56. package/dist/cli/init.d.ts.map +1 -1
  57. package/dist/cli/init.js +42 -1
  58. package/dist/cli/init.js.map +1 -1
  59. package/dist/cli/init.test.js +74 -3
  60. package/dist/cli/init.test.js.map +1 -1
  61. package/dist/cli/persona.d.ts +3 -0
  62. package/dist/cli/persona.d.ts.map +1 -0
  63. package/dist/cli/persona.js +25 -0
  64. package/dist/cli/persona.js.map +1 -0
  65. package/dist/mcp/bundle.js +119 -93
  66. package/dist/mcp/index.js +2 -2
  67. package/dist/mcp/index.js.map +1 -1
  68. package/dist/mcp/resources/documentation.d.ts +1 -1
  69. package/dist/mcp/resources/documentation.d.ts.map +1 -1
  70. package/dist/mcp/resources/documentation.js +39 -3
  71. package/dist/mcp/resources/documentation.js.map +1 -1
  72. package/dist/mcp/tools/connect.d.ts.map +1 -1
  73. package/dist/mcp/tools/connect.js +18 -8
  74. package/dist/mcp/tools/connect.js.map +1 -1
  75. package/dist/mcp/tools/database.d.ts.map +1 -1
  76. package/dist/mcp/tools/database.js +59 -47
  77. package/dist/mcp/tools/database.js.map +1 -1
  78. package/dist/mcp/tools/database.test.js +2 -2
  79. package/dist/mcp/tools/database.test.js.map +1 -1
  80. package/dist/mcp/tools/delete.d.ts.map +1 -1
  81. package/dist/mcp/tools/delete.js +13 -3
  82. package/dist/mcp/tools/delete.js.map +1 -1
  83. package/dist/mcp/tools/execute.d.ts.map +1 -1
  84. package/dist/mcp/tools/execute.js +20 -9
  85. package/dist/mcp/tools/execute.js.map +1 -1
  86. package/dist/mcp/tools/folder.d.ts.map +1 -1
  87. package/dist/mcp/tools/folder.js +22 -12
  88. package/dist/mcp/tools/folder.js.map +1 -1
  89. package/dist/mcp/tools/get.d.ts.map +1 -1
  90. package/dist/mcp/tools/get.js +16 -6
  91. package/dist/mcp/tools/get.js.map +1 -1
  92. package/dist/mcp/tools/index.d.ts +1 -1
  93. package/dist/mcp/tools/index.d.ts.map +1 -1
  94. package/dist/mcp/tools/index.js +3 -1
  95. package/dist/mcp/tools/index.js.map +1 -1
  96. package/dist/mcp/tools/list.d.ts.map +1 -1
  97. package/dist/mcp/tools/list.js +38 -14
  98. package/dist/mcp/tools/list.js.map +1 -1
  99. package/dist/mcp/tools/logs.d.ts.map +1 -1
  100. package/dist/mcp/tools/logs.js +15 -5
  101. package/dist/mcp/tools/logs.js.map +1 -1
  102. package/dist/mcp/tools/save.d.ts.map +1 -1
  103. package/dist/mcp/tools/save.js +14 -4
  104. package/dist/mcp/tools/save.js.map +1 -1
  105. package/dist/mcp/tools/save.test.js +3 -3
  106. package/dist/mcp/tools/save.test.js.map +1 -1
  107. package/dist/mcp/tools/search-docs.d.ts +3 -0
  108. package/dist/mcp/tools/search-docs.d.ts.map +1 -0
  109. package/dist/mcp/tools/search-docs.js +102 -0
  110. package/dist/mcp/tools/search-docs.js.map +1 -0
  111. package/package.json +6 -2
  112. package/skills/acquire-funifier-knowledge/SKILL.md +132 -0
  113. package/skills/acquire-funifier-knowledge/assets/templates/CONCERNS.md +25 -0
  114. package/skills/acquire-funifier-knowledge/assets/templates/CUSTOM_ENDPOINTS.md +24 -0
  115. package/skills/acquire-funifier-knowledge/assets/templates/CUSTOM_PAGES.md +24 -0
  116. package/skills/acquire-funifier-knowledge/assets/templates/GAME_MECHANICS.md +35 -0
  117. package/skills/acquire-funifier-knowledge/assets/templates/INTEGRATIONS.md +35 -0
  118. package/skills/acquire-funifier-knowledge/assets/templates/LEADERBOARDS.md +24 -0
  119. package/skills/acquire-funifier-knowledge/assets/templates/OVERVIEW.md +47 -0
  120. package/skills/acquire-funifier-knowledge/assets/templates/PLAYER_MODEL.md +31 -0
  121. package/skills/acquire-funifier-knowledge/assets/templates/SCHEDULERS.md +25 -0
  122. package/skills/acquire-funifier-knowledge/assets/templates/TECHNIQUES_AND_PATTERNS.md +26 -0
  123. package/skills/acquire-funifier-knowledge/assets/templates/TRIGGERS.md +27 -0
  124. package/skills/acquire-funifier-knowledge/references/funifier-inventory-checklist.md +81 -0
  125. package/skills/acquire-funifier-knowledge/references/game-techniques-taxonomy.md +62 -0
  126. package/skills/acquire-funifier-knowledge/references/mcp-call-patterns.md +118 -0
  127. package/skills/funifier/SKILL.md +88 -0
  128. package/skills/funifier/references/configure-security.md +96 -0
  129. package/skills/{funifier-create-action/SKILL.md → funifier/references/create-action.md} +0 -33
  130. package/skills/funifier/references/create-aggregate.md +144 -0
  131. package/skills/funifier/references/create-challenge.md +116 -0
  132. package/skills/funifier/references/create-competition.md +98 -0
  133. package/skills/funifier/references/create-crossword.md +574 -0
  134. package/skills/funifier/references/create-custom-object.md +91 -0
  135. package/skills/funifier/references/create-custom-page.md +135 -0
  136. package/skills/funifier/references/create-folder.md +104 -0
  137. package/skills/funifier/references/create-lastmile.md +643 -0
  138. package/skills/{funifier-create-leaderboard/SKILL.md → funifier/references/create-leaderboard.md} +0 -33
  139. package/skills/funifier/references/create-level.md +94 -0
  140. package/skills/funifier/references/create-lottery.md +913 -0
  141. package/skills/funifier/references/create-mystery.md +769 -0
  142. package/skills/funifier/references/create-notification.md +75 -0
  143. package/skills/{funifier-create-point/SKILL.md → funifier/references/create-point.md} +0 -33
  144. package/skills/funifier/references/create-quiz.md +98 -0
  145. package/skills/funifier/references/create-scheduler.md +141 -0
  146. package/skills/funifier/references/create-story.md +636 -0
  147. package/skills/funifier/references/create-swap.md +95 -0
  148. package/skills/{funifier-create-trigger/SKILL.md → funifier/references/create-trigger.md} +0 -33
  149. package/skills/funifier/references/create-virtual-good.md +96 -0
  150. package/skills/funifier/references/create-webhook.md +72 -0
  151. package/skills/funifier/references/create-websocket.md +71 -0
  152. package/skills/funifier/references/create-widget.md +76 -0
  153. package/skills/funifier/references/debug.md +87 -0
  154. package/skills/funifier/references/help.md +81 -0
  155. package/skills/funifier/references/implement-frontend.md +106 -0
  156. package/skills/funifier/references/import-csv.md +75 -0
  157. package/skills/funifier/references/manage-player.md +82 -0
  158. package/skills/funifier/references/manage-team.md +76 -0
  159. package/skills/funifier/references/upload-file.md +91 -0
  160. package/skills/funifier-create-aggregate/SKILL.md +0 -127
  161. package/skills/funifier-create-challenge/SKILL.md +0 -88
  162. package/skills/funifier-create-custom-page/SKILL.md +0 -127
  163. package/skills/funifier-create-level/SKILL.md +0 -87
  164. package/skills/funifier-create-quiz/SKILL.md +0 -87
  165. package/skills/funifier-create-scheduler/SKILL.md +0 -127
  166. package/skills/funifier-create-virtual-good/SKILL.md +0 -87
  167. package/skills/funifier-debug/SKILL.md +0 -92
  168. package/skills/funifier-help/SKILL.md +0 -86
  169. package/skills/funifier-implement-frontend/SKILL.md +0 -90
  170. package/skills/funifier-index/SKILL.md +0 -58
@@ -0,0 +1,132 @@
1
+ ---
2
+ name: acquire-funifier-knowledge
3
+ description: Mapeia, documenta e audita uma instância Funifier EXISTENTE via MCP, produzindo documentação completa e rastreável em docs/funifier/ (overview, mecânicas de jogo, triggers, schedulers, endpoints, páginas, leaderboards, modelo de player, integrações, técnicas de jogo e inconsistências). Cada afirmação aponta para o objeto/ID que a sustenta. Use quando o usuário pedir para mapear, documentar, auditar ou fazer onboarding numa instância já configurada — por exemplo "mapeia essa gamificação", "documenta tudo que tem nessa instância Funifier", "preciso entender o que foi configurado aqui", "audita os triggers e schedulers", "map this Funifier instance", "document the gamification setup". NÃO use para criar ou editar elementos novos, debugging pontual de um único objeto, ou perguntas isoladas sobre a plataforma — para criar/editar/debugar use a skill funifier.
4
+ license: CC-BY-4.0
5
+ metadata:
6
+ author: Fernando Viana
7
+ version: 1.0.0
8
+ ---
9
+
10
+ # Acquire Funifier Knowledge
11
+
12
+ Varre uma instância Funifier existente via MCP e produz documentação completa, auditável e rastreável de toda a gamificação configurada. Esta skill é de DESCOBERTA e DOCUMENTAÇÃO — ela lê o estado vivo do servidor e o transcreve em arquivos versionáveis. Ela nunca cria, edita ou deleta nada na instância.
13
+
14
+ ## Quando usar / Quando NÃO usar
15
+
16
+ - **Use** quando o objetivo é entender, mapear ou auditar uma instância já configurada (onboarding num projeto herdado, due diligence, documentação de handover).
17
+ - **NÃO use** para criar/editar/deletar elementos, debugar um único objeto, ou responder uma pergunta pontual sobre a plataforma. Para isso, use a skill `funifier` (`skills/funifier/SKILL.md`), que é a base de conhecimento técnico (semântica de campos, enums, valores corretos).
18
+
19
+ ## Pré-requisitos
20
+
21
+ 1. **MCP Funifier disponível.** Esta skill depende das ferramentas `funifier_*`. Sem elas, pare e peça ao usuário para configurar o MCP.
22
+ 2. **Base de conhecimento técnico.** Para interpretar a semântica de cada objeto (o que significa `range`, `operator`, `limitPerType` num challenge, etc.), consulte a skill `funifier` e seus arquivos `references/`. Nunca aprenda a semântica a partir de um único objeto vivo — os docs são a autoridade.
23
+
24
+ ## Output Contract
25
+
26
+ Produza esta estrutura em `docs/funifier/`. **Nenhum arquivo pode ficar vazio** (use `[TODO]`/`[ASK USER]` quando faltar dado, nunca deixe a seção em branco). Os templates de cada arquivo estão em `assets/templates/`.
27
+
28
+ | Arquivo | Conteúdo |
29
+ |---------|----------|
30
+ | `OVERVIEW.md` | Identificação da instância, contagens agregadas por categoria, data do snapshot, escopo do mapeamento |
31
+ | `GAME_MECHANICS.md` | Pontos, níveis, achievements/badges, challenges, missions, quizzes, virtual goods — com IDs, regras de atribuição e condições |
32
+ | `TRIGGERS.md` | Todos os triggers: nome, ID, entidade/evento de origem, condições, ações, status |
33
+ | `SCHEDULERS.md` | Cron jobs: nome, expressão cron, ação, próxima/última execução conhecida, status |
34
+ | `CUSTOM_ENDPOINTS.md` | Public endpoints em Java/Groovy: rota, método, parâmetros, descrição, status |
35
+ | `CUSTOM_PAGES.md` | Custom pages e widgets: nome, rota, propósito, integrações |
36
+ | `LEADERBOARDS.md` | Rankings: nome, métrica base, escopo, período, regras de empate |
37
+ | `PLAYER_MODEL.md` | Atributos custom de player, segmentações, teams/grupos, propriedades estendidas |
38
+ | `INTEGRATIONS.md` | Webhooks de saída, websockets, auth modules, integrações externas |
39
+ | `TECHNIQUES_AND_PATTERNS.md` | Técnicas de jogos inferidas dos elementos mapeados, com evidência por objeto |
40
+ | `CONCERNS.md` | Inconsistências: triggers órfãos, schedulers desativados, achievements inatingíveis, endpoints sem uso, regras conflitantes |
41
+
42
+ ## Mapeamento documento → fonte MCP (CRÍTICO)
43
+
44
+ O vocabulário de gamificação do usuário **não corresponde 1:1** ao enum de tipos do Funifier. Documentar um tipo que não existe é um erro grave. Use exatamente este mapeamento. Os **18 tipos listáveis** via `funifier_list`/`funifier_get` são: `trigger`, `scheduler`, `aggregate`, `websocket`, `widget`, `custom-page`, `public-endpoint`, `challenge-aggregate`, `auth-module`, `ai-knowledge`, `action`, `challenge`, `point`, `level`, `leaderboard`, `quiz`, `virtual-good-catalog`, `virtual-good-item`.
45
+
46
+ | Documento | Fonte primária (MCP) |
47
+ |-----------|----------------------|
48
+ | `OVERVIEW.md` | Contagem de cada um dos 18 tipos via `funifier_list` + `funifier_database action=collections` |
49
+ | `GAME_MECHANICS.md` | `point`, `level`, `challenge`, `action`, `quiz`, `virtual-good-catalog`, `virtual-good-item`, `challenge-aggregate`, `aggregate` |
50
+ | `TRIGGERS.md` | `trigger` (+ `funifier_logs type=trigger` para saúde de execução) |
51
+ | `SCHEDULERS.md` | `scheduler` (+ `funifier_logs type=scheduler`) |
52
+ | `CUSTOM_ENDPOINTS.md` | `public-endpoint` |
53
+ | `CUSTOM_PAGES.md` | `custom-page`, `widget` |
54
+ | `LEADERBOARDS.md` | `leaderboard` |
55
+ | `PLAYER_MODEL.md` | `funifier_database` (coleções `player`, `team`) + `auth-module` |
56
+ | `INTEGRATIONS.md` | `websocket`, `auth-module`, `ai-knowledge` + coleções de webhook/notification via `funifier_database` + ações HTTP em triggers |
57
+ | `TECHNIQUES_AND_PATTERNS.md` | Inferência cruzada (sem fonte nova; cita IDs já mapeados) |
58
+ | `CONCERNS.md` | Análise cruzada (status `inactive`, órfãos, logs vazios, regras conflitantes) |
59
+
60
+ **Mapeamentos de vocabulário que você DEVE respeitar:**
61
+
62
+ - **"achievements/badges"** — não existe tipo próprio. São `challenge` (regras + recompensas) e/ou `virtual-good-item` (badges como itens de catálogo). Documente em `GAME_MECHANICS.md` e identifique qual mecanismo implementa o quê.
63
+ - **"missions"** — não existe tipo próprio. São cadeias de `challenge` ou hierarquia de learning trail (folder). Registre a suposição com `[ASK USER]` quando a intenção não for óbvia.
64
+ - **"webhooks / integrações de saída"** — não há tipo em `funifier_list`. Devem ser inferidos de coleções via `funifier_database` (ex.: coleção de webhook/notification) e de ações de `trigger` que chamam endpoints externos. `INTEGRATIONS.md` terá legitimamente vários `[TODO]`/`[ASK USER]` — isso é esperado, não um defeito.
65
+ - **Learning trails (folders)** — não são listáveis por `funifier_list`. Use `funifier_folder operation=inside` a partir de um id raiz conhecido, ou `funifier_database`.
66
+
67
+ ## Restrições de ferramentas (read-only — regra dura)
68
+
69
+ Esta é uma auditoria. **Nunca** modifique a instância:
70
+
71
+ - `funifier_database`: use **somente** `action=query`, `action=aggregate`, `action=collections`. NUNCA `insert`/`update`/`delete`/`bulk`.
72
+ - `funifier_folder`: use **somente** `operation=inside` e `operation=breadcrumb`. NUNCA `progress` — ele dispara o trigger `folder_progress` como efeito colateral.
73
+ - NUNCA use `funifier_execute` (roda código no servidor), `funifier_save` ou `funifier_delete`.
74
+ - `funifier_get`: use `mode=read` (inspeção inline, não cria arquivos temporários).
75
+
76
+ **Economia de tokens:** faça o inventário com `funifier_list` (retorna resumo leve) primeiro; só use `funifier_get mode=read` nos objetos que precisam de detalhe (scripts Groovy, regras completas de challenge, pipelines). Não puxe o payload completo de tudo cegamente. Padrões de chamada detalhados em `references/mcp-call-patterns.md`.
77
+
78
+ ## Workflow
79
+
80
+ Avance pelas fases em ordem. As fases 1 e 6 são sempre completas (mesmo em Modo Foco).
81
+
82
+ 1. **Validar conexão e identificar a instância.** Confirme que o MCP responde (uma chamada `funifier_database action=collections` ou um `funifier_list type=trigger limit=1` serve). Registre serverUrl/nome da conexão e a data do snapshot para o `OVERVIEW.md`.
83
+ 2. **Inventário bruto.** Para cada um dos 18 tipos, rode `funifier_list` e registre os IDs e nomes. Rode `funifier_database action=collections` para descobrir coleções que revelam elementos fora do enum (webhooks, notifications, competitions, custom `__c`, player, team). Consulte `references/funifier-inventory-checklist.md` para a lista de perguntas por categoria.
84
+ 3. **Detalhamento.** Para cada objeto que precisa de detalhe, rode `funifier_get mode=read` e extraia as regras, condições e ações. Amostre coleções relevantes com `funifier_database action=query` (limit pequeno) para entender o modelo de player/team.
85
+ 4. **Análise cruzada.** Relacione objetos: qual `trigger` alimenta qual `point`/`challenge`; qual `scheduler` chama qual `public-endpoint`; quais `action`s satisfazem as regras de cada `challenge`; quais `leaderboard`s usam quais `point`s. Anote as relações para `CONCERNS.md` e `TECHNIQUES_AND_PATTERNS.md`.
86
+ 5. **Inferência de técnicas de jogos.** Classifique as técnicas observadas usando `references/game-techniques-taxonomy.md`. Cada técnica DEVE ser ligada aos IDs concretos que a implementam. Sem objeto que a sustente, não afirme a técnica.
87
+ 6. **Validação.** Verifique: (a) cada claim aponta para um ID/objeto; (b) nenhuma seção obrigatória está vazia; (c) todo nome de ferramenta usado existe; (d) nenhum tipo inventado. Veja a checklist no fim deste arquivo.
88
+ 7. **Apresentar.** Mostre um sumário (contagens + onde está cada doc) e uma lista numerada de itens `[ASK USER]` e divergências encontradas, para o usuário resolver.
89
+
90
+ ## Regras de evidência (críticas)
91
+
92
+ - **Toda afirmação aponta para um objeto Funifier identificável** — `_id`, nome único, rota de endpoint, ou nome de coleção. Sem isso, não escreva a afirmação.
93
+ - Use **`[TODO]`** quando o dado existe mas não foi possível obtê-lo via MCP nesta execução (ex.: payload grande demais, coleção não amostrada).
94
+ - Use **`[ASK USER]`** quando a resposta depende de intenção de produto/negócio — ex.: "esse trigger desativado foi intencional?", "essa cadeia de challenges é uma 'mission'?".
95
+ - **Nunca infira comportamento sem um objeto que o sustente.** "Provavelmente dispara X" é proibido; cite a config do trigger e o evento exato.
96
+ - **Toda seção termina com um bloco `## Evidence`** listando os IDs consultados e as chamadas MCP que produziram o conteúdo (ex.: `funifier_list type=trigger`, `funifier_get type=challenge id=...`).
97
+
98
+ ## Modo Foco (Focus Area Mode)
99
+
100
+ Se o usuário pedir foco ("só triggers", "mecânicas e técnicas apenas"):
101
+
102
+ - A **Fase 1** (validar/identificar) roda sempre, completa.
103
+ - Os documentos do foco são preenchidos **completos**.
104
+ - Os demais documentos obrigatórios **existem**, com suas seções presentes mas marcadas `[TODO]` (e uma nota indicando que ficaram fora do escopo desta execução).
105
+ - A **Fase 6** (validação) roda em **todos** os documentos.
106
+
107
+ ## Anti-padrões
108
+
109
+ | ❌ Não fazer | ✅ Fazer |
110
+ |-------------|---------|
111
+ | "Provavelmente este trigger dispara X" | Citar a configuração do trigger e o evento exato (`entity`/`event`) registrado |
112
+ | Inferir técnica de jogo sem objeto que a implemente | Linkar cada técnica a IDs concretos no Funifier |
113
+ | Documentar objetos com `status: inactive` como se estivessem ativos | Marcar o status explicitamente; mover para `CONCERNS.md` se órfão |
114
+ | Confundir achievement com challenge ou mission | Respeitar a tipagem do Funifier; cada categoria no seu doc |
115
+ | Inventar um tipo (ex.: tratar "webhook" como `funifier_list type=webhook`) | Usar só os 18 tipos reais; inferir o resto de coleções e ações |
116
+ | Modificar a instância para "testar" um comportamento | Apenas ler; nunca `save`/`delete`/`execute`/`insert`/`update` |
117
+
118
+ ## Quando ler cada arquivo de referência
119
+
120
+ - `references/funifier-inventory-checklist.md` — na **Fase 2**, para garantir que nenhuma categoria de objeto foi esquecida.
121
+ - `references/mcp-call-patterns.md` — nas **Fases 2–4**, para os padrões corretos de chamada de cada ferramenta MCP.
122
+ - `references/game-techniques-taxonomy.md` — na **Fase 5**, para classificar as técnicas com vocabulário consistente.
123
+
124
+ ## Checklist de validação (Fase 6)
125
+
126
+ - [ ] Os 11 arquivos existem em `docs/funifier/` e nenhum está vazio.
127
+ - [ ] Cada afirmação aponta para um ID/objeto/coleção identificável.
128
+ - [ ] Todo objeto com status conhecido tem o status registrado.
129
+ - [ ] Nenhum tipo inventado — só os 18 tipos reais + coleções via `funifier_database`.
130
+ - [ ] Cada documento termina com um bloco `## Evidence`.
131
+ - [ ] Itens dependentes de intenção estão marcados `[ASK USER]`, não adivinhados.
132
+ - [ ] Nenhuma ferramenta de escrita foi usada (`save`/`delete`/`execute`/`insert`/`update`/`bulk`/`folder progress`).
@@ -0,0 +1,25 @@
1
+ # Funifier — Inconsistências e Concerns
2
+
3
+ > Achados de auditoria. Cada item aponta para o(s) objeto(s) envolvido(s) por ID. Distinga fato observado (`[FATO]`) de pergunta de intenção (`[ASK USER]`).
4
+
5
+ ## Core (Obrigatório)
6
+
7
+ | # | Tipo de problema | Objeto(s) (ID) | Observação | Severidade | Ação sugerida |
8
+ |---|------------------|----------------|------------|------------|---------------|
9
+ | 1 | {{trigger órfão / scheduler off / achievement inatingível / endpoint sem uso / regra conflitante}} | {{ids}} | {{o que se observou}} | {{baixa/média/alta}} | {{verificar/remover/ajustar | [ASK USER]}} |
10
+
11
+ ### Categorias a verificar
12
+ - **Triggers órfãos:** ativos mas sem logs de execução, ou referenciam action/point inexistente.
13
+ - **Schedulers desativados:** `active: false` que parecem importantes.
14
+ - **Achievements inatingíveis:** challenges com regra impossível ou action que não existe.
15
+ - **Endpoints sem uso:** public-endpoints não chamados por scheduler/trigger/página.
16
+ - **Regras conflitantes:** dois objetos com efeitos contraditórios (ex.: dois triggers no mesmo evento creditando o mesmo point).
17
+ - **Métricas órfãs:** points/levels sem leaderboard ou challenge que os utilize.
18
+
19
+ ## Extended (Opcional)
20
+ - Riscos de manutenção (scripts longos, lógica duplicada entre triggers).
21
+ - Itens que dependem de confirmação de intenção do usuário (consolidar os `[ASK USER]`).
22
+
23
+ ## Evidence
24
+ - `funifier_logs type=trigger|scheduler id=<...>` (para silêncio/erros)
25
+ - Referências cruzadas das Fases 3–4 (qual objeto referencia qual)
@@ -0,0 +1,24 @@
1
+ # Funifier — Custom Endpoints
2
+
3
+ > Public endpoints em Java/Groovy. Endpoint sem chamador aparente (scheduler/trigger/página) → `CONCERNS.md`.
4
+
5
+ ## Core (Obrigatório)
6
+
7
+ | _id | Rota | Método | Parâmetros esperados | Descrição | Status |
8
+ |-----|------|--------|----------------------|-----------|--------|
9
+ | {{id}} | {{/rota}} | {{GET/POST/...}} | {{params}} | {{o que retorna/faz}} | {{ativo?}} |
10
+
11
+ ### Detalhe por endpoint (quando relevante)
12
+ **{{title}}** (`{{_id}}`)
13
+ - Rota / método: `{{método}} {{rota}}`
14
+ - Entrada: {{parâmetros e formato}}
15
+ - Saída / efeito: {{resumo do script}}
16
+ - Consumido por: {{página/scheduler/trigger/sistema externo | [TODO]}}
17
+
18
+ ## Extended (Opcional)
19
+ - Autenticação exigida (público vs. token).
20
+ - Endpoints que escrevem em coleções (efeitos colaterais).
21
+
22
+ ## Evidence
23
+ - `funifier_list type=public-endpoint`
24
+ - `funifier_get mode=read type=public-endpoint id=<...>`
@@ -0,0 +1,24 @@
1
+ # Funifier — Custom Pages e Widgets
2
+
3
+ > Páginas custom (Studio) e widgets embutíveis. Documente qual endpoint/aggregate cada um consome.
4
+
5
+ ## Core (Obrigatório)
6
+
7
+ ### Custom pages
8
+ | _id | title | Rota | Propósito | Integrações (endpoints/aggregates) |
9
+ |-----|-------|------|-----------|-------------------------------------|
10
+ | {{id}} | {{título}} | {{rota}} | {{para quê serve}} | {{refs}} |
11
+
12
+ ### Widgets
13
+ | _id | title | Propósito | Onde é embutido |
14
+ |-----|-------|-----------|-----------------|
15
+ | {{id}} | {{título}} | {{ranking/status/loja/...}} | {{intranet/CRM/LMS/... | [TODO]}} |
16
+
17
+ ## Extended (Opcional)
18
+ - Tecnologia da página (AngularJS + Bootstrap, etc.), se relevante.
19
+ - Páginas/widgets órfãos (sem rota de acesso aparente) → também citar em `CONCERNS.md`.
20
+
21
+ ## Evidence
22
+ - `funifier_list type=custom-page`
23
+ - `funifier_list type=widget`
24
+ - `funifier_get mode=read type=custom-page id=<...>`
@@ -0,0 +1,35 @@
1
+ # Funifier — Mecânicas de Jogo
2
+
3
+ > "achievements/badges" = `challenge` e/ou `virtual-good-item` (não há tipo próprio). "missions" = cadeias de challenge ou learning trail — marque `[ASK USER]`.
4
+
5
+ ## Core (Obrigatório)
6
+
7
+ ### Pontos (point categories)
8
+ | _id | category | shortName | Tipo (XP/moeda/interna) |
9
+ |-----|----------|-----------|-------------------------|
10
+ | {{id}} | {{category}} | {{short}} | {{tipo}} |
11
+
12
+ ### Níveis (levels)
13
+ | _id | level | position | minPoints | Categoria de ponto |
14
+ |-----|-------|----------|-----------|--------------------|
15
+ | {{id}} | {{nome}} | {{pos}} | {{min}} | {{point}} |
16
+
17
+ ### Challenges / Achievements
18
+ | _id | challenge | Regras (resumo) | Recompensas | Status |
19
+ |-----|-----------|-----------------|-------------|--------|
20
+ | {{id}} | {{nome}} | {{condições}} | {{points/itens}} | {{ativo?}} |
21
+
22
+ ### Actions (comportamentos rastreáveis)
23
+ | _id | action | Atributos | Usada por (challenge/trigger) |
24
+ |-----|--------|-----------|-------------------------------|
25
+ | {{id}} | {{action}} | {{attrs}} | {{refs}} |
26
+
27
+ ## Extended (Opcional)
28
+ - **Quizzes:** {{_id, title, grade}} — `[TODO]` se não houver.
29
+ - **Virtual goods:** catálogos e itens ({{_id, amount, active}}), indicando quais são badges.
30
+ - **Missions:** cadeias de challenge identificadas — `[ASK USER]` para confirmar intenção.
31
+ - **Aggregates:** pipelines que alimentam relatórios/dashboards de mecânicas.
32
+
33
+ ## Evidence
34
+ - `funifier_list type=point|level|challenge|action|quiz|virtual-good-catalog|virtual-good-item`
35
+ - `funifier_get mode=read type=challenge id=<...>` (para regras completas)
@@ -0,0 +1,35 @@
1
+ # Funifier — Integrações
2
+
3
+ > Webhooks de saída não têm tipo em `funifier_list` — inferir de coleções (`funifier_database`) e de ações HTTP em triggers. É esperado e correto que este doc tenha vários `[TODO]`/`[ASK USER]`.
4
+
5
+ ## Core (Obrigatório)
6
+
7
+ ### Websockets
8
+ | _id | title | Propósito | Status |
9
+ |-----|-------|-----------|--------|
10
+ | {{id}} | {{título}} | {{live update/chat/...}} | {{ativo?}} |
11
+
12
+ ### Webhooks de saída
13
+ Fonte: coleção descoberta via `funifier_database action=collections` (ex.: `webhook`/`notification`).
14
+
15
+ | Destino | Evento de origem | Coleção/fonte | Autenticação | Status |
16
+ |---------|------------------|---------------|--------------|--------|
17
+ | {{URL/sistema}} | {{evento}} | {{collection}} | {{tipo | [TODO]}} | {{ativo? | [TODO]}} |
18
+
19
+ ### Integrações via trigger
20
+ Triggers cujo script chama URLs externas (descobertos no detalhamento):
21
+
22
+ | Trigger _id | Chama | Quando |
23
+ |-------------|-------|--------|
24
+ | {{id}} | {{URL/serviço externo}} | {{entity/event}} |
25
+
26
+ ## Extended (Opcional)
27
+ - Auth modules que integram com IdP externo.
28
+ - `ai-knowledge` configurado (bases de conhecimento de IA).
29
+ - Integrações citadas pelo usuário mas não verificáveis via MCP → `[ASK USER]`.
30
+
31
+ ## Evidence
32
+ - `funifier_list type=websocket`
33
+ - `funifier_list type=auth-module`
34
+ - `funifier_list type=ai-knowledge`
35
+ - `funifier_database action=collections`
@@ -0,0 +1,24 @@
1
+ # Funifier — Leaderboards
2
+
3
+ > Rankings configurados. Cite a métrica base por ID (qual `point`/action/atributo). Leaderboard sobre um point inexistente → `CONCERNS.md`.
4
+
5
+ ## Core (Obrigatório)
6
+
7
+ | _id | title | Métrica base | Escopo | Período | Regra de empate |
8
+ |-----|-------|--------------|--------|---------|-----------------|
9
+ | {{id}} | {{título}} | {{point/action/attr + id}} | {{global/segmentado}} | {{período}} | {{regra | [TODO]}} |
10
+
11
+ ### Detalhe por leaderboard (quando relevante)
12
+ **{{title}}** (`{{_id}}`)
13
+ - Métrica: {{categoria de ponto / action / atributo}} (`{{id da métrica}}`)
14
+ - Escopo: {{global | por team | por segmento}}
15
+ - Janela de tempo: {{contínuo | semanal | mensal | ...}}
16
+ - Critério de desempate: {{descrição | [TODO]}}
17
+
18
+ ## Extended (Opcional)
19
+ - Leaderboards alimentados por aggregates específicos.
20
+ - Relação com competições (ranking always-on vs. contest com data de fim).
21
+
22
+ ## Evidence
23
+ - `funifier_list type=leaderboard`
24
+ - `funifier_get mode=read type=leaderboard id=<...>`
@@ -0,0 +1,47 @@
1
+ # Funifier — Overview da Instância
2
+
3
+ > Snapshot gerado pela skill `acquire-funifier-knowledge`. Substitua todos os `{{...}}`. Não deixe seções vazias — use `[TODO]`/`[ASK USER]`.
4
+
5
+ ## Core (Obrigatório)
6
+
7
+ ### Identificação
8
+ - **Instância:** {{nome/serverUrl}}
9
+ - **Data do snapshot:** {{YYYY-MM-DD}}
10
+ - **Escopo do mapeamento:** {{completo | foco em <área>}}
11
+
12
+ ### Contagens agregadas
13
+ Contagem por tipo listável (preencha 0 quando não houver — não omita):
14
+
15
+ | Tipo | Qtde |
16
+ |------|------|
17
+ | trigger | {{n}} |
18
+ | scheduler | {{n}} |
19
+ | action | {{n}} |
20
+ | challenge | {{n}} |
21
+ | point | {{n}} |
22
+ | level | {{n}} |
23
+ | leaderboard | {{n}} |
24
+ | quiz | {{n}} |
25
+ | virtual-good-catalog | {{n}} |
26
+ | virtual-good-item | {{n}} |
27
+ | public-endpoint | {{n}} |
28
+ | custom-page | {{n}} |
29
+ | widget | {{n}} |
30
+ | websocket | {{n}} |
31
+ | aggregate | {{n}} |
32
+ | challenge-aggregate | {{n}} |
33
+ | auth-module | {{n}} |
34
+ | ai-knowledge | {{n}} |
35
+
36
+ ### Elementos fora do enum (via coleções)
37
+ | Elemento | Coleção | Qtde aprox. |
38
+ |----------|---------|-------------|
39
+ | {{webhook/notification/competition/...}} | {{collection}} | {{n}} |
40
+
41
+ ## Extended (Opcional)
42
+ - Versão/plano da instância, se conhecido.
43
+ - Principais áreas funcionais identificadas (resumo de 2-3 linhas).
44
+
45
+ ## Evidence
46
+ - `funifier_list type=<cada um dos 18 tipos>`
47
+ - `funifier_database action=collections`
@@ -0,0 +1,31 @@
1
+ # Funifier — Modelo de Player
2
+
3
+ > Derivado de amostragem das coleções `player`/`team` (read-only) e dos auth modules. Não invente atributos — liste só os que aparecem nos documentos amostrados. Intenção de negócio → `[ASK USER]`.
4
+
5
+ ## Core (Obrigatório)
6
+
7
+ ### Atributos custom de player
8
+ Campos além dos padrão observados na amostra de `collection=player`:
9
+
10
+ | Campo | Tipo observado | Exemplo (anonimizado) | Propósito inferido |
11
+ |-------|----------------|-----------------------|--------------------|
12
+ | {{campo}} | {{string/number/bool/...}} | {{ex}} | {{para quê | [ASK USER]}} |
13
+
14
+ ### Segmentações / Teams
15
+ | Segmentação | Fonte (campo/coleção) | Valores observados |
16
+ |-------------|-----------------------|--------------------|
17
+ | {{team/hierarquia/extra}} | {{collection.field}} | {{valores}} |
18
+
19
+ ### Auth modules
20
+ | _id | title | Propósito | Status |
21
+ |-----|-------|-----------|--------|
22
+ | {{id}} | {{título}} | {{login/SSO/...}} | {{ativo?}} |
23
+
24
+ ## Extended (Opcional)
25
+ - Volume aproximado de players (via `funifier_database`).
26
+ - Propriedades estendidas usadas por challenges/leaderboards como filtro.
27
+
28
+ ## Evidence
29
+ - `funifier_database action=query collection=player limit=3`
30
+ - `funifier_database action=query collection=team limit=5`
31
+ - `funifier_list type=auth-module`
@@ -0,0 +1,25 @@
1
+ # Funifier — Schedulers
2
+
3
+ > Tarefas agendadas (cron, Groovy). Scheduler `active: false` que parece importante → `CONCERNS.md` + `[ASK USER]`.
4
+
5
+ ## Core (Obrigatório)
6
+
7
+ | _id | name | cron | Ação executada | Última execução | Status |
8
+ |-----|------|------|----------------|-----------------|--------|
9
+ | {{id}} | {{nome}} | {{expr cron}} | {{o que faz}} | {{via funifier_logs | [TODO]}} | {{active?}} |
10
+
11
+ ### Detalhe por scheduler (quando relevante)
12
+ **{{name}}** (`{{_id}}`)
13
+ - Cron: `{{expressão}}` ({{interpretação em linguagem natural}})
14
+ - O que faz: {{resumo do script}}
15
+ - Chama endpoint/coleção: {{refs, se houver}}
16
+ - Saúde: {{logs recentes? erros? | [TODO]}}
17
+
18
+ ## Extended (Opcional)
19
+ - Próxima execução estimada (se derivável do cron).
20
+ - Schedulers que dependem de dados produzidos por triggers/aggregates.
21
+
22
+ ## Evidence
23
+ - `funifier_list type=scheduler`
24
+ - `funifier_get mode=read type=scheduler id=<...>`
25
+ - `funifier_logs type=scheduler id=<...>`
@@ -0,0 +1,26 @@
1
+ # Funifier — Técnicas e Padrões de Jogo
2
+
3
+ > Inferência cruzada — NÃO introduz dados novos. Cada técnica afirmada DEVE listar os IDs que a implementam. Sem objeto que a sustente, a técnica está ausente. Use a taxonomia em `references/game-techniques-taxonomy.md`.
4
+
5
+ ## Core (Obrigatório)
6
+
7
+ Para cada técnica presente, use este formato:
8
+
9
+ ### {{Nome da técnica}}
10
+ {{Presente | Parcial | Ausente}}. {{Como é implementada nesta instância}}
11
+ - {{Objeto e ID que implementa}}
12
+ - {{Objeto e ID que implementa}}
13
+
14
+ (Repita para cada técnica observada: loops de feedback, progressão, competição, colaboração, recompensas/economia, conquistas/status, escassez/urgência, surpresa/sorte, narrativa, onboarding.)
15
+
16
+ ### Técnicas ausentes (notáveis)
17
+ Liste técnicas comuns que NÃO foram encontradas, se relevante para o diagnóstico — ex.: "Colaboração: ausente — nenhum team ou challenge coletivo configurado."
18
+
19
+ ## Extended (Opcional)
20
+ - Padrões de design observados (ex.: signup flow, daily streak) com os triggers/schedulers que os compõem.
21
+ - Lacunas: técnicas iniciadas mas incompletas (ex.: points sem leaderboard que os exiba).
22
+
23
+ ## Evidence
24
+ Liste, por técnica, as chamadas/IDs que sustentam a inferência. Ex.:
25
+ - Progressão → `funifier_list type=level`; `funifier_get type=point id=<...>`
26
+ - Competição → `funifier_list type=leaderboard`
@@ -0,0 +1,27 @@
1
+ # Funifier — Triggers
2
+
3
+ > Eventos que disparam ações server-side (Groovy). Não escreva "provavelmente dispara X" — cite `entity`/`event` exatos. Trigger ativo sem logs → mova para `CONCERNS.md`.
4
+
5
+ ## Core (Obrigatório)
6
+
7
+ | _id | name | entity | event | Condições | Ações executadas | Status |
8
+ |-----|------|--------|-------|-----------|------------------|--------|
9
+ | {{id}} | {{nome}} | {{entity}} | {{event}} | {{condições do script}} | {{o que faz}} | {{ativo/inativo}} |
10
+
11
+ ### Detalhe por trigger (quando relevante)
12
+ Para triggers com lógica não-trivial, documente o resumo do script:
13
+
14
+ **{{name}}** (`{{_id}}`)
15
+ - Origem: `{{entity}}` / `{{event}}`
16
+ - O que faz: {{resumo do comportamento, baseado no script Groovy}}
17
+ - Objetos afetados: {{point/challenge/coleção que ele toca}}
18
+ - Última execução conhecida: {{timestamp via funifier_logs | [TODO]}}
19
+
20
+ ## Extended (Opcional)
21
+ - Triggers agrupados por evento de origem.
22
+ - Dependências entre triggers (um cria um log que outro consome).
23
+
24
+ ## Evidence
25
+ - `funifier_list type=trigger`
26
+ - `funifier_get mode=read type=trigger id=<...>`
27
+ - `funifier_logs type=trigger id=<...>`
@@ -0,0 +1,81 @@
1
+ # Checklist de inventário Funifier
2
+
3
+ Use na Fase 2 para garantir cobertura. Para cada categoria, faça a chamada MCP indicada e responda as perguntas. Marque `[TODO]` se a chamada falhar e `[ASK USER]` se a resposta depender de intenção de negócio. Cada categoria indica em qual documento o resultado entra.
4
+
5
+ ## Mecânicas de jogo → `GAME_MECHANICS.md`
6
+
7
+ **Pontos** (`funifier_list type=point`)
8
+ - Quantas categorias de ponto existem? Quais `category` e `shortName`?
9
+ - Cada categoria é XP, moeda resgatável, ou métrica interna?
10
+
11
+ **Níveis** (`funifier_list type=level`)
12
+ - Quantos níveis? Qual `minPoints` e `position` de cada um?
13
+ - A qual categoria de ponto a progressão está atrelada?
14
+
15
+ **Challenges / achievements** (`funifier_list type=challenge` → `funifier_get mode=read`)
16
+ - Quantos challenges? Quais regras (`rules`) e recompensas (`points`) de cada um?
17
+ - Algum é inatingível (regra impossível, ação inexistente)? → `CONCERNS.md`
18
+ - Há cadeias que representam "missions"? → marque `[ASK USER]`
19
+
20
+ **Actions** (`funifier_list type=action`)
21
+ - Quais comportamentos rastreáveis existem? Quais `attributes`?
22
+ - Alguma action está definida mas não é referenciada por nenhum challenge/trigger? → `CONCERNS.md`
23
+
24
+ **Quizzes** (`funifier_list type=quiz`)
25
+ - Quantos quizzes? Qual o critério de aprovação (`grade`)?
26
+
27
+ **Virtual goods** (`funifier_list type=virtual-good-catalog` e `type=virtual-good-item`)
28
+ - Quais catálogos e itens? Itens `active`? Preço (`amount`) e categoria de ponto usada?
29
+ - Algum item funciona como badge (recompensa simbólica)?
30
+
31
+ **Aggregates** (`funifier_list type=aggregate`, `type=challenge-aggregate`)
32
+ - Quais pipelines alimentam dashboards/relatórios? Sobre qual `collection`?
33
+
34
+ ## Triggers → `TRIGGERS.md`
35
+
36
+ `funifier_list type=trigger` → `funifier_get mode=read` nos relevantes → `funifier_logs type=trigger`
37
+ - Para cada trigger: `name`, `_id`, `entity`, `event`, `status`.
38
+ - Quais condições e quais ações executa (resumo do script Groovy)?
39
+ - Está ativo? Tem logs de execução recentes? → silêncio = `CONCERNS.md`
40
+
41
+ ## Schedulers → `SCHEDULERS.md`
42
+
43
+ `funifier_list type=scheduler` → `funifier_get mode=read` → `funifier_logs type=scheduler`
44
+ - Para cada scheduler: `name`, `_id`, expressão `cron`, `active`/`status`.
45
+ - Qual ação executa? Última execução conhecida (via logs)?
46
+ - Está `active: false` mas parece importante? → `CONCERNS.md` + `[ASK USER]`
47
+
48
+ ## Custom endpoints → `CUSTOM_ENDPOINTS.md`
49
+
50
+ `funifier_list type=public-endpoint` → `funifier_get mode=read`
51
+ - Para cada endpoint: rota, método, parâmetros esperados, descrição, status.
52
+ - Algum endpoint não é chamado por nenhum scheduler/trigger/página? → `CONCERNS.md`
53
+
54
+ ## Custom pages e widgets → `CUSTOM_PAGES.md`
55
+
56
+ `funifier_list type=custom-page` e `type=widget`
57
+ - Para cada um: `title`, rota, propósito, integrações (quais endpoints/aggregates consome).
58
+
59
+ ## Leaderboards → `LEADERBOARDS.md`
60
+
61
+ `funifier_list type=leaderboard` → `funifier_get mode=read`
62
+ - Para cada ranking: nome, métrica base (qual `point`/action/atributo), escopo (global/segmentado), período, regra de empate.
63
+
64
+ ## Modelo de player → `PLAYER_MODEL.md`
65
+
66
+ `funifier_database action=query collection=player limit=3` (amostra) + `funifier_list type=auth-module`
67
+ - Quais atributos custom aparecem nos documentos de player (campos além dos padrão)?
68
+ - Há segmentações (`team`, hierarquia, extras)? Amostre `collection=team`.
69
+ - Quais auth modules estão configurados?
70
+
71
+ ## Integrações → `INTEGRATIONS.md`
72
+
73
+ `funifier_list type=websocket`, `type=ai-knowledge` + `funifier_database action=collections`
74
+ - Há websockets configurados? Para quê?
75
+ - Existe coleção de webhook/notification? Quais destinos externos?
76
+ - Há triggers cujo script chama URLs externas? (descoberto no detalhamento)
77
+ - Auth/integração externa configurada? → muitos itens aqui serão `[TODO]`/`[ASK USER]`.
78
+
79
+ ## Cobertura final
80
+
81
+ Antes de sair da Fase 2, confirme que rodou `funifier_list` para **todos os 18 tipos** e `funifier_database action=collections` ao menos uma vez. Qualquer tipo com zero resultados deve ser registrado no `OVERVIEW.md` como contagem 0 (não omitido).
@@ -0,0 +1,62 @@
1
+ # Taxonomia de técnicas de jogos
2
+
3
+ Use na Fase 5 para classificar as técnicas observadas com vocabulário consistente. **Regra de ouro:** uma técnica só pode ser afirmada se houver um ou mais objetos Funifier concretos que a implementem. Para cada técnica que você reportar em `TECHNIQUES_AND_PATTERNS.md`, liste os IDs que a sustentam. Se não há objeto, a técnica não está presente — não a invente.
4
+
5
+ ## Como classificar
6
+
7
+ Para cada técnica abaixo, pergunte: "Quais objetos mapeados (com ID) implementam isto?" Se a resposta for vazia, marque a técnica como **ausente** (ou omita). Se houver evidência parcial, marque `[ASK USER]` para confirmar a intenção.
8
+
9
+ ## Catálogo de técnicas
10
+
11
+ ### Loops de feedback (feedback loops)
12
+ Resposta imediata a uma ação do jogador.
13
+ - **Evidência típica:** `trigger` que credita `point` ao registrar uma `action`; notificações `on_win`; widgets de status que atualizam.
14
+ - **Sinal de ausência:** actions registradas sem nenhum trigger/point reagindo.
15
+
16
+ ### Progressão (progression)
17
+ Senso de avanço ao longo do tempo.
18
+ - **Evidência típica:** `level` com `minPoints` crescentes; learning trail (folder) com desbloqueio condicional; cadeias de `challenge`.
19
+
20
+ ### Competição (competition)
21
+ Comparação de desempenho entre jogadores.
22
+ - **Evidência típica:** `leaderboard` (global ou segmentado); competições com prêmio por posição; ranking por `team`.
23
+
24
+ ### Colaboração (collaboration)
25
+ Objetivos coletivos.
26
+ - **Evidência típica:** `team`/grupos no modelo de player; challenges com `limitPerType=team`; leaderboards de time.
27
+
28
+ ### Recompensas e economia (rewards & economy)
29
+ Incentivos tangíveis e moeda interna.
30
+ - **Evidência típica:** `point` resgatável; `virtual-good-catalog`/`virtual-good-item`; mecânicas de troca/loja.
31
+
32
+ ### Conquistas e status (achievement & status)
33
+ Marcos simbólicos.
34
+ - **Evidência típica:** `challenge` de conclusão única; itens-badge no catálogo; títulos por nível.
35
+
36
+ ### Escassez e urgência (scarcity & urgency)
37
+ Tempo ou quantidade limitados.
38
+ - **Evidência típica:** challenges com janela de tempo (`limitTimeScale`); competições com data de fim; `scheduler` que abre/fecha temporadas.
39
+
40
+ ### Surpresa e sorte (surprise & chance)
41
+ Recompensa aleatória.
42
+ - **Evidência típica:** mystery box / sorteios (descobertos via `funifier_database`, fora do enum de `funifier_list`).
43
+
44
+ ### Narrativa (narrative)
45
+ Contexto de história que dá sentido às ações.
46
+ - **Evidência típica:** interactive story; nomenclatura temática de challenges/folders; conteúdo de páginas custom.
47
+
48
+ ### Onboarding e tutorial
49
+ Condução dos primeiros passos.
50
+ - **Evidência típica:** trigger no evento de cadastro/primeiro login; primeira etapa de uma learning trail; challenge introdutório.
51
+
52
+ ## Bloco de evidência por técnica
53
+
54
+ Em `TECHNIQUES_AND_PATTERNS.md`, formate cada técnica assim:
55
+
56
+ ```
57
+ ### Progressão
58
+ Presente. Implementada por:
59
+ - Níveis L1–L5 (level _id: lvl_01..lvl_05), atrelados à categoria de ponto "xp" (point _id: pts_xp).
60
+ - Trilha "Onboarding" (folder root: fld_onboarding) com desbloqueio sequencial.
61
+ Evidence: funifier_list type=level; funifier_get type=point id=pts_xp; funifier_folder operation=inside folder=fld_onboarding
62
+ ```