- 08-01 (W1): HytaleRecentArticles.vue scaffold + injection hytale.vue + i18n - 08-02 (W2): article tutorial how-to-build-your-first-hytale-plugin FR+EN - 08-03 (W2): article positionnement hytale-plugin-development-2026 FR+EN
13 KiB
phase, plan, type, wave, depends_on, files_modified, autonomous, requirements, tags, must_haves
| phase | plan | type | wave | depends_on | files_modified | autonomous | requirements | tags | must_haves | |||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 08-content-cocon-semantique | 03 | execute | 2 |
|
|
true |
|
|
|
Purpose: 2e pilier du cocon sémantique. Capte le trafic info long-tail ("Hytale plugin 2026", "Hytale API state"). Complément du tutorial (08-02) : l'un convertit, l'autre asseoit l'autorité.
Output: 2 fichiers markdown (FR + EN), même slug, tags ['hytale', 'industry', 'analysis'], publiés.
<execution_context> @$HOME/.claude/get-shit-done/workflows/execute-plan.md @$HOME/.claude/get-shit-done/templates/summary.md </execution_context>
@.planning/PROJECT.md @.planning/ROADMAP.md @.planning/phases/08-content-cocon-semantique/08-CONTEXT.md @.planning/phases/08-content-cocon-semantique/08-PATTERNS.md @content/fr/blog/test-kotlin-syntax.md<editorial_brief>
Slug : hytale-plugin-development-2026 — identique FR+EN.
Titre FR : "Développement de plugins Hytale en 2026 : état de l'art et perspectives" Titre EN : "Hytale plugin development in 2026: state of the art and outlook"
Description FR : "Tour d'horizon de l'écosystème plugin Hytale en 2026 : stack technique, patterns modernes, et ce qui attend la communauté." Description EN : "A 2026 snapshot of the Hytale plugin ecosystem: tech stack, modern patterns, and what's next for the community."
Tags : ["hytale", "industry", "analysis"] (D-15)
Date : "2026-04-22"
Draft : false
Image : omis (fallback applicable)
Champ updated : omis
Ton : première personne, analytique mais sans être sec. Perspective praticien ("ce que j'ai observé", "ce qui tourne en prod").
Longueur : 1000-1400 mots.
Outline recommandé (6 sections) :
-
Intro — Hytale en 2026, où en est-on ? (~200 mots)
- Contexte sortie + maturité SDK.
- Qui code pour Hytale aujourd'hui : indie, serveurs communautaires, devs commerciaux.
- Thèse de l'article : le paysage plugin s'est professionnalisé, voici ce qui change.
- Placement 1er lien
/hytale: "Je développe moi-même des plugins Hytale sur commande depuis les premières betas, et le paysage a radicalement changé." (FR) / "I've been building Hytale plugins on commission since the early betas, and the landscape has shifted dramatically." (EN)
-
La stack 2026 : Kotlin, coroutines, et outillage mature (~250 mots)
- Kotlin reste la lingua franca ; Java résiduel.
- Gradle Kotlin DSL standard.
- IDE support (IntelliJ IDEA Ultimate recommandé).
- Testing : JUnit 5 + MockK pour plugins.
- Bloc code Kotlin moderne obligatoire ici — coroutines pour event async :
package com.example.ecoplugin import io.hytale.api.HytalePlugin import io.hytale.api.event.EventHandler import io.hytale.api.event.player.PlayerJoinEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch class EcoPlugin : HytalePlugin() { private val scope = CoroutineScope(Dispatchers.IO) @EventHandler fun onJoin(event: PlayerJoinEvent) { scope.launch { val profile = profileRepo.fetch(event.player.uuid) event.player.sendMessage("Welcome back, balance: ${profile.balance}") } } }- Expliquer : pourquoi coroutines (non-blocking I/O), scope lifecycle, dispatcher choice.
-
Patterns modernes — ce qui a remplacé les mauvaises habitudes Bukkit-era (~250 mots)
- Dependency injection (Koin / manual constructor injection).
- Event handlers séparés de la logique métier.
- Config typée (kotlinx.serialization).
- Tests unitaires sur la logique, intégration sur les handlers.
-
Écosystème — libs et SDKs qui comptent (~200 mots)
- SDK officiel Hytale.
- Communauté : hubs GitHub actifs, Discord devs.
- Anti-patterns à éviter (sans nommer de projets précis pour éviter les affirmations fragiles).
-
Ce que l'avenir apporte (~200 mots)
- Scripting côté client (si annoncé / spéculation cadrée).
- Packaging formats évolutifs.
- Monétisation indie : modèles commission, rev-share.
- Placement 2e lien
/hytale: "Si tu veux externaliser le dev d'un plugin ambitieux, je propose du développement Hytale sur commande — configs et patterns modernes inclus." (FR)
-
Conclusion (~150 mots)
- 2026 = l'année où le dev Hytale devient un vrai métier, pas juste un hobby.
Liens internes (D-08, D-09) :
- FR : ≥1 lien
](/hytale), idéalement 2. - EN : ≥1 lien
](/en/hytale), idéalement 2. - Paths hardcoded, pas
localePath().
Bloc code Kotlin : au moins 1 bloc réaliste (exemple coroutines ci-dessus satisfait). Imports kotlinx.coroutines cohérents. Pas pseudo-code.
Frontmatter exact FR :
---
title: "Développement de plugins Hytale en 2026 : état de l'art et perspectives"
description: "Tour d'horizon de l'écosystème plugin Hytale en 2026 : stack technique, patterns modernes, et ce qui attend la communauté."
date: "2026-04-22"
tags: ["hytale", "industry", "analysis"]
draft: false
---
Frontmatter exact EN :
---
title: "Hytale plugin development in 2026: state of the art and outlook"
description: "A 2026 snapshot of the Hytale plugin ecosystem: tech stack, modern patterns, and what's next for the community."
date: "2026-04-22"
tags: ["hytale", "industry", "analysis"]
draft: false
---
Précision importante : comme l'article fait des claims sur l'état de l'industrie en 2026, l'executor DOIT formuler les affirmations de manière défendable (éviter les chiffres inventés, éviter de nommer des projets tiers de manière non-vérifiée). Préférer "ce que j'observe", "ce qui tourne chez mes clients", "la tendance que je constate".
</editorial_brief>
Task 1: Rédiger version FR de l'article positionnement 2026 content/fr/blog/hytale-plugin-development-2026.md - content/fr/blog/test-kotlin-syntax.md (pattern frontmatter + code block) - .planning/phases/08-content-cocon-semantique/08-CONTEXT.md §D-02, D-04, D-05, D-07, D-08, D-15 - .planning/phases/08-content-cocon-semantique/08-PATTERNS.md §"content/{fr,en}/blog/..." - Section `` ci-dessus Créer `content/fr/blog/hytale-plugin-development-2026.md`.Frontmatter exact (copier depuis <editorial_brief>) — draft: false, tags ["hytale", "industry", "analysis"].
Corps : suivre l'outline 6 sections, 1000-1400 mots, ton analytique praticien première personne.
Exigences dures :
- Au moins 1 bloc ```kotlin avec imports cohérents (coroutines + event handler). Exemple exact dans le brief §section 2.
- Au moins 1 lien
](/hytale)inline. Idéalement 2 (intro + section 5). - Pas de champ
image:. Pas deupdated:. - Frontmatter Zod-valide.
Interdits :
- Affirmations numériques inventées ("Xk plugins publiés") — utiliser formulations qualitatives.
- Noms de projets tiers non-vérifiés.
- Pseudo-code.
localePath()/<NuxtLink>dans markdown.- Liens absolus (préférer
/hytalerelatif).
Style :
- Titres
##pour les 6 sections. - Callouts optionnels (
::alert{type="info"}pour nuances/disclaimers). - Code inline pour noms de libs/classes.
pnpm typecheck
test -f content/fr/blog/hytale-plugin-development-2026.mdgrep "draft: false" content/fr/blog/hytale-plugin-development-2026.mdpassegrep -E "industry" content/fr/blog/hytale-plugin-development-2026.mdtrouve le taggrep -c '\](/hytale)' content/fr/blog/hytale-plugin-development-2026.md≥ 1grep -c '```kotlin' content/fr/blog/hytale-plugin-development-2026.md≥ 1wc -w content/fr/blog/hytale-plugin-development-2026.md≥ 800pnpm typecheckexit 0
Frontmatter exact :
---
title: "Hytale plugin development in 2026: state of the art and outlook"
description: "A 2026 snapshot of the Hytale plugin ecosystem: tech stack, modern patterns, and what's next for the community."
date: "2026-04-22"
tags: ["hytale", "industry", "analysis"]
draft: false
---
Corps : 6 sections équivalentes, 1000-1400 mots.
Règle critique liens (D-09) :
- Version EN :
](/en/hytale)— au moins 1, idéalement 2. JAMAIS/hytalesans préfixe.
Bloc code Kotlin : identique à la version FR (snippet coroutines — le code n'a pas à être traduit).
Exigences et interdits identiques à Task 1.
pnpm typecheck
- Fichier existe
- grep "draft: false" content/en/blog/hytale-plugin-development-2026.md passe
- grep -c '\](/en/hytale)' content/en/blog/hytale-plugin-development-2026.md ≥ 1
- grep -c '```kotlin' content/en/blog/hytale-plugin-development-2026.md ≥ 1
- wc -w content/en/blog/hytale-plugin-development-2026.md ≥ 800
- pnpm typecheck exit 0
- Run pnpm dev puis curl http://localhost:3000/blog/hytale-plugin-development-2026 → 200 FR
- curl http://localhost:3000/en/blog/hytale-plugin-development-2026 → 200 EN
- curl http://localhost:3000/blog contient les 2 articles (celui-ci + celui de 08-02) en FR
- curl http://localhost:3000/hytale contient la section "Articles récents" avec les 2 slugs
- curl http://localhost:3000/sitemap.xml (ou sitemaps indexés) contient les 2 URLs FR+EN du slug 2026 avec hreflang alternates (Phase 7-04 automatique)
<threat_model>
Trust Boundaries
| Boundary | Description |
|---|---|
| markdown author → Zod schema → SSR | Contenu statique, Zod-validé, aucun user input |
STRIDE Threat Register
| Threat ID | Category | Component | Disposition | Mitigation Plan |
|---|---|---|---|---|
| T-08-07 | T (Tampering) | frontmatter YAML | mitigate | Schema Zod blog_fr/blog_en, typecheck gate |
| T-08-08 | R (Repudiation) | claims industrie 2026 | mitigate | Formulations qualitatives "ce que j'observe" plutôt que chiffres — évite affirmations non-sourcées |
| T-08-09 | I (Info Disclosure) | liens inline | accept | Paths publics |
| </threat_model> |
<success_criteria>
- Article positionnement publié FR+EN
- Ensemble avec Plan 08-02 : le cocon sémantique est fermé (≥2 articles tagués hytale, bidirectionnels)
- Phase goal atteint : "Section 'Articles récents' affiche des cards réelles sur /hytale" </success_criteria>