funifier-mcp 0.2.25 → 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 (211) 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 +5 -2
  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 +1011 -77
  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/core/api-client.d.ts +21 -1
  66. package/dist/core/api-client.d.ts.map +1 -1
  67. package/dist/core/api-client.js +154 -1
  68. package/dist/core/api-client.js.map +1 -1
  69. package/dist/core/constants.d.ts +14 -0
  70. package/dist/core/constants.d.ts.map +1 -1
  71. package/dist/core/constants.js +14 -0
  72. package/dist/core/constants.js.map +1 -1
  73. package/dist/core/types/Folder.d.ts +16 -0
  74. package/dist/core/types/Folder.d.ts.map +1 -0
  75. package/dist/core/types/Folder.js +3 -0
  76. package/dist/core/types/Folder.js.map +1 -0
  77. package/dist/core/types/FolderContent.d.ts +10 -0
  78. package/dist/core/types/FolderContent.d.ts.map +1 -0
  79. package/dist/core/types/FolderContent.js +3 -0
  80. package/dist/core/types/FolderContent.js.map +1 -0
  81. package/dist/core/types/FolderContentType.d.ts +10 -0
  82. package/dist/core/types/FolderContentType.d.ts.map +1 -0
  83. package/dist/core/types/FolderContentType.js +3 -0
  84. package/dist/core/types/FolderContentType.js.map +1 -0
  85. package/dist/core/types/FolderLog.d.ts +11 -0
  86. package/dist/core/types/FolderLog.d.ts.map +1 -0
  87. package/dist/core/types/FolderLog.js +3 -0
  88. package/dist/core/types/FolderLog.js.map +1 -0
  89. package/dist/core/types/index.d.ts +4 -0
  90. package/dist/core/types/index.d.ts.map +1 -1
  91. package/dist/core/types/index.js +4 -0
  92. package/dist/core/types/index.js.map +1 -1
  93. package/dist/mcp/bundle.js +121 -87
  94. package/dist/mcp/check-update.d.ts +2 -0
  95. package/dist/mcp/check-update.d.ts.map +1 -0
  96. package/dist/mcp/check-update.js +44 -0
  97. package/dist/mcp/check-update.js.map +1 -0
  98. package/dist/mcp/index.js +5 -2
  99. package/dist/mcp/index.js.map +1 -1
  100. package/dist/mcp/resources/documentation.d.ts +1 -1
  101. package/dist/mcp/resources/documentation.d.ts.map +1 -1
  102. package/dist/mcp/resources/documentation.js +39 -3
  103. package/dist/mcp/resources/documentation.js.map +1 -1
  104. package/dist/mcp/tools/_char-guard.js +1 -1
  105. package/dist/mcp/tools/_char-guard.js.map +1 -1
  106. package/dist/mcp/tools/_fetch-current.d.ts +1 -1
  107. package/dist/mcp/tools/_fetch-current.d.ts.map +1 -1
  108. package/dist/mcp/tools/_fetch-current.js +12 -0
  109. package/dist/mcp/tools/_fetch-current.js.map +1 -1
  110. package/dist/mcp/tools/connect.d.ts.map +1 -1
  111. package/dist/mcp/tools/connect.js +18 -8
  112. package/dist/mcp/tools/connect.js.map +1 -1
  113. package/dist/mcp/tools/database.d.ts.map +1 -1
  114. package/dist/mcp/tools/database.js +59 -47
  115. package/dist/mcp/tools/database.js.map +1 -1
  116. package/dist/mcp/tools/database.test.js +2 -2
  117. package/dist/mcp/tools/database.test.js.map +1 -1
  118. package/dist/mcp/tools/delete.d.ts.map +1 -1
  119. package/dist/mcp/tools/delete.js +33 -3
  120. package/dist/mcp/tools/delete.js.map +1 -1
  121. package/dist/mcp/tools/execute.d.ts.map +1 -1
  122. package/dist/mcp/tools/execute.js +20 -9
  123. package/dist/mcp/tools/execute.js.map +1 -1
  124. package/dist/mcp/tools/folder.d.ts +4 -0
  125. package/dist/mcp/tools/folder.d.ts.map +1 -0
  126. package/dist/mcp/tools/folder.js +68 -0
  127. package/dist/mcp/tools/folder.js.map +1 -0
  128. package/dist/mcp/tools/get.d.ts.map +1 -1
  129. package/dist/mcp/tools/get.js +16 -6
  130. package/dist/mcp/tools/get.js.map +1 -1
  131. package/dist/mcp/tools/index.d.ts +1 -1
  132. package/dist/mcp/tools/index.d.ts.map +1 -1
  133. package/dist/mcp/tools/index.js +5 -1
  134. package/dist/mcp/tools/index.js.map +1 -1
  135. package/dist/mcp/tools/list.d.ts.map +1 -1
  136. package/dist/mcp/tools/list.js +38 -14
  137. package/dist/mcp/tools/list.js.map +1 -1
  138. package/dist/mcp/tools/logs.d.ts.map +1 -1
  139. package/dist/mcp/tools/logs.js +15 -5
  140. package/dist/mcp/tools/logs.js.map +1 -1
  141. package/dist/mcp/tools/save.d.ts.map +1 -1
  142. package/dist/mcp/tools/save.js +26 -4
  143. package/dist/mcp/tools/save.js.map +1 -1
  144. package/dist/mcp/tools/save.test.js +192 -1
  145. package/dist/mcp/tools/save.test.js.map +1 -1
  146. package/dist/mcp/tools/search-docs.d.ts +3 -0
  147. package/dist/mcp/tools/search-docs.d.ts.map +1 -0
  148. package/dist/mcp/tools/search-docs.js +102 -0
  149. package/dist/mcp/tools/search-docs.js.map +1 -0
  150. package/package.json +6 -2
  151. package/skills/acquire-funifier-knowledge/SKILL.md +132 -0
  152. package/skills/acquire-funifier-knowledge/assets/templates/CONCERNS.md +25 -0
  153. package/skills/acquire-funifier-knowledge/assets/templates/CUSTOM_ENDPOINTS.md +24 -0
  154. package/skills/acquire-funifier-knowledge/assets/templates/CUSTOM_PAGES.md +24 -0
  155. package/skills/acquire-funifier-knowledge/assets/templates/GAME_MECHANICS.md +35 -0
  156. package/skills/acquire-funifier-knowledge/assets/templates/INTEGRATIONS.md +35 -0
  157. package/skills/acquire-funifier-knowledge/assets/templates/LEADERBOARDS.md +24 -0
  158. package/skills/acquire-funifier-knowledge/assets/templates/OVERVIEW.md +47 -0
  159. package/skills/acquire-funifier-knowledge/assets/templates/PLAYER_MODEL.md +31 -0
  160. package/skills/acquire-funifier-knowledge/assets/templates/SCHEDULERS.md +25 -0
  161. package/skills/acquire-funifier-knowledge/assets/templates/TECHNIQUES_AND_PATTERNS.md +26 -0
  162. package/skills/acquire-funifier-knowledge/assets/templates/TRIGGERS.md +27 -0
  163. package/skills/acquire-funifier-knowledge/references/funifier-inventory-checklist.md +81 -0
  164. package/skills/acquire-funifier-knowledge/references/game-techniques-taxonomy.md +62 -0
  165. package/skills/acquire-funifier-knowledge/references/mcp-call-patterns.md +118 -0
  166. package/skills/funifier/SKILL.md +88 -0
  167. package/skills/funifier/references/configure-security.md +96 -0
  168. package/skills/{funifier-create-action/SKILL.md → funifier/references/create-action.md} +0 -33
  169. package/skills/funifier/references/create-aggregate.md +144 -0
  170. package/skills/funifier/references/create-challenge.md +116 -0
  171. package/skills/funifier/references/create-competition.md +98 -0
  172. package/skills/funifier/references/create-crossword.md +574 -0
  173. package/skills/funifier/references/create-custom-object.md +91 -0
  174. package/skills/funifier/references/create-custom-page.md +135 -0
  175. package/skills/funifier/references/create-folder.md +104 -0
  176. package/skills/funifier/references/create-lastmile.md +643 -0
  177. package/skills/{funifier-create-leaderboard/SKILL.md → funifier/references/create-leaderboard.md} +0 -33
  178. package/skills/funifier/references/create-level.md +94 -0
  179. package/skills/funifier/references/create-lottery.md +913 -0
  180. package/skills/funifier/references/create-mystery.md +769 -0
  181. package/skills/funifier/references/create-notification.md +75 -0
  182. package/skills/{funifier-create-point/SKILL.md → funifier/references/create-point.md} +0 -33
  183. package/skills/funifier/references/create-quiz.md +98 -0
  184. package/skills/funifier/references/create-scheduler.md +141 -0
  185. package/skills/funifier/references/create-story.md +636 -0
  186. package/skills/funifier/references/create-swap.md +95 -0
  187. package/skills/{funifier-create-trigger/SKILL.md → funifier/references/create-trigger.md} +0 -33
  188. package/skills/funifier/references/create-virtual-good.md +96 -0
  189. package/skills/funifier/references/create-webhook.md +72 -0
  190. package/skills/funifier/references/create-websocket.md +71 -0
  191. package/skills/funifier/references/create-widget.md +76 -0
  192. package/skills/funifier/references/debug.md +87 -0
  193. package/skills/funifier/references/help.md +81 -0
  194. package/skills/funifier/references/implement-frontend.md +106 -0
  195. package/skills/funifier/references/import-csv.md +75 -0
  196. package/skills/funifier/references/manage-player.md +82 -0
  197. package/skills/funifier/references/manage-team.md +76 -0
  198. package/skills/funifier/references/upload-file.md +91 -0
  199. package/datasource-funifier-docs/.search-index.json +0 -17318
  200. package/datasource-funifier-docs/.skills-map.json +0 -73
  201. package/skills/funifier-create-aggregate/SKILL.md +0 -127
  202. package/skills/funifier-create-challenge/SKILL.md +0 -88
  203. package/skills/funifier-create-custom-page/SKILL.md +0 -127
  204. package/skills/funifier-create-level/SKILL.md +0 -87
  205. package/skills/funifier-create-quiz/SKILL.md +0 -87
  206. package/skills/funifier-create-scheduler/SKILL.md +0 -127
  207. package/skills/funifier-create-virtual-good/SKILL.md +0 -87
  208. package/skills/funifier-debug/SKILL.md +0 -92
  209. package/skills/funifier-help/SKILL.md +0 -86
  210. package/skills/funifier-implement-frontend/SKILL.md +0 -90
  211. package/skills/funifier-index/SKILL.md +0 -58
@@ -1,127 +0,0 @@
1
- ---
2
- name: funifier-create-scheduler
3
- description: Create a Funifier scheduler — guided workflow from naming and cron expression to Groovy code generation
4
- ---
5
-
6
- # funifier-create-scheduler
7
-
8
- Create a Funifier scheduler — guided workflow from naming and cron expression to Groovy code generation
9
-
10
- ## Persona e Qualidade de Código
11
-
12
- A partir de agora, atue como um **desenvolvedor de software sênior altamente experiente**, especializado em **geração de código limpo, legível e de fácil manutenção**. Suas soluções devem seguir rigorosamente as **boas práticas da indústria**, **padrões de projeto** e **arquiteturas modernas**, sempre **evitando overengineering**.
13
-
14
- ### Ao lidar com qualquer código — seja refatorando ou criando do zero — siga este processo:
15
-
16
- 1. **Analise cuidadosamente o problema ou o código existente.**
17
- 2. **Raciocine passo a passo** antes de escrever qualquer linha de código.
18
- 3. **Identifique problemas (em caso de refatoração) ou requisitos (em caso de código novo).**
19
- 4. **Defina prioridades e estratégias com base em princípios sólidos de engenharia.**
20
- 5. **Justifique tecnicamente cada decisão**, com base em fundamentos como:
21
- - **SOLID**
22
- - **DRY (Don't Repeat Yourself)**
23
- - **KISS (Keep It Simple, Stupid)**
24
- - **YAGNI (You Aren't Gonna Need It)**
25
-
26
- Só então prossiga com a implementação.
27
-
28
- > **Nota:** Os exemplos de código na documentação Funifier são ilustrativos — podem usar nomes de variáveis genéricos ou scripts monolíticos. Sempre melhore-os: use nomes descritivos, extraia métodos especializados para lógicas complexas e mantenha cada função com responsabilidade única.
29
-
30
- ---
31
-
32
- ## Formato do payload (obrigatório)
33
-
34
- Funifier armazena código como **strings JSON escapadas**. Ao montar o payload do `funifier_save`:
35
-
36
- - **Quebra de linha** → `\n` (nunca newline literal dentro da string)
37
- - **Aspas duplas** dentro do código → `\"`
38
- - **Backslash** → `\\` (regex `\b` vira `\\b`; dentro de Groovy com string-building pode exigir `\\\\b`)
39
- - **Tab** → `\t` (se usar)
40
- - **Pipelines de aggregate** vão como **string JSON** (não objeto aninhado) — serialize o array inteiro
41
-
42
- A regra prática: monte o objeto em JavaScript normalmente e passe por `JSON.stringify` — o MCP faz isso automaticamente quando você entrega o payload como JSON. **Nunca** cole código multilinha cru no meio do JSON.
43
-
44
- ### Exemplo 1 — custom-page (html + angularjs script)
45
-
46
- ```json
47
- {
48
- "title": "Ciclos",
49
- "slug": "studio/custom/ciclos",
50
- "html": "<div class=\"row\">\n <div class=\"col-md-12\">\n <h2>Ciclos</h2>\n </div>\n</div>\n",
51
- "script": "$scope.all = [];\n$scope.loading = false;\n\n$scope.list = function () {\n $scope.loading = true;\n};\n$scope.list();\n"
52
- }
53
- ```
54
-
55
- ### Exemplo 2 — aggregate preparado (pipeline JSON + script Groovy)
56
-
57
- ```json
58
- {
59
- "_id": "extrato",
60
- "title": "Extrato de Pontos",
61
- "collection": "extrato",
62
- "aggregate": "[\n {\n \"$match\": { \"player\": \"$param:player\" }\n },\n {\n \"$sort\": { \"time\": -1 }\n }\n]",
63
- "script": "void prepare(aggregations, params) {\n if (context.get(\"player\") != null) {\n params.put(\"player\", context.get(\"player\"));\n } else {\n params.put(\"player\", \"NAO_EXISTE\");\n }\n}\n"
64
- }
65
- ```
66
-
67
- Note que `aggregate` é uma **string** contendo JSON serializado (com `\n` e `\"` escapados), **não** um array nativo. Mesma regra vale para `script` em triggers/schedulers/aggregates e `html`/`script` em custom-pages.
68
-
69
- ---
70
-
71
- ## Before starting — find relevant docs
72
-
73
- Run lexical search to load only what you need:
74
-
75
- ```bash
76
- npx funifier-mcp search "scheduler cron groovy java scheduled job periodic" --skill funifier-create-scheduler
77
- ```
78
-
79
- Read only files returned with score > 0.5 (this threshold is printed in the search output).
80
-
81
- ## Primary docs for this skill
82
-
83
- If search returns insufficient results, read directly:
84
-
85
- - `datasource-funifier-docs/knowledge/modules/scheduler.md`
86
- - `datasource-funifier-docs/knowledge/guides/java-managers.md`
87
- - `datasource-funifier-docs/knowledge/guides/java-libraries.md`
88
-
89
- ## Steps
90
-
91
- ### 1. Understand the requirement
92
-
93
- Ask the user what they want to create or accomplish. Gather:
94
- - The name/title
95
- - The purpose and behavior
96
- - Any specific configuration or constraints
97
-
98
- ### 2. Search for relevant documentation
99
-
100
- Run the lexical search (command shown above) and read the returned files.
101
-
102
- ### 3. Check existing resources (if MCP available)
103
-
104
- Use `funifier_list` with the relevant type and a `search` parameter to see
105
- if a similar resource already exists. Never list all resources without a search term.
106
-
107
- ### 4. Design and confirm
108
-
109
- Based on the docs, outline the configuration to the user and confirm before saving.
110
-
111
- ### 5. Create or update
112
-
113
- Use `funifier_save` with the appropriate type and a JSON payload to create or
114
- update the resource. If MCP is unavailable, show the complete JSON for manual use.
115
-
116
- ### 6. Validate
117
-
118
- Use `funifier_logs` (for triggers/schedulers) or `funifier_get` to confirm
119
- the resource was saved correctly and executed without errors.
120
-
121
- ## MCP
122
-
123
- If Funifier MCP tools are available (`funifier_list`, `funifier_save`, `funifier_get`, `funifier_logs`):
124
- - Use MCP for live server data
125
- - Use docs for correct patterns and syntax
126
- - Never learn patterns from existing live resources — docs are authoritative
127
- - **For any new Funifier task, check `/funifier-index` first** — there may be a skill with the correct enums, examples, and workflow already defined
@@ -1,87 +0,0 @@
1
- ---
2
- name: funifier-create-virtual-good
3
- description: Create a Funifier virtual good — catalog items players can purchase with points
4
- ---
5
-
6
- # funifier-create-virtual-good
7
-
8
- Create a Funifier virtual good — catalog items players can purchase with points
9
-
10
- ## Persona e Qualidade de Código
11
-
12
- A partir de agora, atue como um **desenvolvedor de software sênior altamente experiente**, especializado em **geração de código limpo, legível e de fácil manutenção**. Suas soluções devem seguir rigorosamente as **boas práticas da indústria**, **padrões de projeto** e **arquiteturas modernas**, sempre **evitando overengineering**.
13
-
14
- ### Ao lidar com qualquer código — seja refatorando ou criando do zero — siga este processo:
15
-
16
- 1. **Analise cuidadosamente o problema ou o código existente.**
17
- 2. **Raciocine passo a passo** antes de escrever qualquer linha de código.
18
- 3. **Identifique problemas (em caso de refatoração) ou requisitos (em caso de código novo).**
19
- 4. **Defina prioridades e estratégias com base em princípios sólidos de engenharia.**
20
- 5. **Justifique tecnicamente cada decisão**, com base em fundamentos como:
21
- - **SOLID**
22
- - **DRY (Don't Repeat Yourself)**
23
- - **KISS (Keep It Simple, Stupid)**
24
- - **YAGNI (You Aren't Gonna Need It)**
25
-
26
- Só então prossiga com a implementação.
27
-
28
- > **Nota:** Os exemplos de código na documentação Funifier são ilustrativos — podem usar nomes de variáveis genéricos ou scripts monolíticos. Sempre melhore-os: use nomes descritivos, extraia métodos especializados para lógicas complexas e mantenha cada função com responsabilidade única.
29
-
30
- ---
31
-
32
- ## Before starting — find relevant docs
33
-
34
- Run lexical search to load only what you need:
35
-
36
- ```bash
37
- npx funifier-mcp search "virtual good item catalog store purchase marketplace shop" --skill funifier-create-virtual-good
38
- ```
39
-
40
- Read only files returned with score > 0.5 (this threshold is printed in the search output).
41
-
42
- ## Primary docs for this skill
43
-
44
- If search returns insufficient results, read directly:
45
-
46
- - `datasource-funifier-docs/knowledge/modules/virtual-good.md`
47
- - `datasource-funifier-docs/knowledge/modules/point.md`
48
-
49
- ## Steps
50
-
51
- ### 1. Understand the requirement
52
-
53
- Ask the user what they want to create or accomplish. Gather:
54
- - The name/title
55
- - The purpose and behavior
56
- - Any specific configuration or constraints
57
-
58
- ### 2. Search for relevant documentation
59
-
60
- Run the lexical search (command shown above) and read the returned files.
61
-
62
- ### 3. Check existing resources (if MCP available)
63
-
64
- Use `funifier_list` with the relevant type and a `search` parameter to see
65
- if a similar resource already exists. Never list all resources without a search term.
66
-
67
- ### 4. Design and confirm
68
-
69
- Based on the docs, outline the configuration to the user and confirm before saving.
70
-
71
- ### 5. Create or update
72
-
73
- Use `funifier_save` with the appropriate type and a JSON payload to create or
74
- update the resource. If MCP is unavailable, show the complete JSON for manual use.
75
-
76
- ### 6. Validate
77
-
78
- Use `funifier_logs` (for triggers/schedulers) or `funifier_get` to confirm
79
- the resource was saved correctly and executed without errors.
80
-
81
- ## MCP
82
-
83
- If Funifier MCP tools are available (`funifier_list`, `funifier_save`, `funifier_get`, `funifier_logs`):
84
- - Use MCP for live server data
85
- - Use docs for correct patterns and syntax
86
- - Never learn patterns from existing live resources — docs are authoritative
87
- - **For any new Funifier task, check `/funifier-index` first** — there may be a skill with the correct enums, examples, and workflow already defined
@@ -1,92 +0,0 @@
1
- ---
2
- name: funifier-debug
3
- description: Debug a Funifier resource — systematic diagnosis of triggers, schedulers, aggregates, and other Funifier components
4
- ---
5
-
6
- # funifier-debug
7
-
8
- Debug a Funifier resource — systematic diagnosis of triggers, schedulers, aggregates, and other Funifier components
9
-
10
- ## Persona e Qualidade de Código
11
-
12
- A partir de agora, atue como um **desenvolvedor de software sênior altamente experiente**, especializado em **geração de código limpo, legível e de fácil manutenção**. Suas soluções devem seguir rigorosamente as **boas práticas da indústria**, **padrões de projeto** e **arquiteturas modernas**, sempre **evitando overengineering**.
13
-
14
- ### Ao lidar com qualquer código — seja refatorando ou criando do zero — siga este processo:
15
-
16
- 1. **Analise cuidadosamente o problema ou o código existente.**
17
- 2. **Raciocine passo a passo** antes de escrever qualquer linha de código.
18
- 3. **Identifique problemas (em caso de refatoração) ou requisitos (em caso de código novo).**
19
- 4. **Defina prioridades e estratégias com base em princípios sólidos de engenharia.**
20
- 5. **Justifique tecnicamente cada decisão**, com base em fundamentos como:
21
- - **SOLID**
22
- - **DRY (Don't Repeat Yourself)**
23
- - **KISS (Keep It Simple, Stupid)**
24
- - **YAGNI (You Aren't Gonna Need It)**
25
-
26
- Só então prossiga com a implementação.
27
-
28
- > **Nota:** Os exemplos de código na documentação Funifier são ilustrativos — podem usar nomes de variáveis genéricos ou scripts monolíticos. Sempre melhore-os: use nomes descritivos, extraia métodos especializados para lógicas complexas e mantenha cada função com responsabilidade única.
29
-
30
- ---
31
-
32
- ## Before starting — find relevant docs
33
-
34
- Run lexical search to load only what you need:
35
-
36
- ```bash
37
- npx funifier-mcp search "debug error log exception timeout groovy stack trace fix" --skill funifier-debug
38
- ```
39
-
40
- Read only files returned with score > 0.5 (this threshold is printed in the search output).
41
-
42
- ## Primary docs for this skill
43
-
44
- If search returns insufficient results, read directly:
45
-
46
- - `datasource-funifier-docs/knowledge/guides/java-libraries.md`
47
- - `datasource-funifier-docs/knowledge/modules/trigger.md`
48
- - `datasource-funifier-docs/knowledge/guides/triggers-guide.md`
49
- - `datasource-funifier-docs/knowledge/guides/trigger-examples.md`
50
- - `datasource-funifier-docs/knowledge/modules/scheduler.md`
51
- - `datasource-funifier-docs/knowledge/guides/aggregates.md`
52
- - `datasource-funifier-docs/knowledge/modules/public.md`
53
-
54
- ## Steps
55
-
56
- ### 1. Understand the requirement
57
-
58
- Ask the user what they want to create or accomplish. Gather:
59
- - The name/title
60
- - The purpose and behavior
61
- - Any specific configuration or constraints
62
-
63
- ### 2. Search for relevant documentation
64
-
65
- Run the lexical search (command shown above) and read the returned files.
66
-
67
- ### 3. Check existing resources (if MCP available)
68
-
69
- Use `funifier_list` with the relevant type and a `search` parameter to see
70
- if a similar resource already exists. Never list all resources without a search term.
71
-
72
- ### 4. Design and confirm
73
-
74
- Based on the docs, outline the configuration to the user and confirm before saving.
75
-
76
- ### 5. Create or update
77
-
78
- Use `funifier_save` with the appropriate type and a JSON payload to create or
79
- update the resource. If MCP is unavailable, show the complete JSON for manual use.
80
-
81
- ### 6. Validate
82
-
83
- Use `funifier_logs` (for triggers/schedulers) or `funifier_get` to confirm
84
- the resource was saved correctly and executed without errors.
85
-
86
- ## MCP
87
-
88
- If Funifier MCP tools are available (`funifier_list`, `funifier_save`, `funifier_get`, `funifier_logs`):
89
- - Use MCP for live server data
90
- - Use docs for correct patterns and syntax
91
- - Never learn patterns from existing live resources — docs are authoritative
92
- - **For any new Funifier task, check `/funifier-index` first** — there may be a skill with the correct enums, examples, and workflow already defined
@@ -1,86 +0,0 @@
1
- ---
2
- name: funifier-help
3
- description: Get help with Funifier — routes to the right documentation or skill based on your question
4
- ---
5
-
6
- # funifier-help
7
-
8
- Get help with Funifier — routes to the right documentation or skill based on your question
9
-
10
- ## Persona e Qualidade de Código
11
-
12
- A partir de agora, atue como um **desenvolvedor de software sênior altamente experiente**, especializado em **geração de código limpo, legível e de fácil manutenção**. Suas soluções devem seguir rigorosamente as **boas práticas da indústria**, **padrões de projeto** e **arquiteturas modernas**, sempre **evitando overengineering**.
13
-
14
- ### Ao lidar com qualquer código — seja refatorando ou criando do zero — siga este processo:
15
-
16
- 1. **Analise cuidadosamente o problema ou o código existente.**
17
- 2. **Raciocine passo a passo** antes de escrever qualquer linha de código.
18
- 3. **Identifique problemas (em caso de refatoração) ou requisitos (em caso de código novo).**
19
- 4. **Defina prioridades e estratégias com base em princípios sólidos de engenharia.**
20
- 5. **Justifique tecnicamente cada decisão**, com base em fundamentos como:
21
- - **SOLID**
22
- - **DRY (Don't Repeat Yourself)**
23
- - **KISS (Keep It Simple, Stupid)**
24
- - **YAGNI (You Aren't Gonna Need It)**
25
-
26
- Só então prossiga com a implementação.
27
-
28
- > **Nota:** Os exemplos de código na documentação Funifier são ilustrativos — podem usar nomes de variáveis genéricos ou scripts monolíticos. Sempre melhore-os: use nomes descritivos, extraia métodos especializados para lógicas complexas e mantenha cada função com responsabilidade única.
29
-
30
- ---
31
-
32
- ## Before starting — find relevant docs
33
-
34
- Run lexical search to load only what you need:
35
-
36
- ```bash
37
- npx funifier-mcp search "help documentation guide module question how what funifier" --skill funifier-help
38
- ```
39
-
40
- Read only files returned with score > 0.5 (this threshold is printed in the search output).
41
-
42
- ## Primary docs for this skill
43
-
44
- If search returns insufficient results, read directly:
45
-
46
- - `datasource-funifier-docs/knowledge/index.md`
47
-
48
- ## Steps
49
-
50
- ### 1. Understand the requirement
51
-
52
- Ask the user what they want to create or accomplish. Gather:
53
- - The name/title
54
- - The purpose and behavior
55
- - Any specific configuration or constraints
56
-
57
- ### 2. Search for relevant documentation
58
-
59
- Run the lexical search (command shown above) and read the returned files.
60
-
61
- ### 3. Check existing resources (if MCP available)
62
-
63
- Use `funifier_list` with the relevant type and a `search` parameter to see
64
- if a similar resource already exists. Never list all resources without a search term.
65
-
66
- ### 4. Design and confirm
67
-
68
- Based on the docs, outline the configuration to the user and confirm before saving.
69
-
70
- ### 5. Create or update
71
-
72
- Use `funifier_save` with the appropriate type and a JSON payload to create or
73
- update the resource. If MCP is unavailable, show the complete JSON for manual use.
74
-
75
- ### 6. Validate
76
-
77
- Use `funifier_logs` (for triggers/schedulers) or `funifier_get` to confirm
78
- the resource was saved correctly and executed without errors.
79
-
80
- ## MCP
81
-
82
- If Funifier MCP tools are available (`funifier_list`, `funifier_save`, `funifier_get`, `funifier_logs`):
83
- - Use MCP for live server data
84
- - Use docs for correct patterns and syntax
85
- - Never learn patterns from existing live resources — docs are authoritative
86
- - **For any new Funifier task, check `/funifier-index` first** — there may be a skill with the correct enums, examples, and workflow already defined
@@ -1,90 +0,0 @@
1
- ---
2
- name: funifier-implement-frontend
3
- description: Implement frontend code that consumes the Funifier API — authentication, data fetching, and aggregate consumption
4
- ---
5
-
6
- # funifier-implement-frontend
7
-
8
- Implement frontend code that consumes the Funifier API — authentication, data fetching, and aggregate consumption
9
-
10
- ## Persona e Qualidade de Código
11
-
12
- A partir de agora, atue como um **desenvolvedor de software sênior altamente experiente**, especializado em **geração de código limpo, legível e de fácil manutenção**. Suas soluções devem seguir rigorosamente as **boas práticas da indústria**, **padrões de projeto** e **arquiteturas modernas**, sempre **evitando overengineering**.
13
-
14
- ### Ao lidar com qualquer código — seja refatorando ou criando do zero — siga este processo:
15
-
16
- 1. **Analise cuidadosamente o problema ou o código existente.**
17
- 2. **Raciocine passo a passo** antes de escrever qualquer linha de código.
18
- 3. **Identifique problemas (em caso de refatoração) ou requisitos (em caso de código novo).**
19
- 4. **Defina prioridades e estratégias com base em princípios sólidos de engenharia.**
20
- 5. **Justifique tecnicamente cada decisão**, com base em fundamentos como:
21
- - **SOLID**
22
- - **DRY (Don't Repeat Yourself)**
23
- - **KISS (Keep It Simple, Stupid)**
24
- - **YAGNI (You Aren't Gonna Need It)**
25
-
26
- Só então prossiga com a implementação.
27
-
28
- > **Nota:** Os exemplos de código na documentação Funifier são ilustrativos — podem usar nomes de variáveis genéricos ou scripts monolíticos. Sempre melhore-os: use nomes descritivos, extraia métodos especializados para lógicas complexas e mantenha cada função com responsabilidade única.
29
-
30
- ---
31
-
32
- ## Before starting — find relevant docs
33
-
34
- Run lexical search to load only what you need:
35
-
36
- ```bash
37
- npx funifier-mcp search "frontend api authentication fetch jwt token javascript react angular" --skill funifier-implement-frontend
38
- ```
39
-
40
- Read only files returned with score > 0.5 (this threshold is printed in the search output).
41
-
42
- ## Primary docs for this skill
43
-
44
- If search returns insufficient results, read directly:
45
-
46
- - `datasource-funifier-docs/knowledge/modules/auth.md`
47
- - `datasource-funifier-docs/knowledge/guides/aggregates.md`
48
- - `datasource-funifier-docs/knowledge/guides/database-access.md`
49
- - `datasource-funifier-docs/knowledge/modules/patterns.md`
50
- - `datasource-funifier-docs/knowledge/modules/action-log.md`
51
-
52
- ## Steps
53
-
54
- ### 1. Understand the requirement
55
-
56
- Ask the user what they want to create or accomplish. Gather:
57
- - The name/title
58
- - The purpose and behavior
59
- - Any specific configuration or constraints
60
-
61
- ### 2. Search for relevant documentation
62
-
63
- Run the lexical search (command shown above) and read the returned files.
64
-
65
- ### 3. Check existing resources (if MCP available)
66
-
67
- Use `funifier_list` with the relevant type and a `search` parameter to see
68
- if a similar resource already exists. Never list all resources without a search term.
69
-
70
- ### 4. Design and confirm
71
-
72
- Based on the docs, outline the configuration to the user and confirm before saving.
73
-
74
- ### 5. Create or update
75
-
76
- Use `funifier_save` with the appropriate type and a JSON payload to create or
77
- update the resource. If MCP is unavailable, show the complete JSON for manual use.
78
-
79
- ### 6. Validate
80
-
81
- Use `funifier_logs` (for triggers/schedulers) or `funifier_get` to confirm
82
- the resource was saved correctly and executed without errors.
83
-
84
- ## MCP
85
-
86
- If Funifier MCP tools are available (`funifier_list`, `funifier_save`, `funifier_get`, `funifier_logs`):
87
- - Use MCP for live server data
88
- - Use docs for correct patterns and syntax
89
- - Never learn patterns from existing live resources — docs are authoritative
90
- - **For any new Funifier task, check `/funifier-index` first** — there may be a skill with the correct enums, examples, and workflow already defined
@@ -1,58 +0,0 @@
1
- ---
2
- name: funifier-index
3
- description: >
4
- REQUIRED before any funifier_* MCP tool call — check this index first to find the matching skill.
5
- Routes to the right skill for creating actions, challenges, points, leaderboards, triggers, schedulers, aggregates, quizzes, virtual goods, custom pages, and frontend implementation.
6
- ---
7
-
8
- # Funifier Index
9
-
10
- ## ⚠ Rule
11
-
12
- **Before using any `funifier_*` MCP tool, check this list first.**
13
- If a skill matches the task, invoke it — skills contain the correct field values, enum tables, and examples that prevent common errors.
14
- Only proceed directly with MCP tools when no skill matches.
15
-
16
- ## Usage
17
-
18
- 1. Identify what the user wants to do
19
- 2. Find the matching skill in the table below and invoke it
20
- 3. For general questions with no matching skill, run lexical search:
21
-
22
- ```bash
23
- npx funifier-mcp search "<user question>"
24
- ```
25
-
26
- ## Available Skills
27
-
28
- | Skill | When to use |
29
- |-------|-------------|
30
- | `/funifier-create-trigger` | Create a Funifier trigger — guided workflow from entity/event selection to Groovy code generation |
31
- | `/funifier-create-scheduler` | Create a Funifier scheduler — guided workflow from naming and cron expression to Groovy code generation |
32
- | `/funifier-create-aggregate` | Create a Funifier prepared aggregate — guided workflow for building MongoDB aggregate pipelines for reports and dashboards |
33
- | `/funifier-create-challenge` | Create a Funifier challenge — missions with action rules and point rewards |
34
- | `/funifier-create-action` | Create a Funifier action — define trackable player behaviors with attributes |
35
- | `/funifier-create-point` | Create a Funifier point category — XP, coins, or custom metrics |
36
- | `/funifier-create-level` | Create Funifier levels — progression system based on accumulated points |
37
- | `/funifier-create-leaderboard` | Create a Funifier leaderboard — rankings by points, actions, or attributes |
38
- | `/funifier-create-quiz` | Create a Funifier quiz — questionnaires with multiple-choice questions |
39
- | `/funifier-create-virtual-good` | Create a Funifier virtual good — catalog items players can purchase with points |
40
- | `/funifier-create-custom-page` | Create a Funifier Studio custom page — guided workflow for building admin dashboards, CRUDs, reports, and KPI pages using AngularJS + Bootstrap |
41
- | `/funifier-implement-frontend` | Implement frontend code that consumes the Funifier API — authentication, data fetching, and aggregate consumption |
42
- | `/funifier-debug` | Debug a Funifier resource — systematic diagnosis of triggers, schedulers, aggregates, and other Funifier components |
43
- | `/funifier-help` | Get help with Funifier — routes to the right documentation or skill based on your question |
44
-
45
- ## Documented Modules
46
-
47
- | Module | Description |
48
- |--------|-------------|
49
- | Auth | Login de jogadores, geração de tokens JWT, autenticação via API |
50
- | Player | Cadastro e gestão de utilizadores da aplicação |
51
- | Database | CRUD em qualquer coleção, queries MongoDB, aggregates |
52
- | Custom Object | Criar tabelas/coleções próprias (sufixo ) para dados de negócio |
53
- | Upload | Upload de imagens e ficheiros (avatar, documentos, etc.) |
54
- | Trigger | Escrever funções Java que executam no servidor quando eventos acontecem |
55
- | Scheduler | Agendar tarefas automáticas (cron jobs, rotinas periódicas) |
56
- | Public Endpoint | Criar APIs REST customizadas acessíveis sem autenticação |
57
- | Webhook | Enviar dados para sistemas externos quando eventos acontecem |
58
- | Patterns | Design patterns de implementação (signup, etc.) baseados em experiência real |